linux: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édentes Révision précédente
Prochaine révision
Révision précédente
linux:bash [2022/04/30 14:44] – [Bash] add link phswlinux:bash [2025/10/26 14:47] (Version actuelle) – add how to generate random numbers phsw
Ligne 5: Ligne 5:
   * [[https://connect.ed-diamond.com/Linux-Pratique/lp-124/optimiser-sa-configuration-de-bash|Optimiser sa configuration de Bash]]   * [[https://connect.ed-diamond.com/Linux-Pratique/lp-124/optimiser-sa-configuration-de-bash|Optimiser sa configuration de Bash]]
   * [[https://github.com/dylanaraps/pure-bash-bible]]   * [[https://github.com/dylanaraps/pure-bash-bible]]
 +  * [[http://aral.iut-rodez.fr/fr/sanchis/enseignement/IntroProgBash_2022-06-03.pdf|Introduction à la programmation en Bash]]
 +  * [[https://mywiki.wooledge.org/ParsingLs|Why you shouldn't parse the output of ls(1)]]
 +  * [[https://connect.ed-diamond.com/linux-pratique/lp-133/rendre-ses-scripts-bash-plus-fiables|Rendre ses scripts « Bash » plus fiables]]
 +  * [[https://nochlin.com/blog/6-techniques-i-use-to-create-a-great-user-experience-for-shell-scripts|6 Techniques I Use to Create a Great User Experience for Shell Scripts]]
 +  * [[https://blog.smarchal.com/bash-substitutions-variables|Les substitutions de variables en bash]]
 +
  
  
Ligne 64: Ligne 70:
   * [[https://fr.wikibooks.org/wiki/Programmation_Bash/Tests]]   * [[https://fr.wikibooks.org/wiki/Programmation_Bash/Tests]]
   * [[https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/43394-les-conditions]]   * [[https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/43394-les-conditions]]
 +  * [[https://jmmv.dev/2020/03/test-bracket.html|test, [, and [[]]
  
 <code bash> <code bash>
Ligne 152: Ligne 159:
     echo "Git folder doesn't exist"     echo "Git folder doesn't exist"
 fi fi
 +</code>
 +
 +
 +=== Comparer deux dates ===
 +
 +[[https://unix.stackexchange.com/questions/84381/how-to-compare-two-dates-in-a-shell|source]]
 +
 +<code bash>
 +todate=$(date -d 2013-07-18 +%s)
 +cond=$(date -d 2014-08-19 +%s)
 +
 +if [ $todate -ge $cond ];
 +then
 +    break
 +fi  
 </code> </code>
  
Ligne 256: Ligne 278:
 <code bash> <code bash>
 user=${SUDO_USER:-$(whoami)} user=${SUDO_USER:-$(whoami)}
-</code> 
- 
- 
- 
- 
-==== Quitter à la moindre erreur ==== 
- 
-<code bash> 
-set -e 
 </code> </code>
  
Ligne 289: Ligne 302:
  
 <code bash> <code bash>
-while [ "$1" != "" ]; do+set -u 
 + 
 +while [ $# -gt 0 ]; do
     case $1 in     case $1 in
         -f | --file )           shift         -f | --file )           shift
Ligne 408: Ligne 423:
 foo="abcde" foo="abcde"
 echo "${foo::-1}" # abcd echo "${foo::-1}" # abcd
 +</code>
 +
 +
 +=== Enlever un préfixe ===
 +
 +[[https://stackoverflow.com/questions/16623835/remove-a-fixed-prefix-suffix-from-a-string-in-bash|Source]]
 +<code bash>
 +v="/data/truc/foo"
 +prefix="/data/truc/"
 +
 +echo ${v#"$prefix"}
 </code> </code>
  
Ligne 442: Ligne 468:
 ' '
 </code> </code>
 +
 +
 +==== Générer un nombre aléatoire ====
 +
 +  * [[https://stackoverflow.com/questions/1194882/how-to-generate-random-number-in-bash]]
 +
 +<code bash>
 +echo $((1 + $RANDOM % 10))
 +od -t u -N 4 /dev/urandom | head -n 1 | cut -f 2 -d ' '
 +</code>
 +
 +
 +
 +==== Options Bash ====
 +
 +
 +
 +=== Récupérer le code de retour dans un pipe ===
 +
 +Pour récupérer le code de retour de la première commande qui échoue dans un pipe ([[https://unix.stackexchange.com/questions/14270/get-exit-status-of-process-thats-piped-to-another|source]]) :
 +<code bash>
 +set -o pipefail
 +
 +gcc ... 2>&1 | tee out
 +res=$?
 +</code>
 +
 +
 +=== Ne pas développer * ===
 +
 +Pour éviter que ''*'' soit remplacé par tous les fichiers et dossiers du dossier courant, lancer ''bash -f'' ([[https://stackoverflow.com/a/13484149|source]]).
 +
 +
 +
 +=== Quitter à la moindre erreur ===
 +
 +<code bash>
 +set -e
 +</code>
 +
 +
 +=== Changer des options pour une portion de script ===
 +
 +Mettre la portion entre parenthèses ([[https://stackoverflow.com/questions/74525090/bash-set-x-only-for-the-duration-of-a-function|source]]) :
 +<code bash>
 +#!/bin/bash
 +
 +set -eu
 +
 +(
 +    set -o pipefail
 +    set +e
 +
 +    false | cat
 +    echo "after $?"
 +)
 +
 +echo "before second"
 +
 +false | cat
 +echo "after $?"
 +
 +false
 +echo "sould not print"
 +</code>
 +
 +
 +==== Couleurs ====
 +
 +Changer la couleur du texte affiché :
 +  * [[https://www.shellhacks.com/bash-colors/|Bash Colors]]
 +
 +Visualiser le rendu de toutes les couleurs ([[https://askubuntu.com/questions/27314/script-to-display-all-terminal-colors|source]]) :
 +<code bash>
 +for x in {0..8}; do for i in {30..37}; do for a in {40..47}; do echo -ne "\e[$x;$i;$a""m\\\e[$x;$i;$a""m\e[0;37;40m "; done; echo; done; done; echo ""
 +
 +msgcat --color=test
 +</code>
 +
  
  • linux/bash.1651322699.txt.gz
  • Dernière modification : 2022/04/30 14:44
  • de phsw