首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在别名中使用通配符*

如何在别名中使用通配符*
EN

Stack Overflow用户
提问于 2022-01-04 12:25:03
回答 1查看 159关注 0票数 -1
代码语言:javascript
复制
# first examle
> alias gostyle="goimports -w $(find . -type f -name '*.go' -not -path './vendor/*')"
> alias gostyle
gostyle=$'goimports -w / gofiles /'

# second example
> alias gostyle="goimports -w $(find . -type f -name 'main.go' -not -path './vendor/*')"
> alias gostyle
gostyle='goimports -w ./main.go'

为什么在第一个示例中,我在命令前面有$。如何使用通配符*就在别名中。为什么我在使用第一个别名时被拒绝了权限?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-04 12:31:57

因为您使用的是双引号而不是单引号,所以在定义别名时,只执行一次$(find ...)。你最终得到的是一个带有硬编码文件列表的别名。

简单的解决方法是使用单引号而不是双引号(显然,您需要将嵌入的单引号改为双引号,或者想出不同的重构);但是更好的解决方案是使用函数而不是别名。除了向后兼容旧石器时代的Unix点文件外,基本上没有什么好的理由使用别名。

代码语言:javascript
复制
gostyle () {
    goimports -w $(find . -type f -name '*.go' -not -path './vendor/*') "$@"
}

(不幸的是,我不熟悉goimports;也许它需要双引号引用它的参数,或者您应该为find产生的每个结果添加一个-w。或者你真的想

代码语言:javascript
复制
gostyle () {
    find . -type f -name '*.go' -not -path './vendor/*' -print0 |
    xargs -0 goimports -w "$@"
}

在其中,您可能希望或不希望包含"$@"。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70578765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档