Управление консолью Linux

Конечно, администрировать сервер -- гораздо более сложное и полезное дело, чем настраивать консоль. Но про сложные и полезные вещи уже и без меня много написано, а про консоль я что-то нигде не видел, а иногда очень хочется, чтобы что-то было цветным, и динамик не пищал как резаный...

[Алексей Мичурин]

Конечно, администрировать сервер -- гораздо более сложное и полезное дело, чем настраивать консоль. Но про сложные и полезные вещи уже и без меня много написано, а про консоль я что-то нигде не видел, а иногда очень хочется, чтобы что-то было цветным, и динамик не пищал как резаный. Вот и решил я написать этот рассказик. Здесь далеко не все возможности. Более подробно смотрите man 4 console_codes.

Управление звуком

 \007 издать звук
 \033[10;#] установить частоту звукового сигнала в герцах
 \033[11;#] установить продолжительность звукового сигнала в миллисекундах

Допускается объединение двух последних управляющих последовательностей. Например \033[10;55]\033[11;30] может быть заменено эквивалентной последовательностью \033[10;55;11;30].

Пример:

#!/bin/sh
# скрипт устанавливает продолжительность и частоту
# звукового сигнала равными 5000Hz и 200ms, соответственно;
# и издаёт звуковой сигнал
#
echo -en "\033[10;5000;11;200]\7"

Управление цветом

 \033[0m все атрибуты по умолчанию
 \033[1m жирный шрифт (интенсивный цвет)
 \033[2m полу яркий цвет (тёмно-серый, независимо от цвета)
 \033[4m выделение (ярко-белый, независимо от цвета)
 \033[5m мигающий
 \033[7m реверсия (знаки приобретают цвет фона, а фон -- цвет знаков)
 \033[22m установить нормальную интенсивность
 \033[24m отменить подчеркивание
 \033[25m отменить мигание
 \033[27m отменить реверсию
 \033[30 чёрный цвет знаков
 \033[31 красный цвет знаков
 \033[32 зелёный цвет знаков
 \033[33 коричневый цвет знаков
 \033[34 синий цвет знаков
 \033[35 фиолетовый цвет знаков
 \033[36 цвет морской волны знаков
 \033[37 серый цвет знаков
 \033[40 чёрный цвет фона
 \033[41 красный цвет фона
 \033[42 зелёный цвет фона
 \033[43 коричневый цвет фона
 \033[44 синий цвет фона
 \033[45 фиолетовый цвет фона
 \033[46 цвет морской волны фона
 \033[47 серый цвет фона

Допускается объединение этих управляющих последовательностей. Например \033[1m\033[5m\033[36m может быть заменено эквивалентной последовательностью \033[1;5;36m.

Пример:

#!/bin/sh
#
# скрипт выводит на экран сообщение с использованием цвета
#
echo -en "\33[37;1;41m CAUTION \33[0m"

Пример:

#!/bin/sh
#
# скрипт запускает копию командного интерпретатора sh
# с цветным приглашением
#
export PS1="\[\033[1;30m\][\[\033[0m\]\t\[\033[1;30m\];\
\[\033[0m\]\W\[\033[1;30m\]]\[\033[36;1m\]|\[\033[0m\] "
echo "Now runing a new copy of shell width color prompt"
echo -en "use \033[1;36mexit\033[0m command or"
echo -e "\033[1;36m^D\033[0m to return back"
sh
#
# обратите внимание на то, что управляющие последовательности
# заключены в скобки "\[" и "\]"
# Это сделано для того, чтобы shell не учитывал их при
# оценке длины строки.
# В противном случае длинные строки будут переноситься неверно.
#

Управление положением курсора

 \033[#A передвинуть курсор вверх на # строк
 \033[#B передвинуть курсор вниз на # строк
 \033[#С передвинуть курсор вправо на # столбцов
 \033[#D передвинуть курсор влево на # столбцов
 \033[#E передвинуть курсор вниз на # строк и поставить в начало строки
 \033[#F передвинуть курсор вверх на # строк и поставить в начало строки
 \033[#G переместить курсор в указанный столбец текущей строки
 \033[#;#H задает абсолютные координаты курсора (строка, столбец)

Пример:

#!/bin/sh
#
# скрипт выводит на экран список устройств и на его фоне
# печатает строку " It is devices list "
#
ls -l /dev
echo -en "\033[12A\033[30G\033[1;5;31;41m It is devices list \033[0m\033[12E"

Работа с палитрой

  \033]Pnrrggbb Изменяет палитру. n -- номер цвета; rr, gg и bb -- значения RGB-компонент в шестнадцатеричной форме
  \033]R Восстанавливает палитру, принятую по умолчанию

Пример:

#!/bin/sh
#
# скрипт делает фон красноватым
# такой фон удобно иметь на консоли root'a;
#
echo -en "\033]0550000"

Работа с виртуальными консолями

 \033[12;#] Сделать текущей консоль с указанным номером

Пример:

#!/bin/sh
#
# скрипт делает текущей консоль на которой запущена
# самая прожорливая задача
#
ps aOv | tail -n1 | ( read vpid vtty vother
echo -en "\033[12;${vtty}]" )

Работа с xterm

  \033]0;text\007 Присваивает имя окну и иконке
  \033]1;text\007 Присваивает имя иконке
  \033]2;text\007 Присваивает имя окну

Пример:

#!/bin/sh
#
# скрипт присваивает имена окну и иконке
#
echo -en "\033]2;My Window\007\033]1;My Icon\007"

Оригинал статьи расположен по адресу: http://gazette.linux.ru.net/rus/articles/hobcon.html.

[ опубликовано 18/02/2004 ]

Алексей Мичурин - Управление консолью Linux   Версия для печати