Bash 스크립트에 색상 추가

5507 단어 bashlinuxproductivity
나는 최근에 서버에 대한 수신 후 git hook을 작성했으며 git 정보에서 내 후크의 출력을 쉽게 구별하고 싶었습니다. 이로 인해 bash 출력을 색칠하는 방법을 살펴보게 되었습니다.

ANSI 색상 이스케이프 코드를 사용하여 출력 문자열에 색상을 추가할 수 있습니다. ANSI 표준은 특정 색상 코드를 지정합니다.


색깔
전경 코드
배경 코드


검은색
30
40

빨간색
31
41

녹색
32
42

노란색
33
43

푸른
34
44

마젠타
35
45

시안
36
46

밝은 회색
37
47

회색
90
100

라이트 레드
91
101

연한 초록색
92
102

연노랑
93
103

하늘색
94
104

라이트 마젠타
95
105

라이트 시안
96
106

하얀색
97
107


텍스트의 색상을 변경하기 위해 원하는 것은 전경 코드입니다. 우리와 관련된 몇 가지 다른 비색상 특수 코드도 있습니다.


암호
설명


0
리셋/정상

1
굵은 텍스트

2
희미한 텍스트


이탤릭체

4
밑줄이 그어진 텍스트

echo 명령은 텍스트를 출력합니다. 일반 문자가 아닌 특수 ANSI 코드로 작업하고 있음을 알려야 합니다. 이스케이프 시퀀스를 형성하기 위해 처음에 \e를 추가하면 됩니다. 색상 코드를 지정하기 위한 이스케이프 시퀀스는 \e[COLORm입니다(이 경우 COLOR는 색상 코드를 나타냄). 기본적으로 echo는 이스케이프 시퀀스를 지원하지 않습니다. 해석을 활성화하려면 -e 옵션을 추가해야 합니다.

따라서 빨간색 텍스트를 인쇄하려면

echo -e "\e[32mRed text\e[0m"

\e[0m는 특수 코드 0을 사용하여 텍스트 색상을 다시 정상으로 재설정한다는 의미입니다. 이것이 없으면 이 이후에 인쇄하는 다른 모든 텍스트는 빨간색이 됩니다.

이것은 작동하지만 색상 코드를 변수에 저장하고 대신 사용하면 더 읽기 쉽습니다.

RED="\e[31m"
ENDCOLOR="\e[0m"

echo -e "${RED}Red text${ENDCOLOR}"


이 모든 것을 종합하면 다음과 같은 스크립트를 만들 수 있습니다.

#! /usr/bin/env bash

RED="\e[31m"
GREEN="\e[32m"
ENDCOLOR="\e[0m"

echo -e "${RED}This is some red text, ${ENDCOLOR}"
echo -e "${GREEN}And this is some green text${ENDCOLOR}"




이스케이프 코드를 결합하여 더 멋진 출력을 얻을 수 있습니다.

#! /usr/bin/env bash

RED="31"
GREEN="32"
BOLDGREEN="\e[1;${GREEN}m"
ITALICRED="\e[3;${RED}m"
ENDCOLOR="\e[0m"

echo -e "${BOLDGREEN}Behold! Bold, green text.${ENDCOLOR}"
echo -e "${ITALICRED}Italian italics${ENDCOLOR}"




스크립트를 덜 단조롭게 만들기 위해 다양한 방법으로 사용할 수 있습니다. 조합은 당신에게 달려 있습니다. 행복한 스크립팅!

좋은 웹페이지 즐겨찾기