Gibt es eine Möglichkeit, die Groß-/Kleinschreibung des Bash-Tabs unempfindlich zu machen?
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-Apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
Ich verwende Mac OS X 10.6
Aktualisieren Sie den Text in /etc/inputrc
, um ihn einzuschließen
setze Completion-Ignore-Case auf
Verwenden Sie dann ^X ^R
, um die Konfiguration neu zu laden.
Restrukturiert mit dem Vorteil, im Nachhinein die Vor- und Nachteile der Verwendung von [.]inputrc
im Vergleich zu .bash_profile
gegenüberzustellen.
Tipp des Hutes an underscore_d für seine Hilfe.
Hinweis: Die Befehlszeilenbearbeitung in Bash wird von der Readline-Bibliothek bereitgestellt. Das Anpassen ist nicht trivial, aber es lohnt sich zu lernen. Zu seinen Funktionen gehört die Möglichkeit, benutzerdefinierte Tastaturkürzel zum Einfügen vordefinierter Textausschnitte zu definieren - siehe Befehlszeilenbearbeitung im Bash-Referenzhandbuch
Um dauerhaft die Groß- und Kleinschreibung in Bash zu ignorieren:
Option A: Wenn Sie entweder bereits haben:
/etc/inputrc
-Datei (gilt systemweit, Änderung erfordert Sudo
)und/oder eine ~/.inputrc
-Datei (benutzerspezifisch)
und/oder
sie planen, die readline-Bibliothek umfassend anzupassen und/oder Anpassungen für Skripte auch wirksam zu machen, wenn sie read -e
aufrufen:
Zeile hinzufügen
set completion-ignore-case on
in entweder Datei, je nachdem, ob die Einstellung für alle Benutzer oder den aktuellen Benutzer wirksam sein soll (erstellen Sie die Datei, falls erforderlich).
Ein verwandter Befehl, der das Vervollständigen von Datei- und Verzeichnisnamen erleichtert, ist:
set show-all-if-ambiguous on
Das macht es unnötig, die Tabulatortaste zweimal zu drücken, wenn mehr als eine Übereinstimmung vorliegt.
Option B: Alternativ können Sie Ihrer benutzerspezifischen ~/.bash_profile
-Datei unter OS X (oder ~/.bashrc
unter Linux) Readline-Befehle hinzufügen, indem Sie sie als single -Argument übergeben in die bind
builtin :
bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"
Beachten Sie, dass bind
Befehle in ~/.bash_profile
/~/.bashrc
Vorrang vor entsprechenden Befehlen in /etc/inputrc
oder ~/.inputrc
haben.
Wie oben angedeutet, wird die so definierte Readline-Konfiguration nicht in Skripten wirksam , die read -e
aufrufen, um die Readline-Unterstützung für das Lesen von Benutzereingaben zu aktivieren.
Um zu vermeiden, dass die Konfiguration für alle Benutzer geändert wird, und um Root-Berechtigungen zu vermeiden, verwenden Sie Folgendes:
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc
Melden Sie sich dann erneut an oder laden Sie ~/.inputrc erneut