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 |