AFAICT, ani strona podręcznika dla GNU grep
, ani też nie info grep
raczy przeliterować, co --color=auto
to znaczy.
Muszę być jedną z niewielu osób na planecie, dla których znaczenie tej opcji nie jest od razu oczywiste.
Podejrzewam, że --color=auto
„jest GDZIEŚ pomiędzy” --color=never
i --color=always
, ale wciąż pozostawia to zbyt wiele nieokreślonych.
less -R
, możesz uzyskać podświetlanie dopasowania, ale musisz określić--color=always
grep, aby działało.Ponieważ
grep
jest to program GNU, inną opcją może być sprawdzenie kodu źródłowego.Wewnętrznie grep testuje
static int color_option
na albo0
,1
albo2
.0
nigdy nie używaj kolorowych wyników1
zawsze używaj kolorów2
używaj kolorów tylko podczas drukowania na terminaluTeraz, gdy przekazujesz
--color=auto
grep jako argument w twoim CLI, wewnętrznie ustawia zmiennącolor_option
na2
.Jeśli
color_option
jest równy, należy2
grep
dalejSTDOUT
testować, czy jest on połączony z terminalem, czy użytkownik wyłączył pokolorowane miejsce za pośrednictwemshell environment variables
. Jeśli pierwsza z nich jest prawdziwa, agrep
wydrukiCLI
w kolorze są dozwolone, następnie kontynuuje ocenę, które kolory należy zastosować, a na końcu ostatecznie drukuje na swój kolor.źródło: (grep 2.21)
źródło