[= WHEN]が指定されていない場合のgrep --color
のデフォルトの色の動作は何ですか?
Grep man page の状態:
--color
[= [〜#〜] when [〜#〜]]、--colour
[= [〜#〜] when [〜#〜]]一致した(空ではない)文字列、一致する行、コンテキスト行、ファイル名、行番号、バイトオフセット、およびセパレーター(フィールドとコンテキスト行のグループ用)をエスケープシーケンスで囲み、それらを端末で色で表示します。 ... [〜#〜] when [〜#〜] is
never
、always
、またはauto
。
grep --color
のデフォルト[= WHEN]は次のようになりますか?
grep --color=auto
または
grep --color=always
それとも実装とプラットフォームに依存しますか?
GNU grep 2.16を使用したUbuntu 14.04での私のテストでは:
echo "foo bar" | \grep --color foo
結果はfoo
bar
になりますが、
echo "foo bar" | \grep --color foo | \grep --color bar
結果はfoo
bar
になるため、ここではgrep --color=auto
が有効になっているようです。ただし、これはWindowsまたはMacではテストしていません。この動作が普遍的であるかどうかはわかりません。
この[= WHEN]のデフォルトはls --color
とは少し異なります。ここで、ls
のマニュアルページには次のように記載されています。
--color
[= [〜#〜] when [〜#〜]]出力に色を付けます。 [〜#〜] when [〜#〜]デフォルトは
always
になるか、またはnever
またはauto
。
ここでは、欠落している[〜#〜] when [〜#〜]の動作が明示的です。
デフォルトはauto
です。
grep --color
は、--color=auto
と同じです。
これは不十分に文書化されているようです、または単純な--color
は推奨されていませんが、テストと そのソースコード の両方から確認できます:
case COLOR_OPTION:
if (optarg)
{
if (!strcasecmp (optarg, "always") || !strcasecmp (optarg, "yes")
|| !strcasecmp (optarg, "force"))
color_option = 1;
else if (!strcasecmp (optarg, "never") || !strcasecmp (optarg, "no")
|| !strcasecmp (optarg, "none"))
color_option = 0;
else if (!strcasecmp (optarg, "auto") || !strcasecmp (optarg, "tty")
|| !strcasecmp (optarg, "if-tty"))
color_option = 2;
else
show_help = 1;
}
else
color_option = 2;
break;
optarg
がないと、auto
またはtty
と同じになることに注意してください。