Chcę dodać kolory do wiersza kolorów MySQL w wierszu polecenia.
Do tej pory mam w skrypcie (database.sh):
mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
Chciałbym root
być czerwony , @
aby być niebieski , localhost
aby być zielone i database
być cyan :
root@localhost:database>
Czy można to zrobić w moim skrypcie?
Odpowiedzi:
Nie słuchaj ludzi, którzy mówią, że nie możesz. Tutaj:
Następnie:
źródło
$(foo)
wykonuje wynik foo, w tym przypadku wynik echa. -E to echo rozwija \ x1b do znaku zmiany znaczenia. \ X1b [31m to kod kontrolny terminala, który ustawia bieżący kolor na czerwony. I tak dalej. \ x1b [0m przywraca domyślny kolor terminala.mysql --prompt="`echo -e '\033[01;32m\\d\033[01;34m >\033[00m '`"
\001
i\002
wokół sekwencji dla właściwegoreadline
wsparcia.$ 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 "')
Wygląda na to, że występuje problem z renderowaniem podczas kopiowania i wklejania w przeglądarce, gdzie\002:\001
część polecenia jest umieszczana w schowku jako\002:\<200c><200b>001
(gdzie<200c>
i<200b>
są znakami, które nie drukują, prawdopodobnie CR / NL z word- zawijanie).Przewodnik dotyczący konfigurowania pokolorowanego monitu mysql.
Krok 1. Dowiedz się, jak normalnie zalogować się za pomocą ustawionego monitu:
Krok 2. Dowiedz się, w jaki sposób możesz potokować interpretowane wyrażenie poprzez echo do „aliasu”:
Co robi dokładnie to samo, co krok 1 powyżej:
Krok 3. Zrozum, jak echo -e ocenia pokolorowane wyrażenie:
To koloruje podpowiedź „foobar>” czerwony:
Lubię to:
Krok 4. Jeśli jesteś zdezorientowany, co się tutaj dzieje:
Spójrz na wyrażenie:
\x1B[31mfoobar>\x1B[0m
Składa się z trzech części:
Krok 4. Zaawansowane, Sprawmy, aby monit był naprawdę miły:
Jeśli masz wątpliwości co do tego, co robi ten ogromny kod:
Wyjaśnienie:
Więc wow. Wiele kodów.
źródło
readline
byłby jakiś pomysł, jak poprawnie uciec kody terminala, aby nie pomylić długości linii i edytować wiele linii w liniimysql
poleceń? (spróbuj napisać wiele wierszy, a następnie naciśnij i przytrzymaj klawisz Backspace)Chciałem, aby podpowiedź znajdowała się w tytule moich terminali, co jest w zasadzie takim samym problemem, jak podbicie kolorowego podpowiedzi, po prostu inny kod ucieczki. Przeszedłem przez to i zastanawiałem się, czy mógłbym to zrobić bez konieczności pamiętania specjalnego aliasu, takiego jak
colormysql
itp., Wspomnianego w odpowiedziach.Dodałem następujące,
.bashrc
które rozwiązują problem na moim komputerze:export MYSQL_PS1=$(echo -e "\033]0;\u@\h [\d]\007\u@\h [\d]> ")
służy to
echo -e
do generowania nieprzetworzonych znaków zmiany znaczenia (zamiast symbolicznych) doMYSQL_PS1
zmiennej. Powinno to również działać z kolorami.źródło
To dość niefortunna odpowiedź, ale nie możesz.
W odniesieniu do stosowania sekwencje ANSI MySQL pozwala tylko następujące :
Jeśli chodzi o odpowiedź cmjdmillera, grc działa tylko w celu wyświetlenia danych wyjściowych z powłoki MySQL poprzez „pager”.
Najlepiej można zrobić jest użycie rlwrap tak:
rlwrap -a -p'GREEN' mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
. Nie daje to jednak drobiazgowej kontroli, ponieważ koloruje cały monit. Bądź również ostrożny, ponieważ wyświetla hasło w postaci czystego tekstu.źródło