Linuxda çıxış echo rəngini necə dəyişdirmək olar?

Eko əmrini istifadə edərək terminalda mətni çap etməyə çalışıram.

Mətn qırmızı rəngdə çap etmək istəyirəm. Bunu necə edə bilərəm?

1285
10 мая '11 в 12:07 2011-05-10 12:07 satheesh.droid 10 may 2011-ci ildə saat 12:07 'də quraşdırılacaq 2011-05-10 12:07
@ 23 cavab

Bu ANSI çıxış kodlarını istifadə edə bilərsiniz:

 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 

Daha sonra bunları skriptinizdə istifadə edin:

 # .---------- 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" 

qırmızı love təzələyir.

@ James-lim şərhindən , echo əmrindən istifadə edərsəniz, ters çöküntüdən qaçmağı təmin etmək üçün bayraqdan istifadə etməyinizə əmin olun .

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

(əlavə boş bir xətt əlavə etmək istəməsəniz, "\n" echo "\n" istifadə edərkən "\n" əlavə etmirsiniz)

1735
10 мая '11 в 12:11 2011-05-10 12:11 cavab Tobias'a 10 May 'da 12:11' də verildi. 2011-05-10 12:11

Hər şey üçün terminal nəzarət kodları yaratmaq üçün zəhmli tput ( Ignacio tput təklif olunur) istifadə edə bilərsiniz.


İstifadə

Xüsusi tput subcommands daha sonra müzakirə edilir.

Düz xətt

Bir sıra əmrlərin bir hissəsi kimi tput axtarın:

 tput setaf 1; echo "this is red text" 

İstifadə edin ; > əvəzinə, tput səhv varsa, mətn hələ də göstərilir.

Shell notasiyası

Başqa bir variant isə kabuk değişkenlerini istifadə etməkdir:

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

tput , terminal tərəfindən xüsusi bir məna kimi şərh edilən simvollar sıralarını yaradır. Onlar özləri göstərilməyəcək. Qeyd edək ki, onlar hələ də fayllara qeyd edilə bilər və ya terminaldan başqa giriş proqramları kimi işlənirlər.

Command substitution

tput çıxışını əmrləri əvəz etməklə birbaşa echo xətlərinə daxil etmək daha rahat ola bilər:

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

Misal

Yuxarıda göstərilən əmr bunu Ubuntu'da edir:

2019

749
08 янв. Drew Noakes cavab Jan 08 2014-01-08 01:25 '14 da 1:25 2014-01-08 01:25

Istifadə edə biləcəyiniz bəzi dəyişənlər bunlardır:

 # 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 , hexsekizli olaraq qaçış xarakteri:

 | | 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 | | | | | | | 

qısa nümunə:

 | 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 istisnası:

Bu kodları xüsusi bash dəyişənlərinizdə istifadə edəcəyik

  • PS0
  • PS1
  • PS2 (= bu işarədir)
  • PS4

Baş onları düzgün şərh edə bilməsi üçün əlavə qaçış simvolları əlavə etməlisiniz. Bu simvol əlavə simvol əlavə olmadan, işləyir, ancaq tarixinizi axtarmaq üçün Ctrl + r istifadə etdiyinizdə problemlərlə qarşılaşacaqsınız.

bash istisna qaydası

Bitirdikdən sonra \[ ANSI kodu çalıştırmadan və əlavə edin \] əlavə etməlisiniz.
Məsələn:
Normal istifadəsində: \033[32mThis is in green\033[0m
PS0 / 1/2/4 üçün: \[\033[32m\]This is in green\[\033[m\]

\[ Bəstələnməmiş simvollar sırasına başlamaq üçün
\] basdırılmaması üçün bir sıra ardıcıllığı tamamlamaq üçün

İpucu: onu yadda saxlamaq üçün əvvəl \[\] əlavə edin və sonra onların arasında ANSI kodu əlavə edə bilərsiniz:
- \[start-ANSI-code\]
- \[end-ANSI-code\]

rəng ardıcıllığı növü:

  1. 3/4 bit
  2. 8 bit
  3. 24 bit

Bu rənglərə daxil olmaqdan əvvəl, bu kodlarla dörd rejimdən xəbərdar olmalıdır:

1. rəng rejimi

Rəng tərzi mətnini dəyişmir. Məsələn, rəngin parlaq və ya qaranlıq olun.

  • 0 sıfırlama
  • 1; adi haldan daha yüngül
  • 2; adi daha qaranlıq

Bu rejim geniş şəkildə dəstəklənmir. Gnome-Terminalı tam dəstəkləyir.

2. mətn rejimi

Bu rejim mətn stilinin rəngini dəyişdirməyi nəzərdə tutur.

  • 3; italik
  • 4; vurğulamaq
  • 5; yanıb-sönən (yavaş)
  • 6; flashing (sürətli)
  • 7; revers dişli
  • 8; gizlət
  • 9; çölə çıxın

və demək olar ki, dəstəklənir.
Məsələn, KDE-Konsole 5; dəstəkləyir 5; lakin Gnome-Terminal dəstək vermir və Gnome 8; dəstəkləyir 8; lakin KDE bilmir.

3. Ön rejim

Bu rejim ön planın rənglənməsi üçün nəzərdə tutulmuşdur.

4. Arxa rejimi

Bu rejim arxa fonda rəngləndirmək üçün nəzərdə tutulmuşdur.

Aşağıdakı cədvəldə ANSI rənginin 3/4 bit versiyası öz əksini tapmışdır.

 |------------+----------+---------+-------+------------------+------------------------------+--------------------------------------| | 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[32m | | | yellow | echo -e "\033[33m####\033[m" | | | 34 | \033[32m | | | blue | echo -e "\033[34m####\033[m" | | | 35 | \033[32m | | | purple | echo -e "\033[35m####\033[m" | real name: magenta = reddish-purple | | 36 | \033[32m | | | cyan | echo -e "\033[36m####\033[m" | | | 37 | \033[32m | | | 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 | | |------------+----------+---------+-------+------------------+------------------------------+--------------------------------------| 

Aşağıdakı cədvəldə ANSI rənginin 8-bit versiyası öz əksini tapıb.

 |------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------| | 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-bit sürətli test:
for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Test"; done

Aşağıdakı cədvəldə ANSI rənginin 24-bit versiyasının xülasəsi verilmişdir.

 |------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------| | 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 | |------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------| 

bəzi ekranlar

8-bit ön .gif formatında davam edir

2019

09 марта '15 в 12:02 2015-03-09 12:02 Şəkiyə Moşiri tərəfindən verilmiş cavab 09.03.2014 12:02 2015-03-09 12:02

setaf və parametr 1 ilə tput istifadə edin.

 echo "$(tput setaf 1)Hello, world$(tput sgr0)" 
164
10 мая '11 в 12:10 2011-05-10 12:10 Cavab Ignacio Vazquez-Abrams tərəfindən 10 May 'da 12:10' də verildi. 2011-05-10 12:10
 echo -e "\033[31m Hello World" 

[31m mətn rəngini nəzarət edir:

  • 30 - 37 ön plan rəngini təyin edir.
  • 40 - 47 fon rəngini təyin edir

Burada rəng kodlarının daha tam siyahısı tapa bilərsiniz .

Mətn rənglərini xəttin sonunda \033[0m qayıtmaq üçün yaxşı bir təcrübə.

104
10 мая '11 в 12:10 2011-05-10 12:10 cavab Neo tərəfindən verilir May 10 '11 12:10 2011-05-10 12:10

Bu rəng keçidi \033[ . Hekayəyə baxın.

Rəng kodları 1;32 (açıq yeşil), 0;34 (göy), 1;34 (mavi) və s. Kimi görünür.

Renk dizilerini \033[0m rəngli keçid ilə rəng kodları ilə 0m . Bir markup dilində açma və bağlanma sekmeleri kimi.

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

Color echo funksiyasına sadə bir həll:

 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!" 
30
25 февр. Jorge Bucaran tərəfindən verilən cavabı 25 fevral 2015-02-25 04:38 '15 'da 4:38' de, 2015-02-25 04:38

Yalnız bir echo üçün rəng dəyişdirmənin ən təmiz yolu bu cür funksiyanı müəyyən etməkdir:

 function coloredEcho(){ local exp=$1; local color=$2; if ! [[ $color =~ '^[0-9]$' ]] ; then case $(echo $color | tr '[:upper:]' '[:lower:]') in black) color=0 ;; red) color=1 ;; green) color=2 ;; yellow) color=3 ;; blue) color=4 ;; magenta) color=5 ;; cyan) color=6 ;; white|*) color=7 ;; # white or invalid color esac fi tput setaf $color; echo $exp; tput sgr0; } 

İstifadə edin:

 coloredEcho "This text is green" green 

Yoxsa Drew cavabında göstərilən rəng kodlarını birbaşa istifadə edə bilərsiniz:

 coloredEcho "This text is green" 2 
25
11 апр. Aprelin 11-də Alireza Mirian tərəfindən verilmiş cavab 2014-04-11 10:36 '14 at 10:36 AM 2014-04-11 10:36

Rəng kodlarını hesablamaq üçün tput istifadə edin. ANSI qaçış kodundan istifadə etməyin (məsələn, \E[31;1m qırmızı üçün), çünki o, daha az portativdir. Məsələn OS X-də Bash, onu dəstəkləmir.

 BLACK=`tput setaf 0` RED=`tput setaf 1` GREEN=`tput setaf 2` YELLOW=`tput setaf 3` BLUE=`tput setaf 4` MAGENTA=`tput setaf 5` CYAN=`tput setaf 6` WHITE=`tput setaf 7` BOLD=`tput bold` RESET=`tput sgr0` echo -e "hello ${RED}some red text${RESET} world" 
18
04 апр. Wilfred Hughes tərəfindən verilmiş cavab 04 Apr 2017-04-04 13:37 '17 saat 13:37 'da 2017-04-04 13:37

Bu sual yenidən cavablandırıldı :-), amma niyə belə deyil.

Əvvəlcə tput istifadə müasir şəraitdə daha çox portativdir, yəni echo -E

Burada sürətli bir bash funksiyası:

  say() { echo "$@" | sed \ -e "s/\(\(@\(red\|green\|yellow\|blue\|magenta\|cyan\|white\|reset\|b\|u\)\)\+\)[[]\{2\}\(.*\)[]]\{2\}/\1\4@reset/g" \ -e "s/@red/$(tput setaf 1)/g" \ -e "s/@green/$(tput setaf 2)/g" \ -e "s/@yellow/$(tput setaf 3)/g" \ -e "s/@blue/$(tput setaf 4)/g" \ -e "s/@magenta/$(tput setaf 5)/g" \ -e "s/@cyan/$(tput setaf 6)/g" \ -e "s/@white/$(tput setaf 7)/g" \ -e "s/@reset/$(tput sgr0)/g" \ -e "s/@b/$(tput bold)/g" \ -e "s/@u/$(tput sgr 0 1)/g" } 

İndi istifadə edə bilərsiniz:

  say @b@green[[Success]] 

almaq:

2019

21 сент. Cavab Əhməd Masud tərəfindən verilir 2017-09-21 00:02 '17 'də 0:02 2017-09-21 00:02' də

Bu cavab üçün @ k-beş sayəsində

 declare -A colors #curl www.bunlongheng.com/code/colors.png # Reset colors[Color_Off]='\033[0m' # Text Reset # Regular Colors colors[Black]='\033[0;30m' # Black colors[Red]='\033[0;31m' # Red colors[Green]='\033[0;32m' # Green colors[Yellow]='\033[0;33m' # Yellow colors[Blue]='\033[0;34m' # Blue colors[Purple]='\033[0;35m' # Purple colors[Cyan]='\033[0;36m' # Cyan colors[White]='\033[0;37m' # White # Bold colors[BBlack]='\033[1;30m' # Black colors[BRed]='\033[1;31m' # Red colors[BGreen]='\033[1;32m' # Green colors[BYellow]='\033[1;33m' # Yellow colors[BBlue]='\033[1;34m' # Blue colors[BPurple]='\033[1;35m' # Purple colors[BCyan]='\033[1;36m' # Cyan colors[BWhite]='\033[1;37m' # White # Underline colors[UBlack]='\033[4;30m' # Black colors[URed]='\033[4;31m' # Red colors[UGreen]='\033[4;32m' # Green colors[UYellow]='\033[4;33m' # Yellow colors[UBlue]='\033[4;34m' # Blue colors[UPurple]='\033[4;35m' # Purple colors[UCyan]='\033[4;36m' # Cyan colors[UWhite]='\033[4;37m' # White # Background colors[On_Black]='\033[40m' # Black colors[On_Red]='\033[41m' # Red colors[On_Green]='\033[42m' # Green colors[On_Yellow]='\033[43m' # Yellow colors[On_Blue]='\033[44m' # Blue colors[On_Purple]='\033[45m' # Purple colors[On_Cyan]='\033[46m' # Cyan colors[On_White]='\033[47m' # White # High Intensity colors[IBlack]='\033[0;90m' # Black colors[IRed]='\033[0;91m' # Red colors[IGreen]='\033[0;92m' # Green colors[IYellow]='\033[0;93m' # Yellow colors[IBlue]='\033[0;94m' # Blue colors[IPurple]='\033[0;95m' # Purple colors[ICyan]='\033[0;96m' # Cyan colors[IWhite]='\033[0;97m' # White # Bold High Intensity colors[BIBlack]='\033[1;90m' # Black colors[BIRed]='\033[1;91m' # Red colors[BIGreen]='\033[1;92m' # Green colors[BIYellow]='\033[1;93m' # Yellow colors[BIBlue]='\033[1;94m' # Blue colors[BIPurple]='\033[1;95m' # Purple colors[BICyan]='\033[1;96m' # Cyan colors[BIWhite]='\033[1;97m' # White # High Intensity backgrounds colors[On_IBlack]='\033[0;100m' # Black colors[On_IRed]='\033[0;101m' # Red colors[On_IGreen]='\033[0;102m' # Green colors[On_IYellow]='\033[0;103m' # Yellow colors[On_IBlue]='\033[0;104m' # Blue colors[On_IPurple]='\033[0;105m' # Purple colors[On_ICyan]='\033[0;106m' # Cyan colors[On_IWhite]='\033[0;107m' # White color=${colors[$input_color]} white=${colors[White]} # echo $white for i in "${!colors[@]}" do echo -e "$i = ${colors[$i]}I love you$white" done 

Nəticə

2019

28 апр. Cavab kyo tərəfindən verilir 28 Apr 2017-04-28 03:50 '17 də 3:50 2017-04-28 03:50

Bu kodlar mənim Ubuntu qutuda işləyir:

2019

10
05 сент. Eric Leschinski tərəfindən verilmiş cavab Sep 05 2014-09-05 21:40 '14 saat 21:40 'də 2014-09-05 21:40

Okunabilirlik üçün

Kodun okunabilirliğini yaxşılaşdırmaq istəyirsinizsə, əvvəlcə xətt daxil edin və daha sonra sed istifadə edərək rəng əlavə edə bilərsiniz:

 echo 'Hello World!' | sed $'s/World/\e[1m> 
9
05 июля '14 в 11:28 2014-07-05 11:28 Cavab Ooker tərəfindən 05 iyul '14' də saat 11:28 'də verildi 2014-07-05 11:28

Mənim sevimli cavab bloomEcho isə.

Başqa bir variant yayımlamaq üçün bu kiçik xcol alətini nəzərdən keçirə bilərsiniz.

https://ownyourbits.com/2017/01/23/colorize-your-stdout-with-xcol/

bunu grep kimi istifadə edirsiniz və məsələn, hər arqument üçün stdininizi fərqli bir rəng ilə rəngləndirəcəkdir

 sudo netstat -putan | xcol httpd sshd dnsmasq pulseaudio conky tor Telegram firefox "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+" ":[[:digit:]]+" "tcp." "udp." LISTEN ESTABLISHED TIME_WAIT 

2019

24 янв. Cavab 24 yanvar tarixində nachoparker tərəfindən verilir 2017-01-24 11:23 '17 də 11:23 2017-01-24 11:23

Bu cavabı , tənbəlliyə görə genişləndirin:

 function echocolor() { # $1 = string COLOR='\033[1;33m' NC='\033[0m' printf "${COLOR}$1${NC}\n" } echo "This won't be colored" echocolor "This will be colorful" 
6
23 сент. cavab Mahn 23 Sentyabr verilir. 2015-09-23 19:21 '15 at 19:21 2015-09-23 19:21

ANSI 7-nin əksər videolarının faydasını heç kim görməyib.

Он остается читаемым на любых цветовых схемах терминальных схем, черном или белом фоне или других палитрах фантазий, заменяя цвета переднего плана и фона.

Например, для красного фона, который работает повсюду:

 echo -e "\033[31;7mHello world\e[0m"; 

Вот как это выглядит при изменении встроенных схем терминала:

2019

ответ дан Cryptopat 21 янв. '18 в 13:51 2018-01-21 13:51

Я написал swag , чтобы достичь именно этого.

Вы можете просто сделать

 pip install swag 

Теперь вы можете установить все команды escape как txt файлы в данный пункт назначения через:

 swag install -d <colorsdir> 

Və ya daha asan:

 swag install 

Что установит цвета в ~/.colors .

Либо вы используете их так:

 echo $(cat ~/.colors/blue.txt) This will be blue 

Или этот способ, который я нахожу более интересным:

 swag print -c red -t underline "I will turn red and be underlined" 

Проверьте это на asciinema !

3
ответ дан throws_exceptions_at_you 19 февр. '17 в 0:30 2017-02-19 00:30

И это то, что я использовал, чтобы увидеть всю комбинацию и решить, что читается круто:

 for (( i = 0; i < 8; i++ )); do for (( j = 0; j < 8; j++ )); do printf "$(tput setab $i)$(tput setaf $j)(b=$i, f=$j)$(tput sgr0)\n" done done 
3
ответ дан isntn 04 февр. '17 в 17:03 2017-02-04 17:03

Я только что объединил хорошие уловки во всех решениях и получил:

 c_echo(){ RED="\033[0;31m" GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color printf "${!1}${2} ${NC}\n" } 

И вы можете просто назвать это как:

 c_echo "RED" "Helloworld" 
3
ответ дан Andrew Naguib 25 нояб. '18 в 2:09 2018-11-25 02:09

Вы должны обязательно использовать tput над необработанными контрольными последовательностями ANSI.

Поскольку существует большое количество различных языков управления терминалом, обычно система имеет промежуточный уровень связи. Реальные коды просматриваются в базе данных для текущего типа терминала, и вы даете стандартизованные запросы API или (из оболочки) команде.

Одна из этих команд - tput . tput принимает набор сокращений, называемых именами возможностей и любыми параметрами, если это необходимо, затем просматривает правильные escape-последовательности для обнаруженного терминала в базе данных terminfo и печатает правильные коды (терминал, мы надеемся, понимает).

от http://wiki.bash-hackers.org/scripting/terminalcodes

Тем не менее, я написал небольшую вспомогательную библиотеку под названием bash-tint , которая добавляет еще один слой поверх tput, что делает его еще проще в использовании (imho):

Пример: tint "white(Cyan(T)Magenta(I)Yellow(N)Black(T)) is bold(really) easy to use."

Дала бы следующий результат: 2019

ответ дан ArtBIT 23 апр. '18 в 13:14 2018-04-23 13:14

Вот небольшой маленький script, который я недавно собрал, чтобы раскрасить любой входной канал, вместо использования "Туалет".

File: color.bsh

 #!/usr/bin/env bash ## AMDanischewski 2015+(c) Free - for (all (uses and ## modifications)) - except you must keep this notice intact. declare INPUT_TXT="" declare ADD_LF="\n" declare -i DONE=0 declare -r COLOR_NUMBER="${1:-247}" declare -r ASCII_FG="\\033[38;05;" declare -r COLOR_OUT="${ASCII_FG}${COLOR_NUMBER}m" function show_colors() { ## perhaps will add bg 48 to first loop eventually for fgbg in 38; do for color in {0..256} ; do echo -en "\\033[${fgbg};5;${color}m ${color}\t\\033[0m"; (($((${color}+1))%10==0))  echo; done; echo; done } if [[ ! $# -eq 1 || ${1} =~ ^-. ]]; then show_colors echo " Usage: ${0##*/} <color fg>" echo " Eg echo \"Hello world!\" | figlet | ${0##*/} 54" else while IFS= read -r PIPED_INPUT || { DONE=1; ADD_LF=""; }; do PIPED_INPUT=$(sed 's#\\#\\\\#g' <<< "${PIPED_INPUT}") INPUT_TXT="${INPUT_TXT}${PIPED_INPUT}${ADD_LF}" ((${DONE}))  break; done echo -en "${COLOR_OUT}${INPUT_TXT}\\033[00m" fi 

Затем назовите его красным цветом (196):
$> echo "text you want colored red" | color.bsh 196

0
ответ дан user4401178 17 марта '15 в 0:50 2015-03-17 00:50

Вот простейшее и читаемое решение. С bashj ( https://sourceforge.net/projects/bashj/ ) вы просто выберете одну из следующих строк:

 #!/usr/bin/bash W="Hello world!" echo $W R=130 G=60 B=190 echo u.colored($R,$G,$B,$W) echo u.colored(255,127,0,$W) echo u.red($W) echo u.bold($W) echo u.italic($W) Y=u.yellow($W) echo $Y echo u.bold($Y) 

256x256x256 цветов доступны, если у вас есть поддержка цвета в приложении терминала.

-2
ответ дан Fil 13 июня '18 в 10:34 2018-06-13 10:34

Так же, как что-то немного, прохождение через grep будет выделять его как красный (но только красный). Вы также можете использовать именованные каналы, чтобы ваша строка ближе к концу строки:

  grep '.*' --color=always <(echo "foobar") 
-3
ответ дан FinalDuty 30 апр. '15 в 12:29 2015-04-30 12:29
 red='\e[0;31m' NC='\e[0m' # No Color echo -e "${red}Hello Stackoverflow${NC}" 

Этот ответ правильный, за исключением того, что вызов цветов не должен находиться внутри кавычек.

 echo -e ${red}"Hello Stackoverflow"${NC} 

Должен сделать трюк.

-4
ответ дан Dale Corns 25 июня '14 в 20:54 2014-06-25 20:54

Другие вопросы по меткам или Задайте вопрос