bash 스크립트에서 컬러 출력을 얻는 방법은 무엇입니까?


9

grepgnome-terminal 내에서 실행 하면 색상이 출력됩니다-쉽게 눈에 띄는 일치, 다른 색상의 줄 번호 (-n) 등

그러나 grepbash 스크립트를 통해 정확히 동일한 명령을 실행하면 색상이 지정되지 않고 평면 출력이 나타납니다.

bash 스크립트를 사용하여 컬러 출력을 얻을 수있는 방법이 있습니까?

답변:


9

--color쉘 스크립트 내에서 grep을 실행할 때 옵션을 사용하면 효과적입니다.

여기 당신이 원하는 것의 예가 있습니다.

grep -n --color=auto "PATTERN" FILE

정말로 감사합니다. 나는 GREP man 페이지를 탐색하지만 --color[=WHEN], --colour[=WHEN]그것을 잘 설명 비록 나를 혼란
zetah

3

다음은 tput이 bash와 어떻게 작동하는지 파악하는 데 도움이되는 작은 스크립트입니다.

#!/bin/bash
#@auth kesavan.muthuvel
#@desc - bash with colors :)

B=`tput bold`           #BOLD
D=`tput dim`            #DIM
U=`tput sgr 0 1`        #UNDERLINE
U2=`tput smul`          #UNDERLINE2
NOU=`tput rmul`         #NO UNDERLINE
H=`tput smso`           #HIGHLIGHT
X=`tput sgr0`           #RESET
C='tput setaf '         #COLOR


for i in 0 1 2 3 4 5 6 7 ; do
        c=`$C$i` && echo $c${B}I${U}always$NOU $D love \
           ${U2}colors$NOU \& $c${H}GNU/Linux$X
done;

BOLD , UNDERLINE, Highlighting 및 색상과 같은 형식으로 다음 출력을 인쇄합니다 .

BASH 스크립트는 텍스트 형식과 색상으로 인쇄됩니다


0

이 별칭을에 추가하려고 했습니까 ~/.bashrc?

alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'

예, 해당 줄이 있지만 grep이 bash 스크립트에서 실행될 때 불행히도 출력은 채색되지 않습니다.
zetah

쉘 별명은 기본적으로 대화식 쉘 세션에만 영향을줍니다. 1) 명령에 --color옵션을 grep명시 적으로 추가 하거나 (안전) 또는 2) expand_aliases쉘 옵션을 활성화 하고 source ~/.bashrc(다른 별칭으로 인해 문제가 발생하기 쉬워야 함) 필요합니다. 당신은 1)를 수정하고 variabl을 정의 GREP="grep --color=auto"하고 나중에 스크립트 $GREPgrep모든 곳 대신에 사용할 수 있습니다.
David Foerster
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.