Чтение онлайн

на главную - закладки

Жанры

Linux Mint и его Cinnamon. Очерки применителя

Федорчук Алексей Викторович

Шрифт:

В-четвёртых, существует сайт, именуемый Oh My ZSH!. Это коллекция плагинов, скриптов, конфигов и тем приглашения командной строки. Она инсталлируется на локальную машину и в дальнейшем автоматически синхронизируется с родительским сайтом, который пользуется всенародной популярностью и широкой известностью в узких кругах энтузиастов Zsh.

Наконец, в-пятых, официальными, полуофициальными и общенародными ресурсами информация о Zsh не исчерпывается — существует много «неучтённых» на zsh.sourceforge.net сайтов и блогов, ведомых любителями этого шелла. И на них часто можно найти

освещёние неожиданных и интересных нюансов его конфигурирования. В последние годы в их числе появились и русскоязычные ресурсы. Из последних хотелось бы отметить подборку статей на сайте Михаила Мищенкова aka muhas).

Настройка приглашения

Как известно со времён со времён Константин Сергеича Станиславского, театр начинается с вешалки, а дистрибутив — с инсталлятора. Командная же оболочка начинается с приглашения командной строки. Каковая, во-первых, отражает готовность системы к выполнению действий применителя, а во-вторых, несёт (или должна бы нести) некую существенную для него информацию.

Правда, умолчальное приглашение Zsh информативностью не блещёт, сообщая только имя хоста (в примере на предыдущей странице — alv-cinn), и то, что сеанс шелла запущен обычным пользователем — в отличие от Bash'а, здесь это по умолчанию выражается символом %. Однако добавить информации нам никто не мешает. А помогает — файл zshexports.gz из пакета zsh-lovers, упомянутого в позапрошлом очерке. Его можно просмотреть командой

$ zcat path3/zshexports.gz

отыскать в нём секцию, начинающуюся словами

# PS{1,2,3}, RPOMPT, ..

# The "prompt" of the shell

...

внимательно изучить её, а также фрагмент конкретных примеров:

# Some examples:

# PS1="PS1='%B%n%b@%m:%4c>'"

...

осмыслить прочитанное и опробованное на примерах. После чего решить, какую же информацию вы хотите видеть в приглашении командной строки.

Я, например, не хочу видеть там имени хоста, поскольку не дожил ещё до ситуации из известного аккордеонистого бояна: «Кто я, кто я? Губайдулин я!» Да и вообще, времена, когда каждая машина в сети имела собственное неповторимое имя, канули в лету, и нынче так называемое «хвостнаме» берётся от булды.

А вот имя пользователя в явном виде будет не лишним — у меня на основной машине их обычно не менее трёх: рабочий, экспериментальный и умолчально-восстановительный. Также неплохо иметь представление о своём положении в файловой иерархии, причём в полном виде — одноимённые подкаталоги часто находятся в разных её ветвях. Приглашение получается перегруженным? Отнюдь, потому что в Zsh таковых предусмотрено два — просто PROMPT и RPROMT, и перечисленные элементы можно разнести таким образом:

/home/data/current $=> [alv]

Или наоборот, таким:

[zshuser]$=> [/home/data/current]

Добиться этого можно, как вы понимаете, редактированием файла ~/.zshrc. До сих пор он у нас содержал единственную строку комментария:

# Created by newuser for 5.0.2

Теперь же добавляем в него сторки для получения приглашения первого вида:

## Prompt

PROMPT='%~ $=> '

RPROMPT=' [%n] '

Или

второго:

## Prompt

PROMPT='[%n]$=> '

RPROMPT=' [%~] '

Раньше мне больше нравился первый вариант, но ныне я перешёл на второй.

Кроме обычного, то есть «левого» приглашения и приглашения «правого», в Zsh поддерживаются также приглашение «вторичное», выводимое в многострочных командах, и «третичное» — предложение вариантов замены при включённой коррекции ошибок, PROMPT2 и PROMPT3, соответственно. Вторичное приглашение у меня имеет вид

PROMPT2='%i%U> '

В результате в нём выводится номер «вторичной» строки в данном сеансе шелла, указывается стрелкой на то, что ввод следует в ней продолжить, а сам ввод даётся подчёркнутым шрифтоначертанием. Вживе это выглядит так:

[zshuser]$=> echo $USER \ [~]

33> echo $SHELL \

34> echo $PATH

zshuser echo /bin/zsh echo /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Что же до коррекции ошибок, у меня она отключена (к этому вопросу мы ещё вернёмся).

А вообще, как можно увидеть в файле zshexports.gz, в любом из видов приглашения командной строки могут фигурировать:

• полное или сокращенное имя хост-машины;

• путь к текущему каталогу в различных формах;

• номер текущей команды в буфере истории или строки в данном сеансе работы;

• имя пользователя;

• название командной оболочки;

• номер виртуальной консоли или текущего терминала;

• дата и время в разных форматах;

• индикация работы от лица суперпользователя;

• любые символы типа стрелок, крышечек, скобочек;

• текстовые сообщения (например, поздравление с началом трудового процесса);

• и многое другое.

Кроме того, приглашение могут быть оформлены визуально различно: выделением жирным шрифтом (boldface mode), инвертированием текста/фона (standout mode), полчёркиванием (underline mode), а также цветами. «Раскрашенный» шелл мне нравится не больше, чем «раскрашенный» Штирлиц, инвертирование также вызывает раздражение, а вот выделение полужирным шрифтоначертанием и подчёркиванием я использую. В результате секция настройки вида приглашения в моём ~/.zshrc выглядит так:

# Left prompt

PROMPT='%B[%n]$=>%b '

PROMPT2='%i%U> '

#

# Right prompt

RPROMPT=' %B[%~]%b '

Как уже говорилось, я не призываю к подражательству, а лишь предлагаю поэкспериментировать, чтобы добиться максимальной информативности приглашения и его внешней выразительности.

Темы приглашений

Только что речь шла о том, как оформить приглашение командной строки Zsh своими руками, в соответствие с собственными вкусами и предпочтениями. Однако можно пойти другим путём, и воспользоваться уже готовыми темами приглашений. Они входят в пакет zsh-common, который всегда, насколько я знаю, устанавливается как зависимость пакета zsh. После установки местоположение готовых тем — каталог /usr/share/zsh/functions/Prompts.

Поделиться:
Популярные книги

Брак по принуждению

Кроу Лана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Брак по принуждению

Потусторонний. Книга 2

Погуляй Юрий Александрович
2. Господин Артемьев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Потусторонний. Книга 2

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Господин следователь. Книга 4

Шалашов Евгений Васильевич
4. Господин следователь
Детективы:
исторические детективы
5.00
рейтинг книги
Господин следователь. Книга 4

Жандарм 4

Семин Никита
4. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 4

Офицер империи

Земляной Андрей Борисович
2. Страж [Земляной]
Фантастика:
боевая фантастика
попаданцы
альтернативная история
6.50
рейтинг книги
Офицер империи

Возвышение Меркурия. Книга 4

Кронос Александр
4. Меркурий
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Возвышение Меркурия. Книга 4

Ученик

Губарев Алексей
1. Тай Фун
Фантастика:
фэнтези
5.00
рейтинг книги
Ученик

Хозяйка заброшенного поместья

Шнейдер Наталья
1. Хозяйка
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Хозяйка заброшенного поместья

Внебрачный сын Миллиардера

Громова Арина
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Внебрачный сын Миллиардера

Изгой Проклятого Клана

Пламенев Владимир
1. Изгой
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Изгой Проклятого Клана

Изгой Проклятого Клана. Том 2

Пламенев Владимир
2. Изгой
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Изгой Проклятого Клана. Том 2

Девушка без репутации

Усова Василиса
1. Месть попаданки
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Девушка без репутации

(Не)зачёт, Дарья Сергеевна!

Рам Янка
8. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
(Не)зачёт, Дарья Сергеевна!