Linux cat命令
Linux cat命令是用来连接文件并打印输出到标准输出设备
cat 命令可以用来显示文本文件的内容(类似于 DOS 下的 type 命令),也可以把几个文件内容附加到另一个文件中,即连接合并文件。
关于此命令,有人认为写 cat 命令的人是因为喜欢猫,因此给此命令起名为“cat”,其实不然,cat 是 concatenate(连接、连在一起的;)的简写。
语法格式
cat [-AbeEnstTuv] [--help] [--version] fileName
cat主要有三大功能:
一次显示整个文件内容
创建文件, 只能创建新文件,不能编辑已有文件.
将几个文件合并为一个文件
我们准备两个文件测试 cat 命名的用法,在linux中通过ls查看当前目录中的文件
[root@iz8vbbxoyfcgyzkxcspg04z test]# ls
t1.txt t2.txt
我们已经清楚当前目录中有t1.txt 和 t2.txt 这两个文件,如何查看文件的内容呢?
cat 一次显示整个文件内容
例如,我想查看t1.txt文件的内容,cat 命令如下:
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t1.txt
HTML
CSS
JavaScript
Vue.js
AJAX
jQuery
Python
Java
linux
查看t2.txt文件的内容,cat 命令如下:
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t2.txt
baidu.com
xinbiancheng.cn
google.cn
如果想对显示的内容都加行号,如何操作呢?
cat -n 对输出的所有行进行编号
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -n t1.txt
1HTML
2 #-n 参数空白行 也会有行号
3CSS
4JavaScript
5Vue.js
6AJAX
7jQuery
8Python
9Java
10
11linux
如果想对非空白行进行编号,如何操作呢?
cat -b 对非空白行进行编号
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -b t1.txt
1HTML
#cat 使用-b 参数是空白行没有编号
2CSS
3JavaScript
4Vue.js
5AJAX
6jQuery
7Python
8Java
9linux
cat 命令查看 t2.txt 内容
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -n t2.txt
1baidu.com
2
3
4xinbiancheng.cn
5
6google.cn
通过cat 命令查看 t2.txt 内容,我们发现 baidu.com 和 xinbiancheng.cn 中间有两个空行,分别是第2行和第3行,如何合并2个以上的空白行呢?
cat -s 当遇到有连续 2 行以上的空白行时,就替换为 1 行的空白行
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -n -s t2.txt
1baidu.com
2 #cat -s 参数可以合并多个空白行为1行空白行
3xinbiancheng.cn
4
5google.cn
cat -E 列出每行结尾的回车符 $
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -E t2.txt
baidu.com$
$
$
xinbiancheng.cn$
$
google.cn$
为了测试 cat -A 的用用法我们通过vim创建一个 t3.txt 文件,内容如下:
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t3.txt
1 2 3
4 5 6
其中2和3中间是Tab 键,在实际开发时,我们很难通过肉眼分辨那个是空格,那个是Tab 键
cat -A ,则相当于使用了 "-vET" 选项,可以查看文本中的所有隐藏符号,包括回车符($)、Tab 键(^I)等
例如:
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -A t3.txt
1 2^I3$ #cat -A 一眼就看出2和3中间是Tab键,因为显示的是 ^I
4 5 6$ #换行用 $表示
cat 加参数-b 和 nl 工具差不多,文件内容输出的同时,会在非空白行前面加上行号;
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -b t2.txt
1baidu.com
2xinbiancheng.cn
3google.cn
[root@iz8vbbxoyfcgyzkxcspg04z test]# nl t2.txt
1baidu.com
2xinbiancheng.cn
3google.cn
cat 同时显示多个文件的内容
[root@iz8vbbxoyfcgyzkxcspg04z test]# ls
t1.txt t2.txt t3.txt
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t1.txt t2.txt t3.txt
HTML
CSS
JavaScript
Vue.js
AJAX
jQuery
Python
Java
linux
baidu.com
xinbiancheng.cn
google.cn
1 23
4 5 6
cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t1.txt t2.txt t3.txt | more
cat 创建文件, 只能创建新文件,不能编辑已有文件.
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat >log.txt<
> a
> b
> c
> EOF
[root@iz8vbbxoyfcgyzkxcspg04z test]# ls
log.txt t1.txt t2.txt t3.txt #通过ls 命令我们发现log.txt文件已经创建好了
查看log.txt文件的内容
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat log.txt
a
b
c
我们准备向log.txt文件追加一些内容
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat >log.txt<
> 1
> 2
> 3
> EOF
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat log.txt
1
2
3
我们发现之前的内容a b c 换成了 1 2 3 ,并没有追加,而是覆盖了之前的内容。
总结:cat >文件名<,是覆盖之前的内容。
cat 追加内容
cat >>文件名<,是会追加内容
实例如下:
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat >>log.txt<
> a
> b
> c
> EOF
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat log.txt
1
2
3
a
b
c
cat 将几个文件合并为一个文件
cat 连接多个文件的内容并且输出到一个文件中,此方法会覆盖内容
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t1.txt t2.txt > hebing.txt
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat hebing.txt
HTML
CSS
JavaScript
Vue.js
AJAX
jQuery
Python
Java
linux
baidu.com
xinbiancheng.cn
google.cn
以上实例分析:通过cat 命令 将t1.txt 和 t2.txt 两个文件 合并成一个文件 hebing.txt,中间用一个 >符号连接,会覆盖hebing.txt的内容
cat 追加内容,到文件中,此方法不会覆盖内容
方法同上:只是中间用2个 >符号连接
实例如下:
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t3.txt >> hebing.txt
[root@iz8vbbxoyfcgyzkxcspg04z test]# cat hebing.txt
HTML
CSS
JavaScript
Vue.js
AJAX
jQuery
Python
Java
linux
baidu.com
xinbiancheng.cn
google.cn
1 23 #通cat >> 新追加的内容
4 5 6
cat 注意事项:1个 >符号连接会覆盖内容,2个 >符号连接是追加内容,大家在使用的时候要小心和注意。