2016-12-29 1 views
0

로그 파일을 검사하기 위해 터미널에서 실행하는 스크립트가 있으며 ">"를 사용하여 파일로 리디렉션합니다. 그것은이컬러 코드없이 터미널 출력을 파일로 리디렉션하는 방법

<script> > ~/log.txt 

처럼 작동하지만 사용 ">", 텍스트 파일이있을 것입니다 때 내 스크립트

print ("\033[0;34m$temp \e[0;30m"); 

같은 몇 가지 색 표시가 : 내가하지 않으려는

^[[0;34m./a/a.log 
^[[0;30m^[[0;32mPASS^[[0m 
^[[0;34m./b/b.log 
^[[0;30m^[[0;32mPASS^[[0m 

왜냐하면 내가 터미널에서 (파일에 출력하지 않고) 실행할 때, 결과를보기가 쉽기 때문에 색 구성표를 제거하십시오. 도와 주시겠습니까?

+0

스크립트는 표준 출력이 터미널 인 경우이를 인식하고 이에 따라 색상 출력을 켜고 끕니다. 쉘 스크립트의 경우'test -t 1'을 사용하십시오. –

+0

더 자세히 설명해 주시겠습니까? 나는 표준 출력이 터미널인지 알지 못한다. 어떤 변수 또는 함수를 사용할 수 있습니까? 나는 보통 csh에 스크립트를 작성한다. (펄은 괜찮다.) – Thepro

+0

csh는 스크립트 작성에 정말로 적합하지 않다. bash 또는 유사한 쉘로 전환하는 것이 좋다. –

답변

0

다음은 csh 스크립트의 풀 컬러 설정입니다. 출력은 표준 출력이 터미널 인 경우에만 색상이 지정됩니다.

#!/bin/csh -f 

set colornames = (black red green yellow blue magenta cyan white) 

# set up standard colour indices 
@ i = 0 
while ($i < 8) 
    @ cc = ($i + 1) 
    set $colornames[$cc] = $i 
    @ i++ 
end 

# test if the standard output is a terminal  
test -t 1 
if ($status) then 
    # it is not a terminal; colour aliases do nothing 
    alias FG 'echo >/dev/null' 
    alias BG 'echo >/dev/null' 
    alias BO 'echo >/dev/null' 
    alias NC 'echo >/dev/null' 
else 
    # it is a terminal; colour aliases output escape sequences, portably 
    alias FG 'tput setaf $\!:1' 
    alias BG 'tput setab $\!:1' 
    alias BO 'tput bold' 
    alias NC 'tput sgr0' 
endif 

# example usage 

set silly = `FG red ; BG green; BO` 
set normal = `NC` 

echo "${silly}hello${normal}, world" 

저는 훌륭한 csh 전문가가 아니므로 더 우아하게 만들 수 있습니다.

관련 문제