Ceci est une ancienne révision du document !
Table des matières
Bash
- Bonnes pratiques
- Convertir une chaîne de caractères en tableau
- Expansion
- Fonction de conversion des pages de manuel
- Formatage du texte
- Historique de commande
- Liens
- Manipuler des nombres
- Manipuler une chaîne de charactères
- Manipuler un tableau
- Raccourcis clavier
- Redirection
- Récupérer le retour de la dernière commande
- Variables d'environnement
Étudier les liens suivants :
Manipuler des nombres
# Addition d'entiers echo $((i + 3)) # Incrémentation d'une variable ((i++)) # Addition de réels # Ce n'est pas supporté directement. Il faut passer par d'autres outils (awk, python, ...). echo $(awk "BEGIN {print $i+3; exit}")
- Changer de base
# Pour changer en base 10 echo $((10#$i))
Un nombre avec des 0 devant est considéré comme un nombre en octal. Lorsqu'il sera utilisé pour faire des additions, les résultats ne seront pas ceux attendus. Dans ce cas, il faut lire le nombre en décimal, ce qui as pour effet de supprimer les 0.
- Afficher une séquence
# Affiche 1 2 3 4 5 6 7 8 9 10 for i in {1..10}; do echo $i done # Affiche 01 02 03 04 05 06 07 08 09 10 for i in {01..10}; do echo $i done
# Cette méthode n'est à utiliser qu'avec une version de Bash antérieure à la 3.5 # Affiche 1 2 3 4 5 6 7 8 9 10 for i in `seq 1 10`; do echo $i done
Convertir une chaîne de caractères en tableau
Pour faire cela, il faut utiliser un délimiteur. Il faut faire attention à ce que la chaîne de caractères ne comporte pas d'espace sinon cette technique n'est pas valable.
# Conversion du premier délimiteur ("|") en " " tableau=(${chaine/|/ }) # Conversion de tous les délimiteurs ("|") en " " tableau=(${chaine//|/ }) # Les parenthèses indiquent qu'il faut traiter le contenu comme un tableau
Raccourcis clavier
Récupérer le retour de la dernière commande
echo $?
Fonction de conversion des pages de manuel
Dans le fichier .bashrc
, il faut ajouter la fonction suivante :
man2pdf () { if whatis ${1} > /dev/null; then man -Tpdf ${1} > ${1}.pdf fi }
Formatage du texte
Pour formater du texte, il faut utiliser des séquences d'échappement. Ces séquences d'échappement sont composées du caractère d'échappement (représenté par <ESC>
) suivi par une série de nombres séparés par des points-virgules et terminées par la lettre m
. Voici quelques exemples :
# Notation en ascii echo -e "\e[4;31;100mHello world\e[m" # Notation en octal echo -e "\033[4;31;100mHello world\033[m" # Notation en hexa-décimal echo -e "\x1B[4;31;100mHello world\x1B[m"
Chaque nombre a une fonction particulière et peut être combiné avec les autres. Cependant, il y a des combinaisons qui n'ont aucun sens.
Ajout d'attributs | Suppression d'attributs | ||
---|---|---|---|
Code | Effet | Code | Effet |
1 | Mettre en gras | 0 | Annuler tous les effets 3) |
2 | Réduire la luminosité | 22 | Annuler la réduction de luminosité |
3 | Mettre en italique | 23 | Annuler la mise en italique |
4 | Souligner avec un trait simple | 24 | Annuler le soulignement (simple ou double) |
5 | Faire clignoter | 25 | Annuler le clignotement |
7 | Inverser les couleurs | 27 | Annuler l'inversion des couleurs |
8 | Cacher | 28 | Annuler le cachement |
9 | Barrer | 29 | Annuler le barrement |
21 | Souligner avec un trait double | 55 | Annuler le surlignement |
53 | Surligner avec un trait simple | ||
Couleur du texte | Couleur du fond | ||
Code | Effet | Code | Effet |
30 | Texte noir | 40 | Fond noir |
31 | Texte rouge | 41 | Fond rouge |
32 | Texte vert | 42 | Fond vert |
33 | Texte jaune | 43 | Fond jaune |
34 | Texte bleu | 44 | Fond bleu |
35 | Texte violet | 45 | Fond violet |
36 | Texte cyan | 46 | Fond cyan |
37 | Texte gris clair | 47 | Fond gris clair |
39 | Texte par défaut | 49 | Fond par défaut |
90 | Texte gris foncé | 100 | Fond gris foncé |
91 | Texte rouge clair | 101 | Fond rouge clair |
92 | Texte vert clair | 102 | Fond vert clair |
93 | Texte jaune clair | 103 | Fond jaune clair |
94 | Texte bleu clair | 104 | Fond bleu clair |
95 | Texte violet clair | 105 | Fond violet clair |
96 | Texte cyan clair | 106 | Fond cyan clair |
97 | Texte blanc | 107 | Fond blanc |
Pour plus d'informations, voir les pages suivantes :
Voici un script qui permet d'afficher l'ensemble des combinaisons décrites plus haut à l'exception des suppressions d'attributs :
- bash-color.sh
#!/usr/bin/env bash # Show all the colors of the rainbow, should be run under bash for STYLE in $(seq 0 9; echo 21 53); do for FG in $(seq 30 39; seq 90 97); do for BG in $(seq 40 49; seq 100 107); do CTRL="${STYLE};${FG};${BG}" echo -en "\e[${CTRL}m${CTRL}\e[m " done echo done echo done # Reset echo -e "\e[m"