パイプを介して、、など|
に渡されるテキストの色付けを維持する方法はありますか?head
tail
less
答え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
~/.bashrc
ls
less
head
tail
答え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