Como impedir que o bash seja muito inteligente restringindo as opções de conclusão?

1

Muitas vezes me deparo com o bash quando estou fazendo algo assim:

cmake -DCMAKE_INSTALL_PREFIX=/usr/<TAB><TAB>

Aparentemente, o bash não vê que cmake pode aceitar caminhos e eu não recebo nada sugerido para conclusão. Isso acontece, por exemplo, no Ubuntu 14.04 com bash 4.3.42 . Isso não acontece no Ubuntu 12.04 com bash 4.2.25 e no BLFS com o bash 4.3.39 compilado manualmente.

Como solução alternativa, tenho que inserir ls no início da linha, adicionar um espaço entre = e o caminho, e só então o bash me mostra as opções de conclusão. Depois de ter escrito todo o caminho, agora não tenho que esquecer de remover a solução alternativa adicionada.

Como posso configurar o bash para se comportar sem essa inteligência - ou seja, sempre sugerir caminhos se ele não tiver outras sugestões?

    
por Ruslan 08.06.2016 / 18:14

1 resposta

3

O Bash completa os nomes dos arquivos na linha de comando de cmake . Ele está procurando por um diretório chamado -DCMAKE_INSTALL_PREFIX= contendo um subdiretório chamado usr , mas não encontrando nada. Uma solução rápida para obter a conclusão do nome de arquivo nesse cenário é adicionar um espaço após o sinal de igual e removê-lo posteriormente.

Você sempre pode completar nomes de arquivos independentemente do contexto chamando a função readline complete-filename , ligada a Alt + / por padrão.

Eu não acho que o bash tenha um recurso genérico de fallback de conclusão, você teria que adicionar isso a cada função de conclusão individual. (Ou mude para zsh.)

    
por 09.06.2016 / 02:07