Linux的cat、more、less、head、tail
Linux的cat、more、less、head、tail
- cat
- 作用
- 格式
- 参数
- more
- 作用
- 格式
- 参数
- 核心模式操作
- less
- 作用
- 格式
- 参数
- 核心交互模式指令(进入 less 后操作)
- head
- 作用
- 格式
- 参数
- tail
- 作用
- 格式
- 参数
- 常用场景
- 1、读取单个文件
- 2、拼接多个文件:将多个文件内容合并输出(可保存到新文件)
- 3、创建文件:通过输入内容创建新文件(按 Ctrl+D 结束输入)
- 4、带行号、显示详细提示、忽略大小写,查看并搜索日志
- 5、查看带颜色的日志,截断长行,支持横向滚动
- 6、分页查看全局搜索结果,仅显示包含 “500” 的错误行:
- 7、快速跳转到文件第 300 行,且显示行号
cat
作用
cat(concatenate,串联)是 Linux 中最基础的文件操作命令,核心作用是读取文件内容、拼接文件、创建文件等,参数相对简洁但实用性强。
cat 适合查看短文件,若文件过大(如几百 MB 日志),直接输出会刷屏,建议用 less/more 或 head/tail 分段查看
格式
cat [参数] 文件名
参数
-n(number,显示行号):输出文件内容时,为每一行添加行号(包括空行)。
-b(number-nonblank,显示非空行号):仅为非空行添加行号,空行不编号(区别于 -n)。
-s(squeeze-blank,压缩空行):将文件中连续的多个空行压缩为一个空行(保留单个空行,去除多余空行)。
-T(show-tabs,显示制表符):将文件中的制表符(Tab) 显示为 ^I(默认制表符不可见,容易与空格混淆)。
-v(show-nonprinting,显示不可打印字符):显示文件中不可打印的 ASCII 字符(除换行符 \n、制表符 \t 外),如控制字符,以 ^ 或 M- 前缀标识。
-E(show-ends,显示行尾换行符):在每一行的末尾显示换行符标识 $,直观看到行的结束位置。
-A(all,显示所有控制字符):等价于 -vET 的组合,同时显示制表符(^I)、换行符($)和不可打印字符,一步到位查看文件隐藏格式。
more
作用
more 是 Linux 中经典的分页查看文件内容工具,核心作用是将大文件内容分屏显示(避免像 cat 那样一次性刷屏),支持逐页、逐行浏览,适合查看超大文件(如日志、配置文件)。
格式
more 文件名
参数
-num(如 -10): 指定每页显示的行数(num 为数字,默认按终端高度自动适配) more -15 log.txt(每页显示 15 行日志)
-n(或 --line-numbers) :显示每行的行号(便于定位内容位置) more -n config.conf(分页显示配置文件,带行号)
-s(或 --squeeze-blank-lines) :压缩连续的空行为一个空行(整理格式混乱的文件) more -s messy.txt(压缩文件中的多余空行)
-d(或 --silent/--quiet) :静默模式:仅显示文件内容,不显示底部的操作提示(默认会提示 --More–(xx%)) more -d large.txt(静默分页,无操作提示)
+num(如 +50) :从文件的第 num 行开始显示(跳过前 num-1 行) more +100 log.txt(从第 100 行开始查看日志)
+/pattern(如 +/error): 从文件中第一次匹配 pattern(字符串 / 正则)的位置开始显示(快速定位关键词)
核心模式操作
进入分页界面后,按以下按键执行操作(底部默认显示 --More–(xx%) 提示,按 h 查看所有指令):
翻页 / 滚动操作
- 空格键(Space):翻到下一页(最常用)。
- Enter 键:向下滚动一行(精细浏览)。
- b 键:翻到上一页(仅部分系统支持,more 的局限性:向后翻页功能较弱,如需自由跳转建议用 less)。
- Ctrl+F:等价于空格键,翻下一页。
- Ctrl+B:等价于 b 键,翻上一页。
定位与搜索
- =` 键:显示当前所在的行号和文件进度(如「行 123,共 567 行」)。
- /pattern(如 /error):在文件中向下搜索指定字符串 pattern,按 n 键查看下一个匹配结果。
- ?pattern(如 ?warning):在文件中向上搜索指定字符串 pattern(部分版本支持)。
退出与其他
- q 键:立即退出 more(最常用,无论当前位置)。
- h 键:显示帮助信息(列出所有交互指令)。
- v 键:调用系统默认编辑器(如 vim)打开当前文件(快速编辑定位到的内容)。
- f 键:显示当前文件的文件名和总行数(如「log.txt 共 1024 行」)。
less
作用
less 是 Linux 中增强型分页查看工具,是 more 的升级版本,核心优势是支持自由前后翻页、快速搜索、不加载整个文件(适合超大文件) ,还能横向滚动、过滤内容,是查看大日志、配置文件的首选工具。
格式
参数
-N(或 --LINE-NUMBERS) 显示每行的行号(核心实用参数,便于定位) less -N nginx.conf(带行号查看配置文件)
-i(或 --ignore-case) :搜索时忽略大小写(默认区分大小写) less -i log.txt(搜索 “ERROR” 时也匹配 “error”)
-S(或 --chop-long-lines) :截断超长行(不自动换行,避免内容混乱,按 Right 键横向滚动查看完整行) less -S access.log(截断长日志行,横向滚动查看)
-M(或 --long-prompt) :显示详细提示信息(底部显示「文件名、行号、百分比」,默认仅显示百分比) less -M large.txt(底部提示:large.txt lines 1-20/1000 (2%))
-X(或 --no-init) :退出 less 后,保留终端显示的内容(默认退出后清空显示) less -X log.txt(退出后仍能看到之前的分页内容)
+num(如 +500) :从文件第 num 行开始显示(跳过前 num-1 行) less +1000 app.log(直接从第 1000 行查看日志)
+/pattern(如 +/Exception) :启动后直接搜索 pattern(字符串 / 正则),定位到第一个匹配行 less
+/TimeoutError log.txt(启动后直接跳转到第一个超时错误行)
-p pattern(等价于 +/pattern):同 +/pattern,启动后自动搜索并定位到 pattern less -p “HTTP/1.1 500” access.log(跳转到第一个 500 错误日志)
-r(或 --raw-control-chars): 显示原始控制字符(如颜色码、特殊符号,适合查看带颜色的日志)
核心交互模式指令(进入 less 后操作)
翻页与滚动(最核心操作)
- 空格键:翻到「下一页」(同 more)。
- b 键:翻到「上一页」(more 弱支持,less 完美支持)。
- j 键 / 向下箭头:向下滚动「一行」。
-k 键 / 向上箭头:向上滚动「一行」。 - Ctrl+F:向下翻一页(等价于空格键)。
- Ctrl+B:向上翻一页(等价于 b 键)。
- Ctrl+D:向下翻「半页」(快速滚动)。
- Ctrl+U:向上翻「半页」(快速滚动)。
- Right 键:横向滚动「一列」(配合 -S 截断长行时使用)。
- Left 键:横向滚动「一列」(返回查看长行左侧内容)。
搜索与导航(高频实用)
- /pattern:向下搜索 pattern(如 /error 搜索所有 “error”),按 n 查看「下一个匹配」,按 N 查看「上一个匹配」。
- ?pattern:向上搜索 pattern(从当前位置往前找),按 n 查看「上一个匹配」,按 N 查看「下一个匹配」。
*键:向下搜索「当前光标所在的单词」(无需手动输入,快速搜索重复关键词)。#键:向上搜索「当前光标所在的单词」(同上,反向搜索)。
定位与跳转(精准定位内容)
- g 键:跳转到文件「开头」(第一行)。
- G 键:跳转到文件「末尾」(最后一行,查看最新日志常用)。
- num + G:跳转到第 num 行(如 500G 跳转到第 500 行)。
- = 键:显示当前位置信息(文件名、行号、总行数、百分比)。
- [ 键:跳转到当前段落的开头(按空行分隔段落)。
- ] 键:跳转到当前段落的结尾。
编辑与过滤(进阶实用)
- v 键:调用系统默认编辑器(如 vim)打开当前文件,并定位到当前行(快速编辑分页时发现的问题)。
- &pattern:过滤内容,仅显示匹配 pattern 的行(隐藏不匹配内容,如 &ERROR 只看错误日志)。
- &!pattern:反向过滤,仅显示「不匹配」pattern 的行(如 &!INFO 隐藏 INFO 级日志,只看其他级别)。
- u 键:撤销过滤 / 搜索高亮(恢复显示所有内容)。
退出与其他
- q 键:立即退出 less(最常用)。
- ZZ 键:等价于 q,快速退出。
- / 后按 Enter:重复上一次搜索。
- h 键:显示完整帮助文档(所有交互指令说明)。
head
作用
head 是 Linux 中用于快速查看文件或命令输出开头内容的核心命令,默认显示前 10 行,无需加载整个文件,效率极高,适合快速预览日志起始部分、配置文件头部、数据文件前几行等场景
格式
head 文件名
参数
-n <数字>(或 --lines=<数字>) :指定显示的行数(数字可正可负):
- 正数 N:显示前 N 行;
- 负数 -N:显示除最后 N 行外的所有内容 head -n 5 log.txt(显示前 5 行)
- head -n -100 data.csv(显示除最后 100 行外的所有内容)
-<数字>(简化写法) 等价于 -n <数字>,快速指定前 N 行(最常用简化用法) head -3 config.conf(显示前 3 行配置)head -20 access.log(显示前 20 行日志)
-v(或 --verbose) 显示行号(包含空行),且处理多个文件时强制显示文件名(默认多个文件已显示,单个文件默认不显示) head -v -5 test.txt(显示前 5 行,带行号)head -v file1.txt(单个文件也显示文件名 + 行号)
-q(或 --quiet/–silent) 静默模式:处理多个文件时,不显示文件名标识(仅显示内容,适合合并多个文件的开头) head -q -3 file1.txt file2.txt(显示两个文件的前 3 行,无文件名)
-c <数字>(或 --bytes=<数字>) 按字节数显示(而非行数),适合二进制文件或固定格式文本:
- 正数 N:显示前 N 字节;
- 负数 -N:显示除最后 N 字节外的内容 head -c 100 binary.bin(显示二进制文件前 100 字节)head -c -50 text.txt(显示除最后 50 字节外的内容)
–help 显示帮助信息(快速查看参数说明) head --help
–version 显示 head 命令版本
tail
作用
tail 是 Linux 中与 head 对应的核心命令,专门用于查看文件或命令输出的末尾内容,默认显示最后 10 行,核心优势是支持实时跟踪文件更新(如日志实时打印),无需加载整个文件,效率极高,是排查实时日志、监控文件变化的必备工具。
格式
tail 文件名
参数
-n <数字>(或 --lines=<数字>) 指定显示的末尾行数(数字可正可负):
- 正数 N:显示最后 N 行;
- 正数 +N:从第 N 行开始显示到文件末尾(而非末尾 N 行);
- 负数 -N:等价于 +N(部分系统支持,推荐用 +N 更清晰) tail -n 20 log.txt(显示最后 20 行)tail -n +50 data.csv(从第 50 行开始显示到末尾)
-<数字>(简化写法) 等价于 -n <数字>,快速指定末尾 N 行(最常用) tail -5 app.log(显示最后 5 行日志)
tail -100 access.log(显示最后 100 行访问日志)
-f(或 --follow) 实时跟踪文件更新(“follow” 模式):文件新增内容会自动打印到终端,直到按 Ctrl+C 退出(核心功能,监控实时日志必备) tail -f catalina.out(实时跟踪 Tomcat 日志)
-F(或 --follow=name --retry) 增强版实时跟踪:
- 支持文件 “轮转”(如日志按天切割后,自动跟踪新生成的文件);
- 文件被删除或重建后,会持续重试连接(比 -f 更稳定,生产环境优先用) tail -F nginx.access.log(实时跟踪 Nginx 日志,支持日志切割)
-v(或 --verbose) 显示详细信息:处理多个文件时强制标注文件名;单个文件也显示文件名标识 tail -v -5 file.txt(显示最后 5 行,带文件名 > file.txt <)
-q(或 --quiet/–silent) 静默模式:处理多个文件时,不显示文件名标识(仅显示内容,适合合并末尾) tail -q -3 file1.txt file2.txt(合并两个文件的最后 3 行,无文件名)
-c <数字>(或 --bytes=<数字>) 按字节数显示末尾内容(而非行数):
- 正数 N:显示最后 N 字节;
- 正数 +N:从第 N 字节开始显示到末尾 tail -c 100 binary.bin(显示二进制文件最后 100 字节)
tail -c +200 header.txt(从第 200 字节开始显示)
–retry 配合 -f 使用:文件暂时不可访问(如被删除、挂载点断开)时,持续重试连接(-F 已包含此功能) tail -f --retry log.txt(实时跟踪,断开后重试)
–help / --version 显示帮助信息 / 显示命令版本
常用场景
1、读取单个文件
# 显示 test.txt 的全部内容
cat test.txt
2、拼接多个文件:将多个文件内容合并输出(可保存到新文件)
cat file1.txt file2.txt # 依次显示 file1 和 file2 的内容
cat file1.txt file2.txt > newfile.txt # 合并到 newfile.txt(覆盖原有内容)
3、创建文件:通过输入内容创建新文件(按 Ctrl+D 结束输入)
cat > new.txt # 输入内容后按 Ctrl+D 保存
4、带行号、显示详细提示、忽略大小写,查看并搜索日志
less -NMi +/TimeoutError app.log
5、查看带颜色的日志,截断长行,支持横向滚动
less -Sr colored_log.txt
6、分页查看全局搜索结果,仅显示包含 “500” 的错误行:
grep -r "HTTP" /var/log | less -N &500
7、快速跳转到文件第 300 行,且显示行号
less -N +300 config.conf
