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

142

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

Jeffrey Aylesworth
quelle

Antworten:

170

Aktualisieren Sie den Text in, /etc/inputrcum einzuschließen

setze Completion-Ignore-Case auf

Verwenden Sie dann ^X ^R, um die Konfiguration neu zu laden.

John T
quelle
30
"als auch" - /etc/inputrcoder ~/.inputrceine Datei, die mit gekennzeichnet ist, INPUTRCsind die einzigen Orte, an die es gehen kann. Die Eingabe an einer Bash-Eingabeaufforderung funktioniert nicht.
Dennis Williamson
Hoppla! du hast recht :)
John T
10
^X ^Rzum Nachladeninputrc
Grawity
14
@ TennisWilliamson: Sie können über bind "set completion-ignore-case on"die Befehlszeile tun ; denn ich glaube, nur diese Terminalsitzung
Clay Bridges
1
Das ist es , was msysgit hat, aber MSYS2 fehlt! Hier habe ich versucht, es in zB / etc / profile zu finden ...
SamB
111

Mit im Nachhinein neu strukturierte die Vor- und Nachteile der Verwendung , um den Kontrast [.]inputrcgegenüber .bash_profile.
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 Bearbeiten der Befehlszeile im Bash-Referenzhandbuch

Um beharrlich Tab-Vervollständigung Groß- und Kleinschreibung in Bash machen:


Option A: Wenn Sie entweder bereits haben:

  • eine /etc/inputrcDatei (gilt systemweit, Änderung erforderlich sudo)
  • und / oder eine ~/.inputrcDatei (benutzerspezifisch)

    und / oder

Sie planen, die readline-Bibliothek umfassend anzupassen und / oder Anpassungen auch für Skripte wirksam zu machen, wenn diese aufgerufen werden read -e:

Zeile hinzufügen

set completion-ignore-case on

zu jeder Datei, je nachdem , ob Sie die Einstellung wollen wirksam sein alle Benutzer oder den aktuellen Benutzer (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

Dies macht es unnötig, zweimal die Tabulatortaste zu drücken, wenn mehr als eine Übereinstimmung vorliegt.


Option B: Alternativ können Sie Ihrer benutzerspezifischen ~/.bash_profileDatei unter OS X (oder ~/.bashrcLinux) Readline-Befehle hinzufügen , indem Sie sie als einzelnes Argument an das integrierte bindElement übergeben :

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

Beachten Sie, dass bindBefehle in ~/.bash_profile/ ~/.bashrcVorrang vor entsprechenden Befehlen in /etc/inputrcoder haben ~/.inputrc.

Wie oben angedeutet, auf diese Weise definierte Readline - Konfiguration wird nicht Effekt in nehmen Skripte , die rufen read -ezum Lesen von Benutzereingaben Readline - Unterstützung zu aktivieren.

mklement0
quelle
10
Show-All-If-Ambiguous ist so schön! Ich habe mich oft gefragt, warum ich zweimal gezwungen wurde, diese Aktion auszuführen. Tausende von Tastenanschlägen in meiner Zukunft gespeichert! Vielen Dank!
user34112
4
Genial, es funktioniert sogar für cdBefehle. Das löst diese Frage und erspart mir auch Tausende von Tastenanschlägen. :)
hoosierEE
1
Toller Punkt bezüglich show-all-if-ambiguous. Gibt es jedoch, da Sie "als Alternative" sagen, tatsächlich einen Vorteil bind, wenn die inputrcDateien dies unnötig erscheinen lassen?
Underscore_d
1
@underscore_d: Gute Frage; Bitte sehen Sie meine aktualisierte Antwort.
mklement0
1
Cool, danke! Unter Debian 8.2 hatte ich keine inputrc, aber ich habe ~/.inputrcdiese und andere wirklich nützliche Direktiven glücklich erstellt und hinzugefügt. Ich vermute, wir gehen davon aus, dass alle Leser wissen, dass dies /etc/inputrc Auswirkungen auf andere Benutzer hat (es sei denn, diese überschreiben die betroffenen Einstellungen). Nur während wir Vorbehalte erwähnen;)
Underscore_d
1

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

Ankur A Sharma
quelle