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

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

AFAICT、GNUのマニュアルページはすべて、それが意味するものをgrep指定していません。info grep--color=auto

私はこの選択の意味がすぐにはっきりしない地球上で数少ない人の一人であることに違いありません。

私は「そう--color=autoです。どこかに間」--color=neverと間に--color=alwaysあるがまだ指定されていない部分が多すぎます。

答え1

ルールは と同じなので、lsに文書化することをお勧めしますman ls。引用:


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

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

答え2

これはGNUプログラムなので、grepソースコードを見ることは別のオプションかもしれません。


grep内部テストstatic int color_optionまたは。012

  • 0カラー出力を使用しないでください。
  • 1常に色を使う
  • 2端末で印刷するときは色のみを使用してください。

CLIでgrepをパラメータとして指定すると、--color=auto内部的に変数がにcolor_option設定されます2

color_option同じ場合は、カラー出力を無効にして、端末またはユーザーへのリンクが2 grepあるかどうかをさらにテストしてください。前の項目が真でカラー出力が許可されている場合は、引き続き使用する色を評価し、最後に色を印刷します。 STDOUTshell environment variablesgrepCLI


ソース: (grep 2.21)

grep.c line 306, 2374, 2440
colorize-posix.c line 36
man isatty 

関連情報