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