我本以为
compgen -A file -G './tmp/*.sh'只显示tmp/下的文件,但也显示当前目录中的所有文件。
我试过了
compgen -A file -X '!(tmp/*.sh)'和
compgen -A file -X "!(tmp/*.sh)"但两者都会导致空输出。检查设置:
$ shopt|grep extglob
extglob on同样值得注意的是
compgen -A file tmp/*.sh只返回第一个有效的候选人。顺便说一句,这与默认的行完成结果完全匹配。
cp tmp/*.sh[TAB]和
ls tmp/*.sh[TAB]两人都扩大到了第一个候选人。
两个问题:
compgen获得预期的结果?“预期结果”是返回所有匹配的候选人,就像ls tmp/*.sh一样
发布于 2020-06-25 18:49:54
@KamilMaciorowski的评论给出了答案。
我的错误是假设在处理文件名时需要‘-一个文件’。仅使用-G 'tmp/*.sh将提供所需的结果。
错误的假设是由于存在许多-A选项,例如file、host等。然而,当使用-G时,文件名域是隐式的,因为全局只与文件名一起工作。
https://unix.stackexchange.com/questions/595075
复制相似问题