Description : Nous allons voir quelques exemples de pattern-matching, pipelines, ...
Extraction de patterns :
${VAR} # valeur de VAR
${#VAR} # taille de VAR
${VAR#pattern} # VAR amputé du pattern mini en prefix
${VAR##pattern} # VAR amputé du pattern max en prefix
${VAR%pattern} # VAR amputé du pattern mini en suffix
${VAR%%pattern} # VAR amputé du pattern max en suffix
${VAR:-word} # Affiche word si VAR est nulle ou unset
${VAR:=word} # Affiche word si var est nulle ou unset et set assigne word à var
${VAR:?} # Affiche une erreur si VAR est nulle ou unset
${VAR:+word} # Affiche word si VAR est différente de nulle et définie
${VAR:offset} # Affiche VAR à partir de l'offset
${VAR:offset:lenght} # Affiche VAR à partir de l'offset sur lenght de longeur
${!tab[@]} # Liste les id du tableau tab
${tab[#_ID]} # Affiche la valeur du #_ID de tab
${VAR/pattern/string} # Substitution
${VAR^} # Maj du premier caractère
${VAR^^} # Maj de tous les caractères
${VAR,} # Min du premier caractère
${VAR,,} # Min de tous les caractères
${#tab[*]} # Affiche le nombre d'entrée dans le tableau
cmd > file # Redirige stdout de cmd dans file
cmd 2> file # Redirige stderr de cmd dans file
cmd &> file # Redirige stdout et sterr de cmd dans file
cmd < file # Envoi le contenu de file dans cmd
cmd 2> /dev/null # Redirige sterr dans un trou noir
cmd > file.out 2> file.err # Redirige stdout dans file.out et stderr dans file.err
cmd1 | cmd2 # Redirection stdout de cmd1 dans stdin de cmd2. stderr n'est pas transmit dans les |
cmd1 | cmd2 | cmd3 | cmd4; echo ${PIPESTATUS[@]} # Suite de redirections et récupération des
> file # Vide et/ou crée un fichier
cmd | tee cmd.out | sort | tee sort.out # Un fichier de sortie par cmd
(cmd1; cmd2) > file # stdout des 2 cmd dans file (via sous shell)
{ cmd1; cmd2; } > file # stdout des 2 cmd dans file (sans sous shell)
cmd1; cmd2 # Execution cmd1 puis cmd2
cmd1 && cmd2 # Execution de cmd2 si cmd1 est OK
cmd1 || cmd2 # Execution de cmd2 si cmd1 est non OK
#-------------------------------------
>> ajoute au lieu de rediriger.
Pipelines :
Symbole
Connexion
Détails
;
Séquencement
La seconde opération ne commence qu'après la première.
&
Parallélisme
La première opération est lancée en arrière-plan et la seconde démarre simultanément; elles n'ont pas d'interactions entre elles.
&&
Dépendance
La seconde n'est exécutée que si la première renvoie un code de retour succès.
||
Alternative
La seconde opération n'est exécutée que si la primère retourne un code retour d'échec.
Conditions et tests :
Option
Vrai si
-b fichier
Le fichier est de type block.
-c fichier
Le fichier est de type caractère.
-d repertoire
Le répertoire indiqué existe.
-e fichier
Le fichier indiqué existe.
-f fichier
Le fichier indiqué est un fichier régulier.
-g fichier
Le bit Set-GID du fichier indiqué est positionné.
-h fichier -L fichier
Le fichier indiqué est un lien symbolique.
-G fichier
"Le fichier indiqué appartient au même groupe que le GID effectif du processus invoquant la
commande test."
-k fichier
Le bit Sticky du fichier indiqué est positionné.
-n chaine
La longueur de la chaîne indiquée est non nulle.
-N fichier
Le fichier a été modifié depuis son dernier accès en lecture.
-O fichier
"Le fichier indiqué appartient au même utilisateur que l’UID effectif du processus invoquant la
commande test."
-p fichier
Le fichier indiqué est un tube nommé (file FIFO).
-r fichier
Le fichier indiqué est lisible.
-s fichier
La taille du fichier indiqué est non nulle.
-S fichier
Le fichier indiqué est une socket.
-t descripteur
Le descripteur de fichier correspond à un terminal.
-u fichier
Le bit Set-UID du fichier indiqué est positionné.
-w fichier
On peut écrire dans le fichier indiqué.
-x fichier
Le fichier indiqué est exécutable.
-z chaine
La longueur de la chaîne indiquée est nulle.
chaine
La chaîne est non nulle.
chaine_1 = chaine_2
Les deux chaînes sont identiques.
chaine_1 != chaine_2
Les deux chaînes sont différentes.
chaine_1 < chaine_2
La première chaîne apparaît avant la seconde, dans un tri lexicographique croissant.
chaine_1 > chaine_2
La première chaîne apparaît après la seconde, dans un tri lexicographique croissant.
valeur_1 -eq valeur_2
Les deux valeurs arithmétiques sont égales.
valeur_1 -ge valeur_2
La première valeur est supérieure ou égale à la seconde.
valeur_1 -gt valeur_2
La première valeur est strictement supérieure à la seconde.
valeur_1 -le valeur_2
La première valeur est inférieure ou égale à la seconde.
valeur_1 -lt valeur_2
La première valeur est strictement inférieure à la seconde.
valeur_1 -ne valeur_2
Les deux valeurs arithmétiques sont différentes.
fichier_1 -ef fichier_2
Le fichier_1 est le même que le fichier_2. Il peut s’agir de deux noms (liens physiques)
différents dans le système de fichiers, correspondant au même contenu sous-jacent. La comparaison
concerne le numéro de périphérique de support et le numéro d’i-noeud.
fichier_1 -nt fichier_2
2 La date de dernière modification du fichier_1 est plus récente que celle du fichier_2.
fichier_1 -ot fichier_2
La date de dernière modification du fichier_1 est plus ancienne que celle du fichier_2.