总结在前面:
cat 有两种存在形式:1 普通命令,2 过滤器。
作为过滤器,是把从标准输入的数据 复制到 标准输出(It reads from standard input and writes to standard output without modifying the data) 。
但是,作为过滤器的弊端是,只能从 ‘一个文件=也即是标准输入’中,获取数据, 这明显限制了cat的功能。
而作为普通命令,却是可以读取多份’数据’(以参数存在),并将数据输出到标准输出。
常用的选项
① 作为普通命令,可接收多个 ‘文件’ 为参数,拼接文件里面的内容,内容有先后顺序,将文本的每一行写到了 ‘标准输出’。
$ cat file1 file2 file3 .. filen
② cat作为过滤器存在,从标准输入中读取数据。
$ output_from_some command | cat
例子: 这里 ‘-‘,代表着cat的标准输入,从而将 ‘标准输入’ 和 路径文件参数的内容一起输出:when FILE is -, read standard input。
这里,cat作为普通命令存在。
$ echo "As the first line" | cat - file.txt #相当于cat 命令有两个参数。
稍后,继续详解’ - ‘的作用。
③压缩空白行:-s压缩连续多个空白行,只保留一个空白行。
$ cat -s file
进一步:如果要去除空白行,使用tr -s ‘\n’ :=将多个’\n’变为只有一个’\n’
$ cat file | tr -s '\n'
④ 将制表符以符号’^I’代替,从而显示的标识出来。
# 一个`^I`代表一个制表符。
$ cat -T blank | tr -s '\n'
line1
^I^I^Iline2
line3
^I
^I^I
line4
⑤ cat在stdout的基础上添加个行标识:
# 注意:并没有修改原文件。
$ cat -nT blank
1 line1
2
3 ^I^I^Iline2
4
5
6 line3
7
8 ^I
9 ^I^I
10 line4
⑥ 不对空白行进行标识:
# -b overrides -n。
$ cat -b blank
更多的使用:请查看 $ cat --help
root@37C:~# cat --help
用法:cat [选项]... [文件]...
Concatenate FILE(s) to standard output.
如果没有指定文件,或者文件为"-",则从标准输入读取。
-A, --show-all equivalent to -vET
-b, --number-nonblank number nonempty output lines, overrides -n
-e equivalent to -vE
-E, --show-ends display $ at end of each line
-n, --number number all output lines
-s, --squeeze-blank suppress repeated empty output lines
-t 与-vT 等价
-T, --show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
--help 显示此帮助信息并退出
--version 显示版本信息并退出
示例:
cat f - g 先输出f 的内容,然后输出标准输入的内容,最后输出g 的内容。
cat 将标准输入的内容复制到标准输出。