抱歉,如果这是一个愚蠢的问题。
我的工作区中有 4 个目录 dir1、dir2、dir3 和 dirzz。我需要使用一个参数设置一个别名来决定要调用哪个目录。例如
$ gotodir 1
这应该带我到 dir1
$ gotodir z
这应该带我去 dirzz
我试过
alias gotodir="cd ~/home/user/dir${1}" alias gotodir='cd ~/home/user/dir$1'
但两者都会抛出错误
有人可以帮我吗 提前致谢
答案1
来自bash 手册页在本alias
节中:
没有在替换文本中使用参数的机制。如果需要参数,应使用 shell 函数
因此,要做你想做的事情,只需定义一个函数即可:
gotodir() { cd ~/dir"$1"; }
然后将其称为:
gotodir 1
答案2
你可以使用一个函数里面别名:
alias gotodir='function _gtdir() { cd ~/dir${1} ; } ; _gtdir '
答案3
你说“gotodir z
应该带我去dirzz”据我所知,到目前为止发布的答案都不会这样做。但我们只需要改变一个字符凯勒姆的回答:
gotodir() {
cd ~/dir"$1"*
}
请注意添加了*
通配符。这样,gotodir z
您将看到主目录中第一个名称为开始with dirz
(如果有的话,并且它是一个目录)。
在 bash 中测试。我不知道这是否适用于所有 shell。
答案4
另一种可能性是设置 CDPATH 变量。它包含cd
切换到相对目录时检查的逗号分隔目录列表。如果目录名太长,请使用符号链接。