在 bash 中,如何扩展双引号内的通配符?
In bash, how do I expand a wildcard while it's inside double quotes?
我想在bash中编写如下函数:
go() {
cd "~/project/entry *"
}
这样做的目的是将 cd 放入一个前缀为 entry
(注意 space)并且可能有一个长后缀的项目子目录。我只需要给它一个部分名称,它将完成目录名称的后缀。
因此,例如,如果我有以下文件夹:
~/project/entry alpha some longer folder name
~/project/entry beta another folder name
~/project/entry gamma
我可以 运行 go b
它会让我进入 ~/project/entry beta another folder name
。
当然,问题是通配符没有在双引号内展开。我不能省略引号,因为那样我将无法正确捕获 spaces。
如何在保留 space 的同时扩展通配符?
移动引号。只是不要引用 *
。最好不要引用 ~
.
go() {
cd ~/"project/entry "*
}
话虽这么说,如果它匹配不止一个东西 cd
将使用第一个匹配项并忽略所有其他匹配项。
我想在bash中编写如下函数:
go() {
cd "~/project/entry *"
}
这样做的目的是将 cd 放入一个前缀为 entry
(注意 space)并且可能有一个长后缀的项目子目录。我只需要给它一个部分名称,它将完成目录名称的后缀。
因此,例如,如果我有以下文件夹:
~/project/entry alpha some longer folder name
~/project/entry beta another folder name
~/project/entry gamma
我可以 运行 go b
它会让我进入 ~/project/entry beta another folder name
。
当然,问题是通配符没有在双引号内展开。我不能省略引号,因为那样我将无法正确捕获 spaces。
如何在保留 space 的同时扩展通配符?
移动引号。只是不要引用 *
。最好不要引用 ~
.
go() {
cd ~/"project/entry "*
}
话虽这么说,如果它匹配不止一个东西 cd
将使用第一个匹配项并忽略所有其他匹配项。