GNU/Linux >> Linux の 問題 >  >> Linux

Grep –colorのデフォルトは=autoまたは=alwaysですか?

grep --colorのデフォルトの色の動作は何ですか いいえの場合[=WHEN ]が指定されていますか?

grepのマニュアルページには次のように記載されています:

-color [=いつ ]、-色 [=いつ ]

    一致した(空でない)文字列、一致する行、コンテキスト行、
    ファイル名、行番号、バイトオフセット、および区切り文字(フィールドおよび
    コンテキスト行のグループの場合)をエスケープシーケンスで囲みますそれらを端末にカラーで表示するには


    いつ 決してではありません 常に 、または auto

デフォルトの[=WHEN ] grep --colorの場合 なる:

grep --color=auto

または

grep --color=always

それとも、実装とプラットフォームに依存しますか?

GNU grep2.16を使用したUbuntu14.04でのテストでは:

echo "foo bar" | grep --color foo

結果はfoo バー 、ながら

echo "foo bar" | grep --color foo | grep --color bar

結果はfoo バー 、したがって、 grep --color =auto のように見えます ここで有効です。ただし、これはWindowsまたはMacではテストしていません。この振る舞いが普遍的かどうかはわかりません。

[ =WHENのこのデフォルト ]はls--colorとは少し異なります lsのマニュアルページ 状態:

-color [=いつ ]

    出力を色付けします。
    いつ デフォルトは常にです または、決してにすることはできません またはauto

ここで、行方不明の WHENの動作 明示的です。

承認された回答:

デフォルトはauto

grep --color -color =autoを書くのと同じです 。

これは十分に文書化されていないようです、または彼らは単純な<​​code>-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


Linux
  1. 何をしますか?

  2. 「#」または「;」で始まらない行をgrepする方法は?

  3. Grep -v予期しない動作?

  1. 環境変数のデフォルトという用語はどこで設定されますか?

  2. 次の行に文字列が含まれていないGrep文字列?

  3. ファイルがまだ存在しない場合にのみファイルに行を追加する

  1. 「lc_all=c」は何をしますか?

  2. GRUB2でデフォルトの保存作業を行う...?

  3. Linux カーネル 3.x は CFS プロセス スケジューラを使用しますか?