Desde que a conclusão da guia se tornou um recurso padrão nos shells, tenho sido um usuário muito feliz disso. Eu até gosto da conclusão inteligente do Bash (onde ele só procura por arquivos PDF, se eu digitar evince foo <TAB>) - desde que adivinhe corretamente.
Destrói um dia feliz quando o Bash usa sua conclusão inteligente para recusar a conclusão.
Hoje eu queria:
tar xvf centos5.8_x86_1.ova
Então eu entrei:
tar xvf cent<TAB>
e o Bash se recusa a concluir o caminho porque os arquivos .ova não são o que você costuma usar com o tar.
Sei que posso desinstalar o pacote de conclusão do bash para remover a conclusão inteligente. Mas posso comer meu bolo e também?
Posso pedir ao bash para usar a conclusão inteligente primeiro e, se isso falhar, use a conclusão não inteligente?
bash
autocomplete
Ole Tange
fonte
fonte
Respostas:
O seguinte deve ativar a conclusão normal do bash após todas as conclusões 'inteligentes' falharem nos programas tar, vim e emacs:
consulte também a página relevante no manual do bash online.
Advertência: você obtém o comportamento normal do tipo de conclusão (comandos / nomes de arquivos / nomes de usuário etc.) definido pela conclusão inteligente do comando em questão, por exemplo, a conclusão de
service
não completará os nomes de arquivos, mesmo que você chamecomplete -o bashdefault service
.Nesse e em outros casos em que o preenchimento automático inteligente falha, você sempre pode pressionar
Alt-/
(ouM-/
na notação do manual do bash) para concluir os nomes de arquivos quase da mesma maneira que o TAB funciona se a conclusão inteligente estiver desativada (quase da mesma maneira no sentido queM-/
não padrões completos como*.txt
). Veja aqui as principais sequências para outros tipos de conclusões, como comando e nomes de usuários.fonte
a conclusão do bash é uma extensão da conclusão padrão do bash e, por si só, é um programa do bash. Portanto, se você quiser alterar a forma como o programa atua, basta alterá-lo. Este é um software livre, você é livre para fazê-lo. Para o caso específico do
tar
comando, o arquivo é/usr/share/bash-completion/completions/tar
. Paratar
preencher automaticamente um arquivo com extensãoova
, basta adicioná-lo à linhaentão diz
Note que este é o caminho e o código existente para o Debian Wheezy (versão estável atual). Uma distribuição ou versão diferente pode ter um código diferente, mas a ideia é a mesma. Abra o código e ajuste-o para fazer o que você deseja.
Edit: Acabei de notar que a pergunta era toda vez que ela não encontra uma correspondência e não apenas o caso específico de adicionar
ova
atar
. Talvez ainda possa ser útil para alguém, saber onde eles podem procurar a fonte.fonte