Bash Abschluss für Befehle in Mac OS X

27086
Osama Gamal

Wie bekomme ich Programmnamen finkund macportswie vervollständige ich sie, wenn ich Befehle eingebe, wie in Ubuntu apt-get?

Zum Beispiel wenn ich tippe

sudo port install ca 

und drücken Sie tab, ich möchte, dass das Terminal automatisch abschließt oder mir die verfügbaren Befehle anzeigt.

OS X führt auch nicht automatisch Befehle nach sudo!

35

1 Antwort auf die Frage

68
slhck

bash-completion fügt hinzu:

  • Befehlsnamen nach sudoundwhich
  • Macports- und Homebrew-Paketnamen (optional)
  • Hostnamen known_hostsfür Befehle wiessh
  • Ordner auf CDPATH

Und so weiter. Sie können mit eine Liste von Beendigungsbefehlen drucken complete -pund mit die Quelle einer Funktion sehen declare -f.

Homebrew oder MacPorts und Bash installieren

Zuerst müssen Sie Homebrew oder MacPorts gemäß den Anweisungen installieren . Hinweis: Installieren Sie nicht beide, da sie in Konflikt stehen.

Installieren Sie dann eine neuere Version von Bash. Das in OS X integrierte Bash ist schon etwas in die Jahre gekommen. Mit Bash> 4.1 erhalten Sie weitere Abschlussoptionen, die Sie durchspielen können

brew install bash 

oder

sudo port install bash 

abhängig davon, ob Sie Homebrew oder MacPorts verwenden.

Bash-Completion mit Homebrew installieren

Zur Installation bash-completionmüssen Sie:

brew install bash-completion 

Und fügen Sie folgendes hinzu ~/.bash_profile:

if [ -f $(brew --prefix)/etc/bash_completion ]; then . $(brew --prefix)/etc/bash_completion fi 

Homebrew installiert derzeit eine ältere Version von bash-completion (1.3), die immer noch mit Bash 3.x funktioniert, jedoch wird die Verwendung von Bash 4.x empfohlen.

Bash-Completion mit MacPorts installieren

Mit MacPorts:

sudo port install bash-completion 

Dann fügen Sie zu Ihrem hinzu ~/.bash_profile:

if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then . /opt/local/etc/profile.d/bash_completion.sh fi 

Anweisungen zum Aktivieren der Vervollständigung von Portnamen finden Sie unter trac.macports.org/wiki/howto/bash-completion .

Das MacPorts-Paket "bash-completion" unterstützt die Vervollständigung von Paketnamen als zusätzliche Argumente nach dem Anschluss `. Siehe [hier] (http://trac.macports.org/browser/trunk/dports/sysutils/bash-completion/files/port), Zeilen 48-58. Dieses Verhalten ist in [dem MacPorts - Wiki] (http://trac.macports.org/wiki/howto/bash-completion) angedeutet, das besagt: "* Dies gilt nicht nur für Dateien und Verzeichnisse, sondern auch für das Befehle von "port". Also geben Sie "port" ein`und rufen Sie eine Liste aller möglichen Befehle auf. *", obwohl sie nur die Vervollständigung der Verben explizit erwähnt (was viel einfacher ist). Daniel Beck vor 13 Jahren 0
Die Paketnamen * werden * automatisch ausgefüllt, das Wiki erwähnt das aber nicht. Siehe den verknüpften Skriptcode. Daniel Beck vor 13 Jahren 0
Die `variant.conf` ist nicht für MacPorts selbst auszufüllen; Varianten.conf definiert Varianten, die automatisch für * alle * Ports gesetzt werden, wie auf der verknüpften Wiki-Seite erläutert. Durch das Hinzufügen dieser Zeile wird die Unterstützung für die Bash-Fertigstellung aktiviert, wenn dies für die von Ihnen installierten Ports möglich ist. Kevin Reid vor 13 Jahren 0
Vielen Dank für den Tipp zur Autovervollständigung in Homebrew. Das allein hat dieser Antwort eine Zustimmung gegeben. Paul Wagland vor 13 Jahren 0
Hervorragend, dies ermöglichte es, "autokomplett" zu machen, genau das, was ich wollte. Мати Тернер vor 10 Jahren 0
Wenn Sie sowohl über Brew als auch MacPorts verfügen, fügen Sie die Macports vor dem Brew-Vorgang hinzu, da $ BASH_COMPLETION_COMPAT_DIR geprüft wird, und der Vorgang wird beendet, wenn er gefüllt ist. Marlon vor 8 Jahren 0