Linux Mint и его Cinnamon. Очерки применителя
Шрифт:
Сами по себе темы приглашения — файлы вида prompt_themename_setup, представляющие собой функции Zsh, описывающие как вид приглашения, так и, часто, некоторый его декор, типа расцветки, которая может быть нескольких видов. Однако разбираться в устройстве этих функций не обязательно — с ними можно ознакомиться визуально.
Знакомство это начинается с запуска функций управления видом приглашений:
$ autoload -U promptinit && promptinit
После чего можно давать команду на «смотрины невест»:
$ prompt -p
которая выведет
Среди «невест» можно видеть весьма пёстро наряженных:
Но и одетых весьма скромно также есть:
Выбрав подходящую
$ prompt имя_темы
при желании — с указанием цветовых параметров, например:
$ prompt fade white grey blue
Что в «живом» терминальном окне (терминал Sakura) будет выглядеть так:
А в выпадающем терминале Guake — несколько иначе:
Кстати, а в «голой» консоли вид этой же темы будет существенно скромнее — разбираться с программами для изготовления скриншотов консоли мне было лень, так что прошу поверить на слово.
Установленная таким образом тема будет функционировать только в данном терминальном окне в течении текущего сеанса. Чтобы увековечить её, необходимо вписать в файл ~/.zshrc такие строки:
autoload -Uz promptinit
promptinit
prompt clint
В примере приведена тема, пожалуй, наиболее информативного приглашения, которое «вживе» вылядит так:
Большое количество тем можно при желании отыскать на сайте Oh My ZSH!, но эти я уже заниматься не стал.
Приёмы навигации
Сознательные граждане, активно применяющие CLI, используют множество команд, как встроенных в их любимый шелл, так и внешних. Но, думаю, что самыми употребимыми в повседневной жизни являются такие:
• pwd для определения своего текущего положения на файловом древе — да-да, иногда, после многократных переходов между подкаталогами, забываешь, не только кто я, но и где я (уж не в Тимирязском ли?);
• ls — для просмотра содержимого текущего каталога;
• cd — для перехода в определённый каталог.
Однако здесь Zsh вносит свои коррективы, здорово облегчающие жизнь его применителя. Только что было показано, как фактическим можно избавиться от команды pwd, выведя путь к текущему каталогу в качестве RPROMPT. Без команды ls, конечно, не обойтись и Zsh. А вот команда cd в Zsh просто… не нужна.
Да, дорогие мои болельщики, в среде Zsh без этой команды не просто можно обойтись, а жить куда комфортней, нежели с ней. Ведь давайте вспомним, что такое переход в каталог имя_рек? Для типа файлов, именуемого каталогом (directory) это то же самое, что исполнение для обычного (ordinary) файла, будь он откомпилированным бинарником или интерпретируемым сценарием.
И потому более чем логично то, что как для запуска
$ /usr/share/fonts/truetype/
можно сразу оказаться в каталоге с TTF-шрифтами.
«Бескомандный» переход в каталоги распространяется и на «символические» обозначения последних. Так, команда
$ ~
переместит пользователя в его домашний каталог. Как, кстати, и команда
$ $HOME
Хотя практического смысла последний вариант не имеет. Зато директива
$ ..
волшебным образом ознаменует переход в каталог, родительский относительно текущего.
Правда, всё это происходит не само собой: для практического воплощения этого волшебства в общесистемном конфиге /etc/zsh/zshrc или пользовательском ~/.zshrc должна присутствовать строка
setopt autocd
В пару к ней можно добавить ещё и такую строку:
cdpath=(~/ /home/current/ /home/data/)
где в скобках перечислены каталоги, к подкаталогам которых чаще всего требуется быстрый доступ. И теперь, где бы в пределах файлового древа ни находился пользователь, ввод им директивы
$ Documents
нечувствительно сделает текущим каталогом /home/username/Documents.
То есть опция autocd и массив переменных cdpath отнюдь не исключают, а прекрасно дополняют друг друга.
Автодополнение
Волшебное свойство клавиши Tab, вызывающей автодополнение — одно из первых, с чем знакомится применитель CLI. Хотя при этом часто забывается, что когда-то, в перворождённом шелле Борна, никакого автодополнения не было. Оно появилось в Csh — и сначала только для путей, но не для команд. Тем не менее, ныне представить себе интерактиную работу в командной строке без автодополнения невозможно (да и не нужно).
Однако в Zsh клавиша Tab волшебна дважды: она не только дополняет пути и команды после их частичного ввода, но и способна развернуть аббревиатуры для тех и других. Например, нажатие клавиши табулции после набора последовательности
$ /u/s/f/tr
развернёт её в полный путь к каталогу со шрифтами TrueType
$ /usr/share/fonts/truetype
а после нажатия клавиши Enter сделает этот каталог текущим, как мы только что видели.
Правда, само по себе развёртывание аббревиатур работать не будет — его надо активизировать такими строками в файле ~/.zshrc:
autoload -Uz compinit
compinit
Можно пойти дальше, и не просто разворачивать безальтернативные аббревиатуры, типа приведённый выше, но и выбирать стрелками, как в меню, подкаталги или файлы среди предлагаемый альтернатив. Например, если набрать ту же самую последовательность символов: