继上一期《目录操作命令》后,本文将带你深入掌握Linux文件操作的核心命令。从创建文件、查看内容到分页浏览、动态监控,这些命令是你在终端中处理文件的必备利器。本文包含大量实用示例和选项搭配,建议收藏备用!


📌 一、前言

在Linux系统中,“一切皆文件”。无论是配置文件、日志文件还是脚本文件,掌握文件操作命令都是提升工作效率的关键。本文将系统讲解以下命令:

命令 功能 适用场景
touch 创建空文件 / 更新时间戳 快速创建文件、批量生成测试文件
cat 查看小文件 / 合并文件 查看配置、拼接文本
tac 反向查看文件 从最后一行开始看
more 分页查看文件 浏览长文件(基础版)
less 分页查看文件(增强版) 浏览长文件、搜索、翻页
head 查看文件开头 预览文件前几行
tail 查看文件结尾 查看最新日志、实时监控
nl 带行号显示文件 代码预览、行号定位
wc 统计行/字/字节数 代码量统计、日志分析

📄 二、核心命令详解

1. touch —— 创建文件 / 更新时间戳

touch是最常用的文件创建命令,但它真正的核心功能是修改文件的时间戳

基本语法

bash

touch [选项] 文件名...
时间戳类型(Linux文件的三种时间)
时间类型 英文缩写 含义 何时更新
访问时间 atime 最后一次读取文件的时间 catless查看时
修改时间 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查看大文件会刷屏,此时应使用lessmore


3. tac —— 反向查看文件

taccat的反向版,将文件从最后一行开始显示到第一行。

基本语法

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 —— 分页查看(增强版)⭐推荐

lessmore的升级版,功能更强大,支持上下翻页、搜索、实时读取等特性。业界有句名言:“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; done

5. 统计日志中某个关键词出现次数

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及次数

🧪 六、自测练习题

  1. 如何用一条命令创建 a.logb.logc.log 三个空文件?

  2. 查看文件末尾50行并且持续追踪新内容的命令是什么?

  3. less 中如何跳到文件开头?如何搜索字符串 "error"?

  4. 统计 /var/log/syslog 中 ERROR 出现的次数?

  5. 如何只查看 file.txt 的第 10 行?

答案

  1. touch a.log b.log c.log 或 touch {a,b,c}.log

  2. tail -n 50 -f 文件名

  3. 按 g 跳到开头,按 /error 搜索

  4. grep "ERROR" /var/log/syslog | wc -l

  5. head -n 10 file.txt | tail -n 1 或 sed -n '10p' file.txt


📚 七、总结

本文详细介绍了Linux文件操作的常用命令:

类别 命令 一句话总结
创建 touch 创建空文件或更新时间戳
查看(全文) cat 适合看小文件
查看(分页) less 最强分页查看器,大文件神器
查看(头/尾) head / tail 预览开头或追踪最新内容
格式处理 nl 带行号显示
统计 wc 数行数、字数、字节数

掌握这些命令,你就能在Linux终端中高效地处理任何文本文件。下一期我们将深入讲解 grepsedawk 三剑客,敬请期待!


📌 本文首发于CSDN,转载需注明出处。
💬 如有疑问或补充,欢迎评论区交流!
👍 觉得有用请点赞、收藏、关注,支持作者创作更多优质内容~

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐