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


38

Як я можу отримати finkта macportsзаповнювати автозаповнення імен програм під час введення команд, як у Ubuntu apt-get?

Наприклад, коли я набираю текст

sudo port install ca

і натисніть tab, я хочу, щоб термінал автозаповнювався або показував мені доступні команди.

OS X навіть не автоматично завершує команди після sudo!

Відповіді:


69

bash-завершення додає завершення для:

  • Назви команд після 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.

Встановлення базового завершення за допомогою 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-завершення (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

Див. Trac.macports.org/wiki/howto/bash-completion для інструкцій, як увімкнути завершення імен портів.


Пакет MacPorts bash-completionзабезпечує підтримку заповнення імен пакунків як додаткових аргументів після port <verb>. Дивіться тут , рядки 48-58. На таку поведінку натякають у вікі MacPorts , де сказано: " Це не лише для файлів і каталогів, але також, наприклад, для команд port. Отже, ви вводите port <Tab>і отримуєте список усіх можливих команд. ", Хоча це лише явно згадує. завершення дієслів (що набагато простіше).
Даніель Бек

Пакет імена будуть автоматично з'явилися, вики просто не кажучи вже про те , що. Дивіться зв'язаний код сценарію.
Даніель Бек

Це variants.confне для завершення для самого MacPorts; variantants.conf визначає варіанти автоматичного встановлення для всіх портів, як це пояснено на сторінці wiki, яку ви пов’язали. Додавання цього рядка призводить до того, що для встановлених портів увімкнено підтримку завершення bash.
Кевін Рейд

Дякуємо за пораду щодо автоматичного завершення домашньої мови. Один лише заробив цю відповідь підсумковим голосуванням.
Пол Вагленд

Відмінно, це ввімкнуло makeавтозаповнення, саме те, що я хотів.
Маті Тернер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.