Вступление
Данная статья описывает использование оболочки zsh на облачном сервере. Чтобы убедиться, что данная оболочка установлена на сервер, просто попробуйте ее запустить:
zsh
Если zsh установлена, это действие запустит ее.
В противном случае, установите оболочку, прежде чем выполнять данное руководство.
Использование zsh
Zsh намного мощнее, чем оболочки типа bash. Чтобы убедиться в этом, нужно рассмотреть несколько примеров. Для начала ознакомьтесь с возможностями автозаполнения данной оболочки.
Автозаполнение
Предположим, для организации конфигурационного файла текстового редактора пользователю нужно установить «vim-addon-manager», но он не может вспомнить название пакета. Вместо того, чтобы искать имя пакета при помощи команды apt-cache, можно сказать zsh вывести список пакетов, имя которых начинается с «vim»:
sudo apt-get install vim<tab>
vim vim-doc vim-lesstif vim-scripts
vim-addon-manager vim-gnome vim-migemo vim-syntax-go
vim-athena vim-gtk vim-nox vim-syntax-gtk
vim-common vim-gui-common vim-puppet vim-tiny
vim-conque vimhelp-de vim-rails vim-vimoutliner
vim-dbg vim-latexsuite vim-runtime
При помощи <tab> в конце команды apt можно получить список доступных пакетов. Затем можно набрать дополнительные параметры поиска, чтобы получить уникальное совпадение. В данном случае, внесение «-ad<tab>» дополнит команду должным образом.
sudo apt-get install vim-ad<tab>
Функцию автодополнения можно сделать еще более мощной. К примеру, в файл .zshrc можно внести следующий раздел:
nano ~/.zshrc
zstyle ‘:completion:*’ menu select
setopt completealiases
Это выполняет сразу два действия. Теперь можно автоматически дополнять любой псевдоним, внесенный в .zshrc, а также выбирать из нескольких доступных вариантов. Выполните команду source на файл .zshrc, чтобы активировать изменения, а затем снова запустите apt-get.
source ~/.zshrc
sudo apt-get install vim<tab>
Будет выведен такой же результат. Разница в том, что теперь при нажатии клавиши <tab> можно использовать клавиши со стрелками, чтобы выбрать подходящий вариант. Это может значительно ускорить поиск.
Универсализация
Одна из изначально установленных опций – использование расширенных выражений универсализации. Универсализацией называется один из видов синтаксиса, который использует специальные символы для поиска совпадений и фильтрации результатов при поиске или передаче аргументов любой программе или функции.
В качестве примера попробуйте выполнить несколько задач. Чтобы ознакомиться с понятием универсализации, можно выполнить достаточно простую процедуру. Создайте тестовый каталог и заполните его какими-либо файлами.
mkdir test
cd test
touch file1 file2 file3 file100 file120 file122 file200 file222
touch file250 file800 file808 file80 somefile anotherfile
touch thisotherfile file.txt file.c file.o file.html file.css
touch completelydifferent different separate
mkdir directa directb directc directd
Теперь, когда в каталоге достаточное количество файлов и каталогов, выберите из него все файлы, название которых содержит слово «file». Символ звездочки (*) значит «0 или больше символов».
ls *file*
_
anotherfile_____________file120_________file200_________file3
file808_________________file.html_______somefile________file1
file122_________________file80__________file.c__________file.o
thisotherfile___________file100_________file2___________file250
file800_________________file.css________file.txt
Выведенный результат содержит все файлы со словом «file» в названии. К примеру, если нужно вывести только файлы, в имени которых слово «file» находится в начале, используйте:
ls file*
file1 file122 file222 file80
file.c file.o file100 file2
file250 file800 file.css file.txt
file120 file200 file3 file808
file.html
Это немного сократит выведенный результат, но его можно сузить еще больше. Знак вставки (^) используется для отрицания следующего шаблона. То есть, при необходимости вывести все файлы, имя которых начинается с «file», но не содержит единицы (1) после «file», нужно набрать:
ls file^1*
file2 file222 file3 file800
file.c file.html file.txt file200
file250 file80 file808 file.css
file.o
К примеру, если нужно найти все файлы, имя которых начинается с «file», а затем содержит число от 100 до 300, нужно использовать символы «меньше чем» (<) и «больше чем» (>), чтобы указать диапазон чисел:
ls file
file100 file120 file122 file200
file222 file250
При необходимости вывести все файлы из предыдущего примера, но исключить из них файл под названием «file200», нужно использовать символ тильды (~):
ls file~file200
file100 file120 file122 file222
file250
Теперь попробуйте выполнить более сложный поиск. Чтобы уточнить параметры поиска, используйте круглые скобки. Чтобы выбрать все простые файлы (не каталоги, ссылки, и т.д.), можно использовать:
ls *(.)
anotherfile file100 file200 file80
file.css separate completelydifferent file120
file222 file800 file.html somefile
different file122 file250 file808
file.o thisotherfile file1 file2
file3 file.c file.txt
Обратите внимание: ни один из созданных каталогов не был выведен. Если же нужно вывести только каталоги, используйте:
ls *(/)
directa:
directb:
directc:
directd:
Чтобы выбрать 5 последних обновленных файлов в данном каталоге, используйте в скобках определитель «о». Он выбирает метод сортировки. После «о» нужно указать «m», что активирует сортировку по времени последнего изменения. В квадратных скобках укажите диапазон, сообщающий zsh, сколько файлов нужно вывести в результате.
ls *(.om[1,5])
completelydifferent different file.css file.html separate
Другие возможности оболочки zsh
Данный раздел содержит несколько дополнительных понятий.
Оболочка zsh может автоматически использовать специальные программы для открытия файла на основе его расширения. Это делается при помощи так называемых «суффиксных псевдонимов». Их нужно внести в файл .zshrc, тогда при вводе имени файла и нажатии return файл будет открыт в нужной программе.
Используйте «less», чтобы открыть все файлы с расширением .view, и «nano», чтоб открыть все файлы с расширением .edit. Внесите данные строки в файл .zshrc:
nano ~/.zshrc
alias -s view=less
alias -s edit=nano
source ~/.zshrc
Теперь создайте два тестовых файла:
touch test.view test.edit
При наборе
test.view
после нажатия enter файл будет открыт в «less». Если же набрать:
test.edit
файл будет открыт в nano.
Еще одна удобная функция zsh – подсказки завершения. Оболочка предоставляет визуальные индикаторы во время многострочного ввода. Если ввести подобную строку и нажать enter:
print “this is a line
Будет выведена подсказка:
dquote>
Завершить эту строку можно закрывающимися двойными кавычками в конце вводных данных:
dquote> that goes onto the next line”
Как можно видеть, это сообщает пользователю, что во входных данных нужно закрыть кавычки, чтобы завершить формулировку. Нечто подобное произойдет при вводе простого скрипта в командную строку.
if [[ -o interactive ]]; then
then> print yes
then> else
else> print no
else> fi
Как видите, это выводит похожую подсказку. Это очень удобно при вводе данных, которые охватывают несколько строк.
Установка zsh в качестве оболочки по умолчанию
Если zsh подходит для повседневной работы на данном облачном сервере, ее можно сделать оболочкой по умолчанию этого пользователя. Таким образом, каждый раз при в ходе в систему zsh будет запускаться автоматически и продолжать сессию, и не будет необходимости постоянно запускать ее при помощи «zsh».
chsh -s $(which zsh)
После ввода этой строки zsh станет оболочкой сервера по умолчанию.