Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
alias [Le 03/05/2010, 06:21] BeAvEr |
alias [Le 27/03/2024, 09:04] (Version actuelle) bcag2 ajout § [alias avec sudo] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag>console terminal}} | ||
+ | ---- | ||
+ | |||
====== 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>Sur Ubuntu 10.04, les lignes mentionnées sont déjà décommentés, il vous suffira juste de touch ~/.bash_aliases , pour creer 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 (Pour l'ouvrir ouvrer un terminal puis taper gedit .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 tout 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 fichier. Si vous avez besoin de passer des arguments à l'intérieur de la commande mémorisée, il 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 à lancer, comme 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. Ex 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é 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. |
- | //Contributeurs : [[utilisateurs:odric88]] [[:utilisateurs:teke]] [[:utilisateurs:Psykocrash]] [[:utilisateurs: BeAvEr]]// | + | 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 ===== | ||
+ | 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 ===== | ||
+ | * [[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]]// |