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

관련 정보