Bash-Vervollständigung für Befehle in Mac OS X


38

Wie bekomme finkund macportsvervollständige ich Programmnamen automatisch, wenn ich Befehle wie in Ubuntu eingebe apt-get?

Zum Beispiel, wenn ich tippe

sudo port install ca

und drücken Sie tab, um das Terminal automatisch zu vervollständigen oder mir die verfügbaren Befehle anzuzeigen.

OS X vervollständigt Befehle nicht einmal automatisch nach sudo!

Antworten:


69

Bash-Vervollständigung fügt Vervollständigung hinzu für:

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

Und so weiter. Mit können Sie eine Liste der Vervollständigungsbefehle ausdrucken complete -pund mit die Quelle einer Funktion anzeigen declare -f.

Installieren von Homebrew oder MacPorts und Bash

Zuerst müssen Sie Homebrew oder MacPorts gemäß den Anweisungen installieren . Hinweis: Installieren Sie nicht beide, da dies zu Konflikten führt.

Installieren Sie dann eine neuere Version von Bash. Die in OS X integrierte Bash-Funktion ist ein bisschen alt, und mit Bash> 4.1 erhalten Sie mehr Optionen für die Vervollständigung, die Sie durchstehen können

brew install bash

oder

sudo port install bash

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

Bash-Vervollständigung mit Homebrew installieren

Um zu installieren bash-completion, mü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 weiterhin mit Bash 3.x funktioniert. Es wird jedoch weiterhin empfohlen, Bash 4.x zu verwenden.

Installieren der Bash-Vervollständigung mit MacPorts

Mit MacPorts:

sudo port install bash-completion

Fügen Sie dann Folgendes 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 für Portnamen finden Sie unter trac.macports.org/wiki/howto/bash-completion .


Das bash-completionPaket von MacPorts bietet Unterstützung für die Vervollständigung von Paketnamen als zusätzliche Argumente nach port <verb>. Siehe hier , Zeilen 48-58. Dieses Verhalten wird im MacPorts-Wiki angedeutet , in dem es heißt: " Dies gilt nicht nur für Dateien und Verzeichnisse, sondern auch z. B. für die Befehle von port. Sie geben also port <Tab>alle möglichen Befehle ein und erhalten eine Liste. ", Obwohl dies nur explizit erwähnt wird Vervollständigung der Verben (was viel einfacher ist).
Daniel Beck

Die Paketnamen werden automatisch vervollständigt, das Wiki erwähnt das nur nicht. Siehe den verknüpften Skriptcode.
Daniel Beck

Das variants.confist nicht für MacPorts selbst vorgesehen. variant.conf definiert Varianten, die automatisch für alle Ports festgelegt werden, wie auf der von Ihnen verknüpften Wiki-Seite erläutert. Wenn Sie diese Zeile hinzufügen, wird die Unterstützung für die Bash-Vervollständigung aktiviert, sofern dies für die von Ihnen installierten Ports möglich ist.
Kevin Reid

Vielen Dank für den Tipp zur automatischen Vervollständigung in Homebrew. Das allein brachte dieser Antwort eine Gegenstimme ein.
Paul Wagland

Ausgezeichnet, dies ermöglichte die makeautomatische Vervollständigung, genau das, was ich wollte.
Мати Тернер
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.