警告:我们要知道>意思是创建,»是追加。千万不要弄混了。造成失误可不是闹着玩的;

catconcatenate(连锁) 的简写,意思是合并文件

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。

命令格式

1
cat [-AbeEnstTuv] [--help] [--version] fileName

命令参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-A, --show-all:等价于 -vET。

-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。

-E 或 --show-ends : 在每行结束处显示 $。

-e:等价于"-vE"选项;

-n 或 --number:由 1 开始对所有输出的行数编号。

-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

-T 或 --show-tabs: 将 TAB 字符显示为 ^I。

-t:等价于"-vT"选项;

-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

使用实例

显示内容

命令:

1
2
3
4
5
6
7
8
9
10
bobo@ubuntu:~/test$ cat test1.txt
hello

world

this is test1


there are two blank lines above.
bobo@ubuntu:~/test$

显示行号

1
2
3
4
5
6
7
8
9
10
bobo@ubuntu:~/test$ cat -n test1.txt
     1  hello
     2
     3  world
     4
     5  this is test1
     6
     7
     8  there are two blank lines above.
bobo@ubuntu:~/test$

显示非空白行号

1
2
3
4
5
6
7
8
9
10
11
bobo@ubuntu:~/test$ cat -b test1.txt
     1  hello

     2  world

     3  this is test1


     4  there are two blank lines above.
bobo@ubuntu:~/test$

合并空白行

1
2
3
4
5
6
7
8
9
bobo@ubuntu:~/test$ cat -s test1.txt
hello

world

this is test1

there are two blank lines above.
bobo@ubuntu:~/test$

重写

1
2
3
4
5
6
7
bobo@ubuntu:~/test$ cat test2.txt
this

is

test2
bobo@ubuntu:~/test$

用test1.txt的内容覆盖test2的内容

1
2
3
4
5
6
7
8
9
10
11
bobo@ubuntu:~/test$ cat test1.txt > test2.txt
bobo@ubuntu:~/test$ cat test2.txt
hello

world

this is test1


there are two blank lines above.
bobo@ubuntu:~/test$

追加

1
2
3
4
5
6
7
bobo@ubuntu:~/test$ cat test3.txt
this

is

test3
bobo@ubuntu:~/test$

将test1中的内容追加到test3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bobo@ubuntu:~/test$ cat test1.txt >> test3.txt
bobo@ubuntu:~/test$ cat test3.txt
this

is

test3
hello

world

this is test1


there are two blank lines above.
bobo@ubuntu:~/test$

创建文件

1
2
3
4
5
6
bobo@ubuntu:~/test$ cat > test4.txt <<aaaa
> this
> is
>
> test4
> aaaa

创建test4并写入内容,aaaa为开始结束标志,一般使用EOF表示,也可以自己定义

1
2
3
4
5
6
bobo@ubuntu:~/test$ cat test4.txt
this
is

test4
bobo@ubuntu:~/test$

如希望像已存在的test4 中追加内容则将 cat > test4.t 修改为 cat >> test4.txt

1
2
3
bobo@ubuntu:~/test$ cat >> test4.txt <<aaaa
> append new line
> aaaa
1
2
3
4
5
6
7
bobo@ubuntu:~/test$ cat test4.txt
this
is

test4
append new line
bobo@ubuntu:~/test$

将多个文件写入一个文件中

1
2
3
4
5
6
drwxr-xr-x 20 bobo bobo 4096 May  6 06:47 ../
-rw-rw-r--  1 bobo bobo   63 May  6 06:44 test1.txt
-rw-rw-r--  1 bobo bobo   63 May  6 06:45 test2.txt
-rw-rw-r--  1 bobo bobo   79 May  6 06:48 test3.txt
-rw-rw-r--  1 bobo bobo   32 May  6 07:00 test4.txt
bobo@ubuntu:~/test$ cat -n test1.txt test4.txt > test5.txt

将文件test1和test4的内容加上行号后输入到test5中,test5不存在则创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bobo@ubuntu:~/test$ cat test5.txt
     1  hello
     2
     3  world
     4
     5  this is test1
     6
     7
     8  there are two blank lines above.
     9  this
    10  is
    11
    12  test4
    13  append new line
bobo@ubuntu:~/test$

其他

1
2
3
4
5
6
7
8
# 注:查看/etc/下的profile内容,并且在每行的结尾处附加$符号;
[root@localhost ~]$ cat  -E /etc/profile     

# cat 可以同时显示多个文件的内容,比如我们可以在一个cat命令上同时显示两个文件的内容;
[root@localhost ~]$ cat /etc/fstab /etc/profile

# cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;
[root@localhost ~]$ cat /etc/fstab /etc/profile | more

tac 反向列示

1
2
3
4
5
6
bobo@ubuntu:~/test$ cat test4.txt
this
is

test4
append new line

tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!

1
2
3
4
5
6
7
bobo@ubuntu:~/test$ tac test4.txt
append new line
test4

is
this
bobo@ubuntu:~/test$

参考文献