bash compgen -d - '~' sempre produz saída vazia

3
bash$ compgen -d -- '~'

Produz saída vazia.

bash$ compgen -d -- '~mi'

Também produz saída vazia.

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

está tudo bem.

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

OK também.

É um bug no compgen que ele produz saída vazia para '~' e '~ mi'? Se for um bug, vai quebrar alguma coisa quando corrigido?

    
por wonder.mice 25.08.2012 / 13:42

1 resposta

4

Os dois primeiros, eu suspeito, precisam ser completados como expansões de til antes que possam ser preenchidos como nomes de diretório.

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

Você não pode, no entanto, especificar -d e -u na mesma chamada para compgen .

Observe o seguinte:

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

Portanto, expansões de til incompletas não serão expandidas para o diretório apropriado por -d e "completo" significa incluir o caractere separador de caminho de terminação.

pode valer a pena registrar um relatório de erros , embora eu suspeite que funciona como pretendido. No mínimo, você pode obter uma explicação melhor para o comportamento atual.

    
por 26.08.2012 / 00:06