是否有一种简单的方法来记录shell脚本的所有活动?
有没有一种简单的方法可以将从shell脚本发生的所有活动记录到文件中?
我有一个脚本。 它输出诸如echo“指令”之类的东西,以及其他程序输出。 我知道这些命令:
command | tee -a "$log_file"
和
command >> logifle.log
我要问的是,是否有用于记录的shell参数,或者我可以使用的set命令或类似的东西。 如果我不需要,我不一定要添加数十个重定向或tee到文件。 我仍然希望得到标准输出 – 我只是想要它被记录。:wq
如果您通常使用foo.sh
运行脚本,请尝试使用bash -x foo.sh
运行它(假设它是一个bash脚本)。 如果你想将所有内容重定向到文件,请尝试bash -x foo.sh > file.log 2>&1
(注意我也重定向stderr,如果你不想要这个,请删除2>&1
)。 如果你还想知道发生了什么,请使用bash -x foo.sh 2>&1 | tee log.file
bash -x foo.sh 2>&1 | tee log.file
。
有一种非常简单方便的方式:
使用script
制作终端会话的打字稿
-
启动命令
script
如果给出参数
file
,例如script ~/tmp/output
,script
会将对话保存在此文件中。 如果没有给出文件名,则对话框保存在文件typescript
-
启动您的脚本或您想要开始的任何内容
-
如果脚本已完成,请通过Ctrl – D停止
script
-
检查默认输出文件
typescript
中的输出
要使用script
一步启动命令,请使用参数-c
-c COMMAND Run the COMMAND rather than an interactive shell. This makes it easy for a script to capture the output of a program that behaves differently when its stdout is not a tty.
在script
使用script
没有任何意义,因为script
分配shell或启动新shell。
如果变量SHELL存在,则由脚本分叉的shell将是该shell。 如果未设置SHELL,则假定使用Bourne shell。 (大多数shell会自动设置此变量)。