GNU/Linux >> Belajar Linux >  >> Linux

Apakah Grep –color Default To =auto Atau =always?

Apa perilaku warna default untuk grep --color jika tidak [=KAPAN ] ditentukan?

Halaman manual grep menyatakan:

--color [=KAPAN ], --color [=KAPAN ]

    Mengelilingi string yang cocok (tidak kosong), baris yang cocok, baris konteks,
    nama file, nomor baris, offset byte, dan pemisah (untuk bidang dan
    grup baris konteks) dengan urutan escape untuk menampilkannya dalam warna
    di terminal.
    … 
    KAPAN adalah never , always , atau auto .

Apakah default [=KAPAN ] untuk grep --color menjadi:

grep --color=auto

atau

grep --color=always

atau apakah itu tergantung pada implementasi dan platform?

Dalam pengujian saya di Ubuntu 14.04 dengan GNU grep 2.16:

echo "foo bar" | grep --color foo

menghasilkan foo bar , sedangkan

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

menghasilkan foo bar , sehingga tampaknya grep --color=auto berlaku di sini. Saya belum menguji ini pada Windows atau Mac, namun; Saya tidak tahu apakah perilaku ini bersifat universal.

Default ini untuk [=WHEN ] sedikit berbeda dari ls --color di mana halaman manual untuk ls menyatakan:

--color [=KAPAN ]

    mewarnai output.
    KAPAN default ke always atau bisa menjadi never atau auto .

Di sini, perilaku KAPAN missing yang hilang eksplisit.

Jawaban yang Diterima:

Defaultnya adalah auto .

grep --color sama dengan menulis --color=auto .

Ini tampaknya kurang didokumentasikan, atau mereka menganggap --color simple yang sederhana usang, tetapi itu dapat dilihat dari pengujian dan dari kode sumbernya:

  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;

Perhatikan bahwa tidak adanya optarg hasilnya sama dengan yang sama dengan auto atau tty .


Linux
  1. Apa?

  2. Bagaimana Cara Grep Garis Yang Tidak Dimulai Dengan "#" Atau ";"?

  3. Grep -v Perilaku Tak Terduga?

  1. Di mana Default Variabel Lingkungan Istilah Ditetapkan?

  2. Apa yang Digema $? Mengerjakan??

  3. Potong / Grep Dan Df -h?

  1. Mengapa Menambahkan Titik Dua Mematahkan Pola Grep Ini?

  2. Grep Dan Ekor -f?

  3. Grep String Dimana Baris Berikutnya Tidak Mengandung String?