终端*输出*历史记录?


19

我在终端中广泛使用这些功能来浏览命令历史记录;我想知道是否还有某种方法可以浏览命令输出历史记录?(除了保持较大的直角并依靠pgup键)

我不能只是“重新运行命令”,因为在我的特定情况下,命令的来源会发生变化。我经常需要回顾一下先前更改的输出。

黑客欢迎。

谢谢!

编辑2010:

我给了“开球”功劳;在将您的会话记录到其他地方的所有方法中,它是最广泛适用的(即,它是gnu coreutils的一部分,不需要特定的shell或实用程序即可工作)。这并不是我真正想要的,但我意识到这样的事情并不存在。

我能想到的最接近的近似方法是使用类似screen(byobu / tmux)的日志文件,并编写(和键绑定)自定义命令以对该日志文件进行分页/搜索(请考虑less按提示而不是屏幕进行分页)。感谢大家。

编辑2012:

@Dustin Kirkland的答案显然是最好的,至少通常是这样。终端的回滚缓冲区是一种用于浏览命令输出历史记录的侵入性最低的方法。Byobu似乎已保存了大量默认的历史行(10K; tmux具有2K,GNU屏幕100),并且它允许进行正则表达式搜索(粗略的外观表示GNU屏幕没有回滚搜索,而tmux仅具有纯文本搜索)。

Answers:


4

您提到使用byobu ...

当然,这是一种方法。Byobu每个窗口或每个拆分(窗格)存储1万行回滚历史记录。

您可以通过按Alt- PageUpAlt- PageDown或轻松输入回滚F7。进入回滚模式后,可以使用类似vi的命令向前和向后搜索。用于/regex向前?regex搜索和向后搜索。


回滚历史记录存储在哪里,是否有办法使它们在会话之间持久存在?即:使用Byobu打开终端,运行一些命令,调用exit,关闭终端,使用Byobu打开新终端,并且仍然具有上一个会话。
Darrel Holt


8

您可以script用来将终端会话记录到文件中。如果您始终希望这种情况发生script,请在您的.login

$ man script


5

采用 screen -L

退出shell会话(exit命令)后,您将在启动的同一目录中获得一个日志文件screen

然后您可以使用more或查看输出less -R


5

screen 可以设置为日志输出。

在运行的screen会话中启动它的一种方法是按Ctrl- a,然后按:,然后输入log

来自man screen

log [on|off]

Start/stop writing output of the current window to a file "screenlog.n" in the 
window's default directory, where n is the number  of  the  current  window.
This filename can be changed with the `logfile' command. If no parameter is
given, the state of logging is toggled. The session log is appended to the
previous contents of the file if it already  exists.  The current contents and
the contents of the scrollback history are not included in the session log.
Default is `off'.

logfile filename
logfile flush secs

Defines  the  name  the  log files will get. The default is "screenlog.%n". The 
second form changes the number of seconds screen will wait before flushing the
logfile buffer to the file-system. The default value is 10 seconds.

@SQB:我扩大了答案。
暂停,直到另行通知。

3

bash确实保留了您所做操作的历史记录,但不保留命令的输出。它可能很大,并且经常没有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.