コンパイルに問題があるときに端末に多くの内容を印刷するコマンド(コンパイラ)があります。一部の行は私の端末の幅よりも長く、端末の色も使用します(エラーには赤いテキストなど)。コマンドを実行して出力の最初の画面/ページだけを表示したいのですが、改行と色を考慮したいと思います。
修正する私はcargo
構文エラーがある場合に色を含む多くの出力を生成するRustコンパイラを使用しています。を使用すると、--colors=always
2|&
つを同時に表示できます。たとえば、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
または、コマンドを起動したときのプロンプトと完了後に印刷されるプロンプトの両方が1行を占めるため、次のようになります。
find ./src/ -type f -name '*.rs' |
entr -r bash -c 'cargo build -- color=always |& head -n $((LINES-2))