资讯动态

Linux文本文件操作入门:创建、查看、编辑全攻略

发布时间:2026/10/21 1:03:24 来源:尧图企业网站定制
很多刚接触 Linux 的朋友第一次打开终端时都会有同样的困惑图形界面里双击、右键、记事本就能搞定的事到了命令行里怎么就变得这么别扭创建文件、查看内容、修改保存每一步都要敲命令一不小心还会因为权限、路径、编码各种问题卡住。但这恰恰是 Linux 入门最值得先搞懂的一环——文本文件操作。这篇文章我会从实际使用的角度把“创建、查看、编辑”这三件事拆开揉碎讲清楚。不会只丢给你一堆命令让你死记硬背而是告诉你每条命令解决什么问题、在什么场景下用最顺手、有哪些新手几乎必踩的坑。无论你是刚装好系统想上手还是准备系统学运维、开发这篇都能帮你把基础打牢。1. 先建立正确的文件认知为什么文本操作是 Linux 的基石1.1 “一切都是文件”到底意味着什么我第一次接触 Linux 时前辈反复强调一句话在 Linux 里一切都是文件。当时觉得这就是个口号后来才发现这六个字几乎解释了终端操作的一切逻辑。普通文本文件当然是文件目录实际上也是文件一种记录了其他文件信息的特殊文件硬盘分区、U盘设备、终端窗口、串口设备甚至进程之间的通信管道通通被抽象成了文件。这就意味着如果你学会了对文件做操作那么对系统中绝大多数对象的操作方式都是相通的。创建、查看、编辑文本文件之所以被放在 Linux 入门的第一课原因就在这里——它是理解整个系统操作模型的钥匙。举个直观的例子/dev/sda代表你的第一块硬盘/proc/cpuinfo是内核动态生成的处理器信息文件。你不需要什么特殊工具直接cat /proc/cpuinfo就能看到 CPU 型号、核心数、缓存大小等一堆信息这些信息在图形界面里可能要层层点击才能看到。如果把“文件操作”理解为“对对象的操作”你会发现终端并没有你想象中那么神秘只是交互方式换成了命令而已。1.2 文本文件与二进制文件的本质差别这里要区分一个基本概念文本文件和二进制文件。文本文件存储的是人类可读的字符序列。你用cat、less能直接看懂里面的内容配置文件、日志文件、脚本文件、Markdown 文档都属于这一类。二进制文件则是计算机程序、图片、音频、压缩包等直接cat出来的结果是乱码需要用专门的工具或者对应的应用程序来处理。有个很容易犯迷糊的细节以文本形式保存的文件本质上也是二进制的因为所有数据最终都是 0 和 1只是这些二进制位按照某种编码规则比如 UTF-8、ASCII被映射成了字符。所以在 Linux 下判断一个文件“算不算文本文件”不是看扩展名而是看内容规则。Windows 习惯靠.txt、.doc扩展名识别文件类型Linux 虽然也支持扩展名但真正决定文件如何处理的是文件内容和文件属性。入门阶段你不需要深入理解编码细节但至少要知道一个体会把 Linux 的文本文件从一台机器复制到另一台机器内容却出现乱码多半就是编码问题。我现在写文件习惯统一用 UTF-8 编码尤其是配置文件里含有中文注释时能避免很多莫名其妙的问题。1.3 不同环境下目录与权限对文本操作的影响创建、查看和编辑文件表面上只是几个命令的事实际上背后还牵扯两条新手最容易忽视的规则目录结构和文件权限。Linux 的目录结构和 Windows 的 C 盘、D 盘思路完全不同。它不是从盘符开始而是从一个唯一的根目录/开始往下分支出/home、/etc、/var、/tmp等。普通用户的文件默认放在/home/用户名下系统配置文件放在/etc下临时的文件扔/tmp。如果你无条件在/下直接创建文件大概率会遇到“权限不够”的报错。权限也往往让人一头雾水。执行ls -l会看到一串字符类似-rw-r--r--这十个字符中第一个表示文件类型-是普通文件d是目录后面九个分成三组分别代表文件属主、属组和其他用户对文件的读r、写w、执行x权限。新手最简单的策略是在自己的家目录/home/你自己里做练习这里你拥有完全控制权不会因为权限问题打断学习节奏。什么时候涉及系统目录的修改再用sudo提升权限但前提是你知道自己要做什么。上来就是一句sudo rm -rf /这种操作谁都救不了你。2. 创建文本文件的几类常用手段与适用场景2.1 空文件占位touch 命令先说最简单的创建方式touch。touch test.txt执行这条命令后当前目录下就会出现一个名为test.txt的空文件。如果test.txt已经存在这个命令不会清空文件内容而是只更新它的时间戳访问时间、修改时间。这个特性在实际工作中非常有用比如我想生成一个标记文件告诉某个定时任务“今天已经执行过了”就用touch创建空文件作为标记。touch /tmp/backup_done_20250614还有一个小技巧touch可以一次创建多个文件配合花括号展开非常方便touch log{1..5}.txt这样会一次生成log1.txt到log5.txt五个空文件。测试脚本或者建一批临时文件时效率直接拉满。2.2 重定向符 和 的威力和是创建文件的另一个重要方式它们被称为输出重定向符。echo hello linux note.txt这个命令会把echo输出的内容写入note.txt。如果note.txt不存在系统会创建它如果已经存在会用新内容覆盖原内容。所以是一个需要谨慎使用的符号——覆盖操作没有回收站删了就是删了。则完全不同它是追加操作echo 第二行内容 note.txt如果文件不存在也会创建文件如果存在会在文件末尾追加内容原有内容不受影响。这个差异在实际操作中太重要了。写日志、记录实验结果、往配置里追加条目所有的“增量写入”都应该用所有的“重建文件”才用。还可以把其他命令的输出也重定向到文件里ls -l /home file_list.txt history my_history.txt这个思路很本质终端里能看到的输出基本都可以重定向到文件中去保存。是查看内容还是把内容沉淀为文件取决于你的需求。2.3 多行内容快速录入cat 配合 heredoc用echo写单行内容还行但要创建一段多行文本就麻烦了。这时候用cat配合 heredoc 语法非常顺手cat meeting_notes.txt EOF 今天会议记录 1. 确认项目排期 2. 讨论接口方案 3. 下一步任务分配 EOF这个过程值得拆开理解cat的作用是读取内容并输出把输出重定向到文件EOF则表示“后面的内容一直读到出现 EOF 为止”。你可以在回车后连续输入多行最后单独一行输入EOF内容就会写入文件。这里的EOF只是一个约定俗成的分隔符你可以改成自己想要的任意字符串比如END、FINISH只要开始和结束的标记一致就行。有一点要提醒如果标记被引号括起比如EOF内容中的变量不会被展开适合写脚本时避免意外替换。2.4 控制台直接创建还是用编辑器除了上述方式还有一种情况是直接进入编辑器保存新文件。比如nano newfile.txt vim newfile.txt这两个命令会打开编辑器界面如果文件不存在编辑器会为你创建一个新文件等保存退出后文件就存在了。这种方式的优势是边写边改适合内容较长、需要反复调整的场景而不是一次性输出。做个简单的选择总结场景推荐方式只是建一个空文件占位touch file把某条命令的结果保存下来命令 file或命令 file快速录入一小段固定多行内容cat file EOF需要边写边改比较丰富的内容nano file或vim file这个表是我实际使用中最常出现的决策路径背下来基本能应付绝大多数场景。3. 查看文件内容的操作从 cat 到 less、head、tail3.1 cat 的适用边界和常见误用cat命令是很多人学到的第一条查看命令用法也简单cat filename它会把整个文件内容一股脑全部打到终端上。为什么叫 cat其实是 concatenate连接的缩写本来用途是把多个文件连接输出后来被广泛用于查看单文件。这个命令适合小文件。配置文件、短小的笔记、几十行的脚本cat都非常合适。但如果文件很大比如几万行的日志直接cat会导致终端被大量输出刷屏不仅看不到前面内容终端还会卡顿。更麻烦的是这些输出只能靠往回滚动翻找非常不优雅。还想提醒一点不要习惯性使用cat file | grep xxx这种模式。grep本身可以直接处理文件# 不推荐多一个管道浪费一个进程 cat error.log | grep ERROR # 推荐更简洁高效 grep ERROR error.log这个习惯在管道链条复杂的时候会明显影响执行效率。3.2 less大文件翻页的正确打开方式如果你要查看的内容超过一屏强烈建议用lessless app.logless是一个分页查看器它不会把整个文件一次性灌入终端而是按需加载显示当前屏幕内容所以即使文件有几 GB 也不会把系统卡死。打开后常用的操作键先记住这几个按键作用空格键 /f向下翻一页b向上翻一页方向键 /j、k逐行向下、向上移动/关键词向下搜索关键词?关键词向上搜索关键词q退出 less搜索到目标后还可以按n跳到下一个匹配项按N跳到上一个匹配项。这个查询体验在排查日志时很关键——几百兆的日志你只需要输入几次关键词就能定位问题行。less还有一个优点它不会修改文件内容只是查看没有误操作风险。退出按q即可不会留下任何改动。3.3 head 与 tail只看头部和尾部信息日志、监控数据这类每天都在增长的文件通常不需要看全量只需要看最新的内容或者开头的元信息。这种时候head和tail比cat、less更精准。# 查看前 10 行 head -n 10 system.log # 查看后 20 行 tail -n 20 system.log-n后面跟行数不写的话默认是 10 行。我经常用head -n 1看 CS V 表头或者用tail -n 5确认脚本执行后的最后输出。tail还有个进阶用法几乎是运维排查问题必备的实时跟踪文件追加内容。tail -f app.log-f表示 follow文件有新内容写入时终端会自动把最新行显示出来。调试程序、观察服务启动日志、监控后台任务进度都靠它。退出按Ctrl C。3.4 内容筛选的组合拳grep、wc、sort查看文件时多数人只想到“看”但真实需求往往是“找到关心的内容”。单纯靠眼睛在几百行里找关键词太低效了结合几个命令会快很多。查找关键词用grepgrep ERROR app.log grep -n timeout app.log # -n 显示行号 grep -i warning app.log # -i 忽略大小写 grep -v debug app.log # -v 反向匹配过滤掉包含 debug 的行统计行数用wcwc -l app.log有时候我们想知道“某个关键词到底出现了多少次”可以把这两个命令组合起来grep -c ERROR app.log这个输出是一个数字表示匹配的行数。如果还需要更细致的统计比如按类型汇总排序可以再接入sort和uniqawk {print $4} app.log | sort | uniq -c这条命令的逻辑是找出每行第 4 个字段排序后统计去重数量。比如$4是日志级别的话输出就是每个级别各有多少条排查问题的方向一下就清晰了。查看文件不等于把内容无脑地铺开而是能快速定位到你关心的那部分。我把这套“查看四件套”cat/less/headtail/grep叫做“按需查看”这是新手从“会命令”到“会干活”的一个明显分水岭。4. 编辑文件从 nano 到 vim 的思维切换4.1 新手快速上手 nano两分钟会的编辑器编辑文件是绕不开的一环。Linux 下的编辑器很多入门阶段我建议先试试nano它对新手极其友好——打开就是全屏界面底部直接显示快捷键提示不需要任何记忆负担。nano mynote.txt进入后直接打字就是输入光标移动用方向键。底部显示的关键操作Ctrl O保存文件会询问文件名回车确认Ctrl X退出编辑器Ctrl K剪切当前行Ctrl U粘贴Ctrl W搜索也就是说保存是Ctrl O退出是Ctrl X先保存再退出两步搞定。这个交互模型和 Windows 的记事本很接近几乎没有学习成本。初学时如果发现方向键不能用多半是因为终端类型的问题可以试试在命令里加上TERMxterm nano mynote.txt或者换用更现代一点的终端工具。4.2 vim 的核心是模式Normal、Insert、Command用了一阵 nano 后你会慢慢听到周围的人都在谈论vim。一开始我很不理解为什么一群人要在一个“难用”的编辑器里折腾但当我系统了解 vim 的设计后才发现它和常规编辑器的差异不在功能多少而在交互模型上。vim 有几种模式最核心的是命令模式Normal、插入模式Insert和命令行模式Command-Line。打开文件默认处于命令模式。此时你敲的每个字母都不是输入内容而是执行操作。比如gg跳到文件开头G跳到文件末尾dd删除当前行yy复制当前行p粘贴要真正输入文字需要按i进入插入模式。此时左下角会显示-- INSERT --这时候打字才是往文件里写内容。写完后按Esc回到命令模式再输入:wq保存退出。:w是保存:q是退出:q!是不保存强制退出。这个模式切换就是 vim 的门槛也是它的效率来源手不用离开键盘所有操作都是组合键。比如想删除连续五行在命令模式输入5dd就行想缩进整段代码就完成了。熟练之后确实比鼠标精准的多。4.3 如果终端突然卡住编辑中断与恢复新手用 vim 经常遇到一个“灾难现场”按了Ctrl S结果终端界面卡住不动了。这是因为Ctrl S在终端里是暂停输出XOFF不是保存。解决办法是按Ctrl Q恢复。还有更吓人的场景编辑到一半SSH 断开了重新连上后打开同名文件会看到一个类似Swap file .file.swp already exists的提示。这不是文件损坏而是 vim 发现上次编辑会话没有正常退出于是留了个交换文件。遇到这种情况不需要慌。如果确定上次改动不需要保留直接按d删除交换文件然后打开原文件即可如果要恢复上次的内容按r让 vim 用交换文件恢复。具体操作时 vim 会给出提示按键照着做就行。这个经历提醒我编辑重要文件之前先想想如果会话中断我是怎么恢复的。把恢复流程提前想清楚真出事就不会手忙脚乱。4.4 编辑器选择思路别陷入“工具之争”很多入门文章喜欢讨论“nano 和 vim 到底学哪个”甚至延伸到 emacs。我的观点是这本质上不是选择题而是使用场景问题。如果你只做简单的配置修改、快速补几行笔记nano 完全够用没必要为了“显得专业”去强行用 vim。但如果你需要在服务器上频繁操作或者以后打算写脚本、开发代码vim 是迟早要学的而且越早开始越好——因为 vim 几乎是所有 Linux 发行版的标配你永远不会知道下一个环境里装的是什么编辑器。我的建议是先用 nano 跑通日常操作建立信心当发现自己开始频繁编辑重复性内容时再花一周时间集中学 vim 的基本模式操作学会i、Esc、:wq、:q!、dd、yy、p、/搜索这些命令再配合vimtutorLinux 自带的 vim 教程练习基本就能满足日常工作需要。5. 实战演练把文本操作串起来做一个笔记归档流程5.1 场景设定与目标拆解说了这么多命令我们来串一个真实的模拟场景把创建、查看、编辑这些知识点组合起来用。假设你是某台 Linux 服务器的使用者现在需要搭建一个简单的笔记归档流程每天把系统日志中 ERROR 级别的信息抓出来保存到一个按日期命名的文件里再整理一个当前项目进度清单方便后续查阅。这个场景虽然简单但几乎涵盖了文本处理的基本流程生成日志文件、查看内容、筛选信息、创建新文件、手工补充编辑。5.2 第一步生成一份当天的日志文件先进入工作目录cd ~/notes把系统日志里今天的部分保存下来。这里用grep加日期匹配grep 2025-06-14 /var/log/syslog syslog_20250614.log如果不确定是否有/var/log/syslog有些发行版是/var/log/messages可以先ls /var/log查看。用生成新文件如果文件已存在会被覆盖注意这点。看一下生成文件的大小和行数ls -lh syslog_20250614.log wc -l syslog_20250614.logls -lh以人类可读方式显示文件大小wc -l统计行数确认数据是完整抓取进来的。5.3 第二步筛选 ERROR 级别信息接下来提取 ERROR 行grep ERROR syslog_20250614.log errors_20250614.log如果希望顺带看到匹配行在原始文件中的行号方便后续回溯可以这样grep -n ERROR syslog_20250614.log errors_with_line_20250614.log这时候如果想快速查看 ERROR 文件里“错误来自哪个进程”可以用之前提到的组合命令awk {print $5} errors_20250614.log | sort | uniq -c | sort -rn$5是日志行中的进程名字段视具体日志格式而定。这条命令会输出类似18 kernel 5 sshd 3 cron一下子就能看出问题集中在哪个模块。这就是把“查看”上升为“分析”的过程。5.4 第三步手工补充说明并整理归档现在进入编辑环节。新建一个归档说明文件nano daily_summary_20250614.md在 nano 里写一段日期、当日错误概况、处理建议比如# 2025-06-14 运维小结 ## 错误统计 - kernel 18 条 - sshd 5 条 - cron 3 条 ## 初步判断 kernel 报错集中在内存相关建议检查内存条状态sshd 报错需要确认是否有异常登录尝试。 ## 后续动作 - 明早查看 /var/log/syslog 确认 kernel 报错是否持续 - 对 sshd 的 IP 进行简单排查保存退出后再使用cat确认写入是否成功cat daily_summary_20250614.md整个流程走下来你实际上已经用了cd、grep、、wc、ls、awk、sort、uniq、nano、cat十个命令而核心思路只有三条生成文件、查看筛选、编辑补充。5.5 把输入变成自动化脚本的雏形如果你发现这个归档流程每天都要做可以考虑把它写成一个 Shell 脚本省去重复敲命令的时间。nano daily_error_report.sh脚本内容可以这样写#!/bin/bash TODAY$(date %Y-%m-%d) LOG_DIR$HOME/notes mkdir -p $LOG_DIR grep $TODAY /var/log/syslog $LOG_DIR/syslog_$TODAY.log grep ERROR $LOG_DIR/syslog_$TODAY.log $LOG_DIR/errors_$TODAY.log wc -l $LOG_DIR/errors_$TODAY.log保存退出后需要给脚本加执行权限chmod x daily_error_report.sh然后运行./daily_error_report.sh脚本自动化是文本操作的自然延伸。这里不做深挖但你可以看到如果能把文件操作的逻辑理清楚后面学 Shell 脚本完全是水到渠成的事。6. 入门阶段最常见的几个坑与排查思路6.1 命令找不到command not found新手最容易遇到的报错就是command not found。输入一个命令后系统说不认识常见原因有三个。第一命令名拼写错了。Linux 命令区分大小写CAT和cat完全是两个东西。第二命令没有安装。像nano、vim不是所有精简版系统都默认带这时要看当前发行版用什么包管理器。常见的有发行版家族包管理器安装示例Debian/Ubuntuaptsudo apt install vimRHEL/CentOS/Fedoradnf/yumsudo dnf install vimArchpacmansudo pacman -S vimopenSUSEzyppersudo zypper install vim第三命令路径不在 PATH 环境变量里。比如你刚下载了一个工具放到了/usr/local/myapp/bin直接敲工具名可能无法识别这时用完整路径执行即可。排查命令位置可以用whichwhich cat which vim6.2 权限不够 permission denied别只会加 sudo在/root下建文件、修改/etc下的配置、执行没有x权限的脚本都会遇到Permission denied。新手最容易形成的坏习惯是一看到权限报错就sudo前缀往上加。这个做法在单机测试时问题不大但到了生产环境权限永远是“最小够用”原则。先判断一下是不是自己的目录ls -ld ~如果确实需要修改系统级配置再用 sudo如果只是日常练习尽量留在家目录。对于脚本无法执行的情况用chmod x script.sh添加执行权限而不是强行用 sudo 运行——sudo 运行脚本会改变脚本文件的所有者为 root之后你再修改它反而会麻烦。6.3 误用覆盖符 把文件写空了我在前面强调过是覆盖操作这里再展开说一个真实教训。有一次我想在日志文件里加一行说明执行echo 补充说明 important.log结果 important.log 原有的几百行内容全部被清掉了只剩一行“补充说明”。这个错误之所以常见是因为人脑的直觉是“把新内容放进去”而命令的语义是“清空并写入”。防止这类事故有两个小习惯重要文件在操作前先备份cp important.log important.log.bak确认是追加还是覆盖想保留原内容一律使用6.4 文件名带空格、通配符被展开在终端里处理文件名比图形界面更敏感尤其是文件名为my file.txt这种带空格的直接敲cat my file.txt系统会把my和file.txt当成两个参数导致“找不到文件”或者打开错误文件。解决办法是用引号括起来或者用反斜杠转义空格cat my file.txt cat my\ file.txt如果文件名里含有星号*、问号?等特殊字符也要用引号包裹否则会被 shell 当成通配符展开造成各种意外。顺便说一个绝望的场景文件名叫做-r之类的你用cat -r时命令不会读取文件而是把-r解释成一个选项这时候就要用--分隔即cat -- -r。6.5 编码与换行符问题从 Windows 复制过来的文件Windows 的文本文件在 Linux 下经常出现^M符号或者内容显示正常但程序解析异常根源是两个系统的换行符不同。Windows 用\r\n回车换行类 Unix 系统用\n换行。查看文件是否有 Windows 换行符cat -A file.txt如果行尾有^M$说明是 Windows 换行。转换为 Linux 格式可以用dos2unixdos2unix file.txt如果没装这个工具也可以用 sed 处理sed -i s/\r$// file.txt这个坑在混用 Windows 和 Linux 环境的场景中非常普遍。写脚本、跑程序如果莫名其妙报错先检查一下文件换行符能省下大量排查时间。6.6 查看几百行日志后不回滚less 和 grep 的协作很多新手用过一次cat后发现大量内容刷屏之后知道了less又陷入了另一个坑文件太长不知道从哪下手。正确思路是先用grep缩小范围再用less上下文浏览。比如在日志中找某个时间段的错误grep 2025-06-14 10:3 app.log time_window.log less time_window.log还可以直接通过管道一步到位grep ERROR app.log | less这样既避免了终端刷屏又能上下翻页仔细看匹配行的上下文。查看大文件时不要迷信某一个命令组合使用才是处理问题的正确姿态。结尾文本操作是终端世界的通用语言做完了这一整套创建、查看、编辑的流程再回头看最开始“在 Linux 里一切都是文件”那句话是不是觉得没那么抽象了其实终端操作的本质就是这六个字把对象当文件把操作当命令。文件操作练顺了后面无论是配置环境、写脚本、查日志、部署服务学起来都会顺畅很多。我自己当初入门时在 vim 里被卡了一下按了半天i没反应最后发现键位不对直接强制退出后来老老实实用 nano 过渡了一周才慢慢建立起对终端编辑的肌肉记忆。所以如果你现在也被某个命令、某个编辑器搞得一头雾水不用焦虑这些都是正常过程。挑一个最顺手的工具先跑起来把常用命令练成条件反射再逐步扩展。最后留一个小建议别急着追求“记住了多少命令”先做出来一件完整的小事比如把我前面那个日志归档脚本手敲一遍改成一个适合你自己的版本。真正让你学会 Linux 文本操作的不是阅读命令列表而是手指实实在在敲过的那几行。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑