colors – grep から less へのパイプを使用する際に色付きの結果を得る

colors grep less pipe

私は grep の –colour オプションをよく使いますが、 less もよく使います。どうすれば、grep の結果を less にパイプしてカラーリングを維持することができますか?(あるいはそれは可能でしょうか?)

grep "search-string" -R * --colour | less

EDIT:

直接的な解決策かそれに準ずるものを探しています

  258  Jeremy Powell  2009-09-04


ベストアンサー

単に grep --color を実行すると、出力が端末かどうかを検出し、端末であれば色付けを有効にする grep --color=auto を暗示します。しかし、パイプを検出した場合は、色付けを無効にします。以下のコマンドを実行します

grep --color=always -R "search string" * | less

常にカラーリングを有効にして自動検出を上書きし、lessでカラーハイライトを取得します

EDIT: lessだけでも動作しますが、おそらく古いバージョンでは-Rフラグを使って色を処理する必要があります

291  drrlvn  2009-09-04


これを.bashrcファイルに入れます

export GREP_OPTIONS="--color=always"

またはこのようなエイリアスを作成します

alias grepc="grep --color=always"

で、 therefromhere さんが指摘されているように -R オプションを less に使う必要があります

29  Paused until further notice.  2009-09-05


このような場合、私は実際に小さなshファイルを作成して、それを/usr/local/binに置くことを好みます。 私は通常、greppwdの上で再帰的に使うので、これは私の個人的なスクリプトです

#!/bin/sh
grep --color=always -r "$@" . | less -R

で、それを/usr/local/bin/gとしてコピーしただけです(はい、よく使います)

9  Iazel  2013-09-30


grep “をエイリアスにしないで、シェルでは絶対に使わない “less “をエイリアスにした方がいいです。.bashrc には alias less="less -r" と書いてください

1  not2qubit  2013-01-20


走らないといけない

grep --color=always -R "search string" * | less - r

を実行するためには、-r フラグの後に -r フラグを付けてください

0  Pierre François  2018-01-18


タイトルとURLをコピーしました