Cintu и Zsh. Жизнь без команды cd

Алексей Федорчук

Командная оболочка Zsh позволяет часто или вообще обходиться без ряда привычных команд CLI, или свести их употребление к минимуму. И дна из таких команд, необходимость в которой отпадает полностью — cd, служащая, как известно, для перехода в каталог, указанный в качестве её аргумента. Как это может быть?

Очень просто. Вспомним, что переход в некий каталог для этого типа файлов (directory) ни что иное, как исполнение для обычного (ordinary) файла. И потому вполне логично, что как для запуска, например, скрипта оболочки не требуется никакой специальной команды, так и для перехода в каталог, к которому данный пользователь имеет доступ (то есть для него этот каталог имеет бит исполнения), ему достаточно указать полный путь к нему, без всяких команд. Например, введя к командной строке что-нибудь вроде

$ /usr/share/fonts/

он немедленно оказывается в каталоге со шрифтами.

«Безкомандный» переход в каталоги распространяется и на «символические» обозначения последних. Так, команда

$ ~

переместит пользователя в его домашний каталог. Как, кстати, и команда, а директива

$ ..

в — каталог, родительский относительно текущего. Если же в командной строке ввести прямой слеш

$ /

то произойдёт перемещение в корень файловой иерархии.

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

$ Download

и даже не обязательно целиком (достаточно Dow и нажать табулятор), то, вне зависимости от текущего положения, пользователь окажется в одноимённом подкаталоге своего домашнего каталога. Или, если он предпочитает локализованные имена, то в каталоге ~/Закачки.

По умолчанию такой «беспутёвый» способ перехода работает только для стандартных подкаталогов домашнего каталога пользователя (таких, как ~/Pictures, ~/Documwents и так далее). Однако, как будет показано в очерке о настройках Zsh, никто не запрещает распространить его на другие часто посещаемые каталоги.

И кстати: как известно, для определения текущего положения в файловой иерархии предназначена специальная команда pwd. Однако в Zsh и без неё можно обойтись с помощью настройки приглашения командной строки, о чём тоже будет говориться в соответствующем очерке.

Моя Cintu. Оглавление

Cintu и Zsh. Жизнь без команды cd: 4 комментария

  1. Это не фишка Zsh.
    В bash’е точно так же.

  2. Леонид, вполне возможно. За последние 15 лет Bash постепенно тибрит всё, что было в Zsh с лохматых времён :)
    Кстати, сейчас попробовал — по умолчанию не работает.

  3. не работает где?
    В bash’е я, по крайней мере, уже года 2 как этим пользуюсь. Обнаружил случайно.

  4. Леонид, чем — этим? autocd иили cdpath?
    Впрочем, не важно: в убунтовском баше из коробки не работает ни то, ни другое.

Добавить комментарий