| cmd >fichier | redirige la sortie standard vers un fichier (ecrasement du fichier) |
| cmd 2>fichier | redirige la sortie des erreurs vers un fichier |
| cmd 2>&1 | redirige la sortie d’erreur dans la sortie standard (meme sortie au final) |
| cmd 2>&2 | redirige vers lui même (super utile) |
| cmd 2>/dev/null | redirige vers rien (pas de sortie en quelquesorte) |
| cmd 2>&- | pas de sortie (fermeture du descripteur de fichier) |
| cmd &>fichier | redirige les sorties standard et d’erreurs vers un fichier, equivalent à “cmd >fichier 2>&1” |
| cmd <fichier | envoie le contenu du fichier sur l’entree standard |
| cmd »fichier | ecrit la sortie standard a la fin du fichier |
| cmd « delimiteur | c’est l’utilisateur qui tape sur plusieurs lignes ce qu’il faut. Le delimiteur permet de terminer le message. |
| cmd <>fichier | read and write du fichier (humm) |
| cmd & | mode asynchrone (cmd execute en arrière plan) |
| cmd1 | cmd2 | passe en argument à cmd2 la sortie std de cmd1 |
| cmd1 && cmd2 | si le code de retour de cmd1 ($?) est de zero, alors execute cmd2 |
| cmd1 || cmd2 | si le code de retour de cmd2 ($?) est different de zero, alors execute cmd2 |
| ! cmd | renvoie la negation du code de retour (si cmd renvoie 1, alors $? sera egale a 0) |
| $(cmd) | recupere la sortie de cmd, ex : echo $(who –T) |
Variables utiles:
| $IFS | caractere de separation des mots (utile pour set) |
| $REPLY | valeur retourne par read si il est execute sans argument |
| $? | valeur du code de retour de la derniere commande |
| $0 | nom du programme shell (du sript) |
|$# | nombre de parametres|
| $1 $2 ... | valeur du parametre 1, 2 ,... |
ex:
set cool nul chiant echo $2 nul
Il s’agit ici d’une syntaxe sh, elle s’applique aussi a tout les shell compatible (bash, zsh, etc)
Syntaxe :
case [var] in expgenerique1 )cmd; cmd2;; expgenerique2 )cmd esac
ex :
case $1 in [[:lower:]]*)echo minuscule;; *)echo n \' importe quoi esac
syntaxe1 :
#tant que expbool renvoie 0 while expbool do cmd done
syntaxe2 :
#lit toutes les lignes envoyées par cmd cmd | while read var1 var2 ... do #traitement var1 var2 ... done
syntaxe3 :
#lit toutes les lignes du fichier while read var1 var2 ... do #traitement var1 var2 ... done < fichier
ex :
while who|grep sanchis >/dev/null do echo sanchis est toujours echo connecte done
Syntaxe1 :
#pour tous les param de position #(set) For i Do Suite_cmd; #depend de i Done
syntaxe2 :
#ex: liste_nom=$tmp for i in liste_nom; do suite_cmd; done
Exemple :
Tmp="abc vbn bvb" Set $tmp For i Do Echo $i; done
sortie:
abc vbn bvb
Pour la protection des caracteres ‘(’ ‘*’ ‘#’ ‘$’ ‘>’ ‘)’ 3 possibilites :
${#param} ex : echo ${#PWD} #nombre de char de $PWD
ceci s’applique a bash et certainement au shell compatible.
${param#modele} #param=var sans le dollars ex echo ${PWD#*/} PWD=/home/bob Sortie : home/bob
${param##modele} #param=var sans le dollars ex echo ${PWD##*/} PWD=/home/bob Sortie : bob
${param%modele} #param=var sans le dollars ex echo ${PWD%/*} PWD=/home/bob Sortie : /home
${param%%modele} #param=var sans le dollars ex echo ${PWD%%/*} PWD=/home/bob Sortie : ""
Attention toujours mettre les expressions regulieres (regexp) entre simple quotte.
expr permet de “matcher” des regexp.
expr chaine : expr_rationnelles
Ex :
expr "chaine" : a #retourne 0 expr " chaine " : .*a #retourne 3
expr chaine : \(exp_rat\) #renvoie la chaine resultat
Zx :
expr "chaine" : "c\(.*\)" #retourne haine
dans une console tapper:
echo -e "\033[0;33;43mWhow CTAF you're a fuckin bastard"
couleur par default (reset):
echo -e "\033[0m"
seulement le foreground:
echo -e "\033[{attribut};{foreground}m"
echo <ESC>[{attribut};{foreground};{background}m
ces valeurs peuvent changer d’un shell a un autres, voici les valeurs courantes:
| {attribut} | signification |
|---|---|
| 0 | reset, repasse en mode normal (police par default) |
| 1 | Bright, souvent equivalent a gras |
| 2 | Dim |
| 3 | |
| 4 | Underline, souligné |
| 5 | Blink |
| 6 | |
| 7 | Reverse, couleurs inversés |
| 8 | Hidden |
| {foreground} | {background} | signification |
|---|---|---|
| 30 | 40 | Black |
| 31 | 41 | Red |
| 32 | 42 | Green |
| 33 | 43 | Yellow |
| 34 | 44 | Blue |
| 35 | 45 | Magenta |
| 36 | 46 | Cyan |
| 37 | 47 | White |