显示执行的命令以及日志文件中的输出

显示执行的命令以及日志文件中的输出

有没有一种快速而肮脏的方法不仅可以记录 shell 文件的输出,还可以记录其中使用的命令?

例如:

whoami > who.dmp

将输出一个包含以下内容的文件:

my_username

对于较长的 shell 文件,在日志文件中显示导致结果的命令的最有效方法是什么

前任:

log.txt
###############

echo whoami  <- I want this to show in the file as well
my_username

time   <- I want this to show in the file as well

real    0m0.00s
user    0m0.00s
sys     0m0.00s

有没有一种方法可以做到这一点,而无需每次都将命令硬编码到输出文件中?

答案1

使用内置的 shellset -x可能是执行此操作的廉价且肮脏的方法。在 shell 脚本中你经常会看到这样的一行:

#set -x

有人只是通过注释掉了它。我认为您可以在交互式命令行中使用它,但您可能不喜欢它在那里的作用。

答案2

您可以查看该script工具,它将保存整个终端会话,直到您退出您调用的程序(默认情况下是一个 shell)。示例用例:

~/:$ 脚本测试.输出
脚本启动,输出文件为test.output
~/:$ mkdir 示例
~/:$ cd 示例
~/example/:$ touch new\ file.txt
〜/示例:/$ ls
新文件.txt
〜/示例:/$退出

该文件的内容test.output将如下所示:

脚本于 2012 年 6 月 25 日星期一 16:24:28 开始
~/:$ mkdir 示例
~/:$ cd 示例
~/example/:$ touch new\ file.txt
〜/示例/:$ ls
新文件.txt
~/example/:$ 退出

脚本于 2012 年 6 月 25 日星期一 16:24:41 完成

请注意,该文件是完全的终端记录,因此任何退格键都将显示为^H^?(或任何终端的退格键)。

相关内容