В zsh
есть несколько опций.
Оболочка может хранить стек из самых последних каталогов, в которые вы cd
'ввели, если вы используете setopt AUTO_PUSHD
.После настройки завершения (autoload -U compinit; compinit
) введите cd +
и нажмите tab , после чего вы получите нумерованный список:
~% cd /Library
/Library% cd /System/Library
/System/Library% cd +
1 -- /Library
2 -- /Users/nicholas
Таким образом, самый последний каталог - +1
и т. д. (Вы можете изменить это, как и я, с помощью setopt PUSHD_MINUS
, поэтому вы используете -
вместо +
, а самый последний каталог - -1
).
Другой параметр - каталогхеширования;Вы можете создавать псевдо-"домашние каталоги" (~whatever
).Некоторые из моих, например:
hash -d v=/Volumes
hash -d a=/Volumes/BanjoArchive
hash -d pep=/System/Library/Frameworks/Python.framework/Versions/Current
hash -d sp=$(print /Library/Python/*/site-packages(On[1]))
Так что я могу просто набрать cd ~pep
или cd pep
(если однозначно) или даже pep
(если установлено AUTO_CD
).В ситуациях, отличных от cd
, вы также можете использовать стек каталогов с ~
, например, ~+1
или ~-1
.
zsh
может даже заменить переменные оболочки после ~
наопция AUTO_NAME_DIRS
, хотя я ее не использую, потому что это загромождает список переменных.Тем не менее, вот пример:
~%setopt AUTO_NAME_DIRS
~%v=/Volumes
~%cd ~v
~v%pwd
/Volumes
zsh
также поддерживает cdpath
, как упоминает один из других ответов.Например, у меня есть:
cdpath=($HOME /Volumes)
, поэтому я могу просто использовать имя подключенного тома или каталога в моем домашнем каталоге для cd
к нему.