如何将命令以及该命令的输出保存到文件中

如何将命令以及该命令的输出保存到文件中

您好,我想将命令的输出和已运行以创建输出的命令保存到同一个文件中。我理解其中之一

*some_command* > file.txt   
*some_command* | tee file.txt

可以做到,但无论哪种情况一些命令 不会保存到文件中,但只会保存它的输出。有办法这样做吗?

答案1

您可以将命令存储在数组中,打印并运行它:

# Define command
mycmd=(some_command -o "some option")

# Print command
echo "${mycmd[@]}"

# Run command
"${mycmd[@]}" 

也可以看看。

请注意,这将在打印命令时去除引号。


将其放入一个函数中:

lognrun(){ echo "$@"; "$@"; }
lognrun some_command -o "some_option" > logfile

答案2

使用带有以下内容的子 shell set -x

$ ( set -x; printf '%s\n' a b "c d"; ) 2>&1 | tee logfile
+ printf '%s\n' a b 'c d'
a
b
c d

答案3

使用“脚本”命令怎么样?

$ script logfile
$ somecommand
lots of command output...

这会将您在 shell 上执行的所有操作记录到日志文件中。按 Ctrl+D 停止。

如果您只需要一个命令,则可以使用“-c”选项:

-c, --command 命令
    运行命令而不是交互式 shell。
    这使得脚本可以轻松捕获程序的输出
    当它的标准输出不是 tty 时,其行为会有所不同。

相关内容