autocompletion com curingas para cd no bash

2

Usando o bash no ubuntu (debian jessie / sid) Eu não tenho certeza porque eu não consigo concluir a tabulação de um curinga com um comando interno .

por exemplo, suponha que meu diretório de trabalho atual contenha os seguintes subdiretórios.

% ls -l
drwxr-xr-x 2 userX 4096 2016-08-31 11:46:40 0830a/
drwxr-xr-x 2 userX 4096 2016-08-31 11:46:52 0830b/
drwxr-xr-x 2 userX 4096 2016-08-31 11:47:33 0831a/
drwxr-xr-x 2 userX 4096 2016-08-31 11:47:18 0831b/
drwxr-xr-x 2 userX 4096 2016-08-31 11:50:38 z0830z/

Eu consigo acessar [tab] depois de digitar 'ls -l * 31a' e fazer a conclusão ocorrer.

ls -l *31a<tab>

conclui para ..

ls -l 0831a

no entanto, se eu tentar o mesmo com o comando 'cd' incorporado, ele não será concluído.

cd *31a<tab>

.. não será concluído

Além disso, o uso de um curinga também falha ..

cd z*<tab>

.. não será concluído

Curiosamente, a conclusão sem um caractere curinga funciona bem para os recursos internos. Por exemplo, posso fazer com que esse trabalho de conclusão seja OK:

cd z<tab>

está concluído para ..

cd z0830z/

Além disso, eu posso usar o comando 'cd * 31a' como está e ter sucesso (desde que seja único). Mas eu quero que a expansão ocorra, então eu sei com certeza o que estou fazendo.

Meu .inputrc contém isso ..

$if Bash
  Space: magic-space
  set mark-directories on
  set mark-symlinked-directories on
  set completion-ignore-case off
  set show-all-if-ambiguous on
$endif

Eu não tenho um arquivo ~ / .bash_completion. Eu tenho / etc / bash_completion, que faz apenas uma fonte de / usr / share / bash-completion / bash_completion. Esse último arquivo é um pouco longo, então não o incluirei aqui.

Meu objetivo final é poder ter um trabalho de conclusão de curingas para o comando cd.

    
por ePhrygian 31.08.2016 / 18:15

1 resposta

0

Estou lutando com o mesmo problema. Como o @Gilles mencionou, não há uma solução baseada em bash real no momento.

Como bash-completion realmente não adiciona muita funcionalidade a cd (apenas AFAIK usa os diretórios $CDPATH ), portanto, se você não estiver usando isso, poderá adicioná-lo ao seu ~/.bashrc :

compopt -o bashdefault cd

Isso redefinirá o comportamento da conclusão de cd para o padrão (onde o preenchimento de curinga funciona) e não alterará mais nada.

    
por 30.01.2018 / 08:36