Vous êtes sur la page 1sur 109

UNIX

EMSI-CASABLANCA
A.AHMADI

2009/2010
A. AHMADI Unix

Chap 1
I- Introduction

Prsentation dUNIX
2

Le systme dexploitation UNIX est issu du milieu universitaire ; Il sest impos dans le milieu industriel : tous les constructeurs informatiques le proposent leur catalogue, parfois en alternative leur propre SE ; UNIX est le seul SE disponible sur : Les micro-ordinateurs ; Les stations de travail ; Les mini-ordinateurs ; Les mainframes ; Les supercalculateurs. Le succs dUNIX est justifi par : Portabilit du savoir ; Portabilit des programmes ;

A. AHMADI

Unix

II- Historique
3

1969 : naissance dUNIX, dans les Bell Laboratories (AT&T) par Ken Thompson et Dennis Ritchie ; Objectif : fournir un environnement de dveloppement aux programmeurs maison ; 1973 : nouvelle version dUNIX a t rcrite, en grande partie (90%) en C et en assembleur (10%) ; 1974 : Dveloppement de la version IV dUNIX par luniversit Berkeley (Californie) ; Dbut dune divergence entre les 2 versions dUNIX : AT&T et BSD Grand succs dUNIX dans les universits amricaines : adopt par les dpartements Computer Sciences pour la formation des tudiants en Informatique Systme ; Le nombre dexperts UNIX crot une grande vitesse ! 1977-1979 : Thompson et Ritchie rcrivent UNIX pour le rendre rellement portable ;
1980 :1res licences de distribution dUNIX dAT&T dlivres aux constructeurs ;
Unix

A. AHMADI

II- Historique
4

1984 : Cration du groupe X/Open. But : Normaliser les diffrentes versions ; Cration de la norme X-Window (systme de fentrage graphique) par MIT 1987 : Alliance entre AT&T et SUN visant la convergence entre les 2 systmes ; 1988 : Cration des consortiums : OSF (Open Software Foundation) et UNIX International : OSF : DEC, HP, IBM, Normalisation dun nouvel UNIX : OSF1 ; UNIX International : AT&T, SUN, UNIX System V ; 1992 : DEC/OSF1 : 1re version commerciale dOSF propose par DEC ; SystemV+BSD : 1re version commerciale propose par SUN ;

Il y a plusieurs UNIX, avec quelques petites diffrences. Exple : LINUX ;


A. AHMADI Unix

II- Historique
5

Le grand succs dUNIX est d aux facteurs suivants : Son adoption par les universits amricaines formation de plus dexperts Besoin dun standard exprim par les utilisateurs finals et les dveloppeurs : systme ouvert permettant une volution en douceur ; UNIX est le seul SE multiutilisateurs disponible faible cot. Il existe de nombreuses versions drives dUNIX qui peuvent tre classes en 2 groupes : Les UNIX Based : drives des sources AT&T et/ou Berkeley, comme : Ultrix (DEC), HP-UX (HP), AX (IBM), SOLARIS (SUN), LINUX ; Les UNIX Like : Systmes UNIX mais contenant un noyau totalement rcrit visant des applications bien prcises (temps rel, transactionnelles, etc) ;
UNIX-Based tendent faire disparatre les UNIX-Like.

Remarque :

A. AHMADI

Unix

II- Historique
6

Cration de groupes dutilisateurs afin dexprimer une indpendance vis--vis des constructeurs : Le groupe X/Open (1984) : Europen au dbut et international aprs ; Le groupe POSIX : fait partie de IEEE. Ses travaux sont plus dterminants.

A. AHMADI

Unix

II- Historique
7

A. AHMADI

Unix

III- Notion de Systme dExploitation


8

-Dfinition (Wikipedia)

e systme d'exploitation (SE, en anglais Operating System ou OS) est un ensemble de programmes responsables de la liaison entre les ressources matrielles d'un

ordinateur et les applications de l'utilisateur (traitement de texte, jeu vido) ;

l fournit aux programmes applicatifs des points d'entre gnriques pour les

priphriques.

A. AHMADI

Unix

III- Notion de Systme dExploitation


9

2- Rle dun Systme dExploitation


Cest le matre dorchestre : indispensable pour utiliser les ressources de la machine. Ses principales fonctions sont :

Gestion de la mmoire centrale ; Gestion des processeurs : ordonnancement ; Gestion des priphriques : E/S ; Gestion des fichiers : sur les mmoires de masse ; Gestion des ressources : attribution des ressources ncessaires ; Gestion des permissions et privilges ;

A. AHMADI

Unix

IV- Le Systme dExploitation UNIX


10

1- Caractristiques dUNIX
UNIX est un systme dexploitation : Multiutilisateurs ; Multitches ; possde un systme de gestion de fichiers arborescence unique, mme avec plusieurs priphriques de stockage ; les entres/sorties et la communication interprocessus sont compatibles avec la notion de fichier ;

A. AHMADI

Unix

III- Le Systme dExploitation UNIX


2- Composants dUNIX
11

Unix est un SE, constitu dun noyau, dun interprteur de commandes et dun grand nombre dutilitaires.
a- Noyau

Il assure la gestion des ressources physiques (processeur, mmoire, priphriques) et logicielles (processus, fichiers, etc) ; Il accepte et traite les instructions du shell ; Il gre les permissions daccs dans le systme de fichier ; Il est constitu dun ensemble de procdures et de fonctions crites en C et en Assembleur (entre 10 et 90 Ko) ; La structure du noyau est monolithique (pas de couches comme les autres SE).

A. AHMADI

Unix

a- Noyau

12

A. AHMADI

Unix

III- Le Systme dExploitation UNIX


2- Composants dUNIX
- Interprteur de commandes (Shell)

13

utilisateur dUnix communique indirectement avec le noyau via le Shell ;

nix possde plusieurs Shell (Bourne Shell, C-shell, Korn shell, ) : richesse mais aussi une confusion ;

interface utilisateur dUnix est donc constitue : dune bibliothque de programmes excutables : les commandes ; Du shell lui-mme, interprteur de commandes et langage de commandes
permettant de raliser des scripts ;

nterprte les commandes ;

dite les commandes en ligne ;


A. AHMADI Unix

III- Le Systme dExploitation UNIX


2- Composants dUNIX
14

- Utilitaires

Assembleurs et diteurs de liens ;

ompilateurs pour diffrents langages : C, Pascal, Ada, Fortran,

utils de bureautique : messagerie, traitement de textes ;

diteurs de texte (ed, vi, emacs) ;

utils pour le Web (Apache, Netscape).

A. AHMADI

Unix

III- Le Systme dExploitation UNIX


3- Structure dUNIX
15

Utilisateur Application Shell

Noyau (Kernel)

Matriel

A. AHMADI

Unix

IV- Le concept Open source


16

Richard Stallman (chercheur au MIT, auteur de gcc, Emacs ...) nonce clairement le concept de logiciel libre ( free ) : ... un savoir scientifique doit tre partag en le distribuant, ... les codes sources doivent tre libres d'accs ...

Dmarre le projet GNU (1984). But : recrer un systme d'exploitation complet (Unix-like), compos uniquement de logiciels libres. Cre la FSF (Free Software Fundation, 1985) pour grer le projet GNU.

Remarque : Free dans la culture hacker signifie libre , pas ncessairement gratuit ou non commercial

A. AHMADI

Unix

1- Principe de base du projet GNU


17

Laccs libre au code source acclre le progrs en matire d'informatique car l'innovation dpend de la diffusion du code source. Richard Stallman dcrit dans le Manifeste GNU les quatre liberts fondamentales que doit respecter un logiciel pour tre qualifi de logiciel libre (free software en anglais) : libert d'excution : tout le monde a le droit de lancer le programme, quel qu'en soit le but ; ii. libert de modification : tout le monde a le droit d'tudier le programme et de le modifier, ce qui implique un accs au code source ; iii. libert de redistribution : tout le monde a le droit de rediffuser le programme, gratuitement ou non ; iv- libert d'amlioration : tout le monde a le droit de redistribuer une version modifie du programme ;
i.

A. AHMADI

Unix

2- La licence GPL (General Public licence) www.gnu.orgcopyleft/gpl.html


18

Autorise l'utilisateur copier et distribuer volont le logiciel qu'elle protge, pourvu qu'il n'interdise pas ses pairs de le faire aussi ; Requiert aussi que tout driv d'un travail plac sous sa protection soit lui aussi protg par elle ;

Quand la GPL voque les logiciels libres, elle traite de libert et non de gratuit (un logiciel GPL peut tre vendu) ;
= gratuit et libert

Remarque : en anglais free

A. AHMADI

Unix

3- Le copyleft de la licence GPL www.gnu.org/copyleft


19

Cr par Stallman en 1984

Garantit les 4 liberts fondamentales pour tous les utilisateurs (artistes, informaticiens, ou quiconque produisant un travail soumis au droit d'auteur) ; vite de mettre les logiciels GNU dans le domaine public (pas de protection) ; Spcifie que quiconque redistribue le logiciel, avec ou sans modifications, doit aussi transmettre la libert de les copier et de les modifier ; Encourage et aide les programmeurs (entreprises, universits) qui veulent ajouter et/ou contribuer des amliorations des logiciels libres ;

Un logiciel copyleft est d'abord dclar sous copyright, puis on ajoute les conditions de distribution et les liberts lgalement indissociables.
A. AHMADI Unix

V- Linux
20

1991 : Linus Torvalds (Finlandais) dveloppe un noyau s'inspirant d'unix : linux. Il le met trs vite sous licence GPL, rejoint par de nombreux dveloppeurs.

Succs : qualit technique du noyau + nombreuses distributions qui facilitent l'installation du systme et des programmes.

A. AHMADI

Unix

Distributions linux
21

Distribution linux un noyau Linux des programmes, en majorit libres (un navigateur Web, un lecteur de Mail, un serveur FTP, etc...) une mthode pour installer et dsinstaller facilement ces programmes un programme d'installation du systme d'exploitation Quelques distributions : Fedora, Redhat, Debian, Mandrake/Mandriva, Knoppix, Gentoo

A. AHMADI

Unix

Distributions linux
22

www.redhat.fr socit amricaine fonde en 1994. clbre pour avoir introduit le systme Red hat Package Manager (RPM), de gestion de paquets logiciels

fedora.redhat.com version grand public gratuite de RedHat utilise le systme de gestion de paquets RPM

A. AHMADI

Unix

Distributions linux
23

www.mandriva.com LA distribution franaise par excellence Trs rpandue dans le milieu ducatif, et en PME/PMI utilise le systme de gestion de paquets RPM

www.novell.com/linux/suse socit allemande fonde Nuremberg en 1993 rachete en 2003 par l'diteur de logiciels amricain Novell utilise le systme de gestion de paquets RPM

A. AHMADI

Unix

Distributions linux
24

www.debian.org distribution issue d'un effort communautaire, le projet Debian , et non d'une entreprise distribution trs soigne et ingnieuse austre installer et administrer (dconseille aux dbutants ?) Utilise le systme de gestion de paquets debian

www.ubuntu-fr.org Distribution populaire base dbian lance en 2004. Son nom provient d'un ancien mot bantou (langue d'Afrique), ubuntu, signifiant Humanit aux autres, ou encore Je suis ce que je suis grce ce que nous sommes tous

A. AHMADI

Unix

Distributions linux
25

www.turbolinux.com La distribution de Linux majeure pour les pays d'Asie(particulirement rpandue en Chine)

A. AHMADI

Unix

VI-Installation de Linux
1- Partitionnement
26

La plupart des systmes d'exploitation (fixes) correctement installs utilisent un disque plusieurs partitions: partition systme (fichiers systmes, fichiers de configuration ...) partition utilisateurs (donnes des utilisateurs) etc.

exploitation plus scurise ; on peut formater une partition indpendamment des autres ; on peut utiliser une partition en lecture seule ; partitionnement statique => planifier le partitionnement ; on ne peut pas modifier simplement un partitionnement statique ; partitionner est une opration low level , risque !!
Pour bnficier des avantages du partitionnement dynamique il faut passer des solutions de type RAID (Redundant Array of Independant Disks) ou LVM (Logical Volume Manager)
Unix

A. AHMADI

VI-Installation de Linux
1- Partitionnement
27
M B R

Disque dur entier


Partition primaire 1 /dev/hda1 Systme Windows bootable

(/dev/hda)
4 partitions primaires max

M B R

Partition primaire 2 /dev/hda2 Data utilisateur

Partition primaire 3 /dev/hda3 Applications

Partition primaire 4 /dev/hda4 Archives

3 partitions primaires max +1 tendue

M B R

Partition primaire 1 /dev/hda1 Systme Windows bootable

Partition primaire 2 /dev/hda2 Data utilisateur

Partition tendue 3 /dev/hda5 Linux Syst. /dev/hda6 Data user

/dev/hda3
/dev/hda7 Swapp

/dev/hda8 Applications

MBR

TP BL BSPartition 1

BS

Partition 2 bootable

BSPartition 3
<=> <=> /dev/hda1 /dev/hda2

MBR : Master Boot Reccord TP : Table Partition BL : Boot Loader BS : Boot Sector

Remaque : Windows et Linux :


A. AHMADI Unix

C: D:

...

VI-Installation de Linux
2- Systmes de fichiers
28

Syst. d'exploitation Dos Windows 95

Types de systme de fichiers supports FAT16 FAT16

Windows 95 OSR2
Windows 98 Windows NT4 Windows 2000/XP

AT16, FAT32
FAT16, FAT32 FAT, NTFS (version 4) FAT, FAT16, FAT32, NTFS (versions 4 et 5)

Linux
MacOS SGI IRIX

Ext2, Ext3, ReiserFS, Linux Swap, (FAT, NTFS, ...)


HFS, MFS XFS

FreeBSD, OpenBSD UFS (Unix File System)

Sun Solaris
IBM AIX
A. AHMADI

UFS (Unix File System)


JFS (Journaled File System)
Unix

Chap 2

Premier contact avec Unix


29

Se connecter en tant que root : login : sudo -i, puis le mot de passe du root ou sudo commande suivie du mot de passe du root Quitter la session du root : <Ctrl-d> ou exit Plusieurs terminaux peuvent tre lancs simultanment : graphiquement ou <Ctrl-AltF1>, <Ctrl-Alt-F2>, ... Pour quitter un terminal : exit Pour rebooter lordinateur : sudo shutdown r now (r : reboot) Pour arrter lordinateur : sudo shutdown h now (h : halt) Cration dun compte utilisateur :

Mthode 1

Se connecter en tant que root ; Taper useradd ali pour crer le compte ali (avec les informations par dfaut) ; Taper passwd ali pour affecter un nouveau mot de passe au compte ali, sinon lutlisateur pourra remplacer son mot de passe vide par la commande passwd une fois connect. Remarque : sous certains shells, la commande adduser permet de crer un compte en demandant ses informations de manire interactive.
A. AHMADI Unix

Chap 2

Premier contact avec Unix


30

Mthode 2

Se connecter en tant que root ; Editer le fichier /etc/passwd : vi /etc/passwd ; Copier une ligne dun utilisateur, la modifier et sauvegrader le fichier /etc/passwd ; Taper passwd ali pour affecter un nouveau mot de passe au compte ali, sinon lutlisateur pourra remplacer son mot de passe vide par la commande passwd une fois connect. Personne, pas mme le root, ne saurait retrouver le mot de passe en clair dun utilisateur donn.

i le mot de passe est oubli : 2 cas Pour un utilisateur ordinaire : 2 solutions Le root peut effacer le password crypt du fichier /etc/passwd, puis en affecter un nouveau ; Le root peut modifier le password (passwd ali) et le communiquer ali.

A. le AHMADI Unix our root : nouveau chargement du syst. Unix et agir en mode mono-utlisateur.

Chap 2

Premier contact avec Unix


31

Suppression dun utilisateur : seul le root pour supprimer un compte : userdel ali Configuration clavier AZERTY (sur Ubunto) : SystmePrfrencesClavierAgencementsAjouterchoisir France et la slctionner par dfaut. Avoir de laide sur une commande : man commande (exple : # man ls). Affichage du nom de la machine, Unix, version, ... : uname -a Afficher un message : echo message (exple 1 : echo salut tout le monde) (exple2 : # echo n il ; echo pleut : -n limine le retour ligne) Changer le shell dans une session : exec nom_shell (exples ; exec sh, exec csh, exec ksh, exec bash,...) pour revenir au shell prcdent : <ctrl-d> ou exit. Pour changer le shell par dfaut (dans /etc/passwd) : # chsh. Il demandera le password root puis la saisie du shell (exple: /bin/csh). Le nouveau shell sera appliqu la nouvelle session ; Le root peut aussi diter le fichier /etc/passwd puis modifier le shell par dfaut dun user.
Unix

A. AHMADI

Chap 2

Premier contact avec Unix


32

Affichage du shell par dfaut : # echo $shell ou echo $SHELL Affichage du nom du terminal utlis : # tty Affichage de la liste des infos (liste de commandes de contrle) : # tty -a Modification dune commande : tty commande combinaison (exple : # stty erase ^H) effacement du dernier caractre par <ctrl-H> Affichage du nom de login dune session : logname Affichage du nom dutilistateur actuel du terminal : whoami (login : toto . Su ali ., # logname toto et # whoami ali ) Effacement lcran : clear Affichage des jours du mois actuel (calendrier) : cal Affichage du calendrier complet dune anne donne : cal annee (exple : # cal 2009) Affichage des jours du mois dune anne : cal mois annee (exple : # cal 3 2009) Affichage du jour et de lheure : date Agrmenter le message de retour de la date : # date +Le %d/%m/%y a %H:%M:%S Le 19/10/09 a 10:15:47

A. AHMADI

Unix

Chap 2

Premier contact avec Unix


33

# date +Le %d/%m/%y%n a %Hheures %Mminutes %Ssecondes Le 19/10/09 a 17heures 45minutes 17secondes Pour viter de taper chaque fois cette longue commande, C-shell permet de dfinir des alias : # alias flash \ (\ permet de revenir la ligne et de taper la suite de la commande) date +Le %d/%m/%y%n a %Hheures %Mminutes %Ssecondes Si lon tape la commande flash Unix affichera : Le 19/10/09 a 17heures 45minutes 17secondes Rveil : leave hhmm ou leave +hhmm ou leave +mm # leave 1432 rveil met des appels sonores 14h32) # leave +0215 rveil dans 2h et 15 mn # leave + 13 rveil dans 13 mn Un triple signal sonore : 5mn avant linstant prvu, 1mn avant et linstant prvu
Unix

A. AHMADI

Chap 3

Systme de fichiers
34

Comme la majorit des systmes dexploitation, les donnes sous UNIX sont stockes

dans des fichiers. Ces fichiers sont organiss hirarchiquement en rpertoires ; On peut imaginer le systme de fichiers UNIX comme un arbre (renvers). Les rpertoires sont reprsents par les branches, et les fichiers par les feuilles; Le sommet de larbre sappelle le rpertoire racine (root) ( /) Chaque fichier (ou rpertoire) dans larbre est nomm en listant toutes les branches qui ramnent vers la racine, et en les sparant par des /, comme suit: /home/eleve1/documents/rapports/tp.txt

A. AHMADI

Unix

Chap 3

Systme de fichiers
35

bin

boot

dev

etc

home

lib

mnt

proc sbin

sys

tmp

usr

var

Root directory ( / ) : C'est le haut de l'arborescence. Il n'y a qu'une et une seule entre sur

le file system. Le root directory est le seul rpertoire sans pre. Tous les fichiers et chemins d'accs absolus ont le root directory dans le chemin d'accs. /bin et /sbin : contiennent les commandes de base Unix (ls, cp, rm, mv, ln, etc.) utilises entre autres lors du dmarrage du systme. Les fichiers contenus dans ces rpertoires ne sont que des excutables. /dev : contient les fichiers spciaux permettant de communiquer avec tous les priphriques comme les disques, les terminaux, les drouleurs de bandes, les imprimantes, etc.
A. AHMADI Unix

Chap 3

Systme de fichiers
36

/etc : contient tous les fichiers d'administration et un certain nombre de commandes

systme. /home : contient les rpertoires personnels des utilisateurs du systme. /root : cest le rpertoire personnel de l'administrateur.
/usr : contient un certain nombre de sous-rpertoires. Chacun contient les fichiers

ncessaires au fonctionnement en mode normal du systme. Par exemple : /usr/bin et /usr/sbin contiennent les commandes supplmentaires non contenues dans /bin et /sbin ; /usr/lib contient les bibliothques pour le fonctionnement d'Unix et pour le dveloppement ; /usr/include contient les fichiers de dclaration des fonctions systme pour le dveloppement.
/var : contient les fichiers variables (susceptibles d'tre modifis frquemment) : journaux

(logs), e-mails, bases de donnes, archives, ...


A. AHMADI Unix

Chap 3

Systme de fichiers
37

A. AHMADI

Unix

Chap 3

Systme de fichiers
38

bin
eleve3 documents

home
eleve1 documents rapports

usr
eleve2 email supports tp2.txt tp3.txt

etc

tp2.txt

tp1.txt

A. AHMADI

Unix

Chap 3

Systme de fichiers
39

1- Commandes Unix
Une commande Unix est compose dun code mnmonique (son nom), suivi parfois

doptions et/ou paramtres. Lespace est le caractre sparateur ; Une commande nest interprte que lorsque lutilisateur a tap <Entre> ; exple : ls l /home/toto Il est possible, tout moment (avant <Entre>) de modifier ou deffacer une commande saisie au clavier : <Backspace> efface le dernier caractre (ou <Ctrl-h>) <Ctrl-u> permet dannuler toute la ligne Remarques : C-shell et Korn-shell permettent de modifier des commandes dj excutes et de les relancer ; Lexcution dune commande peut tre interrompue par <Ctrl-C> : exple : # sleep 60 (son excution dure 60 secondes. Pour linterrompre : <Ctrl-C>) Il est formellement dconseill de de redmarrer la machine Unix : Arrt brutal systme de fichiers incohrent
A. AHMADI Unix

Chap 3

Systme de fichiers
40

2- Commandes lies au systme de fichiers


La commande ls permet dafficher le contenu des rpertoires et les dtails concernant

les fichiers ; Les options les plus utiles pour ls : -l : affiche le type de fichier, les protections, le nombre de liens avec le fichier, le propritaire, le groupe, la taille en octets, la date de dernire modification et le nom du fichier ; -F : ajoute un "/" aprs le nom de chaque rpertoire, un "*" aprs chaque fichier possdant le droit d'excution et un "@" aprs chaque fichier lien -a : liste tous les fichiers y compris les fichiers cachs. -R : liste les fichiers et les rpertoires de faon rcursive. Les arguments de ls (sils existent) sont interprts comme des noms de fichiers ou de rpertoires.

A. AHMADI

Unix

Chap 3

Systme de fichiers
41

2- Commandes lies au systme de fichiers


Pour dnommer un fichier on peut utiliser la dnomination absolue, cest dire en

partant de la racine (/) : /users/Etudiants/ali/mail/imp.txt (nommage absolu) Mais si notre rpertoire de travail est /users/Etudiants/ali, il suffira de nommer ce fichier: mail/imp.txt (nommage relatif) Et si le rpertoire de travail est /users/Etudiants/ali/mail : imp.txt (nommage relatif) ; pwd (Print Working Directory) : Affiche le chemin d'accs absolu du rpertoire courant ; cd rep (Change Directory) : Change le rpertoire courant et dplace lutilisateur vers rep ; La commande cd sans arguments dplace lutilisateur vers son rpertoire personnel ; more (MORE) : Permet dafficher le contenu dun fichier page par page Espace : affichage page par page <Entre> : affichage ligne par ligne On peut visualiser le % de lecture en bas Quand un rpertoire est cr, le systme gnre automatiquement 2 sous-rpertoires reprsentant des liens vers le rpertoire cr et le rpertoire pre : le rpertoire "." = rpertoire courant, le rpertoire ".." = rpertoire pre.
A. AHMADI Unix

Chap 3

Systme de fichiers
42

2- Commandes lies au systme de fichiers


Le rpertoire ".." est trs utile pour rfrencer ce qui se trouve au dessus du rpertoire courant dans l'arborescence du systme de fichier. Ainsi il suffira d'utiliser ".." dans un chemin d'accs relatif pour rfrencer le rpertoire pre. Exemples : # cd .. : remonte d'un cran dans l'arborescence ; # more ../../fich : liste le contenu d'un fichier deux niveaux au dessus dans l'arborescence

A. AHMADI

Unix

Chap 3

Systme de fichiers
43

2- Commandes lies au systme de fichiers


mkdir (make directory) : permet de crer des rpertoires. Syntaxe : mkdir [-p] rep1 ...

Exple : # mkdir /users/Etudiants/ali/temporaire mkdir -p permet de crer une suite de rpertoires. Exple : mkdir -p pgmes/java/essais rmdir (remove directory) : permet de supprimer des rpertoires. Les rpertoires supprimer doivent imprativement tre vides. Syntaxe : rmdir rep1 il est impossible de supprimer des rpertoires qui se trouvent entre la racine et le rpertoire courant. Remarque : Dans les 2 commandes, on peut utiliser des chemins d'accs relatifs ou absolus. Exemples : # mkdir monrep # mkdir monrep/sd1 monrep/sd2 monrep/sd1/sd11 # mkdir monrep/sd3/sd31 # rmdir monrep/sd2 # rmdir monrep/sd3/sd31 monrep/sd3 # rmdir monrep/sd1/sd11 monrep/sd1 monrep du (Disk Usage) : donne loccupation disque en blocs (1 bloc =512 Oct ou 1ko) des sousrpertoires du rep. Spcifi ou du rep. Courant (si aucun rep. nest spcifi)
A. AHMADI Unix

Chap 3
Attributs d'un fichier

Systme de fichiers
44

3- Commandes de manipulation de fichiers

Par dfinition, un fichier est une suite d'octets possdant les attributs suivants : type, nom masque de protection, nombre de liens avec d'autres fichiers, propritaire et groupe, taille, date de cration et de dernire modification.
Types de fichiers
standard rpertoire lien symbolique fichier spcial mode bloc fichier spcial mode caractre fichier spcial mode rseau pipe nomm Type Code d l b c n p

A. AHMADI

Unix

Chap 3

Systme de fichiers
45

3- Commandes de manipulation de fichiers


Le type "lien symbolique" correspond un fichier spcial pointant physiquement sur un

autre ; Les types "fichier spcial mode bloc" et "fichier spcial mode caractre" servent communiquer avec les priphriques (disques, terminaux, etc.) ; Le type "fichier spcial mode rseau" sert de canal de communication entre processus sur diffrentes machines. Le type "pipe nomm" sert de canal de communication entre diffrents processus sur une mme machine.
Noms de fichiers
La syntaxe dun nom de fichier nest pas stricte. Il est recommand de :

Limiter le nom 14 caractres Nutiliser que les lettres MAJ et MIN, les chiffres et quelques caractres (. , -,_) Longueur minimale dun nom : 1 caractre ; Caractres proscrire : \ > < $ ? & * + * ! ( ) @ ~ <espace>, caractres accentus
A. AHMADI Unix

Chap 3

Systme de fichiers
46

3- Commandes de manipulation de fichiers


Un fichier dont le nom commence par un point est un fichier cach (exple : .profile) ; Le point sert aussi suffixer des fichiers (exples : essai.c, include.h, essai.f, essai.o, ) ; Les caractres gnriques permettent dappliquer une commande plusieurs fichiers :

* : dsigne toute chane de 0 n caractres ; ? : dsigne un caractre quelconque ; *+ : dsigne un caractre parmi ceux entre crochets. Exples : fich.* : dsigne tous les fichiers de nom fich et ayant suffixe ; essai? : dsigne tous les fichiers ayant 6 caractres dont les 5 premiers sont essai ; [a-f] : dsigne une lettre comprise entre a et f ; [a-z]* : dsigne les noms commenant par une lettre minuscule.

A. AHMADI

Unix

Chap 3

Systme de fichiers
47

1- Commandes de manipulation de fichiers


La commande cat (conCATenate) : permet dafficher, crer, copier et concatner des

fichiers : Exple1 : cat /etc/passwd : affiche le contenu du fichier texte /etc/passwd Exple2 : cat -n /home/toto/essai permet de numroter les lignes du fichier affich Exple3 : cat > essai : cre le fichier essai et crit le texte : Bonjour . Bonjour comment vas-tu ? <Ctrl-d> (caractre de fin de saisie)
La commande cp (CoPy) : permet de copier un fichier (ou un rpertoire)

syntaxe : cp [option] fichier_origine fichier_destination ou cp [option] fichier rpertoire exple1 : cp test1 test2 : fait une copie du fichier test1 en un fichier test2 Nous possdons maintenant deux exemplaires de notre fichier dans /root. Remarque : si lon effectue une copie d'un fichier sur un fichier qui existe dj, celui-ci sera effac et remplac par le nouveau fichier.
A. AHMADI Unix

Chap 3

Systme de fichiers
48

1- Commandes de manipulation de fichiers


exple2 : # cp test1 /home fait une copie du fichier test1 dans le rpertoire /home en gardant le mme nom. exple3 : # cp test1 /home/test2 fait une copie de test1 dans /home avec un autre nom. exple4 : # cp * /home/toto/doss4 fait une copie du contenu du rep courant dans le rep : /home/toto/doss4
Quelques options importantes de cp :

cp -i : avertit l'utilisateur de l'existence d'un fichier du mme nom et lui demande s'il peut ou non remplacer son contenu. cp -b : permet comme l'option -i de s'assurer que la copie n'crase pas un fichier existant : le fichier cras est sauvegard, seul le nom du fichier d'origine est modifi et cp ajoute un tilde (~) la fin du nom du fichier. cp -l : permet de faire un lien "dur" entre le fichier source et sa copie. Le fichier copi et sa copie partageront physiquement le mme espace. cp -p : permet lors de la copie de prserver toutes les informations concernant le fichier comme le propritaire, le groupe, la date de cration ; cp -r : permet de copier de manire rcursive l'ensemble d'un rpertoire et de ses sousrpertoires.
A. AHMADI Unix

Chap 3

Systme de fichiers
49

1- Commandes de manipulation de fichiers


cp -v : permet d'afficher le nom des fichiers copis. Utile si par exemple pour vrifier la copie plusieurs fichiers ( l'aide des occurrences "*" et/ou "?"). La commande rm (ReMove) : supprime un ou plusieurs fichiers dun rpertoire : syntaxe : rm fich1 fich2 exple : rm /home/toto/lettre2
Quelques options importantes de rm :

rm -i : permet de demander l'utilisateur s'il souhaite vraiment supprimer le ou les fichiers en question ; rm -d : permet de supprimer un rpertoire qu'il soit plein ou non (attention dangereux ...) rm -r : permet de supprimer un rpertoire et ses sous rpertoires (attention trs dangereux) rm -f : permet de supprimer les fichiers protgs en criture et rpertoires sans que le prompt demande une confirmation de suppression ( utiliser avec prcaution ...) . La commane mv (MoVe) : permet de renommer et de dplacer un fichier ou un rpertoire : = copie+suppression syntaxe : mv fich1 fich2 ou mv fichiers repertoire

A. AHMADI

Unix

Chap 3

Systme de fichiers
50

1- Commandes de manipulation de fichiers


exples : mv lettre1 lettre2 : renomme le fichier lettre1 en lettre2 ; mv rep3 doss3 : renomme le rpertoire rep3 en doss3 ; mv test /home/toto/pgme : dplace le fichier test du rpertoire courant vers le rpertoire /home/toto/pgme .
Quelques options importantes de mv :

mv -b : ('b' comme "backup") va effectuer une sauvegarde des fichiers avant de les dplacer : mv -i : ('i' comme interactive) demande pour chaque fichier et chaque rpertoire s'il peut ou non dplacer fichiers et rpertoires. mv -u : ('u' comme update) demande mv de ne pas supprimer le fichier si sa date de modification est la mme ou est plus rcente que son remplaant

A. AHMADI

Unix

Chap 3

Systme de fichiers
51

1- Commandes de manipulation de fichiers


La commande find (FIND) : recherche un fichier partir dun rpertoire donn :

exple1 : find / -name test1 -print "/" indique que nous voulons chercher partir de la racine notre fichier test1. "-name " est l'option qui indique ici que nous voulons spcifier le nom d'un fichier. "-print" demande find d'afficher le rsultat. exple2 : find . -name .profile -print recherche le fichier cach .profile partir du rpertoire courant . et laffiche lcran. exple3 : find /home/toto/pgmes test*' -print recherche tous les fichiers commenant par test partir du rpertoire /home/toto/pgmes. exple4 : find . -type f -size +400000c -print recherche tous les fichiers de taille >400000 caractres partir du rp. courant . exple5: find /usr -type d -name bin -print recherche et affiche tous les rpertoires de nom bin, partir du rpertoire /usr. exple6 : find . -name core -exec rm {} \ ; recherche partir du rep. courant, tous les fichiers de nom core et les supprime. La diffrence entre -exec et -ok est que la 2me demandera pour chaque fichier trouv si lon souhaite rellement raliser lopration.
A. AHMADI Unix

Chap 3

Systme de fichiers
52

1- Commandes de manipulation de fichiers


Dans le cas d'un lien dur, la suppression de l'un des deux fichiers n'affectera pas l'autre. Dans le cas d'un lien symbolique, la suppression du fichier source entranera un changement de comportement du fichier lien qui ne correspondra plus un fichier valide et sera donc dit "cass" ("broken"). Utilit des liens : Un mme fichier peut apparatre dans plusieurs endroits avec des noms diffrents ; Optimisation de lespace disque ; Assurer la cohrence et la synchronisation des donnes de diffrentes copies (modification) Exple1 : ln test /home/toto/test_lien_dur (cration de lien dur) Exple2 : ln s test /home/toto/test_lien_symb (cration de lien symbolique)
ln i : demande l'utilisateur s'il souhaite craser le fichier qui a un lien sur le fichier source au

cas ou celui-ci existerait dj. ln d : effectue des liens durs sur des rpertoires . Seuls les utilisateurs possdant les droits adquats pourront le faire.

A. AHMADI

Unix

Chap 3

Systme de fichiers
53

1- Commandes de manipulation de fichiers


La commande wich (WICH) : permet simplement de connatre le chemin d'un excutable.

exple : wich ls affiche /bin/ls La commande grep (GREP) : Recherche dans un ou plusieurs fichiers, toutes les lignes contenant
une chane de caractres donne. exple1 : grep bonjour fich : recherche la chane bonjour dans le fichier fich exple2 : grep n recrutement test.html : recherche dans le fichier test.html, la ligne et son numro, contenant la chane recrutement exple3 : grep l bonjour /home/toto/docs/* : permet de n'afficher que les noms des fichiers du rpertoire /home/toto/docs contenant la chane bonjour .

La commande ln (LINK) : permet de crer un lien dur ou symbolique sur un fichier.

Syntaxe : ln fich_source fich_lien. 2 types de liens : lien dur et lien symbolique Le lien symbolique fait rfrence un fichier dans un rpertoire alors que le lien dur fait rfrence un espace sur le disque dur.

A. AHMADI

Unix

Chap 3

Systme de fichiers
54

1- Commandes de manipulation de fichiers


La commande wc (Word Count) : permet le dnombrement des mots, lignes et caractres

dans un fichier. Un mot est dtermin par des espaces, des tabulations ou une nouvelle ligne. Syntaxe : wc lwc fichier (l : ligne (line) w : mot (word) c :cararactre (character) ) exple : wc w essai : Affiche le nombre de mots du fichier essai.

A. AHMADI

Unix

Chap 3
Exercices

Systme de fichiers
55

Exercice 1
Dans votre rpertoire daccueil, crez larborescence suivante, en nutilisant que des chemins rep1 relatifs :
fich11 rep3

fich12

rep2

fich21

fich22

fich31

fich32

Vrifiez la cration.

Exercice 2
Comment dplacer toute larborescence rep3 sous le rpertoire rep2 ? Supprimez tout sauf rep1, fich11 et fich12.

Exercice 3
A laide de la commande id, dterminez votre UID et votre groupe (nom de groupe et GID). Combien y a t-il dutilisateurs dans votre quipe ?
A. AHMADI Unix

Chap 3
Exercices

Systme de fichiers
56

Exercice 4
Copier les fichiers dont l'avant dernier caractre est un 4 ou 1 dans le rpertoire /tmp en une seule commande.

Exercice 5
Listez tous les fichiers : se terminant par 5 commenant par annee4 commenant par annee4 et de 7 lettres maximum commenant par annee avec aucun chiffre numrique contenant la chane ana commenant par a ou A

A. AHMADI

Unix

Chap 4

Protection des fichiers


57

I- Droits daccs aux fichiers


Unix possde des mcanismes permettant au propritaire d1 fichier (celui qui la cr) den

protger le contenu : droits daccs (permissions) ; Unix dfinit la notion de groupe dutilisateurs pour permettre le partage de fichiers faciliter le travail en quipe. Tout utilisateur appartient au moins 1 groupe; Droits daccs dun fichier : ensemble dindicateurs associs un fichier ; 3 types dutilisateurs pour chaque fichier : Le propritaire du fichier ; Les membres du groupe du propritaire ; Les autres utilisateurs du systme ; 3 modes daccs (par fichier et par type dutilisateur) : Autorisation dcriture (w) ; Autorisation de lecture (r); Autorisation dexcution (x); 10 attributs associs chaque fichier Unix (1 pour le type et 9 pour la protection) : exple : -rw- rw- r-- (- : fich ordinaire, rw- :droits propritaire, rw- : droits groupe, r-- :droits autres utilisateurs)
Unix

A. AHMADI

Chap 4

Protection des fichiers


58

II- Modification des droits d accs


1- Modification des droits daccs
La protection dun fichier ne peut tre modifie que par le propritaire laide de la

commande chmod (Change MODE) ; 2 modes dutilisation de la commande chmod : Description des protections par un nombre octal (utilisation ancienne) : exple1: rwx rw- r-x est reprsent par le nombre octal : 765 111 110 101 exple2 : modification de la protection du fichier essai en r-x rw- rwx : chmod 567 essai Description absolue ou relative des droits daccs (mode symbolique) :
syntaxe : chmod [who] op [permission] fichier who : combinaison de lettres u (user=propr), g (group), o(others=autres) ou a (all=tous) op : oprateur : + (ajoute 1 droit), - (supprime 1 droit), = (affecte 1 droit de manire absolue (tous les autres bits sont remis 0) permission : r (read), w( write), x (execute). exple1 : chmod u-w test: supprime le droit dcriture au propritaire sur le fichier test exple2 : chmod g+r test : ajoute le droit de lecture pour le groupe sur le fichier test exple3 : chmod ug=x test : accs uniquement en excution pour le propriataire et le groupe
A. AHMADI Unix

Chap 4

Protection des fichiers


59

II- Modification des droits d accs


2- Droits daccs la cration
La protection d1 fichier, son propritaire et son groupe sont tablis la cration du fichier et

ne peuvent tre modifis que par son propritaire ; umask permet de dfinir un masque de protection des fichiers et rpertoires lors de leur cration ; Le masque est exprim en base 8 ; exple : # umask 022 022 est soustraite de la permission permanente 777 :
111 111 111 000 010 010 111 101 101 = 755

Rques :

umask 022 permet de dfinir la protection des fichiers rpertoires : rwx r-x r-x est souvent lopration par dfaut ; Pour les fichiers ordinaires, umask 022 dfinit la protection : rw- r-- r-- : lexcution nest pas autorise sur les fichiers ordinaires lors de leur cration. Exple : # umask 022; touch fich1 ; ls -l fich1 -rw- r-- r-- 1 abdou amis 60 Nov 10 10:33 fich1
A. AHMADI Unix

Chap 4

Protection des fichiers


60

III- Droits daccs aux rpertoires


Affichage des informations dun rpertoire : # ls -dl rep

Exple : # ls -dl bin drwx r-x r-x 3 abdou amis 1024 Jul 16 12:45 bin Signification de r , w et x pour les rpertoires : r : permet de voir la liste des fichiers qui sont dans le rpertoire ; x : autorise laccs au rpertoire ( laide de la commande cd) w : autorise la cration, la suppression et le changement du nom dun lment du rp. Cette permission est indpendante de laccs aux fichiers dans le rpertoire. Exple1 : seul lutilisateur toto pourra supprimer et modifier son fichier fich1 Exple2 :

seul lutilisateur toto pourra modifier son fichier fich1, mais il ne pourra pas le supprimer car il na pas w sur le rep toto.
A. AHMADI Unix

Chap 4

Protection des fichiers


61

IV- Modification du propritaire


chown (CHange OWNer) : permet de changer le propritaire d1 fichier (il faut propritaire

pour en changer) ; Une fois la commande chown excute, il nest plus possible les droits daccs ce fichier ; chgrp (Change GRouP) : permet de changer le groupe pour le fichier spcifi, si lutilisateur fait partie du nouveau groupe. Exple : # chgrp amis f1 ; chown ali f1 f1 appartiendra ali et fera partie du groupe amis. On change dabord le groupe du fichier puis son propritaire Rques : Ladministrateur peut accder tous les fichiers il peut modifier les droits daccs ; Dernires versions dUnix : seul ladministrateur pourra utiliser la commande chown.

A. AHMADI

Unix

Chap 4

Protection des fichiers


62

V- Appartenance plusieurs groupes


Un utilisateur appartient son groupe de rattachement principal (dfini dans /etc/passwd) ; Il peut tre membre dautres groupes (cela est dfini dans /etc/group).

BSD et System V diffrent sur les points suivants : BSD : Permissions de groupe d1 fichier (ou rep) sont applicables tout utilisateur membre du groupe propritaire du fichier. Tout fichier nouvellement cr a pour groupe propritaire le groupe auquel appartient le rpertoire dans lequel il est cr. un utilisateur peut donc crer 1 fichier appartenant 1 groupe dont il nest pas membre System V : Les permissions de groupe dun fichier (ou rep) ne sont applicables 1 utilisateur que si son groupe effectif est le groupe propritaire du fichier ; 1 utilisateur peut changer de groupe effectif (newgrp nouv_grp) condition dtre membre du nouv_grp ; Tout fichier nouvellement cr a pour groupe propritaire le groupe effectif de son crateur.
A. AHMADI Unix

Chap 4
Exercices

Protection des fichiers


63

Exercice 1
Dans votre rpertoire courant, crez un rpertoire courant essai_rep, par dfaut ce rpertoire est 755 (rwxr-xr-x). Quelles sont les commandes (en notation symbolique et en base 8) pour lui donner les droits suivants (on suppose qu'aprs chaque commande on remet le rpertoire 755:
propritaire
droit en lecture commande 1 commande 2 commande 3 commande 4 oui oui non non droit en criture oui non oui non

groupe
droit d'accs oui non oui oui

les autres
droit en droit en lecture criture non non oui non non non non non droit d'accs oui oui non non

droit droit en droit en d'accs lecture criture oui oui non oui oui non non oui non oui non non

Exercice 2
Crez un fichier test dans le rpertoire essai_rep prcdent. Par dfaut ce fichier est 644 (rwr--r--). En partant du rpertoire courant, pour chaque commande de l'exercice prcdent, essayez d'accder au rpertoire essai_rep (commande cd), de faire un ls dans essai_rep et de modifier le fichier avec un diteur quelconque.
A. AHMADI Unix

Chap 4
Exercices

Protection des fichiers


64

Exercice 3
Crez dans un nouveau rpertoire reptest, le fichier bienvenue contenant la ligne de commande : echo Bienvenue dans le monde UNIX Excutez ce fichier.

Exercice 4
Crez un fichier que vous pouvez lire, modifier et supprimer.

Exercice 5
Crez un fichier que vous pouvez lire et supprimer mais que vous ne pouvez pas modifier.

Exercice 6
Crez un fichier que vous pouvez lire mais que vous ne pouvez ni modifier ni supprimer .

Exercice 7
Dans quel cas les permissions dun fichier sa cration sont-elles diffrentes des permissions fixes par umask ?

A. AHMADI

Unix

Chap 4
Exercices

Protection des fichiers


65

Exercice 8
Supposons que vous travaillez avec un collgue appartenant au mme groupe que vous. Modifiez les permissions du fichier cr lexercice Bienvenue ci-dessus de telle faon que votre collgue puisse le lire et lexcuter, mais ne puisse pas le modifier ni le supprimer. Pouvez-vous modifier les permissions de ce fichier de telle sorte que votre collgue puisse le lire, le modifier et lexcuter alors que vous-mme ne pouvez pas le modifier.

Exercice 9
Comment est attribue la permission deffacer un fichier ? Crez un fichier que votre collgue peut modifier mais pas supprimer et un autre quil peut supprimer mais pas modifier. Est-il logique de pouvoir attribuer de tels droits ? Quelles sont les consquences pratiques de cette exprience ?

Exercice 10
Comment savoir trs simplement si votre systme suit la logique BSD ou System V en ce qui concerne le GID des fichiers la cration ?
A. AHMADI Unix

Chap 5
On

Commandes de Redirection dE/S


66

I- Ligne de commandes squentielles


peut taper plusieurs commandes spares par des ;. Elles sexcuteront squentiellement et indpendamment les unes des autres Exple : # pwd;who;ls

II- Commandes sur plusieurs lignes


En bourne shell et korn shell : \<Entre> En C-Shell : <Espace>

Exple : # ls l /home/toto/develop\ <return>


/essai.f <return> # ls l /home/toto/develop/essai.f <return>

A. AHMADI

Unix

Chap 5

Commandes de Redirection dE/S


67

III- sparateurs conditionnels


&& : permet dexcuter la commande qui le suit si et seulement si la commande qui le

prcde a t excute sans erreur ; || : permet dexcuter la commande qui le suit si et seulement si la commande qui le prcde a t excute avec erreur ; Exple1 : # cd rep1 && rm * suppression des fichiers si la commande cd rep1 a t correctement excute Exple2 : # cd rep1 || mkdir rep1 si le rpertoire rep1 nexiste pas alors il sera cr par la commande mkdir

A. AHMADI

Unix

Chap 5

Commandes de Redirection dE/S


68

IV- Redirection des Entres/Sorties


Au lancement dun processus, le shell ouvre une entre standard (par dfaut le clavier), une

sortie standard (par dfaut lcran) et une sortie derreurs standard (par dfaut lcran).
Processus Clavier Entre standard Ecran

1 0 2

Sortie standard

Erreur standard

Ces entres/sorties standard peuvent tre rediriges vers un fichier, un tube ou un

priphrique ; La redirection des sorties peut tre ralise par effacement et cration du fichier ou par ajout la fin du fichier ; En cas de redirection dentre, le fichier doit exister ; La syntaxe de redirection dE/S est diffrente dun shell lautre.

A. AHMADI

Unix

Chap 5

Commandes de Redirection dE/S


69

IV- Redirection des Entres/Sorties


1- Redirection en C-shell
a) b) c) d) e) f) < fe : dfinition de fe comme fichier dentre standard ; > fs : redirection de la sortie standard vers le fichier fs (possibilit dcrasement) ; >> fs : sortie standard ajoute en fin du fichier fs ; >& f : sortie standard et sortie derreurs standard vers le fichier f (crasement sil existe dj >>& f : sortie standard et sortie derreurs standard sont ajoutes en fin du fichier f ; (commande > fs) >& err : redirige la sortie standard vers fs et la sortie derreurs vers err ;

Exples : # ls > sortie1 : range la liste des fichiers du rpertoire courant dans le fichier sortie1 # ls >> fich : ajoute au fichier fich la liste des fichiers du rpertoire courant # ls /ali * > sortie2 : range, dans sortie2, la liste des fichiers du rep /ali et les messages derreurs # (ls /ali * > sortie3)>& err3 : rsultat dans sortie3 et erreurs dans err3

2- Redirection en bourne shell et en korn shell


a) < fe > fs a) >> fs
A. AHMADI

e) 2>f : redirection de la sortie derreurs standard vers f d) 2>>f : sortie derreurs standard est ajoute au fichier f f) commande > fs 2> err : sortiefs et erreurserr
Unix

Chap 5

Commandes de Redirection dE/S


70

IV- Redirection des Entres/Sorties


3- La commande cat et les redirections
Cat est une commande multi-usage : affichage, cration, copie et concatnation de fichiers a) Lecture au clavier et criture sur cran : Exple : # cat Bonjour Mr <ctrl-d> b) Copie dun fichier : Exple : # cat f1 > f2 ou cat <f1 >f2 c) Concatnation des fichiers : Exple : # cat f1 f2 f3 > f f contiendra la concatnation des contenus de f1, f2 et f3 d) Ajout dun fichier : Exple : # cat f1 >> f2 f1 est concatn la suite de f2. f2 est cr sil nexiste pas e) Cration dun fichier par saisie au clavier : Exple : # cat > f1 Bonjour <ctrl-d> f) Cration dun fichier avec condition de saisie : Exple : cat << EOT > f1 f1 est cr par saisie de texte au clavier, jusqu la saisie en dbut Au revoir de ligne de la chaine EOT EOT
Unix

A. AHMADI

Chap 5

Commandes de Redirection dE/S


71

V- Les tubes de communication


Un tube (pipe) est un flot de donnes qui permet de relier la sortie standard dune commande lentre standard dune autre commande sans passer par un fichier temporaire.
Processus P1 Entre standard Processus P2 Processus P3

1 0 2

1 2

1 2

Sortie standard

P1|P2|P3

Erreur standard

Erreur standard

Erreur standard

Exple1 : # ls l | more Affichage page par page du contenu du rpertoire courant Exple2 : # ls l | grep rwxr-xr-x | more Affichage page par page des fichiers du rep courant dont les protections sont rwxr-xr-x # ls l > temp1; \<return> grep rwxr-xr-x <temp1 > temp2 \<return> Solution longue!! ; more temp2 ; rm temp1 temp2 Rques : - Toutes le commandes lies par un tube sexcutent an parallle. Cest le systme qui ralise la synchonisation entre le processus metteur et le processus rcepteur ; - Il ny pas de taille limite pour le flot de donnes et pas de fichier temporaire.
A. AHMADI Unix

Chap 5

Commandes de Redirection dE/S


72

V- Les tubes de communication


Exple3 : # who | wc -l Affiche le nombre dutilisateurs connects au systme Exple4 : # ls | wc w Affiche le nombre de fichiers dans le rpertoire courant Un filtre est une commande qui lit les donnes sur lentre standard, les traite et les crit sur la sortie standard. Les filtres les plus utiliss sont : grep : recherche les occurrences dune chane de caractres ; wc et more : dj vues sed : diteur de flot : il applique les commandes de lditeur ed sur lentre standard et envoie le rsultat sur la sortie standard ; awk : petit langage de manipulation de texte. Exple : # awk F: $5== /etc/passwd slectionne, dans le fichier /etc/passwd, les lignes dont le 5me champ est vide. Le sparateur de champ tant le caractre : Sort : filtre de tri. Exple : # sort o test.tri test le fichier test.tri contiendra le contenu tri de test Exercice : afficher le nombre dutilisateurs de la machine dont le login shell est c-shell Solution : # cat /etc/passwd | grep /bin/csh | wc -l
A. AHMADI Unix

Chap 5

Commandes de Redirection dE/S


73

VI- Tches en arrire plan


Les commandes longues ne ncessitant pas de dialogue peuvent tre lances en arrire plan et le systme donne la main pour dautres tches Multitche dUnix Exple : # cat < entree1 > sortie1 & Les processus en arrire plan ne sont pas interrompus par <Ctrl-C>. 2 solutions : Sortir de sa session et dans ce cas tous les processus seront interrompus ; Chercher le numro de processus, puis taper kill %num La commande nohup permet de ne pas interrompre un processus lorsquon quitte sa session Exple : # nohup cat < entree1 > sortie1 &
Commandes de gestion des processus en arrire plan (C-chell et korn shell) :

jobs : liste les travaux en arrire plan avec leurs numros (running ou stopped) fg %num_job : ramne le processus de numro num_job en avnant-plan <Ctrl-Z> : suspend un processus en avant-plan si le terminal le permet (# tty isig). On peut dfinir la touche de suspension : # stty susp <Ctrl-Z> bg %num_job : ractive le processus suspendu numro num_job (devient en arrire-plan) fg %num_job : ractive le processus suspendu numro num_job (devient en premier-plan)
A. AHMADI Unix

Chap 5
VII- Backquoting

Commandes de Redirection dE/S


74

Permet dutiliser le rsultat dune commande1 comme argument dune autre commande2. # `commande1` accents graves ou # $(commande1) en korn-shell.

Exple1 : # echo `pwd` affiche /home/toto par contre # echo pwd affiche pwd Exple2 : # more `grep l titi *` : paermet de visualiser le contenu des fichiers du rpertoire courant contenant au moins une fois la chane titi. Exple3 : # echo il y a `who | wc -l` utilisateurs connects : indique le nb dutilisateurs connects Exple4 : # grep -n coucou `find . -type f -print` : affiche les lignes avec leurs numros de tous les fichiers ( partir du rep courant) contenant la chane coucou Exple5 : # rm `find . -mtime +20 -print` : permet de supprimer les fichiers nayant t modifis depuis plus de 20 jours. # find . -mtime +20 -exec rm {} \;

A. AHMADI

Unix

Chap 5

Commandes de Redirection dE/S


75

VIII- Commandes groupes


Une commande groupe est une succession de commandes spares par ; et considre

comme un ensemble. # (commande1;commande2) # commande1;commande2 La 1re commande est excute par un nouveau processus shell Exple1 : # (cd doss1;rm temp) : le rpertoire courant ne change pas # cd doss1;rm temp) : le rpertoire courant change. Il devient //doss1 Exple2 : # (echo Aujourdhui;date;echo les \<return> personnes suivantes;who;echo sont connectes) > fs Le fichier fs contiendra le texte : Aujourdhui sont connects Exple3 : # echo Aujourdhui;date;echo les \<return> personnes suivantes;who;echo sont connects > fs Le fichier fs contiendra uniquement le texte : sont connectes Exple4 : # (cp fich1 doss1; find . -mtime +20 -exec rm {} \;) & : Lance les 2 commandes en arrire-plan # cp fich1 doss1; find . -mtime +20 -exec rm {} \; & : Lance uniquement la dernire commande en arrire-plan
A. AHMADI Unix

Chap 5

Commandes de Redirection dE/S


76

IX- Caractres de neutralisation


Les caractres de neutralisation permettent de neutraliser linterprtation des caractres

spciaux (< ? * ) par le shell. Exple1: \<return> : permet de neutraliser leffet de <return> qui est la validation dune commande Exple2 : # touch f\*1 : permet de crer un fichier dont le nom est f*1 Attention : # rm f*1 : supprimera tous les fichiers commenant par f et se terminant par 1 Lutilisation du caractre \ nest pas pratique pour neutraliser une chane de caractres. On peut alors dlimiter la chane par 2 quotes. Exple3 : # touch f*?1 : permet de crer un fichier nomm f*?1 La commande : # rm f*?1 permet de supprimer tous les fichiers commenant par f et se terminant par 1.

A. AHMADI

Unix

Chap 6
I- Processus

Les processus
77

Un processus est un programme en cours dexcution. Il peut tre un module binaire

excutable ou un fichier texte contenant une procdure shell. La structure physique dun processus est compose des lments principaux suivants : Identificateur de processus (PID : Process Identifier) ; Numro dutilisateur (UID : User IDentifier) ; Numro du groupe de lutilisateur (GID : Group Identifier) ; Segment code contenant les instructions du programme ; Segment des donnes de lutilisateur. Celles initialises par ce dernier ou par le systme UNIX ( zro) ; Pile qui contiendra les donnes locales, les paramtres et les adresses de retour des sous-programmes, etc. Informations concernant le systme (chemin absolu ou relatif du rep courant, descripteurs des fichiers ouverts par le processus, le terminal qui lanc le pgme, priorit du processus, temps dexcution du processus, contenu des registres). Cette structure dtermine ce que lon appelle Environnement du processus ou encore limage du processus.
A. AHMADI Unix

Chap 6
I- Processus

Les processus
78

Un processus sous UNIX est cr en faisant appel (directement ou indirectement) la

fonction systme (ou primitive systme) fork ; Lorsquun processus est cr, son numro est enregistr dans une table systme : table des processus. Une fois le processus est termin, son numro sera supprim de cette dernire. Un processus peut tre lanc en avant-plan (foreground) ou en arrire-plan (background) En avant-plan : toutes les commandes vues jusqu prsent ; En arrire plan : On rajoute le symbole & la fin de la commande. Exple : # find / -name test -print & On voit alors apparatre un numro PID du processus qui vient dtre cr. En C-shell, en plus du PID, il y a un autre numro qui est le numro de job. Dans ce cas, le processus sexcute en arrire-plan et le systme donne la main pour excuter dautres processus. Les processus en avant-plan sont traits de manire squentielle (ou synchrone) ; Les processus en arrire-plan sexcutent en parallle, plus prcisment en multitche (ou asynchrone) Rque : plusieurs processus en arrire-plan redirection pour viter la confusion de rsultats.
A. AHMADI Unix

Chap 6
I- Processus

Les processus
79

La commande wait, sans argument, oblige attendre la fin de tous les processus en arrire-

plan. Le prompt dinvite ne rapparat pas tant que tous ces derniers ne seront pas termins # wait Pour supprimer leffet de wait : on tape <DEL> ou <Ctrl-C> et les processus continueront de sexcuter en arrire-plan ; En systme V : # wait 6042 permet au systme dattendre seulement la fin du processus 6042 # kill 6042 permet de dtruire le processus de PID=6042. Parfois on est oblig taper:#kill -9 PID Seuls lutilisateur, qui a lanc le processus, et le root ont le droit de le dtruire ; Lorsquun processus se termine, il retourne une valeur (status). 0 sil se termine correctement et une valeur non nulle sinon. Pour afficher satus : en Bourne-shell ? Et status en C-shell : Exple : Supposons que le fichier fich1 existe dans le rep courant et que fich2 nexiste pas : En Bourne shell : # cat fich1 > sortie1 # echo $? 0 En C-shell : # cat fich1 >& sortie2 # echo $status 1
Unix

A. AHMADI

Chap 6
I- Processus

Les processus
80

Un utilisateur ordinaire peut modifier la priorit dun processus quil contrle en la

diminuant par rapport sa valeur par dfaut ; Le root peut lui augmenter ou diminuer la priorit de ses processus La commande nice permet la modification de cette proprit : En bourne shell, un processus a par dfaut la priorit 10. Un utilisateur ordinaire pourra la diminuer par : # nice -15 test (option n varie entre 0 et 20). Le root pourra laccrotre par : # nice 10 find / -name fich1 print En C-shell, un processus a par dfaut la priorit 4 et peut varier entre -20 et +20. Pour diminuer la priorit : # nice +12 test ; Pour augmenter la priorit (rserv au root) : # nice -15 test La commande ps permet dafficher ltat des processus dun utilisateur : Le premier processus est celui du shell par dfaut. Il est le pre de tous les processus ; Infos dun processus (PID, TERMINAL, STATUS, TIME, COMMAND). Les tats sont : S : endormi = le processus attend la fin de lexcution des sous-processus quil a crs R : excutable =il est dans la file dattente des processus pouvant sexcuter I : repos =il est inactif (il na pas t sollicit depuis un certain temps qui dpend du sys
A. AHMADI Unix

Chap 6
I- Processus

Les processus
81

Z : zombie = le processus est termin mais le pre nest pas en attente (commande wait) T : arrt = le processus est provisoirement arrt mais il pourra rapparatre. ps -a : permet dafficher tous les processus utilisateurs lancs actuellement sur la machine. Rque : si un utilisateur perd le contrle sur son terminal suite un blocage dun processus en mmoire, il pourra se connecter par un autre terminal et tuer dtruire ce processus par la commande : # kill num_processus ou si ncessaire : #kill -9 num_pr La commande : # kill -9 0 : permet de tuer tous les processus dun utilisateur. On obtiendra le mme rsultat si lon tue directement le processus pre. La commande : # ps -l permet dafficher larborescence des processus. On peut tre inform de la fin dun processus en arrire-plan de 2 manires : En tapant : # ps et en vrifiant ltat du processus en question ; A laide de la commande C-shell : # notify %num_job

A. AHMADI

Unix

Chap 6
I- Processus

Les processus
82

La commande : # limit du C-shell permet dobtenir des informations sur les ressources

maximums alloues un processus (cputime,filesize,datasize,stacksize,coredumpsize, memoryuse). Exple1 : # limit cputime : 300 fixe le temps CPU 300 secondes Exple2 : # limite memoryuse 500 kbytes : fixe la taille mmoire utilisable 500 kbytes Exple3: # unlimit : permet de revenir aux limites par dfaut

A. AHMADI

Unix

Chap 6
II- Jobs

Les processus
83

La commande : # jobs permet dobtenir la liste des numros de jobs actifs et leurs tats. # <Ctrl-Z> permet de dplacer un job en avant-plan de ltat excution ltat arrt # stop %num_job permet de dplacer un job en arriret-plan de ltat excution ltat arrt # %num_job permet de dplacer un job en aavant-plan de ltat arrt ltat excution # bg %num_job permet de faire passer un job de ltat arrt ltat arrire-plan # fg %num_job permet de faire passer un job de ltat arrire-plan ltat avant-plan Pour faire passer un job de ltat avant-plan ltat arrire-plan, on procde comme suit :

On arrte dabord le job en avant-plan par : # <Ctrl-Z> On dtermine ensuite son numro de job par : # jobs On ramne enfin, ce job en arrire-plan par : # bg %num_job Pour tuer un job en arrire-plan : # kill %num_job ou # kill %PID. Cette commande kill permet aussi de tuer un job ltat darrt ; Pour tuer un job en avant-plan : # <Ctrl-C> ou # <Ctrl-\> Rque : On peut dsigner un job par le nom de la commande ou par une chane de caractres incluse dans le nom de la commande, au lieu de son numro. exple : # fg %?test
A. AHMADI Unix

Chap 6

Les processus
84

III- Traitement en temps diffr


Unix dispose doutils varis pour raliser un traitement en diffr ; La commande sleep permet de suspendre toute excution pour un utilisateur : En avant-plan : # sleep 20 ; ./pgme1 Pour arrter lattente : <Ctrl-C> En arrire-plan : # (sleep 3600;./pgme1) & Pour arrter lattente: on tue le processus (ou le job) correspondant mais on supprimera aussi lexcution de la commande ./pgme1 La commande at permet de lancer lexcution dune commande une date donne : exple1: # at now + 1 min On reoit un numro de job correspondant ainsi que la date et lheure dexcution prvue.

pwd > fich1 <Ctrl-D>

exple2 :

Exple3:

# at now + 8 days ./somme < fich_entree > fich_sortie <Ctrl-D>


A. AHMADI Unix

# at r 1314 permet du supprimer le job


1314 en attente.

# atrm r 1314

en BSD

Chap 6
Exple3: # at l

Les processus
85

III- Traitement en temps diffr


liste les processus en diffr

Exple4: # at 0825am feb 19

Le fichier pgme1 sera excut le 19 fvrier 08h25. Si le ./pgme1 > fich2 fichier de sortie nest pas indiqu, le rsultat sera envoy par mail. <Ctrl-D> Rque: si on indique une heure ou une date antrieure la date courante, on est automatiquement report au cycle suivant (jour, semaine, mois ou anne suivante). Exple5: # at 2335 excution 23h35 Exple6 du jour courant excution 9h du jour # at 9 . courant .

# at time + val incrment Exple7 : .


# at now + 7 days
A. AHMADI Unix

val = valeur entire time = date ou now incrment = minutes,hours,days,weeks,months,years # at 0000 Jan 1 + 9 years

Chap 6

Les processus
86

III- Traitement en temps diffr


La commande atq permet davoir la liste des numros des jobs en attente(dans la file:queue

# atq -n : permet dobtenir le nombre de jobs en attente.

Droits dutilisation de la commande at


Le root pourra toujours utiliser at pour lancer une excution quelconque ; Le fichier cron/at.allow contient la liste des utilisateurs ventuels de la commande at. Cependant, si un utilisateur ny figure pas, cela napplique pas obligatoirement quil nest pas autoris utiliser la commande at. Si un utilisateur qui nest pas dans cron/at.allow, figure par contre dans le fichier cron/at.deny, ceci implique quil nest pas autoris utiliser la commande at. Si un utilisateur ordinaire ne figure ni dans cron/at.allow ni dans cron/at.deny cela signifie quil peut utiliser la commande at. Cest le root qui peut inscrire des noms dans chacun de ces 2 fichiers, raison dun nom dutilisateur par ligne.

A. AHMADI

Unix

Chap 6

Les processus
87

III- Traitement en temps diffr


On peut utiliser aussi la commande at pour excuter un script.

Exple: # at now + 3 hours som_futur Le script som_futur contient la commande ./somme < fich_e > fich_s Le fichier fich_e contient 2 valeurs 10 et 20 et lexcutable somme fait leur somme et rangera le rsultat dans fich_s aprs 3 heures La commande batch, du Systm V, permet de placer une commande dans une file dattente. Le systme excutera toujours la commande place en tte de la file. Elle est adapt un systme trs charg. Rque : Les commandes de gestion de at restent valables pour batch.

A. AHMADI

Unix

Chap 6

Les processus
88

IV- Mode cyclique


Le mode cyclique permet une excution priodique dune tche laide de la commande

crontab ; Autorisation dutilisation de crontab : 2 fichiers cron/cron.allow et cron.deny Crontabs/fich_toto : fichier au nom de lutilisateur contenant les commandes excuter cycliquement ; Lutilisateur cre un fichier fich comprenant les indications de la rptition dexcution et de la tche elle-mme. # crontab fich copiera le contenu de fich dans la zone spool du crontab Champ1 : la minute (0-59) Champ2 : lheure (0-23) Champ3 : le jour du mois (1-31) * : valeur quelconque Champ4 : le mois de lanne (1-12) Champ5 : le jour de la semaine (0-6 0=dimanche) Champ6 : tche excuter Exple : 59 0 * * 1-6 tche1 permet dexcuter tche1 tous les jours du lundi au samedi 0h59.Les rsultats sont envoys par mail sauf en cas de redirection. # crontab e : dite directement le crontab de lutilisateur.
A. AHMADI Unix

Chap 7

Les Editeurs de Textes


89

I-Prsentation gnrale
1- Editeurs de texte ligne
Lditeur ed est le plus ancien. Il a t conu aux Bell Laboratories Lditeur ex est une extension de ed, dvelopp Berkeley

Rque : En fait on nutilise plus les diteurs ligne de nos jours. Toutefois, ces 2 diteurs interviennent encore , indirectement, dans l diteurs page vi et dans lditeur non interactif sed.

2- Editeur non interactif


Lditeur non interactif (stram editor) standard sed est trs utilis, non pas spcialement en

tant dditeur de texte classique mais plutt comme outils de manipulation(ou filtre).

3- Editeurs pleine page


Lditeur plein cran vi (de Berkeley) est livr avec tous les systmes UNIX actuelsstandard Emacs est un autre diteur pleine page assez rpandu et plus labor que vi. Il a t

dvelopp par MIT.

A. AHMADI

Unix

Chap 7
II-Lditeur vi

Les Editeurs de Textes


90

La commande : # vi fich1 permet dafficher le fichier fich1 sil existe sinon elle affichera un

cran vide. Dans les 2 cas le curseur sera positionn en haut gauche. Sous vi on est toujours sous lun des 2 modes : commande (par dfaut) ou insertion. Pour insrer un texte on doit se mettre en mode insertion ; Pour passer du mode commande au mode insertion, on tape lune des touches : i : insertion avant le curseur I : insertion au dbut de la ligne courante o : insertion aprs la ligne courante a : insertion aprs le curseur A : insertion la fin de la ligne courante O : insertion avant la ligne courante

Rques : On entre les caractres graphiques normalement au clavier et barre despace pour un blanc ; On rentre les caractres non graphiques en les faisant prcder de <Ctrl-v> On efface le dernier caractre avant le curseur, par <BACK SPACE> ou <DEL> On va la ligne avec la touche <RETURN> On passe en mode commande avec <ESC> ou <Ctrl-c>
A. AHMADI Unix

Chap 7
II-Lditeur vi

Les Editeurs de Textes


91

Comment sortir du fichier et revenir au shell ? 2 cas :

i) Avec sauvegarde du contenu de la mmoire tampon : ZZ ou :wq ou :x Rques: - les commandes prcdes de : sont empruntes lditeur ligne ex. - vi utilise une mmoire tampontoutes les modifications peuvent tre sauvegardes ou annules. ii) Sans sauvegarde du contenu du tampon : :q! (dans tous les cas) ou :q (si le fichier nest pas modifi) . On peut sauvegarder le contenu du tampon sans quitter vi : :w le contenu du tampon sera sauvegard dans le fichier ouvert par vi :w fich_bis enregistre le tampon sous fich_bis (utilis quand vi est lanc sans argument ou lorsquon veut crer une autre copie dans fich_bis qui nexistait pas) :w! fich_bis remplace lancien contenu de fich_bis par le contenu du tampon :5,18 w fich sauvegarde partiellement le contenu du tampon (lignes de 5 18) dans fich

A. AHMADI

Unix

Chap 7
II-Lditeur vi

Les Editeurs de Textes


92

Dplacement du curseur :
Dplacement
Gauche-droite Droite-gauche

Touche flche droite ou l ou <espace> flche gauche ou h ou <backspace> flche basse ou j flche haute ou k $ + ou <return> 0 -

Fin de phrase : . <espace><espace> ?<espace><espace> !<espace><espace> Ligne blanche Fin de paragraphe : Ligne blanche

Haut-bas
Bas-haut Fin de ligne courante Dbut de la ligne suivante Dbut de ligne courante Dbut de la ligne prcdente La ligne numro n Dbut du text en entier Dernire ligne Fin dune phrase Dbut dune phrase Fin dun paragraphe Dbut dun paragraphe

nG
1G G ) (
} {

Positionnement sur le mot suivant : w


Positionnement sur le mot prcdent : b Positionnement la fin du mot courant : e
Unix

A. AHMADI

Chap 7
II-Lditeur vi

Les Editeurs de Textes


93

La commande <Ctrl-g> ou :f indique :

- le nom du fichier utilis ; - Eventuellement si le fichier vient dtre modifi ; - le numro de ligne courante ; - le numro total de lignes du fichier ; - le pourcentage de lignes, ramen la ligne courante Exple : fich1 [modified] line 2 of 5 --40%- La commande :set nu permet de numroter les lignes du fichier et :set nonu ralise lopration inverse La commande u permet dannuler leffet de la dernire commande ; La commande U permet de remettre une ligne qui vient dtre modifie en son tat initial Pour appeler une commande shell sans quitter vi : :!commande . Exple : :!date on reviendra lditeur en tapant <Entre> Pour aller dans le shell sans quitter : :!sh . On reviendra au vi en tapant : <Ctrl-d> Pour annuler une requte non encore excute : <ESC> ou <DEL>
A. AHMADI Unix

Chap 7
II-Lditeur vi
Suppressions :
Suppression

Les Editeurs de Textes


94

Touches x X nx dd ndd D dw db d) d( d} d{

Du caractre repr par le curseur Du caractre gauche du curseur De n caractres partir du curseur De la ligne courante De n lignes partir de la ligne courante Du reste de la ligne partir du curseur Du mot suivant le curseur Du mot prcdant le curseur De la fin de la phrase Du dbut de la phrase De la fin du paragraphe Du dbut du paragraphe

dw et db tiennent compte de la ponctuation, alors que dW et dB nen tiennent pas

Pour supprimer une partie de texte, de la ligne n1 la ligne n2 : :n1,n2 d

Suppression de ligne courante et passage automatique en mode insertion : cc

Suppression du caractre courant et passage automatique en mode insertion : s On peut rcuprer les 9 dernires suppressions par : 1p , 2p ,

A. AHMADI

Unix

Chap 7
II-Lditeur vi

Les Editeurs de Textes


95

Rcupration des suppressions :

La commande p permet de rcuprer : - aprs la position courante du curseur, les lment supprims par une commande x, X, nx, dw, db, dW, ou dB, d) , d( , d} , d{ , prcdente - aprs la ligne courante, les lments supprims par une commande dd , ndd ou encore :n1,n2 d prcdente La commande P a le mme effet que p, mais les lments seront rcuprs, soit avant la position courante du curseur, soit avant la ligne courante. Recherches : - La commande /coucou permet de rechercher la chaine coucou partir de la position du curseur, vers lavant. ?coucou fait la recherche vers larrire(majus diffrent de minus) - La commande fC permet de rechercher, en avant, dans la ligne courante le caractre C - La commande FC permet de rechercher,en arrire, dans la ligne courante le caractre C - Si lon veut excuter de nouveau la commande de recherche dans le sens initialement prvu, on tape n (pour le sens inverse on tape N) - La commande :set ic permet de confondre les les maj et les min la recherche et :set noic annule cet effet.
A. AHMADI Unix

Chap 7
II-Lditeur vi
Substitutions :

Les Editeurs de Textes


96

- la commande rC permet de remplacer le caractre point par la souris par le caractre C et on reste dans le mode commande ; - la commande R permet de remplacer tous les caractres, partir de la position du curseur, par les caractres saisis. On met fin cette commande en tapant <ESC> - la commande cw mot <ESC> permet de remplacer le mot point par la souris par le mot mot - la commande c texte <ESC> permet de remplacer le reste de la ligne qui suit le curseur par le texte saisi texte . Pour remplacer toute la ligne courante : cc ligne<ESC> - La commande :s/chaine1/chaine2/ permet de remplacer la premire occurrence de la chane chaine1, dans la ligne courante, par chane2 - La commande :s/chaine1/chaine2/g permet de remplacer toutes les occurrences de la chane chaine1, dans la ligne courante, par chane2 - La commande :n,$s/chaine1/chaine2/g permet de remplacer toutes les occurrences de la chane chaine1, du texte partir de le ligne n, par chane2
A. AHMADI Unix

Chap 7
II-Lditeur vi
Copie de texte :

Les Editeurs de Textes


97

- la commande Y ou yy permet de copier, dans un tampon particulier, la ligne courante - la commande nY permet de copier, dans un tampon particulier, n lignes du texte partir de la position courante ; - La commande :n1,n2 y permet de copier dans le tampon, les lignes n1 n2 - On rcupre le contenu du tampon par la commande p ou P - La commande :nr fich_ext permet dintroduire le contenu du fichier externe fich_ext, dans vi partir de la ligne n - La commande :.r fich_ext permet dintroduire le contenu du fichier externe partir de la ligne courante.

A. AHMADI

Unix

Chap 8
I- Introduction

La programmation shell
98

Le shell : cest un interprteur de commandes et un langage de programmation puissant. Plusieurs shells plusieurs langages diffrents Script : fichier contenant des commandes Jeu dinstructions :

- Toutes les commandes Unix ; - Invocation de programmes excutables (ou scripts) avec arguments ; - Instructions daffectation ; - Instructions conditionnelles et itratives ; - Instructions dEntre/Sortie. Il est possible dcrire et dinvoquer des scripts dans un certain shell tout en utilisant un autre shell en interactif. Le Korn-shell interprte, sans aucun problme, un script crit en Bourne-shell. Si un script commence par #! /bin/xxx, il est interprt par le shell /bin/xxx.

A. AHMADI

Unix

Chap 8

La programmation shell
99

II-Programmation en Bourne-shell
Un script Bourne-shell est portable sur tout systme UNIX ;

Inconvnient : Les variables ne peuvent tre que de type chane de caractres. Les variables
numriques et les tableaux nexistent pas en Bourne-shell. Si un script commence par #, il est interprt par C-shell. # sert indiquer une ligne commentaire en Bourne-shell le script risque de ne pas fonctionner ! Solution : Commencer par la ligne #!/bin/sh, puis ajouter les commentaires dans les lignes suivantes.

Exple de script : cration avec vi du fichier listf contenant la commande : ls aCF

#chmod a+x listf (ajout du droit dexcution) #listf (excution du script)


Sh x listf et sh v listf : demande au shell de tracer le droulement du script ou le commenter (ou les deux)
A. AHMADI Unix

Chap 8
1- Le passage des paramtres Le fichier lstf contient :

La programmation shell
100

II-Programmation en Bourne-shell

echo contenu du rpertoire $1 ls aCF $1


Excution : #lstf /tmp

On a 9 variables : 1, 2, , 9 qui permettent de dsigner les paramtres associs linvocation du script. La commande shift permet dutiliser plus de 9 paramtres : Le fichier echopar1 contient : echopar1 Exple1 : excution :

echo $1 $2 $3
echopar2 Exple2:

P1=$1
shift echo $1 $2 $3 echo $P1
excution :

#echopar1 un deux trois un deux trois deux trois un

echo $1 $2 $3 $4 $5 $6 $7 $8 $9 Shift Echo $1 $2 $3 $4 $5 $6 $7 $8 $9


A. AHMADI Unix

#echopar2 1 2 3 4 5 6 7 8 9 10 123456789 2 3 4 5 6 7 8 9 10

Chap 8

La programmation shell
101

II-Programmation en Bourne-shell
2- Les variables spciales
Variables facilitant la programmation :

- 0 : contient le nom sous lequel le script est invoqu ; - # : contient le nombre de paramtres passs en argument ; - * : contient la liste de paramtres passs en argument ; - ? : contient le code de retour de la dernire commande excute ; - $ : contient le numro de processus (PID) du shell (en dcimal). Exple1: #echopara un deux trois $0=echopara, $1=un, $2=deux, $3=tois et $* = tous le paramtres

Exple2 :

echo $0 a t appel avec $# paramtres Echo qui sont : $*

excution

#echopar a b c d Echopara a t appel avec 4 paramtres qui sont : a b c d

A. AHMADI

Unix

Chap 8

La programmation shell
102

II-Programmation en Bourne-shell
3- Les caractres spciaux Ce sont des caractres gnrateurs de fichiers et sont utiliss dans la passage de paramtres Exlpe1 : Si le rpertoire courant contient uniquement les fichiers fich1 et fich2, lors de lexcution de la commande : #ls fi* , le shell gnre la liste fich1 et fich2 et la passe en argument la commande ls.

Exple2 : rpertoire courant contient 2 fichiers fich1 et fich2 et un rpertoire fifou :


excution 4- La commande test echo $1 $2 $3 $4 $5 Complment de linstruction if. Elle permet de : - de comparer des chanes de caractres ; - comparer algbriquement des nombres. Syntaxe1 : Syntaxe2 : ou #test1 fi* Fich1 fich2 fifou - reconnatre les caractristiques des fichiers et des rpertoire ;

Rque : il faut laisser un espace aprs * et avant +.

if [ expression ] then commandes fi

test expression ou [ expression ]


A. AHMADI Unix

if [ expression ];then commandes fi

Chap 8

La programmation shell
103

II-Programmation en Bourne-shell
Les expressions les plus utilises
-d rep : vrai si le rpertoire rep existe ; -f fich : vrai si le fichier fich existe ; -s fich : vrai si le fichier fich existe et non vide ; -r fich : vrai si le fichier fich existe et accessible en lecture ; -w fich : vrai si le fichier fich existe et accessible en criture ; -x fich : vrai si le fichier fich existe et est excutable ; -z ch : vrai si la chane de caractres ch est vide ; -n ch : vrai si la chane de caractres ch est non vide ; c1=c2 : vrai si les 2 chanes c1 et c2 sont identiques ; c1!=c2 : vrai si les 2 chanes c1 et c2 sont diffrentes ; n1 eq n2 : vrai si les 2 entiers sont gaux. Les autres oprateurs relationnels : -ne, -lt, -le, -gt, -ge Rque : Les expressions peuvent tre nies par ! et combines par les oprateurs logiques -o (OU) et -a (ET).
A. AHMADI Unix

Chap 8
5- Linstruction case

La programmation shell
104

II-Programmation en Bourne-shell

Elle permet deffectuer un choix multiple case chane in Syntaxe:


motif1) commande1 ;; motif2) commande2 ;; . motifn) commanden ;; esac

chane peut prendre diverses : - un chiffre ; - une lettre ou un mot ; - des caractres spciaux du shell - une combinaison de ces lments - elle peut tre rsultat dune `commande` motifi : peut utiliser *, ?,

Exple1 : script comptepara


Case $# in 0) echo $0 sans arguments ;; 1) echo $0 possde un argument ;; 2) echo $0 possde deux argument ;; *) echo $0 a plus darguments ;; esac
A. AHMADI Unix

Chap 8
5- Linstruction case

La programmation shell
105
Case $# in 2) If [ ! -f $1 ] then echo le fichier $1 nexiste pas dans le rpertoire elif [ ! -s $1 -o ! -r $1 ] then echo le fichier $1 est vide ou protg en lecture elif [ ! -f $2 ] then cat $1 > $2 echo $0 a copi $1 dans $2 elif [ ! -w $2 ] then echo le fichier $2 est protg en criture else cat $1 >> $2 echo $0 a rajout $1 en fin de $2 fi ;; *) cat << EOT ajout Fonction : le fichier fsource est ajout au fichier fcible si fcible nexiste pas, fsource est copi en fcible syntaxe : ajo ut fsource fcible EOT ;; esac

II-Programmation en Bourne-shell

Exple2 : script ajout

A. AHMADI

Unix

Chap 8
6- Les itrations
a- la boucle for
Forme1

La programmation shell
106

II-Programmation en Bourne-shell

Forme2

Forme3

for variable in ch1 ch2 chn do commandes done

for variable in $* do commandes done

for variable in * do commandes done

Forme1 : variable prend ses valeurs dans : ch1, ch2, chn ; Forme2 : variable prend ses valeurs dans la liste des paramtres du script ; Forme3 : variable prend ses valeurs dans la liste des fichiers du rpertoire.
Exple1 : echofor1

Exple2 : echofor2
# echofor1 un deux trois

Exple3 : echofor3

for i in un deux trois do echo $i done

for i in $* do echo $i done

# echofor2 le systeme unix le systeme unix

for i in * do echo $i done

# echofor3 fich1 fich2 fich3

On suppose que le rpertoire courant contient les fichiers : fich1, fich2 et fich3

A. AHMADI

Unix

Chap 8
6- Les itrations
a- la boucle for Exple4 : script lsd

La programmation shell
107

II-Programmation en Bourne-shell

echo liste des repertoires sous `pwd` echo ========================= for i in * do if [ -d $i ] then echo $i : repertoire fi done Echo ========================

# lsd liste des repertoires sous /home/toto/test ================================= fifou : repertoire =================================

A. AHMADI

Unix

Chap 8
6- Les itrations

La programmation shell
108

II-Programmation en Bourne-shell
b- Itrations non bornes : while et until while commandealpha Syntaxe do commandesbeta done until commandealpha do commandesbeta done
Condition vraie si commandealpha retourne un code nul

Exple1 : le script wilea listant les paramtres qui lui sont passs en argument jusqu ce quil rencontre le paramtre fin

#! /bin/sh # ce script montre le # fonctionnement de # linstruction while while [ $1 != fin ] ; do echo $1 shift done
A. AHMADI Unix

#wilea 1 2 3 4 fin 5 6 7 1 2 3 4 #

Chap 8
6- Les itrations

La programmation shell
109

II-Programmation en Bourne-shell
b- Itrations non bornes : while et until
Exple2 : script untila
#! /bin/sh # ce script montre lutilisation # de linstruction until until [ $1 = fin ] ; do echo $1 shift done
#! /bin/sh # ce script illustre lusage combin # de while et de until while [ $1 != debut] ; do shift done shift until [ $1 = fin ] ; do echo $1 shift done Unix

#untila 1 2 3 fin 4 5 1 2 3 #

Exple3 : script while_until

#while_until 1 2 3 debut 4 5 6 fin 7 8 4 5 6 #

A. AHMADI