Comment créer un alias qui prend un argument de position dans Linux bash?


4

Disons que j'ai une commande bash avec quelques options et la variable qui m'intéresse (par exemple, nom de fichier):

my_cmd option1 option2 filename

J'ai créé un alias:

alias my_cmd_12="my_cmd option1 option2"

Cela me permet de supprimer toutes les options en tapant. Cependant, il y a des drapeaux venant après la variable qui m'intéresse (par exemple, nom de fichier):

my_cmd option1 option2 filename --flag1

Comment créer un alias qui prend toutes les options et tous les drapeaux:

my_alias filename est équivalent à

my_cmd option1 option2 filename --flag1


Réponses:


11

Vous ne pouvez pas faire cela avec un alias. Alias ​​fonctionne en remplaçant chaîne par une autre chaîne. Avec cet alias défini

alias my_cmd_12="my_cmd option1 option2"

my_cmd_12 filename --flag1 va s'étendre à

my_cmd option1 option2 filename --flag1

Mais vous voulez invoquer my_alias filename pour obtenir le même résultat. Il n'y a aucun moyen de remplacer my_alias avec une autre corde si --flag1 apparaît à la fin .

Cependant, une fonction devrait fonctionner:

my_function() { my_cmd option1 option2 "$1" --flag1; }

Notez qu'il ne s'agit que d'une solution minimale adaptée à votre exemple. En général, vous pouvez utiliser plus de paramètres de position ou "$@", instructions conditionnelles, etc., selon vos besoins. Les fonctions sont beaucoup plus souples que les alias.

Plus d'informations ici: Dans Bash, quand alias, quand écrire un script et quand écrire une fonction?


Pour le général "mieux connaître bash" - tldp.org - & gt; guides - & gt; cherchez "Bash", il y en a au moins deux qui valent la peine de lire.
Hannu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.