我正在尝试make
我目录中的一堆文件,但这些文件产生了大约200行错误,所以它们飞过我的终端屏幕太快了,我必须向上滚动才能阅读它们。
我想将屏幕上显示的输出传输到寻呼机,让我从头开始读取错误。但是当我尝试
时make | less
less
不显示输出的开头 - 它显示通常用管道输出到屏幕的输出结束,然后告诉我输出为1行长。当我尝试键入Gg
时,屏幕上唯一的一行是执行的makefile行,常规屏幕输出消失。
我是否错误地使用less
?我以前从未使用过它,而且我遇到类似sh myscript.sh | less
之类的问题,它不会立即显示输出文件的开头。
答案 0 :(得分:15)
来自make
的错误出现在标准错误流(C中的stderr
)上,而不是由普通管道重定向。如果您想将其重定向到less
,则需要make |& less
(csh等)或make 2>&1 | less
(sh,bash等)。
答案 1 :(得分:10)
错误输出被发送到一个稍微不同的地方,这个地方没有被正常的管道捕获,因为你经常想看到错误,但没有将它们与你将要进一步处理的数据混合在一起。对于这样的事情,你使用重定向:
$ make 2>&1 | less
在bash
和zsh
(和csh
/ tcsh
,这是他们借来的地方),这可以缩短为
$ make |& less
像make
这样容易产生大量错误的东西我想稍后检查,我通常会将输出捕获到一个文件,然后再less
该文件:
$ make |& tee make.log
$ less make.log