Помощь Joomla



Mysql Консоль

Разработка → Разукрашиваем вывод mysql-client в консоли из песочницы  Сентябрь 11, 2019 – 20:37
Командная строка MySQL Цвет и звук — это те небольшие радости, которые могут разукрасить и облегчить будние администратора при постоянной работе с консолью. Вывод цветовой информации регулируется так называемым escape-последовательностями, определяющими среди прочего цвет текста и цвет фона.

Общий вид: \033[Xm, где X — это значение параметра (цифра). Например, echo -ne "\033[34mHELLO" выведет синим цветом «HELLO». Таблицу цветов и других доступных параметров (подчеркивание, мигание и т.п.) можно получить в документации man console_codes в разделе «ECMA-48 Set Graphics Rendition». Обычно поддержка цвета интегрирована в само приложение, но mysql-client не входит в число таких программ.

В интернете не раз был встречен вопрос о разукрашивании консоли mysql, но нигде не нашлось рецепта. Только общие слова «может быть состряпать обертку» или «посмотрите в исходном коде». Такой вопрос на StackOverflow жил без ответа более 2 лет! «Жил» было специально употреблено в прошедшем времени, потому что ответ нашелся.

Поможет нам утилита grc. Она доступна в большинстве дистрибутивов и о ней многие знают. Но как обернуть в нее вывод mysql-client?

Утилита grc (Generic Colorizer) — это на самом деле обертка для grcat, которая запускает указанную команду и направляет вывод в grcat согласно конфигу. Нам понадобится непосредственно grcat, для которой будет написан конфиг, а так же небольшая настройка mysql-client.

В чем же проблема просто направить вывод mysql-client в grcat? Или просто использовать grc mysql…? В том, что mysql-client распознает окружение, из которого вызывалась команда. Если она используется интерактивно, то отображается табличная разметка. Если вызов был из скрипта, или поток данных направлен в другую программу — убирает табличную разметку из вывода и использует табуляцию. Простой пример:

$ mysql test -e "select * from test_table" +-+-+ | id | value | +-+-+ | 1 | a | +-+-+

$ mysql temp -e "select * from test_table" | cat - id value 1 a

В первом случае мы используем вывод в консоль, и отображается таблица. Во втором — перенаправляем вывод через cat, при этом таблица магическим образом пропадает.

Как подсказал пользователь truezemez в, табличный вывод можно сохранить с помощью опции -table. В этом случае перенаправление вывода в grc так же будет работать.

И на помощь приходит черный плащ чтение документации mysql. Оказывается, в mysql-client можно задать параметр PAGER, который отвечает за вывод результатов на экран. Им-то мы и воспользуемся, прописав туда grcat. Не забываем указать файл с конфигурацией. Вот фрагмент файла ~/.my.cnf:

[mysql] pager = grcat ~/.grcat

Source: habrahabr.ru

Похожие публикации:

  1. Mysql Книги
  2. Mysql Основы
  3. Sql с Нуля