如何将linux命令和返回结果输出在同一个文本文件中?

如何将linux命令和返回结果输出在同一个文本文件中?

到目前为止,我见过的所有命令都类似于command > filecommand >> file,它们将结果输出到指定文件。例如,当我输入 时openssl version > lab4.txt,我在文本文件中看到的只是OpenSSL 1.0.1e-fips 11 Feb 2013

如果我想像这样依次输出我输入的命令和返回的结果,该怎么办?

linux2[20]% openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

谢谢你的帮助

答案1

重定向运算符command > file将重定向命令的 STDOUT 或命令的 STDERR(如果使用方式类似),或两者(如果在 bash 或任何 shell 中以可移植方式command 2> file使用)。我不知道有任何直接使用重定向的方法可以实现您的需要。&>command > file 2>&1

虽然可以使用该script程序。它基本上会保存该会话中在终端上打印的所有内容script

man script

script makes a typescript of everything printed on your terminal. 
It is useful for students who need a hardcopy record of an 
interactive session as proof of an assignment, as the typescript file 
can be printed out later with lpr(1).

您只需在终端中script输入即可启动会话,所有后续命令及其输出都将保存在当前目录中的文件中。您也可以通过以下方式将结果保存到其他文件中:scripttypescriptscript

script output.txt

要退出会话screen(停止保存内容),只需输入exit

以下是一个例子:

$ script output.txt
Script started, file is output.txt

$ ls
output.txt  testfile.txt  foo.txt

$ exit
exit
Script done, file is output.txt

现在如果我读取该文件:

$ cat output.txt

Script started on Mon 20 Apr 2015 08:00:14 AM BDT
$ ls
output.txt  testfile.txt  foo.txt
$ exit
exit

Script done on Mon 20 Apr 2015 08:00:21 AM BDT

script还有很多选项,例如安静地运行-q--quiet)而不显示/保存程序消息,它还可以运行特定命令-c--command)而不是会话,它还有许多其他选项。检查man script以获得更多想法。

答案2

您需要创建以下内容的脚本:
echo 'command -params/r' > file.lst
command -params >> file.lst

相关内容