К моему сожаления (и радости красноглазиков) в Linux нельзя обойтись совсем без терминала. Но и в этом не легком деле всегдя найдется, как упростить себе жизнь. По умолчанию Ubuntu Linux использует командную оболочку bash, которая на данный момент является самой распространенной для Linux дистрибутивов. Эта статья адресована тем, кто, не смотря ни что, любит покаопаться в терминале, стирая пальцы (или маникюр). Речь пойдет о Z Shell.

(прим. Админа)

Z shell, zsh — одна из современных командных оболочек UNIX, может использоваться как интерактивная оболочка, либо как мощный скриптовой интерпретатор. Zsh является расширенным bourne shell с большим количеством улучшений.

Некоторые полезные особенности:

  • программируемое автодополнение, которое помогает пользователям вводить как команды, так и их аргументы, со встроенной поддержкой нескольких сотен команд;
  • разделяет историю команд между всеми запущенными экземплярами оболочки;
  • расширенное дополнение названий файлов, что позволяет указать файл без необходимости запускать внешние программы, наподобие find;
  • расширенная поддержка переменных и массивов;
  • редактирование многострочных команд в едином буфере;
  • коррекция опечаток;
  • имеет различные режимы совместимости (то есть, вы можете использовать zsh вместо bourne shell при запуске, как /bin/sh);
  • модифицируемые приглашения (prompts), включающие возможность расположить приглашение справа и настроить автоскрытие при наборе длинных команд;
  • полностью настраивается.

Собственно если хотите чтобы было так:

и так:

и вот так:

Надо сделать следубщее:

  1. Перво-наперво, как ни крути, придется зайти в иксы под root (не актуально для Ubuntu, хотя и возможно).
  2. Открываем "Приложения → Центр приложений Ubuntu". В поиске пишем zsh, увидим следущее:
  3. Устанавливаем.
  4. К великому сожалению, без консоли не обойтись. Открываем консоль и пишем chsh , вас попросят ввести путь, вводим /bin/zsh. На этом, собственно, работа в консоле закончена, и к ней мы возвращаться не будем.
  5. Далее открываем файл по пути /etc/passwd , находим в этом файле строку root и строку вашего имени и приводим к такому виду:

Показать /etc/passwd »

root:x:0:0:root:/root:/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
messagebus:x:102:107::/var/run/dbus:/bin/false
avahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
avahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
couchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash
speech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
usbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false
haldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false
kernoops:x:109:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
pulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false
saned:x:112:118::/home/saned:/bin/false
hplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false
gdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false
rev1ved:x:1000:1000:Rev1ved,,,:/home/rev1ved:/bin/zsh
sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin
Slmodemd:x:116:124:Smart Link Modem Server,,,:/var/log/slmodemd:/bin/false

т. е. Ничего не меняем кроме путей упомянутых выше строк на /bin/zsh
6. Теперь, когда будете входить в консоль будет написан только ник, не пугайтесь, ща исправим - надо воткнуть два конфига .zshrc . Создаем обычный фаил: правой кнопкой мыши вызываем контекстное меню Создать документ → Пустой файл. Пока что назавем его «zshrc»(без ковычек)
7. В данном случае я дам свои конфиги, ниже будут ссылке где вы сможете подробней прочитать про Z-shell и отредактировать на свой вкус, хотя думаю врядли вам захочется это делать ;)
Вставляем:

Показать конфигурацию Z-shell »

autoload -U compinit
compinit -C

zstyle ':completion:*' menu yes select

hosts=(`cat ~/.ssh/known_hosts | tr , " " | awk '{ print $1 }'`)
zstyle '*' hosts $hosts

zstyle ':completion:*:processes' command 'ps xua'
zstyle ':completion:*:processes' sort false
zstyle ':completion:*:processes-names' command 'ps xho command'
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'

eval `dircolors`
alias ls='ls --color=auto'

zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

export GREP_OPTIONS='--color=auto'
export GREP_COLOR='1;32'

if [ -f /usr/bin/grc ]; then
alias ping="grc --colour=auto ping"
alias traceroute="grc --colour=auto traceroute"
alias make="grc --colour=auto make"
alias diff="grc --colour=auto diff"
alias cvs="grc --colour=auto cvs"
alias netstat="grc --colour=auto netstat"
fi

#autoload promptinit
#promptinit
#prompt walters

#PS1='%T %m%# '
PS1="$(print '%{e[1;33m%}')%T$(print '%{e[1;32m%}') %M%# $(print '%{e[1;37m%}')"
PS2='> '
RPROMPT='%~'

case $TERM in
xterm*|rxvt)
precmd () { print -Pn "e]0;%n@%m: %~a" }
preexec () { print -Pn "e]0;%n@%m: $1a" }
;;
screen)
precmd () { print -Pn "33k%~33\" }
preexec () { print -Pn "33k$133\" }
;;
esac

#PS1=$'%{e[1;32m%}%n%# %{e[0m%}'
#RPS1=$'%{e[1;35m%}%/ %{e[1;33m%}%*%{e[0m%}'

#alias ls='ls --color=auto'
# Lines configured by zsh-newuser-install
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
bindkey -e
# End of lines configured by zsh-newuser-install
# The following lines were added by compinstall
zstyle :compinstall filename '/home/rev1ved/.zshrc'

autoload -Uz compinit
compinit
export ORACLE_HOME=/home/rev1ved/app/client_1/
export PATH=$PATH:/opt/Ice-3.3/bin:$ORACLE_HOME/bin
export ICE_HOME=/opt/Ice-3.3
# End of lines added by compinstall

Но на это конфиг еще не готов, надо его отредактировать чуть-чуть. В конце конфига найдите следущие строки:

zstyle :compinstall filename '/home/rev1ved/.zshrc'
autoload -Uz compinit
compinit
export ORACLE_HOME=/home/rev1ved/app/client_1/

и замените путь к домашней директории на свой.
8. Копируем файл zshrc в домашнюю директорию простого пользователя и переимовываем на .zshrc он у вас пропадет, не удивляйтесь — это нормально.
9. Теперь конфиг для пользователя готов, но можете пока не опробывать, ничего вы пока что в консоли не увидите, ибо изменения начнут действовать только после ребута. Переходим в папку /root/ и создаем там файл zshrc так же открываем и вставляем конфиг для РУТА:

Показать конфигурацию Z-shell для root »

autoload -U compinit
compinit -C

zstyle ':completion:*' menu yes select

zstyle ':completion:*:processes' command 'ps xua'
zstyle ':completion:*:processes' sort false
zstyle ':completion:*:processes-names' command 'ps xho command'
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'

eval `dircolors`
alias ls='ls --color=auto'

zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

export GREP_OPTIONS='--color=auto'
export GREP_COLOR='1;32'

if [ -f /usr/bin/grc ]; then
alias ping="grc --colour=auto ping"
alias traceroute="grc --colour=auto traceroute"
alias make="grc --colour=auto make"
alias diff="grc --colour=auto diff"
alias cvs="grc --colour=auto cvs"
alias netstat="grc --colour=auto netstat"
fi

#autoload promptinit
#promptinit
#prompt walters

#PS1='%T %m%# '
PS1="$(print '%{e[1;33m%}')%T$(print '%{e[1;31m%}') %M%# $(print '%{e[1;37m%}')"
PS2='> '
RPROMPT='%~'

case $TERM in
xterm*|rxvt)
precmd () { print -Pn "e]0;%n@%m: %~a" }
preexec () { print -Pn "e]0;%n@%m: $1a" }
;;
screen)
precmd () { print -Pn "33k%~33\" }
preexec () { print -Pn "33k$133\" }
;;
esac

#PS1=$'%{e[1;32m%}%n%# %{e[0m%}'
#RPS1=$'%{e[1;35m%}%/ %{e[1;33m%}%*%{e[0m%}'

#alias ls='ls --color=auto'
# Lines configured by zsh-newuser-install
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
bindkey -e
# End of lines configured by zsh-newuser-install
# The following lines were added by compinstall
zstyle :compinstall filename '/home/rev1ved/.zshrc'

autoload -Uz compinit
compinit
export ORACLE_HOME=/home/rev1ved/app/client_1/
export PATH=$PATH:/opt/Ice-3.3/bin:$ORACLE_HOME/bin
export ICE_HOME=/opt/Ice-3.3
# End of lines added by compinstall

И опять же ищем строки

zstyle :compinstall filename '/home/rev1ved/.zshrc'
autoload -Uz compinit
compinit
export ORACLE_HOME=/home/rev1ved/app/client_1/

и меняем на своё.
10. Теперь переименовываем его так как и для простого пользователя .zshrc (символ «.» в начале папки или файла делает скрытым файл или папку. Но точку ОБЯЗАТЕЛЬНО надо поставить, иначе zsh не будет видеть конфиг потому что он ищет конфиги по пути ~/.zshrc и /root/.zshrc)
11. На этом собственно работа закончена, осталось перезагрузиться и войти под своей обычной учетной записью.

P.S. После перезагрузки заходите в консоль и пробуйте, например напишите ls и жмите таб, или cd и жмите таб, или если вы не знаете как правильно пишется команда, достаточно одной буквы и нажать таб, и вам высветися все команды которые так начинаются, и выберайте стрелочками. В общем сами все увидите. =)

Полезные ссылки о ZSH:

Популярность: 5%

Поделиться в соц. сетях

Опубликовать в Одноклассники
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Яндекс
Опубликовать в Google Buzz
Опубликовать в Google Plus