我有一个命令(编译器),可以在出现编译问题时向终端输出大量内容。有些行比我的终端宽还要长,并且它还使用终端颜色(红色文本表示错误等)。我想运行该命令,并且仅显示输出的第一个屏幕/页面,但考虑换行和颜色。
更新我正在使用cargo
Rust 编译器,如果存在语法错误,它将产生大量输出,包括颜色。与--colors=always
,|&
我可以同时显示两者。例如cargo build --colors=always |& head -n 20
显示前 20 行。我只想显示第一页,这样我就可以
我用来entr
自动运行find ./src/ -type f -name '*.rs' | entr -r bash -c 'cargo build -- color=always |& less -R
是行不通的,因为less
命令会吞噬一切,我无法阻止它。事实上,这隐藏了所有输出。
答案1
听起来你只是在寻找less -R
:
-R or --RAW-CONTROL-CHARS
Like -r, but only ANSI "color" escape sequences are output in
"raw" form. Unlike -r, the screen appearance is maintained cor‐
rectly in most cases.
该标志指示less
解释 ANSI 颜色序列,因此输出应该与终端上的输出相同。
如果您只想获取前 N 行,其中 N 是终端窗口的当前大小,请使用$LINES
:
find ./src/ -type f -name '*.rs' |
entr -r bash -c 'cargo build -- color=always |& head -n $LINES
或者,由于启动命令时的提示和完成后打印的提示都占用一行:
find ./src/ -type f -name '*.rs' |
entr -r bash -c 'cargo build -- color=always |& head -n $((LINES-2))