Tom*_*Tom 3 command-line terminal pipe history
我刚刚运行了一项需要几个小时的工作,但我忘记将该文本通过管道传输到文本文件中。
伪代码:
echo [previous text output] > OutputHistory.txt
Run Code Online (Sandbox Code Playgroud)
此外,我不能只是“复制和粘贴”我的终端中的内容,因为 1) 显示省略了重要的格式化字符,例如“\t”,并且 2,我可能已经关闭了终端窗口。
任何Unix命令都可以做到这一点吗?
这在一般情况下是不可能的。一旦应用程序发出了一些输出,该输出的唯一存储位置就是终端的内存中。举一个极端的例子,如果这是 1970 年代的终端是硬拷贝打印机,如果没有人输入,输出就不会返回到计算机中。
如果输出仍在终端仿真器的滚动缓冲区中,您也许可以将其取回,但如何执行取决于终端,没有标准方法。此时制表符可能已转换为空格,也可能未转换为空格。是否可以检索格式信息(颜色、粗体等)以及采用何种格式取决于终端。对于大多数终端,没有简单或万无一失的方法来找到命令输出的开始和结束位置。
如果您提前计划,您可以使用 透明地记录命令的输出script。运行script mycommand.log mycommand可能与mycommand 2>&1 | tee mycommand.log因为 with不同script,命令仍在写入终端。
妥协是始终在screen或 中运行长期存在的命令tmux。两者都有一种将回滚缓冲区转储到文件的方法,而且它们还有一个额外的好处,即您可以断开与会话的连接,而不会中断程序的执行并在之后重新连接。
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |