Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
alias [Le 15/12/2011, 15:17]
127.0.0.1 modification externe
alias [Le 27/03/2024, 09:04] (Version actuelle)
bcag2 ajout § [alias avec sudo]
Ligne 4: Ligne 4:
 ====== Créer un alias ====== ====== Créer un alias ======
  
-Cette page sert à créer ses propres ​alias.+Les //​[[wpfr>​alias]]// sont des substitutions abrégées de [[:​commande_shell|commandes]] répétitives et/ou longues à taper dans la [[:​console]].
  
 +Il est possible de définir vos alias dans deux [[:​fichier_caché|fichiers cachés]] qui se trouvent dans votre //Dossier Personnel//:​
 +  * dans le fichier **.bashrc** juste après la ligne "//​some more ls aliases//"​
 +  * dans un fichier **.bash_aliases**. Si ce dernier n'​existe pas, [[:​tutoriel:​comment_modifier_un_fichier|créez-le]].
  
 +Il est également possible de créer un alias provisoire tel qu'​expliqué [[#ajouter un alias provisoirement|ici]]
  
 +<note important>​Pour éviter de modifier trop souvent le fichier sensible qu'est **.bashrc**,​ il est conseillé d'​utiliser le fichier **.bash_aliases**. Pour que celui-ci soit pris en compte, [[:​tutoriel:​comment_modifier_un_fichier|modifiez le fichier]] **~/​.bashrc** **après** l'​avoir [[:​tutoriel:​comment_sauver_et_restaurer_un_fichier|sauvegardé]] pour décommenter((enlever les dièses (#) en début de ligne)), si ce n'est déjà le cas, les lignes suivantes:
 +<file - ~/​.bashrc>​
 +if [ -f ~/​.bash_aliases ]; then
 +    . ~/​.bash_aliases
 +fi
 +</​file>​
 +</​note>​
  
-===== Qu'est ce qu'un alias =====+===== Forme d'un alias =====
  
-Un //alias// est un raccourci dans la console permettant une facilité d'​utilisation de certaines commandes longues à taper comme //dpkg-reconfigure/​/. Il suffira ​de taper "reconf" ​par exemple.+Qu'il soit dans le fichier **~/.bashrc** ou **~/.bash_aliases**, ​un alias aura toujours ​la forme suivante 
 +<​file ​~/.bash_aliases>​ 
 +alias nom_de_votre_alias='​commande de votre alias'​ 
 +</​file>​ 
 +<note important>​Il ne peut y avoir d'​espace entre le nom de l'​alias,​ le signe "=" ​et le reste</​note>​ 
 +Lorsque vous saisirez **nom_de_votre_alias** dans un [[:​terminal]],​ ce sera réellement la **commande de votre alias** qui sera exécutée.
  
 +Il est également possible d'​utiliser des guillemets doubles comme ceci :
  
-<note important>​ 
-Le fichier que nous allons éditer est très important pour votre utilisateur,​ si vous faites n'​importe quoi il se pourrait que la console ait des bugs. 
-</​note>​ 
-<note tip>​Depuis Ubuntu 10.04, les lignes mentionnées sont déjà décommentés,​ il vous suffira juste de touch ~/​.bash_aliases , pour créer le fichier.</​note>​ 
- 
-Pour éviter de modifier trop souvent ce fichier sensible, il faut rechercher et décommenter les lignes suivantes du fichier $HOME/​.bashrc : 
 <​file>​ <​file>​
-if [ -f ~/​.bash_aliases ]; then +alias nom_de_votre_alias="​commande de votre alias"
-    . ~/​.bash_aliases +
-fi+
 </​file>​ </​file>​
 +Attention dans ce cas, si votre commande elle-même contient des guillemets, il est possible que ces derniers ne soient alors pas interprétés comme il faut.
  
-Ensuite créez un fichier ​~/.bash_aliases qui regroupera tous vos alias.+===== Utilisation ===== 
 +<​note>​Pour que vos alias soient pris en compte après ajout dans les fichiers **.bashrc** ou **.bash_aliases**,​ il vous faudra relancer votre [[:​terminal]] ou saisir la commande <​code>​source ​~/.bashrc</​code>​ 
 +Attention cependant à ce que "​source"​ n'​appelle pas une fonction similaire à celle décrite dans [[#les fonctions|cette partie]].\\ 
 +Vous pouvez aussi avoir l'​erreur:​ //source : commande introuvable//​((https://​askubuntu.com/​questions/​20953/​sudo-source-command-not-found)),​ relancer le terminal reste alors le plus simple </​note>​
  
 +Vous trouverez de nombreux alias en parcourant le net, et mettrez en place ou adapterez ceux qui vous correspondent au mieux, mais pour l'​exemple,​ si vous ajoutez ceci dans le fichier **~/​.bash_aliases**
 +<file - ~/​.bash_aliases>​
 +alias agu='​sudo apt-get update'​
 +</​file>​
 +il vous suffira alors de taper dans un [[:​terminal]]
 +<​code>​agu</​code>​pour mettre à jour la liste de vos [[:​dépôts]] de [[:​paquet|paquets]] avec l'​outil [[:​apt-get]].
  
 +Vous pouvez également cumuler deux alias et en utiliser un troisième. Par exemple, toujours avec l'​outil [[:​apt-get]]
 +<​file>​alias agu='​sudo apt-get update'​
 +alias agg='​sudo apt-get upgrade'​
 +alias agd='​sudo apt-get dist-upgrade'​
 +alias miseàjour='​agu && agg && agd'</​file>​
 +Vous saisirez alors (dans un terminal) :
 +<​code>​miseàjour</​code>​ ce qui [[:​tutoriel:​comment_modifier_sources_maj#​recharger_la_liste_des_paquets|rechargera la liste des paquets]] avant d'en faire la [[:​apt-get#​mise_a_jour_de_paquets|mise à jour]].
  
 +<note tip>La déclaration de « variables aliases » est totalement libre et laissée à la discrétion de l’utilisateur,​ néanmoins, il peut être utile de qualifier les aliases selon un procédé mnémotechnique syncopé : \\
 +<​file>​alias update='​sudo apt-get update'​
 +alias upgrade='​sudo apt-get upgrade'​
 +alias distup='​sudo apt-get dist-upgrade'​
 +alias sysup='​update && upgrade && distup'</​file>​
  
 +il est préférable d'​éviter d'​inclure la commande sudo dans la déclaration de l'​alias si vous êtes débutant ou pour vous astreindre à déclarer des privilèges élevés en gardant à l'​esprit la portée des commandes. \\
 +La commande :
 +<​code>​sudo !!</​code>​
 +vous donnera ponctuellement et rapidement les privilèges requis pour la commande précédemment entrée et ayant généré un message d'​erreur de privilèges d'​exécution.
  
-===== Création de l'alias ===== +Hormis ce champ d'application, ​le principe peut être utilisé afin de transcrire les commandes Windows en commandes Linux Bash</​note>​
-<note important>​Ceci n'est pas nécessaire si vous avez créé ​le fichier ~/​.bash_aliases +
-.</​note>​+
  
-Pour créer votre alias, il suffit ​de [[tutoriel:comment_editer_un_fichier|modifier le fichier]] $HOME/.bashrc+La déclaration de variables ​alias ne fige pas nécessairement la routine prédéfinie. Vous pouvez passer une commande déclarée dans une variable — comme mentionné précédemment — en lui ajoutant un paramètre lors de l'​exécution ponctuelle à la suite de l'​alias. \\ Par exemple ​: 
 +<​file>​alias ins='​sudo apt install'<​/file> 
 +Saisir alors (dans un terminal) : 
 +<​code>​ins nom_programme</​code>​ 
 +installera le programme souhaité.
  
-Vous devrez y trouver la ligne suivante :+<note tip>Il est à noter que l'​[[wpfr>​complètement|autocomplétion]] fonctionne également avec les alias.</​note>​
  
-<​file>​ +===== Aller plus loin =====
-#alias l='ls -CF' +
-</​file>​+
  
-qui est un premier exemple d'//alias//. Ils sont sous la forme :+==== Lister les alias ==== 
 +Il suffit de saisir ​la commande seule:<​code>​alias</​code>​
  
-<file+==== alias avec sudo ==== 
-alias nom_de_votre_alias='commande de votre alias'+Par défaut les alias ne sont pas accessibles quand vous utilisez [[:sudo]], un exemple courant est de lister un répertoire système :  
 +<code bash>sudo ll /media/ 
 +# va retourner 
 +sudo: ll : commande introuvable 
 +</​code>​ 
 +Pour que ce soit possible, ajouter dans vos alias ((src : https://​askubuntu.com/​a/​22043/​385361)) : 
 +<file - ~/​.bash_aliases>​ 
 +sudo='sudo '
 </​file>​ </​file>​
  
-Il est également possible d'​utiliser des guillemets doubles comme ceci :+==== Appeler un script ====
  
-<​file>​ +Si vous avez un [[:script]] [[:bash]] mais que vous ne l' avez pas défini dans le [[:​variables_d_environnement#​variables_liees_aux_emplacements_de_fichiers|$PATH]],​ il est possible de l' appeler par alias. Par exemple 
-alias nom_de_votre_alias="​commande de votre alias"​ +<​file>​alias ​monscript='sh -c /​home/​$USER/​Documents/​scripts/​test/​essai.sh'​</​file>​
-</​file>​+
  
-Pour notre exemple ​plus haut on pourrait faire :+==== Ajouter un alias provisoirement ==== 
 +Pour ajouter un alias uniquement pour la session du [[:​terminal]] en cours, il s'​agira de saisir la commande alias sous la même [[#Forme d'un alias|forme]] que celle à écrire dans le fichier **.bashrc** ou **.bash_aliases**.\\ 
 +Par exemple, si vous voulez utiliser provisoirement un alias pour supprimer les copies de paquets installés avec l'​outil [[:​apt-get#​suppression_de_paquets_d_installation|apt-get]],​ vous pouvez saisir: 
 +<​code>​alias agc='​sudo apt-get clean'</​code>​ 
 +Jusqu'​à la fermeture du [[:terminal]], la commande <​code>​agc</​code>​exécutera en fait un ''​sudo apt-get clean''​.
  
-<file+==== Retirer un alias provisoirement ==== 
-alias reconf='​dpkg-reconfigure+Pour retirer, et non [[#​échapper un alias]], de la session du [[:​terminal]] en cours, il s'​agira de saisir 
-</file>+<code>​unalias mon_alias</​code
 +Pour reprendre l'[[#Ajouter un alias provisoirement|exemple précédent]] saisissez 
 +<​code>​unalias agc</code>
  
-Voila, votre alias est créé+==== En cas d'​homonymie avec les commandes système ==== 
-Pour pouvoir profiter de votre alias, ​il suffit de fermer toutes vos fenêtres de console ou de taper+Les noms de commandes donnés dans les alias sont exécutés par priorité, en cas d'​homonymie,​ aux commandes système
 +Pour exécuter la commande système, et non celle définie par un alias, ​une protection peut être employée avec la commande env. 
 +<​code>​alias commande_systeme='​commande_systeme -option parametre'</​code>​ 
 +<​code>​user@host:​$ env commande_systeme</​code>​ 
 +Ainsi, commande_systeme sera employée sans option ni paramètre.
  
-<​file>​ +==== Échapper un alias ====
-source ~/.bashrc +
-</​file>​+
  
-De cette manière, il est possible ​de passer des arguments qui seront passés en fin de la commande ​mémorisée dans le fichierSi vous avez besoin de passer des arguments à l'intérieur ​de la commande ​mémoriséeil faut agir ainsi :+Lorsque l'on a créé une longue [[#lister les alias|liste]] d'​alias, il peut être utile de lancer une commande ​sans que celui-ci n'​intervienne.\\ 
 +Exemple, ​vous avez créé cet alias : 
 +<​code>​ 
 +alias ping='​ping -c 4' 
 +</​code>​ 
 +Et vous souhaitez lancer la commande ping sans les options définies dans l'alias, pour cela il suffit ​de mettre le caractère d'​échappement //​antislash//​ (**\**) devant ​la commande ​à lancercomme ceci : 
 +<​code>​ 
 +\ping 
 +</​code>​
  
 +==== Les fonctions ====
 +
 +Les alias ne pouvant pas prendre d'​argument,​ il est nécessaire de définir une fonction qui vous le permettra. Il sera alors possible d'​indiquer des arguments qui seront passés en fin de la commande mémorisée dans le fichier.\\
 +Par exemple
 <​file>​ <​file>​
 hy(){ hy(){
    ​history | grep -vE -e "​[0-9]{1,​4} ​ hy |history"​ | grep -iE -e $1 | less    ​history | grep -vE -e "​[0-9]{1,​4} ​ hy |history"​ | grep -iE -e $1 | less
 }</​file>​ }</​file>​
- +Cette fonction ​permet de chercher dans l'​historique des commandes bash chaque exécution contenant le mot en argument, argument mémorisé dans les variables //$1à $9//.\\ 
-Les arguments sont mémorisés dans les variables $1 ... $9. Cette commande en exemple ​permet de chercher dans l'​historique des commandes bash chaque exécution contenant le mot en argument. Exemple ​pour chercher toutes les connexions par ssh :+Exemple pour chercher toutes les connexions par ssh :
 <​code>​hy ssh</​code>​ <​code>​hy ssh</​code>​
  
-Cependant, ​il n'est pas recommandé ​de sourcer ​des fonctions dans ce fichier, d'une part parce qu'il sera plus lourd à charger, et d'​autre part, parce que plus il y aura de modification,​ plus il y a aura de risque d'​erreur et donc qu'il ne se charge plus.+Cependant, ​__il n'est pas recommandé ​d'​ajouter ​des fonctions dans le fichier ​**.bashrc**__, d'une part parce qu'il sera plus lourd à charger, et d'​autre part, parce que plus il y aura de modification,​ plus il y a aura de risque d'​erreur et donc qu'il ne se charge plus.
  
-Une solution permettant de joindre vos alias et vos fonctions est d'​écrire une librairie, et de faire pointer la variable d'​environnement $FPATH sur l'​emplacement de votre librairie.+Une solution permettant de joindre vos alias et vos fonctions est d'​écrire une librairie, et de faire pointer la variable d'​environnement $FPATH sur l'​emplacement de votre librairie.FIXME Comment? \\ 
 +FIXME même problème de temps de chargement ou pas avec  bash_aliases ?
  
- +===== Problème connu ===== 
-===== Échapper un alias ===== +Il se peut que vos alias ne tolèrent pas l’auto-complétion dans le cas de l'utilisation d'aptPour remédier à cela [[:​tutoriel:​comment_modifier_un_fichier|ajouter]] ce contenu au fichier **.bashrc**en considérant que votre alias est ''​apt-in''​ pour ''​sudo apt install''​ (adapter ensuite à vos besoin) :
- +
-Lorsque l'on a créé une longue liste d'​alias,​ il peut être utile de lancer une commande sans que l'alias créé n'intervienne. +
-Exemplevous avez créé cet alias :+
 <​file>​ <​file>​
-alias ping='​ping ​-c 4' +_apt_install_complete() { 
-</file> +    mapfile ​-t COMPREPLY ​< <(apt-cache --no-generate pkgnames "​$2"​);​ 
-Et vous souhaitez lancer la commande ping sans les options définies dans l'​alias,​ pour cela il suffit de mettre un caractère d'​échappement +} 
-//​antislash//​ devant la commande à lancer, comme ceci : +complete -F _apt_install_complete apt-in</​file>​
-<file> +
-\ping +
-</​file>​ +
  
 +Il existe également une application nommée complete_alias que vous pourrez trouver sous forme de sources à compiler à l'​adresse : [[https://​github.com/​cykerway/​complete-alias|complete alias sur le GitHub]].
 +===== Voir aussi =====
 +  * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=20437|Sujet du forum]] qui traite du sujet.
 +  * [[http://​www.it-connect.fr/​creer-des-alias-de-commandes-sous-linux%ef%bb%bf/​|Créer des Alias de commandes sous Linux]] sur IT-Connect
  
 ---- ----
- 
 //​Contributeurs : [[utilisateurs:​odric88]] [[:​utilisateurs:​teke]] [[:​utilisateurs:​Psykocrash]] [[:​utilisateurs:​ BeAvEr]] [[:​utilisateurs:​ mydjey]]// //​Contributeurs : [[utilisateurs:​odric88]] [[:​utilisateurs:​teke]] [[:​utilisateurs:​Psykocrash]] [[:​utilisateurs:​ BeAvEr]] [[:​utilisateurs:​ mydjey]]//
  • alias.1323958627.txt.gz
  • Dernière modification: Le 26/03/2012, 08:17
  • (modification externe)