linux - लिनक्स में गूंज के आउटपुट रंग को कैसे बदलें




bash command-line (14)

पठनीयता के लिए

यदि आप कोड की पठनीयता में सुधार करना चाहते हैं, तो आप स्ट्रिंग को पहले echo सकते हैं और बाद में रंग का उपयोग करके रंग जोड़ सकते हैं:

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

मैं echo कमांड का उपयोग कर टर्मिनल में एक पाठ मुद्रित करने की कोशिश कर रहा हूँ।

मैं पाठ को लाल रंग में मुद्रित करना चाहता हूं। मैं उसे कैसे कर सकता हूँ?


कुछ चर जो आप उपयोग कर सकते हैं:

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

बैश अपवाद:

यदि आप इन विशेष कोडों को अपने विशेष बैश चर में उपयोग करने जा रहे हैं

  • PS0
  • PS1
  • पीएस 2 (= यह संकेत देने के लिए है)
  • PS4

आपको अतिरिक्त भागने वाले अक्षर जोड़ना चाहिए ताकि bash उन्हें सही तरीके से समझ सके। इसके बिना अतिरिक्त भागने वाले वर्ण जोड़ना यह काम करता है लेकिन जब आप अपने इतिहास में खोज के लिए Ctrl + r उपयोग करते हैं तो आपको समस्याएं आती हैं।

बैश के लिए अपवाद नियम

किसी भी समाप्ति वाले के बाद आपको \[ किसी भी प्रारंभिक एएनएसआई कोड से पहले और \] जोड़ना चाहिए।
उदाहरण:
नियमित उपयोग में: \033[32mThis is in green\033[0m
PS0 / 1/2/4 के लिए: \[\033[32m\]This is in green\[\033[m\]

\[ गैर-प्रिंट करने योग्य पात्रों के अनुक्रम की शुरुआत के लिए है
\] गैर-प्रिंट करने योग्य पात्रों के अनुक्रम के अंत के लिए है

युक्ति: इसे याद रखने के लिए आप पहले \[\] जोड़ सकते हैं और फिर अपने एएनएसआई कोड को उनके बीच डाल सकते हैं:
- \[start-ANSI-code\]
- \[end-ANSI-code\]

रंग अनुक्रम का प्रकार:

  1. 3/4 बिट
  2. 8 बिट
  3. 24 बिट

इन रंगों में डाइविंग से पहले, आपको इन कोडों के साथ लगभग 4 मोड पता होना चाहिए:

1. रंग मोड

यह रंग की शैली की शैली को संशोधित करता है। उदाहरण के लिए रंग उज्ज्वल या गहरा बनाओ।

  • 0 रीसेट करें
  • 1; सामान्य से हल्का
  • 2; सामान्य से गहरा

यह मोड व्यापक रूप से समर्थित नहीं है। यह जीनोम टर्मिनल पर पूरी तरह से समर्थन है।

2. पाठ मोड

यह मोड टेक्स्ट रंग की शैली को संशोधित करने के लिए है।

  • 3; तिरछा
  • 4; रेखांकित करना
  • 5; झपकी (धीमी)
  • 6; झपकी (तेज)
  • 7; उलटा
  • 8; छिपाना
  • 9; काट देना

और लगभग समर्थित हैं।
उदाहरण के लिए केडीई-कंसोल 5; का समर्थन करता है 5; लेकिन जीनोम टर्मिनल नहीं करता है और जीनोम 8; का समर्थन करता है 8; लेकिन केडीई नहीं करता है।

3. अग्रभूमि मोड

यह मोड अग्रभूमि को रंगने के लिए है।

4. पृष्ठभूमि मोड

यह मोड पृष्ठभूमि को रंग देने के लिए है।

नीचे दी गई तालिका एएनएसआई-रंग के 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[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                                            |                                                                                       |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|

नीचे दी गई तालिका एएनएसआई-रंग के 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

नीचे दी गई तालिका एएनएसआई-रंग के 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 |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|

कुछ स्क्रीन शॉट्स

एक .gif में अग्रभूमि 8-बिट सारांश

एक .gif में पृष्ठभूमि 8-बिट सारांश

उनके मूल्यों के साथ रंग सारांश

केडीई-टर्मिनल पर झपकी

एक साधारण C कोड जो आपको और दिखाता है

इन रंगों से निपटने के लिए मैंने विकसित एक और उन्नत उपकरण:

रंग मोड शॉट

पाठ मोड शॉट

संयोजन ठीक है

अधिक शॉट्स


उन्नत उपयोगकर्ताओं और प्रोग्रामर के लिए टिप्स और ट्रिक्स:

क्या हम इन कोडों को प्रोग्रामिंग भाषा में उपयोग कर सकते हैं?

हाँ तुम कर सकते हो। मैंने bash , c , सी ++ , d perl , python

क्या वे एक कार्यक्रम की गति धीमा कर रहे हैं?

मेरे ख़्याल से नहीं।

क्या हम इन्हें विंडोज़ पर इस्तेमाल कर सकते हैं?

3/4-बिट हां, यदि आप gcc के साथ कोड संकलित करते हैं
विन -7 पर कुछ स्क्रीन-शॉट्स

कोड की लंबाई की गणना कैसे करें?

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

यह यूनिकोड को संभाल नहीं करता है।

क्या ये कोड केवल रंगीन करते हैं?

नहीं, वे बहुत सारी रोचक चीजें कर सकते हैं। प्रयत्न:

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-बिट एक विशिष्ट रंग के लिए है।
24..17 के लिए है और 16..9 लिए और 8..1 लिए
तो html #FF0000 मतलब है और यहां यह है: 255;0;0
html #00FF00 मतलब है जो यहां है: 0;255;0
क्या इसका कोई मतलब है? आप इन तीन 8-बिट मानों के साथ क्या रंग चाहते हैं।


संदर्भ:
विकिपीडिया
एएनएसआई भागने के दृश्य
tldp.org
tldp.org
misc.flogisoft.com/bash/tip_colors_and_formatting
कुछ ब्लॉग / वेब पेज जिन्हें मुझे याद नहीं है

बैज:


आप सभी प्रकार की चीजों के लिए टर्मिनल नियंत्रण कोड बनाने के लिए भयानक tput कमांड ( इग्नासिओ के उत्तर में सुझाए गए) का उपयोग कर सकते हैं।

प्रयोग

विशिष्ट 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 चरित्र अनुक्रम उत्पन्न करता है जिसे टर्मिनल द्वारा विशेष अर्थ के रूप में व्याख्या किया जाता है। वे खुद को नहीं दिखाया जाएगा। ध्यान दें कि वे अभी भी फाइलों में सहेजे जा सकते हैं या टर्मिनल के अलावा अन्य कार्यक्रमों द्वारा इनपुट के रूप में संसाधित किए जा सकते हैं।

कमांड प्रतिस्थापन

कमांड प्रतिस्थापन का उपयोग करके सीधे अपने echo स्ट्रिंग में tput के आउटपुट को सम्मिलित करना अधिक सुविधाजनक हो सकता है:

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

रंग सेटिंग फ़ंक्शंस के गैर-एएनएसआई संस्करण भी हैं ( setab बजाय setab , और setaf बजाय 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

कम्पोज़ wobbly खिड़कियों के साथ , bel कमांड उपयोगकर्ता के ध्यान आकर्षित करने के लिए एक दूसरे के लिए टर्मिनल wobble बनाता है।

स्क्रिप्ट

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 से शुरू होता है।)

आपको निश्चित रूप से कच्चे एएनएसआई नियंत्रण अनुक्रमों पर ट्यूट का उपयोग करना चाहिए।

चूंकि बड़ी टर्मिनल नियंत्रण भाषाओं की एक बड़ी संख्या है, आमतौर पर एक सिस्टम में एक मध्यवर्ती संचार परत होती है। वास्तविक कोड वर्तमान में ज्ञात टर्मिनल प्रकार के लिए डेटाबेस में देखे जाते हैं और आप एक एपीआई या (खोल से) को मानकीकृत अनुरोध एक कमांड में देते हैं।

इनमें से एक आदेश tputtput accepts a set of acronyms called capability names and any parameters, if appropriate, then looks up the correct escape sequences for the detected terminal in the terminfo database and prints the correct codes (the terminal hopefully understands).

from http://wiki.bash-hackers.org/scripting/terminalcodes

That said, I wrote a small helper library called bash-tint , which adds another layer on top of tput, making it even simpler to use (imho):

Example: tint "white(Cyan(T)Magenta(I)Yellow(N)Black(T)) is bold(really) easy to use."

Would give the following result:


इस सवाल का जवाब बार-बार दिया गया है :-) लेकिन क्यों नहीं।

tput echo -E माध्यम से ASCII कोड मैन्युअल रूप से इंजेक्शन करने से पहले आधुनिक वातावरण में tput का उपयोग करना अधिक पोर्टेबल है

यहां एक त्वरित बैश फ़ंक्शन है:

 say() {
     echo "[email protected]" | sed \
             -e "s/\(\(@\(red\|green\|yellow\|blue\|magenta\|cyan\|white\|reset\|b\|u\)\)\+\)[[]\{2\}\(.*\)[]]\{2\}/\1\[email protected]/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 @[email protected][[Success]] 

लेना:

tput पोर्टेबिलिटी पर नोट्स

पहली बार tput(1) स्रोत कोड सितंबर 1 9 86 में अपलोड किया गया था

tput(1) 99 0 के दशक में एक्स / ओपन शाप tput(1) उपलब्ध है (1 99 7 मानक में नीचे वर्णित अर्थशास्त्र है)।

तो, यह ( काफी ) सर्वव्यापी है।


और यह मैं सभी संयोजनों को देखने के लिए उपयोग करता था और तय करता हूं कि कौन सा ठंडा पढ़ता है:

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

केवल एक 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

मेरा पसंदीदा उत्तर अब तक रंगीन है।

बस एक और विकल्प पोस्ट करने के लिए, आप इस छोटे टूल xcol को देख सकते हैं

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

आप इसे grep की तरह उपयोग करते हैं, और उदाहरण के लिए, प्रत्येक तर्क के लिए यह एक अलग रंग के साथ अपने stdin रंगीन होगा

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

ध्यान दें कि यह किसी नियमित अभिव्यक्ति को स्वीकार करता है जो 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}"

यह रंग स्विच \033[history देखें

रंग codes 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!"

ये कोड मेरे उबंटू बॉक्स पर काम करते हैं:

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


setaf क्षमता और 1 पैरामीटर के साथ tput प्रयोग करें।

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

Here is a simple little script, I put together recently, that will colorize any piped input instead of using "Toilet".

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 

Then call it with color red (196):
$> echo "text you want colored red" | color.bsh 196


इस जवाब पर विस्तार करने के लिए, हमारे आलसी के लिए:

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"

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

[31m मीटर टेक्स्ट रंग को नियंत्रित करता है:

  • 30 - 37 अग्रभूमि रंग सेट करता है
  • 40 - 47 पृष्ठभूमि रंग सेट करता है

रंग कोड की एक और पूरी सूची यहां मिल सकती है

स्ट्रिंग के अंत में पाठ रंग को \033[0m पर रीसेट करना अच्छा अभ्यास है।





terminal-color