To write bash one-liner functions, don't forget to add a semi-column at the end of the commands:
$ grep_file() { grep "$@" file; }
Pour extraire une valeur d'un XML avec grep
:
grep -oPm1 "(?<=<title>)[^<]+"
Example:
$ echo "$data"
<item>
<title>15:54:57 - George:</title>
<description>Diane DeConn? You saw Diane DeConn!</description>
</item>
<item>
<title>15:55:17 - Jerry:</title>
<description>Something huh?</description>
$ title=$(grep -oPm1 "(?<=<title>)[^<]+" <<< "$data")
$ echo "$title"
15:54:57 - George:
Un framework de test unitaire pour les scripts bash
un petit rappel bien complet sur les manipulations de chaines de caractères avec bash
Pour utiliser des alias avec watch
, il suffit de créer un alias pour watch
.
$ alias watch='watch '
$ alias ll='ls -l'
$ watch ll
set -e
: sort automatiquement du script si une commande échoueset -u
: sort automatiquement du script si une variable n'est pas initialiséeset -o pipefail
: sort automatiquement du script si une commande dans un pipe échoueIFS=$'\n\t'
: les chaînes de caractères séparées par un espace sont considérées comme une même chaîne de caractère (seul le saut de ligne et la tabulation sont considéré comme des séparateurs standards)function finish { ... }
&trap finish EXIT
: les instructions de la fonction finish seront toujours exécutés en sortie du script (ex: supprimer des fichiers temporaires, arrêter ou redémarrer une application, ...)
#!/bin/bash
function finish {
# Your cleanup code here
}
trap finish EXIT
Utile pour supprimer un répertoire temporaire quand le script s'arrête par exemple, mais aussi pour redémarrer un service qu'on arrête pour maintenance en début de script
Oh-my-ZSH framework for bash
Utiliser la variable de type array $PIPESTATUS
en bash pour obtenir le code retour d'une commande après un pipe |
Les normes de scripting Shell en vigueur chez Google.
Également dispo pour les autres langages de développement utilisées par Google (C++, Java, Python, HTML/CSS, JavaScript...) à cette adresse:
Pas mal d'astuces sympa dont:
set -u
(ou set -o nounset
) pour que le script se termine s'il doit utiliser une variable nom définie. A tester
Analyseur syntaxique de script shell en ligne ou à télécharger
Bonnes pratiques pour écrire des scripts shell propres