Table des matières

Aide mémoire Bash


Jokers

? remplace un seul caractère
* remplace 0 ou plusieurs caractères
[] remplace par n'importe quel caractère situé à l'interieur des crochets
[ - ] remplace par un caractère qui se situe dans la suite ( 0-9 de 0 à 9, a-z de a à z)
[!] le contraire de []


Groupement de commandes

commande1 ; commande2 Lance commande2 après commande 1
commande1 | commande2 Renvoie le résultat de commande1 à commande2
commande & Lance commande en arrière-plan
commande1 || commande2 SINON : ne lance commande2 que si commande1 échoue
commande2 && commande2 ET : Lance commande1 si commande1 réussi
( liste ) Groupe de commandes
{ liste; } Groupe de commandes
`Commande` ou $(commande) Substitution de commandes


Les redirections

Entrée/Sortie standard ( E/S )
0 Entrée Standard ( clavier )
1 Sortie Standard ( écran )
2 Erreur Standard ( écran )
Entrée/Sortie standard
> fichier Redirection en sortie vers un fichier, écrase le fichier si le fichier existe
< fichier L'entrée standard est un fichier
» fichier Redirection en sortie vers un fichier, sans écrasement de fichiers
« mot Lecture au clavier jusqu'à “mot”
<> fichier L'entrée et la sortie standard est un fichier


Les tests

Attributs de fichiers
-b fichier Vrai si le fichier existe et est un fichier en mode bloc
-c fichier Vrai si le fichier existe et est un fichier en mode caractère
-d fichier Vrai si le fichier existe et est un répertoire
-e fichier Vrai si le fichier existe
-f fichier Vrai si le fichier est un fichier ordinaire
-g fichier Vrai si le fichier existe et est groupe sid ( sgid )
-h fichier Vrai si le fichier existe et est un lien symbolique
-k fichier Vrai si le fichier existe et est sticky bit
-p fichier Vrai si le fichier existe et est une pipe nommé ( FIFO )
-r fichier Vrai si le fichier existe et si l'utilisateur à le droit de le lire
-s fichier Vrai si le fichier existe et à une taille supérieure à 0 ( non-vide )
-t fd True if fichier descriptor fd is open and refers to a terminal
-u fichier Vrai si le fichier existe et est suid
-w fichier Vrai le fichier existe et si l'utilisateur à le droit d'y écrire
-x fichier Vrai si le fichier existe et peut être exécuté par l'utilisateur
-O fichier Vrai si le fichier existe et possède même id que l'utilisateur
-G fichier Vrai si le fichier existe et possède le même gid que l'utilisateur
-L fichier Vrai si le fichier existe et est un lien symbolique
-S fichier Vrai si le fichier existe est un Socket


Comparaison de fichiers
FICHIER1 -ef FICHIER2 Vrai si les deux fichiers ont le même device et numéro d'inode
FICHIER1 -nt FICHIER2 Vrai si FICHIER1 est plus récent ( par rapport à la date de modification ) que FICHIER2
FICHIER1 -ot FICHIER2 Vrai si FICHIER1 est plus vieux ( par rapport à la date de modification ) que FICHIER2


Chaînes de caractères
-n CHAÎNE_DE_CARACTÈRES Vrai si la chaîne n'est pas vide
-z CHAÎNE_DE_CARACTÈRES Vrai si le chaîne est vide
CHAINE1 = CHAINE2 Vrai si les deux chaînes sont identiques
CHAINE1 != CHAINE2 Vrai si les deux chaînes sont différentes


Sur les nombres entiers
ENTIER1 -eq ENTIER2 Vrai si ENTIER1 est égal à ENTIER2
ENTIER1 -ge ENTIER2 Vrai si ENTIER1 est plus grand ou égal à ENTIER2
ENTIER1 -gt ENTIER2 Vrai si ENTIER1 est supérieur à ENTIER2
ENTIER1 -le ENTIER2 Vrai si ENTIER1 est plus petit ou égal à ENTIER2
ENTIER1 -lt ENTIER2 Vrai si ENTIER1 est plus petit que ENTIER2
ENTIER1 -ne ENTIER2 Vrai si ENTIER1 est différent de ENTIER2


Les variables de paramètres

$0 Nom du script en cours
$1, $2, $3 … Argument du script en cours
$# Nombre d'arguments
$* Tous les paramètres ( espace se séparation dépend de $IFS )
$@ Idem $* mais ne dépend pas d'$IFS
$$ PID du script
$! PID du dernier processus shell lancé en arrière-plan
$? Code retour de la dernière commande


Les substitutions de variables

$variable ou ${variable} valeur de $variable
${#variable} Nombre de caractères de la variable $variable
${variable:-mot} Renvoie $variable si elle est existe est non nulle, sinon renvoie “ mot “
${variable:+mot} Renvoie ” mot ” si la variable $variable existe et est non nulle, sinon elle retourne 0
${variable:=mot} Affecte “ mot ” à $variable si elle est nulle
${variable:?mot} Affiche “ mot ” si la $variable n'existe pas, et termine la commande ou le script
${variable#expression} Si expression = début de variable → supprime la plus partie reconnue et retourne le reste
${variable##expression} Si expression = début de variable → supprime la plus grande partie reconnue et retourne le reste
${variable%expression} Si expression = fin de variable → supprime la plus partie reconnue et retourne le reste
${variable%%expression} Si expression = fin de variable → supprime la plus grande partie reconnue et retourne le reste
${paramètre/motif/chaîne} Remplace motif par chaîne dans le contenu de la variable juste une fois (a=toto ; echo ${a/to/cou} ⇒ tocou)
${paramètre//motif/chaîne} Remplace motif par chaîne dans le contenu de la variable partout (a=toto ; echo ${a//to/cou} ⇒ coucou)


Structures de contrôles

if condition then commandes1 commandes2 ; … else autrecommande1; autrecommande2 fi SI condition ALORS … SINON … FIN_SI
for i in liste do commande1 ; commande2 … done POUR i DANS la_liste FAIT …. FIN_FAIT
until condition do commande1; commande2 … done JUSQU'A CE QUE condition FAIT … FIN_FAIT
while condition do commande1; commande2 … done TANT QUE condition FAIT … FIN_FAIT