Un alias affecte-t-il un autre alias?

14

Je n'ai pas encore beaucoup d'alias configurés dans mon fichier .bash_aliases. Ce n'est que récemment que j'ai découvert leur utilité.

Je peux me voir devenir assez accro aux alias, donc avant que le fichier ne devienne trop lourd, j'aimerais clarifier quelque chose en posant une question très simple. Un alias affecte-t-il un autre ou l'alias revient-il toujours à la commande d'origine?

Un exemple peut rendre cela plus clair:

Je l'ai lsaliasé ls -lF. Disons que je voudrais alias également dà ls -l | grep -E "^d": dn'utilise maintenant ls -lFà la place ls? Si oui, s'agit-il d'une question d'ordre dans le fichier de configuration .bash_aliases?

man alias ne m'a pas éclairé.

boehj
la source

Réponses:

20

Depuis les alias (section 6.6 du manuel Bash) :

Le premier mot de chaque commande simple, s'il n'est pas cité, est vérifié pour voir s'il a un alias. Si c'est le cas, ce mot est remplacé par le texte de l'alias.

Cela se produit lorsque vous utilisez l'alias, pas lorsque vous le définissez. Voici un exemple:

$ alias a1='a2 hello'
$ alias a2='echo'
$ a1
hello
$ unalias a2
$ a1
bash: a2: command not found
cjm
la source
1
Très bien, merci pour cet exemple (et aussi pour le lien vers le manuel Bash). Je cite le manuel: "Les règles concernant la définition et l'utilisation des alias sont quelque peu confuses ... Pour presque tous les usages, les fonctions shell sont préférées aux alias." Je suppose que je ferais mieux d'apprendre à faire des fonctions shell alors. :)
boehj
1
Oui. Les alias peuvent vous faire économiser de la frappe pour les commandes courantes, mais pour tout ce qui est complexe, même à distance, l'écriture de fonctions personnalisées pour le gérer est généralement une meilleure option.
Caleb
@Caleb @Gilles - Merci à tous. BTW, ls = 'ls --color' Je peux voir être très pratique. J'adore ce site. :)
boehj
2
@boehj: Une règle d'or consiste à utiliser un alias lorsque vous souhaitez avoir des arguments automatiques pour une commande, en utilisant le nom de la commande ou une variante mineure, et fonctionne autrement. Donc alias ls='ls --color', alias cp='cp -i'mais fonctionne pour des choses plus complexes. En particulier, je ferais de vous dune fonction pour que vous puissiez passer des arguments à ls. [commentaire reposté pour corriger un braino déroutant, merci @cjm]
Gilles 'SO- arrête d'être méchant'
@ Gilles - OK, ma tâche pour aujourd'hui est de m'apprendre à répliquer en dtant que fonction shell.
boehj