cat命令

cat命令是Linux系统中常用的一个文本处理工具,它可以将多个文件合并为一个文件,也可以将一个文件的内容输出到标准输出设备(通常是屏幕)。

基本语法

cat [选项] [文件名]

1
2
3
4
5
6
7
8
9
10
常用选项
-n: 显示行号(包括空行)。

-b: 显示行号,但不对空行编号。

-s: 将连续的多个空行压缩为单个空行。

-e: 在每行末尾显示结束符$(通常与-v或-E行为类似)。

-A: 显示所有控制字符,相当于-vET组合。
  • 实用示例

合并多个文件为一个新文件:

1
cat file1.txt file2.txt > merged.txt

查看文件内容并同时保存到另一个文件(可以替代简单的复制):

1
cat file3.txt > new_file3.txt

常用于复制的命令是 cp file3.txt new_file3.txt

查看文件内容并显示行号:

1
cat -n file.txt

查看文件内容并显示行结束符:

1
cat -e file.txt

echo命令

echo命令在Linux系统中非常基础且常用,特别在编写shell脚本时,经常会用到。其主要功能是将传递给它的参数打印到标准输出中。

基本语法

echo [选项] [字符串]

1
2
3
4
5
6
常用选项
-n: 输出字符串,但不换行。

-e: 启用转义字符的解释(如\n换行,\t制表符)。

-E: 禁用转义字符的解释(默认行为,如果系统环境默认不是-e的话)。
  • 实用示例

打印环境变量PATH的值:

1
2
echo $PATH
# 输出示例: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

打印普通字符串:

1
echo "Hello, World!"

打印不换行的字符串:

1
2
3
echo -n "Processing... "
echo "Done!"
# 输出: Processing... Done!

打印包含转义字符的字符串:

1
echo -e "First Line\nSecond Line\tIndented"

tail命令

tail命令用于显示文本文件的末尾部分内容。它默认显示文件的最后10行。在监控日志文件的实时输出时尤其有用。

基本语法

tail [选项] [文件名]

1
2
3
4
5
6
7
8
9
10
常用选项
-n <数字> 或 -<数字>: 显示文件末尾指定数量的行。

-f: 实时跟踪文件增长,并显示新增的内容。常用于监控日志。按Ctrl+C退出。

-F: 类似-f,但在文件被轮转(rotate)或删除/重新创建后,仍能尝试跟踪。比-f更健壮。

--pid=<PID>: 与-f一起使用,当指定进程结束时,tail也自动结束。

-c <数字>: 显示文件末尾指定数量的字节。
  • 实用示例

显示文件最后10行(默认):

1
tail /var/log/messages

显示文件最后100行内容:

1
2
3
tail -n 100 /var/log/messages
# 或简写为
tail -100 /var/log/messages

实时监控日志文件的新内容(非常重要):

1
tail -f /var/log/messages

head命令

head命令与tail相反,用于显示文本文件的开头部分内容。默认显示文件的前10行。

基本语法

head [选项] [文件名]

1
2
3
4
常用选项
-n <数字> 或 -<数字>: 显示文件开头指定数量的行。

-c <数字>: 显示文件开头指定数量的字节。
  • 实用示例

显示文件前10行(默认):

1
head /etc/passwd

显示文件前20行内容:

1
2
3
head -n 20 /etc/passwd
# 或简写为
head -20 /etc/passwd

more命令

more是一个早期的分页显示文件内容的命令。它允许用户逐屏查看长文本。

基本语法

more [选项] [文件名]

1
2
3
4
5
6
7
8
9
10
11
12
13
常用操作(在more浏览界面中)

空格键 或 f: 向下翻一屏。

回车键: 向下翻一行。

b: 向上翻一屏。

q: 退出。

/字符串: 搜索指定字符串(只能向前搜索)。

主要缺点是不能向上滚动。
  • 实用示例
1
more /etc/passwd

less命令

less是more命令的增强版,功能更强大,是现在更推荐使用的分页浏览工具。它支持上下翻页、搜索、跳转等高级功能,并且不会一次性加载整个文件,打开大文件速度非常快。

基本语法

less [选项] [文件名]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
常用操作(在less浏览界面中)
空格键 或 f 或 PageDown: 向下翻一屏。

b 或 PageUp: 向上翻一屏。

上/下箭头键: 向上/下滚动一行。

q: 退出。

/字符串: 向前搜索字符串,按n找下一个,N找上一个。

?字符串: 向后搜索字符串,按n找上一个,N找下一个。

g: 跳到文件首行。

G: 跳到文件末行。

:n: 在打开多个文件时,跳到下一个文件。

:p: 在打开多个文件时,跳到上一个文件。
  • 实用示例
1
less /etc/passwd

more与less命令详细对比表

功能/特性 more 命令 less 命令
开发时间 1978年(更早) 1983-1985年(改进版)
导航能力 仅支持向前翻页(↓/空格) 支持前后翻页(↑↓/PgUp/PgDn)
搜索功能 基础向前搜索 支持正则搜索(/keyword,n/N跳转)
跳转效率 只能逐页/逐行翻动 支持百分比跳转(50%)、行号跳转
大文件处理 加载全部内容,可能卡顿 懒加载,快速打开超大文件
退出后显示 清屏 保留屏幕内容(可配置)
其他功能 基础功能 支持标记位置、多文件切换、Shell命令嵌入等
推荐度 较低,功能有限 高,现代Linux环境首选

tr命令

tr (translate) 命令用于转换或删除从标准输入读取的字符。它按字符集处理,而不是按行。

基本语法

tr [选项] SET1 [SET2]

  • 注意:SET1和SET2是字符集,通常需要用引号括起来。
    1
    2
    3
    4
    5
    6
    7
    8
    常用选项
    -c 或 --complement: 取反。操作对象是不属于SET1的字符。

    -d 或 --delete: 删除所有属于SET1的字符。

    -s 或 --squeeze-repeats: 将SET1中连续重复的字符压缩为单个字符(如果SET2存在,则在转换后压缩)。

    -t 或 --truncate-set1: 将SET1的长度截断为与SET2相同(通常默认行为)。
  • 实用示例

删除文件中的某个字符:

1
2
echo "Hello World" | tr -d 'o'
# 输出结果为:Hell Wrld

将文件中的小写字母全部转换为大写:

1
2
3
4
echo "Hello World" | tr 'a-z' 'A-Z'
# 或
echo "Hello World" | tr '[:lower:]' '[:upper:]'
# 输出结果为:HELLO WORLD

将文件中的某个字符替换为另一个字符:

1
2
echo "Hello World" | tr 'H' 'J'
# 输出结果为:Jello World

将文件中的连续重复字符(如多个空格)压缩为一个字符:

1
2
3
4
5
echo "aaabbbccc" | tr -s 'abc'
# 输出结果为:abc

echo "Hello World" | tr -s ' '
# 输出结果为:Hello World

删除所有非数字字符:

1
2
3
echo "Phone: 123-456-7890" | tr -cd '[:digit:]'
# 输出结果为:1234567890
# 解释:-c 取反(非数字),-d 删除

wc命令

wc (word count) 命令用于统计文件的行数、单词数和字节数/字符数。

基本语法

wc [选项]… [文件名]…

1
2
3
4
5
6
7
8
9
10
11
12
常用选项
-l 或 --lines: 仅显示行数。

-w 或 --words: 仅显示单词数(以空格、制表符、换行符分隔的字符串)。

-c 或 --bytes: 仅显示字节数。

-m 或 --chars: 仅显示字符数(与字节数在非ASCII字符时有区别)。

-L 或 --max-line-length: 仅显示文件中最长一行的长度(字节数)。

不带任何选项时,默认显示:行数 单词数 字节数 文件名。
  • 实用示例

完整统计一个文件:

1
2
3
wc file.txt
# 输出示例: 20 150 1024 file.txt
# 表示:20行,150个单词,1024个字节

仅统计文件行数(非常常用):

1
wc -l /etc/passwd

或者统计当前目录下所有.log文件的总行数

1
wc -l *.log

统计单词数:

1
wc -w report.txt

统计字节数/字符数:

1
2
wc -c script.sh  # 字节数
wc -m file.txt # 字符数 (对于UTF-8中文,一个中文字符可能占多个字节)

结合管道使用,统计命令输出的行数:

1
ps aux | wc -l  # 统计当前进程数量