Как установить ZSH в Debian
Всем привет, сегодня мы узнаем, как установить ZSH в Debian. После того, как я пообщался с CLI у Cisco я понял что стандартный bash немного слабоват. Было принято решение поискать что-то более удобное, чем он и мой выбор пал на zsh, поэтому и опишу, как его установить и первично настроить. Думаю, что я не один, кому может потребоваться выполнить такую задачу. Если останутся вопросы, то готов их выслушать в комментариях.
Алгоритм установки ZSH в Debian
Для начала поставим его из репозиториев:
после этого пропишем его в качестве стандартной оболочки(ВНИМАНИЕ! это требуется повторить для каждого пользователя в системе, под которым мы хоти мего использовать)
для этого выполним под нужным пользователем команду:
и в появившемся диалоге напишем:
теперь в качестве интерпретатора команд для данного пользователя будет использоваться zsh. Но хотелось бы почувствовать мощь нового командного интерпретатора, а для ее раскрытия надо сначала создать конфигурацию. Вообще в сети много примеров, но я на данный момент приведу основы. для начала создадим файл ~/.zshrc и добавим в него следующее:
#. /etc/zsh_command_not_foundautoload -U compinitcompinit#калькуляторautoload -U zcalc#настройки историиHISTFILE=~/.zhistoryHISTSIZE=10000SAVEHIST=10000setopt APPEND_HISTORYsetopt HIST_IGNORE_ALL_DUPSsetopt HIST_IGNORE_SPACEsetopt HIST_REDUCE_BLANKS# автосмена директории без команды cdsetopt autocd#Коректировка ошибокsetopt CORRECT_ALLSPROMPT="Ошибка! Вы хотели ввести %r вместо %R? (Yes/No/Edit/Abort) "# не пищать!setopt No_Beep#Экспорт путейexport PS1 NLSPATH PAGER MAIL LS_COLORS LS_OPTIONS LIBRARY_PATH \C_INCLUDE_PATH CPLUS_INCLUDE_PATH EDITOR TERM XFILESEARCHPATHmanpath="/usr/man:/usr/share/man:\/usr/local/man:/usr/X11R6/man:/opt/qt/doc"export MANPATH#дополнение в виде менюzmodload zsh/complistsetopt menucompletezstyle ':completion:*' menu yes select#zstyle ':completion:*' add-space true# в теории добавляет пробел после вода, но на практеке неудобно блин...bindkey -M menuselect "^M" .accept-line# разрешить только одну ошибку во вводеzstyle -e ':completion:*:approximate:*' max-errors'reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) numeric )'#биндинг батоновbindkey -eif [[ $EUID == 0 ]]; thenPS1=$'%{\e[1;7m%}%n@%m:%~ #%{\e[1;0m%} ';elsePS1=$'%{\e[1;7m%}%n@%m:%~ >%{\e[1;0m%} ';fiPROMPT=$PS1;RPROMPT=$'%{\e[1;34m%}%T%{\e[0m%}'alias ls='ls -F --color=auto'alias ll='ls -l'alias la='ls -A'alias li='ls -ial'alias lsd='ls -ld *(-/DN)'alias mountiso='sudo mount -o loop -t iso9660 'alias mv='nocorrect mv' # переименование-перемещение c пogтвepжgeнueмalias cp='nocorrect cp' # рекурсивное копирование с подтверждениемalias rm='nocorrect rm' # удаление с подтверждениемalias mkdir='nocorrect mkdir' # создание каталогов без коррекцииalias mount='sudo mount'alias umount='sudo umount'alias ifconfig='sudo ifconfig'alias apt-get='sudo apt-get'alias wpa_start='sudo wpa_supplicant -B -Dwext -i wlan0 -c /home/black/wpa.conf'alias dhclient='sudo dhclient'alias reboot='sudo reboot'alias shutdown='sudo shutdown'alias hibernate='sudo hibernate'alias wpa_gui='sudo wpa_gui'alias mkiso_fast='mkisofs -JrvV Disk -o 'alias cdrecord_fast='cdrecord -v -eject dev=1000,0,0 'alias powertop='sudo powertop'alias sx='startx'alias ntp='sudo ntpdate pool.ntp.org'alias cgrep='grep -v -E "^#|^$|^;"'#alias -s avi=mplayer#alias -s exe=wine#alias -s djv=evince#alias -s pdf=evince#alias -s jpg=geeqie#alias -s JPG=geeqie
Теперь сохраняем и запускаем консоль для проверики того, что мы натворили. Для начала попробуем сменить местоположение. Для этого просто введем путь к новому местоположение и нажмем Enter. Вуаля! она сменилась! Далее попробуем посмотреть ман по какой-нибудь команде. Для этого введем нужную нам команду( например mkdir и нажмем комбинацию Alt+H) у нас выведется ман по данной команде. Причем при выходе из мана мы вернемся к тому же месту, на котором остановились во вводе команды.
Ну и напоследок попробуем вывести список всех возможных ключей какой-нить утилиты (скажем это будет ssh). для этого введем ssh – и нажмем на Tab. По этим ключам можно будет перемещаться стрелочками.