Алексей Федорчук
Командная оболочка Zsh позволяет часто или вообще обходиться без ряда привычных команд CLI, или свести их употребление к минимуму. И дна из таких команд, необходимость в которой отпадает полностью — cd
, служащая, как известно, для перехода в каталог, указанный в качестве её аргумента. Как это может быть?
Очень просто. Вспомним, что переход в некий каталог для этого типа файлов (directory) ни что иное, как исполнение для обычного (ordinary) файла. И потому вполне логично, что как для запуска, например, скрипта оболочки не требуется никакой специальной команды, так и для перехода в каталог, к которому данный пользователь имеет доступ (то есть для него этот каталог имеет бит исполнения), ему достаточно указать полный путь к нему, без всяких команд. Например, введя к командной строке что-нибудь вроде
$ /usr/share/fonts/
он немедленно оказывается в каталоге со шрифтами.
«Безкомандный» переход в каталоги распространяется и на «символические» обозначения последних. Так, команда
$ ~
переместит пользователя в его домашний каталог. Как, кстати, и команда, а директива
$ ..
в — каталог, родительский относительно текущего. Если же в командной строке ввести прямой слеш
$ /
то произойдёт перемещение в корень файловой иерархии.
Однако это ещё не всё — в некоторых случаях для смены можно обойтись не только без команды cd
, но и без указания полного пути. Например, если набрать просто слово
$ Download
и даже не обязательно целиком (достаточно Dow
и нажать табулятор), то, вне зависимости от текущего положения, пользователь окажется в одноимённом подкаталоге своего домашнего каталога. Или, если он предпочитает локализованные имена, то в каталоге ~/Закачки
.
По умолчанию такой «беспутёвый» способ перехода работает только для стандартных подкаталогов домашнего каталога пользователя (таких, как ~/Pictures
, ~/Documwents
и так далее). Однако, как будет показано в очерке о настройках Zsh, никто не запрещает распространить его на другие часто посещаемые каталоги.
И кстати: как известно, для определения текущего положения в файловой иерархии предназначена специальная команда pwd
. Однако в Zsh и без неё можно обойтись с помощью настройки приглашения командной строки, о чём тоже будет говориться в соответствующем очерке.
Это не фишка Zsh.
В bash’е точно так же.
Леонид, вполне возможно. За последние 15 лет Bash постепенно тибрит всё, что было в Zsh с лохматых времён :)
Кстати, сейчас попробовал — по умолчанию не работает.
не работает где?
В bash’е я, по крайней мере, уже года 2 как этим пользуюсь. Обнаружил случайно.
Леонид, чем — этим? autocd иили cdpath?
Впрочем, не важно: в убунтовском баше из коробки не работает ни то, ни другое.