Saya ingin menambahkan warna ke prompt warna baris perintah MySQL.
Sejauh ini saya memiliki skrip (database.sh):
mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
Saya ingin root
menjadi merah , @
menjadi biru , localhost
menjadi hijau dan database
menjadi cyan :
root@localhost:database>
Apakah mungkin untuk melakukan ini dalam skrip saya?
Jawaban:
Jangan dengarkan orang yang mengatakan Anda tidak bisa. Sini:
Kemudian:
sumber
$(foo)
mengeksekusi hasil foo, dalam hal ini output gema. -E to echo memperluas \ x1b menjadi karakter pelarian. \ X1b [31m adalah kode kontrol terminal yang menetapkan warna saat ini menjadi merah. Dan seterusnya. \ x1b [0m mengembalikan warna ke warna terminal default.mysql --prompt="`echo -e '\033[01;32m\\d\033[01;34m >\033[00m '`"
\001
dan\002
sekitar urutan untukreadline
dukungan yang tepat .$ 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 "')
Tampaknya ada beberapa jenis masalah rendering dengan copy-dan-paste yang dari browser, di mana\002:\001
bagian dari perintah dimasukkan ke clipboard sebagai\002:\<200c><200b>001
(di mana<200c>
dan<200b>
adalah karakter non-cetak, mungkin CR / NL dari word- pembungkus).Panduan tentang cara mengatur prompt mysql berwarna.
Langkah 1. Memahami cara masuk secara normal dengan prompt yang ditetapkan:
Langkah 2. Memahami bagaimana Anda dapat mem-pipe ekspresi yang ditafsirkan melalui gema ke 'alias':
Yang tidak persis sama dengan langkah 1 di atas:
Langkah 3. Pahami bagaimana echo -e mengevaluasi ekspresi berwarna:
Ini warna "foobar>" prompt merah:
Seperti ini:
Langkah 4. Jika Anda bingung apa yang sedang terjadi di sini:
Lihatlah ungkapannya:
\x1B[31mfoobar>\x1B[0m
Ini memiliki tiga bagian:
Langkah 4. Advanced, Mari kita buat prompt yang bagus:
Jika Anda bingung apa yang dilakukan kode besar ini:
Penjelasan:
Sangat wow. Banyak kode.
sumber
readline
tidak akan bingung tentang panjang baris dan mengedit beberapa baris dalammysql
baris perintah akan mungkin? (coba tulis beberapa baris, lalu tekan dan tahan backspace)Saya ingin prompt berada dalam judul terminal saya, yang pada dasarnya masalah yang sama seperti menginginkan prompt berwarna, hanya kode pelarian yang berbeda. Datangi ini dan bertanya-tanya apakah saya bisa melakukannya tanpa harus mengingat alias khusus seperti
colormysql
dll yang disebutkan dalam jawaban.Saya telah menambahkan yang berikut ini ke saya
.bashrc
yang melakukan trik pada mesin saya:export MYSQL_PS1=$(echo -e "\033]0;\u@\h [\d]\007\u@\h [\d]> ")
apa yang dilakukan adalah digunakan
echo -e
untuk menghasilkan karakter pelarian mentah (bukan yang simbolis) keMYSQL_PS1
variabel. Ini juga harus bekerja dengan warna.sumber
Ini jawaban yang sangat disayangkan, tetapi Anda tidak bisa.
Mengenai penggunaan urutan pelarian ANSI, MySQL hanya mengizinkan yang berikut :
Mengenai jawaban cmjdmiller, grc hanya berfungsi untuk menampilkan output dari shell MySQL melalui "pager".
Yang terbaik yang dapat Anda lakukan adalah menggunakan rlwrap seperti ini:
rlwrap -a -p'GREEN' mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
. Ini tidak akan memberikan Anda kendali yang halus karena akan mewarnai seluruh prompt. Juga hati-hati karena ini menampilkan kata sandi dalam teks yang jelas.sumber