grep > パイプ(|)後にも色を保持する > --color=always > grep -vは無効になる


動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04.4 LTS desktop amd64
TensorFlow v1.7.0
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)
ADDA v.1.3b6
gnustep-gui-runtime v0.24.0-3.1
PyMieScatt v1.7.0
GNU grep 2.25

grepとパイプ(|) > 単色になる

ADDAという光散乱数値シミュレーションのソースコードを読み続けている。

param.c
...
opt_index opt; // main option index; it is also defined as extern in param.h
...

optはどこで使われるかgrepしてみるが、optionsやoptimizationなどの無関係なものも表示される。
パイプ(|)後にgrep -vで除外キーワードを指定すると、grepの結果が単色になってしまう。

パイプ後にも色を保持するにはどうするか?

対処 > --color=always

参照: Preserve colouring after piping grep to grep

--colorでalwaysを指定する。
https://explainshell.com/explain?cmd=grep+--color%3Dalways

$grep --color=always opt *.c | grep -v options

パイプの後でも色付けが保持された。

| lessとの組合せはだめ 

lessと組合わせた場合は下記となった。

スクロールできるようにするには別の方法が必要。

bug? > grep -vが無効になる

$grep --color=always opt *.c | grep -v options

結果にoptionsも含まれている。

grep > grep --color=always opt *.c | grep -v option > optionが除外されない理由
にその理由を書いた。

備考 > naming

一般過ぎるoptというキーワードはソースリーディング者の負担が大きい。
検索性の高い変数名を定義できるのは、良きエンジニアの特性だと考えている。