Outils pour utilisateurs

Outils du site


informatique:bash

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:bash [2024/11/25 14:25] alexisinformatique:bash [2024/11/25 14:46] (Version actuelle) alexis
Ligne 18: Ligne 18:
   - [[https://betterdev.blog/minimal-safe-bash-script-template/|Minimal safe Bash script template | Better Dev]]   - [[https://betterdev.blog/minimal-safe-bash-script-template/|Minimal safe Bash script template | Better Dev]]
 </WRAP> </WRAP>
- 
- 
-===== Historique de commande ===== 
-  * ''!!'' permet de répéter la dernière commande. 
-  * ''!n'' permet de répéter la n<sup>ième</sup> commande depuis le début de l'historique. 
-  * ''!-n'' permet de répéter la n<sup>ième</sup> commande depuis la fin de l'historique. 
-  * ''Alt'' + ''.'' permet d'ajouter le dernier argument de la dernière commande sans lancer la commande actuelle. 
-  * ''!$'' permet d'ajouter le dernier argument de la dernière commande en lançant la commande actuelle. 
-  * ''!*'' permet d'ajouter tous les arguments de la dernière commande. 
-  * ''!foo'' ou ''foo !!'' permet de relancer la dernière commande commençant par foo. 
-  * ''!:-'' permet de récupérer la dernière commande sans le dernier argument. 
-  * '':p'' permet d'afficher la commande sans qu'elle se lance. 
-  * ''!:n'' permet de récupérer le n<sup>ième</sup> argument de la dernière commande. 
-  * '':s/old/new/'' permet de modifier la commande avant de la lancer. 
-  * ''^old^new^'' permet de modifier la dernière commande avant de la lancer. 
- 
-<code bash> 
-# Lancement d'une commande de l'historique 
-!120 
- 
-# Affichage d'une commande de l'historique 
-!120:p 
- 
-# Affichage d'une commande modifiée de l'historique 
-!120:s/old/new/:p 
-</code> 
- 
-<WRAP info> 
-Pour aller plus loin avec l'historique : 
-  * [[https://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/|15 Examples To Master Linux Command Line History]] 
-  * [[http://www.tux-planet.fr/ajouter-la-date-et-lheure-dans-lhistorique-de-bash/|Ajouter la date et l'heure dans l'historique de bash - Tux-planet]] 
-  * [[https://sanctum.geek.nz/arabesque/better-bash-history/|Better Bash history | Arabesque]] 
-  * [[https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps|How To Use Bash History Commands and Expansions]] 
-  * [[http://blog.macromates.com/2008/working-with-history-in-bash/|TextMate Blog » Working With History in Bash]] 
-</WRAP> 
- 
-===== 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'ensemble des valeurs 
-tab=(valeur_1 valeur_2 valeur_3) 
- 
-# déclaratin explicite de l'ensemble des valeurs 
-declare -a tab=(valeur_1 valeur_2 valeur_3) 
-</code> 
- 
-  * Ajouter un élément 
-<code bash> 
-# Au début du tableau 
-tab=(valeur_0 ${tab[@]}) 
- 
-# À la fin du tableau 
-tab=(${tab[@]} valeur_4) 
-</code> 
- 
-  * Parcourir les éléments séquentiellement 
-<code bash> 
-for i in "${tab[@]}" 
-do 
-    # faire quelque chose 
-done 
-</code> 
- 
-  * Récupérer le nombre d'éléments 
-<code bash> 
-echo ${#tab[@]} 
-</code> 
- 
-  * [[http://www.yourownlinux.com/2013/10/working-with-arrays-in-bash-scripting.html|Pour aller plus loin]] 
- 
-===== Manipuler une chaîne de charactères ===== 
-  * Ajout d'une valeur par défaut 
-<code bash> 
-${chaine:-default} 
-</code> 
- 
-  * Extraction d'une sous-chaîne 
-<code bash> 
-# À partir d'une position jusqu'à la fin de la chaîne 
-${chaine:debut} 
- 
-# À partir d'une position pour une longueur donnée 
-${chaine:debut:longueur} 
-</code> 
- 
-  * Conversion en tableau 
-<code bash> 
-tableau=($chaine) 
-</code> 
- 
-  * Extraire l'extension d'un fichier 
-<code bash> 
-extension=${chaine##*.} 
-</code> 
- 
-  * Substituer une sous-chaîne par une autre 
-<code bash> 
-# Remplacement du premier points par un espace (attention à l'espace dans la chaîne de substitution) 
-${chaine/./ } 
- 
-# Remplacement des points par des espaces (attention à l'espace dans la chaîne de substitution) 
-${chaine//./ } 
-</code> 
- 
-  * 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#*|} 
-</code> 
- 
-  * 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~~} 
-</code> 
- 
-  * [[http://www.tldp.org/LDP/abs/html/string-manipulation.html|Pour aller plus loin]] 
- 
-===== Manipuler des nombres ===== 
- 
-  * Additions (([[https://stackoverflow.com/a/6348941|How can I add numbers in a bash script?]])) (([[https://askubuntu.com/questions/385528/how-to-increment-a-variable-in-bash|How to increment a variable in bash? - Ask Ubuntu]])) 
-<code bash> 
-# 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}") 
-</code> 
- 
-  * Changer de base 
-<code bash> 
-# Pour changer en base 10 
-echo $((10#$i)) 
-</code> 
-<WRAP info> 
-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. 
-</WRAP> 
- 
- 
-  * 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> 
-<code bash> 
-# 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 
-</code> 
- 
-===== 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. 
-<code bash> 
-# 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 
-</code> 
- 
-===== Raccourcis clavier ===== 
-{{ :informatique:bash_sheet.png?direct |}} 
-[[http://jamesconner.us/images/bash_sheet.png|source]] 
- 
-===== Récupérer le retour de la dernière commande ===== 
-<code bash> 
-echo $? 
-</code> 
- 
-===== Fonction de conversion des pages de manuel ===== 
-Dans le fichier ''.bashrc'', il faut ajouter la fonction suivante : 
-<code bash> 
-man2pdf () { 
-  if whatis ${1} > /dev/null; then 
-    man -Tpdf ${1} > ${1}.pdf 
-  fi   
-} 
-</code> 
- 
-===== 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 : 
-<code bash> 
-# 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" 
-</code> 
- 
-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 ((''\e[0m'' et ''\e[m'' ont le même effet))  | 
-| 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 : 
-  * [[https://misc.flogisoft.com/bash/tip_colors_and_formatting|bash:tip_colors_and_formatting - FLOZz' MISC]] 
-  * [[https://web.archive.org/web/20190311094012/http://bitmote.com/index.php?post/2012/11/19/Using-ANSI-Color-Codes-to-Colorize-Your-Bash-Prompt-on-Linux|Using ANSI Color Codes to Colorize Your Bash Prompt on Linux - BitMote]] 
- 
-Voici un script qui permet d'afficher l'ensemble des combinaisons décrites plus haut à l'exception des suppressions d'attributs : 
-<code bash 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" 
-</code> 
-===== Liens externes ===== 
-  * [[https://stackoverflow.com/questions/3427872/whats-the-difference-between-and-in-bash|What's the difference between [ and [[ in Bash?]] 
-  * [[http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html|Bash Beginners Guide]] 
-  * [[http://tldp.org/LDP/abs/html/|Advanced Bash Scripting Guide]] 
-  * [[http://www.bashoneliners.com/|Bash One-Liners]] 
-  * [[http://www.faqs.org/docs/bashman/bashref.html|Bash Reference Manual]] 
-  * [[http://www.tldp.org/LDP/abs/html/options.html|Options]] 
-  * [[https://wiki.bash-hackers.org/|The Bash Hackers Wiki [Bash Hackers Wiki]]] 
-  * [[https://devhints.io/bash|Bash scripting cheatsheet]] 
-  * [[https://shellmagic.xyz/|Shell Magic - The Ultimate Bash Cheatsheet!]] 
- 
- 
- 
- 
- 
informatique/bash.1732573517.txt.gz · Dernière modification : 2024/11/25 14:25 de alexis