에코를 사용하여 컬러 텍스트 인쇄


25

나는 예를 들어 붉은 색과 같은 에코를 사용하여 컬러 텍스트를 인쇄하는 경우 코드는 다음 echo -e "\e[1;31m This is red text \e[0m"
과 같습니다. 이 예에서 31은 붉은 색의 코드이고 다른 색의 수는 다음과 같습니다.

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

배경색의 경우 숫자는 40 ~ 47입니다.

무엇을 않습니다 내 질문은 이것이다 \e하고 [m(31 일 이후) 정확히 여기에 의미?
나는 맨 페이지에서 \ e가 탈출이라는 것을 읽었지만 그것이 무엇을 의미하는지 이해하지 못했다.


일반적으로 현재 기술 상황에서 특별한 의미가있는 문자는 이스케이프합니다. 예를 들어, 문자열은 종종 "이와 같이"따옴표로 작성됩니다. 그러나 문자열 내에서 따옴표를 원하면 해당 문자를 이스케이프해야 문자가 구분 기호가 아닌 문자 그대로 해석됩니다. 예를 들어, echo "She said \"Hi\""이 경우 (질문과 관련하여) 더 나은 답변을 기다려야합니다.
Emanuel Berg

답변:


13

그것들은 원래 1976 년에 채택 된 ECMA-48 CSI 시퀀스 로 알려진 ANSI 이스케이프 시퀀스 의 '시퀀스 요소'의 일부입니다.

보다 구체적으로 [' 제어 시퀀스 도입 자 '

유형 man console_codes거의 모든 * 괜찬아 배포판에서이 코드와 일부 문서를 볼 수 있습니다.


man 4 console_codenot man console_code: 내 우분투에서
0x6773 5

매뉴얼 페이지 이름은 "s"로 끝나므로 "man console_codes"는 올바른 페이지를 가져와야합니다.
Mikko Rantalainen

4

정확한 색상 코드는 다음과 같이 정의됩니다.

Opening
RED= "\033[31m" or "\e[1;31m"
CYAN="\033[36m" or "\e[1;31m"

Closing = "\033[m" or "\e[0m"

따라서 기본적으로 다른 터미널이 색상 코드를 해석하는 방식과 이러한 요소 내에서 텍스트를 캡션합니다. 터미널이 HexCodes 또는 Binary와 같은 의미를 이해하게하는 이상한 방법입니다.


2

나는 여기 에서 좋은 설명을 찾았습니다 (적어도 나에게 좋습니다 :-) ). 그것이 당신에게 도움이 될지 확실하지 않습니다.

시작하려면 콘솔에서 다음을 입력하십시오.

echo "^[[0;31;40mIn Color"

첫 번째 문자는 이스케이프 문자이며 ^와 [. 이것을 인쇄하려면 CTRL + V를 누른 다음 ESC 키를 눌러야합니다. 다른 모든 문자는 인쇄 가능한 일반 문자이므로 In Color 문자열이 빨간색으로 표시됩니다. 다음을 입력하여 다시 돌아올 때까지 유형은 해당 색상을 유지합니다.

터미널에서 색상 모드를 설정하기위한 이스케이프 코드입니다. 일반 문자로 인쇄 할 때처럼 보입니다.


2

\e이스케이프 문자의 줄임말입니다. <ESC>[하고는 m서열 ANSI 단말 제어의 서브 세트 ANSI 컬러 제어 시퀀스의 시작과 끝의 마커이다. 이들 중 대부분은로 시작하고 <ESC>[그 뒤에 숫자가오고 그 뒤에 어떤 기능이 구현되고 있는지를 나타내는 문자가옵니다 (예 : 커서를 행으로 이동, 행 끝으로 이동, 커서를 저장된 위치로 반환 등).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.