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.