Завершение Bash для команд в Mac OS X

Как я могу получить fink а также macports для автозаполнения имен программ при наборе команд, как в Ubuntu apt-get?

Например, когда я печатаю

sudo port install ca

и нажмите вкладку, я хочу, чтобы терминал автоматически завершал или показывал мне доступные команды.

OS X даже не выполняет команды автозаполнения после sudo!

1 ответ

Решение

Баш-завершение добавляет завершение для:

  • Названия команд после sudo а также which
  • Названия пакетов Macports и Homebrew (необязательно)
  • Имена хостов в known_hosts для таких команд, как ssh
  • Папки на CDPATH

И так далее. Вы можете распечатать список команд завершения с complete -p и увидеть источник функции с declare -f,

Установка Homebrew или MacPorts и Bash

Во-первых, вы должны установить Homebrew или MacPorts в соответствии с инструкциями. Примечание. Не устанавливайте оба, так как они конфликтуют.

Затем установите более новую версию Bash. Встроенный Bash в OS X немного стар, и вы получите больше вариантов завершения с Bash > 4.1, которые вы можете получить через

brew install bash

или же

sudo port install bash

в зависимости от того, используете ли вы Homebrew или MacPorts.

Установка bash-дополнения с помощью Homebrew

Установить bash-completion, ты должен:

brew install bash-completion

И добавьте следующее к вашему ~/.bash_profile:

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

В настоящее время Homebrew устанавливает более старую версию bash-complete (1.3), которая все еще работает с Bash 3.x, но все же рекомендуется использовать Bash 4.x.

Установка bash-дополнения с MacPorts

С MacPorts:

sudo port install bash-completion

Затем добавьте в свой ~/.bash_profile:

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

См. http://trac.macports.org/wiki/howto/bash-completion для получения инструкций о том, как включить завершение для имен портов.

Другие вопросы по тегам