常用命令
向文件中写入内容:
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中的内容:
# cat f – g
显示标准输入的内容:
# cat
我们要在日志文件中使用grep命令检索文本,但是这个文件里包含了一些二进制的内容,导致grep将文件视为了二进制文件,显示的结果就是Binary file XXXXX matches,而不是我们期望的显示匹配的行。要解决这个问题,可以用下面的命令:
# cat -v filename.log | grep ‘abc’
将不可打印的字符“转码”显示,然后再进行grep搜索。
在cat *显示多个文件的内容时,如果如果想打印文件名,则可以搭配more命令:
# more * | cat
相关手册
tac(1)
参考文献
man 1 cat, version GNU coreutils 8.26 Full documentation at: http://www.gnu.org/software/coreu[……]
READ MORE