私はgrepの--colourオプションをよく使いますが、あまり使わないこともよくあります。どうやってgrepの結果を少なくしても色付けを維持することができますか。 (またはそれは可能ですか?)
grep "search-string" -R * --colour | less
EDIT:
私は直接的な解決策またはこれと同等のものを探しています。
単にgrep --color
を実行すると、出力が端末であるかどうかを検出し、そうであれば色を有効にするgrep --color=auto
を意味します。ただし、パイプを検出すると色付けは無効になります。次のコマンド
grep --color=always -R "search string" * | less
常に色付けを有効にして自動検出を無効にすると、色の強調表示がless
になります。
編集:ちょうどless
を使うのは私にはうまくいきますが、おそらく古いバージョンでは色を扱うために-R
フラグが必要です。
これを.bashrc
ファイルに入れることができます。
export GREP_OPTIONS="--color=always"
または、このようなエイリアスを作成してください。
alias grepc="grep --color=always"
そしてここで指摘されているように、あなたはless
に対して-R
オプションを使う必要があるでしょう。
このような場合、私は実際に小さなshファイルを作成して/usr/local/bin
に置くことを好みます。
私は通常grep
に再帰的にpwd
を使うので、私の個人用スクリプトはこうなります:
#!/bin/sh
grep --color=always -r "$@" . | less -R
そしてそれを/usr/local/bin/g
としてコピーしただけです(はい、私はそれをたくさん使います)
"grep"にエイリアスを付けないでください。シェルでは使用されない "less"のエイリアスにしてください。あなたの.bashrc
にalias less="less -r"
を入れるだけです。
走る必要がある
grep --color=always -R "search string" * | less - r
これを実行するためには、 - rフラグの後にlessを付けます。