"grep -Ff" は bash スクリプトでパターンを色で強調表示しません。

"grep -Ff" は bash スクリプトでパターンを色で強調表示しません。

端末で次のコマンドを実行すると正常に動作します。赤と白のハイライトは、下の画像に表示されているパターンと一致します。

$ grep -Ff file1.txt file2.txt

出力:期待される出力

ところで、ファイルと同じ命令をスクリプトに入れてpl.sh実行してみると、上の画像のようにまったく強調表示されません。何が間違っているのかわかりません!スクリプトを変更する必要がありますか?

#!/bin/bash

# Main file:
echo -n "Choose the Main Assignment File : "
read mainfile

# Compare a file
echo -n "Choose a file to compare with : "
read comparefile

# Compare two files and highlight differences 
sudo grep -Ff "$mainfile" "$comparefile"

答え1

対話型シェルには、端末デバイスに出力するときに色を使用するようにgrepをオーバーライドするエイリアスがあります。エイリアスgrep='grep --color=auto'~/.bashrc基本ファイルで定義できます)。

デフォルトでは、Bash非対話型スクリプトはエイリアスを拡張せず、sudoも同様です。したがって、明示的にgrepにカラーオプションを追加する必要があります。

grep --color=auto -Ff "$mainfile" -- "$comparefile" 

関連情報