web-dev-qa-db-fra.com

Achèvement Bash pour les commandes sous Mac OS X

Comment obtenir fink et macports pour compléter automatiquement les noms de programme lors de la saisie de commandes, comme dans le apt-get de Ubuntu?

Par exemple quand je tape

Sudo port install ca

et appuyez sur tab, Je veux que le terminal réalise la complétion automatique ou me montre les commandes disponibles.

OS X ne complète même pas automatiquement les commandes après Sudo!

37
Osama Gamal

bash-complétion ajoute la complétion pour:

  • Noms de commande après Sudo et which
  • Noms des packages Macports et Homebrew (facultatif)
  • Noms d'hôte dans known_hosts pour des commandes telles que ssh
  • Dossiers sur CDPATH

Etc. Vous pouvez imprimer une liste de commandes d'achèvement avec complete -p et voir la source d'une fonction avec declare -f.

Installer Homebrew ou MacPorts et Bash

Tout d'abord, vous devez installer Homebrew ou MacPorts conformément aux instructions. Remarque: N'installez pas les deux, car ils sont en conflit.

Ensuite, installez une version plus récente de Bash. Le Bash intégré dans OS X est un peu ancien, et vous aurez plus d'options de complétion avec Bash> 4.1, que vous pourrez utiliser

brew install bash

ou

Sudo port install bash

selon que vous utilisiez Homebrew ou MacPorts.

Installation de bash-completion avec Homebrew

Pour installer bash-completion, vous devez:

brew install bash-completion

Et ajoutez ce qui suit à votre ~/.bash_profile:

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

Homebrew installe actuellement une version plus ancienne de bash-completion (1.3) qui fonctionne toujours avec Bash 3.x, mais il est néanmoins recommandé d’utiliser Bash 4.x.

Installation de bash-completion avec MacPorts

Avec MacPorts:

Sudo port install bash-completion

Ensuite, ajoutez à votre ~/.bash_profile:

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

Consultez trac.macports.org/wiki/howto/bash-completion pour savoir comment activer la complétion pour les noms de port.

69
slhck