GREP_OPTIONS = --color =は常に無視されますか?


8

私は設定で遊んでGREP_OPTIONSいて、それを機能させることができませんでした。その理由について知りたいだけです。

簡単なテストコマンドの出力:

richard@ubuntu:~$ echo $GREP_OPTIONS

richard@ubuntu:~$ 

richard@ubuntu:~$ ls | grep o 
Desktop
downloads
Dropbox
ebooks
workspace

richard@ubuntu:~$ ls | grep o --color=always | less -R 

richard@ubuntu:~$ export GREP_OPTIONS="--color=always" 
richard@ubuntu:~$ ls | grep o  | less -R 
  1. 最初のgrepはカラーで端末に出力されます(各 'o'は赤です)。
  2. 2番目のgrepは色の少ない(1と同じ)出力
  3. しかし、3番目のgrepは出力を少なくし、白黒で出力しますが、これはカラーで表示されます。

したがって、grepは無視しているようGREP_OPTIONSです。それはバグですか、それとも何か問題がありますか?

(Ubuntu 12.04.2、GNU grep 2.10)


grep v3.1大声で文句を言うGREP_OPTIONSすべての呼び出しに:grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
トム・ヘイル

使用:alias grep='GREP_COLOR="1;33;40" LANG=C grep --color=auto'黄色で強調表示します。
トム・ヘイル

回答:


11

場合grep oカラー出力を生成し、その後、いずれかgrepの別名であるgrep --color=autoか、grep --color=always(又はおそらくより多くのオプション)、又はGREP_OPTIONS含む値に設定されています--color=autoか、--color=always$GREP_OPTIONSは空なので、エイリアスである必要があります。

grep o | less -Rは色を表示しないので、エイリアスはto grep --color=auto(賢明な選択)でなければなりません。エイリアスを使用すると、grepコマンドは常に--colorコマンドラインでオプションを受け取り、これは環境変数よりも優先されます。

環境変数を使用する場合は、エイリアス定義をから削除する~/.bashrcか、1回のセッション実行で使用しunalias grepます。あなたは置き換えることができますalias grep='grep --color=auto'によってexport GREP_OPTIONS='--color=auto':彼らはそれを除いて、基本的に同じ意味を持ちます。

  • GREP_OPTIONS別の値に設定すると、後者のみがオーバーライドされます。
  • エイリアスgrepはインタラクティブシェルから実行した場合にのみ有効になりますが、設定がスクリプトや他のアプリケーションから実行GREP_OPTIONSされた場合にも適用されgrepます。

--color=alwaysまたは他のほとんどのオプションを決して入れないでくださいGREP_OPTIONS:の出力を解析する多くのプログラムを壊しgrepます。--color=autoは、に入れる唯一の安全なオプションGREP_OPTIONSです。それ以外の場合は、エイリアスを使用します。このため、GNU grepの将来のバージョンでは、このオプションのサポートが終了します。

エイリアス定義は~/.bashrc(シェル設定です)、環境変数定義は~/.profile(セッション設定です)に入ることに注意してください。すべてのシェルによって読み取られる「.bashrc」に相当するファイルはありますか?を参照してください

エイリアス化されていないコマンドを1回だけ実行する場合は、\grep代わりに実行grepします(名前の一部を引用するとエイリアスの検索がバイパスされます)。


はい、そうです。\ grepを実行すると、正しく表示されます。.bashrcで "= always"を使用しないようアドバイスするボーナスヒントをありがとう。+1
リチャード

1
バリアントのGREP_OPTIONSために非推奨となっていることに注意してくださいalias
すべての労働者は必須である
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.