Ви все ще використовуєте bash? Тоді ми до вас!

Вже давним-давно хотів зрозуміти причину страшенних війн стосовно командної оболонки (shell). З Bash я був знайомий з самого початку мого використання Linux, але майже ніхто його не хвалив. Так, всі казали, що це дефолтний, громіздкий командний інткрпретатор, додаючи ще купу епітетів явно не на його користь. І ось одного разу я таки вирішив спробувати щось інше.

Коли новенький ZSH стартував як мій дефолтний шелл, я ще дуже довго не міг зрозуміти, чим же він настільки хороший. Це якраз той варіант, коли баш виглядав краще, оскільки був дефолтним і мав вже деякі настройки хоча б того ж запиту на ввід ($PROMPT, $PS[1-4]), а тут споглядання картини

localhost%

ніяк не радувало. Так моє перше знайомство і закінчилося б, якби мені не було ліньки поставити баш назад (думка “дай ще потестю, мож ще що цікаве вилізе” промайнула у мене в мізках і вирішила хід подій). З часом я звик до цього шелла, його невеликих особливостей, і нарешті почав бачити різницю в швидкості роботи (порівнюючи роботу bash і zsh на різних користувачах).

А поки час ішов, я ще не раз бачив деякі “розфарбовані” екземпляри все того ж ZSH, і мені кортіло нарешті й собі таку цяцьку. І ось нарешті моя мрія здійснилась, і я з вами всім цим щастям поділюсь 🙂 .

А почнемо ми знову ж з запиту на ввід. Купа мануалів та записів в блогах пропонує його в наступному вигляді:

[user@hostname:directory]#

На додачу до цього, ми ще й годинник прикрутимо справа;) Відкриваємо ~/.zshrc і вписуємо наступне:


export PROMPT='[%n@%m:%1~]%# '
export RPROMPT='[%*]'
alias ls='ls --color'
alias grep='grep --color'

Тут перший рядок відповідає за відображення запиту на ввід(в даному випадку дуже схожий на типовий в RedHat Linux), другий – за годинник, все інше знайомо до болю ще з часів bash-а. Ну а тепер можна цей самий запит і розфарбувати. Після додавання інформації про колір, частина нашого .zshrc виглядає наступним чином:


alias ls='ls --color'
alias grep='grep --color'
autoload colors
colors
PROMPT="[%{${fg[green]}%}%n%{${reset_color}%}@%{${fg[blue]}%}%m%{${reset_color}%}:%{${fg[red]}%}%1~%{${reset_color}%}]%# "
RPROMPT="[%{${fg[cyan]}%}%*%{${reset_color}%}]"
fpath=(~/myfns $fpath)
autoload -U promptinit
promptinit

Думаю, і так все зрозуміло написано навіть без коментарів. Результат наших з вами налаштувань виглядатиме десь так:

ZSH coloured prompt
Зазначу, що в принципі отримати екзотичний вигляд шелла можна і без роботи напильником: в системі вже є невеличкий підбір оформлення, список можна отримати командою prompt -l , ну а встановити один з них можна, наприклад, так:

prompt elite

І на додачу вам кілька посилань на ресурси, присвячені цьому шеллу:
http://wiki.archlinux.org/index.php/Zsh
http://rayninfo.co.uk/tips/zshtips.html