MySQL komut satırı renk istemi


22

MySQL komut satırı renk istemine renkler eklemek istiyorum.

Şimdiye kadar bir komut dosyasında (database.sh) var:

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

Ben istiyorum rootedilecek kırmızı , @olmaya mavi , localhostolmaya yeşil ve databaseolmaya camgöbeği :

root@localhost:database>

Bunu betiğimde yapmak mümkün mü?



1
Onu gördüm ama işe yaramadı
EscoMaji

Evet, normal kabuk isteminde de aynı şekilde mümkün olduğunu düşünüyorum. En iyi şansınız muhtemelen bir paketleyici veya daha gelişmiş bir MySQL istemcisidir.
micke

1
Kurulumunuz ANSI çıkış kodlarını destekliyor mu? Eğer öyleyse, bunları aşağıdaki şekilde kullanabilirsiniz: --prompt = "^ [[1; 33mDTHIS PARÇA SARI RENKLİ OLDUĞU ^ [[0m \ u @ \ h: \ d>"
Hennes

Yanıtlar:


14

Yapamayacağınızı söyleyen insanları dinlemeyin. İşte:

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

Sonra:

$ colormysql -hHOSTNAME -uUSERNAME -pPASSWORD ...

Bunun neden işe yaradığına dair biraz açıklama yapabilir misiniz, ancak sadece ANSI kodlarını geçemezsiniz?
Bryan Agee

$(foo)Echo'nun çıktısını, bu durumda foo sonucunu çalıştırır. -E yankılanması \ x1b'yi kaçış karakterine genişletir. \ X1b [31m, geçerli rengi kırmızıya ayarlayan bir terminal kontrol kodudur. Ve bunun gibi. \ x1b [0m, rengi varsayılan terminal rengine döndürür.
Irongaze.com

1
renkleri test ederken, mysql --prompt="`echo -e '\033[01;32m\\d\033[01;34m >\033[00m '`"
tavsiyede bulunduğum örneklem

4
Ayrıca, renk kodlarını çevreleyen kaçış kodları eklemek, bu çalışmayı düzgün bir şekilde gerçekleştirir (tarihte gezinmek isteminizi zorlaştırmaz): $ 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 "')
David Santamaria

2
@CyprianGuerra - Doğru destek için dizileri kullanarak \001ve \002çevresinde @ david-santamaria'nın yukarıdaki yorumuna bakın 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 "') Tarayıcıdan, \002:\001komutun bir kısmının panoya yerleştirildiği \002:\<200c><200b>001( kopyalanamaz karakterlerin olduğu <200c>ve <200b>yazdırılmayan karakterlerin, büyük olasılıkla CR / NL'nin sözcüklerden olduğu) kopyala-yapıştır ile ilgili bir tür oluşturma sorunu var gibi görünüyor. sarma).
Aralık'ta 15:17

8

Renkli mysql istemi kurma konusunda tam bir yol gösterici.

Adım 1. Belirlenmiş bir bilgi istemi ile normal giriş yapmayı anlayın:

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> 

Adım 2. Yorumlanmış bir ifadeyi yankı yoluyla 'alias'a' nasıl aktarabileceğinizi anlayın:

Tam olarak yukarıdaki 1. adımla aynı şeyi yapar:

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

Adım 3. echo-e'nin renklendirilmiş ifadeyi nasıl değerlendirdiğini anlayın:

Bu "foobar>" komut istemini kırmızı renklendirir:

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

Bunun gibi:

görüntü tanımını buraya girin

Adım 4. Burada neler olup bittiğiyle ilgili kafanız karıştıysa:

İfadeye bakın: \x1B[31mfoobar>\x1B[0m

Üç bölümden oluşur:

code               what it means:

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

4. Adım: Gelişmiş, komut istemini gerçekten güzelleştirelim:

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

görüntü tanımını buraya girin

Bu büyük kodun ne yaptığı konusunda kafanız karışmışsa:

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

Açıklama:

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.

Öyleyse vay. Çok kod var.


1
Terminal kodlarından nasıl doğru çıkılacağına dair herhangi bir fikir var, böylece readlinehat uzunluğu ile ilgili karışıklık oluşmayacak ve mysqlkomut satırında birden fazla satırı düzenlemek mümkün olabilir mi? (birden fazla satır yazmaya çalışın, sonra geri tuşuna basın ve basılı tutun)
cprn

Bu, ayrı bir istif akışı akışı sorusu olarak sorulması gereken tamamen ayrı bir teğet soru. Elbette, bir turing tam programlama diline erişim mümkündür, ancak soru şu, nasıl, birkaç saat koymadan bilmiyorum.
Eric Leschinski

0

İstemin terminallerimin başlığında olmasını istedim, bu da aslında renkli bir istem istemekle aynı problem, sadece farklı bir kaçış kodu. Bununla colormysqlkarşılaştım ve cevaplarda belirtilenler gibi özel bir takma adı hatırlamak zorunda kalmadan yapabileceğimi merak ettim .

.bashrcMakineme hile yapan benimkine aşağıdakileri ekledim :

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

Bunun ne işe yaramaz echo -ekaçış karakterlerini (sembolik olanları değil) MYSQL_PS1değişkene üretmek için kullanmaktır . Bu da renklerle çalışmalı.


-2

Bu oldukça talihsiz bir cevap, ama yapamazsın.


ANSI kaçış dizilerinin kullanımıyla ilgili olarak, MySQL sadece aşağıdakilere izin verir :

Geri alma, sekme, yeni satır, satır başı, ters eğik çizgi ve boşluk karakterleri.


Cmjdmiller'in cevabına gelince, grc sadece MySQL'in kabuğundan çıkan çıktıyı bir "çağrı cihazı" ile göstermeye çalışır.


Yapabileceğinin en iyisi kullanımıdır rlwrap böyle: rlwrap -a -p'GREEN' mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> ". Bu, size hassas bir kontrol sağlamaz, ancak tüm istemini renklendirir. Ayrıca parolayı cleartext olarak gösterdiğinden de dikkatli olun.


Bu güncel değil. İstemi seçeneği için bir dizi olası değer vardır. Buraya bakın: dev.mysql.com/doc/refman/5.6/en/mysql-commands.html
Irongaze.com


Sadece yanlış olarak güncel değil. Birincisi, ANSI kaçış dizileri , tamamen MySQL'den bağımsız bir şeydir ve diğeri için, buradaki diğer cevaplarda da açıkça belirtildiği gibi, kesinlikle kullanılabilir.
Jeff,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.