bash shell 输出历史文件位置

bash shell 输出历史文件位置

bash shell 将实际的终端会话存储在哪里?我想读取之前使用过的命令的输出。我在谷歌上搜索到的都是如何存储命令的输出。

由于输出显示在屏幕上,因此无论如何都必须存储在某个地方。所以我的问题是:在哪里?

答案1

Bash 仅存储你运行的命令的历史记录(你可以通过输入history)。除非你已经设置回滚设置为非常高的数字,则无法查看早于回滚设置值的输出。此外,将此值设置为非常高的数字会使滚动变得缓慢,因为行存储在内存中

要存储您将来的命令及其输出,有以下几种选择:

使用screen

开始一个屏幕输入 来启动会话screen。进入屏幕后,按Ctrl- a,然后:,然后输入log。所有 I/O 都将捕获到screenlog启动命令的目录中的文件中screen

使用script

您可以先输入script. A脚本会话将启动,将所有 I/O 捕获到名为 的文件中typescript。您可以script通过Ctrl-退出会话d 并查看文件中的日志typescript

使用tee

球座是一个方便的工具。你可以这样做:

$ bash | tee log.txt

这将在您已运行的 bash shell 中打开一个新的 bash shell。退出后exit,您可以在名为log.txt

其他方法

正如达斯汀·柯克兰 (Dustin Kirkland) 所建议的那样发布,您还可以使用屏风。虽然我从来没有使用过终端屏幕录制工具,例如舍尔听起来也是一种选择。

答案2

有很多问题与此相关,但它们都从输出未记录的(正确)假设开始。

所以我的问题是:在哪里?

无处:Bash(以及我所知道的任何其他 shell)的输出均未记录。

由于输出显示在屏幕上,所以无论如何它都必须存储在某个地方。

是的,但很可能不是纯文本,甚至不在磁盘上(尽管这确实取决于终端仿真器):最有可能的是,至少在大多数情况下,在终端仿真器分配的内存段中。

但可以肯定的是,它没有被记录到文件中,至少没有被 shell 记录到文件中,而且我不知道哪些终端仿真器默认将输出记录到文件中。

事实上,这并不意味着不可能记录终端输出:首先我要提到一些我认为很多人都不知道的事情,因为我从未看到有人至少在 Ask Ubuntu 上提到过这一点:Konsole 允许将回滚保存到文件中(也许还有其他终端仿真器提供这样的功能,Konsole 只是我所知道的唯一一个),尽管这受到 Konsole 的回滚大小限制。

但这通常没有什么用,而且很可能您需要研究“适当的”解决方案来将整个会话的输出记录到文件中(如何记录终端会话中的所有输入和输出?罗恩的回答)。

答案3

有一个名为脚本的命令,如果尚未安装,那么apt-get install script就会执行它。

然后在终端中输入脚本。

然后做任何你想做的事,完成后只需输入 exit,然后将在你当前目录中创建一个包含所有 stdout 和 stdin 信息的文件。

希望它能帮助你。

答案4

终端会话存储在.bash_history文件中。在终端中输入此文件echo $HISTFILE,这将为您提供文件路径.bash_history

相关内容