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
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 appeler my_alias filename
pour obtenir le même résultat. Il n'y a aucun moyen de remplacer my_alias
par une autre chaîne afin que --flag1
apparaisse à 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 davantage de paramètres de position ou "$@"
, d'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?