Grepのデフォルトの色オプション


11

grepは、Linuxで最も一般的に使用されるコマンドの1つです。出力行で検索した文字列を強調表示するという基本的な機能があるように感じます。これは--colorオプションで実現できます。

入力するたびに--colorは煩わしく、生産的でもありません。grepをgrep --colorとして動作するように変更する方法はありますか?

grepdという名前の小さなスクリプトを書いてみて、これをPATH変数に追加しました。しかし、スクリプトは入力grepdでは機能しません 。何か提案してください。

#!/bin/bash
grep --color $1 $2

回答:


21

単純例えば、シェルの設定ファイルに次のエイリアスを追加し.bashrcたり.bash_profile(これに応じて、あなたが使用し、ここを参照してください):

alias grep='grep --color=auto'

そのままとして使用できますgrep

単純なコマンドエイリアスで同じことがうまくいく場合、通常はスクリプトを作成する必要はありません。実際、より多くのオプションをに渡したい場合、スクリプトは機能しませんgrep。引数を処理できる小さなスニペットが必要な場合は、関数を使用する必要があります


9
または同等に、GREP_OPTIONS環境変数を設定します。export GREP_OPTIONS='--color=always'
JérômeMar

fgrepまたはegrepを使用する場合、これはカラーオプションを追加しません。これらには別のエイリアスが必要になります。また、@Jérôme:GREP_OPTIONSは、grepのマニュアルページで非推奨としてマークされています。
Thayne

@ThayneはGNU grep専用であり、FreeBSD grepのような他のものではありません。そして、私が知る限り、それが変更されてから4年が経過し、それはまだサポートされています。減価は削除を意味しません。
cde

これは私が通常行うことですが、場合によっては正しく機能しません。たとえば some_command | xargs grep foo、xargsはエイリアスを使用しないため、色付けされません。
TM。

2
#!/bin/sh
exec grep --color "$@"

これは、コマンドがシェルスクリプトで「ラップ」する標準的な方法を示しています。コマンドが希望どおりに機能しない場合です。

exec余分なプロセス(スクリプト用とgrepのための1つ)を作成回避します。必要に応じて省略できます。

"$@"スクリプトの引数の全て、いくつあるかを問わずに置き換えられます。スペースやシェルに特有のその他の文字を含む引数を正しく保持します。


「exec grep」は「exec / bin / grep」である必要があります
Berend de Boer 2015

2
@BerenddeBoerそうではありません。「exec grep」は問題なく動作します。grepのパスを検索しても問題はありません。
ケンスター2015

-1

export GREP_COLORS='AUTO'〜/ .bashrc を入れてみて ください-私にとってはうまくいきます。

から man grep

       --color[=WHEN], --colour[=WHEN]
          Surround  the  matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences
          to display them in color on the terminal.  The colors are defined by the environment variable GREP_COLORS.  The deprecated environment variable GREP_COLOR is still supported, but  its  setting
          does not have priority.  WHEN is never, always, or auto.

5
GREP_COLORS実際の色のセットです。に設定するとAUTO、色は表示されません。export GREP_OPTIONS = '-color = auto'が答えです。
user137369
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.