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 26/03/2012, 15:39]
88.182.46.9 [Forme d'un alias]
alias [Le 27/03/2024, 09:04] (Version actuelle)
bcag2 ajout § [alias avec sudo]
Ligne 10: Ligne 10:
   * dans un fichier **.bash_aliases**. Si ce dernier n'​existe pas, [[:​tutoriel:​comment_modifier_un_fichier|créez-le]].   * 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]] ​+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)) les lignes suivantes:​ +<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>​+<​file ​- ~/.bashrc>
 if [ -f ~/​.bash_aliases ]; then if [ -f ~/​.bash_aliases ]; then
     . ~/​.bash_aliases     . ~/​.bash_aliases
Ligne 19: Ligne 19:
 </​file>​ </​file>​
 </​note>​ </​note>​
- 
-<note tip>​Depuis Ubuntu 10.04 [[:Lucid]], les lignes mentionnées sont déjà décommentés. Il vous suffira juste de [[:​tutoriel:​comment_modifier_un_fichier|créer le fichier]] **.bash_aliases** dans votre //Dossier Personnel//​.</​note>​ 
  
 ===== Forme d'un alias ===== ===== Forme d'un alias =====
  
 Qu'il soit dans le fichier **~/​.bashrc** ou **~/​.bash_aliases**,​ un alias aura toujours la forme suivante Qu'il soit dans le fichier **~/​.bashrc** ou **~/​.bash_aliases**,​ un alias aura toujours la forme suivante
-<​file>​+<​file ​- ~/​.bash_aliases>
 alias nom_de_votre_alias='​commande de votre alias' alias nom_de_votre_alias='​commande de votre alias'
 </​file>​ </​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. Lorsque vous saisirez **nom_de_votre_alias** dans un [[:​terminal]],​ ce sera réellement la **commande de votre alias** qui sera exécutée.
  
Ligne 35: Ligne 34:
 alias nom_de_votre_alias="​commande de votre alias" alias nom_de_votre_alias="​commande de votre alias"
 </​file>​ </​file>​
-Attention dans ce cas, si votre commande elle-même contient des guillemets, il est possible que ces dernières ​ne soit alors pas interprétées ​comme il faut.+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.
  
 ===== Utilisation ===== ===== Utilisation =====
-<​note>​Pour que vos alias soient pris en compte, il vous faudra relancer votre [[:​terminal]]ou si vous les avez créés  +<​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>​ 
-  * dans le fichier **~/​.bashrc**,​ vous pouvez ​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]].\\ 
-  * dans le fichier **~/​.bash_aliases**,​ vous pouvez saisir <​code>​source ~/​bash_aliases</​code>​ +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>​
-Attention cependant à ce que "sourcer" n'​appelle pas une fonction ​telle que décrit ​dans [[#les fonctions|cette partie]].</​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** +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>​+<​file ​- ~/​.bash_aliases>
 alias agu='​sudo apt-get update'​ alias agu='​sudo apt-get update'​
 </​file>​ </​file>​
Ligne 55: Ligne 53:
 alias agd='​sudo apt-get dist-upgrade'​ alias agd='​sudo apt-get dist-upgrade'​
 alias miseàjour='​agu && agg && agd'</​file>​ alias miseàjour='​agu && agg && agd'</​file>​
-Vous saisirrez ​alors +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]].+<​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. 
 + 
 +Hormis ce champ d'​application,​ le principe peut être utilisé afin de transcrire les commandes Windows en commandes Linux Bash</​note>​ 
 + 
 +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é.
  
 <note tip>Il est à noter que l'​[[wpfr>​complètement|autocomplétion]] fonctionne également avec les alias.</​note>​ <note tip>Il est à noter que l'​[[wpfr>​complètement|autocomplétion]] fonctionne également avec les alias.</​note>​
Ligne 64: Ligne 81:
 ==== Lister les alias ==== ==== Lister les alias ====
 Il suffit de saisir la commande seule:<​code>​alias</​code>​ Il suffit de saisir la commande seule:<​code>​alias</​code>​
 +
 +==== alias avec sudo ====
 +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>​
  
 ==== Appeler un script ==== ==== Appeler un script ====
  
 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 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
-<​file>​alias monscript='​sh -c /home/user/​Documents/​scripts/​test/​essai.sh'</​file>​+<​file>​alias monscript='​sh -c /home/$USER/​Documents/​scripts/​test/​essai.sh'</​file>​
  
 ==== Ajouter un alias provisoirement ==== ==== Ajouter un alias provisoirement ====
Ligne 81: Ligne 109:
 Pour reprendre l'​[[#​Ajouter un alias provisoirement|exemple précédent]] saisissez Pour reprendre l'​[[#​Ajouter un alias provisoirement|exemple précédent]] saisissez
 <​code>​unalias agc</​code>​ <​code>​unalias agc</​code>​
 +
 +==== En cas d'​homonymie avec les commandes système ====
 +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.
  
 ==== Échapper un alias ==== ==== Échapper un alias ====
Ligne 86: Ligne 121:
 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.\\ 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 : Exemple, vous avez créé cet alias :
-<file>+<code>
 alias ping='​ping -c 4' alias ping='​ping -c 4'
-</file>+</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 à lancer, comme ceci : 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 à lancer, comme ceci :
 <​code>​ <​code>​
Ligne 111: Ligne 146:
 FIXME même problème de temps de chargement ou pas avec  bash_aliases ? FIXME même problème de temps de chargement ou pas avec  bash_aliases ?
  
 +===== Problème connu =====
 +Il se peut que vos alias ne tolèrent pas l’auto-complétion dans le cas de l'​utilisation d'apt. Pour 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) :
 +<​file>​
 +_apt_install_complete() {
 +    mapfile -t COMPREPLY < <​(apt-cache --no-generate pkgnames "​$2"​);​
 +}
 +complete -F _apt_install_complete apt-in</​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 ===== ===== Voir aussi =====
-  * [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=20437|Sujet du forum]] qui traite du sujet.+  * [[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.1332769161.txt.gz
  • Dernière modification: Le 26/03/2012, 15:39
  • par 88.182.46.9