Masquer les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
![]() |
1.1 | 1 | {{toc/}} |
| 2 | |||
| 3 | == Présentation == | ||
![]() |
2.1 | 4 | |
| 5 | **Bash** (//Bourne Again SHell//) est le shell par défaut sur la majorité des distributions GNU/Linux. | ||
![]() |
1.1 | 6 | C'est à la fois un interpréteur de commandes interactif et un langage de script puissant. |
| 7 | |||
![]() |
2.1 | 8 | ----- |
![]() |
1.1 | 9 | |
| 10 | == Principes de base == | ||
| 11 | |||
![]() |
2.1 | 12 | * Exécution de commandes : ##ls##, ##pwd##, ##echo##, etc. |
| 13 | * Variables simples : ##nom="John"## | ||
| 14 | * Substitution : ##$(commande)## | ||
| 15 | * Redirection : ##>##, ##>>##, ##<##, ##~|## | ||
| 16 | * Opérateurs conditionnels : ##if##, ##&&##, ##~|~|## | ||
![]() |
1.1 | 17 | |
![]() |
2.1 | 18 | ----- |
| 19 | |||
![]() |
1.1 | 20 | == Exemple simple == |
![]() |
2.1 | 21 | |
![]() |
1.1 | 22 | {{code language="bash"}} |
| 23 | #!/bin/bash | ||
| 24 | |||
| 25 | echo "Bonjour $USER" | ||
| 26 | echo "Aujourd'hui nous sommes le $(date)" | ||
| 27 | {{/code}} | ||
| 28 | |||
![]() |
2.1 | 29 | ----- |
![]() |
1.1 | 30 | |
| 31 | == Scripts Bash == | ||
| 32 | |||
![]() |
2.1 | 33 | Un script Bash est un fichier texte commençant par ###!/bin/bash##. Il est exécutable et permet d'automatiser des tâches. |
![]() |
1.1 | 34 | |
![]() |
2.1 | 35 | * Donner les droits : ##chmod +x monscript.sh## |
| 36 | * Lancer : ##./monscript.sh## | ||
| 37 | * Vérifier la syntaxe sans exécuter : ##bash -n monscript.sh## | ||
![]() |
1.1 | 38 | |
![]() |
2.1 | 39 | Pour un script qui fait autre chose qu'afficher du texte, commencer par le mode strict : |
| 40 | |||
| 41 | {{code language="bash"}} | ||
| 42 | set -euo pipefail | ||
| 43 | {{/code}} | ||
| 44 | |||
| 45 | * ##-e## : arrêt à la première commande en échec | ||
| 46 | * ##-u## : erreur si une variable non définie est utilisée | ||
| 47 | * ##-o pipefail## : un échec dans un tube n'est plus masqué | ||
| 48 | |||
| 49 | ----- | ||
| 50 | |||
![]() |
1.1 | 51 | == Structures de contrôle == |
| 52 | |||
![]() |
2.1 | 53 | **if/else** : |
![]() |
1.1 | 54 | |
![]() |
2.1 | 55 | {{code language="bash"}} |
| 56 | if [ "$USER" = "root" ]; then | ||
| 57 | echo "Attention, vous êtes root !" | ||
| 58 | else | ||
| 59 | echo "Utilisateur normal." | ||
| 60 | fi | ||
| 61 | {{/code}} | ||
![]() |
1.1 | 62 | |
![]() |
2.1 | 63 | **Boucles** : |
| 64 | |||
| 65 | {{code language="bash"}} | ||
| 66 | for f in *.txt; do | ||
| 67 | echo "Fichier : $f" | ||
| 68 | done | ||
| 69 | {{/code}} | ||
| 70 | |||
| 71 | ----- | ||
| 72 | |||
![]() |
1.1 | 73 | == Fichiers de configuration == |
| 74 | |||
![]() |
2.1 | 75 | * ##~~/.bashrc## : exécuté à chaque shell interactif |
| 76 | * ##~~/.bash_profile## : à la connexion | ||
| 77 | * ##/etc/bash.bashrc## : global à tous les utilisateurs | ||
![]() |
1.1 | 78 | |
![]() |
2.1 | 79 | Voir aussi [[Oh My Bash>>doc:Wiki Batcave John.Infrastructure.Oh My Bash.WebHome]], utilisé sur le serveur principal. |
| 80 | |||
| 81 | ----- | ||
| 82 | |||
![]() |
1.1 | 83 | == Liens internes == |
| 84 | |||
![]() |
2.1 | 85 | * [[Retour à la section Tutos Linux>>doc:Wiki Batcave John.TutosLinux.WebHome]] |
| 86 | * [[Variables d’environnement>>doc:Wiki Batcave John.TutosLinux.Variables.WebHome]] | ||
| 87 | * [[Raccourcis Bash>>doc:Wiki Batcave John.TutosLinux.Raccourcis.WebHome]] | ||
| 88 | * [[Scripts perso>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]] | ||
| 89 | |||
![]() |
1.1 | 90 | == Ressources externes == |
| 91 | |||
![]() |
2.1 | 92 | * [[Advanced Bash Scripting Guide>>https://tldp.org/LDP/abs/html/]] |
| 93 | * [[ShellCheck>>https://www.shellcheck.net]] |
