it-swarm.com.de

Kann ich die automatische Vervollständigung von Tab in Bash auf Groß- und Kleinschreibung beschränken?

Ubuntus Terminal verwendet die automatische Vervollständigung von Groß- und Kleinschreibung, wie ich es für Linux erwartet hätte.

Aber ich denke, es wäre oft bequemer, stattdessen die Groß- und Kleinschreibung zu ignorieren, um zu vermeiden, dass Sie beim Beginnen eines Namens genau sein müssen, und wäre wahrscheinlich die zusätzlichen Fehlalarme wert. Ist es möglich, dieses Verhalten zu ändern?

140
mwfearnley

Um bash für den aktuellen Benutzer zwischen Groß- und Kleinschreibung zu unterscheiden:

Führen Sie das folgende Shell-Skript in einem Terminal aus:

_# If ~/.inputrc doesn't exist yet: First include the original /etc/inputrc
# so it won't get overriden
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi

# Add Shell-option to ~/.inputrc to enable case-insensitive tab completion
echo 'set completion-ignore-case On' >> ~/.inputrc
_

Starten Sie eine neue Shell (öffnen Sie das Terminal erneut).

Um die Änderungen systemweit vorzunehmen:

_# add option to /etc/inputrc to enable case-insensitive tab completion for all users
echo 'set completion-ignore-case On' >> /etc/inputrc
_

Einzelheiten finden Sie unter man bash . Ja, es ist eine lange Seite, aber bash ist ein ziemlich komplexes Programm, und wenn Sie diese Seite nur nach Groß- und Kleinschreibung durchsuchen möchten, gehen Sie zum entsprechenden Abschnitt. In der Regel lernen die Teilnehmer, jeweils eine Option oder ein Bash-Skript zu verwenden, und es dauert lange, bis sie alle Nuancen beherrschen. Ihr Interesse kann variieren.

164
Panther

Öffnen Sie ein Terminal und geben Sie den folgenden Befehl ein:

echo set completion-ignore-case on | Sudo tee -a /etc/inputrc

Passwort eingeben. Terminal neu starten.

Wenn Sie in einigen Fällen die Groß- und Kleinschreibung nicht berücksichtigen möchten, bearbeiten Sie einfach die Datei/etc/inputrc, indem Sie die Zeile set completion-ignore-case entfernen.

Das ist alles.

48
emtin4

Ich weiß, dass diese Frage sehr alt ist, aber ich denke, ich habe eine super einfache Lösung, wenn Sie bash verwenden, es sei denn, ich vermisse etwas.

echo "bind 'set completion-ignore-case on'" >> ~/.bashrc

Oder fügen Sie die Zeile einfach mit Ihrem bevorzugten Texteditor hinzu. Starten Sie Ihre Bash-Sitzung neu und genießen Sie.

11
init3

Sie können dies tun, indem Sie eine Konfigurationsvariable für GNU readline festlegen, die die Eingabe in einer interaktiven Shell verarbeitet.

Die benötigte Variable ist _completion-ignore-case_ und kann direkt in Ihrer Bash-Sitzung festgelegt werden mit:

_bind "set completion-ignore-case on"
_

Es kann für alle zukünftigen Bash-Sitzungen aktiviert werden, indem es in die Datei _~/.inputrc_ des Benutzers oder in die Datei _/etc/inputrc_ des Systems gestellt wird, um es für alle Benutzer zu aktivieren. Dies ist die Initialisierungsdatei für readline.

Beachten Sie jedoch, dass beim Erstellen von _~/.inputrc_ die Systemkopie überschreiben. (Für mich hat dies dazu geführt, dass ich einige Tastenzuordnungen verloren habe, z. B. _Ctrl-Left_/Right. Welche, können Sie in der _/etc/inputrc_ -Datei nachlesen.)
Um dieses Problem zu beheben, setzen Sie die Zeile _$include /etc/inputrc_ oben auf _~/.inputrc_, z.

_$include /etc/inputrc

set completion-ignore-case on
_

Starten Sie bash oder reload inputrc neu, um die Änderungen zu übernehmen, z. mit Ctrl+x,Ctrl+r.

Weitere Informationen zu readline und inputrc finden Sie in man bash und man 3 readline .

3
mwfearnley