Questão Conclusão da guia insensível a maiúsculas e minúsculas no Bash


Existe alguma maneira de tornar a guia Bash completa caso insensível?

$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.

Eu estou usando o Mac OS X 10.6


127


origem




Respostas:


Atualize o texto em /etc/inputrc incluir

definir conclusão-ignorar-caso em

Então use ^X ^R para recarregar a configuração.


151



"também" - /etc/inputrc ou ~/.inputrc ou um arquivo designado por INPUTRC são os únicos lugares que podem ir. Digitar isso em um prompt do Bash não funcionará. - Dennis Williamson
whoops! você está certo :) - John T
^X ^R para recarregar inputrc - grawity
@DennisWilliamson: você pode fazer bind "set completion-ignore-case on" da linha de comando; pois creio que apenas a sessão de terminal - Clay Bridges
assim isso é o que msysgit tem mas falta MSYS2! Aqui eu estava tentando encontrar em, e. / etc / profile ... - SamB


Reestruturado com o benefício da retrospectiva para contrastar os prós e contras de usar [.]inputrc vs. .bash_profile.
Dica do chapéu para underscore_d por sua ajuda.

Nota: A edição de linha de comando no Bash é fornecida pela biblioteca Readline; a personalização não é trivial, mas vale a pena aprender; seus recursos incluem a capacidade de definir atalhos de teclado personalizados para inserir trechos predefinidos de texto - consulte Edição de linha de comando no manual de referência do Bash

Para persistentemente tornar a conclusão de tabulação insensível a maiúsculas e minúsculas no Bash:


Opção A: Se você já tem:

  • a /etc/inputrc arquivo (aplica-se a todo o sistema, a modificação requer sudo)
  • e / ou um ~/.inputrc arquivo (específico do usuário)

    e / ou

você está planejando personalizar a biblioteca readline extensivamente e / ou deseja tornar as personalizações eficazes para roteiros também quando eles chamam read -e:

Adicionar linha

set completion-ignore-case on

para ou arquivo, dependendo se você deseja que a configuração seja eficaz para todos usuários ou o atual usuário (crie o arquivo, se necessário).

Um comando relacionado que facilita a conclusão de nomes de arquivos e diretórios é:

set show-all-if-ambiguous on

Isso torna desnecessário pressionar Tab duas vezes quando há mais de um jogo.


Opção B: Alternativamente, você pode adicionar comandos Readline ao seu usuário específico ~/.bash_profile arquivo no OS X (ou ~/.bashrc no Linux), passando-os como um solteiro argumento para o bind construídas em:

bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"

Observe que bind comandos em ~/.bash_profile / ~/.bashrc ter precedência sobre comandos equivalentes em /etc/inputrc ou ~/.inputrc.

Como implícito acima, a configuração Readline definida desta forma não entrar em vigor em roteiros essa chamada read -e para ativar o suporte Readline para ler a entrada do usuário.


101



show-all-if-ambiguous é tão legal! Muitas vezes me perguntei por que eles me guiaram duas vezes para executar essa ação. milhares de keystrokes salvos no meu futuro! obrigado! - user34112
Incrível, funciona mesmo para cdcomandos. Que resolve essa questão e estará me salvando milhares de teclas também. :) - hoosierEE
Ótimo ponto re show-all-if-ambiguous. No entanto, desde que você diz "como uma alternativa", há realmente qualquer benefício para fazer isso via bind, quando o inputrc arquivos parecem fazer isso desnecessário? - underscore_d
@underscore_d: Boa pergunta; por favor veja minha resposta atualizada. - mklement0
Legal, obrigado! No Debian 8.2 eu não tinha nem inputrcmas felizmente criei ~/.inputrc & adicionou estes, além de outras diretrizes realmente úteis. Eu acho que estamos assumindo que todos os leitores sabem que /etc/inputrc  afeta outros usuários (a menos que o último substitua as configurações afetadas)? Apenas enquanto estamos mencionando ressalvas;) - underscore_d


Para evitar a alteração da configuração para todos os usuários e para evitar permissões de root, use o seguinte:

if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc

Então re-login ou recarregue ~ / .inputrc


1