将命令输出重定向到文件和标准输出[仅一次,而不是在每个命令]

时间:2016-04-21 08:37:25

标签: linux bash io stdout

我希望获得我执行的所有命令的快照,并在文件中输出(stdout,stderr)以便稍后查看。我经常需要查看它以进行调试。

此链接提供单个命令的输出: How to redirect output to a file and stdout

但是,我不想为每个命令编写它,因为它很耗时。此外,这不会记录我执行的命令。

示例功能:

bash> start-logging tmp.txt
bash> echo "Hi"
Hi
bash> cat 1.txt
Contents of 1.txt
bash> stop-logging



   Contents of tmp.txt
bash> echo "Hi"
Hi
bash> cat 1.txt
Contents of 1.txt

理想情况下,我想要上述行为。 任何其他具有一些功能缺失的命令(可能缺少从tmp.txt执行的命令)也会有所帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用

$ bash | tee log

开始记录然后

$ ^D

(即#Ctrl-D)

停止记录。

创建一个新的bash会话,该会话将记录,然后在不需要时终止它。

但不幸的是,bash似乎没有将它的提示和命令写入stderr,所以你只能捕获命令输出。