sti*_*ate 3 linux command-line less terminal
我想从顶部查看命令的输出并防止终端跳下来,我想要一个独立于终端的方式。因此无需更改终端的特定配置。我尝试使用这样的less命令:
command | less
Run Code Online (Sandbox Code Playgroud)
但是在我使用的命令上,寻呼机在命令输出完成后退出。
如何获得命令输出实时流入寻呼机的行为,但我可以从上到下查看它?
默认情况下,less 不会自动退出,只有在您使用退出命令 ( q) 时。
如果您less使用 option调用-E,它会在到达文件末尾时退出。使用选项-e,当您尝试移过文件末尾时(例如通过重复滚动),它会退出。使用选项-F,如果文件完全显示在一个屏幕上,则 less 会立即退出。默认情况下,这些选项均未启用,但有几种方法可以将它们设为系统上的默认值:
less可能是带有选项的 shell 别名。与alias less.LESS在启动时从环境变量中读取选项。与echo $LESS..less在您的主目录中;这可以通过设置环境变量来改变LESSKEY。文件格式是二进制的,但如果以这种方式设置选项,则字符串LESS和选项都将出现在文件中。LESS_IS_MORE设置了环境变量,则 less 的行为与旧实用程序类似more,包括默认情况下在文件末尾退出。当您将命令的输入通过管道传输到 less ( mycommand | less) 时,less 会一直读取直到命令完成。您可以使用 减少中断Ctrl+C,但是您将无法从命令中读取任何进一步的输出,并且该命令可能会因管道损坏而终止。这是因为当它停止读取时 less 关闭管道。
对此的解决方法是将命令输出到文件并在该文件上调用 less。当从文件中读取较少时,您可以键入F然后Ctrl+C使其从文件中读取更多数据,然后继续浏览。
mycommand >log 2>&1 &
less log
Run Code Online (Sandbox Code Playgroud)
程序的行为可能略有不同,具体取决于它们的输出是终端、管道还是文件。如果您发现当输出是文件或管道而不是终端时输出延迟,那是由于输出缓冲。请参阅关闭管道中的缓冲
该script实用程序在虚拟终端中运行程序并将整个输出记录到文件中。就程序而言,它将输出写入终端。例如,程序可以使用颜色转义序列。将-R选项传递给 less 使其将终端转义序列传递给终端,而不是以转义形式显示控制字符。
script -c 'mycommand --option || echo "mycommand failed with status $?"' mycommand.log </dev/null >/dev/null &
less -R mycommand.log
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |