head、tail、less などに渡されるテキストに色を付けたままにする方法はありますか?

head、tail、less などに渡されるテキストに色を付けたままにする方法はありますか?

パイプを介して、、など|に渡されるテキストの色付けを維持する方法はありますか?headtailless

答え1

からパイプしてls、ターミナルのカラー コードを保持したいと想定します。ls --color=alwaysのデフォルトの代わりに と指定する--color=autoと、コードが保持されますが、パイプ先がそれらのコードを理解できるかどうかは保証されません。

glarkの代わりにを使用すると、grep色付きで表示しようとします。

lessを使用すると、-R色付きで表示しようとします。

答え2

パイプ内の出力を生成するプログラムによって異なります。

head、、tailなどは色を削除するものではなく、出力がコンソール(色付き)、ファイルまたはパイプ(色なし)のどちらに送信されるかを確認するデータを生成するプログラムです。

私は見つけたもう一つのSU Q&Aパイププログラムに、コンソールに出力を送信しているかのように出力させる方法を示します( でコンソールをエミュレートしますunbuffer

答え3

Mac OS X では環境変数man lsについて言及していますCLICOLOR_FORCE

またはexport CLICOLOR_FORCE=1を追加すると、使用するシェルに応じて、、、などの他のコマンドにパイプするときに色が保持されます。~/.zshrc~/.bashrclslessheadtail

答え4

考慮する

bat

代替案

cat

インストール

brew install bat

--args --flags のような

--languageそして--theme

head | bat --language=zsh -n -p --theme=gruvbox-dark
file.py | bat --language=py -n -p --theme=gruvbox-dark

関連情報