MySQL कमांड लाइन रंग प्रॉम्प्ट


22

मैं MySQL कमांड लाइन रंग प्रॉम्प्ट में रंग जोड़ना चाहता हूं।

मेरे पास अब तक एक स्क्रिप्ट (database.sh) है:

mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "

मैं चाहूँगा rootजा करने के लिए लाल , @होना करने के लिए नीले , localhostहोना करने के लिए हरे रंग की और databaseहोने के लिए सियान :

root@localhost:database>

क्या मेरी स्क्रिप्ट में ऐसा करना संभव है?



1
मैंने इसे देखा लेकिन यह काम नहीं करता है
EscoMaji

हाँ, मुझे लगता है कि यह आपके नियमित शेल प्रांप्ट में उसी तरह संभव है। आपका सबसे अच्छा शर्त शायद कुछ रैपर या अधिक उन्नत MySQL- क्लाइंट है।
मिके

1
क्या आपका सेटअप ANSI एस्केप कोड का समर्थन करता है? अगर ऐसा होता है तो आप उन्हें निम्न तरीके से उपयोग कर सकते हैं: --prompt = "^ [[1; 33mDTHIS PART IS IN YELLOW COLOR ^ [[0m \ u @ \ h: \ d>"
Henn

जवाबों:


14

उन लोगों की बात मत सुनो जो कहते हैं कि तुम नहीं कर सकते। यहाँ:

$ alias colormysql=$(echo -e 'mysql --prompt="\x1B[31m\\u\x1B[34m@\x1B[32m\\h\x1B[0m:\x1B[36m\\d>\x1B[0m "')

फिर:

$ colormysql -hHOSTNAME -uUSERNAME -pPASSWORD ...

क्या आप इस बारे में कुछ और स्पष्टीकरण दे सकते हैं कि यह क्यों काम करता है, लेकिन आप सिर्फ ANSI कोड नहीं दे सकते?
ब्रायन ऐज

$(foo)फू के परिणाम को निष्पादित करता है, इस मामले में इको का आउटपुट। -E को प्रतिध्वनि एक भागने चार में \ X1b फैलता है। \ X1b [31 मीटर एक टर्मिनल नियंत्रण कोड है जो वर्तमान रंग को लाल रंग में सेट करता है। इत्यादि। \ X1b [0m डिफ़ॉल्ट टर्मिनल रंग में रंग वापस करता है।
Irongaze.com

1
जब रंगों का परीक्षण करते हैं, तो मैं आपको उर्फ ​​कदम को छोड़ देता हूं, जो करने mysql --prompt="`echo -e '\033[01;32m\\d\033[01;34m >\033[00m '`"
से छूट मिलती है

4
रंग कोड संलग्न करने वाले एस्केप कोड को भी जोड़ने से यह काम ठीक से हो जाता है (इतिहास को नेविगेट किए बिना आपके प्रॉम्प्ट को गड़बड़ करने के बिना काम करेगा): $ alias colormysql = $ (इको-इ 'mysql --prompt = "001 \ _1B [31 मी] \ 002 \\ यू \ 001 \ x1B [34m \ 002 @ \ 001 \ x1B [32m \ 002 \\ ज \ 001 \ x1B [0m \ 002: \ 001 \ x1B [36m \ 002 \\ d> \ 001 \ x1B [० मी \ _२२ "')
डेविड संतामरिया

2
@CyprianGuerra - उचित समर्थन के लिए अनुक्रमों के ऊपर, उपयोग \001और \002उसके आसपास @ david-santamaria की टिप्पणी को देखें readline$ alias colormysql=$(echo -e 'mysql --prompt="\001\x1B[31m\002\\u\001\x1B[34m\002@\001\x1B[32m\002\\h\001\x1B[0m\002:\001\x1B[36m\002\\d>\001\x1B[0m\002 "') प्रतीत होता है कि कॉपी-एंड-पेस्टिंग के साथ किसी तरह का प्रतिपादन मुद्दा है जो ब्राउज़र से, जहां \002:\001कमांड के हिस्से को क्लिपबोर्ड में रखा जा रहा है \002:\<200c><200b>001(जहां <200c>और <200b>गैर-मुद्रण वर्ण हैं, शायद शब्द से सीआर / एनएल- रैपिंग)।
dossy

8

रंगीन mysql प्रॉम्प्ट स्थापित करने पर वॉकथ्रू।

चरण 1. समझें कि सामान्य रूप से सेट प्रॉम्प्ट से कैसे लॉगिन करें:

eric@dev ~ $ mysql --host=yourhost.com -u username --prompt="foobar> " -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 711
Server version: 5.6.19 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

foobar> 

चरण 2. समझें कि आप गूंज के माध्यम से 'अलियास' में व्याख्या की गई अभिव्यक्ति को कैसे पाइप कर सकते हैं:

जो उपरोक्त चरण 1 के समान है:

eric@dev ~ $ alias penguins=$(echo -e 'mysql --host=yourhost.com -u dev --prompt="foobar> " -p')
eric@dev ~ $ penguins
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 713
Server version: 5.6.19 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

foobar> exit
Bye
eric@dev ~ $

चरण 3. समझें कि कैसे प्रतिध्वनित रंग अभिव्यक्ति का मूल्यांकन करता है:

यह रंग "फोबार>" शीघ्र लाल:

alias penguins=$(echo -e 'mysql --host=yourhost.com -u dev --prompt="\x1B[31mfoobar>\x1B[0m " -p')
penguins

ऐशे ही:

यहाँ छवि विवरण दर्ज करें

चरण 4. यदि आप उलझन में हैं कि यहाँ क्या हो रहा है:

अभिव्यक्ति देखें: \x1B[31mfoobar>\x1B[0m

इसके तीन भाग हैं:

code               what it means:

\x1B[31m           Start colorizing, 31m is red.
foobar>            prompt text
\x1B[0m            Stop colorizing.

चरण 4। उन्नत, चलो शीघ्र वास्तविक अच्छा बनाते हैं:

eric@dev ~ $ alias penguins=$(echo -e 'mysql --host=yourhost.com -u dev --prompt="\x1B[31m\\u\x1B[34m@\x1B[32m\\v\x1B[0m:\x1B[36m\\d>\x1B[0m " -p')
eric@dev ~ $ penguins

यहाँ छवि विवरण दर्ज करें

यदि आप भ्रमित हैं कि यह भारी कोड क्या करता है:

\x1B[31m\\u\x1B[34m@\x1B[32m\\v\x1B[0m:\x1B[36m\\d>\x1B[0m

स्पष्टीकरण:

Code         Note
\x1B[31m     Start colorizing red
\\u          escape the backslash for passage through echo, and print username
\x1B[34m     Start colorizing dark blue
@            literal at sign
\x1B[32m     Start colorizing green
\\v          escape the backslash for passage through echo, print server version
\x1B[0m      Stop colorizing
:            literal colon
\x1B[36m     Start colorizing cyan
\\d>         Backslash for passage through echo, print default db and >
\x1B[0m      Stop colorizing.

तो वाह! बहुत कोड।


1
टर्मिनल कोड को सही तरीके से कैसे readlineनिकालना है, इस बारे में कोई भी विचार ताकि लाइन की लंबाई के बारे में भ्रम न हो और mysqlकमांड लाइन में कई लाइनों को संपादित करना संभव हो सके? (कई पंक्तियों को लिखने की कोशिश करें, फिर बैकस्पेस दबाए रखें)
cprn

यह एक पूरी तरह से अलग स्पर्शरेखा प्रश्न है जिसे एक अलग स्टैकओवरफ़्लो प्रश्न के रूप में पूछा जाना चाहिए। बेशक यह एक ट्यूरिंग पूरी प्रोग्रामिंग लैंग्वेज तक पहुंच के साथ संभव है, लेकिन सवाल यह है कि, मैं इसमें कुछ घंटे लगाए बिना नहीं जानता।
बजे एरिक लेसचिंस्की

0

मैं चाहता था कि प्रांप्ट मेरे टर्मिनलों के शीर्षक में हो, जो मूल रूप से एक ही समस्या है जैसे कि एक रंगीन प्रॉम्प्ट, बस एक अलग भागने का कोड। इस पार आया और आश्चर्यचकित हुआ कि क्या मैं colormysqlजवाबों में वर्णित एक विशेष उपनाम की तरह याद किए बिना कर सकता था ।

मैंने निम्नलिखित को अपने साथ जोड़ा है .bashrcजो मेरी मशीन पर चाल करता है:

export MYSQL_PS1=$(echo -e "\033]0;\u@\h [\d]\007\u@\h [\d]> ")

चर के echo -eलिए कच्चे बच चरित्र (प्रतीकात्मक के बजाय) उत्पन्न करने के लिए इसका उपयोग क्या होता है MYSQL_PS1। यह भी रंगों के साथ काम करना चाहिए।


-2

यह काफी दुर्भाग्यपूर्ण उत्तर है, लेकिन आप नहीं कर सकते।


ANSI एस्केप सीक्वेंस के उपयोग के बारे में, MySQL केवल निम्नलिखित की अनुमति देता है :

बैकस्पेस, टैब, न्यूलाइन, कैरिज रिटर्न, बैकलैश और स्पेस कैरेक्टर।


Cmjdmiller के उत्तर के बारे में, grc केवल एक "पेजर" के माध्यम से MySQL के शेल से आउटपुट प्रदर्शित करने के लिए काम करता है।


सबसे अच्छा आप इस तरह rlwrap का उपयोग कर सकता है rlwrap -a -p'GREEN' mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> ":। यह आपको ठीक-ठीक नियंत्रण नहीं देगा, क्योंकि यह पूरे संकेत को रंग देता है। इसके अलावा सावधान रहें क्योंकि यह क्लीयरटेक्स्ट में पासवर्ड प्रदर्शित करता है।


यह पुराना हो चुका है। शीघ्र विकल्प के लिए संभावित मानों के एक मेजबान हैं। यहाँ देखें: dev.mysql.com/doc/refman/5.6/en/mysql-commands.html
Irongaze.com


यह इतना गलत नहीं है जितना कि गलत है। एक बात के लिए, ANSI एस्केप सीक्वेंस MySQL से पूरी तरह से स्वतंत्र हैं, और दूसरे के लिए, वे निश्चित रूप से उपयोग किए जा सकते हैं, जैसा कि अन्य उत्तरों में यहां प्रदर्शित किया गया है।
जेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.