ලිනක්ස් හි echo හි ප්‍රතිදාන වර්ණය වෙනස් කරන්නේ කෙසේද


1773

මම echo විධානය භාවිතා කරමින් පර්යන්තයේ පෙළක් මුද්‍රණය කිරීමට උත්සාහ කරමි.

මට රතු පාටින් පෙළ මුද්‍රණය කිරීමට අවශ්‍යයි. මට එය කළ හැක්කේ කෙසේද?


30
මෙම සබැඳිය බෙහෙවින් උපකාරී වේ: misc.flogisoft.com/bash/tip_colors_and_formatting
Pithikos

මේ දෙස බලන්න, එහිදී මම ඔබේ ප්‍රශ්නයට පිළිතුරු දුන්නා: stackoverflow.com/a/48216286/3782119
අමානි

Answers:


2338

ඔබට මෙම 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රතු පැහැයෙන් මුද්‍රණය කරයි.

@ ජේම්ස්-ලිම්ගේ විවරණයෙන්, ඔබ echoවිධානය භාවිතා කරන්නේ නම් , බැක්ස්ලෑෂ් ගැලවී යාමට ඉඩ දීම සඳහා -e ධජය භාවිතා කිරීමට වග බලා ගන්න .

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

( "\n"ඔබට අතිරේක හිස් රේඛාවක් එක් කිරීමට අවශ්‍ය නම් මිස echo භාවිතා කරන විට එකතු නොකරන්න )


11
මට වැඩ කරන්නේ නැත - ප්‍රතිදානය:\e[0;31mHello Stackoverflow\e[0m
බෙන් හැරල්ඩ්

173
ඔබ එය "-e" සමඟ උත්සාහ කළාද? echoබැක්ස්ලෑෂ් ගැලවීම සක්‍රීය කිරීමට එය පවසයි .
ජේම්ස් ලිම්

143
MacOSX හි, \x1Bඒ වෙනුවට භාවිතා කිරීම \e. \033සියලුම වේදිකා සඳහා හරි.
ෂියාඕ

4
කුහුඹුවන්ගේ දේපල ගොනුවක එසැක් සඳහා යුනිකෝඩ් භාවිතා කරන්න, උදා: රතු = \ u001b [0; 31m
ෂොන්කි ලිනක්ස් පරිශීලක

20
Msanford tput සඳහා සාදන ලද පරිදි, මෙන්න "ANSI-Rainbow"for (( i = 30; i < 38; i++ )); do echo -e "\033[0;"$i"m Normal: (0;$i); \033[1;"$i"m Light: (1;$i)"; done
සෑම කෙනෙකුම

986

සියලු වර්ගවල දේවල් සඳහා පර්යන්ත පාලන කේත නිෂ්පාදනය කිරීම සඳහා ඔබට නියම tputවිධානය භාවිතා කළ හැකිය ( ඉග්නේෂියෝගේ පිළිතුරෙන් යෝජනා කර ඇත ).


භාවිතය

නිශ්චිත tputඋප විධානයන් පසුව සාකච්ඡා කරනු ලැබේ.

සෘජු

tputවිධාන අනුපිළිවෙලක කොටසක් ලෙස අමතන්න :

tput setaf 1; echo "this is red text"

පා still ය තවමත් පෙන්වන දෝෂ තිබේ නම් ;ඒ වෙනුවට භාවිතා කරන්න .&&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

විවිධ සංඛ්‍යා භාවිතා කරන වර්ණ සැකසීමේ කාර්යයන්හි ( setbඒ වෙනුවට setab, සහ setfඒ වෙනුවට setaf) ANSI නොවන අනුවාදයන් මෙහි ඇත.

පෙළ ප්‍රකාර විධාන

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

Compiz wobbly කවුළු සමඟ , 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 වන පේළියෙන් ආරම්භ වන විශාල වගුවේ තීරුවේ ලැයිස්තුගත කර ඇත .)

14
නියම පිළිතුර. මට වැඩිපුරම උදව් කළේ මෙයයි. මා කල්පනා කරන්නේ කුමක්දැයි කල්පනා කළ වෙනත් ඕනෑම කෙනෙකුට, $()එය විධාන ආදේශනයකි . සියල්ලම tput af 1කරන්නේ වර්ණ කේත නූල් ජනනය කිරීමයි, නමුත් කේත මුද්‍රණය කළ හැකි අක්ෂර නොවේ, එබැවින් ටයිප් කිරීමෙන් tput af 1පමණක් හිස් ප්‍රතිදානයක් ලැබෙනු ඇත.
ක්‍රිස් මිඩ්ල්ටන්

5
සටහන: ඔබ CygWin භාවිතා කරන්නේ නම් සහ tput install එකක් නොමැති නම්ncurses
Enrico

3
පැහැදිළි, වර්ණවත් කබොලකට කබොල
nickboldt

1
මෙම සම්පූර්ණ ලැයිස්තුවක් සඳහා tputවර්ණ Unix මෙහෙයුම් StackExchange මෙම පිළිතුර පරීක්ෂා
ඇන්ඩෲ

මම හිතන්නේ අවකාශයක් reset=`tput sgr0`තිබිය යුතුයි reset=`tput sgr 0`.
වඳුරන්

866

ඔබට භාවිතා කළ හැකි සමහර විචල්‍යයන්:

# 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   | 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 යේ වර්ණ විලාසය වෙනස් කරයි. උදාහරණයක් ලෙස වර්ණය දීප්තිමත් හෝ අඳුරු කරන්න.

  • 0 යළි පිහිටුවන්න
  • 1; සාමාන්‍යයට වඩා සැහැල්ලුයි
  • 2; සාමාන්‍යයට වඩා අඳුරු ය

මෙම මාදිලිය පුළුල් ලෙස සහාය නොදක්වයි. එය Gnome-Terminal මත පූර්ණ සහය දක්වයි.

2. පෙළ ප්‍රකාරය

මෙම මාදිලිය පා NOT යේ වර්ණය වෙනස් කිරීම සඳහා වේ.

  • 3; ඇල අකුරු
  • 4; යටි ඉරි
  • 5; දැල්වීම (මන්දගාමී)
  • 6; දැල්වීම (වේගවත්)
  • 7; ආපසු හැරවීම
  • 8; සඟවන්න
  • 9; කපා හරින්න

සහ පාහේ සහාය දක්වයි.
උදාහරණයක් ලෙස KDE-Konsole සහාය දක්වන 5;නමුත් Gnome-Terminal සහාය නොදක්වන අතර Gnome සහාය දක්වයි 8;නමුත් KDE සහාය නොදක්වයි.

3. පෙරබිම් මාදිලිය

මෙම මාදිලිය පෙරබිම වර්ණ ගැන්වීම සඳහා වේ.

4. පසුබිම් ප්‍රකාරය

මෙම මාදිලිය පසුබිම වර්ණ ගැන්වීම සඳහා වේ.

පහත වගුවේ ANSI- වර්ණයෙහි 3/4 බිට් අනුවාදයේ සාරාංශයක් පෙන්වයි

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

පහත වගුවේ ANSI- වර්ණයෙහි බිට් 8 අනුවාදයේ සාරාංශයක් පෙන්වයි

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

පහත වගුවේ ANSI- වර්ණයෙහි බිට් 24 අනුවාදයේ සාරාංශයක් පෙන්වයි

|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| 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-බිට් සාරාංශය a .gif

foreground.gif

පසුබිම් 8-බිට් සාරාංශය a .gif

background.gif

ඒවායේ සාරාංශ සමඟ වර්ණ සාරාංශය

රූප විස්තරය මෙහි ඇතුළත් කරන්න රූප විස්තරය මෙහි ඇතුළත් කරන්න රූප විස්තරය මෙහි ඇතුළත් කරන්න රූප විස්තරය මෙහි ඇතුළත් කරන්න

blinking KDE- පර්යන්තය මත

කේඩීඊ-බැබළීම

Cඔබට තවත් පෙන්වන සරල කේතයක්

cecho_screenshot

මෙම වර්ණ සමඟ කටයුතු කිරීම සඳහා මා විසින් වැඩි දියුණු කරන ලද මෙවලමක්:

bline


වර්ණ මාදිලියේ වෙඩි තැබීම

ෆේඩ්-සාමාන්‍ය-දීප්තිමත්

පෙළ මාදිලියේ වෙඩි තැබීම

පෙළ-මාදිලිය පමණි

සංයෝජනය හරි

ඒකාබද්ධ කරන්න

තවත් වෙඩි


උසස් පරිශීලකයින් සහ ක්‍රමලේඛකයින් සඳහා උපදෙස් සහ උපක්‍රම:

අපට මෙම කේත ක්‍රමලේඛන භාෂාවකින් භාවිතා කළ හැකිද?

ඔව් ඔබට පුළුවන්. මම අත්දැකීම් ලබා ගත්තා, , , ,

ඔවුන් වැඩසටහනක වේගය අඩු කරනවාද?

මම හිතන්නේ නෑ.

අපට මේවා වින්ඩෝස් හි භාවිතා කළ හැකිද?

3/4-bit ඔව්, ඔබ වින් -7 හි තිර දර්ශන කිහිපයක් සමඟ කේතය සම්පාදනය කරන්නේ නම්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නාමයක ගබඩා කරන්න: (= පර්ල් වර්ණ අක්ෂර වින්‍යාසය) ඉන්පසු ගොනුව වලංගු ලෙස 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 බිට් අදහස්: 00000000හා 00000000හා 00000000. සෑම බිටු 8 ක්ම නිශ්චිත වර්ණයක් සඳහා වේ.
1..8සඳහා සහ 9..16සඳහා සහ 17..24සඳහා
ඒ නිසා දී #FF0000තේරුම සහ මෙන්න එය: 255;0;0
in #00FF00අදහස් : මෙහි වන 0;255;0
පසුබිම අවබෝධයක් ඇති බව කුමක්ද? ඔබට අවශ්‍ය වර්ණය මෙම බිටු 8 අගයන් සමඟ ඒකාබද්ධ කරන්න.


යොමුව:
විකිපීඩියා
ANSI ගැලවීමේ අනුපිළිවෙල
tldp.org
tldp.org
misc.flogisoft.com
මට මතක නැති සමහර බ්ලොග් / වෙබ් පිටු


74
මෙම පිළිතුර ගැන වෙනත් කිසිවෙකු සැබවින්ම මවිතයට පත් නොවේද ??
බෙන්ජ්

2
E නීල්ගුයිලින්ඩ්බර්ග් අෂ්ට අක්‍ෂර නැත මෙම දෝෂය Node.js හි කොටසක් නොවේ. x1B[එය තුරන් කිරීම සඳහා ඔබට භාවිතා කළ හැකිය .
ෂකිබා මොෂිරි

1
D ෂාකිබා මොෂිරි මෙම මාතෘකාව පිළිබඳ නිබන්ධනයක් ලිවීය. XD විහිළු හැර, එවැනි සවිස්තරාත්මක පිළිතුරක් සඳහා ප්‍රීති! ෝෂා කරයි!
SH '

1
මා මෙහි පැමිණියේ ඔබ රූප සහිත රේඛා වැනි මේ මහා මානව සම්පත් කළේ කෙසේදැයි දැන ගැනීමටයි! හරිම ලස්සනයි!
සේවකයා

1
වාව්, නියමයි! : -DI ඉතා හොඳ කාර්යයක් භාවිතා කිරීම ඉතා පහසුය, එබැවින් මම එය බෙදා ගත යුතුය ;-) github.com/ppo/bash-colors
පැස්කල් පොලියුනස්

191

tputහි setafහැකියාව සහ පරාමිතිය සමඟ භාවිතා කරන්න 1.

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

8
මෙය හොඳම විකල්පය විය යුතුය. දේ tput කරන්නේ එය පර්යන්තය තොරතුරු කියවීමට සහ නිවැරදිව ඔබ වෙනුවෙන් ANSI කේතය පලා දිය වේ. වැනි කේතය සමහර පර්යන්තවල \033[31mඇති කියවීම් පුස්තකාලය බිඳ දමනු ඇත .
ටියන් චෙන්

45
සරල පුඩුවක් සමඟ වර්ණ ගවේෂණය කරන්න ( iවැඩි සෙවන සඳහා ඉහළ සීමාව වැඩි කරන්න):for (( i = 0; i < 17; i++ )); do echo "$(tput setaf $i)This is ($i) $(tput sgr0)"; done
msanford

2
Tput කේත වල HOWTO මෙන්න: tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html
maxywb

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

මෙම [31mපෙළ වර්ණය පාලනය:

  • 30- පෙරබිම් වර්ණය 37සකසයි
  • 40- පසුබිම් වර්ණය 47සකසයි

වර්ණ කේත පිළිබඳ වඩාත් සම්පූර්ණ ලැයිස්තුවක් මෙහි සොයාගත හැකිය .

පෙළ වර්ණය නැවත \033[0mනූල් අවසානයේ නැවත සැකසීම හොඳ පුරුද්දකි .


2
echo -e "33 033 [31m ආයුබෝවන් වර්ල්ඩ්", [31m යනු වර්ණයයි
නවක කළ හැකි

38

මම සියලු විසඳුම්වල හොඳ ඇල්ලීම් ඒකාබද්ධ කර අවසන් කර ඇත:

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"

1
ඉතා ප්‍රායෝගික, මට මගේ පිටපතෙහි වැඩ කිරීම සඳහා තනි මිල ගණන් හරිත, යෙලෝ, එන්.සී. සඳහා ද්විත්ව මිල ගණන් ආදේශ කිරීමට සිදුවිය.
ionescu77

1
නියම විසඳුම !!
ඩේවිඩ් කාරුකි

32

මෙය වර්ණ ස්විචයයි \033[ . ඉතිහාසය බලන්න .

වර්ණ කේත වැනි ය 1;32(ළා ෙකොළ), 0;34(නිල්),1;34 ආදිය, (ලා නිල්)

අපි වර්ණ ස්විචය සමග වර්ණ අනුක්රමය අවසන් \033[හා 0mඑම කිසිදු -color කේතය. සලකුණු භාෂාවෙන් ටැබ් විවෘත කිරීම සහ වැසීම වැනි.

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

1
මම අවසාන textවිචල්‍යය text="$color${@: 2}${code}0m"මේ ආකාරයෙන් වෙනස් කරමි වර්ණ පරාමිතිය හැර මුළු රේඛාවම වර්ණවත් වනු ඇත.
ෂයිරොන් ටොලිඩෝ

ඉහත සඳහන් කළ කිහිප වතාවක්ම ටොමාසාලින් ප්‍රතිරාවයට එක් කරන්න
ආටෙම් මෙඩ්විඩෙව්

විල්ෆ්‍රඩ් හියුස් යෝජනා කර ඇති පරිදි, එය tputවඩා අතේ ගෙන යා හැකි බැවින් භාවිතා කිරීම වඩා හොඳය - මැකෝස් හි බාෂ් හි ද ක්‍රියා කරයි. එම නිසා මම ඇත්ත වශයෙන්ම මෙම පිළිතුරෙන් ඇලිරේසා මිරියන්ගේ
ග්‍රෙග් ඩුබිකි

30

එක් අයෙකුට පමණක් වර්ණය වෙනස් echoකිරීමට පිළිවෙලක් වන්නේ එවැනි ශ්‍රිතයක් අර්ථ දැක්වීම ය:

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

භාවිතය:

coloredEcho "This text is green" green

නැතහොත් ඔබට ඩ්‍රූගේ පිළිතුරෙහි සඳහන් වර්ණ කේත කෙලින්ම භාවිතා කළ හැකිය :

coloredEcho "This text is green" 2

ඔබ -necho "Red `coloredEcho "fox" red` jumps over the lazy dog"
දෝංකාරයට

25

tputවර්ණ කේත ගණනය කිරීමට භාවිතා කරන්න . ANSI ගැලවීමේ කේතය (උදා: \E[31;1mරතු සඳහා) භාවිතා කිරීමෙන් වළකින්න . OS X හි Bash, උදාහරණයක් ලෙස, එයට සහාය නොදක්වයි.

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"

19

මෙම ප්‍රශ්නයට නැවත නැවතත් පිළිතුරු ලබා දී ඇත :-) නමුත් ඇයි නැත්තේ.

tputASCII කේත අතින් එන්නත් කරනවාට වඩා පළමු භාවිතය නවීන පරිසරවල අතේ ගෙන යා හැකියecho -E

මෙන්න ඉක්මන් බැෂ් ශ්‍රිතයක්:

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

දැන් ඔබට භාවිතා කළ හැකිය:

 say @b@green[[Success]] 

ලබා ගැනීමට:

තද-හරිත සාර්ථකත්වය

අතේ ගෙන යා හැකි ආකාරය පිළිබඳ සටහන් tput

පළමු වරට tput(1)ප්‍රභව කේතය උඩුගත කරන ලද්දේ 1986 සැප්තැම්බර් මාසයේදී ය

tput(1) 1990 දශකයේ දී එක්ස් / ඕපන් ශාප අර්ථකථන වලින් ලබා ගත හැකිය (1997 ප්‍රමිතියට පහත සඳහන් අර්ථ නිරූපණයන් ඇත).

ඉතින්, එය ( තරමක් ) සර්වසම්පූර්ණයි.


මේක නියමයි! මෙය දැන සිටියේ නැත. ලබා ගත හැකි ආකාරය ගැන ඔබට යමක් පැවසිය හැකිද tput? එය ස්ථාපනය කිරීමට පරිපාලක අයිතිවාසිකම් නොමැති බොහෝ සේවාදායකයන්හි එය තිබේද? මෙම තාක්ෂණය මුලින්ම 'නව නිපැයුමක්' කළ ස්ථානයට ඔබට සම්බන්ධයක් තිබේද?
රෙඩ්සැන්ඩ්‍රෝ

3
tput යනු මෙය කිරීමට ප්‍රමිතිවලට අනුකූල වන ක්‍රමයයි, එහිදී එය පර්යන්ත හැකියාවන් දැන ගැනීමෙන් ඔබ සම්පූර්ණයෙන්ම ස්වාධීන වේ. ටර්මිනලය ලබා දී ඇති හැකියාවට සහය නොදක්වන්නේ නම්, ඉස්කුරුප්පු ඇණ ගැසීමේ කේත පිටතට නොගෙන එය කළ හැකි ඕනෑම දෙයකට එය පහත් කරනු ඇත.
අහමඩ් මසුඩ්

1
කර්සරයේ පිහිටීම බාෂ් රේඛාවලින් අවුල් වන බැවින් මම මෙම ක්‍රමය භාවිතා කිරීම නවතා දැමුවෙමි. එය පේළියේ අවසානයට පෙර අහඹු ලෙස ඔතා, නිවස හෝ ඊතල යතුරු භාවිතා කරන විට රේඛාවේ ආරම්භය දක්වා ආපසු නොයනු ඇත. අවුල්සහගත අත්පොතෙන් පැන යාමේ කේත වෙත ආපසු යාම මෙම ගැටළුව විසඳයි.
රෙඩ්සැන්ඩ්‍රෝ

2
EsResandro - ඔබ එය පරතරය රහිත කොටස් $PS1නොමැතිව භාවිතා කරන \[...\]නිසාද? Tput නූල් සමඟ Bash PS1 සලකුණු භාවිතා කිරීම දිගටම කරගෙන යන්න.
ටෝබි ස්පයිට්

Sed උපයෝගීතාවයේ වෙනස්කම් නිසා මෙම කාර්යය MacOsX මත සම්පූර්ණයෙන්ම ක්‍රියාත්මක නොවන බව සලකන්න: unix.stackexchange.com/questions/13711/…
ජෙෆ්

16

මම එම මාතෘකාව පිළිබඳ තොරතුරු සොයමින් සිටියදී ෂකීබා මොෂිරිගේ අපූරු පිළිතුර මට හමු විය… එවිට මට අදහසක් තිබුණි… එය අවසන් වූයේ ඉතා පහසුවෙන් භාවිතා කළ හැකි ඉතා හොඳ කාර්යයකිනි 😁
එබැවින් මම එය බෙදා ගත යුතුය

https://github.com/ppo/bash-colors

භාවිතය: $(c <flags>) ඇතුළත echo -eහෝprintf

 ┌───────┬─────────────────┬──────────┐   ┌───────┬─────────────────┬──────────┐
  Code   Style            Octal        Code   Style            Octal    
 ├───────┼─────────────────┼──────────┤   ├───────┼─────────────────┼──────────┤
    -    Foreground       \033[3..       B    Bold             \033[1m  
    _    Background       \033[4..       U    Underline        \033[4m  
 ├───────┼─────────────────┼──────────┤      F    Flash/blink      \033[5m  
    k    Black            ......0m       N    Negative         \033[7m  
    r    Red              ......1m    ├───────┼─────────────────┼──────────┤
    g    Green            ......2m       L    Normal (unbold)  \033[22m 
    y    Yellow           ......3m       0    Reset            \033[0m  
    b    Blue             ......4m    └───────┴─────────────────┴──────────┘
    m    Magenta          ......5m 
    c    Cyan             ......6m 
    w    White            ......7m 
 └───────┴─────────────────┴──────────┘

උදාහරණ:

echo -e "$(c 0wB)Bold white$(c) and normal"
echo -e "Normal text… $(c r_yB)BOLD red text on yellow background… $(c _w)now on
  white background… $(c 0U) reset and underline… $(c) and back to normal."

15

පෙළ සහ පසුබිම යන දෙකම සඳහා අපට බිට්ස් 24 RGB සත්‍ය වර්ණ භාවිතා කළ හැකිය !

 ESC[38;2;⟨r⟩;⟨g⟩;⟨bm  /*Foreground color*/
 ESC[48;2;⟨r⟩;⟨g⟩;⟨bm  /*Background color*/

උදාහරණ රතු පෙළ සහ සංවෘත ටැගය:

 echo -e "\e[38;2;255;0;0mHello world\e[0m"

උත්පාදක යන්ත්රය:

24-බිට්: බිටු 16 සිට 24 දක්වා වර්ණ සහිත “සත්‍ය වර්ණ” ග්‍රැෆික් කාඩ්පත් සුලභ වූ විට, එක්ස්ටර්ම්, කේඩීඊ හි කොන්සෝල් මෙන්ම සියලුම ලිබෙට් පාදක පර්යන්ත (ග්නෝම් ටර්මිනලය ඇතුළුව) බිට් 24 පෙරබිම් සහ පසුබිම් වර්ණ සැකසීම් සඳහා සහාය වේ https: / /en.wikipedia.org/wiki/ANSI_escape_code#24-bit

මගේ ස්ක්‍රිප්ට් වල භාවිතා කිරීම ආරක්ෂිතද?

ඔව්! බිටු 8 සහ 16 පර්යන්ත මඟින් ලබා ගත හැකි පලතේ පරාසය මත වර්ණයක් ලෙස පෙන්වනු ඇත, හොඳම වෙනස තබා ගනිමින්, බිඳීම් නොමැත!


එසේම, ANSI කේතය 7 ආපසු හරවන ලද වීඩියෝවේ ඇති ප්‍රයෝජනය කිසිවෙකු දුටුවේ නැත .

ඕනෑම පර්යන්ත යෝජනා ක්‍රමයක වර්ණ, කළු හෝ සුදු පසුබිම්, හෝ වෙනත් ෆැන්ටසි පැලට් මත පෙර සහ පසුබිම් වර්ණ හුවමාරු කර ගැනීමෙන් එය කියවිය හැකිය.

උදාහරණය, ​​සෑම තැනකම ක්‍රියාත්මක වන රතු පසුබිමක් සඳහා:

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

ටර්මිනල් බිල්ට් යෝජනා ක්‍රම වෙනස් කිරීමේදී එය පෙනෙන්නේ මෙයයි:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

Gif සඳහා භාවිතා කරන ලූප් ස්ක්‍රිප්ට් එක මෙයයි.

for i in {30..49};do echo -e "\033[$i;7mReversed color code $i\e[0m Hello world!";done

Https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters බලන්න


14

මෙම පිළිතුර සඳහා @ k-5 ට ස්තූතියි

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

ප්‍රති ult ලය

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඔබේ රූපය සඳහා ඔබේ වර්ණය තෝරා ගැනීමට මෙම රූපය උපකාරී වේ යැයි සිතමු: D.


මේ සඳහා bash v4 අවශ්‍ය බව සැලකිල්ලට ගත යුතුය.
සාරාංශ

14

ඔබ භාවිතා කරන්නේ නම් zshහෝbash

black() {
    echo -e "\e[30m${1}\e[0m"
}

red() {
    echo -e "\e[31m${1}\e[0m"
}

green() {
    echo -e "\e[32m${1}\e[0m"
}

yellow() {
    echo -e "\e[33m${1}\e[0m"
}

blue() {
    echo -e "\e[34m${1}\e[0m"
}

magenta() {
    echo -e "\e[35m${1}\e[0m"
}

cyan() {
    echo -e "\e[36m${1}\e[0m"
}

gray() {
    echo -e "\e[90m${1}\e[0m"
}

black 'BLACK'
red 'RED'
green 'GREEN'
yellow 'YELLOW'
blue 'BLUE'
magenta 'MAGENTA'
cyan 'CYAN'
gray 'GRAY'

මාර්ගගතව උත්සාහ කරන්න


12

මෙම කේත මගේ උබුන්ටු කොටුවේ වැඩ කරයි:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

echo -e "\x1B[31m foobar \x1B[0m"
echo -e "\x1B[32m foobar \x1B[0m"
echo -e "\x1B[96m foobar \x1B[0m"
echo -e "\x1B[01;96m foobar \x1B[0m"
echo -e "\x1B[01;95m foobar \x1B[0m"
echo -e "\x1B[01;94m foobar \x1B[0m"
echo -e "\x1B[01;93m foobar \x1B[0m"
echo -e "\x1B[01;91m foobar \x1B[0m"
echo -e "\x1B[01;90m foobar \x1B[0m"
echo -e "\x1B[01;89m foobar \x1B[0m"
echo -e "\x1B[01;36m foobar \x1B[0m"

මෙය abcd අකුරු සියල්ලම විවිධ වර්ණවලින් මුද්‍රණය කරයි:

echo -e "\x1B[0;93m a \x1B[0m b \x1B[0;92m c \x1B[0;93m d \x1B[0;94m"

පුඩුවක් සඳහා:

for (( i = 0; i < 17; i++ )); 
do echo "$(tput setaf $i)This is ($i) $(tput sgr0)"; 
done

රූප විස්තරය මෙහි ඇතුළත් කරන්න


2
මාර්ගය වන විට: මෙය උබුන්ටු හි නිශ්චිත සංස්කරණයක් ස්ථාපනය කිරීම මත බොහෝ දුරට රඳා නොපවතී, නමුත් පුට්ටි භාවිතා කිරීම!
urzeit කරන්න

මට වැඩ කරන එකක් පමණි! ඔබට ස්තුතියි!
මාර්ක්

10

කියවීමේ හැකියාව සඳහා

ඔබට කේතයේ කියවීමේ හැකියාව වැඩි දියුණු කිරීමට අවශ්‍ය නම් , ඔබට echoපළමුව නූල් දැමිය හැකි අතර පසුව භාවිතා කිරීමෙන් වර්ණය එක් කරන්න sed:

echo 'Hello World!' | sed $'s/World/\e[1m&\e[0m/' 

1
මම ඇත්තටම මේ පිළිතුරට කැමතියි! කරුණාකර sed විධානයෙහි $ පැහැදිලි කළ හැකිද?
පැට්‍රික්

2
<'<Something>' යනු බාෂ් සඳහා මිස sed නොවේ. එය පැනීමේ අනුක්‍රමයක් ලෙස process e සැකසීමට බාෂ්ට පවසන අතර "පැන යාම" අක්‍ෂරයක් දමන්න. සාමාන්‍යයෙන් ටැබ් එකක් හෝ නව රේඛාවක් ලබා ගැනීමට a '\ t' හෝ $ '\ n' වැනි සරල ආකාර ඔබ දකිනු ඇත. විධානය.
dsz

8

මෙතෙක් මා කැමතිම පිළිතුර පාටයි.

වෙනත් විකල්පයක් පළ කිරීම සඳහා, ඔබට මෙම කුඩා මෙවලම xcol පරීක්ෂා කළ හැකිය

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

ඔබ එය grep මෙන් භාවිතා කරන අතර, එය එක් එක් තර්කය සඳහා එහි වර්ණය වෙනස් වර්ණයකින් වර්ණවත් කරයි

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

xcol උදාහරණය

Sed විසින් පිළිගන්නා ඕනෑම නිත්‍ය ප්‍රකාශනයක් එය පිළිගන්නා බව සලකන්න.

මෙම මෙවලම පහත අර්ථ දැක්වීම් භාවිතා කරයි

#normal=$(tput sgr0)                      # normal text
normal=$'\e[0m'                           # (works better sometimes)
bold=$(tput bold)                         # make colors bold/bright
red="$bold$(tput setaf 1)"                # bright red text
green=$(tput setaf 2)                     # dim green text
fawn=$(tput setaf 3); beige="$fawn"       # dark yellow text
yellow="$bold$fawn"                       # bright yellow text
darkblue=$(tput setaf 4)                  # dim blue text
blue="$bold$darkblue"                     # bright blue text
purple=$(tput setaf 5); magenta="$purple" # magenta text
pink="$bold$purple"                       # bright magenta text
darkcyan=$(tput setaf 6)                  # dim cyan text
cyan="$bold$darkcyan"                     # bright cyan text
gray=$(tput setaf 7)                      # dim white text
darkgray="$bold"$(tput setaf 0)           # bold black = dark gray text
white="$bold$gray"                        # bright white text

මම මෙම විචල්‍යයන් මගේ ස්ක්‍රිප්ට් වල භාවිතා කරමි

echo "${red}hello ${yellow}this is ${green}coloured${normal}"

6

මෙම පිළිතුර පුළුල් කිරීම සඳහා, අපගේ කම්මැලි අයට:

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"

2
දෘඩ කේත පර්යන්තයෙන් ගැලවී නොයන්න. භාවිතා කරන්න tput; ඒක තමයි ඒකට!
ටෝබි ස්පයිට්

@TobySpeight බහු-වේදිකා සහය සඳහා එය සත්‍යයක් විය හැකි වුවද (න්‍යායිකව), පෝස්ටරය එය තමන්ගේ ලෝකය තුළ ක්‍රියාත්මක වන බව සොයා ගන්නේ නම්, සමාන ලෝකයේ වෙනත් අය තාක්‍ෂණය භාවිතා කිරීමෙන් එකඟ නොවන්නේ ඇයි? උදාහරණයක් ලෙස මම උබුන්ටු 16.04 බෑෂ් වලද ඒ හා සමානව උත්සාහ කරමි. මෙම වේදිකාවේ සිටින එකම පරිශීලකයා ලෙස මට මෙම පිළිතුර පිළිගත හැකිය. මම ද භාවිතා කරනු ඇත tputසඳහා scසහ rc(කර්සරය ඉතිරි කර්සරය නැවත) නමුත්. මෙම පිළිතුර මට "කම්මැලි" යැයි පැවසුවද එය "ප්‍රායෝගික" හෝ "කෙළින්ම කාරණය" ලෙස නැවත අර්ථ දැක්විය හැකිය.
WinEunuuchs2Unix

මගේම විසඳුම මේ හා සමාන විය, එය තනිකරම ෂෙල් බිල්ට් වලට පමණක් සීමා විය, මන්ද පිටපතක ඇති සෑම පණිවිඩයක් සඳහාම බාහිර ක්‍රියාදාමයන් දෙකක්, උපසෙල් යනාදිය සෑදීම නිසා අප්රසන්න සුවඳක් ඇති බැවිනි.
අමිත් නායිදු

6

ඔබට කළ හැකි විවිධ වර්ණයන්ගෙන් පණිවිඩ ප්‍රතිදානය පෙන්වීමට:

echo -e "\033[31;1mYour Message\033[0m"

-බ්ලැක් 0; 30 තද අළු 1; 30

-රෙඩ් 0; 31 ලා රතු 1; 31

-රීන් 0; 32 ලා කොළ 1; 32

-බ්රවුන් / තැඹිලි 0; 33 කහ 1; 33

-ලූ 0; 34 ලා නිල් 1; 34

-පර්පල් 0; 35 ලා දම් 1; 35

-කියන් 0; 36 සැහැල්ලු සයන් 1; 36

-ලයිට් අළු 0; 37 සුදු 1; 37


6

ඔබගේ වර්තමාන පර්යන්තයට විශේෂිත වූ දෘඩ කේතීකරණ ගැලවීමේ කේත වෙනුවට මම භාවිතා කළ යුතුය tput.

මෙය මගේ ප්‍රියතම නිරූපණ පිටපතයි:

#!/bin/bash

tput init

end=$(( $(tput colors)-1 ))
w=8
for c in $(seq 0 $end); do
    eval "$(printf "tput setaf %3s   " "$c")"; echo -n "$_"
    [[ $c -ge $(( w*2 )) ]] && offset=2 || offset=0
    [[ $(((c+offset) % (w-offset))) -eq $(((w-offset)-1)) ]] && echo
done

tput init

වර්ණ 256 tput අනුව ප්‍රතිදානය


5

අමු ANSI පාලන අනුක්‍රමයන්ට වඩා ඔබ අනිවාර්යයෙන්ම tput භාවිතා කළ යුතුය.

විවිධ පර්යන්ත පාලන භාෂා විශාල සංඛ්‍යාවක් ඇති නිසා, සාමාන්‍යයෙන් පද්ධතියකට අතරමැදි සන්නිවේදන ස්ථරයක් ඇත. සත්‍ය කේතයන් දැනට හඳුනාගෙන ඇති පර්යන්ත වර්ගය සඳහා දත්ත සමුදායක් තුළ සොයා බලන අතර ඔබ API එකකට හෝ (කවචයේ සිට) විධානයකට ප්‍රමිතිගත ඉල්ලීම් ලබා දේ.

මෙම විධානයන්ගෙන් එකකි tput. tputහැකියාවන් නම් සහ ඕනෑම පරාමිතීන් සුදුසු නම්, අක්ෂර වින්‍යාසය සමූහයක් පිළිගෙන, සුදුසු නම්, ටර්මිනෝ දත්ත ගබඩාවේ අනාවරණය කරගත් පර්යන්තය සඳහා නිවැරදි ගැලවීමේ අනුපිළිවෙල සොයා බලා නිවැරදි කේත මුද්‍රණය කරයි (පර්යන්තය බලාපොරොත්තු වන පරිදි).

http://wiki.bash-hackers.org/scripting/terminalcodes වෙතින්

එයින් කියැවුණේ , මම කුඩා උපකාරක පුස්තකාලයක් ලියා ඇති අතර එය බාෂ් -ටින්ට් නමින් හැඳින්වෙන අතර එය ටියුටයට ඉහළින් තවත් තට්ටුවක් එක් කරයි, එය භාවිතා කිරීම වඩාත් සරල කරයි (ඉමෝ):

උදාහරණයක්: tint "white(Cyan(T)Magenta(I)Yellow(N)Black(T)) is bold(really) easy to use."

පහත ප්‍රති result ලය ලබා දෙනු ඇත: රූප විස්තරය මෙහි ඇතුළත් කරන්න


4

මම මෙය වර්ණ මුද්‍රණය සඳහා භාවිතා කරමි

#!/bin/bash
#--------------------------------------------------------------------+
#Color picker, usage: printf $BLD$CUR$RED$BBLU'Hello World!'$DEF     |
#-------------------------+--------------------------------+---------+
#       Text color        |       Background color         |         |
#-----------+-------------+--------------+-----------------+         |
# Base color|Lighter shade| Base color   | Lighter shade   |         |
#-----------+-------------+--------------+-----------------+         |
BLK='\e[30m'; blk='\e[90m'; BBLK='\e[40m'; bblk='\e[100m' #| Black   |
RED='\e[31m'; red='\e[91m'; BRED='\e[41m'; bred='\e[101m' #| Red     |
GRN='\e[32m'; grn='\e[92m'; BGRN='\e[42m'; bgrn='\e[102m' #| Green   |
YLW='\e[33m'; ylw='\e[93m'; BYLW='\e[43m'; bylw='\e[103m' #| Yellow  |
BLU='\e[34m'; blu='\e[94m'; BBLU='\e[44m'; bblu='\e[104m' #| Blue    |
MGN='\e[35m'; mgn='\e[95m'; BMGN='\e[45m'; bmgn='\e[105m' #| Magenta |
CYN='\e[36m'; cyn='\e[96m'; BCYN='\e[46m'; bcyn='\e[106m' #| Cyan    |
WHT='\e[37m'; wht='\e[97m'; BWHT='\e[47m'; bwht='\e[107m' #| White   |
#-------------------------{ Effects }----------------------+---------+
DEF='\e[0m'   #Default color and effects                             |
BLD='\e[1m'   #Bold\brighter                                         |
DIM='\e[2m'   #Dim\darker                                            |
CUR='\e[3m'   #Italic font                                           |
UND='\e[4m'   #Underline                                             |
INV='\e[7m'   #Inverted                                              |
COF='\e[?25l' #Cursor Off                                            |
CON='\e[?25h' #Cursor On                                             |
#------------------------{ Functions }-------------------------------+
# Text positioning, usage: XY 10 10 'Hello World!'                   |
XY () { printf "\e[$2;${1}H$3"; }                                   #|
# Print line, usage: line - 10 | line -= 20 | line 'Hello World!' 20 |
line () { printf -v _L %$2s; printf -- "${_L// /$1}"; }             #|
# Create sequence like {0..(X-1)}                                    |
que () { printf -v _N %$1s; _N=(${_N// / 1}); printf "${!_N[*]}"; } #|
#--------------------------------------------------------------------+

සියළුම මූලික වර්ණ vars ලෙස සකසා ඇති අතර ප්‍රයෝජනවත් කාර්යයන් කිහිපයක්ද ඇත: XY, line සහ que. මෙම ස්ක්‍රිප්ට් එක ඔබගේ එකක් තුළ මූලාශ්‍ර කර සියලු වර්ණ විචල්‍යයන් සහ ක්‍රියාකාරකම් භාවිතා කරන්න.


3

සියලු සංයෝජන දැකීමට සහ සිසිල් කියවිය යුතු දේ තීරණය කිරීමට මම භාවිතා කළේ මෙයයි:

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

2

එය සාක්ෂාත් කර ගැනීම සඳහා මම රංචුවක් ලියා ඇත.

ඔබට කළ හැකිය

pip install swag

දැන් ඔබට සියලු ගැලවීමේ විධානයන් txt ගොනු ලෙස ලබා දී ඇති ගමනාන්තයකට ස්ථාපනය කළ හැකිය:

swag install -d <colorsdir>

හෝ හරහා වඩාත් පහසු වන්නේ:

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"

ඇසීනීමා හි එය පරීක්ෂා කරන්න !


0

මෙන්න මම මෑතකදී එකතු කළ සරල කුඩා පිටපතක්, එය "වැසිකිළිය" භාවිතා කරනවා වෙනුවට ඕනෑම නල ආදානයක් වර්ණවත් කරයි.

File: color.bsh

#!/usr/bin/env bash 

## A.M.Danischewski 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 "  E.g. 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


වර්ණ ලූප තර්කනය මෙම යහපත් Ascii වර්ණ නිබන්ධනයෙන් හමු විය: misc.flogisoft.com/bash/tip_colors_and_formatting

0

බාෂ් ෂෙල් ප්‍රොම්ට් හි පෙළ විලාසය පහසුවෙන් කළමනාකරණය කිරීමට සරල පිටපතක් මෙහි ඇත:

https://github.com/ferromauro/bash-palette

මෙය භාවිතයෙන් කේතය ආයාත කරන්න:

source bash-palette.sh

ආනයනික විචල්‍යය echo විධානයෙන් භාවිතා කරන්න (-e විකල්පය භාවිතා කරන්න!):

echo -e ${PALETTE_GREEN}Color Green${PALETTE_RESET}

තවත් මූලද්රව්ය ඒකාබද්ධ කළ හැකිය:

echo -e ${PALETTE_GREEN}${PALETTE_BLINK}${PALETTE_RED_U}Green Blinking Text over Red Background${PALETTE_RESET}

රූප විස්තරය මෙහි ඇතුළත් කරන්න


-1

වෙත යොමු වන්න

echo_red(){
    echo -e "\e[1;31m$1\e[0m"
}
echo_green(){
    echo -e "\e[1;32m$1\e[0m"
}
echo_yellow(){
    echo -e "\e[1;33m$1\e[0m"
}
echo_blue(){
    echo -e "\e[1;34m$1\e[0m"
}

Echo_green ශ්‍රිතයට 33 ට වඩා 32 කේත තිබිය යුතු බව සලකන්න. B / c සංස්කරණය කළ නොහැක ස්ටැක් ඕවර් ප්‍රවාහයට අවම වශයෙන් අක්ෂර 6 ක් අවශ්‍ය වේ.
ඩැනියෙල්

-2

මෙන්න සරලම හා කියවිය හැකි විසඳුමයි. 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 ඔබේ පර්යන්ත යෙදුමේ වර්ණ සහය තිබේ නම් වර්ණ ලබා ගත හැකිය.


-4

එතනින් එහාට යමක් මෙන්, එය ග්‍රෙප් හරහා ගමන් කිරීමෙන් එය රතු (නමුත් රතු පමණක්) ලෙස ඉස්මතු වේ. ඔබට නම් කරන ලද පයිප්පද භාවිතා කළ හැකිය, එවිට ඔබේ නූල රේඛාවේ අවසානයට සමීප වේ:

 grep '.*' --color=always <(echo "foobar")

ඔබට කැමති වර්ණයක් තෝරා ගැනීමේ හැකියාව ඔබට මග හැරී ඇත. වර්ණ ගැන්වීමේ උපයෝගීතාවයක් ලෙස ද grep කිරීම සැබවින්ම සැක සහිත ය: P
අහමඩ් මසුඩ්

ඇත්ත වශයෙන්ම නොවේ, OP විශේෂයෙන් සඳහන් කළේ ඔවුන්ට රතු පාට අවශ්‍ය බවයි. Grep භාවිතා කිරීමට වඩා හොඳ විකල්ප ඇති බව මම එකඟ වෙමි, නමුත් එය ඔවුන් ඉල්ලූ දේ සාක්ෂාත් කර ගන්නා අතර වඩාත් සංකීර්ණ දෙයක් ඉගෙන ගැනීමට ඉතිරි වේ.
FinalDuty

-5
red='\e[0;31m'
NC='\e[0m' # No Color
echo -e "${red}Hello Stackoverflow${NC}"

මෙම පිළිතුර නිවැරදි ය, වර්ණ සඳහා වන ඇමතුම මිල ගණන් තුළ නොවිය යුතුය.

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

උපක්‍රමය කළ යුතුයි.


3
උපුටා දැක්වීම් ඇතුළත හොඳින් ක්‍රියා කරයි. -e ස්විචය උපුටා දැක්වීම්වල ඇති දේ ද ඇගයීමට ලක් කරයි. Bash -x ප්‍රතිදාන භාවිතා කරමින් (ඇතුළත සහ පිටත උපුටා දැක්වීම්) ක්‍රියාත්මක කිරීම එකම ක්‍රියාත්මක කළ විධානයකි echo -e '\e[0;31mHello Stackoverflow\e[0m'. ඒ නිසා එය bash සඳහා සමාන වේ.
නාබ්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.