使用 script 命令进行 stdout 、 stderr 和日志记录

使用 script 命令进行 stdout 、 stderr 和日志记录

我有remove.sh其中包含:

rm -v test.tmp

我有install.sh其中包含:

script remove.log -c './remove.sh'

我可以做什么,以便无论是否存在,我在屏幕上看test.tmp不到任何相关消息,但看到脚本命令在其中生成?rmremoved 'test.tmp'rm: cannot remove 'test.tmp': No such file or directoryremove.log

答案1

如果您的问题是“如何抑制命令的 stderr 输出”,答案将类似于:

command 2> /dev/null

这会将 stderr (又名文件描述符 2)重定向到/dev/null,它会简单地丢弃它收到的任何内容。

但是,该rm命令支持该-f标志,如果文件不存在,这将阻止它生成错误消息:

$ rm file_that_does_not_exist
rm: file_that_does_not_exist: No such file or directory
$ rm -f file_that_does_not_exist
$

答案2

script对此来说是矫枉过正了。是的,它有效,但这不是脚本的目的。脚本用于直接访问 TTY 且不使用 STDOUT/STDERR 的应用程序。

您可以通过基本的 shell 重定向轻松完成此任务。

./remove.sh &> remove.log

相关内容