私のUbuntu 20システムでこのオプションを使用すると、デフォルトの色はgrep
--colors=auto
通常の背景に赤いテキストです。この動作は、環境変数に値を提供することで無視できますGREP_COLORS
。たとえば、一致が赤の背景にプレーンテキストの色で表示されるようにし、値を設定しますexport GREP_COLORS='1;37;41'
。ただし、エクスポートする前に空白行があります。なぜですか?特にデフォルトがないと思われるのはなぜですか?grep
echo $GREP_COLORS
echo $GREP_COLORS
GREP_COLORS
答え1
GREP_COLORSにデフォルト値がないように見えるのはなぜですか?
環境変数のためGREP_COLORS
利用できる既存の基本色をオーバーライドします。そんな意味ではない〜しなければならない使用。
これGNU grep 基本色は次のように定義されますgrep.c
。
/* The color strings used for matched text.
The user can overwrite them using the deprecated
environment variable GREP_COLOR or the new GREP_COLORS. */
static const char *selected_match_color = "01;31"; /* bold red */
static const char *context_match_color = "01;31"; /* bold red */
/* Other colors. Defaults look damn good. */
static const char *filename_color = "35"; /* magenta */
static const char *line_num_color = "32"; /* green */
static const char *byte_num_color = "32"; /* green */
static const char *sep_color = "36"; /* cyan */
static const char *selected_line_color = ""; /* default color pair */
static const char *context_line_color = ""; /* default color pair */
parse_grep_colors (void)
後で環境変数から値を取得しようとする関数があります。GREP_COLORS
空の場合、または構文が無効な場合は無視されます。たとえば、設定すると無視GREP_COLORS='random text'
されます。