[linux] Linux에서 반향의 출력 색상을 변경하는 방법

echo 명령을 사용하여 터미널에 텍스트를 인쇄하려고합니다.

텍스트를 붉은 색으로 인쇄하고 싶습니다. 어떻게해야합니까?



답변

다음 ANSI 이스케이프 코드를 사용할 수 있습니다 .

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

그런 다음 스크립트에서 다음과 같이 사용하십시오.

#    .---------- constant part!
#    vvvv vvvv-- the code from above
RED='\033[0;31m'
NC='\033[0m' # No Color
printf "I ${RED}love${NC} Stack Overflow\n"

love빨간색으로 인쇄 됩니다.

@ james-lim의 의견 에서 echo명령을 사용하는 경우 -e 플래그를 사용하여 백 슬래시 이스케이프를 허용하십시오 .

# Continued from above example
echo -e "I ${RED}love${NC} Stack Overflow"

( "\n"빈 줄을 추가하지 않으려면 echo를 사용할 때 추가하지 마십시오 )


답변

굉장한 tput명령 ( Ignacio의 답변 에서 제안 됨 )을 사용하여 모든 종류의 것들에 대한 터미널 제어 코드를 생성 할 수 있습니다.


용법

특정 tput하위 명령에 대해서는 나중에 설명합니다.

곧장

tput일련의 명령의 일부로 호출하십시오 .

tput setaf 1; echo "this is red text"

텍스트가 여전히 오류로 표시 되면 ;대신 사용하십시오 .&&tput

쉘 변수

또 다른 옵션은 쉘 변수를 사용하는 것입니다.

red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`
echo "${red}red text ${green}green text${reset}"

tput터미널에서 특별한 의미를 갖는 것으로 해석되는 문자 시퀀스를 생성합니다. 그들은 스스로 보여지지 않을 것입니다. 터미널 이외의 프로그램에서 파일로 저장하거나 입력으로 처리 할 수 ​​있습니다.

명령 대체

명령 대체를 사용하여 tput의 출력을 echo문자열에 직접 삽입하는 것이 더 편리 할 수 ​​있습니다 .

echo "$(tput setaf 1)Red text $(tput setab 7)and white background$(tput sgr 0)"

위 명령은 우분투에서 이것을 생성합니다.

컬러 터미널 텍스트의 스크린 샷


전경색 및 배경색 명령

tput setab [1-7] # Set the background colour using ANSI escape
tput setaf [1-7] # Set the foreground colour using ANSI escape

색상은 다음과 같습니다.

Num  Colour    #define         R G B

0    black     COLOR_BLACK     0,0,0
1    red       COLOR_RED       1,0,0
2    green     COLOR_GREEN     0,1,0
3    yellow    COLOR_YELLOW    1,1,0
4    blue      COLOR_BLUE      0,0,1
5    magenta   COLOR_MAGENTA   1,0,1
6    cyan      COLOR_CYAN      0,1,1
7    white     COLOR_WHITE     1,1,1

여기에 나와 있지 않은 다른 숫자를 사용하는 비 ANSI 버전의 색상 설정 기능 ( setb대신 setabsetf대신 setaf)이 있습니다.

텍스트 모드 명령

tput bold    # Select bold mode
tput dim     # Select dim (half-bright) mode
tput smul    # Enable underline mode
tput rmul    # Disable underline mode
tput rev     # Turn on reverse video mode
tput smso    # Enter standout (bold) mode
tput rmso    # Exit standout mode

커서 이동 명령

tput cup Y X # Move cursor to screen postion X,Y (top left is 0,0)
tput cuf N   # Move N characters forward (right)
tput cub N   # Move N characters back (left)
tput cuu N   # Move N lines up
tput ll      # Move to last line, first column (if no cup)
tput sc      # Save the cursor position
tput rc      # Restore the cursor position
tput lines   # Output the number of lines of the terminal
tput cols    # Output the number of columns of the terminal

명령 지우기 및 삽입

tput ech N   # Erase N characters
tput clear   # Clear screen and move the cursor to 0,0
tput el 1    # Clear to beginning of line
tput el      # Clear to end of line
tput ed      # Clear to end of screen
tput ich N   # Insert N characters (moves rest of line forward!)
tput il N    # Insert N lines

다른 명령들

tput sgr0    # Reset text format to the terminal's default
tput bel     # Play a bell

컴 피즈 흔들 거리는 창문bel명령은 사용자의 관심을 끌기 위해 초 터미널 동요한다.


스크립트

tput줄당 하나의 명령을 포함하는 스크립트를 허용하며 tput종료 전에 순서대로 실행 됩니다.

여러 줄 문자열을 에코하여 파이핑하여 임시 파일을 피하십시오.

echo -e "setf 7\nsetb 1" | tput -S  # set fg white and bg red

또한보십시오

  • 보다 man 1 tput
  • 참조 man 5 terminfo이러한 옵션에 대한 명령과 자세한 내용의 전체 목록을 보려면. (해당 tput명령은 Cap-name81 행에서 시작하는 거대한 테이블 의 열에 나열됩니다. )

답변

사용할 수있는 일부 변수 :

# Reset
Color_Off='\033[0m'       # Text Reset

# Regular Colors
Black='\033[0;30m'        # Black
Red='\033[0;31m'          # Red
Green='\033[0;32m'        # Green
Yellow='\033[0;33m'       # Yellow
Blue='\033[0;34m'         # Blue
Purple='\033[0;35m'       # Purple
Cyan='\033[0;36m'         # Cyan
White='\033[0;37m'        # White

# Bold
BBlack='\033[1;30m'       # Black
BRed='\033[1;31m'         # Red
BGreen='\033[1;32m'       # Green
BYellow='\033[1;33m'      # Yellow
BBlue='\033[1;34m'        # Blue
BPurple='\033[1;35m'      # Purple
BCyan='\033[1;36m'        # Cyan
BWhite='\033[1;37m'       # White

# Underline
UBlack='\033[4;30m'       # Black
URed='\033[4;31m'         # Red
UGreen='\033[4;32m'       # Green
UYellow='\033[4;33m'      # Yellow
UBlue='\033[4;34m'        # Blue
UPurple='\033[4;35m'      # Purple
UCyan='\033[4;36m'        # Cyan
UWhite='\033[4;37m'       # White

# Background
On_Black='\033[40m'       # Black
On_Red='\033[41m'         # Red
On_Green='\033[42m'       # Green
On_Yellow='\033[43m'      # Yellow
On_Blue='\033[44m'        # Blue
On_Purple='\033[45m'      # Purple
On_Cyan='\033[46m'        # Cyan
On_White='\033[47m'       # White

# High Intensity
IBlack='\033[0;90m'       # Black
IRed='\033[0;91m'         # Red
IGreen='\033[0;92m'       # Green
IYellow='\033[0;93m'      # Yellow
IBlue='\033[0;94m'        # Blue
IPurple='\033[0;95m'      # Purple
ICyan='\033[0;96m'        # Cyan
IWhite='\033[0;97m'       # White

# Bold High Intensity
BIBlack='\033[1;90m'      # Black
BIRed='\033[1;91m'        # Red
BIGreen='\033[1;92m'      # Green
BIYellow='\033[1;93m'     # Yellow
BIBlue='\033[1;94m'       # Blue
BIPurple='\033[1;95m'     # Purple
BICyan='\033[1;96m'       # Cyan
BIWhite='\033[1;97m'      # White

# High Intensity backgrounds
On_IBlack='\033[0;100m'   # Black
On_IRed='\033[0;101m'     # Red
On_IGreen='\033[0;102m'   # Green
On_IYellow='\033[0;103m'  # Yellow
On_IBlue='\033[0;104m'    # Blue
On_IPurple='\033[0;105m'  # Purple
On_ICyan='\033[0;106m'    # Cyan
On_IWhite='\033[0;107m'   # White

bash , hexoctal 각각 의 이스케이프 문자 :

|       | bash  | hex    | octal   | NOTE                         |
|-------+-------+--------+---------+------------------------------|
| start | \e    | \x1b   | \033    |                              |
| start | \E    | \x1B   | -       | x cannot be capital          |
| end   | \e[0m | \x1m0m | \033[0m |                              |
| end   | \e[m  | \x1b[m | \033[m  | 0 is appended if you omit it |
|       |       |        |         |                              |

짧은 예 :

| color       | bash         | hex            | octal          | NOTE                                  |
|-------------+--------------+----------------+----------------+---------------------------------------|
| start green | \e[32m<text> | \x1b[32m<text> | \033[32m<text> | m is NOT optional                     |
| reset       | <text>\e[0m  | <text>\1xb[0m  | <text>\033[om  | o is optional (do it as best practice |
|             |              |                |                |                                       |

배쉬 예외 :

특수 bash 변수 에서 이러한 코드를 사용하려는 경우

  • PS0
  • PS1
  • PS2 (= 이것은 프롬프트를위한 ​​것입니다)
  • PS4

이스케이프 문자를 추가하여 올바르게 해석 할 수 있습니다. 이스케이프 문자를 추가하지 않으면 작동하지만 Ctrl + r역사에서 검색에 사용할 때 문제가 발생합니다 .

bash에 대한 예외 규칙

당신은 추가해야 \[어떤 시작 ANSI 코드 전에 추가 \]어떤 결말들 후.
예 :
정기적으로 사용하는 경우 : \033[32mThis is in green\033[0m
PS0 / 1 / 2 / 4의 경우 : \[\033[32m\]This is in green\[\033[m\]

\[시퀀스의 시작을위한 인쇄 할 수없는 문자
\]의 시퀀스의 끝을위한 인쇄 할 수없는 문자

팁 : 암기 그것은 처음 추가 할 수 있습니다에 대한 \[\]다음 그 사이에 ANSI 코드를 넣어 :
\[start-ANSI-code\]
\[end-ANSI-code\]

색상 순서 유형 :

  1. 3/4 비트
  2. 8 비트
  3. 24 비트

이 색상으로 다이빙하기 전에 다음 코드를 사용하는 4 가지 모드를 알아야합니다.

1. 컬러 모드

NOT NOT text 스타일의 스타일을 수정합니다. 예를 들어 색상을 밝거나 어둡게 만듭니다.

  • 0 초기화
  • 1; 평소보다 가벼움
  • 2; 평상시보다 어둡습니다

이 모드는 널리 지원되지 않습니다. Gnome-Terminal을 완벽하게 지원합니다.

2. 텍스트 모드

이 모드는 색상이 아닌 텍스트 스타일을 수정하기위한 것입니다.

  • 3; 이탤릭체
  • 4; 밑줄
  • 5; 깜박임 (느리게)
  • 6; 깜박임 (빠름)
  • 7; 역전
  • 8; 숨는 장소
  • 9; 교차

거의 지원됩니다.
예를 들어 KDE-Konsole은 지원 5;하지만 Gnome-Terminal은 지원하지 않으며 Gnome은 지원 8;하지만 KDE는 지원 하지 않습니다.

3. 전경 모드

이 모드는 전경을 채색하는 데 사용됩니다.

4. 배경 모드

이 모드는 배경을 채색하기위한 것입니다.

아래 표는 3/4 비트 버전의 ANSI 색상을 요약 한 것입니다.

|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| color-mode | octal    | hex     | bash  | description      | example (= in octal)         | NOTE                                 |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|          0 | \033[0m  | \x1b[0m | \e[0m | reset any affect | echo -e "\033[0m"            | 0m equals to m                       |
|          1 | \033[1m  |         |       | light (= bright) | echo -e "\033[1m####\033[m"  | -                                    |
|          2 | \033[2m  |         |       | dark (= fade)    | echo -e "\033[2m####\033[m"  | -                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|  text-mode | ~        |         |       | ~                | ~                            | ~                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|          3 | \033[3m  |         |       | italic           | echo -e "\033[3m####\033[m"  |                                      |
|          4 | \033[4m  |         |       | underline        | echo -e "\033[4m####\033[m"  |                                      |
|          5 | \033[5m  |         |       | blink (slow)     | echo -e "\033[3m####\033[m"  |                                      |
|          6 | \033[6m  |         |       | blink (fast)     | ?                            | not wildly support                   |
|          7 | \003[7m  |         |       | reverse          | echo -e "\033[7m####\033[m"  | it affects the background/foreground |
|          8 | \033[8m  |         |       | hide             | echo -e "\033[8m####\033[m"  | it affects the background/foreground |
|          9 | \033[9m  |         |       | cross            | echo -e "\033[9m####\033[m"  |                                      |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| foreground | ~        |         |       | ~                | ~                            | ~                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         30 | \033[30m |         |       | black            | echo -e "\033[30m####\033[m" |                                      |
|         31 | \033[31m |         |       | red              | echo -e "\033[31m####\033[m" |                                      |
|         32 | \033[32m |         |       | green            | echo -e "\033[32m####\033[m" |                                      |
|         33 | \033[33m |         |       | yellow           | echo -e "\033[33m####\033[m" |                                      |
|         34 | \033[34m |         |       | blue             | echo -e "\033[34m####\033[m" |                                      |
|         35 | \033[35m |         |       | purple           | echo -e "\033[35m####\033[m" | real name: magenta = reddish-purple  |
|         36 | \033[36m |         |       | cyan             | echo -e "\033[36m####\033[m" |                                      |
|         37 | \033[37m |         |       | white            | echo -e "\033[37m####\033[m" |                                      |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         38 | 8/24     |                    This is for special use of 8-bit or 24-bit                                            |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| background | ~        |         |       | ~                | ~                            | ~                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         40 | \033[40m |         |       | black            | echo -e "\033[40m####\033[m" |                                      |
|         41 | \033[41m |         |       | red              | echo -e "\033[41m####\033[m" |                                      |
|         42 | \033[42m |         |       | green            | echo -e "\033[42m####\033[m" |                                      |
|         43 | \033[43m |         |       | yellow           | echo -e "\033[43m####\033[m" |                                      |
|         44 | \033[44m |         |       | blue             | echo -e "\033[44m####\033[m" |                                      |
|         45 | \033[45m |         |       | purple           | echo -e "\033[45m####\033[m" | real name: magenta = reddish-purple  |
|         46 | \033[46m |         |       | cyan             | echo -e "\033[46m####\033[m" |                                      |
|         47 | \033[47m |         |       | white            | echo -e "\033[47m####\033[m" |                                      |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         48 | 8/24     |                    This is for special use of 8-bit or 24-bit                                            |                                                                                       |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|

아래 표는 8 비트 버전의 ANSI 색상 요약을 보여줍니다.

|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| foreground | octal     | hex       | bash    | description      | example                            | NOTE                    |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
|        0-7 | \033[38;5 | \x1b[38;5 | \e[38;5 | standard. normal | echo -e '\033[38;5;1m####\033[m'   |                         |
|       8-15 |           |           |         | standard. light  | echo -e '\033[38;5;9m####\033[m'   |                         |
|     16-231 |           |           |         | more resolution  | echo -e '\033[38;5;45m####\033[m'  | has no specific pattern |
|    232-255 |           |           |         |                  | echo -e '\033[38;5;242m####\033[m' | from black to white     |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| foreground | octal     | hex       | bash    | description      | example                            | NOTE                    |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
|        0-7 |           |           |         | standard. normal | echo -e '\033[48;5;1m####\033[m'   |                         |
|       8-15 |           |           |         | standard. light  | echo -e '\033[48;5;9m####\033[m'   |                         |
|     16-231 |           |           |         | more resolution  | echo -e '\033[48;5;45m####\033[m'  |                         |
|    232-255 |           |           |         |                  | echo -e '\033[48;5;242m####\033[m' | from black to white     |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|

8 비트 빠른 테스트 :
for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Test"; done

아래 표는 24 비트 버전의 ANSI 색상 요약을 보여줍니다.

|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| foreground | octal     | hex       | bash    | description | example                                  | NOTE            |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
|      0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | R = red     | echo -e '\033[38;2;255;0;02m####\033[m'  | R=255, G=0, B=0 |
|      0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | G = green   | echo -e '\033[38;2;;0;255;02m####\033[m' | R=0, G=255, B=0 |
|      0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | B = blue    | echo -e '\033[38;2;0;0;2552m####\033[m'  | R=0, G=0, B=255 |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| background | octal     | hex       | bash    | description | example                                  | NOTE            |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
|      0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | R = red     | echo -e '\033[48;2;255;0;02m####\033[m'  | R=255, G=0, B=0 |
|      0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | G = green   | echo -e '\033[48;2;;0;255;02m####\033[m' | R=0, G=255, B=0 |
|      0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | B = blue    | echo -e '\033[48;2;0;0;2552m####\033[m'  | R=0, G=0, B=255 |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|

일부 스크린 샷

에서 전경 8 비트 요약 .gif

foreground.gif

배경 8 비트 요약 .gif

background.gif

값이있는 색상 요약

여기에 이미지 설명을 입력하십시오
여기에 이미지 설명을 입력하십시오
여기에 이미지 설명을 입력하십시오
여기에 이미지 설명을 입력하십시오

blinking KDE 터미널

KDE 깜박임


C더 많은 것을 보여주는 간단한 코드

cecho_screenshot


이 색상을 다루기 위해 개발 한 고급 도구 :

블라인드


컬러 모드 샷

페이드 노멀 브라이트

텍스트 모드 샷

유일한 텍스트 모드

결합 OK

결합시키다

더 많은 샷

고급 사용자 및 프로그래머를위한 팁과 요령 :

이 코드를 프로그래밍 언어로 사용할 수 있습니까?

그래 넌 할수있어. 나는 경험했다, , , ,

그들은 프로그램의 속도를 늦추고 있습니까?

나는 생각한다.

우리는 이것을 Windows에서 사용할 수 있습니까?

Win / 4에서 일부 스크린 샷으로 코드를 컴파일하는 경우 3/4 비트 예gcc

코드 길이를 계산하는 방법은 무엇입니까?

\033[ = 2, 다른 부분 1

이 코드를 어디에서 사용할 수 있습니까?

어느 곳이는이 tty통역
xterm, gnome-terminal, kde-terminal, mysql-client-CLI등을.
예를 들어 mysql로 ​​출력을 채색하려면 다음을 사용할 수 있습니다Perl

#!/usr/bin/perl -n
print "\033[1m\033[31m$1\033[36m$2\033[32m$3\033[33m$4\033[m" while /([|+-]+)|([0-9]+)|([a-zA-Z_]+)|([^\w])/g;

이 코드를 파일 이름 : pcc(= Perl Colorize Character)에 저장 한 다음 파일을 유효한 PATH곳에 놓고 원하는 곳에서 사용하십시오.

ls | pcc
df | pcc

내부에 mysql먼저 등록한 pager다음 시도하십시오.

[user2:db2] pager pcc
PAGER set to 'pcc'
[user2:db2] select * from table-name;

pcc

유니 코드를 처리 하지 않습니다 .

이 코드는 채색 만합니까?

아니요, 그들은 많은 흥미로운 일을 할 수 있습니다. 시험:

echo -e '\033[2K'  # clear the screen and do not move the position

또는:

echo -e '\033[2J\033[u' # clear the screen and reset the position

화면을 지우고 싶은 초보자가 system( "clear" )많으므로 system(3)통화 대신 이것을 사용할 수 있습니다.

유니 코드로 사용할 수 있습니까?

예. \u001b

이 색상 중 어떤 버전이 선호됩니까?

사용하기 쉽지만 사용 3/4-bit하기가 훨씬 정확하고 아름답습니다 24-bit.
당신이 경험이없는 경우그래서 여기에 빠른 튜토리얼
24 개 비트 수단 : 000000000000000000000000. 각 8 비트는 특정 색상을위한 것입니다.
1..8입니다 9..16위해 17..24위해
에 따라서 #FF0000수단 과 여기있다 : 255;0;0
#00FF00여기에있는 의미 : 0;255;0
의미가 있습니까? 원하는 세 가지 8 비트 값과 결합하십시오.

참조 :
Wikipedia
ANSI 이스케이프 시퀀스
tldp.org
tldp.org
misc.flogisoft.com
내가 기억하지 못하는 블로그 / 웹 페이지


답변

tputsetaf기능 및 매개 변수 와 함께 사용하십시오 1.

echo "$(tput setaf 1)Hello, world$(tput sgr0)"


답변

echo -e "\033[31m Hello World"

[31m텍스트 색상을 제어합니다 :

  • 3037세트 전경 색상을
  • 40– 배경색을 47설정 합니다

보다 완전한 색상 코드 목록은 여기에서 찾을 수 있습니다 .

\033[0m문자열의 끝에서 텍스트 색상을 다시 설정하는 것이 좋습니다 .


답변

나는 모든 솔루션에서 좋은 포수를 합병했으며 결국 다음과 같이 끝났습니다.

cecho(){
    RED="\033[0;31m"
    GREEN="\033[0;32m"
    YELLOW="\033[1;33m"
    # ... ADD MORE COLORS
    NC="\033[0m" # No Color

    printf "${!1}${2} ${NC}\n"
}

그리고 당신은 그것을 다음과 같이 부를 수 있습니다 :

cecho "RED" "Helloworld"


답변

이것은 색상 스위치 \033[ 입니다. 역사를 참조하십시오 .

색상 코드1;32(연한 녹색), 0;34(청색), 1;34(연한 파랑) 등과 같습니다.

우리는 색깔 스위치 색상 시퀀스를 종료 \033[하고 0m어떤 색 코드를. 마크 업 언어에서 탭을 열고 닫는 것과 같습니다.

  SWITCH="\033["
  NORMAL="${SWITCH}0m"
  YELLOW="${SWITCH}1;33m"
  echo "${YELLOW}hello, yellow${NORMAL}"

간단한 색 echo 기능 솔루션 :

cecho() {
  local code="\033["
  case "$1" in
    black  | bk) color="${code}0;30m";;
    red    |  r) color="${code}1;31m";;
    green  |  g) color="${code}1;32m";;
    yellow |  y) color="${code}1;33m";;
    blue   |  b) color="${code}1;34m";;
    purple |  p) color="${code}1;35m";;
    cyan   |  c) color="${code}1;36m";;
    gray   | gr) color="${code}0;37m";;
    *) local text="$1"
  esac
  [ -z "$text" ] && local text="$color$2${code}0m"
  echo "$text"
}

cecho "Normal"
cecho y "Yellow!"