Linux,将输出写入文件,包括命令

Linux, write output to file, including the command

如何将命令的输出写入文件,同时将命令包含在文件的开头?

例如:

grep -nrs 'blah' . >/home/ca/out.txt

以便文件显示

grep -nrs 'blah' . >/home/ca/out.txt
./something.cpp:1329:    if(blah)

中间留空行?

grep -nrs 'blah' . >/home/ca/out.txt

./something.cpp:1329:    if(blah)
....

谢谢

如果您在 bash 脚本中使用它,您可以先编写并回显行,然后将输出添加到文件中:

echo "grep -nrs 'blah' ." > /home/ca/out.txt
grep -nrs 'blah' . >> /home/ca/out.txt

使用script命令将命令和输出保存在同一个文件中,如下

script -a mycommands.txt

待录制部分完成后,在终端中键入 exit 退出程序。

您可以使用 bash -vc 将命令行和结果都存储在一个文件中,如下所示:

bash -vc "grep -nrs 'blah' ." >& /home/ca/out.txt
  • -v 用于 bash 中的详细模式,在执行之前输出完整命令。
  • -c 用于 运行 来自命令行的命令
  • >& 用于重定向 stdout 和 stderr

另一种方法是将命令行存储在数组中:

arr=(grep -nrs 'blah' .)
{ printf "%q " "${arr[@]}"; echo; echo; "${arr[@]}"; } >& /home/ca/out.txt

您可以使用 logsave (usage) 来记录输出以及时间戳和命令,例如:

logsave -a output.txt ls

ls 命令的输出保存到 output.txt:

Log of ls 
Thu Jan 29 16:49:25 2015

[output of command]

Thu Jan 29 16:49:25 2015
----------------