继上一期《目录操作命令》后,本文将带你深入掌握Linux文件操作的核心命令。从创建文件、查看内容到分页浏览、动态监控,这些命令是你在终端中处理文件的必备利器。本文包含大量实用示例和选项搭配,建议收藏备用!
📌 一、前言
在Linux系统中,“一切皆文件”。无论是配置文件、日志文件还是脚本文件,掌握文件操作命令都是提升工作效率的关键。本文将系统讲解以下命令:
| 命令 | 功能 | 适用场景 |
|---|---|---|
touch | 创建空文件 / 更新时间戳 | 快速创建文件、批量生成测试文件 |
cat | 查看小文件 / 合并文件 | 查看配置、拼接文本 |
tac | 反向查看文件 | 从最后一行开始看 |
more | 分页查看文件 | 浏览长文件(基础版) |
less | 分页查看文件(增强版) | 浏览长文件、搜索、翻页 |
head | 查看文件开头 | 预览文件前几行 |
tail | 查看文件结尾 | 查看最新日志、实时监控 |
nl | 带行号显示文件 | 代码预览、行号定位 |
wc | 统计行/字/字节数 | 代码量统计、日志分析 |
📄 二、核心命令详解
1.touch—— 创建文件 / 更新时间戳
touch是最常用的文件创建命令,但它真正的核心功能是修改文件的时间戳。
基本语法
bash
touch [选项] 文件名...
时间戳类型(Linux文件的三种时间)
| 时间类型 | 英文缩写 | 含义 | 何时更新 |
|---|---|---|---|
| 访问时间 | atime | 最后一次读取文件的时间 | cat、less查看时 |
| 修改时间 | mtime | 最后一次修改文件内容的时间 | 编辑内容时 |
| 改变时间 | ctime | 最后一次修改文件属性的时间 | 改权限、改所有者时 |
常用选项
| 选项 | 作用 |
|---|---|
-a | 只修改访问时间(atime) |
-m | 只修改修改时间(mtime) |
-t | 指定时间戳(格式:[[CC]YY]MMDDhhmm[.ss]) |
-d | 使用字符串指定时间(如"2024-01-01 10:30:00") |
-c | 不创建新文件,仅当文件存在时才修改时间 |
实用示例
bash
# 创建单个空文件 touch file1.txt # 批量创建多个文件 touch file1.txt file2.txt file3.txt # 批量创建带编号的文件(大括号展开) touch {1..10}.log # 创建 1.log 到 10.log touch {a,b,c}.txt # 创建 a.txt b.txt c.txt # 只修改访问时间 touch -a existing.txt # 修改文件时间为指定值(2024年12月25日8:30) touch -t 202412250830 file.txt # 使用易读的日期格式 touch -d "2 days ago" old.log touch -d "2024-01-01 10:30:00" config.ini # 不创建新文件(只更新时间戳) touch -c existing_file.txt # 存在则更新时间,不存在也不创建💡小技巧:
touch批量生成测试文件时,配合{ }展开非常高效!
2.cat—— 查看/合并文件
cat(Concatenate)是最直接的文本查看工具,适合查看较短的文件。
基本语法
bash
cat [选项] 文件1 [文件2 ...]
常用选项
| 选项 | 作用 |
|---|---|
-n | 显示行号(包括空行) |
-b | 显示行号(空行不编号) |
-s | 压缩连续的空行,只显示一个空行 |
-T | 将制表符(Tab)显示为^I |
-E | 在每行末尾显示$ |
实用示例
bash
# 查看单个文件 cat /etc/os-release # 同时查看多个文件(依次显示) cat file1.txt file2.txt # 带行号查看配置文件 cat -n /etc/ssh/sshd_config # 压缩连续空行 cat -s long_text.txt # 合并多个文件为一个 cat part1.txt part2.txt > combined.txt # 追加内容到文件(创建/追加) echo "新内容" >> file.txt cat header.txt >> document.txt # 将header.txt追加到document.txt末尾 # 快速创建简单文件(Ctrl+D结束) cat > quick_note.txt 这是第一行 这是第二行 【按 Ctrl+D】 # 查看时标记制表符和行尾(常用于脚本调试) cat -T -E script.sh
⚠️注意:
cat查看大文件会刷屏,此时应使用less或more。
3.tac—— 反向查看文件
tac是cat的反向版,将文件从最后一行开始显示到第一行。
基本语法
bash
tac [选项] 文件名
实用示例
bash
# 反向显示文件内容 tac log.txt # 组合使用:先反向再带行号 tac file.txt | cat -n
💡应用场景:查看最新日志(但更推荐
tail -r)、逆序处理数据流。
4.more—— 分页查看(基础版)
more是早期的分页工具,适合在终端空间有限时浏览长文件。
基本语法
bash
more [选项] 文件名
常用操作键
| 按键 | 作用 |
|---|---|
空格 | 向下翻一页 |
回车 | 向下翻一行 |
b | 向上翻一页 |
q | 退出 |
/字符串 | 向下搜索 |
n | 重复上一次搜索 |
常用选项
| 选项 | 作用 |
|---|---|
-数字 | 指定每屏显示的行数(如more -10) |
-d | 显示提示信息[Press space to continue, 'q' to quit.] |
-c | 翻页时清屏再显示(不滚动) |
实用示例
bash
# 分页查看大日志 more /var/log/syslog # 每页显示5行 more -5 longfile.txt # 带友好提示 more -d install.log
⚠️局限:
more只能向下翻页(b键支持有限),现已逐渐被less取代。
5.less—— 分页查看(增强版)⭐推荐
less是more的升级版,功能更强大,支持上下翻页、搜索、实时读取等特性。业界有句名言:“less is more”(less比more更强)。
基本语法
bash
less [选项] 文件名
常用操作键
| 按键 | 作用 |
|---|---|
空格/f | 向下翻一页 |
b | 向上翻一页 |
回车/j | 向下翻一行 |
k | 向上翻一行 |
g | 跳到文件开头 |
G | 跳到文件末尾 |
/字符串 | 向下搜索 |
?字符串 | 向上搜索 |
n | 下一个匹配结果 |
N | 上一个匹配结果 |
v | 使用默认编辑器打开当前文件 |
F | 进入实时追踪模式(类似tail -f) |
Ctrl+C | 退出追踪模式 |
q | 退出 |
常用选项
| 选项 | 作用 |
|---|---|
-N | 显示行号 |
-S | 禁用自动换行(长行水平滚动) |
-R | 原始输出,支持ANSI颜色转义 |
-F | 如果文件短于一屏,直接输出(不进入less界面) |
+F | 进入时即开启实时追踪模式 |
实用示例
bash
# 基本分页查看 less /var/log/syslog # 显示行号 less -N config.py # 查看时禁用换行(适合看表格数据) less -S data.csv # 左右方向键滚动 # 保留彩色输出 grep --color=always "error" app.log | less -R # 文件短时不进入分页模式 less -F README.md # 实时监控日志(按Ctrl+C退出追踪,按q退出less) less +F /var/log/nginx/access.log # 同时查看多个文件(输入: n 切换下一个,: p 切换上一个) less file1.txt file2.txt
💡为什么推荐less?
无需读取整个文件,打开大文件速度极快
支持向前向后翻页(more只能向后)
强大的搜索和高亮功能
支持文件实时追踪(
F键)
6.head—— 查看文件开头
head用于显示文件的前几行,非常适合快速预览文件内容。
基本语法
bash
head [选项] 文件名
常用选项
| 选项 | 作用 |
|---|---|
-n 数字 | 显示前 N 行(默认10行) |
-c 数字 | 显示前 N 个字节 |
-q | 不显示文件名标题(多个文件时) |
-v | 总是显示文件名标题 |
实用示例
bash
# 查看默认前10行 head /etc/passwd # 查看前20行 head -n 20 /var/log/dpkg.log # 查看前50个字节 head -c 50 file.txt # 查看多个文件(会自动显示文件名) head file1.txt file2.txt # 查看除最后5行外的所有内容(结合tail) head -n -5 file.txt # 显示除了最后5行的所有行
7.tail—— 查看文件结尾 ⭐高频命令
tail用于显示文件的末尾部分,最经典的用法是实时监控日志。
基本语法
bash
tail [选项] 文件名
常用选项
| 选项 | 作用 |
|---|---|
-n 数字 | 显示最后 N 行(默认10行) |
-c 数字 | 显示最后 N 个字节 |
-f | 实时追踪文件新增内容(Follow) |
-F | 实时追踪,并处理文件被删除/重建的情况(如日志轮转) |
-q | 不显示文件名标题 |
-s 秒数 | 与-f配合,指定轮询间隔(秒) |
-r | 反向显示(从行尾开始,某些系统需要tac替代) |
实用示例
bash
# 查看最后10行(默认) tail /var/log/syslog # 查看最后50行 tail -n 50 app.log # 查看最后200个字节 tail -c 200 debug.log # 实时监控日志(最常用) tail -f /var/log/nginx/access.log # 实时监控,每2秒刷新一次 tail -f -s 2 slow.log # 监控日志且能应对日志轮转(如logrotate切割后仍能继续) tail -F /var/log/app.log # 查看多个日志文件(会在每段前显示文件名) tail -f /var/log/nginx/access.log /var/log/nginx/error.log # 显示最新的20行,并持续追踪 tail -n 20 -f app.log # 查看倒数第20行到末尾(从第20行开始显示) tail -n +20 longfile.txt # 注意:+20表示从第20行开始,不是倒数20行
🚀实战技巧:调试Web应用时,开两个终端窗口,一个
tail -f error.log,另一个进行测试,实时看日志输出。
8.nl—— 带行号显示文件
nl(Number Lines)比cat -n更智能,可以自定义行号格式和空行处理规则。
基本语法
bash
nl [选项] 文件名
常用选项
| 选项 | 作用 |
|---|---|
-b a | 为所有行编号(包括空行) |
-b t | 只为非空行编号(默认) |
-n ln | 行号左对齐 |
-n rn | 行号右对齐(默认) |
-n rz | 行号右对齐,空位补零 |
-w 数字 | 行号字段宽度(默认6) |
-s 字符串 | 行号后分隔符(默认是Tab) |
实用示例
bash
# 基本用法(空行不编号) nl script.py # 所有行都编号(包括空行) nl -b a script.py # 行号右对齐填充0,分隔符改为空格 nl -b a -n rz -w 4 -s ' ' config.ini # 对比 cat -n cat -n file.txt # 空行也编号,且没有分隔符控制
9.wc—— 统计行/字/字节数
wc(Word Count)用于统计文件中的行数、单词数、字节数。
基本语法
bash
wc [选项] 文件名...
常用选项
| 选项 | 作用 |
|---|---|
-l | 统计行数 |
-w | 统计单词数(以空格分隔) |
-c | 统计字节数 |
-m | 统计字符数 |
-L | 显示文件中最长行的长度 |
实用示例
bash
# 统计所有信息(行数、单词数、字节数、文件名) wc file.txt # 输出示例:245 1890 12450 file.txt # 只统计行数 wc -l script.py # 统计代码总行数(排除空行可用grep) cat *.py | wc -l # 统计当前目录下所有.c文件的总行数 wc -l *.c | tail -1 # tail -1显示总计行 # 统计单词数 wc -w document.txt # 查找最长行的长度 wc -L long_text.txt # 统计多个文件 wc -l file1.txt file2.txt file3.txt
💡实用组合:
find . -name "*.py" | xargs wc -l统计整个项目的Python代码行数。
🧠 三、命令对比与选型指南
查看类命令对比
| 命令 | 适用文件大小 | 翻页能力 | 搜索 | 实时监控 | 推荐场景 |
|---|---|---|---|---|---|
cat | 小(<100行) | ❌ | ❌ | ❌ | 快速查看短文件 |
more | 任意 | 基本 | ✅ | ❌ | 老旧系统,无less时 |
less | 任意 | 强大 | ✅ | ✅ | 首选分页查看器 |
head | 任意 | ❌ | ❌ | ❌ | 预览文件开头 |
tail | 任意 | ❌ | ❌ | ✅ | 查看最新日志 |
文件创建/统计对比
| 命令 | 主要用途 | 是否会修改原文件 |
|---|---|---|
touch | 创建空文件 / 改时间戳 | 不修改内容(只改时间属性) |
cat > file | 从键盘输入创建文件 | 创建/覆盖文件 |
nl | 显示带行号的内容 | 否(仅输出到屏幕) |
wc | 统计文件信息 | 否 |
🔥 四、实用组合命令(工作中每天都在用)
1. 快速查看日志最新内容并持续追踪
bash
tail -f -n 100 app.log
2. 查看两个日志的差异(实时追踪)
bash
tail -f access.log | grep "ERROR" # 过滤只看错误
3. 分页查看时实时显示行号
bash
less -N longfile.txt
4. 批量生成测试文件
bash
for i in {1..100}; do echo "This is file $i" > test_$i.txt; done5. 统计日志中某个关键词出现次数
bash
grep "ERROR" app.log | wc -l
6. 查看文件中间部分(第50-100行)
bash
head -n 100 file.txt | tail -n 50
或
bash
sed -n '50,100p' file.txt
7. 查看大文件进度条式读取
bash
pv large_file.log | less # 需要安装pv包
8. 多文件合并并带分隔符
bash
for f in *.txt; do echo "=== $f ==="; cat "$f"; done > all.txt
📊 五、实战场景模拟
场景1:排查Web服务500错误
bash
# 实时监控错误日志 tail -f /var/log/nginx/error.log # 或查看最近100条错误 grep "500" /var/log/nginx/access.log | tail -n 100
场景2:快速创建配置文件框架
bash
touch config.{ini,yaml,json} echo "[DEFAULT]" > config.ini echo "debug = true" >> config.ini场景3:统计项目代码行数
bash
find . -name "*.go" | xargs wc -l | tail -1
场景4:监控系统被访问情况
bash
tail -f /var/log/nginx/access.log | cut -d' ' -f1 | uniq -c # 实时显示访问来源IP及次数
🧪 六、自测练习题
如何用一条命令创建
a.log、b.log、c.log三个空文件?查看文件末尾50行并且持续追踪新内容的命令是什么?
less中如何跳到文件开头?如何搜索字符串 "error"?统计
/var/log/syslog中 ERROR 出现的次数?如何只查看
file.txt的第 10 行?
答案:
touch a.log b.log c.log或touch {a,b,c}.logtail -n 50 -f 文件名按
g跳到开头,按/error搜索grep "ERROR" /var/log/syslog | wc -lhead -n 10 file.txt | tail -n 1或sed -n '10p' file.txt
📚 七、总结
本文详细介绍了Linux文件操作的常用命令:
| 类别 | 命令 | 一句话总结 |
|---|---|---|
| 创建 | touch | 创建空文件或更新时间戳 |
| 查看(全文) | cat | 适合看小文件 |
| 查看(分页) | less | 最强分页查看器,大文件神器 |
| 查看(头/尾) | head/tail | 预览开头或追踪最新内容 |
| 格式处理 | nl | 带行号显示 |
| 统计 | wc | 数行数、字数、字节数 |
掌握这些命令,你就能在Linux终端中高效地处理任何文本文件。下一期我们将深入讲解grep、sed、awk三剑客,敬请期待!
📌本文首发于CSDN,转载需注明出处。
💬 如有疑问或补充,欢迎评论区交流!
👍 觉得有用请点赞、收藏、关注,支持作者创作更多优质内容~