Zsh что это такое
Настройка Zsh и Oh my Zsh
Оболочка Zsh по своей сути такая же как и Bash, только намного интереснее. Она поддерживает интерактивное автодополнение по Tab, автоматический поиск файлов, интегрированные регулярные выражения, а также красивые темы. В этой статье мы рассмотрим как установить и настроить Zsh.
Установка Zsh
Для установки Zsh в Ubuntu выполните такую команду:
sudo apt install zsh
Чтобы установить Zsh в Fedora или CentOS используйте пакетный менеджер dnf:
sudo dnf install zsh
После этого вы можете запустить командную оболочку.
Настройка Zsh
Для запуска командной оболочки выполните такую команду:
При первом запуске Zsh предложит вам настроить вашу оболочку. Здесь вам нужно нажать клавишу 1 чтобы попасть в меню настройки:
1. Настройка истории
Например, я увеличил количество хранимых строк до 5000. Чтобы вернуться в главное меню нажмите 0 (Remember changes and return to main menu).
2. Автодополнение
3. Раскладка клавиатуры
В третьем пункте настроек можно изменить как будут обрабатываться нажатия клавиш клавиатуры во время набора и редактирования команд. По умолчанию используется стиль Emacs, однако, вы можете включить стиль Vim если вы используете этот редактор. Для этого сначала нажмите 3, затем 1 для редактирования раскладки и выберите v для Vim:
4. Другие опции
В четвёртом пункте собраны другие опции оболочки. Их можно включить или отключить:
Чтобы активировать опцию нажмите её цифру, а затем нажмите s (set), для деактивации нажмите u (unset).
5. Сохранение настроек
Когда завершите, возвращайтесь в главное меню. Там, для сохранения всех изменений нажмите 0. Утилита предупредит, что в конфигурационный файл были добавлены строки настройки и редактировать их не стоит, можно редактировать только то, что до или после них. Если же вы захотите исправить что-то в них, снова запустите команду zsh-newuser-install.
После завершения настройки вы попадёте в оболочку.
6. Приглашение оболочки
Кроме того, здесь поддерживаются различные цвета. Цвет может быть задан для фона или для текста. Следовательно синтаксис установки цвета такой:
В качестве назначения можно использовать fg, fg_bold или bg. А в качестве цвета:
Для того чтобы это заработало в файл
/.zshrc надо добавить не только эту строчку, но и следующую:
В результате вы получите такое приглашение ввода:
7. Установка oh my zsh
Если всего этого вам мало, то можно установить скрипт oh my zsh, который реализует множество дополнительных возможностей в zsh. Тут можно выбирать различные темы приглашения, добавлять плагины, например, git, добавлены различные возможности автодополнения и многое другое. Для установки этого скрипта выполните:
8. Настройка темы
Посмотреть как выглядит та или иная тема можно на этой странице. Чтобы выбрать тему откройте файл
/.zshrc и пропишите имя темы в строчке ZSH_THEME. Именно так выполняется настройка oh my zsh. Мне, например, нравиться тема agnoster, поэтому:
Затем можно перезапустить zsh:
Но для работы конкретно этой темы надо установить пакет шрифтов:
sudo apt install fonts-powerline
9. Оболочка по умолчанию
Когда вы завершите с настройкой останется только установить zsh как оболочку по умолчанию для вашего пользователя. Для этого используйте команду chsh:
Утилита попросит пароль, а затем путь к исполняемому файлу оболочки, которую вы хотите использовать:
После этого, для текущего пользователя будет использоваться оболочка zsh по умолчанию.
Выводы
В этой небольшой статье мы рассмотрели два способа настроить zsh для личного использования. Это отличная оболочка, которая может предложить вам намного больше, чем Bash. А какая командная оболочка нравиться больше всего вам? Напишите в комментариях!
zsh и bash: что выбрать
Для тех, кто ещё не знаком с Z Shell, а так же тем, кто находится на распутье в выборе шелла для повседневных задач, посвящается эта заметка.
Надо сказать, о преимуществах zsh написано уже достаточно много материалов. Что касается этой скромной заметки, она призвана показать читателю возможности обеих оболочек на конкретных примерах конфигурационных файлов. Упор сделан таки на zsh, ибо в понимании автора bash, как правило, пригоден к использованию изначально, zsh без собственных настроек лучше не использовать вовсе.
Полные конфигурационные файлы автора можно забрать с github.
I. Лучшее в shell — автодополнение
Автодополнение есть и в bash, этим в наше время никого не удивишь. Особенно хорош в этом смысле bash-completion, который позволяет дополнять не только пути к каталогам, но и эффективно искать пакеты для установки. Если вы ранее не использовали его, мой вам совет: обязательно установите. Дополнительных настроек для работы этого пакета не требуется.
Уже неплохо, верно? Честно сказать, меня не прельщала перспектива перехода на zsh, поскольку в целом устраивал и bash. Но эксперимент показал: zsh — это очень удобно.
II. Горячие клавиши
Насколько мне известно, в bash горячие клавиши изменению не подлежат. Впрочем, не исключено, что я ошибаюсь. Это известные всем линуксоидам клавиши редактора emacs. Они взяты за основу и будут работать на любой машине, где установлен bash. Конечно, никто не запретит вам использовать стрелки для перемещения между символами или клавишу delete для удаления символа — это тоже есть в bash, и это тоже не нужно настраивать.
Обратимся к zsh. Да, как вы уже, наверное, догадались: в zsh всё нужно настроить под себя. Разумеется, было бы жутко, если бы нам пришлось настраивать каждую клавишу — вовсе нет! Можно выбрать один из двух стилей, ориентируясь на более привычный вам: режим vi или режим emacs.
Рекомендация: выбирайте emasc, чтобы уверенно пользоваться горячими клавишами на любой машине с любым shell’ом, кроме того, наиболее популярен всё таки bash — ориентируйтесь на него.
Разумеется, можно настроить отдельные сочетания клавиш так, как вам нравится.
Пример:
III. Алиасы
Очень удобно бывает использовать алиасы различных команд. Алиасы замечательно настраиваются как в bash, так и в zsh. Отличие в том, что в zsh можно использовать не только команды, но и назначить расширения типов файлов для отдельных приложений. Чем это полезно? Благодаря этой возможности zsh может заменить вам даже файловый менеджер. Смотрите сами:
IV. История команд
И уж, конечно, ни один пользователь не оспорит удобство использования истории команд. Здесь zsh ничем особенным не отличается от bash. Настроим его:
Также в zsh имеется очень популярный способ запаковки/распаковки архивов. Введите команду extract myfile.tar — распакуете архив, введите команду pk tar myfile — запакуете файл в архив указанного формата. Выходит, zsh может заменить архиватор?
Для создания архивов:
VI. Итоги
Zsh очень удобен для повседневной работы и делает добрую половину рутины за вас. Но стоит обратить внимание на различия между этими двумя оболочками. Например, в zsh после for обязательно вставлять пробел, нумерация массивов в zsh начинается с 1, чего совершенно невозможно понять.
Так, если вы используете shell для повседневной работы, исключающей написание скриптов, используйте zsh. Если вам часто приходится писать свои скрипты, только bash! Впрочем, можно комбинировать.
Как установить zsh в качестве оболочки по-умолчанию для отдельного пользователя:
Командный процессор Zsh
Данная статья является кратким обзором возможностей коммандного процессора Zsh.
Введение
В этой статье предполагается, что читатель уже имеет навыки работы с одним из распространенных командных процессоров UNIX, и поэтому сосредоточимся на отличительных возможностях Zsh.
Zsh — командный процессор UNIX, который может использоваться как в качестве командного процессора для скриптов, так и в качестве интерактивной оболочки. Zsh обладает множеством возможностей, среди которых — настраиваемый механизм дополнений (completions), редактирование командной строки, механизм сохранения историй, встроенное исправление неправильных команд.
По возможностям Zsh наибольшее сходство имеет с ksh, но при этом еще обладает множеством расширений.
Свежие версии Zsh доступны с сервера www.zsh.org и его зеркал. Кроме этого, Zsh часто включают в состав популярных дистрибутивов Linux и других вариантов UNIX.
Запуск
Файлы, используемые при запуске
Грамматика команд
Грамматика команд по большей части совпадает с грамматикой других командных процессоров семейства bourne shell, хотя имеются различные расширения, специфические для данного командного процессора. Схожесть грамматики позволяет быстро перейти к работе с использованием Zsh, и осваивать новые возможности уже в процессе его эксплуатации.
Перенаправление вывода
для усечения всех файлов в текущем каталоге.
Множественное перенаправление также работает и при вводе информации, позволяя заменять конструкции вида
приведет к показу указанного файла.
Функции
Zsh позволяет пользователю определять собственные функции, которые могут выполняться точно также как и обычные программы. Функции выполняются в том же процессе, что и вызвавшая их программа. При вызове функции аргументы передаются как позиционные параметры.
Задания
Для ссылки на задания можно использовать специальные переменные: %NUMBER — для ссылки на задание номер NUMBER (как в bash); %STRING и %?STRING — для ссылки на задания, чьи командные строки начинаются и содержат строку STRING соответственно; %% (или %+ ) и %- для ссылки на текущее и предыдущее задание.
Подстановка переменных
Zsh имеет множество расширений в области различных подстановок. По назначению подстановки можно разделить на две группы: Подстановки в строке приглашения и прочие подстановки. Подстановки в строке приглашения могут использовать функции из группы «прочие подстановки».
Подстановки в строке приглашения
Zsh позволяет пользователю очень гибко настроить строки приглашения командного процессора. Для этого используются различные подстановки. С их помощью можно выделять цветами части текста в командной строке, помещать строку с текущим каталогом в строку окна терминала и многое другое.
Полное описание всех возможных подстановок для строки приглашения можно найти в справке по Zsh.
Темы для строки приглашения
Благодаря возможностям Zsh пользователи пишут различные модули расширений. Одним из таких модулей является модуль для установки тем для строк приглашения. Этот модуль загружается с помощью команд:
Прочие подстановки
Все остальные подстановки выполняются в пять шагов, в перечисленном ниже порядке:
. Если используется комбинация с числом, то каталог берется из стека каталогов. Если после символа
задается строка, то эта строка будет использоваться как имя пользователя, и вместо сочетания
Полный перечень всех шаблонов и настроек вы сможете найти в справке по Zsh.
Подстановки истории
Система подстановок истории Zsh немного отличается от подстановок истории в командном процессоре bash. В Zsh сделано много добавлений, которые позволяют получить доступ к нужным аргументам выполненных команд, а также выполнить разные модификации аргументов.
Подстановки истории Zsh позволяют указать какое слово из команды нужно задействовать. Для этого используются следующие указатели слов:
:0 первое слово в командной строке; :n n-й аргумент; :^ 1-й аргумент (аналогично :1); :$ последний аргумент строки; :X-Y аргументы с X по Y; :X- все аргументы начиная с X кроме последнего; :* все аргументы; :X* все аргументы начиная с X (аналогично :X-$ ).
Генерация имен файлов
Zsh предоставляет множество дополнений и настроек по генерации имен файлов.
Операторы глоббинга
Y совпадает со всем, что соответствует шаблону X, и не соответствует шаблону Y. Например, *.el*
Флаги глоббинга
Флаги глоббинга используются для воздействия на шаблон, который стоит правее указанного флага. Все флаги имеют форму ( #X ), где X определяет нужный модификатор. Ниже приведено описание нескольких флагов, которые могут наиболее часто использоваться в работе:
i делает шаблон независимым от регистра символов, которые в нем применяются; l заставляет символы в нижнем регистре, которые используются в шаблоне, соответствовать символам и в вернем и нижнем регистре. Символы в верхнем регистре, будут соответствовать точно тем же символам; I локально отменяет воздействие флагов l и i ;
Другие флаги, описаны в руководстве по Zsh.
Квалификаторы глоббинга
При генерации имен файлов могут использоваться квалификаторы глоббинга, так что пользователь может указывать какие типы файлов будут подпадать под под генерацию имен. Квалификаторы указываются в конце шаблона и заключаются в круглые скобки. Среди квалификаторов есть, например,
. для указания обычных файлов, / для указания каталогов, = для указания сокетов,
и многие другие (можно указывать права доступа, времена модификации файлов и т.п.). Их полное описание можно найти в руководстве по Zsh.
Рекурсивный глоббинг
Zsh позволяет производить рекурсивное раскрытие имен файлов. Для этого используются формы **/ и ***/ Первая форма отличается от второй лишь тем, что не следует по символьным ссылкам. Так, например:
произведет поиск файлов с именем foo во всех подкаталогах.
Эти формы не могут комбинироваться с другими формами в одном шаблоне. При одновременном использовании данных форм с другими, оператор * приобретает свое обычное значение.
Кроме вышеперечисленных настроек. Zsh также позволяет использовать приблизительное соответствие, пытаясь найти файлы, в именах которых (по его мнению 🙂 могли бы быть сделаны ошибки.
Параметры и настройки
В Zsh различают параметры и настройки. Параметры используются для передачи и хранения данных, а настройки используются для управления поведением Zsh.
Параметры
Каждый параметр имеет имя, значение и набор атрибутов. Имя может состоять из букв, цифр и специальных знаков. Значениями могут быть числа (целые), строки, массивы и хеши (ассоциативные массивы).
Настройки
Дополнения (completitions)
В Zsh дополняться может все что угодно: имена и пути файлов; имена встроенных и внешних команд, а также их ключи; имена переменных среды; имена пользователей и компьютеров, а также многое другое. Zsh имеет в своей поставке некоторое количество определений дополнений для основных программ операционных систем. Для первоначальной настройки дополнений, вам необходимо лишь вставить команду compinit в ваш файл инициализации, после чего Zsh сможет использовать дополнения для тех команд, настройка для которых имеется в поставке Zsh.
Виджеты дополнений
Дополнения с использованием compctl
Данный метод аналогичен по настройке тем дополнениям, что применяются в csh & tcsh и является устаревшим, так что новые пользователи скорее всего предпочтут использовать другие методы определения дополнений, но он все равно поддерживается текущими версиями Zsh.
Задание дополнений с помощью данного метода имеет общую форму:
Определение дополнения начинается с ключевого слова compctl и заканчивается списком команд для которых будет действовать дополнение.
Ключи определяют типы параметров, которые будут подпадать под дополнение (ключи командной строки, списки выполняемых заданий, и т.п.).
В том случае, если у вас много серверов, то вы можете перечислить их в файле и вместо явного перечисления указать в скобках команду для получения содержимого нужного файла (в нашем примере пусть это будет
Другие ключи команды compctl описаны в справочном руководстве по Zsh.
Подсистема дополнений
Полное описание всех возможностей новой системы дополнений можно найти в руководстве пользователя Zsh.
Модули Zsh
Часть возможностей Zsh оформлена в виде модулей, отделенных от основной части командного процессора. Каждый из этих модулей может быть подключен к командному процессору во время сборки, или может быть загружен динамически во время запуска.
Модуль редактирования командной строки (zsh/zle)
Привязки клавиш
Встроенные команды zle
Виджеты zle
Все действия в модуле редактирования выполняются через виджеты. Задачей виджета является выполнение какой-то простой операции. Все клавиши привязываются к какому-то из виджетов. Виджеты могут быть встроенные или определенные пользователем.
Модуль zsh/zftp
Загрузка модуля выполняется с помощью команд:
Встроенная команда zftp обеспечивает выполнение всех команд. Синтаксис команды выглядит следующим образом:
Другие модули Zsh
Дополнительные источники информации
Вы можете найти дополнительную информацию о Zsh используя следующие ресурсы:
Трюки, облегчающие жизнь в zsh
4. Возврат настроек терминала
5. Функция zmv
6. Запуск mpv с автоматически найденными субтитрами
Если вы когда‐либо качали сериалы с внешними субтитрами с torrent’ов, то, несомненно, заметили, что каждый человек, их выкладывающий, имеет собственное мнение относительно того, где должны находится субтитры. Основных вариантов два: в собственном каталоге и непосредственно рядом с видео, но под «собственным каталогом» может скрываться любое название каталога, и даже различные глубины вложения: я видел каталоги вида «subs », «субтитры », «subs/» и даже просто «». Дополнительной проблемой служит использование нестандартных шрифтов в субтитрах, с распространением их вместе с субтитрами.
Для того, чтобы субтитры были‐таки подхвачены и использовали корректные шрифты можно использовать разные способы. Я предпочёл создать функцию, которая автоматически делает нужную работу практически во всех случаях:Наличие в zsh вещей вроде ассоциативных массивов очень помогает при создании таких функций.
Здесь первая часть функции проходится по всем аргументам и забивает каталоги, в которых находятся произведения в ассоциативный массив mediadirs. Он сделан ассоциативным исключительно, чтобы избежать дубликатов.
7. Создание команд с автоматическим экранированием аргументов
8. Автоматическое исключение файлов из glob’ов
var с комментарием «Will error out» нужны, чтобы zsh показал ожидаемую ошибку. При этом выполнение функции завершиться. Особых причин использовать именно этот вариант вместо echo … >&2 нет, хотя мой вроде должен поддерживать перехват ошибки с использованием always (что вы вряд ли используете в интерактивной сессии).
Zsh что это такое
Поговорим о самом удобном shell-е для Linux. Знакомьтесь — это zsh. Многие пользователи Linux не променяют bash ни на что другое, но я, будучи склонным к экспериментам, не поленился и поставил zsh.
Наверняка он есть во многих дистрибутивах, поэтому я не буду углубляться в то, как его установить. Скажу просто, что с точностью в 95% вы найдете его в репозиториях своего дистрибутива.
Установив, вы можете сразу сделать его шеллом по умолчанию: находим строчку с вашим логином в /etc/passwd и меняем /bin/bash на /bin/zsh. При первом запуске он предложит вам настроить себя — включите там автодополнение по максимуму. Для тех, кому лениво, делюсь своим
‘ delete-char # del
bindkey ‘;5D’ backward-word # ctrl+left
bindkey ‘;5C’ forward-word #ctrl+right
Перенастроить под себя можно потом, когда попробуете. Правда я не помню как, но все же умеют пользоваться man ;). Да, о дукементации: там ее много, настроить можно кучу всего, если есть желание разобраться.
бенефиты
1) продвинутый автокомплит. например:
cd /u/l/sb + tab превратится в cd /usr/local/sbin/
sudo — (+ tab) превращается в
sudo —
-H — set HOME environment variable
-K — remove user timestamp
-L — list options from Default section
-S — read password from stdin
-V — show version
-b — run command in background
-h — show help
-k — invalidate user timestamp
-l — list allowed commands
-p — password prompt
-r — Kerberos realm
-s — run SHELL
-u — user name
-v — validate user timestamp
В отличии от bash повторное нажатие на tab приведет к подстановке первого аргумента. Нажмете еще раз — подставится второй.
2) настройка управления в стиле vi или emacs
3) 2 promt-a: в правый, к примеру, можно поместить часы
4) разделяемая история
5) еще куча всего, что я пока не осилил.
Напоследок замечу, что после zsh не хочется переходить ни на что другое =)