A conclusão do bash sensível ao contexto muda o comportamento do caractere curinga

3

Em algum momento, caí o hábito de acertar a aba duas vezes depois de usar um caractere curinga em comandos como mv ou rm, que por padrão faz com que o bash mostre a lista de arquivos que correspondem à expansão do curinga. Por exemplo:

  {~/bin}-> ls p*<TAB>
  pnuke         pscp          pssh          
  prsync        pslurp        pssh-askpass  

No entanto, ao usar o pacote bash_completion no Debian Jessie, esse comportamento foi alterado e o comportamento padrão ao concluir um nome de arquivo é substituir os curingas pelo primeiro (e somente o primeiro) arquivo que corresponde à expansão. Com o bash_completion instalado, se eu usar o mesmo exemplo acima, minha linha de comando mudará para ficar assim depois de apertar a aba:

  {~/bin}-> ls pnuke

De todas as possíveis ações que bash poderia ter tomado nessa situação, isso parece ser o menos útil. Existe uma maneira de recuperar o comportamento padrão de conclusão de arquivo readline, enquanto ainda obtém todas as outras vantagens que o bash_completion fornece ao concluir algo que não é um nome de arquivo? Ou se não for o comportamento padrão, posso pelo menos fazer algo útil? (Mesmo não fazer nada seria mais um comportamento útil do que isso.)

    
por Drew 15.05.2015 / 23:48

2 respostas

0

Você sabia que pode obter o comportamento desejado digitando ls p + Tab em vez de ls p* + Tab ?

Como alternativa, você pode digitar ls p* + Alt -! ou ls p* + Ctrl - x + !

.

Note que Alt -! e Ctrl - x + ! estão ligados a complete-command e < strong> possible-command-completions , respectivamente. Você pode religar Tab para complete-command via bind '\C-i:complete-command' . Isso lhe dará sua expansão glob desejada, mas provavelmente estragará a conclusão de outras coisas.

Espero que haja uma solução melhor. Se eu soubesse qual versão do Bash introduziu a mudança, eu teria uma chance melhor de encontrar uma.

    
por 09.12.2015 / 22:09
0

A versão bash não é muito relevante, esse comportamento faz parte do bash-completion, um projeto separado.

desinstalar este pacote ou editar seus arquivos de configuração fornecerá o comportamento padrão desejado

    
por 25.01.2018 / 20:05