it-swarm.com.de

Groß- und Kleinschreibung wird in Bash nicht berücksichtigt

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

137

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.

164
John T

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:

  • eine /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.

109
mklement0

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

1
Ankur A Sharma