bash 에코 색상을 텍스트 파일로 [닫음]

bash 에코 색상을 텍스트 파일로 [닫음]

Bash를 사용하여 컬러 텍스트를 작성하는 방법은 무엇입니까?

RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' 
greprc=$?
if [[ $greprc -eq 0 ]] ; then
 echo -e "${GREEN} converged${NC}" >>log
else
  echo -e "${RED} not converged${NC}" >>log
fi

터미널에만 메시지가 표시되면 텍스트에 색상을 지정합니다. 그러나 파일(일반 텍스트)에 쓰면 log파일의 텍스트에 색상이 지정되지 않습니다. 로그에 컬러 텍스트를 쓰는 방법은 무엇입니까?

답변1

cat다음은 컬러 파일의 복사-붙여넣기 출력입니다.

[36m 
hello36
[35m 
hello35
[37m 
hello end

위는 표시하기 어렵고 입력하기 어렵다는 ESC의 특별한 의미를 설명하기 위한 것입니다. Stackexchange의 편집창에 [ESC]와 같은 작은 아이콘이 보입니다.

로 변경 cat -A colorhello > col.txt:

^[[36m $
hello36$
^[[35m $
hello35$
^[[37m $
hello end$
$
$

(분명히 끝에 빈 줄이 두 개 있습니다) (다른 Firefox 탭에서 열린 col.txt에서 복사했습니다)

vim에서는 이스케이프 문자가 진한 파란색으로 "^["로 표시됩니다. 하나를 삽입하려면: ctrl-v [ESC].

vi에서 ESC 그냥 ^[커서를 "^"에 놓으려고 하면 화면이 한 번 깜박입니다.

물론 답변에서 지적했듯이 이는 기본적인 "서식 있는 텍스트" 형식입니다. 이러한 이스케이프 문자와 제어 시퀀스가 ​​있으며 아마도 회색 텍스트보다 더 짜증날 것입니다.

(파일 프롬프트와 커서에 색상이 지정되면 파일에서 커서를 변경하는 데 사용되는 ANSI 제어 시퀀스(ESC [?1;2;3c)가 vimrc적용되는 것으로 나타났습니다)cat

물론 cat색상을 확인해야 합니다. 색상은 터미널에 의해 해석됩니다. 편집기에서는 의미가 없습니다. 그리고 제어 시퀀스의 구문 강조가 엄청난 시간 투자가 될 것이라고는 생각하지 않습니다.


추가됨: 다른 방법으로 하면 안 됩니다. ESC 시퀀스 대신 짧은 마법 문자열을 삽입하면 한 줄씩 쉽게 강조 표시할 수 있습니다. dmesg는 괄호 안에 타임스탬프가 있는 것처럼 보입니다.

[info] Yor first logline...in normal color
[info] Another normal line
[warn] This could appear yellow in your editor
[error] This sticks out red and sticks also out b/w
[info] And so on

이렇게 하면 원하는 경우 색상과 색상의 의미를 볼 수 있습니다.("아, 이 메시지는 너무 밝은 붉은색이라 중요하지 않다고 생각했어요" :-)처음 잡았을 때의 모습은 여전히 ​​아름답습니다.

(과도한 구문 파일을 모두 닫으면 vim의 구문 강조 표시가 훌륭합니다!)

관련 정보