Cours SR (Systemes et Reseaux) I5TC1 Programmation systemeCours SR (Systemes et Reseaux) I5TC1Programmation systemeOlivier Togni(038039)3887olivier.togni@u-bourgogne.frModi e le 21 septembre 20091 de 1Cours SR (Systemes et Reseaux) I5TC1 Programmation systemeProgrammation systemeLangages systemeI shellI awkI perlI CRem : On peut tout faire en C, certains traitements sont plussimples a ecrire en shell/awk2 de 1Cours SR (Systemes et Reseaux) I5TC1 Programmation systemeProgrammation systemeShellEnvironnementShell = liste de couples (variable,valeur) + cmd internesVariables prede nies : PATH, IFS, HOME, ...Cmds internes : cd, echo, pwd, read, set, trap, wait, ...Envir. peut ^etre initialise gr^ace aux chiers d’initialisation du shell,lus au moment de la connexion (sh : .pro le, csh :.login, .cshrc ;bash :.bash pro le .bashrc)3 de 1Cours SR (Systemes et Reseaux) I5TC1 Programmation systemeProgrammation systemeShellEnvironnementTraitement d’une cmd :1. Phase de saisie : edition, historique, completion2. Phase de substitutions : analyse de la liste de cmd3. Execution : la cmd resultant du 2 est recherchee puis executeeExemple : date > RC.L; ls-l .??* |grep rc >> RC.Ldevient apres substitutionsdate > RC.L; ls-l .bash_history .bash_profile.dtprofile .profile |grep rc >> RC.L54 de 1Cours SR (Systemes et Reseaux) I5TC1 Programmation systemeProgrammation systemeShellTraitement d’une commande ...
Envir.peutˆetreinitialise´graˆceauxfichiersd’initialisationdushell, lus au moment de la connexion (sh : .profile, csh :.login, .cshrc ; bash :.bash profile .bashrc)
1.desaisiePhase,nihtsro´:detioi´eplontiueiqom,c 2.de substitutions : analyse de la liste de cmdPhase 3.xEr´mdac:lonticu´eertse2udtnatlusehcrehce´peiues´xecut´ee
Sinon un fichier de nom<mot0>ehcertseslalisterch´edaned repertoiresdefichiersexecutable(de´finieparlavariablePATH) -fichiernontrouv´e - fichier non executable par l’util - fichier exec avec droits OK (ex : cp, rm,...)⇒lancement de la cmd -scriptavecacc`esOK⇒eletuce´xeiuqllehns’utdenemncla script.Lecheminabsoludushellpeuteˆtrepr´ecise´dansla1iere ligne du script :#!/bin/shou bien#!/bin/csh, ...
ATTENTION de ne pas confondre ler´esultat´yovnetseiuqec(e vers la sortie std) d’une cmd avec sa valeur. Ex : pwd valeur=0, resultat=/home1/togni
Toute cmd qui termine son exec retourne unevaleur.
-terminaisonnormale:leprocessusexecuteunappelsyst`eme exit(i)=>valeur=i (normalement 0). -term.anormale:processinterrompuparr´eceptiondusignaln0s (ex : 9 du kill -9) =>valeur = c s, avec c=1 si fichier core produit,0sinonets=num´erosignal.
if sortie 0 then echo oui else echo non if sortie 100 then echo oui else echo non Lesigne$?repr´esentelavaleurdeladerni`erecmdexe´cutee ´ Ex prec : sortie 100 echo $? va donner 100
Rem :cmd &suivi d’une commande vide lance cmd en arriere plan ` (rendlamainaushellimme´diatement) Exs :cd $CHEMIN && ls -l a.out 2>&1>LOG || echo Erreur
pour forcer les priorites ´ Ex :echo $F1est-ce$F1ou bien$F 1? - Accolades Ex :{cat $F1 || cat $F2}| wc -l -Parenthe`ses:idemmaisexecdelacmddansunsousshell=> on peut alors rediriger les ES d’une liste facilement. Ex :(date ; pwd ; ls-cF) >LOG Valeurdcmdc’unes´eeompolav=druecalealdmad+`itroe
1.substitution de commandes Le motif‘<cmd>‘ed’ltltaedalxecepa´eacplsu´eerrlmertse cmd<cmd> 2.substitution de variables $<var>elalavirbavaleurdec´eparlaertsalpme<var> 3.substitution de chemins Trois motifs : ∗ee`dearcairvtecdemtnlseelentue´evsuit: ?:uncaracte`reqcq []:alphabet(ensembledecaract`eres)
Substitutions Avant d’executer une ligne, le shell recherche les motifs a substituer dans la ligne de cmd et remplace chacun d’entre eux par lere´sultatdelasubsdanscetordre: