将参数传递给作为字符串一部分的别名

将参数传递给作为字符串一部分的别名

抱歉,如果这是一个愚蠢的问题。

我的工作区中有 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切换到相对目录时检查的逗号分隔目录列表。如果目录名太长,请使用符号链接。

相关内容