一: cat命令
cat (concatenate)是命令行玩家首先必须学习的命令之一,他通常用于读取,显示和拼接文件,不过cat 的能力远不止如此,用一行命令将来自标准输入以及文件的数据结合起来,这可是个让人挠头的难题。来看看cat的基本用法和高级用法
(1)用 cat 读取文件内容的一般写法是:
$ cat file1 file2 file2
这个命令将作为命令行的参数的文件内容拼接在一起。
打印单个文件的内容:
打印多个文件的内容:
类似的我们也可以用cat将来自输入文件的内容和标准输入拼接在一起,将stdin和另一个文件中的数据结合起来。方法如下:
$ echo "Text through stdin" | cat - file.txt
例:
在上面的代码中,- 被作为stdin文本的文件名
(2) cat的其他用法:
a) 摆脱多余的空白行
有时候文本文件中可能包含多处连续的空白行。如果你需要删除这些额外的空白行,则可以使用下面的用法:
$ cat -s file
例:
此外,有时候为了区分多个空格和制表符,可以使用cat的-T参数,使得脚本里的制表符都变为^|, 这样方便调试
b) 显示行号(-n参数)
使用cat 命令的-n选项会在输出的每一行内容之前加上行号。别担心,cat命令绝对不会修改你的文件,他只是根据用户提供的选项在stdout中生成一个修改过的输出而已,例如:
注意:-n 甚至会为空白行加上行号。如果你想跳过空白行,那么可以使用选项-b。
二:录制并回放终端会话
当你需要为别人在终端上演示某些操作或是需要准备一个命令行教程时,通常得一边手动输入命令一边演示,或者也可以录制一段屏幕演示视频,然后再回放出来,其实也有其他的实现方法,利用script和scriptreplay命令,我们可以录制命令的次序和时序,将相关数据记录在文本文件中。利用这些文件,其他人可以在终端回放并查看命令的输出。
例:
开始录制终端会话
$ script -t 2> timing.log -a output.session
type commands
.....
exit
两个配置文件被当做script命令的参数。其中一个文件(timing.log)勇于存储时序信息,描述每一个命令在何时运行;另一个文件(output.session) 用于存储命令输出。 -t选项勇于将时序数据导入stderr。 2> 则勇于将stderr导入到timing.log.
利用这个两个文件 timing.log和output.session,我们可以按照下面的方法回放命令执行过程:
$ scriptreplay timing.log output.session #按播放命令顺序输出