informatique:bash
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
informatique:bash [2020/07/02 13:17] – [Manipuler des nombres] alexis | informatique:bash [2024/11/25 14:46] (Version actuelle) – alexis | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
====== Bash ====== | ====== Bash ====== | ||
+ | <catlist informatique: | ||
<WRAP todo> | <WRAP todo> | ||
Étudier les liens suivants : | Étudier les liens suivants : | ||
- [[https:// | - [[https:// | ||
- | - [[http:// | ||
- [[http:// | - [[http:// | ||
- [[https:// | - [[https:// | ||
- [[http:// | - [[http:// | ||
- | - [[https:// | ||
- [[http:// | - [[http:// | ||
- [[https:// | - [[https:// | ||
- [[http:// | - [[http:// | ||
- | - [[http:// | ||
- | - [[http:// | ||
- [[http:// | - [[http:// | ||
- [[https:// | - [[https:// | ||
- [[http:// | - [[http:// | ||
+ | - [[https:// | ||
+ | - [[https:// | ||
+ | - [[https:// | ||
</ | </ | ||
- | |||
- | |||
- | |||
- | |||
- | ===== Variables d' | ||
- | Il est possible d' | ||
- | |||
- | <code bash> | ||
- | # Ajouter ou modifier une variable d' | ||
- | export < | ||
- | |||
- | # Supprimer une variable d' | ||
- | unset < | ||
- | |||
- | # Lancer une commande en modifiant localement la variable d' | ||
- | < | ||
- | </ | ||
- | |||
- | <WRAP alert> | ||
- | Dans certains contexte (//cron// par exemple), l' | ||
- | <code bash> | ||
- | # Version courte | ||
- | env -i < | ||
- | |||
- | # Version longue | ||
- | env --ignore-environment < | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
- | ===== Redirection ===== | ||
- | Les redirections permettent de stocker les sorties d'un programme dans un fichier. Si le fichier n' | ||
- | <code bash> | ||
- | # Le contenu du fichier est supprimé avant la redirection | ||
- | command > file | ||
- | |||
- | # Le contenu de la redirection est ajouté à la fin du fichier | ||
- | command >> file | ||
- | </ | ||
- | |||
- | Il est possible également de stocker la sortie d' | ||
- | <code bash> | ||
- | # On stocke seulement les erreurs | ||
- | command 2> error | ||
- | # On stocke la sortie standard et les erreurs dans des fichiers différents | ||
- | command 1> file 2> error | ||
- | # On stocke la sortie standard et les erreurs dans le même fichier | ||
- | command 2>&1 > file | ||
- | </ | ||
- | |||
- | Les redirections peuvent se faire n' | ||
- | <code bash> | ||
- | # Toutes les commandes suivantes sont équivalentes | ||
- | command arg1 arg2 > file | ||
- | command arg1 > file arg2 | ||
- | command > file arg1 arg2 | ||
- | > file command arg1 arg2 | ||
- | </ | ||
- | |||
- | ===== Expansion ===== | ||
- | L' | ||
- | <code bash> | ||
- | # Listage nommé | ||
- | # Création de fichier1, fichier3 et fichier8 | ||
- | touch fichier{1, | ||
- | |||
- | # Listage séquentiel | ||
- | # Création de fichier1, fichier2, fichier3 et fichier4 | ||
- | touch fichier{1..4} | ||
- | |||
- | # Listage séquentiel avec incrément | ||
- | # Création de fichier2, fichier4, fichier6 et fichier8 | ||
- | touch fichier{2..8..2} | ||
- | |||
- | # Listage séquentiel avec incrément et remplissage | ||
- | # Création de fichier02, fichier04, fichier06, fichier08 et fichier10 | ||
- | touch fichier{02..10..2} | ||
- | </ | ||
- | |||
- | Ce comportement fonctionne aussi avec des lettres | ||
- | <code bash> | ||
- | # Listage nommé | ||
- | # Création de fichierA, fichierC et fichierQ | ||
- | touch fichier{A, | ||
- | |||
- | # Listage séquentiel | ||
- | # Création de fichierA, fichierB, fichierC et fichierD | ||
- | touch fichier{A..D} | ||
- | |||
- | # Listage séquentiel avec incrément | ||
- | # Création de fichierA, fichierC et fichierE | ||
- | touch fichier{A..E..2} | ||
- | </ | ||
- | |||
- | Ce comportement est récursif | ||
- | <code bash> | ||
- | # Création de fichier0, fichier4, fichier5, fichier6, fichier7, fichier8, fichier10, fichier20 et fichier30 | ||
- | touch fichier{{0..30..10}, | ||
- | </ | ||
- | |||
- | ===== Historique de commande ===== | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '': | ||
- | * '' | ||
- | * '': | ||
- | * '' | ||
- | |||
- | <code bash> | ||
- | # Lancement d'une commande de l' | ||
- | !120 | ||
- | |||
- | # Affichage d'une commande de l' | ||
- | !120:p | ||
- | |||
- | # Affichage d'une commande modifiée de l' | ||
- | !120: | ||
- | </ | ||
- | ===== Manipuler un tableau ===== | ||
- | * Déclaration | ||
- | <code bash> | ||
- | # déclaration implicite élément par élément | ||
- | tab[0]=valeur_1 | ||
- | tab[1]=valeur_2 | ||
- | tab[2]=valeur_3 | ||
- | |||
- | # déclaration implicite de l' | ||
- | tab=(valeur_1 valeur_2 valeur_3) | ||
- | |||
- | # déclaratin explicite de l' | ||
- | declare -a tab=(valeur_1 valeur_2 valeur_3) | ||
- | </ | ||
- | |||
- | * Ajouter un élément | ||
- | <code bash> | ||
- | # Au début du tableau | ||
- | tab=(valeur_0 ${tab[@]}) | ||
- | |||
- | # À la fin du tableau | ||
- | tab=(${tab[@]} valeur_4) | ||
- | </ | ||
- | |||
- | * Parcourir les éléments séquentiellement | ||
- | <code bash> | ||
- | for i in " | ||
- | do | ||
- | # faire quelque chose | ||
- | done | ||
- | </ | ||
- | |||
- | * Récupérer le nombre d' | ||
- | <code bash> | ||
- | echo ${#tab[@]} | ||
- | </ | ||
- | |||
- | * [[http:// | ||
- | |||
- | ===== Manipuler une chaîne de charactères ===== | ||
- | * Ajout d'une valeur par défaut | ||
- | <code bash> | ||
- | ${chaine: | ||
- | </ | ||
- | |||
- | * Extraction d'une sous-chaîne | ||
- | <code bash> | ||
- | # À partir d'une position jusqu' | ||
- | ${chaine: | ||
- | |||
- | # À partir d'une position pour une longueur donnée | ||
- | ${chaine: | ||
- | </ | ||
- | |||
- | * Conversion en tableau | ||
- | <code bash> | ||
- | tableau=($chaine) | ||
- | </ | ||
- | |||
- | * Extraire l' | ||
- | <code bash> | ||
- | extension=${chaine## | ||
- | </ | ||
- | |||
- | * Substituer une sous-chaîne par une autre | ||
- | <code bash> | ||
- | # Remplacement du premier points par un espace (attention à l' | ||
- | ${chaine/./ } | ||
- | |||
- | # Remplacement des points par des espaces (attention à l' | ||
- | ${chaine// | ||
- | </ | ||
- | |||
- | * Extraire une sous-chaîne par rapport à un séparateur | ||
- | <code bash> | ||
- | # Extraire avant le séparateur (|) | ||
- | ${chaine%|*} | ||
- | |||
- | # Extraire après le séparateur (|) | ||
- | ${chaine# | ||
- | </ | ||
- | |||
- | * Changer la casse | ||
- | <code bash> | ||
- | # Convertir le premier caractère en majuscule | ||
- | ${chaine^} | ||
- | |||
- | # Convertir tous les caractères en majuscule | ||
- | ${chaine^^} | ||
- | |||
- | # Convertir le premier caractère en minuscule | ||
- | ${chaine,} | ||
- | |||
- | # Convertir tous les caractères en minuscule | ||
- | ${chaine,,} | ||
- | |||
- | # Inverser la casse du premier caractère | ||
- | ${chaine~} | ||
- | |||
- | # Inverser la casse de tous les caractères | ||
- | ${chaine~~} | ||
- | </ | ||
- | |||
- | * [[http:// | ||
- | |||
- | ===== Manipuler des nombres ===== | ||
- | |||
- | * Additions (([[https:// | ||
- | <code bash> | ||
- | # Addition d' | ||
- | echo $((i + 3)) | ||
- | |||
- | # Incrémentation d'une variable | ||
- | ((i++)) | ||
- | |||
- | # Addition de réels | ||
- | # Ce n'est pas supporté directement. Il faut passer par d' | ||
- | echo $(awk "BEGIN {print $i+3; exit}" | ||
- | </ | ||
- | |||
- | * Changer de base | ||
- | <code bash> | ||
- | # Pour changer en base 10 | ||
- | echo $((10#$i)) | ||
- | </ | ||
- | <WRAP info> | ||
- | Un nombre avec des 0 devant est considéré comme un nombre en octal. Lorsqu' | ||
- | </ | ||
- | |||
- | |||
- | * Afficher une séquence | ||
- | <code bash> | ||
- | # 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 | ||
- | </ | ||
- | <code bash> | ||
- | # Cette méthode n'est à utiliser qu' | ||
- | # 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' | ||
- | <code bash> | ||
- | # Conversion du premier délimiteur (" | ||
- | tableau=(${chaine/ | ||
- | |||
- | # Conversion de tous les délimiteurs (" | ||
- | tableau=(${chaine// | ||
- | |||
- | # Les parenthèses indiquent qu'il faut traiter le contenu comme un tableau | ||
- | </ | ||
- | |||
- | ===== Raccourcis clavier ===== | ||
- | {{ : | ||
- | [[http:// | ||
- | |||
- | ===== Récupérer le retour de la dernière commande ===== | ||
- | <code bash> | ||
- | echo $? | ||
- | </ | ||
- | |||
- | ===== Fonction de conversion des pages de manuel ===== | ||
- | Dans le fichier '' | ||
- | <code bash> | ||
- | 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' | ||
- | <code bash> | ||
- | # Notation en ascii | ||
- | echo -e " | ||
- | |||
- | # Notation en octal | ||
- | echo -e " | ||
- | |||
- | # Notation en hexa-décimal | ||
- | echo -e " | ||
- | </ | ||
- | |||
- | 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' | ||
- | ^ Code ^ Effet ^ Code ^ Effet ^ | ||
- | | 1 | Mettre en gras | 0 | Annuler tous les effets (('' | ||
- | | 2 | Réduire la luminosité | ||
- | | 3 | Mettre en italique | ||
- | | 4 | Souligner avec un trait simple | ||
- | | 5 | Faire clignoter | ||
- | | 7 | Inverser les couleurs | ||
- | | 8 | Cacher | ||
- | | 9 | Barrer | ||
- | | 21 | Souligner avec un trait double | ||
- | | 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 | ||
- | | 36 | Texte cyan | 46 | Fond cyan | | ||
- | | 37 | Texte gris clair | 47 | Fond gris clair | | ||
- | | 39 | Texte par défaut | ||
- | | 90 | Texte 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' | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | |||
- | Voici un script qui permet d' | ||
- | <code bash bash-color.sh> | ||
- | # | ||
- | # 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=" | ||
- | echo -en " | ||
- | done | ||
- | echo | ||
- | done | ||
- | echo | ||
- | done | ||
- | # Reset | ||
- | echo -e " | ||
- | </ | ||
- | ===== Liens externes ===== | ||
- | * [[https:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | |||
- | |||
- | |||
- |
informatique/bash.1593721021.txt.gz · Dernière modification : 2020/07/02 13:17 de alexis