Курс выживания в консоли
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/
Полезные ресурсы
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" абсолютно ничего не дает, она только уменьшает твою командную строку на девять символов. Далее имя пользователя. В большинстве случаев можно обойтись и без него. Эта фича может быть полезна, если ты регистрируешься на многочисленных удаленных узлах и всегда под разными именами. Согласись, такое бывает совсем не часто. Поэтому достаточно отображать значок $ или % во время сеанса обычного юзера и решетку # во время сеанса суперпользователя. Лично я в круглые скобки заключаю текущую директорию, а в фигурные - текущую команду буфера истории. Возможно, на первый взгляд следующая строка покажется тебе абракадаброй, но на самом деле это довольно симпатичное и информативное приглашение зеленого цвета: