Vous êtes sur la page 1sur 11

  ( C B@ & $ 0% 65 1 & 1 ( 0 ( &% $ " GFE2DA2987432##)'#!

       

23/09/03

Edition: Responsable:

2002-2003 Nacra Bennacer

Script UNIX

Table des matires 1. UNIX et Scripts ................................................................................... 3


1.1. 1.2. Initialisation ................................................................................................... 4 Les variables d'environnement.................................................................... 4

1.3. Les caractres spciaux du shell ................................................................ 5 1.3.1. La gnration des noms de fichiers...................................................................5 1.3.2. Les autres caractres spciaux..........................................................................5 1.4. 1.5. Le passage des paramtres ......................................................................... 6 Les entres sorties ....................................................................................... 6

1.6. Les structures de contrle ........................................................................... 6 1.6.1. La commande test..............................................................................................6 1.6.2. La commande expr ............................................................................................7 1.6.3. La condition if ...................................................................................................7 1.6.4. La boucle until...................................................................................................7 1.6.5. La boucle while..................................................................................................7 1.6.6. La condition for.................................................................................................7 1.6.7. La condition d'aiguillage case...........................................................................7 1.6.8. Les directives break et continue .......................................................................8 1.7. 1.8. 1.9. Les fonctions................................................................................................. 8 Les alias......................................................................................................... 8 Le job control: jobs, bg, fg, kill .................................................................... 8

2. Les principales commandes UNIX ................................................. 10 3. Exercices avec corrig sur le shell (Mir:/corriges/SYSTEME/SCRIPT)........................................................ 13 4. Exercices en complment............................................................... 15

23/09/03

  ( C B@ & $ 0% 65 1 & 1 ( 0 ( &% $ " GFE2DA2987432##)'#!


2

       

1. UNIX et Scripts
Le shell est un langage de programmation interprt autorisant la rcursivit; mais c'est avant tout l'interprteur standard de UNIX. Lors de l'ouvertue d'une session, appele login sous UNIX, un processus shell est cre qui permet l'utilisateur de dialoguer avec le systme. Trois types de commandes sont excutes par le shell: Les commandes externes qui sont contenues dans des rpertoires dfinis dans la variable d'environnement PATH. Dans ce cas l'excution de la commande est ralis par un processus ddi cr par le processus shell. Les commandes internes qui font partie du shell dont l'excution ne ncessite pas la cration de nouveaux processus. Ces commandes peuvent tre scindes en deux: - Les commandes d'usage frquent: cd, pwd, umask, set, - Les commandes composes de directives algorithmiques: if, then, else, while, case, for, Les commandes dfinies par une fonction ou un alias

(*) Priorit des commandes de mme nom: d'abord les fonctions ensuite les commande internes et enfin les commandes externes

Le bourne Shell est le premier shell cre et il reste celui dont tout systme Unix a besoin pour lancer les outils de configuration au dmarrage de la machine. ksh, bash et zsh sont plus enrichis mais restent compatibles avec le sh. Le csh et tcsh ont des syntaxes plus diffrentes de sh et trs proches de celle du langage C. L'important est qu'au moins un shell compatible avec sh existe sur une machine UNIX.
Bourne Shell /bin/sh

C Shell /bin/csh

Toronto C Shell /bin/tcsh

Bourne Again Shell /bin/bash

23/09/03

  ( C B@ & $ 0% 65 1 & 1 ( 0 ( &% $ " GFE2DA2987432##)'#!


Korn Shell /bin/ksh Z Shell /bin/zsh 3

       

1.1. Initialisation Le shell excute successivement deux fichiers avant d'afficher son caractre d'invite (par dfaut $): /etc/profile et le fichier .profile (se trouvant dans le rpertoire HOME de l'utilisateur). Si la variable ENV est dfinie (par un login korn shell) et si son contenu est la rfrence d'un fichier existant; ce fichier est excut.
Exemple de .profile: ls() { /bin/ls al $* } rm() { /bin/rm i $* } logout() { exit } PS1= PS1="Mir[$LOGNAME]" set -o vi alias p='ps -ef |sort |pg' Export PS1 #fonction ls() redfinit ls

Il est trs utile aprs une modification de .profile de faire prendre en compte son contenu sans fermer et rouvrir une session. Ce lancement force l'excution par le shell courant. $. .profile Ce tableau rcapitule les diffrentes faons pour lancer un script shell: Commande Conditions sur ref Effet ksh ref Fichier lisible Interprtation par un sous-processus ksh ref ou ./ref Fichier lisible et excutable Interprtation par un sous-processus ksh . ref Fichier lisible Interpretation dans le ksh courant exec ref Fichier lisible et excutable Recouvrement du ksh par un ksh non intractif interprtant le fichier Les versions rcntes prennent en compte les premiers caractres de la procdure: #!/bin/sh ou #!/bin/csh suivant le shell utilis. 1.2. Les variables d'environnement Elles sont utilises par le shell ou le systme. Certaines sont initialises automatiquement et ne peuvent tre modifies: HOME, LOGNAME ou USER. D'autres sont initialises automatiquement et peuvent tre modifies: PATH, TERM, SHELL. D'autres sont initialises par l'utilisateur dans le fichier .profile. L'utilisateur a la possibilit de dfinir d'autres variables. Ces variables ne se dclarent pas et elles sont locales au shell. Si on lance un autre shell la variable n'existe plus. La commande set permet de visualiser toutes les variables d'un shell.
4 23/09/03

  ( C B@ & $ 0% 65 1 & 1 ( 0 ( &% $ " GFE2DA2987432##)'#!


#fonction rm() redfinit rm #fonction logout() redfinit exit #commande interne de terminaison d'un shell #invite du shell #dition de lhistorique en mode vi #alias redfinissant ps #exportation de la variable d'environnement PS1

       

NomVar=valeur $NomVar export NomVar Exemple:

affecte valeur NomVar reprsente le contenu de la variable. export permet de rpercuter une variable sur l'arborescence descendante (shell fils).

Affectation des variables $ var1=abc $ var2="abc*toto" $ var3=abc*toto Affichage de variables $ echo $var1 $var2 $var3 abc abc*toto abc*toto Porte du mtacaractre $ : utilisation de {} $ var=toto $ echo $vartiti rien $ echo ${var}titi tototiti

1.3. Les caractres spciaux du shell 1.3.1. La gnration des noms de fichiers ? un caractre quelconque * une chane de caractres (ventuellement vide) [ dbut de dfinition d'un ensemble [! dbut de dfinition du complment de l'ensemble ] fin de dfinition d'un ensemble ou de son complment marque d'intervalle dans un ensemble Les caractres . en dbut de mot ou aprs un / ou / ne sont pas couverts par les abrviations. Les exprssions construites partir des caractres * ? [] sont appeles des expressions rgulires.
[af69R] [A-T] un caractre de la liste numre un caractre de l'intervalle alphabtique

1.3.2. Les autres caractres spciaux # $ & ; < > << >> | `` ' ' "" \ () {}
23/09/03

Introduit un commentaire Introduit un nom de variable Termine une commande lance en arrire plan Spare des commandes se trouvant sur une mme ligne Caractres de redirection Excute une commande Dlimite une chane de caractres o les caractres spciaux perdent leur signification sauf lui-mme Dlimite une chane de caractres o les caractres spciaux perdent leur signification sauf \ $ ` " Dspcilise le caractre qui le suit Excuter une commande dans un shell fils Regroupe des commandes
5

  ( C B@ & $ 0% 65 1 & 1 ( 0 ( &% $ " GFE2DA2987432##)'#!

       

1.4. Le passage des paramtres Le shell reoit les arguments sur la ligne de commande sous la forme de variables $1 $2 $3 ... $9. $0 est le nom de la commande. La commande interne shift permet de dcaler les arguments d'une position. p1 $1 shift p1

p2 $2

p3 $3

p4 $4

p5 $5

p2 $1

p3 $2

p4 $3

p5 $4

Les autres variables du script correspondant ces paramtres sont : $# le nombre de paramtres passs au script $* la liste des paramtres passs au script $$ le PID du processus excutant la commande $! le PID du dernier processus asynchrone $? le dernier status 1.5. Les entres sorties La commande read comme la commande echo peut recevoir pluseiurs arguments spars par des espaces ou tabulations. 1.6. Les structures de contrle 1.6.1. La commande test test expression ou [ expression ] Cette commande renvoie un code de retour gal 0 si l'expression est vraie et une valeur diffrente de 0 dans cas contraire. [ -a fichier ] existence du fichier [ -s fichier ] existence du fichier + taille non nulle [ -d fichier ] existence + tat de rpertoire [ -f fichier ] existence + tat de fichier [ -r fichier ] existence + autorisation de lecture [ -w fichier ] existence + autorisation d'criture [ -x fichier ] existence + autorisation d'excution [ -n chane ] chane non nulle [ -z chane ] chane nulle Les chanes de caractres [ $var = chane ] galit [ $var != chane ] diffrence Les expressions numriques [ $var = valeur ]
6 23/09/03

  ( C B@ & $ 0% 65 1 & 1 ( 0 ( &% $ " GFE2DA2987432##)'#!


p6 $6 p7 $7 p8 $8 p9 p10 p11 p12 p13 p14 $9 p6 $5 p7 $6 p8 $7 p9 $8 p10 p11 p12 p13 p14 $9

       

[ $var != valeur ] [ $var -oprateur valeur ] oprateurs possibles : -lt < -le -gt > -ge 1.6.2. La commande expr Pour valuer une expression numrique contenant une variable, il faut utiliser la commande expr . Les oprateurs autoriss sont + - * / %. exemple : remarque : [ `expr $var + 1` -gt 5 ] a= `expr $var + 1` expr $var : '.*' renvoie le nombre de caractres de var

1.6.3. La condition if if expression then commandes else commandes fi 1.6.4. La boucle until until expression do commandes done 1.6.5. La boucle while while expression do commandes done 1.6.6. La condition for for variable in liste de valeurs do commandes done 1.6.7. La condition d'aiguillage case case variable in cas1) commandes;; cas2 | cas3) commandes;; Casn) commandes;; esac
7 23/09/03

  ( C B@ & $ 0% 65 1 & 1 ( 0 ( &% $ " GFE2DA2987432##)'#!

       

Les cas sont conformes la syntaxe d'expressions rgulires 1.6.8. Les directives break et continue Ces deux directives peuvent tre utilises lintrieur des boucles for, while et until. Elles peuvent tre suivies dun nombre qui correspond au nombre de niveaux dimbrication pour lequel les directives sont appliqus. 1.7. Les fonctions Il est possible de dclarer une fonction dans le shell intractif ou lintrieur dun script shell. Elles peuvent renvoyer un code de retour. A laide de la commande interne return. La syntaxe: Nom_fonction() { liste de commandes }. Exemple:
isfile() { if [ -f $f ] then return 0 else return 1 fi } for i in $* do f=$i if [ isfile ] then echo "$i est un fichier" else echo "$i n'est pas un fichier" fi done

1.8. Les alias En ksh , on peut renommer une commande: alias nom=valeur unalias nom La commande alias sans arguments liste les alias dclars. L'option t liste ceux cres automatiquement lorsquon utilise des commanes externes. 1.9. Le job control: jobs, bg, fg, kill Ce mcanisme permet aux utilisateurs de ne voir que les processus lancs sous le shell intractif. Chaque commande analyse par le shell s'appelle tche ou job. Il peut s'agir d'un groupe de processus. Toute tche possde un numro. L'avantage d'un tel mcanisme est que la consultation des tches peut se faire sans solliciter le noyau (ps est gourmand). De plus le numro d'identification est un petit nombre. Le Korn shell permet le contrle des processus d'une manire fine. $ jobs Cette commande fournit la liste des tches cres par le shell, sous la forme : [1] tat tche1
8 23/09/03

  ( C B@ & $ 0% 65 1 & 1 ( 0 ( &% $ " GFE2DA2987432##)'#!

       

[2] + tat tche2 Le caractre + signale la tche courante, - la tche courante prcdente. $kill tche Pour tuer le processus, le job peut tre dsign de plusieurs faons %nombre Le nombre entre crochets %chane Le job dont le nom commence par chane %?chane Le job dont le nom contient chane %% ou %+ Le job courant %Le job prcdent
$ commande $ commande &

fg processus en avant plan fg Ctrl-z processus suspendu bg processus en arrire plan

23/09/03

  ( C B@ & $ 0% 65 1 & 1 ( 0 ( &% $ " GFE2DA2987432##)'#!


stop
9

       

2. Les principales commandes UNIX


Gestion de session, de compte, informations gnrales:
login passwd logname who [am i] id [a,u,g] groups uname[-a] tty stty clear date cal i j du quota [-v] cration d'une session de travail changer le mot de passe afficher le login de l'utilisateur liste des utilisateurs connects la machine numros et les noms d'identification de l'utilisateur et de son groupe liste des groupes auxquels appartient l'utilisateur nom de la machine, nom du systme d'exploitation afficher la rfrence absolue du terminal associ l'entre standard visualiser et modifier la valeur de paramtres de communication entre le systme et le terminal effacer l'ecran du terminal date du jour et l'heure courante calendrier du mois i (de 1 12) de l'anne j (de 1 9999) par dfaut le mois de l'anne courant fournit l'espace allou (en nombre de blocs de 512 octets) aux diffrents fichiers indique l'utilisateur s'il est contrl par quotas et dans l'affirmative les valeurs limites

Gestion des processus:


ps [-e, a, d, g, p, t, u] kill fournit des informations sur les processus en cours envoie un signal un processus

Gestion de fichiers:
pwd rfrence du rpertoire de travail cd changement de rpertoire de travail (~, ., ..) ls [-l,a,i,d] contenu d'un rpertoire ou caratristiques d'un fichier cat contenu d'un fichier more contenu par page touch modifier les dates de dernier accs en lecture et/ou criture cp[-i, r] copie physique d'un fichier cp ref_source ref_dest (les deux fichiers rfrencent un fichier ordinaire) cp ref_source1 ref_dest (les sources rfrencent des fichiers ordinaires et la destination rfrence un rpertoire) cp r ref_source1 ref_dest (si l'un des sources et la destination rfrencent un rpertoire) ln cration de liens ln ref_source ref_dest (les deux fichiers rfrencent un fichier ordinaire) ln ref_source1 ref_dest (les sources rfrencent des fichiers ordinaires et la destination rfrence un rpertoire) mv changement d'un nom de lien mv ref_source ref_dest (les deux fichiers rfrencent un fichier ordinaire) mv ref_source1 ref_dest (les sources rfrencent des fichiers ordinaires et/ou rpertoires et la destination rfrence un rpertoire) rm [-r] suppression de liens mkdir cration d'un rpertoire rmdir suppression d'un rpertoire chmod, chown, chgrp modification de caratristiques d'un nud

D'autres commandes:
sort uniq [-c, -u] paste tr compress uncompress 23/09/03 trier un fichier comparer des lignes de fichiers et ne conserver qu'un exemplaire de chaque ligne juxtaposer des lignes correspondantes de deux ou plusieurs fichiers copie sur la sortie standard les caractres lus sur l'entre standard aprs avoir ralis des susbstitutions ou des suppressions de caractres dfinies dans les arguments compression de fichiers dcompression de fichiers 10

  ( C B@ & $ 0% 65 1 & 1 ( 0 ( &% $ " GFE2DA2987432##)'#!

       

find file fc l[r, n] fc s chane

rechercher dans un rpertoire les fichiers d'un nom, d'un type , d'un user, classer le fichier ASCII, binaire, rpertoire, source C,

liste le contenu du fichier .history. rexcute la commande la plus rcente commenant par chane par dfaut de chane, la dernire commande est excute. Sous ksh: l'alias r est dfini r p (numro de la commande ou une chane) pour rappeler la commande

Fichiers administration utilisateurs:


Le fichier /etc/passwd a la structure suivante: nom_login:x:UID:GID:commentaire:chemin_repertoire_login:chemin_shell Le fichier /etc/group a la structure suivante: nom_group::GID:liste_autres_utilisateurs_ayant_acces

Oprations sur les contenus de fichiers:


Slection "verticale" head [ -n ] fichier Ecrit sur la sortie standard les n premires lignes du fichier tail [ -nlcb ] fichier Ecrit sur la sortie standard les n dernires lignes ou les n derniers caractres ou les n derniers blocs. grep [-v] pattern fichier Rcupre les lignes du fichier contenant pattern (une expression rgulire). L'option -v permet de rcuprer les lignes du fichier ne contenant pas le pattern. ^pattern permet de spcifier une recherche en dbut de ligne. pattern$ permet de spcifier une recherche en fin de ligne. Slection "horizontale" cut [ -ddlimiteur -fi,j ] fichier Rcupre les champs i et j spars par le dlimiteur indiqu aprs -d. cut [ -ci-j ] fichier Rcupre les caractres i j de chaque ligne : option -c. Comptage wc [ -lwc ] fichier wc -l wc -w wc -c wc compte le nombre de lignes compte le nombre de mots compte le nombre de caractres quivalent wc l

23/09/03

  ( C B@ & $ 0% 65 1 & 1 ( 0 ( &% $ " GFE2DA2987432##)'#!


11

       

Vous aimerez peut-être aussi