2012-09-07 3 views
4

가능한 중복 : bash 스크립트에서 실행될 때 grep이 컬러 출력을 잃는 이유는 무엇입니까?


grep loses coloring when run from bash script

내가 내 grep 결과의 상단에 헤더를 인쇄하는 간단한 bash는 스크립트가 :

#!/bin/bash 

for var in "[email protected]" 
do 
    if [[ $var != -* ]]; 
    then 
     break 
    fi 
done 

echo 
echo -en "\e[1;31m  ====== GREP $var ======\e[0m\n" 
echo 

grep [email protected] 

그러나 최종 명령이 어떻게 든 결과에서 색상이 누락되어 실제로 프롬프트에서 grep을 직접 실행하는 것과 같지 않습니다. grep을 직접 실행하면 파일 이름이 자주색으로 표시되고 빨간색으로 일치하지만 이제 모든 출력이 일반 터미널 텍스트 색상이됩니다. 누군가 내 스크립트에서 컬러 버전을 얻는 방법을 말해 줄 수 있습니까?

+1

힌트 :'grep'은 처음에 색상을 출력하는 것을 어떻게 알 수 있습니까? – HonkyTonk

+4

'--color = always'을 시도해 보셨습니까? – Shahbaz

+0

예, 기본적으로 중복 ... 내 잘못입니다. –

답변

8

대화식 모드가 아닌 경우 grep이 색상을 생성하지 않는 것처럼 보입니다. 색이 지정된 출력을 생성하도록 강제 설정할 수 있습니다.

grep --color=always [email protected] 
6

Grep에는 자동, 항상 및 끄기의 3 가지 색상 모드가 있습니다.

파이프와 같은 비 대화식 출력에 연결된 경우 코드가 자동으로 제거됩니다 (이유를 알고 싶다면 grep --color=always의 출력을 파일로 리디렉션 한 다음 파일을 보도록하십시오.)

관련 문제