Linux之cat命令实战

cat是Linux下的文本输出命令,通常是用来查看某个文件的内容。除了查看文件,我们还可以用cat命令实现文件的创建和合并。

1
$ cat [选项] [文件] ...

常用选项

  • -E, –show-ends 在每行结束处显示$
  • -T, –show-tabs 将Tab字符显示为 ^I
  • -n, –number 对输出的所有行编号
  • -b, –number-nonblank 对非空输出行编号
  • -s, –squeeze-blank 不输出多行空行
  • -v, –show-nonprinting 使用^和M-引用,除了LFD和Tab之外
  • -t 等价于 -vT
  • -A, –show-all 等价于 -vET
  • -e 等价于 -vE
  • –help 显示此帮助信息并离开

查看文件

1
2
3
4
5
$ cat /etc/init.d/mysql #输出/etc/init.d/目录下mysql文件内容
$ cat -n /etc/init.d/mysql #同上,同时给所有行(含空行)进行编号并显示
$ cat -b /etc/init.d/mysql #同上,但不给空行编号
$ cat -E /etc/init.d/mysql #输出mysql文件内容,同时所有行(含空行)结尾输出$
$ cat -T /etc/init.d/mysql #输出mysql文件内容,同时所有Tab使用^I代替

创建文件

如果需要创建原本没有的文件,可以cat命令进行创建并向文件内输如内容。

1
$ cat >FileName [<<EndOfFile]

  • FileName 表示新创建文件的名称
  • EndOfFile 表示新创建文件的结尾符(可选)
  • 输入特殊符号的时候不要转义,比如写入“$”时要输入“\$”
  • 执行该命令后,终端会处于阻塞状态,用户输入的内容会都输入到文件中,直到用户在新行单独输入指定的文件结尾符并回车。
  • 假如不指定EndOfFile,则执行该命令进行输入时,新行开头处不会显示“>>”,用户需要使用“Ctrl + d”来技术输入。
1
2
3
4
5
6
7
8
9
10
[bocai@ecs ~]$ cat >bocai.text <<$$
> 菠菜历险记
> Java、MySQL、Redis、Python。。。
> \$¥
> $$
[bocai@ecs ~]$ cat bocai.text
菠菜历险记
Java、MySQL、Redis、Python。。。
$
  • 假如FileName已存在,原文件内容将会被覆盖。
  • 假如需要往FileName文件尾部追加内容,则将原命令中的“>”改为“>>”
1
2
3
4
5
6
7
8
9
[bocai@ecs ~]$ cat >>bocai.text <<$$
> 新结尾
> $$
[bocai@ecs ~]$ cat bocai.text
菠菜历险记
Java、MySQL、Redis、Python。。。
$
新结尾

合并文件

文件的合并其实就是将多个文件的内容作为输入源,然后输入到同一个文件中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[bocai@ecs ~]$ ll
-rw-rw-r-- 1 bocai bocai 20 Apr 6 15:15 a.txt
-rw-rw-r-- 1 bocai bocai 20 Apr 6 15:15 b.txt
-rw-rw-r-- 1 bocai bocai 20 Apr 6 15:15 c.txt
-rw-rw-r-- 1 bocai bocai 20 Apr 6 15:15 d.txt
[bocai@ecs ~]$ cat a.txt b.txt c.txt d.txt #显示各个文件的内容
我是A文件内容
我是B文件内容
我是C文件内容
我是D文件内容
[bocai@ecs ~]$ cat a.txt b.txt >new.txt #将a.txt和b.txt合并生成new.txt
[bocai@ecs ~]$ cat new.txt
我是A文件内容
我是B文件内容
[bocai@ecs ~]$ cat c.txt d.txt >>new.txt #将c.txt和s.txt合并追加到new.txt
[bocai@ecs ~]$ cat new.txt
我是A文件内容
我是B文件内容
我是C文件内容
我是D文件内容