Курс выживания в консоли

Andrushock

Xakep, номер #061, стр. 061-080-4


compctl -k "( www.xakep.ru www.openbsd.org www.zsh.org)" ping

Теперь после набора в командной строке

$ ping www.x<Tab>

имя хоста закомплитится до www.xakep.ru.

Тебе нужно автодополнение пользовательских процессов?

zstyle ':completion:*:processes' command 'ps -au$USER'

Хочешь автодополнение аргументов программ?

compile=(check clean cleandir depend install obj)

compctl -k compile make

Линуксоиды могут смело помещать в этот массив аргументы dep, mrproper, menuconfig, modules, modules_install.

Кстати, тебе не надоело, что bash, выполняя автодополнение при соседстве одноименных подкаталогов и файлов, откровенно тупит и показывает листинг каталога, в котором они находятся? Избавляемся от этого раз и навсегда! К примеру, с помощью "compctl -g" делаем привязку mp3-файлов к музыкальным проигрывателям:

compctl -g "*.(mp3|MP3)" + -g "*(-/) .*(-/)" mpg123 xmms

Теперь на команду

$ mpg123 foobar<Tab>

оболочка больше никогда не побеспокоит тебя одноименными директориями и закомплитит только файлы с расширением mp3.

Еще одна приятная фича - автодополнение с подсказкой. Здесь происходит вывод возможных опций заданной команды с их кратким описанием:

$ tar<Tab>

tar function

A -- append to an archive

c -- create a new archive

f -- specify archive file or device

Работает и автодополнение опций (-na и -pr как по волшебству превращаются в -name и -print):

$ find / -na<Tab> 'foobar' -pr<Tab>

Нельзя не рассказать и о раскрытии путей при их сокращенном наборе:

$ cd /u/p/au/la<Tab>

При нажатии после последнего символа клавиши Tab, команда автоматически дополнится до:

$ cd /usr/ports/audio/lame/

Полезные ресурсы

http://zsh.sunsite.dk/

www.faqs.org/faqs/unix-faq/shell/zsh/

www.acm.uiuc.edu/workshops/zsh/toc.html

http://adamspiers.org/computing/zsh/

Вот так можно перечитать конфиг zsh: ". ~/.zshrc".

Будь осторожен с псевдонимами вида "alias rr='rm -rf'".

На вечеринку без приглашения?

Без сомнения, особое внимание нужно уделить разработке приглашения командного интерпретатора. Грамотный промпт позволит избежать постоянного ввода дополнительных команд (например, pwd, чтобы выяснить текущий каталог), сэкономит драгоценное место в командной строке и позволит вывести на экран дополнительную информацию. Если у тебя нет шелл-аккаунтов, или ты вообще сидишь без Сети, то нет никакого смысла держать в приглашении имя хоста, на котором запущена оболочка. Запись типа "localhost" абсолютно ничего не дает, она только уменьшает твою командную строку на девять символов. Далее имя пользователя. В большинстве случаев можно обойтись и без него. Эта фича может быть полезна, если ты регистрируешься на многочисленных удаленных узлах и всегда под разными именами. Согласись, такое бывает совсем не часто. Поэтому достаточно отображать значок $ или % во время сеанса обычного юзера и решетку # во время сеанса суперпользователя. Лично я в круглые скобки заключаю текущую директорию, а в фигурные - текущую команду буфера истории. Возможно, на первый взгляд следующая строка покажется тебе абракадаброй, но на самом деле это довольно симпатичное и информативное приглашение зеленого цвета:

Назад на стр. 061-080-3  Содержание  Вперед на стр. 061-080-5