bash compgen -d —'〜'总是产生空的输出


3
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是否会为'〜'和'〜mi'产生空输出,这是bug吗?如果是bug,修复后是否会破坏某些东西?

Answers:


4

我怀疑前两个必须先以代字号扩展名完成,然后才能以目录名的形式完成。

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

但是,您不能在-d-u的同一调用中同时指定和compgen

请注意以下几点:

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,“完全”意味着包括终止路径分隔符。


可能是值得提交一个bug报告,但我怀疑它按预期工作。至少,您可能会对当前行为有更好的解释。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.