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