設定に触れていますが、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
- 最初のgrepは端末に色で出力されます(各「o」は赤です)。
- 2番目のgrepはより少ない色で出力されます(1と同じ)。
- ただし、3番目のgrepは出力が少ないが白黒ですが、色でなければなりません。
だからgrepがそれを無視しているようですGREP_OPTIONS
。これはバグですか、それとも私が間違っているのですか?
(Ubuntu 12.04.2、GNU grep 2.10)
答え1
grep o
カラー出力が生成される場合、これはまたはのエイリアスであるgrep
か(またはより多くのオプションがある可能性があります)、またはを含む値に設定されます。空なので、別名でなければなりません。grep --color=auto
grep --color=always
GREP_OPTIONS
--color=auto
--color=always
$GREP_OPTIONS
色が表示されないため、エイリアスはto(合理的な選択)でgrep o | less -R
なければなりません。grep --color=auto
エイリアスを使用すると、grep
コマンドは常に--color
コマンドラインからオプションを受け取り、そのオプションは環境変数よりも優先されます。
環境変数を使用するには、~/.bashrc
またはセッションの実行からエイリアス定義を削除しますunalias grep
。alias grep='grep --color=auto'
次に変更できますexport GREP_OPTIONS='--color=auto'
。以下を除いて、本質的に同じ意味を持ちます。
- 別の値に設定すると、
GREP_OPTIONS
後者のみが無視されます。 grep
このエイリアスは対話型シェルで実行している場合にのみ適用されますが、設定はスクリプトや他のアプリケーションで実行している場合にも適用されますGREP_OPTIONS
。grep
--color=always
他のオプションを入れないでくださいGREP_OPTIONS
。多くの解析が中断される可能性がある唯一の安全なオプションですgrep
。他のすべてにエイリアスを使用してください。このため、GNU grepの将来のバージョンではこのオプションはサポートされなくなります。--color=auto
GREP_OPTIONS
エイリアス定義~/.bashrc
(シェル設定)が入り、環境変数定義~/.profile
(セッション設定)が入ります。バラよりすべてのシェルが読める「.bashrc」に対応するファイルはありますか?
エイリアスなしでコマンドを一度だけ実行したい場合は、\grep
代わりに実行してくださいgrep
。名前の一部を引用すると、エイリアス照会は無視されます。