2

私のbashバージョン:

GNU bash, version 3.2.49(22)-release (i686-pc-cygwin)
Copyright (C) 2007 Free Software Foundation, Inc.

私の .bashrc には、次のものがあります。

export GREP_OPTIONS='--color=always'

問題を再現するには、ファイル test.txt を作成し、いくつかの行を記述します。

test1: apple
test2: orange
test3: cherry

bash で grep を実行します。

grep "test" test.txt > 1

結果を確認すると、次のような結果が得られます。

~ > cat -v 1
^[[01;31m^[[Ktest^[[m^[[K1: apple
^[[01;31m^[[Ktest^[[m^[[K2: orange
^[[01;31m^[[Ktest^[[m^[[K3: cherry

この問題について何か考えはありますか?ところで、fileformats=unix をセットアップしました。

4

2 に答える 2

9

表示される文字は、ターミナルでテキストの色を変更するためのコードに対応しています。通常grep、出力が対話型端末に送られる場合にのみ色を生成する必要があります。そのためには、変更

export GREP_OPTIONS='--color=always'

export GREP_OPTIONS='--color=auto'
于 2013-07-14T15:43:52.983 に答える
2

@Joniが指摘したように、「常に」を「自動」に置き換える必要があります。これにより、出力が端末に直接書き込まれ、その端末が色付きの出力を表示できる場合にのみ、一致する文字列が強調表示されます。そうしないと、出力が乱雑な文字で破棄されません。

ただし、その動作をデフォルトにするより良い方法は、.bash_profile(または.bashrc、またはカスタム設定を保持する場所) に入れることです。

# grep auto colouring
my_grep_options=(--colour=auto)
alias grep='grep $my_grep_options'

これにより、常にgrep呼び出しが事前に準備されたバージョンに置き換えられるため、次のように入力するたびに:

grep

次のものに置き換えられます。

grep --colour=auto
于 2015-08-30T11:46:40.543 に答える