在bash中,如何在双引号内扩展通配符?

时间:2015-02-17 16:49:22

标签: bash wildcard space

我想在bash中编写以下函数:

go() {
  cd "~/project/entry ${1}*"
}

这样做是cd进入一个前缀为entry(注释空格)的项目子目录,可能还有一个长后缀。我只需要给它一个部分名称,它将完成目录名称的后缀。

所以,例如,如果我有以下文件夹:

~/project/entry alpha some longer folder name
~/project/entry beta another folder name
~/project/entry gamma

我可以运行go b,它会让我进入~/project/entry beta another folder name

问题是,当然,通配符不会在双引号内扩展。我不能省略引号,因为那时我将无法正确捕获空格。

如何在保留空格的同时扩展通配符?

1 个答案:

答案 0 :(得分:7)

移动引号。只是不要引用*。也可以不引用~

go() {
  cd ~/"project/entry ${1}"*
}

如果匹配多个cd,则会使用第一个匹配并忽略所有其他匹配。