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

Redirect output of command to file and stdout [Only once, not at each command]

我想将我执行的所有命令和输出(stdout、stderr)的快照保存在一个文件中,以便稍后查看。我经常需要查看它以进行调试。

此 link 给出单个命令的输出: How to redirect output to a file and stdout

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

示例功能:

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

logger.txt

的内容
bash> echo "Hi"
Hi
bash> cat 1.txt
Contents of 1.txt

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

你可以使用

$ bash | tee log

开始记录,然后

$ ^D

(即 Ctrl-D)

停止记录。

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

但不幸的是,bash 似乎没有将其提示和命令写入标准错误,因此您只能捕获命令输出。