| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| bash [Le 25/05/2014, 08:26] – [BASH : Bourne Again Shell] moissan | bash [Le 29/12/2025, 13:28] (Version actuelle) – ancienne révision (Le 28/11/2025, 12:24) restaurée - voir recommandations krodelabestiole |
|---|
| {{tag>shell BROUILLON}} | {{tag>shell Jammy}} |
| |
| ---- | ====== Bash : Bourne-Again Shell ====== |
| | |
| ====== BASH : Bourne Again Shell ====== | |
| |
| BASH est un [[shell]]. | **[[wpfr>Bourne-Again_shell|Bash]]** est un //[[:shell]]//, soit un interpréteur de ligne de commande : il permet de "discuter" avec l'ordinateur, en [[:commande shell|ligne de commande]]. Sur Ubuntu c'est le //shell// utilisé par défaut dans le [[:terminal]]. Il est bien évidemment libre, sous licence GPL.\\ |
| | La plupart des scripts que vous verrez sur la documentation comporte un //[[wpfr>shebang]]// ''#!/bin/bash'', votre système utilisera donc **Bash** pour interpréter les commandes. |
| |
| http://abs.traduc.org/abs-fr/ | **Bash** n'est pas totalement compatible avec **[[:ZSH]]**, un shell plus orienté pour l'interactivité avec l'utilisateur. |
| |
| ===== Introduction / Utilisation ===== | ===== Introduction / Utilisation ===== |
| |
| Commencer par le [[tutoriel:script_shell|tutoriel d'introduction aux scripts shell]] | <note tip>Voir l'utilisation des [[:commande_shell|commandes et lignes de commandes]] que les //shells// comme **Bash** peuvent interpréter.</note> |
| |
| ===== Utilisation avancée ===== | ===== Utilisation avancée ===== |
| |
| | ==== Création de scripts shell ==== |
| | |
| | * Commencer par le [[:tutoriel:script_shell|tutoriel d'introduction aux scripts shell]] ou [[:projets:ecole:scripting:initiation_au_shell|Initiation au shell (cours fait par des Ubunteros)]] |
| | * [[https://abs.traduc.org/abs-fr/|Guide avancé d'écriture des scripts Bash]] |
| | |
| ==== Séparateur de mot ==== | ==== Séparateur de mot ==== |
| |
| L'IFS est le ou les caractères qui servent de séparateur. Voici un bout de code pour comprendre par l'exemple. | L'IFS est le ou les caractères qui servent de séparateur. Voici un bout de code pour comprendre par l'exemple : |
| |
| <code> | <code bash> |
| phrase="plusieurs mots... | phrase="plusieurs mots... |
| sur une ligne ?" | sur une ligne ?" |
| </code> | </code> |
| |
| Plus d'explication [[http://www.linuxquestions.org/questions/programming-9/bash-command-separatorarguments-separator-602542/#post2971876|en anglais]]. | <note>Pour plus d'explication, voir [[wpfr>Input_Field_Separators|IFS]] sur Wikipédia.</note> |
| |
| ==== Une meilleure gestion de l'historique ==== | ==== Une meilleure gestion de l'historique ==== |
| |
| Par défaut, toutes les commandes tapées dans un terminal sont enregistrées dans votre historique et vous pouvez les retrouver en appuyant sur les touches fléchées « haut » et « bas ». La façon dont vous parcourez l'historique peut être améliorée de façon à ce que si vous tapez un début de commande avant votre recherche, vous puissiez accéder uniquement aux entrées commençant par ce que vous venez de taper. Vous me suivez ? | Par défaut, toutes les commandes tapées dans un terminal sont enregistrées dans votre historique et vous pouvez les retrouver en appuyant sur les touches fléchées //haut// ''↑'' et //bas// ''↓''. La façon dont vous parcourez l'historique peut être améliorée de façon à ce que si vous tapez un début de commande avant votre recherche, vous puissiez accéder uniquement aux entrées commençant par ce que vous venez de taper. Vous me suivez ? |
| |
| [[:tutoriel:comment_modifier_un_fichier|ouvrez le fichier]] ** ~/.inputrc ** et | [[:tutoriel:comment_modifier_un_fichier|Ouvrez le fichier]] ''~/.inputrc'' (ou créer-le s'il n'existe pas) et ajoutez-y : |
| ajoutez-y : | <file> |
| <code> | |
| "\e[A": history-search-backward | "\e[A": history-search-backward |
| "\e[B": history-search-forward</code> | "\e[B": history-search-forward |
| | </file> |
| |
| [[:tutoriel:comment_modifier_un_fichier|ouvrez le fichier]] ** ~/.bashrc ** et | [[:tutoriel:comment_modifier_un_fichier|Ouvrez le fichier]] ''~/.bashrc'' et ajoutez-y : |
| ajoutez-y : | <file> |
| <code> | |
| shopt -s histappend | shopt -s histappend |
| PROMPT_COMMAND='history -a'</code> | PROMPT_COMMAND='history -a' |
| | </file> |
| |
| <note help> | ==== Fonctionnalité "push-line", édition d'une deuxième ligne puis revenir à la première ==== |
| Apparemment pas de fichier .inputrc dans le dossier personnel sous 12.04, faut-il le créer ? | |
| | La fonctionnalité ''push-line'' sert à éditer une deuxième ligne de code en effaçant la première que vous éditiez et en la gardant en mémoire pour pouvoir la restaurer après avoir exécuter la deuxième commande : ''Ctrl''+''U'' puis ''Ctrl''+''Y''. |
| | |
| | <note>Voir [[https://linuxfr.org/forums/programmation-shell/posts/recherche-d-une-fonctionnalite-zsh-bash#comment-1905228|Recherche d'une fonctionnalité zsh / bash]].</note> |
| | |
| | ===== Les fichiers de configuration Bash ===== |
| | |
| | ==== ~/.bashrc ==== |
| | |
| | Le fichier ''~/.bashrc'' permet la configuration lors du lancement du programme **Bash**. |
| | |
| | Il est possible de personnaliser le prompteur : |
| | dans votre éditeur de texte préférer chercher ''PS1''((sigle de prompt shell 1)). |
| | |
| | Avec [[:gedit]] vous pouvez presser ''Ctrl''+''F'' pour rechercher dans le fichier. |
| | Remplacer la première occurrence ou toutes occurrences par cela : |
| | <file>PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n\$ '</file> |
| | En supprimant ''\h'' (nom d'hôte) il n'y a plus le nom de votre ordinateur. |
| | En ajoutant ''\n'' (saut de ligne) avant le dollar le curseur ira sur une nouvelle ligne. |
| | |
| | Il y a beaucoup plus de personnalisation possible mais ne nous étalons pas. |
| | |
| | ==== ~/.bash_aliases ==== |
| | |
| | Le fichier ''~/.bash_aliases'' permet de séparer le script ''.bashrc'' des [[:alias]].\\ |
| | Vous pouvez y définir des variables qui seront chargées à chaque lancement de terminal. |
| | |
| | <note tip> |
| | Vous pouvez par exemple mettre de la couleur dans les pages du man plutôt que d'avoir du blanc. |
| | [[https://blog.shevarezo.fr/post/2018/01/25/comment-avoir-couleurs-pages-man-linux|ce site vous dit comment faire]].\\ Plusieurs couleurs sont disponibles via l'utilisation de code couleurs : [[https://misc.flogisoft.com/bash/tip_colors_and_formatting|les choix de couleurs]]. |
| </note> | </note> |
| | |
| | ==== ~/.bash_history ==== |
| | |
| | ''~/.bash_history'' est le fichier consulté lorsqu'on utilise les flèches //haut// ''↑'' et //bas// ''↓'' pour rechercher une commande.\\ |
| | On peut afficher le contenu du fichier avec la commande |
| | history |
| | |
| | Pour rechercher plus rapidement, utilisez ''Ctrl''+''R'' dans le terminal puis entrez le texte recherché.\\ Utilisez plusieurs fois ''Ctrl''+''R'' et non pas les flèches pour retrouver les commandes qui correspondent. |
| | |
| | ==== ~/.profile ==== |
| | |
| | Comme indiqué dans le fichier ''~/.profile'', celui-ci n'est lu que si ''~/.bash_profile'' ou ''~/.bash_login'' n'existe pas. |
| | |
| | Il est interprété à chaque connexion de l'utilisateur (au démarrage de la session), contrairement à ''[[#~/.bashrc]]'' qui est interprété à chaque lancement de **Bash** (à chaque ouverture d'un onglet du [[:terminal]] par ex.). |
| | |
| | Il permet entre autre de définir de nouveaux [[:chemins]] pour la [[:variables_d_environnement|variable d'environnement]] ''[[:variables_d_environnement#variables_liees_aux_emplacements_de_fichiers|$PATH]]''. |
| | |
| | ===== Voir aussi ===== |
| | |
| | * **(//en//)** [[https://www.gnu.org/software/bash/|site officiel de Bash]] |
| | * [[:variables_d_environnement|Les variables d'environnement]] |
| | * [[:tutoriel:script_shell|Introduction aux scripts shell]] |
| | * [[wpfr>Bourne-Again_shell]] |
| |
| ---- | ---- |
| |
| //Contributeur(s) : [[utilisateurs:Id2ndR]]// | //Contributeur(s) : [[:utilisateurs:Id2ndR]], [[:utilisateurs:Amiralgaby]]// |