警告:我们要知道>意思是创建,»是追加。千万不要弄混了。造成失误可不是闹着玩的;
cat
是 concatenate
(连锁) 的简写,意思是合并文件
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$
|
参考文献