Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
informatique:bash [2019/09/13 23:51] – [Liens externes] alexis | informatique:bash [2022/08/14 18:48] (Version actuelle) – [Bonnes pratiques] alexis |
---|
====== Bash ====== | ====== Bash ====== |
<WRAP todo> | <WRAP todo> |
Regarder et tester le contenu du lien suivant. Ça a l'air intéressant ! | Étudier les liens suivants : |
[[http://shaarli.guiguishow.info/?gKD9Ow|Quand le gruik découvre set -e et trap ERR - GuiGui's Show]] | - [[https://www.tldp.org/LDP/abs/html/index.html|Advanced Bash-Scripting Guide]] |
| - [[http://www.cyberciti.biz/faq/bash-shell-script-generating-random-numbers/|Bash Shell Generate Random Numbers]] |
modifier la section des aliases | - [[https://zwischenzugs.com/2019/02/27/bash-startup-explained/|Bash Startup Explained – zwischenzugs]] |
| - [[http://linux-attitude.fr/post/Bashrc-collaboratif|Bashrc collaboratif - Linux Attitude]] |
| - [[http://cheat.sh/bash/:learn|cheat.sh/bash/:learn]] |
| - [[https://github.com/dylanaraps/pure-bash-bible|dylanaraps/pure-bash-bible: 📖 A collection of pure bash alternatives to external processes.]] |
| - [[http://stackoverflow.com/questions/8789729/zero-padding-in-bash|numbers - Zero Padding In Bash - Stack Overflow]] |
| - [[http://edoceo.com/liber/linux-bash-shell|The Bash Shell - Edoceo, Inc.]] |
| - [[https://www.linuxjournal.com/content/bash-trap-command|The Bash Trap Command | Linux Journal]] |
| - [[http://www.linuxjournal.com/content/validating-ip-address-bash-script|Validating an IP Address in a Bash Script | Linux Journal]] |
| - [[https://linuxhint.com/debug_bash_script-2/|How to debug a bash script? – Linux Hint]] |
| - [[https://wizardzines.com/comics/bash-errors/|bash errors]] |
| - [[https://betterdev.blog/minimal-safe-bash-script-template/|Minimal safe Bash script template | Better Dev]] |
</WRAP> | </WRAP> |
| |
===== Alias utiles ===== | |
<code bash> | |
alias 1.="cd .." | |
alias 2.="cd ../.." | ===== Bonnes pratiques ===== |
alias 3.="cd ../../.." | Liste de pages recensant les bonnes pratiques à appliquer lors de l'écriture de scripts : |
alias 4.="cd ../../../.." | * [[http://redsymbol.net/articles/unofficial-bash-strict-mode/|Bash Strict Mode]] |
</code> | * [[https://blog.seboss666.info/2020/04/programmation-defensive-en-bash/|Programmation défensive en bash – Le blog de Seboss666]] |
| * [[http://shaarli.guiguishow.info/?gKD9Ow|Quand le gruik découvre set -e et trap ERR - GuiGui's Show]] |
| * [[https://ashishb.net/all/the-first-two-statements-of-your-bash-script-should-be/|The first two statements of your BASH script should be…]] |
| * [[https://mywiki.wooledge.org/BashPitfalls|BashPitfalls - Greg's Wiki]] |
| * [[https://gist.github.com/mohanpedala/1e2ff5661761d3abd0385e8223e16425|set -e, -u, -o, -x pipefail explanation · GitHub]] |
| * [[https://mywiki.wooledge.org/BashFAQ/035|BashFAQ/035 - Greg's Wiki]] |
| |
| |
| |
| |
# Version longue | # Version longue |
env --ignore-environment <command> | env --ignore-environment <command> |
| </code> |
| |
| Dans le cas de //cron//, il est possible d'en extraire son environnement d'exécution et de le ré-utiliser pour le lancement manuel de la commande : |
| <code bash> |
| # Ajouter temporairement cette ligne dans cron pour générer le fichier d'environnement |
| * * * * * root env > ~/cronenv |
| |
| # Lancer la commande en utilisant le contenu du fichier précédemment généré |
| env - $(<~/cronenv) /bin/sh <command> |
</code> | </code> |
</WRAP> | </WRAP> |
!120:s/old/new/:p | !120:s/old/new/:p |
</code> | </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 ===== | ===== Manipuler un tableau ===== |
* Déclaration | * Déclaration |
===== Manipuler des nombres ===== | ===== Manipuler des nombres ===== |
| |
* Additions (([[https://stackoverflow.com/a/6348941|How can I add numbers in a bash script?]])) | * 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> | <code bash> |
# Addition d'entiers | # Addition d'entiers |
echo $((i + 3)) | echo $((i + 3)) |
| |
| # Incrémentation d'une variable |
| ((i++)) |
| |
# Addition de réels | # Addition de réels |
* [[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]] | * [[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 ===== | ===== Liens externes ===== |
* [[https://stackoverflow.com/questions/3427872/whats-the-difference-between-and-in-bash|What's the difference between [ and [[ in Bash?]] | * [[https://stackoverflow.com/questions/3427872/whats-the-difference-between-and-in-bash|What's the difference between [ and [[ in Bash?]] |
* [[http://www.tldp.org/LDP/abs/html/options.html|Options]] | * [[http://www.tldp.org/LDP/abs/html/options.html|Options]] |
* [[https://wiki.bash-hackers.org/|The Bash Hackers Wiki [Bash Hackers Wiki]]] | * [[https://wiki.bash-hackers.org/|The Bash Hackers Wiki [Bash Hackers Wiki]]] |
* [[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]] | * [[https://devhints.io/bash|Bash scripting cheatsheet]] |
| * [[https://shellmagic.xyz/|Shell Magic - The Ultimate Bash Cheatsheet!]] |
| |
| |
| |
| |