Рубрика: ‘Консоль и шеллы’

Ознакомившись с возможностями командной оболочки zsh и убедившись в том, что это — очень стоящая штука, самое время опробовать её в деле. Для чего хорошо бы установить её. Читать дальше »

. .

Здесь перечислена лишь небольшая часть возможностей оболочки zsh. В частности, я не останавливался на его встроенных функциях, хотя именно они и есть та база, что обеспечивает всё описанное (и не описанное) богачество возможностей этого шелла. Не говорил я и о подгружаемых модулях (по типу plug-ins) — а ведь среди последних есть даже собственный ftp-клиент. Ибо для этого потребовалось бы пересказать всю официальную документацию к нему. Читать дальше »

. .

Легко видеть, что все изобилие возможностей zsh далеко выходит за рамки стандарта POSIX для командных оболочек. Однако, в подтверждение своего соответствия оному, zsh, наступая на горло собственной песне, способен к эмуляции POSIX Shell. Читать дальше »

. .

Очень интересна (и удобна) в zsh работа с командными конструкциями перенаправления. Здесь и

  • множественное перенаправление вывода, когда результат выполнения команды направляется сразу в несколько файлов, и
  • множественное перенаправление ввода — когда команда, напротив, получает аргументы последовательно из более чем одного файла, и
  • перенаправление без команды, когда конструкция типа
    $ < filename
  • просто выведет на экран содержимое указанного файла — без привлечения команд типа cat или less.

При перенаправлении возможна группировка команд и использование шаблонов. Так, файлы с именами вида file1 и file2 можно просмотреть одной командой

$ < file{1,2}

Перенаправление ввода/вывода может иногда заменять конвейеризацию команд. Так, конструкция вида

$ sort < file{1,2}

отсортирует содержимое обоих файлов точно так же, как это сделал бы конвейер команд

$ cat file1 file2 | sort

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

$ nocorrect cp file1 file2

Это запретит попытки коррекции имени вновь создаваемого файла file2 похожим из числа существующих. Причём, занеся в профильный файл псевдоним для команды cp как самой себя с таким премодификатором

alias cp='nocorrect cp'

от нежелательной для определённых команд автокоррекции можно избавиться раз и навсегда.

. .

Надеюсь, что мне удалось убедить читателя в превосходных интерактивных возможностях оболочки zsh. Теперь стоит поговорить о функциональности, которая проявляется не только в интерактивной работе (но и, скажем, при сочинении скриптов). Читать дальше »

. .

В качестве приглашений командной строки могут использоваться:
Читать дальше »

. .

Важный момент облегчения существования пользователя в любом шелле — вид приглашения командной строки, должная настройка которого может часто избавить от лишнего набора команд (уж от команды pwd я по возможности стараюсь избавиться именно таким образом). Читать дальше »

. .

И, наконец, такое мощное средство минимизации пользовательского ввода, как псевдонимы команд (aliases). Разумеется, в zsh (как и в bash или tcsh) псевдоним может быть присвоен любой команде со сколь угодно длинным набором опций. Так, куда как проще раз и навсегда определить команду ls как псевдоним самой же себя, но с опциями -FG, нежели каждый раз вспоминать, как отличить в ее выводе каталоги от обычных файлов. Читать дальше »

. .

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

Плюс к этому — поддерживаются весьма изощренные способы вывода в строку отдельных фрагментов команд из буфера истории. Например, отдельного командного “слова”, начиная с последнего, с дальнейшим перебором “слов” буферизованных команд назад. Или — вывод полного списка команд из буфера с их последовательным перебором в том или ином направлении.Автодополнение в zsh гармонично сочетается с автокоррекцией (т.н. spelling командной строки). Конечно, и это само по себе не уникально. Однако проверка правильности ввода и автокоррекция в zsh распространяются не только на встроенные (как в bash) и даже внешние (как в tcsh) команды, но даже на пути и аргументы. Причём если автокоррекция становится назойливой (например, для команд типа cp или mv она порывается исправить вновь создаваемые аргументы на имена существующих файлов), её можно отключить — и именно только для определённых команд.

. .

Средства навигации по командной строке и ее автоматического редактирования — необходимое условие комфорта в интерактивной работе внутри оболочки. Здесь говорить, казалось бы, не о чем — управляющие клавишные последовательности для таких действий давно уже вошли в обиход всех командных оболочек, претендующих на развитость. Однако и в этой области zsh есть чем похвастаться — в нем задействованы все комбинации клавиш для перемещения и удаления (как посимвольного, так и командными “словами” и фрагментами строки), которые существуют в bash и tcsh. Читать дальше »

. .

Автодополнение в zsh гармонично сочетается с автокоррекцией (т.н. spelling командной строки). Конечно, и это само по себе не уникально. Читать дальше »

. .

Автодополнением клавишей Tab команд, частично введённых в ответ на приглашение оболочки, трудно удивить пользователей bash или tcsh. Столь же естественно, что при возможности безальтернативного дополнения именно оно и происходит, а при наличии некоторых альтернатив выводятся возможные варианты. Однако zsh идёт дальше — и после вывода таковых в ответ на последующие нажатия клавиши табулятора начинает автоматический их перебор. Читать дальше »

. .

Итак, zsh (или Z-shell) — оболочка из клана sh-совместимых, первоначально разрабатывавшаяся Паулем Фальстадом (Paul Falstad), начиная с 1990 года. Буква Z в названии этого шелла происходит от логина учётной записи Zhong, принадлежавшей одному из аспирантов Принстонского университета (Zhong Shao), в котором в то время обучался Пауль, и, видимо, появилась тут “для прикола”. Однако Z в данном контексте может символизировать и последнее слово в развитии командных оболочек вообще. Читать дальше »

. .

Как уже говорилось во вступительном цикле, одной из причин для смены шелла, принятого в данном дистрибутиве или ОСи по умолчанию, является поиск идеала. И в поиске этом пользователь никак не может пройти мимо командной оболочки под именем Z-shell (или, по простому, zsh). Читать дальше »

. .

Это начало цикла заметок про Z-shell (zsh), в котором предполагается дать всестороннее описание самой мощной и функциональной командной оболочки. Читать дальше »

. .

В заключение — пара слов о том, что можно внести в файл ~/.logout. Во-первых, можно вообще обойтись без него. А можно вписать в него нечто вроде таких строк: Читать дальше »

. .

На этом можно закончить настройку пользовательского файла ~/.tcshrc. Конфигурационный файл администратора (/root/.tcshrc) можно построить аналогично, с некоторыми отличиями. Читать дальше »

. .

Основываясь на “рыбе”, доставшейся нам в комплекте, попробуем составить собственный файл ~/.tcshrc. Для начала создаём его в своём домашнем каталоге, например, командой Читать дальше »

. .

Однако в нашем распоряжении после создания пользовательского аккаунта, использующего регистрационный шелл /bin/tcsh, и авторизации под новым именем имеется только файл ~/.cshrc с некоторыми минимальными, но вполне разумными настройками, который выглядит так: Читать дальше »

. .

Возникает вопрос: как при таком обилии конфигурационных файлов производить настройку tcsh, и в каком порядке это делать? Ответить на него несложно, ибо изобилие это кажущееся, и на самом деле какое-то действительно серьёзное редактирование необходимо будет выполнить только в отношении одного-единственного файла. Читать дальше »

. .