[Linux] Créer des alias pour vos commandes

Julien | 25 janvier 2012 | Commentaires (0)

Vous utilisez des commandes à rallonge ? Vous en avez marre de devoir spécifier tous les paramètres d'une commande sachant que vous utilisez toujours les mêmes ? La solution est simple : il vous faut utiliser les alias !

Alias

Je ne parle pas de cet alias là.

Qu'est-ce qu'un alias ?

Une définition claire d'un alias sous Linux serait de dire qu'il s'agit d'un raccourci textuel pour une commande. C'est à dire qu'il s'agit d'un texte de remplacement pour réduire le temps d'écriture d'une commande.  L'exemple le plus évident serait la commande ll. Beaucoup de gens notent que lorsqu'ils liste le contenu d'un répertoire, le résultat ne diffère pas d'un seul bit entre l'utilisation de ll et de ls -l. Et bien c'est tout à fait normal : la commande ll est en réalité l'alias de ls -l. Autrement dit : quelque part dans votre système Linux, lorsque vous entrez l'alias ll dans votre terminal c'est la commande ls -l qui s'exécute. Soyons clair, le gain de temps entre ll et ls -l est assez anecdotique. Maintenant, et comme vous l'avez sûrement compris avec l'exemple de ls -l, l'alias peut représenter une commande ET ses arguments. Je pense que vous avez déjà compris combien il peut être appréciable de n'avoir à tapez qu'une seule fois une ribambelle d'arguments pour une commande et d'ensuite pouvoir l'utiliser à l'infini sans se soucier de devoir tout retaper systématiquement.

En premier lieu, je pense à la commande find. On s'en sert souvent et elle impose généralement pas mal d'arguments. Il faut aussi savoir qu'on peut définir deux types d'alias : les temporaires et les durables. Les deux méthodes seront abordées dans le tutoriel. En parlant de lui, en avant !

All the tutorial

Définir un alias

1. Temporairement

Les alias en soit ne sont que des variables. Ces variables contiennent les commandes à exécuter.  On peut définir ces variables à notre guise mais il faut savoir qu'avec cette méthode temporaire, au redémarrage de la machine, tous les alias créés – toujours selon cette méthode temporaire- seront perdus. Je vais insister sur ce fait : ne perdez pas votre temps à recréer les allias à chaque démarrage. Je ne peux que vous conseiller d'utiliser la méthode durable si vous comptez vous servir plusieurs fois de ces allias. La perte de temps résultant d'une définition manuelle à chaque démarrage peut faire disparaître le gain acquis par ces allias. Réfléchissez-y bien : l'avenir du monde en dépend.

Rien de plus simple que de définir ses allias de manière temporaire. Pour se faire, ouvrez un terminal et il vous suffira de suivre la syntaxe suivante :

alias nom_de_l_alias = "commande_a_executer_et_ses_arguments"

Important à savoir : même si 2 utilisateurs connectés simultanément nomment leur alias identiquement, ils s'exécuteront chacun comme définit par l'utilisateur. Les alias appartiennent à 1 et un seul utilisateur.

C'est à dire que si deux utilisateurs d'une machine définissent que l'alias « test » sera, pour l'un un « echo 42″, et pour l'autre « echo 75″ et bien chacun aura le résultat de son alias. C'est très important. Les alias ne concernent qu'un utilisateur. Souvenez-vous en, cela pourrait vous éviter des prises de tête inutiles.

Bien entendu, on peut très bien complexifier le contenu de l'alias ! C'est là ou ça devient plus intéressant : on peut ajouter à volonté des arguments à la commande contenue dans l'alias. Mais attention, c'est là que le piège se situe. Tous les arguments – sauf le dernier – doivent être pré-enregistré dans l'alias. Avant de revenir là-dessus, voyons d'abord quelques exemples :

alias logs="cat /var/log/messages"

L'exécution de « logs » fera un cat (affichage complet du contenu d'un fichier) du fichier de logs systèmes. Très bien mais le fichier est très long. Je ne cherche que les erreurs contenant le mot fail. Aucun soucis :

alias logs="cat /var/log/messages | grep fail"

Et hop à l'exécution vous verrez apparaître tous les messages d'erreurs contenant le mot fail et ce, en utilisant juste l'alias logs (si jamais vous faites le teste et que vous n'avez aucun retour, c'est probablement parce que le mot fail n'apparaît pas dans ce fichier).

Mais maintenant, je veux pouvoir indiquer le mot que je cherche. Aucun soucis :

alias logs="cat /var/log/messages | grep "

A l'exécution, il faudra utiliser l'alias de cette façon :

logs fail

Et le grep s'effectuera effectivement sur le mot fail. Et inversement, si l'on cherche toujours le même mot mais dans des fichiers différents :

alias logs="cat | grep fail"

L'exécution se fera comme ceci :

logs /var/og/messages

–> Si jamais le terminal ne vous rends pas la main, il vous suffira d'appuyer sur la touche entrée pour la récupérer.

Le plus simple pour tester les possibilités qu'offrent les alias est de faire des tests. Petit conseil : faites vos tests sur des affichages (cat – tac – ls – less – more – head – tail) plutôt que sur des modifications de fichiers. Enfin, ce n'est qu'un conseil.

2. Durablement

Pour que les alias soient disponibles au boot il va vous falloir les inscrire dans votre fichier de configuration personnel : le fichier .bashrc. Ce fichier est unique à chaque utilisateur du système ayant accès à une console bash. Donc vous l'aurez compris, il vous faudra le paramétrer pour chaque utilisateur. Mais bien sûr, je vous fournirais une astuce pour aller plus vite.

Pour commencer, nous n'allons pas réellement écrire directement dans le bashrc. Pourquoi ? Parce que nous allons créer un fichier de base, avec tous les alias identiques que vous voudrez fournir à à plusieurs utilisateurs. De plus, il est préférable d'éviter de surcharger le fichier bashrc, ne serait-ce qu'en cas de modification ou de mise à jour qui le remettrait à 0, vous aurez toujours vos alias à côté. Enfin, en utilisant cette méthode, si vous utilisez un autre compte que le root, vous pourrez retrouver certains de vos alias (par exemple celles ne nécessitants pas de droits root particulier :  find, ls ect…) directement sur compte utilisateur courant.

Dans un premier temps, il va falloir se rendre dans le dossier du compte dans lequel vous voulez créer les alias (Soyez sûr d'utiliser le compte utilisateur auquel vous voulez attribuer les alias). Pour se faire, il vous suffira de faire appel à la commande :

cd ~

Dans ce répertoire, nous allons lister tous les fichiers et  répertoire à l'aide de la commande ls. Mais surpris : le fichier .bashrc n'apparait pas et c'est tout à fait normal. Sous Linux, tous les fichiers ET dossiers commençant par un «  .  » sont cachés. C'est à dire que lors d'un listage classique ils ne seront jamais affichés, et ce pour des règles de sécurité. Pour liste le contenu d'un répertoire en affichant les fichiers et les répertoires cachés, il faudra user de la commande ls -A. J'ai, à titre personnel, une préférence pour le liste détaillé des fichiers avec ls -lA, mais rien ne vous oblige à utiliser ls sous cette forme. Comme vous risquez d'avoir un résultat de listage plutôt long, nous allons produire une liste un peu plus poussée : ls -lA .ba* ; c'est à dire que nous allons afficher tous les fichiers et répertoire cachés possédant un commençant par ba et suivis de n'importe quelle lettres en n'importe quelle quantité. Il devrait apparaître entre 2 à 3 fichiers au moins :

  • .bash_history : contient toutes les commandes entrées dans le terminal. Ne nous intéresse pas pour ce tutoriel.
  • .bashrc : fichier que nous éditerons un peu.
  • .bash_aliases : Fichier dont nous allons avoir besoin. Il est fort probable qu'il n'existe pas encore. C'est pourquoi nous allons le créer (/!\ Ne le faites pas si le fichier existe déjà !). La commande touch .bash_aliases fera parfaitement l'affaire. Elle créera un fichier .bash_aliases vide.

Vous pourriez, si vous en aviez envie, remplir ce fichier comme vous l'entendez mais ça ne changerais rien. Pourquoi ? Parce qu'il va falloir dire à votre système de venir piocher dans ce fichier pour préparer vos alias personnels lorsque vous vous connectez. Et c'est là que le fichier .bashrc intervient. Au moment ou vous vous connectez sur votre poste (avec ou sans interface graphique) votre Linux va venir lire ce fichier et exécuter les instructions qui s'y trouve. Éditez le donc avec grande attention : une mauvaise modification ou une quelconque erreur pourrait peut être vous empêcher de vous connectez avec le profil de votre utilisateur favori. Bien, maintenant les mises en garde standard passée, nous allons éditer ce fichier. Avec l'aide de votre édtieur favori, ouvrez le fichier .bashrc .

Dans le fichier, nous allons ajoutez l'inclusion du fichier .bash_aliases :

if [-f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

Je conseille quand même à ceux dont le fichier .bash_aliases était présent avant de vérifier que ce bout de code ,n'existe pas déjà. Je doute que le fait d'inclure deux fois ce fichier pose problème, mais avoir des fichiers propres ça fait quand même plaisir. Maintenant la moitié du chemin est accompli.

Pour ajouter des alias il y a deux méthodes, chacune à utiliser selon les contextes. Les deux méthodes fonctionnes, à vous de juger les quelles utiliser.

Méthode une : édition directe du fichier .bash_aliases

Cette méthode est la plus longue, mais aussi la plus sure. L'idée est de tout simplement ouvrir le fichier .bash_aliases et d'y ajouter les alias voulus à la suite. Voici un exemple de contenu  :

alias dossier="find / -type d -name"

alias fichier="find / -type f -name"

alias la="ls -lA"

Vous l'aurez compris, il suffit d'écrire les commandes d'alias que l'on veut à la suite dans le fichier. Rien n'encadre le début et la fin du fichier. Veillez à bien ferme les double quotes (« ). Une fois le fichier rempli, il vous suffit de vous déconnectez de votre session et de vous y reconnecter pour activer ces alias (j'insiste sur le fait que le redémarrage de la machine n'est pas nécéssaire). Cette méthode comporte toute fois une faiblesse : vous pouvez vous trompez dans la syntaxe des commandes et devoir rééditer le fichier et vous reconnecter …

Méthode deux : édition indirecte du fichier .bash_aliases

Cette méthode vous permet de tester les commandes AVANT de les enregistrer. Pour ce faire : testez votre commande dans le terminal, par exemple :

find / -type f -name porte.txt

Ça fonctionne ? Parfait. Avec la flèche directionnelle haute [↑], remontez pour afficher la commande qui marche. Puis écrivez autour d'elle : echo alias nom_alias=\ »commande\ » >> .bash_aliases (et bien sûr pensez à enlever le nom du fichier recherché par exemple). Dans notre exemple précédent:

echo alias fichier=\"find / -type f -name \" >> .bash_aliases

Analysons cette commande ensemble:

  • « echo » permet d'afficher du texte sur n'importe quelle sortie (sur l'écran ou dans fichier par exemple).
  • « alias =  » permet de créer un nouvel alias.
  • « nom_alias » c'est le nom de l'alias, c'est à dire le nom avec lequel on veut raccourcir une commande.
  •  » \ » L'antislash avant les doubles quotes (  » ) permet tout simplement de les conserver lors de l'écriture dans le fichier. La commande echo interprète les  » et ' donc si vous voulez les conserver préciser bien l'antislash avant.
  • «  >>  » permet d'indiquer que l'on veut écrire dans un fichier, dans notre cas bash_aliases.

/!\ Votre attention est requise ICI : si jamais par malheur vous utiliser un simple > au lieu des doubles (>>) vous supprimeriez TOUT le contenu du fichier .bash_aliases. La plus grande prudence est de mise. D'ailleurs, quelle que soit la méthode utilisée : relisez-vous avant de valider/enregistrer !

Tout comme la méthode précédente, une simple reconnexion permet d'activer les alias.

Créer des alias identiques pour plusieurs utilisateurs

Vous venez de créer vos alias. Vous utilisez plusieurs comptes et vous voulez  avoir les alias de base que vous avez créer à plusieurs utilisateurs ? C'est ici que ça se passe.

Tout d'abord il faut ajouter les instructions d'inclusion de .bash_aliases dans .bashrc. Mais au lieu de créer le fichier .bash_aliases. Vous allez le copier à partir du user qui le possède vers le répertoire de l'utilisateur de destination :

cp .bash_aliases /home/utilisateur_de_destination/

Puis il faudra changer les droits pour que l'utilisateur de destination pour qu'il puisse le modifier aussi :

chown utilisateur_de_destination /home/utilisateur_de_destination/.bash_aliases

Et hop ! Répétez l'opération pour chaque utilisateur aux quels vous voulez donner vos alias.

F*ck Yeah

Lorsque tout est dit c'est qu'il est temps de passer à la pratique. Les commentaires sont bien évidements ouvertes pour toute correction/question ou quoi que ce soit.