특수 문자 시퀀스로 작성된 색상이 지정된 출력은 다음과 같습니다.
echo -e "\e[34m Hello\n \e[0m"
그러면 “Hello”라는 단어가 파란색으로 표시됩니다. 이렇게하려면 웹에서 검색해야했으며 다른 소스가 다른 것을 말할 수 있기 때문에 어렵습니다. 매뉴얼이 있어야한다고 생각했지만 찾을 수 없었습니다. 함께 apropos color
또는 비슷한 것. 문제는 신뢰할 수있는 매뉴얼을 어디서 찾을 수 있습니까?
답변
이 페이지에 나열 할 정보 소스가 너무 많습니다.
- 이 명령
echo -e
은 확장명 을 사용하여\e
ASCII 27 (8 진수 33 또는 “\ 033”) 로 렌더링 합니다. 이러한 용도를 인쇄하는 휴대용 방법printf
(POSIX). 표준echo
(POSIX) 과 비교하십시오 . -
귀하의 예는 다음과 같이 다시 작성할 수 있습니다
printf "\033[34m Hello\n \033[0m"
- 색상 이스케이프의 표준은 ECMA-48 (코딩 된 문자 집합에 대한 제어 기능)입니다.
- ECMA-48에서 8.3.117 SGR-그래픽 그래픽 선택은 8 개의 전경색과 8 개의 배경색을 설정하기위한 제어 순서를 나열합니다.
- 또한 코드 39/49 “기본 디스플레이 색상 (구현 정의)”및 38/48 “향후 표준화를 위해 예약되어 있으며 ISO 8613-6 [CCITT Recommendation T.416]에 지정된 문자 전경색을 설정하기위한 것입니다.” 즉, 다른 조직의 권장 사항이 있지만 (24 년 후) 표준에 포함되지 않았습니다.
- 자세히 읽으면 표준이 많은 곳에서 모호하여 다른 해석이 가능하다는 것을 알 수 있습니다. 이 제어 순서 의 구문 에 대해서는 설명하지만 해당 동작 순서는 설명하지 않습니다 . 이를 위해서는 해당 터미널의 설명서로 이동해야합니다.
- xterm에 대한 문서는 XTerm Control Sequences 에 있으며, http://vt100.net 에있는 DEC 문서에 익숙하다고 가정
- 다른 터미널의 경우, 매뉴얼 페이지가 제어를 열거 할 수 있습니다 ( console_codes의 Linux 콘솔에 대해 수행됨 ).
- 다른 터미널은 “xterm”으로 문서화됩니다. 자세한 내용은 컨트롤을 계산 하여 xterm FAQ 버전 비교를 참조하십시오 . 다행히 색상 컨트롤은 대부분 호환되지만 ncurses FAQ를 참조하십시오. 내 터미널에 색상이없는 공간이 표시 됩니다.
-
쉘 스크립트에서 기능
tput
을 사용할 수있는에 대한 매뉴얼 페이지를 읽을 수도 있습니다terminfo
. 귀하의 예는 다음과 같이 다시 작성할 수 있습니다printf '%s\n' "$(tput setaf 4)Hello$(tput setaf 0)"
-
Bash Prompt HOWTO 및 Advanced Bash-Scripting Guide 와 같은 일부 소스 에는 색상이 언급되어 있지만 (이러한 것조차도) 일반적으로 간격과 누락이 있으며 ECMA-48과 관련하여 도움이되지 않습니다.
- 다른 출처 (예 : 인용 된 출처 등)의 웹 검색 사본에서 찾을 수있는 대부분의 다른 출처는 일반적으로 실제 표준에 거의주의를 기울이지 않습니다.