Я хочу добавить цвета в командную строку цвета MySQL.
У меня пока в скрипте (database.sh):
mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
Я хотел бы root
быть красным , @
чтобы быть синим , localhost
чтобы быть зелеными и database
быть бирюзовыми :
root@localhost:database>
Возможно ли сделать это в моем сценарии?
Ответы:
Не слушайте людей, которые говорят, что вы не можете. Вот:
Затем:
источник
$(foo)
выполняет результат foo, в этом случае вывод echo. -E для эха расширяет \ x1b в escape-символ. \ X1b [31m - это код управления терминалом, который устанавливает текущий цвет на красный. И так далее. \ x1b [0m возвращает цвет к цвету терминала по умолчанию.mysql --prompt="`echo -e '\033[01;32m\\d\033[01;34m >\033[00m '`"
\001
и\002
вокруг последовательностей для надлежащей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>
являются непечатными символами, вероятно, CR / NL из word- оберточная бумага).Пошаговое руководство по настройке цветного приглашения MySQL.
Шаг 1. Поймите, как обычно входить в систему с установленным приглашением:
Шаг 2. Поймите, как вы можете передать интерпретированное выражение через echo в 'alias':
Что точно так же, как шаг 1 выше:
Шаг 3. Понять, как echo -e оценивает раскрашенное выражение:
Это окрашивает подсказку «foobar>» в красный:
Как это:
Шаг 4. Если вы не уверены, что здесь происходит:
Посмотрите на выражение:
\x1B[31mfoobar>\x1B[0m
Он состоит из трех частей:
Шаг 4. Дополнительно. Давайте сделаем подсказку очень приятной:
Если вы не уверены, что делает этот массивный код:
Объяснение:
Вот это да. Много кодов.
источник
readline
не путать длину строки и возможность редактирования нескольких строк вmysql
командной строке? (попробуйте написать несколько строк, затем нажмите и удерживайте клавишуЯ хотел, чтобы подсказка была в заголовке моего терминала, что по сути та же проблема, что и желание цветной подсказки, просто другой escape-код. Наткнулся на это и подумал, смогу ли я сделать это без необходимости запоминать специальный псевдоним, подобный тому, который
colormysql
указан в ответах.Я добавил следующее к моему,
.bashrc
что помогает моей машине:export MYSQL_PS1=$(echo -e "\033]0;\u@\h [\d]\007\u@\h [\d]> ")
то, что это делает, используется
echo -e
для генерирования необработанных управляющих символов (а не символических) дляMYSQL_PS1
переменной. Это также должно работать с цветами.источник
Это довольно неудачный ответ, но вы не можете.
Что касается использования escape-последовательностей ANSI, MySQL допускает только следующее :
Что касается ответа cmjdmiller, в GRC работает только для вывода на экран из оболочки в MySQL через «пейджер».
Лучшее , что вы могли бы сделать , это использовать rlwrap так:
rlwrap -a -p'GREEN' mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
. Однако это не даст вам детального контроля, поскольку раскрасит всю подсказку. Также будьте осторожны, потому что он отображает пароль в текстовом виде.источник