Linux命令行:cat、more、less终极指南

以下介绍了 Linux 命令行中三个用于查看文本内容的核心工具:cat、more 和 less。下面我将逐部分帮你深入理解它们的用途、区别和最佳实践。


🧾 1. cat --- 快速显示短文件

作用 :cat(全称 concatenate )主要用于一次性输出整个文件内容到终端。

bash 复制代码
cat /etc/fstab
  • ✅ 适合场景:文件较短(比如配置文件、小日志),能完整显示在屏幕上。

  • ❌ 不适合:大文件(如日志、内核消息),因为内容会"哗啦"一下滚屏过去,根本来不及看。

  • 💡 小知识:cat 也可以合并多个文件:

    bash 复制代码
    cat file1.txt file2.txt > combined.txt

📖 2. more --- 分页查看(只能往下翻)

作用 :more 让你一页一页地向下浏览文件内容。

bash 复制代码
more dmesg.txt
  • 操作方式:
    • 按 空格键(Space) → 翻到下一页
    • 按 回车(Enter) → 向下一行
    • 按 q → 退出
  • ⚠️ 重大限制 :不能向上滚动!一旦翻过一页,就回不去了。
  • 所以它适合"从头到尾线性阅读"的场景,但交互性差。

📝 示例中用 sudo dmesg >> dmesg.txt 创建了一个长文件(内核日志),正是为了展示 cat 的不足和 more 的价值。


🔍 3. less --- 更强大的分页查看器(可上可下)

作用 :less 是 more 的"升级版",名字其实是程序员幽默 ------ "less is more"。

bash 复制代码
less dmesg.txt
  • 操作方式更灵活:
    • ↑ / ↓ 方向键:上下滚动
    • 空格键:下一页
    • b 键:上一页(back)
    • /keyword:搜索关键词(按 n 跳转下一个)
    • q:退出
  • ✅ 优势 :
    • 支持双向滚动
    • 启动快(不需要读完整个文件)
    • 支持搜索、跳转行号等高级功能
  • 💡 实际上,less 是现代 Linux 系统中最推荐的文本查看工具。

🚫 4. 不要写 cat file | more(常见误区!)

很多人习惯写:

bash 复制代码
cat file.txt | less

但这是多余的!

✅ 正确做法:

bash 复制代码
less file.txt      # 直接让 less 读文件
more /etc/passwd   # more 也能直接读
  • more 和 less 本身就能打开文件,无需 cat 中转。
  • 多此一举不仅浪费资源,还显得不够专业(老手一看就知道是新手写法 😅)。

🔗 5. 与管道(|)结合使用

虽然不需要 cat,但 more/less 非常适合和其它命令配合:

bash 复制代码
sudo dmesg | less        # 查看实时内核日志
ps aux | less            # 浏览进程列表
grep "error" log.txt | less  # 查看过滤后的错误日志
  • 这时 less 接收的是命令的输出流,而不是文件,非常有用!
  • 特别是在处理大量输出时,| less 几乎是标配。

🧹 6. 清理测试文件

bash 复制代码
rm dmesg.txt
  • 养成好习惯:练习完记得清理临时文件,保持系统整洁。

✅ 总结对比表

命令 适用场景 能否翻页 能否回滚 能否搜索 是否推荐
cat 短文件、脚本输出 ❌ 一次性输出 ❌ ❌ ✅(短文件)
more 长文件(只读一遍) ✅ ❌ 有限 ⚠️(老旧)
less 任何文本查看需求 ✅ ✅ ✅ ✅✅✅(首选)

💡 最佳实践建议

  1. 日常查看文件 → 优先用 less filename
  2. 快速看小配置 → 用 cat /etc/hosts
  3. 查看命令输出 → 用 command | less
  4. 永远不要写 cat file | less,除非你真的需要先拼接多个文件再查看。

通过掌握这三个命令的区别和用法,你就已经迈出了高效使用 Linux 命令行的重要一步!

相关推荐
IT大白鼠19 分钟前
彭大帅的AI运维助手——自然语言管理 Linux 集群与网络设备——第 2 篇 · 安全守规矩的 AI:分级安全管控是灵魂
linux·运维·人工智能
风华同学23 分钟前
免密SSH登录Ubuntu
linux·运维·ubuntu
꯭自꯭闭꯭24 分钟前
达梦守护集群手工切换及故障切换
linux·运维·服务器·数据库
cuijiecheng20181 小时前
RK3588 DEP 接入 Dante Domain Manager(DDM)完整测试记录
linux
爱吃香菜的初学者1 小时前
十二.Linux——管道
linux·运维·服务器
网硕互联的小客服9 小时前
Linux服务器磁盘应该如何合理分区?
linux·运维·服务器
贵沫末10 小时前
Ubuntu——常用软件安装
linux·运维·ubuntu
Doraemomo11 小时前
Linux内核驱动开发——中断与定时器
linux·运维·驱动开发
2301_8084143811 小时前
Linux中动静态库的理解
linux·运维·服务器
M78佐菲12 小时前
ARM学习笔记(11)
linux·arm开发·笔记·嵌入式硬件·学习