首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘`compgen文件-G’./ tmp/*. as `意外地显示了目录.//中的所有文件以及所需的文件。

‘`compgen文件-G’./ tmp/*. as `意外地显示了目录.//中的所有文件以及所需的文件。
EN

Unix & Linux用户
提问于 2020-06-25 17:17:30
回答 1查看 146关注 0票数 0

我本以为

代码语言:javascript
复制
compgen -A file -G './tmp/*.sh'

只显示tmp/下的文件,但也显示当前目录中的所有文件。

我试过了

代码语言:javascript
复制
compgen -A file -X  '!(tmp/*.sh)'

代码语言:javascript
复制
compgen -A file -X  "!(tmp/*.sh)"

但两者都会导致空输出。检查设置:

代码语言:javascript
复制
$ shopt|grep extglob
extglob         on

同样值得注意的是

代码语言:javascript
复制
compgen -A file tmp/*.sh

只返回第一个有效的候选人。顺便说一句,这与默认的行完成结果完全匹配。

代码语言:javascript
复制
cp tmp/*.sh[TAB]

代码语言:javascript
复制
ls tmp/*.sh[TAB]

两人都扩大到了第一个候选人。

两个问题:

  1. 为什么?
  2. 是否可以仅使用compgen获得预期的结果?

“预期结果”是返回所有匹配的候选人,就像ls tmp/*.sh一样

EN

回答 1

Unix & Linux用户

发布于 2020-06-25 18:49:54

@KamilMaciorowski的评论给出了答案。

我的错误是假设在处理文件名时需要‘-一个文件’。仅使用-G 'tmp/*.sh将提供所需的结果。

错误的假设是由于存在许多-A选项,例如filehost等。然而,当使用-G时,文件名域是隐式的,因为全局只与文件名一起工作。

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

https://unix.stackexchange.com/questions/595075

复制
相关文章

相似问题

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