49 votes

Complétion Bash pour les commandes dans Mac OS X

Comment obtenir que fink et macports complètent automatiquement les noms de programmes lors de la saisie de commandes, comme le fait apt-get sous Ubuntu ?

Par exemple, lorsque je saisis

sudo port install ca

et que j'appuie sur tab, je souhaite que le terminal complète automatiquement ou me montre les commandes disponibles.

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

80voto

slhck Points 209720

bash-completion ajoute la complétion pour :

  • Noms de commandes après sudo et which
  • Noms de packages Macports et Homebrew (optionnel)
  • Noms d'hôtes dans known_hosts pour des commandes comme ssh
  • Dossiers sur CDPATH

Et ainsi de suite. Vous pouvez afficher une liste de commandes de complétion 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 selon les instructions. Remarque : Ne les installez pas tous 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 vieux, et vous obtiendrez plus d'options de complétion avec Bash > 4.1, que vous pouvez obtenir via

brew install bash

ou

sudo port install bash

en fonction de l'utilisation de Homebrew ou MacPorts.

Installer 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

Actuellement, Homebrew installe une version plus ancienne de bash-completion (1.3) qui fonctionne toujours avec Bash 3.x, mais l'utilisation de Bash 4.x est recommandée.

Installer 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

Voir trac.macports.org/wiki/howto/bash-completion pour des instructions sur comment activer la complétion pour les noms de port.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X