我为我经常使用的文件夹定义了几个别名; e.g。
alias x="cd /home/username/git/github/user/project"
因此,在终端中输入x
会直接将我带到项目文件夹。
我认为定义一个也使用的别名会很好,如果一个字符串只以别名开头;例如如果我定义了
starts-with-alias x="cd /home/username/git/github/user/project"
输入
x/abc
会带我去:
/home/username/git/github/user/project/abc
答案 0 :(得分:1)
使用标准shell函数,您可以执行类似
的操作x() { cd /home/username/git/github/user/project/"$1"; }
x
会将您带到那里,x abc
会将您带到/home/username/git/github/user/project/abc
。
不完全是你要求的,但非常接近。
免责声明:仅在bash
下进行测试;标准语法可能会有所不同,zsh
也是如此。
答案 1 :(得分:1)
我建议使用Static Named Directories代替别名,可能与选项AUTO_CD
and/or CDABLE_VARS
结合使用。
静态命名目录由~
表示,后跟名称(我包含任何字母数字字符,_
,-
或.
)。通常,它们用于系统上用户的主目录,这意味着~someuser
将被用户someuser
的实际主目录替换。
在zsh
中,您还可以使用以下两种方法之一定义自己的静态命名目录:
定义一个shell参数,其值以/
开头:
x=/home/username/git/github/user/project
或使用带参数hash
的{{1}}命令(与别名类似):
-d
这两种方法之间的唯一区别是,第一个(显然)提供了一个shell参数,您可以在未扩展命名目录(例如在引用的字符串内)或导出为环境变量的情况下使用它。
无论使用哪种方法,您现在都可以访问名为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
显式或隐式),则名称前面需要{{1} }为了扩展:
AUTO_CD