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 | ||
| bash [Le 25/05/2014, 08:26] moissan [BASH : Bourne Again Shell] | bash [Le 01/12/2024, 14:09] (Version actuelle) Amiralgaby tag brouillon et bionic enlevé. La page n'est plus en état de brouillon | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag>shell BROUILLON}} | + | {{tag>shell Jammy}} | 
| ---- | ---- | ||
| Ligne 5: | Ligne 5: | ||
| ====== BASH : Bourne Again Shell ====== | ====== BASH : Bourne Again Shell ====== | ||
| - | BASH est un [[shell]]. | + | BASH est un [[shell]]. C'est le shell de base utilisé 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]], le shell le plus orienté pour l'interactivité avec l'utilisateur. | 
| ===== Introduction / Utilisation ===== | ===== Introduction / Utilisation ===== | ||
| - | Commencer par le [[tutoriel:script_shell|tutoriel d'introduction aux scripts shell]] | + | //Voir l'utilisation des [[commande_shell|commandes et lignes de commandes]] que les shells comme **bash** peuvent interpréter// | 
| ===== 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 ?" | ||
| Ligne 36: | Ligne 40: | ||
| </code> | </code> | ||
| - | Plus d'explication [[http://www.linuxquestions.org/questions/programming-9/bash-command-separatorarguments-separator-602542/#post2971876|en anglais]]. | + | //Pour plus d'explication, voir [[wpfr>Input_Field_Separators|IFS (Wikipédia)]]// **(fr)** | 
| ==== Une meilleure gestion de l'historique ==== | ==== Une meilleure gestion de l'historique ==== | ||
| Ligne 42: | Ligne 46: | ||
| 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 : | + | <code> | 
| - | <code> | + | |
| "\e[A": history-search-backward | "\e[A": history-search-backward | ||
| "\e[B": history-search-forward</code> | "\e[B": history-search-forward</code> | ||
| - | [[:tutoriel:comment_modifier_un_fichier|ouvrez le fichier]] ** ~/.bashrc ** et | + | [[:tutoriel:comment_modifier_un_fichier|ouvrez le fichier]] ** ~/.bashrc ** et ajoutez-y : | 
| - | ajoutez-y : | + | <code> | 
| - | <code> | + | |
| shopt -s histappend | shopt -s histappend | ||
| PROMPT_COMMAND='history -a'</code> | PROMPT_COMMAND='history -a'</code> | ||
| - | <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. | ||
| + | |||
| + | //Voir [[https://linuxfr.org/forums/programmation-shell/posts/recherche-d-une-fonctionnalite-zsh-bash#comment-1905228|Recherche d'une fonctionnalité zsh / bash]] réponse ''Ctrl+u'' puis ''Ctrl+y''// | ||
| + | |||
| + | =====Les fichiers de configuration BASH===== | ||
| + | ====~/.bashrc==== | ||
| + | Ce fichier 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 faire //(Ctrl + F)// pour rechercher dans le fichier. | ||
| + | remplacer la première occurrence ou toutes occurrences par cela: | ||
| + | <code bash>PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n\$ '</code> | ||
| + | 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==== | ||
| + | Ce fichier permet de séparer le script ''.bashrc'' des [[alias]]. | ||
| + | Vous pouvez mettre des variables dedans qui seront chargées à chaque lancement de terminal. | ||
| + | <note tip> | ||
| + | Vous pouvez 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==== | ||
| + | Hyper utile quand vous utilisez vos flèches pour rechercher une commande. | ||
| + | vous pouvez voir le fichier avec la commande | ||
| + | history | ||
| + | |||
| + | Pour rechercher bien plus rapidement utilisez (Ctrl+R) dans le terminal puis entrez la chaîne cherchée. //Utilisez plusieurs fois (Ctrl + r) et non pas les flèches pour remonter les commandes qui match//. | ||
| + | |||
| + | ====~/.profile==== | ||
| + | Comme indiqué dans le fichier il n'est lu que si ''~/.bash_profile'' ou ''~/.bash_login'' n'existe pas. | ||
| + | il permet de prendre en compte de nouveau chemin pour la variable d'environnement PATH. | ||
| + | |||
| + | Par exemple si vous créez un programme, il vous suffira de le mettre dans un nouveau dossier nommé "bin" : | ||
| + | mkdir ~/bin | ||
| + | et d'y mettre vos programmes | ||
| + | |||
| + | ===== Voir aussi ===== | ||
| + | * **(en)** [[https://www.gnu.org/software/bash/|site officiel de bash]] | ||
| + | * **(fr)** [[variables_d_environnement|Les variables d'environnement]] | ||
| + | * **(fr)** [[tutoriel:script_shell|Introduction aux scripts shell]] | ||
| + | * **(fr)** [[wpfr>Bourne-Again_shell]] | ||
| ---- | ---- | ||
| - | //Contributeur(s) : [[utilisateurs:Id2ndR]]// | + | //Contributeur(s) : [[utilisateurs:Id2ndR]], [[:utilisateurs:Amiralgaby|Amiralgaby]]// |