4 votes

Comment utiliser les arguments avec les alias de Bash ?

Aujourd'hui, j'ai appris le truc très pratique :

man [une commande] -t | open -f -a Aperçu

J'aimerais créer un alias dans mon fichier .bash_profile comme raccourci. Pour que cela fonctionne, je dois passer un argument dans la commande aliasée. En fouillant un peu, j'ai trouvé ceci :

alias manp="man $1 -t | open -f -a Preview"

Cela fonctionne presque, mais si je tape, disons "manp ls", il semble s'attendre à ce que la page de manuel ls soit dans mon répertoire actuel.

12voto

nohillside Points 82672

Vous ne pouvez pas passer d'arguments aux alias. Les alias sont juste des substitutions de texte sans autre logique.

Mais vous pouvez utiliser des fonctions shell pour obtenir le même résultat :

function pman() {
    if [ -x /usr/bin/open ]; then
        man -t "$1" | open -f -a Preview
    else
        man "$1"
    fi
}

La partie if-then-else est là juste pour s'assurer qu'elle fonctionne également sur les systèmes non-OSX.

Pour définir une fonction, il suffit d'inclure la définition ci-dessus dans le fichier ~/.bash_profile . L'utilisation est identique à celle des alias ou de toute autre commande : pman ls .

Comme @stuffe l'a souligné dans un commentaire, garder les alias/fonctions dans un fichier séparé a ses avantages (en particulier, cela vous permet de relire vos alias/fonctions dans l'interpréteur de commandes actuel sans exécuter le moindre truc de configuration à partir de .bashrc ou .bash_profile ). Pour ce faire, créez un fichier séparé appelé .alias , .functions ou similaire et ajoutez

test -e ~/.alias && . ~/.alias

à .bashrc ou .bash_profile .

0voto

Phil Ryan Points 174

J'aime la solution de @patrix, mais je voulais simplement donner un autre exemple, tiré de mon OSX .bash_profile qui, dans ce cas, permet à TextWrangler d'ouvrir un fichier que je passe en paramètre :

function tw() { /usr/bin/open -a /Applications/TextWrangler.app "$1" ;}

Je voulais pouvoir modifier plus facilement mon .bash_profile :-)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X