我想在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
。
当然,问题是通配符不能在双引号内展开。我不能省略引号,因为那样我就无法正确地捕捉空格。
如何在保留空格的同时扩展通配符?
移动引号。只是不要引用*
。不引用~
可能也不错。
go() {
cd ~/"project/entry ${1}"*
}
也就是说,如果这与多个匹配,cd
将使用第一个匹配并忽略所有其他匹配。