====== 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|