Linux

“grep -Ff”沒有在 bash 腳本中用顏色突出顯示模式

  • August 21, 2020

在終端中執行以下命令時,它可以正常工作,突出顯示的紅色和白色與下圖所示的圖案匹配,

$ 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"

您的互動式 shell 可能有一個別名,該別名重新定義 grep 以在輸出到終端設備 ex 時使用顏色。別名grep='grep --color=auto'(可能在預設~/.bashrc文件中定義)。

預設情況下,Bash 非互動式腳本不會擴展別名 - sudo 也不會。因此,您需要將顏色選項明確添加到 grep ex。

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

引用自:https://unix.stackexchange.com/questions/605572