GNU grepの--color = autoオプションはどういう意味ですか?


14

AFAICTは、GNUのマニュアルページgrepでもinfo grep、意味を説明することも意図していません--color=auto

私は、このオプションの意味がすぐに明らかにならない、地球上で非常に数少ない人々の一人でなければなりません。

私はと推測--color=auto「であるSOMEWHEREで-間」--color=never--color=always、それはまだ葉が多すぎる不定。

回答:


14

ルールはと同じですlsそれを文書化し、より良い仕事をしています、man ls。引用:

ファイルの種類を区別するための色の使用は、デフォルトと
--color = neverの両方で無効になっています。--color = autoを使用すると、lsは
標準出力が端末に接続されている場合にのみカラーコードを出力します。LS_COLORS環境
変数は設定を変更できます。dircolorsコマンドを使用して設定します。

したがって、コマンドが出力を端末に送信するときにのみ色の書式設定を追加し、パイプを使用するプログラムがパイプを使用するときに色の書式設定をうまく処理できない可能性があります。


3
うん、私がこれに出くわした主な時間は、より少なく配管することでした。使用するless -R場合、一致の強調表示を取得できますが--color=always、それを機能させるにはgrep を指定する必要があります。
ホロウェイ

10

grepGNUプログラムであるため、別のオプションはソースコードを見ることができます。


内部的にgrep static int color_option01またはのいずれかをテストします2

  • 0 カラー化された出力を使用しない
  • 1 常に色を使用する
  • 2 端末への印刷時にのみ色を使用する

これ--color=autoで、CLIの引数としてgrepに引き渡すと、変数color_optionが内部的に設定され2ます。

color_option等しい場合、が端末にリンクされているか、ユーザーがを介して色付きのアウトピットを無効にしている2 grepかをさらにテストSTDOUTshell environment variablesます。前者が真であり、カラー化された出力が許可されている場合grep、どの色を使用すべきかを評価し続け、最終的に最終的にあなたのCLI色に出力します。


ソース:(grep 2.21)

grep.c line 306, 2374, 2440
colorize-posix.c line 36
man isatty 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.