如果想要把命令的输出保存到文件中,你会怎么做?
一个常用的方法就是使用IO重定向吧
如果需要在将命令输出保存到文件中的同时还需要将内容也输出到屏幕中的话,那么我们可以使用 tee
命令
不过,我今天发现还有一个 logsave
的命令,也可以做到将命令输出保存到文件的同时将内容页输出到屏幕中。
logsave
的语法非常简单:
logsave 会执行 cmd_prog args...
并将命令输出的副本保存到 logfile
中. 而它厉害的地方在于
即使logfile所在的目录不存在,logsave也会将输出保存到内存中,等到logfile所在的目录建立后再将内容写入到日志文件中
logsave
的这个特性使得它很适合用于系统启动脚本中,将输出的内容保存到内存中,直到 /var/
目录挂载后再将内容写入 /var/log/
中
比如下面这个例子
从中可以看到:
虽然一开始logfile由于logdir不存在而无法生成,但是在创建logdir后,
logsave
最终依然成功的生成了logfile,并将date
命令的执行结果写入其中。logsave
不仅仅将命令的输出内容写入logfile中,而且还包括了执行的命令,命令执行的开始时间和命令执行结束的时间.
logsave
中的 cmd_prog 可以是一个特殊的 -
,这表示 logsave
从标准输入中获取要记录日志的内容,这使得 logsave
可以像 tee
一样被使用
执行以下命令,开启保存:
之后你在终端输入的相关命令,及终端的所有输出信息都被保存到screen.log文件中,然后执行以下命令,停止保存:
注:screen.log在你的当前目录下生成