cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
命令参数:
-A, --show-all 等价于 -vET
-b, --number-nonblank 对非空输出行编号
-e 等价于 -vE
-E, --show-ends 在每行结束处显示 $
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
-t 与 -vT 等价
-T, --show-tabs 将制表符显示为 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
使用实例:
打印多个文件,并加上行号
[root@LAMP test]# cat -n demo_cat1.sh demo_cat2.sh 1 #/bin/bash 2 echo hello 3 echo world 4 #/bin/bash 5 echo hello 6 echo world[root@LAMP test]#
删除额外的空白行
[root@LAMP test]# cat -n demo_cat3.sh 1 #/bin/bash 2 echo hello 3 4 5 echo world [root@LAMP test]# cat -n -s demo_cat3.sh 1 #/bin/bash 2 echo hello 3 4 echo world
将制表符显示成^I
[root@LAMP test]# cat -T demo_cat1.sh #/bin/bash ^Iecho hello echo world
显示断行标志
[root@LAMP test]# cat -v demo_cat1.sh #/bin/bash echo hello echo world [root@LAMP test]# cat -v demo_cat2.sh #/bin/bash^M echo hello^M echo world
其中demo_cat1.sh是在Linux下编辑的,而demo_cat2.sh是在windows下编辑的,可以看出两个操作系统的断行标志是不同的,这也是为什么很多脚本在windows下编辑下上传到Linux下报错的原因。
利用cat -A更加清晰的看出两者的不同,DOS下的文本文件是以 作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以 作为断行标志的。
[root@LAMP test]# cat -A demo_cat1.sh #/bin/bash$ ^Iecho hello$ echo world$ [root@LAMP test]# cat -A demo_cat2.sh #/bin/bash^M$ ^Iecho hello^M$ echo world[root@LAMP test]#
拓展:
cat命令还可以接受标准输入,并打印到屏幕
[root@LAMP test]# cat <<EOF > hello > world > EOF hello world
或者将标准输入重定向到一个文件中
[root@LAMP test]# cat >demo.txt <<EOF > hello > linux > EOF [root@LAMP test]# cat demo.txt hello linux
在脚本中的应用:
[root@LAMP test]# vim demo_cat.sh #/bin/bash cat <<EOF ****Main Menu***** [1] Start [2] Shutdown [3] Restart [4] Exit EOF
运行结果:
[root@LAMP test]# sh demo_cat.sh ****Main Menu***** [1] Start [2] Shutdown [3] Restart [4] Exit