bash compgen -d -- '~' 总是产生空输出

bash compgen -d -- '~' 总是产生空输出
bash$ compgen -d -- '~'

产生空输出。

bash$ compgen -d -- '~mi'

还会产生空输出。

bash$ compgen -d -- '~mice/'
~mice/.pulse
~mice/.mozilla
~mice/Pictures

可以。

bash$ compgen -d -- '~mice/Do'
~mice/Downloads
~mice/Documents

也行。

compgen 中是否有 bug,导致“~”和“~mi”输出为空?如果是 bug,修复后会破坏某些东西吗?

答案1

我怀疑前两个需要先作为波浪符号扩展完成,然后才能作为目录名完成。

bash$ compgen -u -- '~mi'
~mice

但是,您不能在同一个调用中同时指定-d和。-ucompgen

请注意以下几点:

bash$ compgen -d -- '~/'     # Like #1, but with trailing /: it works
bash$ compgen -d -- '~mice'  # Like #3, but w/o trailing /: it doesn't work

因此,不完整的波浪号扩展将不会通过 扩展到正确的目录-d,“完整”意味着包括终止路径分隔符。


可能值得提交错误报告,尽管我怀疑它能按预期工作。至少,您可能会对当前行为得到更好的解释。

相关内容