news 2026/5/11 6:33:05

Linux常用命令详解(文件操作篇):touch、cat、less、head、tail等命令深度解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux常用命令详解(文件操作篇):touch、cat、less、head、tail等命令深度解析

继上一期《目录操作命令》后,本文将带你深入掌握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.logtouch {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 1sed -n '10p' file.txt


📚 七、总结

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

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

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


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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 6:32:03

Python 入门 01|Python 环境准备(下载+安装+配置PATH)

Python 入门 01&#xff5c;Python 环境准备&#xff08;下载安装配置PATH&#xff09; 本篇带你从零完成 Python 环境搭建&#xff0c;一步一步跟着操作即可。 一、Python 解释器下载 官方下载地址&#xff1a;https://www.python.org/ 打开官网后&#xff0c;点击顶部 Dow…

作者头像 李华
网站建设 2026/5/11 6:31:35

从“布布”的退场到构建Agent社区的思考:我们该如何设计一片“湿地”?

副标题:一个开源社区的生死,不取决于有多少好人,而取决于它能否避开那三道深渊 近期,开源圈发生了一件事。一位独立开发者出于热爱,为某个商业操作系统适配了一个流行的UI框架。这本是开源世界里每天都在上演的、“用爱发电”的寻常故事。 但故事的结局并不寻常。当开发…

作者头像 李华
网站建设 2026/5/11 6:20:21

Verbalized Sampling:无需训练,用提示词将大模型输出多样性提升2-3倍

1. 项目概述&#xff1a;一个简单提示词&#xff0c;如何让大模型输出多样性提升2-3倍如果你用过ChatGPT、Claude或者任何主流大模型&#xff0c;大概率遇到过这样的场景&#xff1a;你让模型“讲个笑话”&#xff0c;它翻来覆去就是那几个老梗&#xff1b;你让它“写个关于熊的…

作者头像 李华
网站建设 2026/5/11 6:17:48

技术沟通中的语义陷阱:识别与清除过时术语的工程实践

1. 从“僵尸表达”说起&#xff1a;技术沟通中的语义陷阱前几天在开车&#xff0c;电台里一个评论员说了句“我刚说完这话&#xff0c;电话就开始响个不停&#xff08;ringing off the hook&#xff09;”。我下意识一愣&#xff0c;心想&#xff1a;这年头&#xff0c;谁还用“…

作者头像 李华