Wie erhalte ich eine allgemeine Autovervollständigungsfunktion für das Terminal?

Ich bin neu in macOS und verwende macOS Sierra,

In meinem Ubuntu- und anderen Linux-basierten System verfügt das Terminal über eine automatische Vervollständigung, die hilft, Befehle und ihre Optionen zu vervollständigen.

Zum Beispiel für wgetund andere Befehle werden zusätzlich zur Befehlsvervollständigung nach Tabzweimaligem Drücken alle Befehlsoptionen (falls vorhanden) aufgelistet, oder in sudo wder Liste beginnen alle Befehle mit w

Automatische Vervollständigung des Ubuntu-Terminals

Aber auf meinem Mac vervollständigt es nur die ersten Befehle und hilft nicht für Optionen oder den zweiten Teil des Befehls wie whoami in sudo whoami,

Ich meine, es wird keine Liste aller Befehle angezeigt, die mit beginnen who, nachdem Sie Tabzweimal gedrückt habensudo who

[2]

Ich habe einige Skripte für gitOptionen unter https://github.com/git/git/tree/master/contrib/completion/ gefunden , aber ich möchte etwas, das dies für alle Befehle und Anwendungen tut.

Gibt es dafür eine Lösung?

Antworten (2)

Die Vervollständigungsfunktion kommt weder von einer TerminalAnwendung noch von dem Betriebssystem, auf dem Sie arbeiten: MacOS X, Linux…

Diese Funktion wird von Ihrer Shell bereitgestellt. Um zu überprüfen, welche Ihnen die gewünschte Vervollständigungsfunktion bietet, rufen Sie einfach die Shell ab, die Sie unter Linux verwenden:

echo ${SHELL}

Ändern Sie dann Ihre Anmelde-Shell unter MacOS X mit:

chsh -s /bin/my_preferred_shell

um diejenige zu verwenden, die die gewünschte Vervollständigungsfunktion ausführt.

Überprüfen Sie, ob diese Shell existiert und ausführbar ist, und lesen Sie die Dokumentation von chsh:

ls -ld /bin/my_preferred_shell

man chsh

Um es ohne Risiko zu testen, starten Sie Ihre Sitzung nicht neu, sondern öffnen Sie einfach ein neues Terminal. Im Fehlerfall können Sie chshnoch einmal laufen.

Danke, also, welche Shell unterstützt diese Funktionalität? Ich verwende bash
Führen Sie diesen Befehl in der Umgebung aus, die Sie haben möchten, nicht in der Umgebung, die Sie nicht mögen :).
Die Funktion befindet sich normalerweise nicht in der einfachen Shell, aber in zusätzlichen Paketen suchen Sie beispielsweise nach bash_completion

Wie @Mark sagte, bash-completionfügt das Paket diese Funktionalität dem Terminal hinzu.