it-swarm-eu.dev

Completamento della scheda senza distinzione tra maiuscole e minuscole in Bash

C'è un modo per rendere la scheda di Bash completa senza distinzione tra maiuscole e minuscole?

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

Sto usando Mac OS X 10.6

137

Aggiorna il testo in /etc/inputrc da includere

imposta il completamento-ignora-caso su

Quindi utilizzare ^X ^R per ricaricare la configurazione.

164
John T

Ristrutturato con il senno di poi per contrastare i pro e i contro dell'uso di [.]inputrc vs. .bash_profile.
Suggerimento del cappello per underscore_d per il suo aiuto.

Nota: La modifica della riga di comando in Bash è fornita dalla libreria Readline; personalizzarlo non è banale, ma vale la pena imparare; le sue funzionalità includono la possibilità di definire scorciatoie da tastiera personalizzate per l'inserimento di frammenti di testo predefiniti - vedi Command Line Editing nel Manuale di riferimento di Bash

Per persistentemente rendere il tab-completion senza distinzione tra maiuscole e minuscole in Bash:


Opzione A: Se hai già o:

  • un file /etc/inputrc (si applica a livello di sistema, la modifica richiede Sudo)
  • e/o un file ~/.inputrc (specifico dell'utente)

    e/o

stai pianificando di personalizzare la libreria readline in modo estensivo e/o di rendere le personalizzazioni efficaci anche per gli script quando chiamano read -e:

Aggiungi linea

set completion-ignore-case on

a entrambi i file , a seconda se si desidera che l'impostazione sia efficace per tutti gli utenti o attuali utente (crea il file, se necessario).

Un comando correlato che semplifica il completamento dei nomi di file e directory è:

set show-all-if-ambiguous on

Ciò rende superfluo premere Tab due volte quando c'è più di una corrispondenza.


Opzione B: In alternativa, puoi aggiungere comandi Readline al tuo file ~/.bash_profile specifico per utente su OS X (o ~/.bashrc su Linux), passandoli come un singolo argomento per bind builtin :

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

Si noti che i comandi bind in ~/.bash_profile/~/.bashrc hanno la precedenza su comandi equivalenti in /etc/inputrc o ~/.inputrc.

Come implicito sopra, la configurazione di Readline definita in questo modo non ha effetto in script che chiamano read -e per attivare il supporto Readline per la lettura dell'input dell'utente.

109
mklement0

Per evitare di modificare la configurazione per tutti gli utenti e per evitare le autorizzazioni di root, utilizzare quanto segue:

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

Quindi ri-accedi o ricarica ~/.inputrc

1
Ankur A Sharma