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

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 - перемещает курсор на одно слово вперед;

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