终端 - 如何将命令的输出重定向到文件?

终端 - 如何将命令的输出重定向到文件?

当我想将命令输出附加到日志文件并将其打印在终端上时,我使用以下命令:

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=''

相关内容