Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
linux:bash [12-03-2020 11:37] edmc73 [Faire un prompt] |
linux:bash [07-05-2023 20:38] (Version actuelle) edmc73 [Date de fichier] |
||
---|---|---|---|
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 | ||
Ligne 789: | 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 | ||
</ | </ | ||