说明

  cat命令可以理解为英文单词concatenate的缩写,起功能是连接多个文件并打印到屏幕输出,或者重定向到指定的文件中。该命令常用来显示单个文件的内容,或者将几个文件内容连接起来,还可以从标准输出中读取内容并显示。

常用的几个功能:

1、查看文件。例如:cat filename.txt

2、把多个文件合并成一个。例如:cat file1.txt fil2.txt > newfile.txt

3、非交互式的编辑或追加内容到文件尾部。格式:

cat >> file.txt <<EOF
内容...
EOF

注意:cat后面如果是一个>符号,那么就是覆盖文件内容,如果是>>那就是追加到文件末尾
4、清空文件内容。例如:cat /dev/null > file.txt

格式

  cat [option] [filename]

常用参数说明
  • -n:从以开始对所有的输出内容按行编号
  • -b:跟-n一样,但是会忽略显示空白行行号
  • -s:如果有两行及以上的空白行时,合并替换为一行空白行
  • -A:等价于-vET三个选项的功能之和
  • -e:等价于-vE
  • -E:在每一行的行尾显示$符号
  • -t:等价于-vT
  • -T:将Tab字符显示为^I
  • -v:除了LFD和TAB之外,使用^和M-引用
示例

1、将内容追加到文件末尾

[root@localhost ~]# cat > abc.txt <<EOF #这里面加了很多空行,为后面测试做准备(这里我用的是一个>符号)
> hello world
> 
> php
> 
> python
> 
> 
> 
> go
> java
> EOF

注意:这EOF必须成对出现,可以使用其他字符代替,只要成对出现即可

2、查看文件内容

[root@localhost ~]# cat abc.txt 
hello world

php

python



go
java

3、-n参数的使用,所有行都显示了行号

[root@localhost ~]# cat -n abc.txt 
     1    hello world
     2    
     3    php
     4    
     5    python
     6    
     7    
     8    
     9    go
    10    java

4、-b参数使用,只显示了非空行的行号

[root@localhost ~]# cat -b abc.txt 
     1    hello world

     2    php

     3    python



     4    go
     5    java

5、-s参数使用,连续两个以上的空行,就会只显示一个空行

[root@localhost ~]# cat -s abc.txt 
hello world

php

python

go
java

注意:但是在实际工作中,我们跟喜欢把所有空行过滤掉,那么我们可以使用grep -v “^$” filename来去掉所有空行

[root@localhost ~]# grep -v "^$" abc.txt 
hello world
php
python
go
java

6、-E参数使用,每行末尾都显示了$符号,空行也显示了$符号

[root@localhost ~]# cat -E abc.txt 
hello world$
$
php$
$
python$
$
$
$
go$
java$

7、注意空行结尾文件,其实也会有一个$占用了空间

[root@localhost ~]# echo > test.txt
[root@localhost ~]# cat -E test.txt 
$
[root@localhost ~]# ll test.txt 
-rw-r--r--. 1 root root 1 Jun  3 14:05 test.txt

8、清空文件,使用/dev/null清空,那么文件空间就为0

[root@localhost ~]# cat /dev/null > test.txt 
[root@localhost ~]# ll test.txt 
-rw-r--r--. 1 root root 0 Jun  3 14:06 test.txt

9、连接多个文件

[root@localhost ~]# cat abc.txt abc.txt  #这里对同一个文件进行两次连接,不同文件对应指定即可,下面重复出现了abc.txt内容
hello world

php

python



go
java
hello world

php

python



go
java

10、连接文件后重新输出到一个新的文件

[root@localhost ~]# cat abc.txt abc.txt >> test.txt 
[root@localhost ~]# cat test.txt 
hello world

php

python



go
java
hello world

php

python



go
java

11、