回答:
ルールはと同じですls
それを文書化し、より良い仕事をしています、man ls
。引用:
ファイルの種類を区別するための色の使用は、デフォルトと
--color = neverの両方で無効になっています。--color = autoを使用すると、lsは
標準出力が端末に接続されている場合にのみカラーコードを出力します。LS_COLORS環境
変数は設定を変更できます。dircolorsコマンドを使用して設定します。
したがって、コマンドが出力を端末に送信するときにのみ色の書式設定を追加し、パイプを使用するプログラムがパイプを使用するときに色の書式設定をうまく処理できない可能性があります。
grep
GNUプログラムであるため、別のオプションはソースコードを見ることができます。
内部的にgrep static int color_option
は0
、1
またはのいずれかをテストします2
。
0
カラー化された出力を使用しない1
常に色を使用する2
端末への印刷時にのみ色を使用するこれ--color=auto
で、CLIの引数としてgrepに引き渡すと、変数color_option
が内部的に設定され2
ます。
color_option
等しい場合、が端末にリンクされているか、ユーザーがを介して色付きのアウトピットを無効にしている2
grep
かをさらにテストSTDOUT
しshell environment variables
ます。前者が真であり、カラー化された出力が許可されている場合grep
、どの色を使用すべきかを評価し続け、最終的に最終的にあなたのCLI
色に出力します。
ソース:(grep 2.21)
grep.c line 306, 2374, 2440
colorize-posix.c line 36
man isatty
less -R
場合、一致の強調表示を取得できますが--color=always
、それを機能させるにはgrep を指定する必要があります。