Seit die Tab-Vervollständigung zur Standardfunktion in Shells geworden ist, bin ich ein sehr zufriedener Benutzer davon. Ich mag sogar Bashs intelligente Vervollständigung (bei der nur nach PDF-Dateien gesucht wird, wenn ich evince foo <TAB> eingebe) - solange es richtig errät.
Es ruiniert einen ansonsten glücklichen Tag, an dem Bash seine intelligente Fertigstellung nutzt, um die Fertigstellung abzulehnen.
Heute wollte ich:
tar xvf centos5.8_x86_1.ova
Also gab ich ein:
tar xvf cent<TAB>
und Bash weigert sich, den Pfad zu vervollständigen, da .ova-Dateien nicht das sind, was Sie normalerweise mit tar verwenden.
Ich weiß, dass ich das Bash-Completion-Paket deinstallieren kann, um die intelligente Vervollständigung zu entfernen. Aber kann ich meinen Kuchen auch essen?
Kann ich bash bitten, zuerst die intelligente Vervollständigung zu verwenden, und wenn dies fehlschlägt, dann die nicht intelligente Vervollständigung zu verwenden?
quelle
Antworten:
Folgendes sollte die normale Bash-Vervollständigung aktivieren, nachdem alle 'intelligenten' Vervollständigungen für die Programme tar, vim und emacs fehlgeschlagen sind:
Siehe auch die entsprechende Seite im Online-Bash-Handbuch.
Vorsichtsmaßnahme: Sie erhalten das normale Verhalten für die Art der Vervollständigung (Befehle / Dateinamen / Benutzernamen usw.), die durch die intelligente Vervollständigung des vorliegenden Befehls definiert wird. Beispielsweise vervollständigt die Vervollständigung für
service
Dateinamen nicht, selbst wenn Sie aufrufencomplete -o bashdefault service
.In diesem und anderen Fällen, in denen die intelligente automatische Vervollständigung fehlschlägt, können Sie jederzeit
Alt-/
(oderM-/
in der Notation des Bash-Handbuchs) drücken , um Dateinamen fast genauso zu vervollständigen , wie TAB funktioniert, wenn die intelligente Vervollständigung deaktiviert ist (fast auf die gleiche Weise in dem Sinne, in demM-/
dies nicht der Fall ist) vollständige Muster wie*.txt
). Siehe hier für Tastenfolgen für andere Arten von Fertigstellungen wie Befehl und Benutzername.quelle
Die Bash-Vervollständigung ist eine Erweiterung der Bash-Standardvervollständigung und selbst ein Bash-Programm. Wenn Sie also die Funktionsweise des Programms ändern möchten, ändern Sie es einfach. Dies ist freie Software, Sie können es tun. Für den speziellen Fall des
tar
Befehls lautet die Datei/usr/share/bash-completion/completions/tar
. Umtar
eine Datei mit der Erweiterung automatisch zu vervollständigenova
, fügen Sie sie einfach der Zeile hinzuso heißt es
Beachten Sie, dass dies der Pfad und der Code ist, die für Debian Wheezy (aktuelle stabile Version) vorhanden sind. Eine andere Distribution oder Version hat möglicherweise einen anderen Code, aber die Idee ist dieselbe. Öffnen Sie den Code und passen Sie ihn an, um das zu tun, was Sie möchten.
Bearbeiten: Mir ist gerade aufgefallen, dass die Frage jedes Mal gestellt wurde, wenn keine Übereinstimmung gefunden wurde, und nicht nur der spezifische Fall des Hinzufügens
ova
zutar
. Vielleicht kann es für jemanden immer noch nützlich sein, zu wissen, wo er nach der Quelle suchen kann.quelle