| Les deux révisions précédentesRévision précédente | |
| alias [Le 12/02/2026, 14:46] – typo / détails krodelabestiole | alias [Le 11/07/2026, 11:46] (Version actuelle) – coloration syntaxique ? krodelabestiole |
|---|
| <note> | <note> |
| Le fichier ''.bash_aliases'' est pris en compte grâce au code suivant dans le fichier ''~/.bashrc'' (celui-ci étant automatiquement interprété à chaque ouverture d'un onglet du [[:terminal]]) : | Le fichier ''.bash_aliases'' est pris en compte grâce au code suivant dans le fichier ''~/.bashrc'' (celui-ci étant automatiquement interprété à chaque ouverture d'un onglet du [[:terminal]]) : |
| <code> | <code bash> |
| if [ -f ~/.bash_aliases ]; then | if [ -f ~/.bash_aliases ]; then |
| . ~/.bash_aliases | . ~/.bash_aliases |
| |
| Un **alias** est déclaré dans le fichier ''~/.bash_aliases'' avec une ligne du type : | Un **alias** est déclaré dans le fichier ''~/.bash_aliases'' avec une ligne du type : |
| <file - ~/.bash_aliases> | <code bash> |
| alias nom_de_votre_alias='commande de votre alias' | alias nom_de_votre_alias='commande de votre alias' |
| </file> | </code> |
| où ''nom_de_votre_alias'' est la commande raccourcie que vous passerez manuellement dans le [[:terminal]], et ''commande de votre alias'' est la [[:commande_shell|ligne de commande]], avec les éventuelles options et paramètres que le système devra comprendre (conserver les guillemets simples ''%%'%%''). | où ''nom_de_votre_alias'' est la commande raccourcie que vous passerez manuellement dans le [[:terminal]], et ''commande de votre alias'' est la [[:commande_shell|ligne de commande]], avec les éventuelles options et paramètres que le système devra comprendre (conserver les guillemets simples ''%%'%%''). |
| |
| |
| Il est également possible d'utiliser des guillemets doubles ''"'' comme ceci : | Il est également possible d'utiliser des guillemets doubles ''"'' comme ceci : |
| <file> | <code bash> |
| alias nom_de_votre_alias="commande de votre alias" | alias nom_de_votre_alias="commande de votre alias" |
| </file> | </code> |
| Ceci peut être utile si votre commande contient des guillemets simples. Mais à l'inverse attention dans ce cas à ce que votre commande elle-même ne contienne pas des guillemets doubles, sans quoi il faudra les échapper (en les précédant de ''\''). | Ceci peut être utile si votre commande contient des guillemets simples. Mais à l'inverse attention dans ce cas à ce que votre commande elle-même ne contienne pas des guillemets doubles, sans quoi il faudra les échapper (en les précédant de ''\''). |
| |
| <note important> | <note important> |
| Pour que vos **alias** soient pris en compte après ajout dans le fichier ''.bash_aliases'', on peut soit relancer le [[:terminal]], soit saisir la commande : | Pour que vos **alias** soient pris en compte après ajout dans le fichier ''.bash_aliases'', on peut soit relancer le [[:terminal]], soit saisir la commande : |
| <code>source ~/.bashrc</code> | <code bash>source ~/.bashrc</code> |
| </note> | </note> |
| |
| Vous trouverez de nombreux [[#exemples]] d'**alias** en parcourant le [[:Web]] (ainsi que sur la page //[[:Commandes pratiques]]//), 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 [[#exemples]] d'**alias** en parcourant le [[:Web]] (ainsi que sur la page //[[:Commandes pratiques]]//), 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> | <code bash> |
| alias update='sudo apt update && sudo apt upgrade && sudo snap refresh && sudo flatpak update' | alias update='sudo apt update && sudo apt upgrade && sudo snap refresh && sudo flatpak update' |
| </file> | </code> |
| il vous suffira alors de taper dans un [[:terminal]] : | il vous suffira alors de taper dans un [[:terminal]] : |
| <code>update</code> | <code>update</code> |
| |
| Si besoin, la commande : | Si besoin, la commande : |
| <code>sudo !!</code> | <code bash>sudo !!</code> |
| donne ponctuellement et rapidement les privilèges requis pour la commande précédemment entrée. | donne ponctuellement et rapidement les privilèges requis pour la commande précédemment entrée. |
| |
| La déclaration d'**alias** ne fige pas nécessairement la commande prédéfinie : on peut passer une commande déclarée par un alias -- comme mentionné précédemment -- et ajouter à celui-ci des paramètre qui seront simplement ajouter à la suite de la commande originale pour son interprétation.\\ | La déclaration d'**alias** ne fige pas nécessairement la commande prédéfinie : on peut passer une commande déclarée par un alias -- comme mentionné précédemment -- et ajouter à celui-ci des paramètre qui seront simplement ajouter à la suite de la commande originale pour son interprétation.\\ |
| Par exemple avec : | Par exemple avec : |
| <file>alias sai='sudo apt install'</file> | <code bash>alias sai='sudo apt install'</code> |
| Saisir : | Saisir : |
| <code>sai nom_programme</code> | <code bash>sai nom_programme</code> |
| installera le programme souhaité. | installera le programme souhaité. |
| |
| </code> | </code> |
| Pour que ce soit possible, ajouter dans les **alias** :((source : [[https://askubuntu.com/a/22043/385361]])) | Pour que ce soit possible, ajouter dans les **alias** :((source : [[https://askubuntu.com/a/22043/385361]])) |
| <file - ~/.bash_aliases> | <code bash> |
| sudo='sudo ' | sudo='sudo ' |
| </file> | </code> |
| |
| ==== Appeler un script ==== | ==== Appeler un script ==== |
| |
| Si vous avez un [[:script]] [[:bash]] mais qu'il ne se trouve pas dans un [[:chemins|chemin]] correspondant au ''[[:variables_d_environnement#variables_liees_aux_emplacements_de_fichiers|$PATH]]'', il est possible de l'appeler via un **alias**. Par exemple | Si vous avez un [[:script]] [[:bash]] mais qu'il ne se trouve pas dans un [[:chemins|chemin]] correspondant au ''[[:variables_d_environnement#variables_liees_aux_emplacements_de_fichiers|$PATH]]'', il est possible de l'appeler via un **alias**. Par exemple |
| <file>alias monscript='bash -c ~/Documents/scripts/test/monscript.sh'</file> | <code bash>alias monscript='bash -c ~/Documents/scripts/test/monscript.sh'</code> |
| |
| ==== Ajouter un alias provisoirement ==== | ==== Ajouter un alias provisoirement ==== |
| |
| Par exemple, si vous voulez utiliser provisoirement un **alias** pour supprimer les copies de [[:paquet|paquets]] installés avec l'outil [[:APT]], vous pouvez saisir: | Par exemple, si vous voulez utiliser provisoirement un **alias** pour supprimer les copies de [[:paquet|paquets]] installés avec l'outil [[:APT]], vous pouvez saisir: |
| <code>alias sac='sudo apt clean'</code> | <code bash>alias sac='sudo apt clean'</code> |
| Jusqu'à la fermeture du [[:terminal]], la commande <code>sac</code>exécutera en fait un ''sudo [[:apt-cli|apt]] clean''. | Jusqu'à la fermeture du [[:terminal]], la commande <code>sac</code>exécutera en fait un ''sudo [[:apt-cli|apt]] clean''. |
| |
| |
| Pour retirer, et non [[#échapper un alias]], de la session du [[:terminal]] en cours, saisir | Pour retirer, et non [[#échapper un alias]], de la session du [[:terminal]] en cours, saisir |
| <code>unalias mon_alias</code> | <code bash>unalias mon_alias</code> |
| Pour reprendre l'[[#Ajouter un alias provisoirement|exemple précédent]] saisir | Pour reprendre l'[[#Ajouter un alias provisoirement|exemple précédent]] saisir |
| <code>unalias sac</code> | <code bash>unalias sac</code> |
| |
| ==== En cas d'homonymie avec les commandes système ==== | ==== En cas d'homonymie avec les commandes système ==== |
| |
| Avec : | Avec : |
| <file>alias commande_systeme='commande_systeme -option parametre'</file> | <code bash>alias commande_systeme='commande_systeme -option parametre'</code> |
| on peut utiliser la commande : | on peut utiliser la commande : |
| <code>env commande_systeme</code> | <code bash>env commande_systeme</code> |
| Ainsi, ''commande_systeme'' sera employée sans option ni paramètre. | Ainsi, ''commande_systeme'' sera employée sans option ni paramètre. |
| |
| |
| Exemple, vous avez créé cet **alias** : | Exemple, vous avez créé cet **alias** : |
| <code> | <code bash> |
| alias ping='ping -c 4' | alias ping='ping -c 4' |
| </code> | </code> |
| Et vous souhaitez lancer la commande ''[[man>ping]]'' sans les options définies par l'**alias**.\\ | Et vous souhaitez lancer la commande ''[[man>ping]]'' sans les options définies par l'**alias**.\\ |
| Pour cela il suffit de précéder la commande par le caractère d'échappement //antislash// ''\'', comme ceci : | Pour cela il suffit de précéder la commande par le caractère d'échappement //antislash// ''\'', comme ceci : |
| <code> | <code bash> |
| \ping | \ping |
| </code> | </code> |
| Les **[[https://www.gnu.org/software/bash/manual/html_node/Shell-Functions.html|fonctions bash]]** le permettent. Grâce à une fonction il est possible d'indiquer des arguments qui seront passés en fin de la commande / appel de la fonction.\\ | Les **[[https://www.gnu.org/software/bash/manual/html_node/Shell-Functions.html|fonctions bash]]** le permettent. Grâce à une fonction il est possible d'indiquer des arguments qui seront passés en fin de la commande / appel de la fonction.\\ |
| Par exemple | Par exemple |
| <file> | <code bash> |
| 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> | }</code> |
| 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''. | 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''. |
| |
| Exemple pour chercher toutes les connexions par [[:SSH]] : | Exemple pour chercher toutes les connexions par [[:SSH]] : |
| <code>hy ssh</code> | <code bash>hy ssh</code> |
| |
| <note important> | <note important> |
| |
| Il se peut que vos **alias** ne supportent pas l'[[:console#auto-complétion]] dans le cas de l'utilisation de la commande ''[[:apt-cli|apt]]''. Pour remédier à cela [[:tutoriel:comment_modifier_un_fichier|ajouter]] ce contenu au fichier ''.bashrc'', en considérant que votre **alias** est ''aptin'' pour ''sudo apt install'' (adapter ensuite à vos besoin) : | Il se peut que vos **alias** ne supportent pas l'[[:console#auto-complétion]] dans le cas de l'utilisation de la commande ''[[:apt-cli|apt]]''. Pour remédier à cela [[:tutoriel:comment_modifier_un_fichier|ajouter]] ce contenu au fichier ''.bashrc'', en considérant que votre **alias** est ''aptin'' pour ''sudo apt install'' (adapter ensuite à vos besoin) : |
| <file> | <code bash> |
| _apt_install_complete() { | _apt_install_complete() { |
| mapfile -t COMPREPLY < <(apt-cache --no-generate pkgnames "$2"); | mapfile -t COMPREPLY < <(apt-cache --no-generate pkgnames "$2"); |
| } | } |
| complete -F _apt_install_complete aptin</file> | complete -F _apt_install_complete aptin |
| | </code> |
| |
| <note tip>Il existe également une application **[[https://github.com/cykerway/complete-alias|complete-alias]]** qui fournit cette fonctionnalité.</note> | <note tip>Il existe également une application **[[https://github.com/cykerway/complete-alias|complete-alias]]** qui fournit cette fonctionnalité.</note> |