!["grep -Ff"는 bash 스크립트에서 패턴을 색상으로 강조 표시하지 않습니다.](https://linux55.com/image/178975/%22grep%20-Ff%22%EB%8A%94%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EC%83%89%EC%83%81%EC%9C%BC%EB%A1%9C%20%EA%B0%95%EC%A1%B0%20%ED%91%9C%EC%8B%9C%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
터미널에서 다음 명령을 실행하면 제대로 작동합니다. 빨간색과 흰색 강조 표시가 아래 이미지에 표시된 패턴과 일치합니다.
$ 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"