zsh (перевод)
Ссылки на источники прилагаются.
Начну с цитаты от Алексея Федорчука:
Не смотря на то, что это было написано в 2009 году, принципиально на этом фронте ничего не изменилось."Начинаем настройку
Без этого нам, скорее всего, не обойтись. В свежеустановленном zsh мы имеем шанс не увидеть почти ничего из описанных выше прелестей — ни развертывания сокращений путей, ни автодополнений опций и аргументов, ни выразительных приглашений командной строки. Перед нами будет безликая строка с именем машины (типа localhost%), которая едва-то будет справляться с обычным автодополнением команд и путей (и то — не обязательно). Могут возникнуть проблемы даже с вызовом собственной экранной документации man zsh. Почему?
Дело в том, что zsh имеет очень богатый набор собственных конфигурационных файлов, о которых я скажу чуть ниже. Но при установке его эти файлы не помещаются автоматически ни в каталог /etc, ни в домашний каталог пользователя — то есть ни в одно из тех мест, где их можно было бы ожидать. Конечно, совсем без первичных настроек zsh не останется: он прекрасно воспринимает их из таких общесистемных профильных файлов, как /etc/profile, /etc/login и т.д. Однако, во-первых, для этого он должен быть собран должным образом. А во-вторых, и вести себя при этом он будет почти точно также, как и соответствующие оболочки (bash или tcsh, а то и /bin/sh — почему, например, во FreeBSD zsh по первости не способен даже к автодополнению команд). От одного из этих профильных файлов zsh унаследует и переменные окружения, включая MANPATH — почему подчас не сможет найти и свою собственную документацию."
http://www.alv.me/zsh/#02
Пожалуй самая свежая статья по zsh которую мне удалось обнаружить в рунете это "Переход с bash на zsh" от 15 апреля 2017 г.
https://habr.com/post/326580/
Она не плоха, но слишком короткая, что бы по ней сделать полную настройку zsh "под себя". В ней есть примеры, но их мало. Разъяснения тоже весьма скупы (это дань краткому формату изложения). К тому же она описывает zsh версии 5.2.х, тогда как сейчас уже актуальная версия 5.5.1. Там же вы найдете ссылку на хорошую подборку плагинов к zsh.
Все остальные статьи еще древнее, и хоть и дают представление о данной оболочке и ее истории развития, но, тем не менее, они несколько устарели по синтаксису и фичам. Они также не особо обременены примерами.
Еще интересным сайтом для настройки zsh является ArchWiki https://wiki.archlinux.org/index.php/Zs ... %B8%D0%B9)
английская страница арч-вики посвященная zsh несколько отличается от русской, но мне показалось, что не значительно. В настройке своего конфига .zshrc я использовал многие советы именно с этого ресурса. Полагаю, что данные советы дистро-независимы.
На сайте альт-линукса тоже есть страничка посвященная настройке zsh (если не ошибаюсь, последняя правка на данной странице была в июне 2015г.; при беглом просмотре мне показалось, что команды для назначения setopt, например, изменились... хотя я могу и ошибаться).
https://www.altlinux.org/DotFiles/Shell ... 0.B8.D1.8F
там вы можете найти и советы, и готовый файл, и много справочной информации.
Для быстрой настройки данной оболочки можно воспользоваться результатами проектов Oh-My-Zsh (наиболее популярный) или Prezto (более новый и по отзывам пользователей более шустрый, но менее раскрученный вариант). Достоинства использования этих вариантов очевидны - вы можете запустить новую оболочку с новой темой и плагинами к ней в кратчайшие сроки подключив репозиторий и установив все пакеты в две-три-пять команд. Кто-то за вас уже позаботился об оптимизации выбраного вами варианта. Но недостатки тоже есть, выбирать вы будете скорее всего по красивому скриншоту, а не по функционалу, вы не будете знать, что же может в реальности данная сборка. Будете ходить как по минному полю, пока привыкнете к новым возможностям. Вполне возможно, что вы получите красивую обертку, но пользоваться ею будете исходя из своего опыта работы с bash (старыми приемами) не используя 90% возможностей такого продвинутого шелла как zsh.
Оптимальный вариант
Исходя из вышеизложенного, оптимальный вариант - это ознакомление с документацией разработчиков.
На сайте разработчика есть полная документация к текущей версии. Но она на английском, что затрудняет ее использование для НЕанглоговорящих россиян. И переводчиков столь нужной документации, к сожалению, не видать.
Я взял на себя труд перевести один-единственный документ из документации с сайта производителя https://sourceforge.net/projects/zsh/files/. Он заинтересовал меня именно обилием примеров. Именно, за счет примеров в этом документе можно многое увидеть и понять в затронутой теме (даже при посредственном переводе).
Поскольку я не настоящий переводчик, то переводил я с помощью гугл-транслятора (пробовал переводить яндексом, но их вариант перевода меня не удовлетворил), поэтому прошу быть внимательными и не ждать от этого перевода чего-то сверхестественного.
Документ выбраный мной для перевода, это intro.a4.pdf (43 страницы - сравните со ссылкой на хабр, там если распечатать получится 1-2 листа).
Интро (вступление, введение), по мнению разработчиков, должен показать возможности новой версии оболочки zsh и, видимо поэтому, изобилует примерами. Примеры, примеры и еще раз примеры - это главное достоинство этого документа. Для подводки к этим примерам, возможностей машинного перевода оказалось вполне достаточно. Разобраться в примерах опубликованных в Интро сможет даже новичок.
Не с первого раздела у меня выработалась "технология" перевода. Поэтому первый раздел (Filename Generation) получился самый трудночитаемый. Но переделывать его я не буду. Трудоемкость процесса не компенсируется. Та информация которая интересовала лично меня, находится ближе к концу (Shell Parameters и Prompting) и там для меня все более менее понятно. Любой желающий, может поправить мой "перевод" и предложить сообществу свою версию. Также, если позовлят модераторы, я могу вносить правки в текущее изложение на данном форуме linuxmint.com.ru
Для тех, кто легко читает по английски, я сохранил английский текст в первой части каждого из разделов (исключив код), а во второй части разделов вы найдете переведенный текст и блок кода с примерами. В третьей части, которая периодически присутствует, я (иногда) дописывал свои "мысли вслух".
Хотя англоговорящим айтишникам, я думаю, проще скачать документ с сайта разработчика и прочитать его в оригинале, т.к. при переводе и бесконечном копировании блоков текста туда-обратно, правке верстки (от пдф к хтмл, от хтмл к тхт, от тхт опять к хтмл) и т.п. неизбежно в "переводе" появились ошибки.
Также можно ознакомиться с The Z Shell Manual (тоже на английском)
http://zsh.sourceforge.net/Doc/Release/index-frame.html
На сколько я понял, этот Мануал рассчитан на более продвинутых пользователей чем Интро и больше знакомит с синтаксисом zsh. Однако, примеров использования zsh в нем нет.
Многие начинают свое восхищение данной оболочкой из-за удобных возможностей завершения команд в шеле (как самих команд, так и их опций и аргументов). Также сильно расширены возможности Хистори, которые многим заменяют поиск уже единожды выполненых сложных команд.
Но на мой взгляд, это хоть и мега-удобные функции, но по важности они стоят все-таки во втором ряду после глоббинга. Да и вытекают их возможности из него же. Вероятно, туда же, в первый ряд, стоит отнести Редактор командной строки CLE. Все остальные нижеперечисленные возможности оболочки также серьезно дополнены по сравнению с традиционными и вобрали в себя все лучшее, что вы сможете встретить в других *sh. Также есть у zsh и свои уникальные наработки.
Из недостатков стоит отметить пожалуй только один (являющийся неотъемлимым продолжением достоинств). Это сложность в настройке: - потому что каждому потенциальному пользователю zsh придется разобраться в возможностях данной оболочки, выбрать то, что нужно именно ему и уникально настроить ее "под себя".
==========================
Ну а теперь содержание документа:
1. Introduction (Введение)
2. Filename Generation (Глоббинг - подстановка регулярных выражений вместо имени файла)
3. Startup Files (Файлы управляющие поведением zsh)
4. Directories (Директории)
5. Directory Stacks (Стеки директорий)
6. Command/Process Substitution (Замена команды / процесса)
7. Redirection (Перенаправление)
8. Aliasing (Алиасинг - Псевдонимы)
9. History (Хистори - История)
10. Command Line Editing (Редактор командной строки CLE)
11. Completion (Завершение)
12. Extended completion (Расширенное завершение)
13. Bindings (Привязки)
14. Parameter Substitution (Замена параметра)
15. Shell Parameters (Параметры оболочки)
16. Prompting (Промптинг - настройка приглашения шелла)
17. Login/logout watching (Вход в систему / выход из системы)
18. Options (Опции)
UPD:
setopt (дополнительный материал)
Настройка Приглашения шелла (дополнительный материал)