如何仅显示第一个全屏输出,包括所有终端颜色和将换行的行?

如何仅显示第一个全屏输出,包括所有终端颜色和将换行的行?

我有一个命令(编译器),可以在出现编译问题时向终端输出大量内容。有些行比我的终端宽还要长,并且它还使用终端颜色(红色文本表示错误等)。我想运行该命令,并且仅显示输出的第一个屏幕/页面,但考虑换行和颜色。

更新我正在使用cargoRust 编译器,如果存在语法错误,它将产生大量输出,包括颜色。与--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))

相关内容