常用命令
向文件中写入内容:
cat <<EOF > foo.html echo $var EOF cat <<\EOF > foo.html echo $var EOF # 补充说明 # 1)EOF 将内容写入文件 foo.html 中,其中 $var 将 Shell 解析; # 2)\EOF 使得 $var 不被 Shell 解析,免去对 $ 符号的转义;
语法格式
cat [OPTION]... [FILE]...
如果未指定 FILE、或者 FILE 为 -,则从标准输入中读取。
命令行选项
打印行号
-n, –number
给所有的输出行前加上行号。
-b, –number-nonblank
只给非空行编号,而不会在非空白行前添加行号。该选项会重写-n。
-s, –squeeze-blank
多个连续的空行,合并成一个输出。
打印特殊字符
-A, –show-all
等价于-vET。
-e
等价于-vE
-t
等价于-vT。
-v, –show-nonprinting
除LFD和TAB外,使用’^’表示法,显示控制字符。使用’M-‘来表示高位的字符。
-E, –show-ends
在行尾部显示$符号。
-T, –show-tabs
将TAB显示为^I。
其他选项
-u
(已忽略)
–help
显示帮助信息并退出。
–version
显示版本信息并退出。
简单示例
输出文件f、标准输入、文件g中的内容:
显示标准输入的内容:
我们要在日志文件中使用grep命令检索文本,但是这个文件里包含了一些二进制的内容,导致grep将文件视为了二进制文件,显示的结果就是Binary file XXXXX matches,而不是我们期望的显示匹配的行。要解决这个问题,可以用下面的命令:
将不可打印的字符“转码”显示,然后再进行grep搜索。
在cat *显示多个文件的内容时,如果如果想打印文件名,则可以搭配more命令:
相关手册
tac(1)
参考文献
man 1 cat, version GNU coreutils 8.26
Full documentation at: http://www.gnu.org/software/coreutils/cat