Comment créer un alias pour Bash, Cmd ou PowerShell ?

Un petit quicky ?
Comment créer un alias pour Bash, Cmd ou PowerShell ?
Crédits : Dacian_G/iStock/Thinkstock

Les alias sont de petits raccourcis en ligne de commandes qui permettent de se faciliter la vie. Un outil méconnu, pourtant largement disponible tant sous Linux que sous Windows.

Lorsque l'on utilise un système d'exploitation, on a parfois affaire à la ligne de commandes pour y exécuter des tâches de manière plus ou moins régulières. Lorsqu'il s'agit de lister les fichiers d'un répertoire, c'est en général assez simple avec des commandes comme dir ou ls. Puis il y a des cas plus compliqués.

Lorsqu'il faut enchaîner de longues commandes et paramètres par exemple, ou lorsque l'on ne veut pas avoir à retenir une syntaxe un peu trop verbeuse. On en a vu un exemple récemment avec la substitution d'utilisateur sous Windows bien plus complexe que sous Linux, avec deux commandes qui se présentent de la sorte :

sudo commande
runas /noprofile /user:Utilisateur_Administrateur commande

Dans ces différentes situations, un outil assez simple peut vous aider : l'alias. Voici comment en créer.

Bash Linux, un simple fichier à éditer

Commençons par des systèmes où l'on utilise souvent un terminal : les distributions GNU/Linux et leur Bash. Cet interpréteur est loin d'être le seul disponible, mais c'est le plus courant, c'est pour cela que nous l'utilisons comme exemple. La documentation des alias est disponible par ici.

Par défaut, plusieurs sont créés, vous pouvez en voir la liste avec la commande suivante :

alias

Vous verrez ainsi la forme sous laquelle ils sont déclarés : 

alias nom_de_lalias='commande'

Si vous tapez cette ligne dans un terminal, l'alias va être créé et sera valable jusqu'à la fin de la session. On peut faire le test cette commande permettant de mettre à jour le système et de faire le ménage :

alias fup='sudo apt update && sudo apt full upgrade -y && sudo apt autoremove'
fup

Pour rendre cet alias permanent, vous pouvez l'enregistrer dans le fichier de configuration de bash ou celui dédié aux alias (qui n'existe pas par défaut), ils sont cachés à la racine du répertoire utilisateur :

nano .bashrc
nano .bash_aliases

Notez que des alias peuvent s'appeler entre eux (attention à l'ordre de déclaration). En reprenant l'exemple ci-dessus :

alias up='sudo apt update'
alias ug='sudo apt upgrade -y'
alias ar='sudo apt autoremove'
alias fup='up && ug && ar'

Les alias peuvent également être utilisés conjointement à des paramètres de la ligne de commandes :

alias sap='sudo apt -y' 
sap update
sap full-upgrade

Les macros de l'invite de commandes Windows

Sous Windows, le terminal classique ou invites de commandes (cmd) dispose aussi d'une syntaxe simple et assez ancienne pour gérer des alias (appelés macros) passant par doskey.

doskey ls=dir

Pour lister les macros existantes ou leur historique d'usage des commandes de l'invite : 

doskey /m
doskey /h

Par défaut, aucune macro n'est présente. On rappellera au passage quelques raccourcis pratiques :

  • F7 : affiche l'historique de l'invite
  • F8 : effectue une recherche dans l'historique
  • F9 : lance un élément de l'historique à travers son numéro
  • ALT+F7 : efface l'historique de l'invite
  • ALT+F10 : efface les macros 

Doskey a néanmoins deux défauts principaux. Le premier c'est qu'il faut lui dire les arguments auxquels il doit s'attendre. Si l'on tape par exemple la commande suivante : 

ls c:\

On aura le résultat d'un simple dir et non dir c:\, l'argument étant ignoré. Il faut donc modifier la déclaration : 

doskey ls=dir $*

Vous pouvez aussi utiliser jusqu'à neuf arguments ($1 à $9) et différentes commandes de suite ($T comme séparateur). L'autre problème, c'est que ces macros sont non persistantes. C'est-à-dire qu'elles sont effacées dès que la fenêtre est fermée. Vous pouvez néanmoins en charger plusieurs d'un coup via un fichier :

doskey /macrofile=fichier.txt

La seule solution est donc de passer par le lancement de cette commande au démarrage du système. Vous trouverez un exemple de la méthode à suivre, via un ajout dans la base de registre, dans ce dépôt GitHub.

PowerShell : comme pour Bash

Avec PowerShell, les choses sont forcément plus simples. Voir la liste des alias ou en ajouter un se résume à :

Get-Alias
Set-Alias nom commande

Par défaut de nombreux alias sont configurés, ls renvoie par exemple à Get-ChildItem. Plusieurs paramètres sont disponibles permettant de définir un alias comme en lecture uniquement, privé, lui ajouter une description, etc.

Les paramètres en ligne de commandes sont passés directement à l'alias, le système est ainsi assez proche de Bash plus que de Doskey. Là encore, les alias sont non persistants par défaut avec un simple fichier texte à éditer.

Set-Alias np notepad
$Profile
np $Profile

Les trois lignes ci-dessus permettent de créer un alias qui ouvrira un fichier dans le Bloc-notes de Windows, d'afficher le chemin du fichier contenant le profil utilisateur et de l'ouvrir (ou le créer puisqu'il n'existe pas par défaut).

On peut alors lui ajouter des lignes d'alias. Notez enfin que les expressions complexes peuvent vous donner du fil à retordre, devant passer par une fonction. Ainsi, pour lancer la mise à jour des applications Chocolatey avec les droits administrateur depuis une session en étant dépourvu on ne peut pas simplement utiliser :

Set-Alias chup Start-Process powershell.exe -Verb RunAs 'choco upgrade all'

Il faut donc plutôt opter pour ces deux lignes :

Set-Alias chup UpgradeChoco
function UpgradeChoco {Start-Process powershell.exe -Verb RunAs 'choco upgrade all'}

Vous n'avez pas encore de notification

Page d'accueil
Options d'affichage
Abonné
Actualités
Abonné
Des thèmes sont disponibles :
Thème de baseThème de baseThème sombreThème sombreThème yinyang clairThème yinyang clairThème yinyang sombreThème yinyang sombreThème orange mécanique clairThème orange mécanique clairThème orange mécanique sombreThème orange mécanique sombreThème rose clairThème rose clairThème rose sombreThème rose sombre

Vous n'êtes pas encore INpactien ?

Inscrivez-vous !