【问题标题】:Redirect output of command to file and stdout [Only once, not at each command]将命令的输出重定向到文件和标准输出 [仅一次,而不是每个命令]
【发布时间】:2016-04-21 08:37:24
【问题描述】:

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

此链接给出单个命令的输出: 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 历史记录不存储命令?
  • 另外你链接的问题只保存输出而不是已经输入的命令
  • @123 也许 OP 正在考虑本地 .bash_history 而不是远程?
  • 我很抱歉 .bash_history 将命令存储在退出时,这就是我无法在 .bash_history 中找到的原因。我会更新这个问题。无论如何我可以得到执行命令的输出吗?

标签: linux bash io stdout


【解决方案1】:

你可以使用

$ bash | tee log

开始记录,然后

$ ^D

(那是 Ctrl-D)

停止记录。

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

但不幸的是,bash 似乎不会将其提示符和命令写入 stderr,因此您只会捕获命令输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多