当我想将命令输出附加到日志文件并将其打印在终端上时,我使用以下命令:
ls 2>&1 | tee -a log.txt
是否可以重定向已执行的命令?那么示例内容log.txt
将如下所示:
ls
file1
file2
dir1
答案1
您可以添加一个辅助函数来概括这一点。
#!/bin/bash
logged() {
{ echo "$1"; "$@"; } 2>&1 | tee -a log.txt
}
# Will run command ls with output logging
logged ls
logged ls -t /home
...
“记录”执行的命令的另一种常用方法是xtrace
( set -x
),但可能不太适合您的情况。如果你想尝试一下,你至少可以通过设置摆脱通常的“+”前缀PS4=''
。