Использование командной оболочки Z Shell (zsh) на облачном сервере

Вступление

Данная статья описывает использование оболочки 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 станет оболочкой сервера по умолчанию.

Tags: , , , ,

Добавить комментарий