5

私の場合、オプションがサポートされている場合は、 .bashrcgrepのエイリアスを作成します。ただし、msysgitなどの古いシステムではサポートされていません。grep --color --color--color

$ grep --color
grep: unrecognized option '--color'
$ grep --version
grep (GNU grep) 2.4.2

.bashrcで、オプションがサポートされているかどうかを確認するにはどうすればよいですか?ハードコードされたバージョン番号をテストできますが、バージョンが2.5を超えると機能しなくなります。

if [[ `grep --version` == *2.5* ]] ; then
    alias grep='grep --color=auto'
fi

コマンドがオプションをサポートしているかどうかをテストするためのより信頼性の高い方法はありますか?

4

2 に答える 2

9

成功することがわかっているgrepコマンドを実行し、カラーオプションを追加します。

grep --color "a" <<< "a"

オプションが存在する場合、戻りコードは0になり、存在しない場合は正になります。

したがって、bashrcは次のようになります。

if grep --color "a" <<<"a" &>/dev/null; then
    alias grep='grep --color=auto'
fi

&>stdoutstderrを/dev/ nullに送信するため、コマンドが失敗した場合、コマンドは無音になります。ただし、それでもエラーコードが返されるため、エイリアスを設定できません。

于 2013-01-11T15:37:37.253 に答える
0
`
echo s > dummy ;
grep --color s dummy ;
if [[ $? == 2 ]]; then
    echo not supported
fi
`
于 2013-01-11T15:42:25.243 に答える