Курс выживания в консоли
Andrushock
Xakep, номер #061, стр. 061-080-5
$ PROMPT=$(echo '%B%{\033[32m%}(%~){%!}%#%{\033[37m%} ')
(~src){139}%
Не хватает часиков? С помощью переменной RPROMPT можно задать правую часть приглашения оболочки:
$ RPROMPT='[%T]'
(~src){140}% [12:40]
В арсенале zsh есть еще одно грозное оружие - поддержка тем для приглашений (themeable prompts). После подгрузки во время сеанса работы модуля promptinit, тебе станут доступны сразу 15 различных видов приглашения командной строки:
$ autoload promptinit
$ promptinit
Выводим список встроенных тем и устанавливаем понравившуюся:
$ prompt -l
Currently available prompt themes:
adam1 adam2 bart bigfade clint elite2 elite fade fire off oliver redhat suse walters zefram
$ prompt clint
[Thu 03/09/11 19:36 MSD][p0][i386/openbsd3.3/3.3][4.1.1]
<andrushock@midian:~>
zsh 63 %
Декорирование окон
Если ты просто жить не можешь без имени пользователя и хоста, то их можно вынести в caption окна терминалки или telnet/ssh клиента вот таким нехитрым способом:
case $TERM in
xterm*)
precmd () {
print -Pn "\033]0;%n@%M (%y) - %/\a"
print -Pn "\033]1;%n@%m (tty%l)\a"
}
preexec () {
print -Pn "\033]0;%n@%M (%y) - %/ - ($1)\a"
print -Pn "\033]1;%n@%m (tty%l)\a"
}
;;
esac
Теперь перед выполнением каждой команды и перед сменой каталога данные в заголовке окна будут изменяться на: "имя_пользователь@полное_имя_хоста (терминал) - текущий_каталог - (выполняемая_команда)". При сворачивании окна инфа будет отображаться в сжатом виде: "имя_пользователь@хост (терминал)".
Забиндим все от А до Я
Для редактирования командной строки можно не только использовать комбинации клавиш vi и emacs, но и устанавливать собственные сочетания. Даже если ты постоянно воркаешь в vi/vim, я рекомендую обратить пристальное внимание на emacs'овские биндинги, так как именно благодаря им работать в консоли станет гораздо комфортнее. Но об этом чуть позже, а пока:
bindkey -e
Следующие записи помогут восстановить работу клавиш Insert, Delete, Home, End, Page Up и Page Down в некоторых терминалах:
bindkey "\e[1~" beginning-of-line
bindkey "\e[2~" transpose-words
bindkey "\e[3~" delete-char
bindkey "\e[4~" end-of-line
bindkey "^[[5~" up-line-or-history
bindkey "^[[6~" down-line-or-history
Подчиняем консоль
Если ты до сих пор перемещаешься по командной строке, используя стрелки влево и вправо, то тогда я понимаю, почему ты тихо ненавидишь консоль и с нескрываемым удивлением поглядываешь на юниксоидов. Фокус заключается в том, что существует несколько комбинаций клавиш, заметно облегчающих передвижение в консоли. Только изучив их, ты сможешь эффективно управляться с командной строкой:
Ctrl+a - перемещает курсор в начало строки;
Ctrl+e - перемещает курсор в конец строки;
Ctrl+f - перемещает курсор на один символ вперед;
Ctrl+b - перемещает курсор на один символ назад;
Alt+f - перемещает курсор на одно слово вперед;