Windows-10 UbuntuWSLアプリで「grep」の配色を変更する方法

0
2022.03.07

Windows Subsystem for Linux(WSL、Windows-10コンピューター上のUbuntuアプリ)でgrep結果の配色を変更したいと思います。

私の.bashrcファイルには次のエントリが含まれています。

 alias grep='grep --color=auto'

環境変数GREP_COLORGREP_COLORSはどちらも空です。

 Prompt> echo $GREP_COLOR

Prompt> echo $GREP_COLORS

=> two times an empty result.

私のgrepバージョン:

 Prompt> grep --version
grep (GNU grep) 3.4
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

この質問の理由は、 grep "text" *が次の結果をもたらすためです。

 file1.txt : here is text
file2.txt : here is text too

ファイルの名前(file1.txtとfile2.txt)はどちらも紫色で、黒い背景では見づらいです。

screenshot

誰かがこれを行う方法を知っていますか?

回答
2
2022.03.07

ファイル名の色を変更するには、次の行のfn値を変更します。

 export GREP_COLORS='ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'

@DavidPostillがコメントでリンクしたAskUbuntuの投稿で言及されているカラーチャートによると。

例えば:

 export GREP_COLORS='ms=01;31:mc=01;31:sl=:cx=:fn=31:ln=32:bn=32:se=36'

ファイル名を赤に変更します。

また、あなたのコメントから:

エクスポートせずに、私はそれらのものがまだ保存されていないことを好みます

それはexportがどのように機能するかではありません。シェル(ほとんどの場合、Bash)で変数をexportするということは、そのシェルインスタンスから起動するサブプロセスがエクスポートされた値を受け取ることを意味します。 grepはサブプロセスであるため、更新された値を取得するには、 exportedへの変数が必要です。値をexportしない場合、その値はシェルに対してのみローカルであり、Bashから起動された場合でもgrepはその値を認識しません。

ただし、シェルが終了すると、 exported値は保存されません

リンクされた投稿で最後に言及されているように、値を永続的に保存するには、 export GREP_COLORS=...コマンドを~/.bashrcに追加する必要があります。