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
대신 setab
및 setf
대신 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-name
81 행에서 시작하는 거대한 테이블 의 열에 나열됩니다. )
답변
사용할 수있는 일부 변수 :
# 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 , hex 및 octal 각각 의 이스케이프 문자 :
| | 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\]
색상 순서 유형 :
- 3/4 비트
- 8 비트
- 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
배경 8 비트 요약 .gif
값이있는 색상 요약
blinking
KDE 터미널
컬러 모드 샷
텍스트 모드 샷
결합 OK
더 많은 샷
고급 사용자 및 프로그래머를위한 팁과 요령 :
이 코드를 프로그래밍 언어로 사용할 수 있습니까?
그래 넌 할수있어. 나는 경험했다세게 때리다, 씨, C ++, 디 펄, 파이썬
그들은 프로그램의 속도를 늦추고 있습니까?
나는 생각한다.
우리는 이것을 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;
유니 코드를 처리 하지 않습니다 .
이 코드는 채색 만합니까?
아니요, 그들은 많은 흥미로운 일을 할 수 있습니다. 시험:
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
.
당신이 경험이없는 경우html그래서 여기에 빠른 튜토리얼
24 개 비트 수단 : 00000000
및 00000000
및 00000000
. 각 8 비트는 특정 색상을위한 것입니다.
1..8
입니다 및 9..16
위해 및 17..24
위해
에 따라서html #FF0000
수단 과 여기있다 : 255;0;0
에html #00FF00
여기에있는 의미 : 0;255;0
의미가 있습니까? 원하는 세 가지 8 비트 값과 결합하십시오.
참조 :
Wikipedia
ANSI 이스케이프 시퀀스
tldp.org
tldp.org
misc.flogisoft.com
내가 기억하지 못하는 블로그 / 웹 페이지
답변
tput
의 setaf
기능 및 매개 변수 와 함께 사용하십시오 1
.
echo "$(tput setaf 1)Hello, world$(tput sgr0)"
답변
echo -e "\033[31m Hello World"
은 [31m
텍스트 색상을 제어합니다 :
30
–37
세트 전경 색상을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!"