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