有没有一种快速而肮脏的方法不仅可以记录 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
或^?
(或任何终端的退格键)。