Zakończenie bash dla poleceń w Mac OS X.

38

Jak uzyskać finki automatycznie macportsuzupełniać nazwy programów podczas pisania poleceń, tak jak w Ubuntu apt-get?

Na przykład kiedy piszę

sudo port install ca

i naciśnij tab, chcę, aby terminal automatycznie się uzupełnił lub wyświetlił dostępne polecenia.

OS X nie wykonuje nawet autouzupełniania poleceń po sudo!

Osama Gamal
źródło

Odpowiedzi:

69

bash-uzupełnianie dodaje zakończenie dla:

  • Nazwy poleceń po sudoiwhich
  • Nazwy pakietów Macports i Homebrew (opcjonalnie)
  • Nazwy hostów known_hostsdla poleceń takich jakssh
  • Foldery włączone CDPATH

I tak dalej. Możesz wydrukować listę poleceń zakończenia za pomocą complete -pi zobaczyć źródło funkcji za pomocą declare -f.

Instalowanie Homebrew lub MacPorts i Bash

Najpierw musisz zainstalować Homebrew lub MacPorts zgodnie z instrukcjami. Uwaga: Nie instaluj obu, ponieważ powodują konflikty.

Następnie zainstaluj nowszą wersję Bash. Wbudowana wersja Bash w OS X jest trochę stara, a dzięki Bash> 4.1 uzyskasz więcej opcji ukończenia

brew install bash

lub

sudo port install bash

w zależności od tego, czy korzystasz z Homebrew czy MacPorts.

Instalowanie bash-complete z Homebrew

Aby zainstalować bash-completion, musisz:

brew install bash-completion

I dodaj następujące elementy do ~/.bash_profile:

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

Homebrew obecnie instaluje starszą wersję bash-uzupełniania (1.3), która nadal działa z Bash 3.x, ale nadal zaleca się używanie Bash 4.x.

Instalowanie bash-complete z MacPorts

Z MacPorts:

sudo port install bash-completion

Następnie dodaj do ~/.bash_profile:

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

Instrukcje dotyczące włączania uzupełniania nazw portów można znaleźć na stronie trac.macports.org/wiki/howto/bash-completion .

slhck
źródło
bash-completionPakiet MacPorts zapewnia obsługę uzupełniania nazw pakietów jako dodatkowe argumenty po port <verb>. Zobacz tutaj , wiersze 48–58. Takie zachowanie jest wskazane na stronie wiki MacPorts , która stwierdza: „ Nie dotyczy to tylko plików i katalogów, ale także np. Poleceń port. Więc piszesz port <Tab>i otrzymujesz listę wszystkich możliwych poleceń. ”, Chociaż tylko wyraźnie wspomina uzupełnienie czasowników (co jest znacznie prostsze).
Daniel Beck
Nazwy pakietów autouzupełniane, wiki po prostu o tym nie wspomina. Zobacz połączony kod skryptu.
Daniel Beck
Nie variants.confjest to do ukończenia dla samego MacPorts; options.conf definiuje warianty, które mają być ustawiane automatycznie dla wszystkich portów, jak wyjaśniono na połączonej stronie wiki. Dodanie tego wiersza powoduje, że obsługa uzupełniania basha jest włączona, jeśli to możliwe, dla portów, które instalujesz.
Kevin Reid,
Dzięki za wskazówkę dotyczącą autouzupełniania w homebrew. Już to samo zasłużyło na tę odpowiedź.
Paul Wagland,
Doskonale, to umożliwiło makeautouzupełnianie, właśnie tego chciałem.
Мати Тернер