当前位置: 首页 > news >正文

Linux小课堂: 文件操作核心命令深度解析(cat、less、head、tail、touch 与 mkdir 命令)

Linux 中的“一切皆文件”哲学

  • 在 Linux 系统中,一切皆为文件——包括普通数据文件、目录、设备接口、链接等。因此,掌握对文件和目录的操作是系统管理与开发工作的基石,如何高效地查看、浏览和监控文件内容,对于分析日志、排查故障、理解程序行为至关重要

文件内容查看命令:cat、less、head 与 tail 的精准使用


1 )cat 命令:一次性输出文件全部内容

catconcatenate 的缩写,其官方描述为:“Concatenate files and print on standard output.”

这意味着该命令不仅可用于显示单个文件内容,还可将多个文件连接后统一输出,适用于小体积文件的快速查看

基本语法:cat [选项] 文件路径...

实际示例:
进入日志目录并查看 Xorg 日志文件:

cd /var/log
cat Xorg.0.log 

该命令会将整个文件内容一次性输出至终端。若文件过大(如超过屏幕行数),内容将快速滚屏,难以阅读。

显示行号(-n 参数):

cat -n Xorg.9.log

-n 表示 number,用于给每一行添加编号。例如输出末尾显示 338,说明此文件共 338 行。

合并多个文件输出:

cat Xorg.9.log Xorg.0.log

此操作会先输出 Xorg.9.log 的全部内容,紧接着追加 Xorg.0.log 的内容
cat 支持多个文件路径作为参数,结果是将所有文件内容按顺序拼接输出。可用于日志整合分析

注意事项:

  • cat 不适合大文件浏览,因其无分页机制,易造成终端阻塞或信息淹没
  • cat 适合处理小文件;大文件应优先考虑 lesstail

2 ) less 命令:分页浏览,高效查阅大文件

当面对大型日志文件时,cat 显得力不从心,此时,less 成为更优选择
它采用分页加载机制,仅显示当前屏幕可容纳的内容,支持前后翻页、搜索、跳转等高级功能
是生产环境中的首选查看器,极大提升可读性与性能

基本语法:less 文件路径

示例:less Xorg.9.log

执行后,终端仅显示文件开头若干行(取决于终端窗口高度)
执行后,终端仅显示首屏内容,并在左下角提示:

Xorg.9.log (lines 1-14/338) byte 932/22755 (4%) [Press RETURN]

这表明:

  • 当前显示第 1 至 14 行
  • 总计 338 行
  • 已加载 932 字节,总计 22,755 字节
  • 当前进度约为整体的 4%

核心快捷键操作(区分大小写):

快捷键功能说明
SpacePageDown向下翻一页
Enter向下一行
bPageUp向后翻一页
y向上一行
u向后半页(Backward half-page)
=显示当前位置信息(行号、字节数、百分比)输出格式如下:
lines 1-14/338 (5%) byte 932/22755 (4%) 表示当前显示第 1–14 行,共 338 行;已读取 932 字节,总大小 22755 字节,占比约 4%
/ + 搜索词进入搜索模式,查找指定字符串
例如输入 /error 并回车,less 将高亮所有匹配项
支持正则表达式搜索,极大提升日志排查效率
例如 /error.*failed 可查找包含错误失败记录的行
n跳转到下一个匹配项
Shift + N跳转到上一个匹配项
d向前滚动半页
Ctrl + D向前半页(Forward half-page)
h显示帮助文档,列出所有支持的快捷键,按 q 退出帮助界面
q退出 less 模式,qquit 的缩写,用于终止 less 会话并返回命令行

提示:

  • 所有按键均区分大小写,dD,输入需精确
  • more 命令虽功能类似,但仅支持向前翻页,无法回退,已被 less 取代

3 ) head 与 tail 命令:聚焦文件头尾的关键信息

head:查看文件开头若干行
默认显示前 10 行,适用于快速了解配置文件结构或日志起始状态。

用法:

head Xorg.9.log               # 默认显示前10行
head -n 5 Xorg.9.log          # 显示前5行

tail:查看文件结尾若干行
常用于监控日志末尾动态变化,默认也显示最后 10 行。

用法:

tail Xorg.9.log               # 显示最后10行
tail -n 5 Xorg.9.log          # 显示最后5行

实时追踪文件更新:tail -f
这是 tail 最强大的特性之一——实时监听文件增长

tail -f /var/log/Xorg.9.log

执行后光标停留在最后一行下方闪烁,每当系统向该文件写入新内容(如新的图形驱动事件),终端立即刷新显示新增行。

默认每秒检测一次更新。可通过 -s 参数自定义间隔:

tail -f -s 4 /var/log/Xorg.9.log   # 每4秒检查一次

适用于低频更新场景以减少 I/O 负载
组合终止方式:按 Ctrl + C 可中断 tail -f 监控进程,返回命令行

文件与目录创建:touch 与 mkdir 的深度解析


Linux 中一切皆文件,包括目录也视为一种特殊类型的文件
因此,掌握文件与目录的创建方法是系统操作的基础

1 ) touch 命令:创建空文件与修改时间戳

尽管 touch 初始设计目的是修改文件的时间戳(access time 即 atime 访问时间、modify time 即 mtime 修改时间),但因其在文件不存在时会自动创建空白文件,故被广泛用于新建文件

基本语法:

touch 文件路径

示例:
避免在系统目录 /var/log 中误操作,应回到用户家目录再实验:

cd ~                    # 回到家目录
clear                   # 清屏
touch new_file          # 创建名为 new_file 的空文件
ls -l new_file          # 验证文件存在,大小为 0                  

批量创建多个文件,节省重复输入:

touch new_file1 new_file2 new_file3

处理含空格的文件名:

touch "new file with space"

建议尽量避免空格命名,以免脚本解析出错。推荐使用下划线 _ 或连字符 - 替代,防止脚本解析错误
必须使用双引号包裹包含空格的文件名,否则 shell 会将其解析为多个参数

本质机制:touch 若发现目标文件不存在,则调用系统调用 open()O_CREAT 标志创建一个大小为 0 的新文件

查看时间戳更新:

stat new_file

显示详细时间信息,验证 touch 是否成功更新时间戳

2 ) mkdir 命令:创建目录的标准工具

对应于 touch 创建文件,mkdir(make directory 的缩写)负责创建目录

基本语法:

mkdir 目录路径 

示例:

mkdir newfolder                     # 创建单个目录
mkdir newfolder1 newfolder2         # 批量创建 
mkdir "new folder with space"       # 包含空格的目录名需加引号
ls -l                               # 目录通常以蓝色显示(取决于终端配色)

使用 -p 参数递归创建嵌套目录结构
传统 mkdir 无法直接创建父目录不存在的深层路径。例如:

mkdir one/two/three

onetwo 不存在,命令报错。

解决方案:使用 -p 参数实现递归创建:

mkdir -p one/two/three

系统自动按顺序创建:

  1. one
  2. one/two
  3. one/two/three

验证结果:

ls                          # 查看当前目录
cd one && ls                # 进入 one 并列出内容 → 包含 two
cd two && ls                # 再进入 two → 包含 three

-p 的优势:

  • 自动跳过已存在的目录
  • 安全创建复杂路径而无需逐层判断
  • 在自动化脚本中极为常用
  • 这是 mkdir 最强大的功能之一

应用场景:项目初始化、部署目录结构、容器挂载路径准备等

最佳实践建议


命令主要用途推荐场景
cat全文输出小文件快速预览、合并文件
less分页浏览大文件查阅、搜索、定位
head查看开头快速获取文件头部信息(如版本、标题)
tail查看结尾日志分析、错误排查
tail -f实时监控追踪动态日志文件(如 /var/log/syslog
touch创建空文件 / 更新时间戳初始化配置文件、占位符
mkdir创建目录组织项目结构
mkdir -p递归创建目录树构建多级项目路径

补充说明与专业建议

  1. 路径规范性:始终使用绝对路径(如 /var/log/)或相对路径(如 ~/projects/)明确指定目标位置,避免误操作。
  2. 权限管理:创建文件/目录时注意当前用户权限,尤其是在系统目录(如 /var, /etc)中操作需谨慎。
  3. 编码兼容性:确保日志文件为 UTF-8 编码,避免 catless 显示乱码。
  4. 自动化脚本集成:tail -f 可结合 grep 进行过滤:
    tail -f /var/log/syslog | grep "ERROR"
    
    实现关键错误的实时告警

关键要点凝练

  1. 文件即一切:Linux 中目录也被视为特殊类型的文件,统一通过文件操作接口管理
  2. 命令分工明确:每个命令专注特定任务,组合使用效率更高
  3. 实时监控能力:tail -f 是运维人员诊断系统行为的必备技能
  4. 递归创建优势:mkdir -p 能高效构建深层目录树,避免手动逐级创建
  5. 命名规范重要性:避免空格、特殊字符,确保脚本可移植性和稳定性

补充代码示例:综合实战脚本

以下是一个完整的 Bash 脚本,演示上述命令的实际集成应用:

1 )方案1

#!/bin/bash设置工作目录
WORKDIR="$HOME/file_operation_demo"
LOGFILE="$WORKDIR/example.log"创建测试环境
mkdir -p "$WORKDIR"
cd "$WORKDIR" || exit 1创建模拟日志文件(含时间戳)
for i in {1..50}; doecho "[$(date '+%Y-%m-%d %H:%M:%S')] Event $i occurred in system." >> "$LOGFILE"
done 输出文件基本信息 
echo "✅ 文件已生成:$LOGFILE"
echo "📄 文件行数:" $(wc -l < "$LOGFILE")
echo ""展示前5行
echo "🔍 前5行内容:"
head -n 5 "$LOGFILE"
echo ""展示最后5行
echo "🔚 最后5行内容:"
tail -n 5 "$LOGFILE"
echo ""模拟实时追加(后台运行)
{sleep 3for j in {51..55}; doecho "[$(date '+%Y-%m-%d %H:%M:%S')] NEW Event $j logged." >> "$LOGFILE"sleep 1 done
} &开启实时监控
echo "📡 正在实时监控日志更新... (3秒后开始)"
echo "💡 按 Ctrl+C 结束监控"
tail -f -s 1 "$LOGFILE"

脚本功能说明:

  • 自动生成带时间戳的日志;
  • 使用 head/tail 展示初始状态;
  • 后台模拟新增日志条目;
  • tail -f 实时捕获更新;
  • 支持手动中断

2 )方案2

#!/bin/bash定义变量 
LOG_DIR="/var/log"
USER_HOME="$HOME/project_demo"
TARGET_LOG="$LOG_DIR/Xorg.9.log"创建项目结构 
mkdir -p "$USER_HOME"/{data,logs,scripts}初始化空文件
touch "$USER_HOME/logs/app.log"
touch "$USER_HOME/data/.gitkeep"   # 占位文件,用于版本控制保留空目录输出日志文件基本信息
echo "=== Log File Info ==="
echo "Total Lines:"
wc -l < "$TARGET_LOG"echo "First 5 lines:"
head -n 5 "$TARGET_LOG"echo "Last 5 lines:"
tail -n 5 "$TARGET_LOG"实时监控日志(需另开终端运行)
tail -f -s 2 "$USER_HOME/logs/app.log"搜索关键字(模拟)
grep -i "error\|warning" "$TARGET_LOG" | head -n 3 使用 less 查看并记录位置信息
echo "Run 'less $TARGET_LOG' for interactive view."

保存为 setup_project.sh,赋予执行权限即可运行:

chmod +x setup_project.sh
./setup_project.sh

总结:掌握基础,驾驭系统

  • 通过对 catlessheadtailtouchmkdir 的深入理解与实践,用户不仅能有效管理本地文件系统,更能构建自动化流程、调试服务日志、维护服务器稳定运行
  • 这些命令虽看似简单,却是通往高级运维与开发能力的必经之路

记住原则:

  • 尊重权限边界:不在系统目录随意创建文件
  • 命名规范:避免空格、特殊字符
  • 善用参数:如 -n-f-p 提升效率
  • 结合场景选工具:小文件用 cat,大文件用 less,动态日志用 tail -f
http://www.dtcms.com/a/495730.html

相关文章:

  • Docker赋能SkyEye云部署:解锁嵌入式仿真测试新效率,赋能企业研发加速
  • docker部署MySQL主从服务集群
  • 网站推广可采用的方法有哪些毕设做网站难吗
  • 方案图网站西安网站建设设计的好公司哪家好
  • 邻接矩阵的基本操作
  • 【JavaEE初阶】1124网络原理
  • 烟台建网站公司南昌做网站哪家公司好
  • windows安装minicoda
  • 网站能否做二维码什么是网络营销产生的技术基础
  • 自己的网站怎么做排名网络营销有必要学吗
  • 关于太阳光模拟器的常见问题解答(二)
  • 模拟量线性变换FC_S_ITR函数(基恩士PLC完整ST代码)
  • MCP(模型上下文协议)是什么?是AI 时代的 “USB-C”
  • 数字企业选哪家
  • 视程空间Pandora:终端算力破晓,赋能边缘计算未
  • Visual Basic 参数传送-形参与实参
  • 机器视觉的电路板字符缺陷检测应用
  • 如何进行坡向分析
  • 外贸网站一站式海外推广铜仁市住房和城乡建设局网站
  • 乐迪信息:设备温度异常怎么办?AI摄像机热成像双光监测
  • 【爬虫】浏览器插件
  • 百度网盟 网站定向网站的ftp地址是什么
  • 鸿蒙Harmony实战开发教学(No.7)-Image组件基础到进阶篇
  • 08_优雅的Python开发:Conda与Poetry的完美结合
  • 彩票网站建设需要什么平面设计资源网站
  • 三亚专业做网站wordpress后台修改icp连接
  • ABQ-LLM:用于大语言模型的任意比特量化推理加速
  • Langchain输出
  • 营销型网站服务公司建设网站的重点与难点在于
  • 做牛仔裤的视频网站民权做网站哪家好