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 | ||
| linux:bash [24-02-2020 13:36] – [Problème d'affichage sur la ligne du prompt] edmc73 | linux:bash [07-05-2023 18:38] (Version actuelle) – [Date de fichier] edmc73 | ||
|---|---|---|---|
| Ligne 343: | Ligne 343: | ||
| </ | </ | ||
| + | Tester le contenu d'une chaine avec du regex | ||
| + | Tester une date yyyymmdd de facon très simple | ||
| + | |||
| + | <code bash> | ||
| + | [[ $date =~ ^[0-9]{8}$ ]] && echo " | ||
| + | </ | ||
| + | |||
| + | ou plus complet | ||
| + | |||
| + | <code bash> | ||
| + | [[ $date =~ ^[0-9]{4}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])$ ]] && echo " | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | --year-- | ||
| + | # | ||
| + | # start of line or 10, | ||
| + | # or 30, 31 | ||
| + | </ | ||
| + | |||
| + | That is, you can define a regex in Bash matching the format you want. This way you can do: | ||
| + | |||
| + | <code bash> | ||
| + | [[ $date =~ ^regex$ ]] && echo " | ||
| + | </ | ||
| + | where commands after && are executed if the test is successful, and commands after || are executed if the test is unsuccessful. | ||
| + | |||
| + | Note this is based on the solution by Aleks-Daniel Jakimenko in User input date format verification in bash. | ||
| + | |||
| + | In other shells you can use grep. If your shell is POSIX compliant, do | ||
| + | |||
| + | <code bash> | ||
| + | (echo " | ||
| + | </ | ||
| + | In fish, which is not POSIX-compliant, | ||
| + | |||
| + | <code bash> | ||
| + | echo " | ||
| + | </ | ||
| ===== Boucle ===== | ===== Boucle ===== | ||
| Ligne 377: | Ligne 417: | ||
| for i in {1..5}; do COMMAND-HERE; | for i in {1..5}; do COMMAND-HERE; | ||
| + | for X in /dev/sd*; do echo $X; smartctl -a $X | grep overall; done | ||
| + | < | ||
| + | ~# for X in {a..z}; do smartctl -a /dev/sd$X | grep overall; done | ||
| + | SMART overall-health self-assessment test result: PASSED | ||
| + | SMART overall-health self-assessment test result: PASSED | ||
| + | SMART overall-health self-assessment test result: PASSED | ||
| + | SMART overall-health self-assessment test result: PASSED | ||
| + | ... | ||
| + | </ | ||
| ===== Suppression d'un grand nombre de fichiers ===== | ===== Suppression d'un grand nombre de fichiers ===== | ||
| Ligne 401: | Ligne 450: | ||
| Pour savoir combien de fichiers vont être effacés | Pour savoir combien de fichiers vont être effacés | ||
| find . -name " | find . -name " | ||
| + | | ||
| + | |||
| + | Garder les 5 fichiers les plus récents et supprimer le reste | ||
| + | ls -c *.txt | tail -n +5 | xargs rm | ||
| + | |||
| ===== Taille de plusieurs répertoires ===== | ===== Taille de plusieurs répertoires ===== | ||
| Permet d' | Permet d' | ||
| Ligne 428: | Ligne 482: | ||
| select CHOIX in " | select CHOIX in " | ||
| case $REPLY in | case $REPLY in | ||
| - | | + | |
| echo ok | echo ok | ||
| break | break | ||
| ;; | ;; | ||
| - | | + | |
| echo ko | echo ko | ||
| break | break | ||
| ;; | ;; | ||
| + | *) echo " | ||
| esac | esac | ||
| done | done | ||
| </ | </ | ||
| + | Demander de saisir un texte | ||
| + | <code bash> | ||
| + | echo Hello, who am I talking to? | ||
| + | read varname | ||
| + | echo It\'s nice to meet you $varname | ||
| + | </ | ||
| ===== echo ===== | ===== echo ===== | ||
| Ligne 783: | Ligne 844: | ||
| Modify: 2015-01-01 00: | Modify: 2015-01-01 00: | ||
| Change: 2016-07-04 08: | Change: 2016-07-04 08: | ||
| + | |||
| + | On peut aussi utiliser la notation suivante | ||
| + | # touch -d "-1 day" toto.txt | ||
| </ | </ | ||