web-dev-qa-db-fra.com

Devrais-je créer un alias pour chaque fonction bash?

J'ai suivi un court cours sur bash et terminal. L'une des meilleures pratiques du cours consistait à créer un alias pour chaque fonction à créer. Par exemple si j'avais une fonction:

function e() { echo "$*"; }

Je devrais aussi créer un alias:

alias e='e'

Pensez-vous que cela a du sens et si oui quel est le raisonnement? Je suppose que je peux obtenir les fonctions et les utiliser sans alias de toute façon, donc cela semble un peu comme un travail inutile.

5
Yos

Case pour les alias

  • Les alias peuvent être très utiles lorsque vous souhaitez faire référence à une commande longue par un nom court.
  • Dans l'ordre de priorité, les alias sont supérieurs aux fonctions. Par conséquent, si vous souhaitez remplacer un nom existant pour votre propre session , vous utiliserez un alias.

Cas pour les fonctions

  • Lorsque vous avez une commande qui nécessite traitant des guillemets simples et doubles en même temps , utilisez des fonctions. Ceux qui traitent avec sed ou awk comprennent beaucoup.
  • Lorsque vous souhaitez faire référence à une tâche longue consistant en plusieurs commandes interagissant avec des variables, utilisez la fonction. En général, je respecte personnellement la règle selon laquelle s'il y a plus de 3 commandes, il est temps d'utiliser une fonction.
  • Les alias peuvent être échappés en ajoutant \. Ceci est utile pour les administrateurs système. Si vous ne voulez pas que votre utilisateur exécute une commande donnée, une fonction aura priorité. Exemple:

    $ ls
    serg says this command is a no-no
    $ \ls
    serg says this command is a no-no
    

    notez que l'utilisateur peut toujours exécuter /bin/ls sans problème, ce n'est donc pas vraiment une bonne mesure de sécurité. Je dirais que la meilleure utilisation serait comme un wrapper pour une commande, où vous voulez ajouter un en-tête ou supprimer des informations.

  • De la page de manuel bash: There is no mechanism for using arguments in the replacement text.If arguments are needed, a Shell function should be used. Ainsi, bien que vous puissiez faire des astuces simples - quelque chose comme alias e="echo"; e Hello _ - vous voudriez une fonction lorsque vous souhaitez gérer de manière extensive les arguments de ligne de commande.

Dans mon expérience personnelle, je me suis retrouvé à utiliser des fonctions bien plus que des alias. Ce sont comme des scripts, sauf qu'il n'est pas nécessaire de créer des fichiers externes - ils peuvent tous vivre dans mon ~/.bashrc. Citer et référencer des variables devient moins problématique.

6
function e() { echo "$*"; }

Je devrais aussi créer un alias:

alias e='e'

Cela, tel quel, est assez stupide. Inutile de définir un alias de fonction et de lui attribuer le même nom.

Je penserais que ce qu'ils voulaient dire était:

  • Donnez à chaque fonction que vous écrivez un nom descriptif, qui peut être long.
  • Et faites un petit alias pour plus de commodité.
6
muru