【问题标题】:In bash, how do I expand a wildcard while it's inside double quotes?在bash中,如何在双引号内扩展通配符?
【发布时间】:2015-04-18 10:47:43
【问题描述】:

我想在 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

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

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

【问题讨论】:

标签: bash wildcard space


【解决方案1】:

移动引号。只是不要引用*。最好不要引用~

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

也就是说,如果这匹配多个事物 cd 将使用第一个匹配项并忽略所有其他匹配项。

【讨论】:

    猜你喜欢
    • 2012-01-25
    • 2021-02-20
    • 1970-01-01
    • 2014-06-19
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    相关资源
    最近更新 更多