Die automatische Vervollständigung des Terminals funktioniert nicht richtig

56

Wenn ich anfange, einen Befehl wie apt-gnach dem Schlagen zu schreiben , tabschließt die Shell den Befehl bis ab apt-get, aber für den zweiten Teil des Befehls wie install, wenn ich einige Zeichen wie ein instaSchlagen eingebe tab, schließt sie ihn nicht bis ab install.

Ein weiteres Beispiel: Nachdem ich das sudoSchlagen eingegeben habe , tabwird nichts abgeschlossen. Zum Beispiel: sudo apt-ge[ tab] und nichts.

Ich habe Ubuntu mit Mini-ISO (40 MB Netzwerk-Installer) installiert, also gibt es vielleicht eine Konfiguration, die ich verpasst habe!

Ich habe diesen Code zu meinem hinzugefügt, .bashrcaber es funktioniert immer noch nicht:

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Ich habe auch die Erlaubnis von geprüft .bashrcund es ist -rw-r--r--.

Ich beziehe auch die .bashrcAfter Changes mit source .bashrc, um die Änderungen auf die neue Umgebung anzuwenden, aber immer noch keine Effekte.

Ich benutze xfce4-terminalalso dachte ich, es könnte das Terminal und nicht die Bash sein.

Aber Bearbeitung:

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

Und ändern:

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

zu:

<property name="&lt;Super&gt;Tab" type="string" value="empty"/>

Macht auch keinen Unterschied.

Ravexina
quelle

Antworten:

83

bash-completion ist eine Reihe von Bash-Skripten, die eine benutzerdefinierte Vervollständigung für bestimmte Befehle ermöglichen.

Dies gilt nicht nur für Dateien und Verzeichnisse, sondern auch zB für die Befehle. Sie geben also einen Teil der Befehle ein, und wenn Sie auf Tabdrücken, werden die Befehle automatisch vervollständigt.

Installation

Schritt 1: Installieren Sie die Bash-Vervollständigung

$ sudo apt-get install bash-completion

Und manchmal funktioniert es, wenn wir es mit dem folgenden Befehl neu installieren:

$ sudo apt-get install --reinstall bash-completion

Schritt 2: Aktivieren Sie die Bash-Vervollständigung in Ihrer .bashrcDatei

Öffnen Sie Ihre gedit ~/.bashrcund wenn diese Inhalte dort nicht vorhanden sind, fügen Sie sie am Ende hinzu und speichern Sie sie.

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Wichtig: Nach Änderungen müssen Sie beziehen ~/.bashrcmit source ~/.bashrcoder Terminal wieder öffnen. Es sollte jetzt behoben sein.

αғsнιη
quelle
1
Ich möchte bestätigen, dass das Hinzufügen des obigen Codeblocks zur ~ / .bashrc-Datei für mich funktioniert hat. Nur ein Kommentar; Sie müssen sich nicht wirklich abmelden und erneut anmelden, damit es funktioniert (Sie möchten möglicherweise nicht beenden, woran Sie arbeiten), sondern können einfach ausführen source ~/.bashrc.
Nullgeppetto
Ich musste das Terminal erneut öffnen, damit es funktioniert!
Gilberto Albino
2
Die Fertigstellung funktionierte plötzlich nicht mehr für mich. Die oben genannten Schritte beheben das Problem nicht. Irgendwelche Ideen zur Behebung des Problems? Am Sonntag, den 16.04.
Gudlaugur Egilsson, den 06.02.18
1
Schritt 2 erledigt das für mich. Oder holen Sie sich die Vorlage von/etc/skel/.bashrc
Hendy Irawan
1
@SergioIvanuzzo nicht sicher, mit welchem ​​Problem Sie konfrontiert sind, schauen Sie sich diese unix.stackexchange.com/q/219342/72456 an. Andernfalls öffnen Sie Ihre eigene Frage für das Problem, das Sie haben.
αғsнιη
27

Wenn in Ihrem Fall die Registerkarte "Terminal" nicht funktioniert Xfce,

Die Lösung lautet wie folgt:

  1. Öffnen Application Menu> Settings> Window Manager.
  2. Klicken Sie auf die KeyboardRegisterkarte.
  3. Löschen Sie die Switch window for same applicationEinstellung.

Fenster-Manager-Screenshot zum Löschen des Fensterwechsels für dieselbe Anwendung

Ich habe die Lösung hier gefunden

itsho
quelle
Versucht akzeptierte awnser, aber alles war bereits vorhanden. Dies war in der Tat die Lösung für mich.
User1226868
Dito. Toller Tipp.
Cerebrou
Vielen Dank, ich hatte wirklich den Verstand verloren.
Dustin Cowles
2
Immer noch die Lösung, die ich ab Mai 2018 brauchte.
Clifgray
Vielen Dank für mich gearbeitet
MMH
3

Möglicherweise befinden Sie sich auch in einer Shell, die die automatische Vervollständigung nicht unterstützt (z. B. Bourne Shell | SH). Wenn Sie möchten, dass BASH automatisch vervollständigt wird, müssen Sie die Shells wechseln und stattdessen mit dem Befehl zu BASH (Bourne Again SHell) sagen

chsh -s /bin/bash

Quelle: Ubuntu Wiki - Shells ändern

Michael Lowden
quelle
1

In meinem Fall habe ich versucht, ein Skript auszuführen ./myScript.sh, und die Eingabe wurde ./my[tab]nicht automatisch vervollständigt.

Ich musste der Datei Ausführungsberechtigungen hinzufügen und die automatische Vervollständigung funktionierte.

Hezi
quelle