我會建議使用Static Named Directories而不是別名,可能結合選項AUTO_CD
and/or CDABLE_VARS
。
靜態命名的目錄由一個~
表示接下來的名稱(我包含任何字母數字字符,_
,-
或.
)。通常它們用於系統上用戶的主目錄,這意味着~someuser
將被用戶someuser
的實際主目錄替換。
在zsh
,你也可以定義自己的靜態命名的目錄有以下兩種方法:
這兩種方法之間的唯一區別是,第一個(明顯)提供了一個shell參數,你可以在命名的目錄中沒有擴展的情況下可能使用(例如在引用的字符串中)或導出爲環境變量。
% cd ~x
% pwd
/home/username/git/github/user/project
它也可以作爲一個路徑的第一個組件: 無論使用哪種方法,你現在可以使用名稱~x
訪問的目錄/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
將自動更改到一個目錄:
隨着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