Я бы предложил использовать Static Named Directories вместо псевдонимов, возможно, в сочетании с опциями AUTO_CD
and/or CDABLE_VARS
.
Статические названные каталоги обозначаются ~
следовали имя (который мой содержать любой алфавитно-цифровой символ, _
, -
или .
). Обычно они используются для домашних каталогов пользователей в системе, то есть ~someuser
будет заменен фактическим домашним каталогом пользователя someuser
.
В zsh
вы можете также определить свой собственный статические Названный директорий с одним из следующих двух способов:
определить параметр оболочки со значением, которое начинается с /
:
x=/home/username/git/github/user/project
или используйте команду hash
с параметром -d
(работает аналогично псевдониму):
hash -d x=/home/username/git/github/user/project
Единственное различие между этими двумя методами, что первый один (очевидно) обеспечивает параметр оболочки, который вы могли бы использовать в тех случаях, когда названные каталоги не расширены (например, внутри цитируемых строк) или экспортировать в качестве переменной среды. При использовании любого метода, теперь вы можете получить доступ к каталогу /home/username/git/github/user/project
с именем ~x
:
% cd ~x
% pwd
/home/username/git/github/user/project
Он также работает в качестве первого компонента пути:
% cd ~x/abc
% pwd
/home/username/git/github/user/project/abc
И как дополнительное преимущество по сравнению с псевдонимами его также работает с другими командами, чем просто cd
:
% touch ~x/somefile
% echo foobar > ~x/somefile
% cat ~x/somefile
foobar
С опцией AUTO_CD
включена, zsh
автоматически перейдет в каталог, если он выдается на месте команды:
% setopt autocd
% ~x
% pwd
/home/username/git/github/user/project
% ~x/abc
% pwd
/home/username/git/github/user/project/abc
С опцией CDABLE_VARS
включена, если аргумент команды cd
(или подразумеваемый cd
с включенным AUTO_CD
) не является каталогом и не начинается с /
, zsh
, попытается расширить аргумент, как если бы он начинался с ~
:
% setopt cdablevars
% cd x
% pwd
/home/username/git/github/user/project
% cd x/abc
% pwd
/home/username/git/github/user/project/abc
С обоими, AUTO_CD
и CDABLE_VARS
, Вы можете с помощью названные каталоги так же, как псевдонимы cd
с дополнительными преимуществами, которые вы можете получить доступ непосредственно подкаталоги.
% setopt autocd cdablevars
% x
% pwd
/home/username/git/github/user/project
% x/abc
% pwd
/home/username/git/github/user/project/abc
Примечание: Когда не используется с именем каталога, в контексте cd
(либо явно или неявно с помощью AUTO_CD
) имя должно предшествовать ~
для того, чтобы быть расширен:
% echo x/abc
x/abc
% echo ~x/abc
/home/username/git/github/user/project/abc
Возможно, вы захотите рассмотреть 'setopt autocd' и' cdpath + = (/ home/username/git/github/user) ', что должно позволить' project' самостоятельно переключаться в каталог с тем же именем в вашем '.../github/user'. – chepner