Bash : Mémento
Un mémo, pas un tutoriel. Les lignes bash qu’on cherche à chaque fois parce qu’on ne les tape pas assez souvent pour les retenir, mais assez souvent pour savoir qu’elles existent.
Les substitutions
# Remplacer la première occurrence
${var/ancien/nouveau}
# Remplacer toutes les occurrences
${var//ancien/nouveau}
# Supprimer le plus court pattern depuis le début
${var#pattern}
# Supprimer le plus court pattern depuis la fin
${var%pattern}
# Longueur de la chaîne
${#var}
# Valeur par défaut si vide
${var:-defaut}
# Assigner si vide
${var:=defaut}
# Erreur si vide
${var:?message}
Les tableaux
declare -a tab
tab[0]="premier"
tab+=(deuxieme troisieme)
echo ${tab[@]}
echo ${#tab[@]}
echo ${tab[1]}
# Les index disponibles
echo ${!tab[@]}
Les redirections
cmd > fichier # stdout vers fichier (écrase)
cmd >> fichier # stdout vers fichier (ajoute)
cmd 2> fichier # stderr vers fichier
cmd &> fichier # stdout + stderr vers fichier
cmd 2>&1 # stderr vers stdout
cmd > /dev/null 2>&1 # silence complet
cmd < fichier # stdin depuis fichier
Les boucles
for i in $(ls); do echo "$i"; done
for i in {1..10}; do echo "$i"; done
while read ligne; do echo "$ligne"; done < fichier
Les tests
[[ -f fichier ]] # existe et est un fichier régulier
[[ -d rep ]] # existe et est un répertoire
[[ -s fichier ]] # existe et non vide
[[ -x fichier ]] # exécutable
[[ "$a" == "$b" ]] # égalité de chaînes
[[ $n -eq $m ]] # égalité de nombres
[[ $n -lt $m ]] # less than
C’est tout. Le reste s’apprend avec man bash (section EXPANSION), mais ces lignes-ci sont celles qu’on colle dans un fichier et qu’on source.