color console
Подсветка потока ошибок в zsh
Часто сообщения об ошибках теряются в общем потоке вывода данных, и их хотелось бы как нибуть выделять. Тут опять пригодятся глобальные алиасы zsh.
Добавим в ~/.zshrc
autoload colors # подключим цвета colors alias -g HE='2>>( sed -ue "s/.*/$fg_bold[red]&$reset_color/" 1>&2 )' # Highlight Errors
После перезагрузки zsh у нас появится глобальный алиас HE который можно использовать на ряду с другими фильтрами. Алиас запускает в фоне sed который подсвечивает строки, и перенаправляет ему в на выход стандартный поток ошибок
Пример работы: мы хотим найти в /etc все файлы в названии которых есть zsh и при этом подсветить в каких каталогах поиск не удался.

Пояснения: строка
$ find /etc HE GI zshРазвернется в
find /etc 2>>( sed -ue "s/.*/$fg_bold[red]&$reset_color/" 1>&2 ) | grep -i zsh
Глобальный алиас GI описан здесь.
Подсведка результатов grep описана здесь
BUGS: алиас запускает асинхронный процесс подсведки цветов, что обозначает что подсвеченые ошибки могут выводится не синхронно с потоком стандартного вывода.
PS
Для пользователей bash существует полезный скрипт по подсвечиванию потока ошибок для программы переденной как параметр.
Просмотр diff из потока в цвете
Часто приходится смотреть diff не из файла, а из потока, например сформированный командой cvs diff или svn diff.
Удобно в таком случае просматривать в цвете в vim, не записывая в файл, а прямо в потоке.
наример:
$ svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdelibs/kdecore/ $ cd kdecore $ svn diff -r 181258:183456 kglobalaccel_x11.cpp | vim -
diff покажется красиво раскрашенным Ж:-)
PS
подсветка текста в консоли
Иногда хочется пропустить текст через такой фильтр, как grep, но чтобы он только подсветил совпадения, а не вырезал строки с ними.
Можно использовать вот такую функцию, которую можно добавить в ваш ~/.bashrc или ~/.zshrc:
function hilight { ESC=`echo -e "\033"` COLORON="$ESC[1;33m" COLOROFF="$ESC[1;0m" if [ -z "$1" ] ; then echo "Usage: hilight 'regex' [file1 file2 ...]" 1>&2; return 1 fi REGEX="$1" shift sed -e "s/${REGEX}/${COLORON}&${COLOROFF}/g" $* }
пример использования:
$ hilight слово *UPD:
можно подобное реализовать на grep ( коментарий с пояснениями)
Цветной gcc, make, и diff
раз уж пошел разговор о цветах, то установив цветные фантики, можно также установить цветной gcc, make, и diff.
устанавливается пакетами:
colorgcc, colormake, colordiff
вызывается тоже с аналогичными именами. Мануалы пакетов содержат информацию о том, как перенастроить систему на использование данных оберток по умолчанию.
Цветной вывод команд в консоли
Устали от черно серого терминала(вариант: черно зеленого Ж:-)? Можно порадовать себя всевозможными способами в буквальном смысле разукрасить свою жизнь в консоли. Но как обычно этого может быть мало, и как всегда найдется человек доведший идею до мараз^W логического конца Ж:-)
Этот набор врапперов над более чем 80 самыми расспространенными программами(df, ping, gcc... так же наиболее часто используемыми файлами /etc/fstab, /var/log/messages...) который разукрашивает вывод этих команд в косоли. Читаем дальше...
Как раскрасить приглашения bash
COLOR1="\[\033[0;36m\]"
COLOR2="\[\033[0;33m\]"
COLOR3="\[\033[0;38m\]"
COLOR4="\[\033[0;32m\]"
if [ "$UID" = 0 ]; then
# I am root
COLOR2="\[\033[0;31m\]"
PS1="$COLOR1[$COLOR1\u$COLOR2@$COLOR1\h$COLOR2:$COLOR4\W$COLOR1]$COLOR2# $COLOR3"
else
PS1="$COLOR1[$COLOR1\u$COLOR2@$COLOR1\h$COLOR2:$COLOR4\W$COLOR1]$COLOR2\$ $COLOR3"
fi
расцветка имен файлов при автодолнении в zsh
добавте в ~/.zshrc
eval `dircolors`
zstyle ':completion:*:default' list-colors "${(s.:.)LS_COLORS}"теперь например при
$ cd /[TAB]
выведутся варианты имен файлов в цвете
цвета будут такие же как и при ls --color
если хотите настроить свои цвета то читаем
man dircolors
man 5 dir_colors
Вот более портируемый вариант, который будет работать и в *BSD системах где dircolors нет
if which dircolors > /dev/null; then
eval `dircolors`
else
LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:"
LS_COLORS="${LS_COLORS}or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:"
LS_COLORS="${LS_COLORS}*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:"подсветка результатов работы grep
GREP_OPTIONS='--color=auto' #GREP_COLOR='5;38' #мигающий GREP_COLOR='1;33' #ярко-желный на черном export GREP_OPTIONS GREP_COLOR
ls | less в цвете
Чтобы содержимое большого каталога показывалось в цвете и при использовании less, можно воспользоваться следующей командой: ls --color | less -R.
Пояснение: --color нужно чтобы ls включило поддержку цвета несмотря на то, что его stdout - не терминал. Опция -R заставляет less не перехватывать ESC-последовательности, управляющие цветом, а передавать их дальше, так что они обрабатываются драйвером консоли и приводят к правильному результату.
PS. Можно создать соответствующий скрипт или, например, функцию в bash:
l() { ls --color "$@" | less -R; }
Тогда можно вызывать l -l для получения ls -l в цвете с прокруткой.
alias и функции, как средство настройки оболочки по себя
очень часто для автоматизации часто выполняемых действий используются скрипты, но есть определенный круг задач, которые настолько малы, что писать для них отдельные скрипты нецелессобразно. для них можно использовать алиасы и функции оболочки.


