改行するすべての端末の色と線を含む最初のフルスクリーン出力のみを表示するにはどうすればよいですか? [コピー]

改行するすべての端末の色と線を含む最初のフルスクリーン出力のみを表示するにはどうすればよいですか? [コピー]

コンパイルに問題があるときに端末に多くの内容を印刷するコマンド(コンパイラ)があります。一部の行は私の端末の幅よりも長く、端末の色も使用します(エラーには赤いテキストなど)。コマンドを実行して出力の最初の画面/ページだけを表示したいのですが、改行と色を考慮したいと思います。

修正する私はcargo構文エラーがある場合に色を含む多くの出力を生成するRustコンパイラを使用しています。を使用すると、--colors=always2|&つを同時に表示できます。たとえば、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. 

このフラグは、lessANSI 色の順序が解釈され、出力が端末と同じでなければならないことを示します。

Nが端末ウィンドウの現在のサイズである最初のN行のみを取得するには、次のようにします$LINES

find ./src/ -type f -name '*.rs' | 
    entr -r bash -c 'cargo build -- color=always |& head -n $LINES

または、コマンドを起動したときのプロンプトと完了後に印刷されるプロンプトの両方が1行を占めるため、次のようになります。

find ./src/ -type f -name '*.rs' | 
    entr -r bash -c 'cargo build -- color=always |& head -n $((LINES-2))

関連情報