有一堆的shell命令会抛弃旧的输出。 我见过的一对是“鼻子”和哈德森。 我的意思是,当程序运行时,它会在shell中产生大量的文本输出,但是当你向上滚动时,你不能看到旧的输出,只能看到在你input原始命令之前使用的命令。
这让我疯狂,因为重要的信息正在被吞噬。 我如何让这些程序停止这样做?
这种事情通常是一个程序的结果,它直接操纵terminal,并将光标自行移动。 例如,这就是像vi这样的编辑器 – 如果在vi会话之后尝试向外滚动shell,则只能看到vi输出的最后一页中的文本,而不是其他页面中的文本。
处理这个问题的方法:
ctrl-A H )的工具。 然后您可以稍后查看日志。 这可能会显示更有用的信息。 command | tee output.txt command | tee output.txt 对于最后一个,你可以尝试一些事情。 首先,看看命令的参数,看看是否有什么东西或者什么都不在谈论dumb terminals 。
你也可以尝试迫使程序认为它是在这样一个愚蠢的terminal:
TERM=dumb command
(假设bash shell),这可能会使程序认为它运行在一个哑terminal,并导致它切换回直接的文本输出。
您也可以尝试为程序提供一些input,并可能触发简单的文本输出模式:
echo blarg | command
或者可能
echo blargh | command -
如果程序需要-作为从stdin读取的指示。
无论如何,试验这些想法,你应该find一些方法来从你正在使用的工具获得直接的文本输出。
为我工作的方法是这样做的:
my_command my_args >log 2>&1
其中将所有输出存储在称为log的文件中。
然后,在一个单独的shell窗口中,我这样做:
tail -f log
其中显示日志文件为my_command正在写入。