前言
cat (全称 concatenate) 命令是 Linux/类 Unix 操作系统中最常用的命令之一。
1、cat命令的介绍
cat命令来自于英文单词concatenate的缩写,其功能是用于查看文件内容。
在Linux系统中有很多用于查看文件内容的命令,例如more、tail、head……等等,每个命令都有各自的特点。
cat命令适合查看内容较少的、纯文本的文件。
对于内容较多的文件,使用cat命令查看后会在屏幕上快速滚屏,用户往往看不清所显示的具体内容,只好按Ctrl+c键中断命令的执行,所以对于大文件,可以用more命令。
比如: cat a.txt |more
2、常用参数
3、 应用案例示范:
3.1 查看某个文件
## wc-l 在这里是统计行数
[root@mufenggrow ~]# cat /etc/passwd |wc -l
44
## 查看前三行,如果不加后面的head是查看所有的。
[root@mufenggrow ~]# cat /etc/passwd |head -3
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@mufenggrow ~]#
3.2 查看某个文件并显示行号
-n参数
[root@mufenggrow ~]# echo aaa >> a.txt
[root@mufenggrow ~]# echo bbb >> a.txt
[root@mufenggrow ~]# cat a.txt
aaa
bbb
## -n参数可以查看行号
[root@mufenggrow ~]# cat -n a.txt
1 aaa
2 bbb
[root@mufenggrow ~]#
3.3 跳过空行,不给空行加行号 -b参数
-b参数是不给空行加行号
[root@mufenggrow ~]# echo "" >> a.txt
[root@mufenggrow ~]# echo ccc >> a.txt
[root@mufenggrow ~]# cat -b a.txt
1 aaa
2 bbb
3 ccc
[root@mufenggrow ~]#
3.4 如果有多个空行则合并成一行
## 追加三个空行到文件中
[root@mufenggrow ~]# echo "" >> a.txt
[root@mufenggrow ~]# echo "" >> a.txt
[root@mufenggrow ~]# echo "" >> a.txt
[root@mufenggrow ~]# echo ddd >> a.txt
## 使用-n参数查看行号
[root@mufenggrow ~]# cat -n a.txt
1 aaa
2 bbb
3
4 ccc
5
6
7
8 ddd
## 使用-s参数可以把多个空行压缩成一行
[root@mufenggrow ~]# cat -sn a.txt
1 aaa
2 bbb
3
4 ccc
5
6 ddd
## 使用bsn多行空行压缩成一行,然后跳过空行加行号
##直接用bs也一样可以。
[root@mufenggrow ~]# cat -bs a.txt
1 aaa
2 bbb
3 ccc
4 ddd
3.5 清空某个文件内容
# echo aaa >> ks.cfg.bak
[root@master ~]# cat /dev/null>ks.cfg.bak
[root@master ~]# cat ks.cfg.bak
很多运维喜欢用echo “” >laoxin.txt来清空文件,殊不知这样清空完成之后,是多了个空行,w文件内容并不为空。
3.6 使用cat命令追加多行内容到文件中
我们使用echo命令,输入多行到文件中是很困难的,这时候就可以用cat
EOF是“end of file”,表示文本结束符
EOF只是标识,不是固定的
## 查看ip
[root@mufenggrow ~]# ifconfig |grep inet |awk 'NR==1{print $2}'
192.168.1.101
## 把ip映射关系追加到/etc/hosts里
[root@mufenggrow ~]# cat >>/etc/hosts << EOF
> 192.168.1.101 mufenggrow
> EOF
[root@mufenggrow ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.101 mufenggrow
3.7 使用cat命令创建文件
执行下列命令后,需要等待用户输入,键入所需文本,然后按 CTRL+D (按住 Ctrl key 并输入d) 退出。
root@mufenggrow test]# cat > a.txt
this is test
i am mufenggrow
[root@mufenggrow test]# ls
a.txt
[root@mufenggrow test]# cat a.txt
this is test
i am mufenggrow
3.8 cat命令在shell脚本中的应用
写一个购物清单脚本
[root@mufenggrow test]# cat list.sh
#!/bin/bash
list(){
cat <<END
1.apple
2.banana
3.pear
4.orange
please slect one that you like:
END
}
list
执行结果:
# bash list.sh
1.apple
2.banana
3.pear
4.orange
please slect one that you like: