我经常通过管道命令来less
读取输出(例如编译器错误)。
MyCommand | less
Run Code Online (Sandbox Code Playgroud)
这很棒,因为它可以轻松浏览大量输出,但是当我退出时less
,输出就消失了。退出后如何使输出仍然可见?
这个问题不同于Is there a way to redirect a program's output and still have it go to stdout? 因为这个问题与通过 输出到文本文件有关tee
,据我所知,它不提供在less
和之间拆分输出的工具stdout
。
Mic*_*mer 14
使用less -X
:
禁止将 termcap 初始化和取消初始化字符串发送到终端。
这将在分页前后留下屏幕上的任何文本。所以:
command | less -X
Run Code Online (Sandbox Code Playgroud)
会有你想要的效果。请注意,如果您向上滚动,此输出仍然是错误的(重复的行) - 如果不写入文件,这是不可避免的。
您还可以将环境变量设置LESS
为一个值,该值包含X
默认情况下每次调用less
.
如果您想写入文件而不求助于tee
,您可以使用less -o filename
或--log-file=filename
选项。
您可以使用:
command | tee filename.out | less
Run Code Online (Sandbox Code Playgroud)
如果在运行 less 命令后仍然需要查看输出,然后通过编辑器检查 filename.out。
另一个想法是更改您的术语设置以使用哑终端类型。你必须用这个来试验。