0% ont trouvé ce document utile (0 vote)
61 vues18 pages

Introduction à la Programmation Shell Unix

Ce document contient deux parties principales: la programmation shell et la programmation système. La première partie contient trois chapitres sur les systèmes de fichiers, la manipulation des fichiers et les scripts. La deuxième partie contient deux chapitres sur la création de processus et la communication entre processus.

Transféré par

ngidemax
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
61 vues18 pages

Introduction à la Programmation Shell Unix

Ce document contient deux parties principales: la programmation shell et la programmation système. La première partie contient trois chapitres sur les systèmes de fichiers, la manipulation des fichiers et les scripts. La deuxième partie contient deux chapitres sur la création de processus et la communication entre processus.

Transféré par

ngidemax
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Partie 1: Programmation Shell

Chapitre 1: les systèmes de fichiers


Chapitre 2: Manipulation des fichiers et alert d'accessoires fichiers
chapitre 3: Les scripts

Partie 2: Programmation système de recouvrement

Chapitre 4: Création de processus


Chapitre 5: Communication des processus via les tubes
Chapitre 1 : LES SYSTEMES DE FICHIERS
I- Arborescence
Comme dans tous les autres SE, les données sont organisées en fichiers eux-mêmes organises
En répertoire et sous répertoire sous les éléments de sauvegarde.
L’architecture du Système de fichier est sous la forme d'un arbre dont le répertoire note / est
La racine, tous les autres répertoires en sont les nœuds et les fichiers les feuilles.
Le système de fichier est donc un arbre n_aire

II- Noms de fichier


Sous Unix, et contrairement à DOS tous les caractères alpha numérique plus la ponctuation,
sont des caractères valides, de plus il n'existe pas de notion d'extension de fichier cela fait du
caractère (.) un caractère comme un autre qui peut apparaitre plus d'une fois dans un nom de
fichier par contre, l’espace est considéré comme un séparateur à proscrire dans le nommage
des fichiers. Ils n’acceptent pas d’espaces.
Le système Unix n'accepte pas les caractères accentués et distingue les majuscules des
minuscules exemple mon programme.c et Mon programme.c ne représentent pas les mêmes
fichiers. a.b.. est un nom de fichier valide sous Unix et tp1c-03/02/2022 , -z- sont des noms de
fichiers valides

III- Chemin d'un fichier


Tous ces éléments sont hiérarchisés les uns par rapport aux autres cette contrainte est
représentée par la notion de chemin d'un fichier. En effet, un fichier un fichier est localisable
sans ambigüité de façon exacte et unique par son chemin, ce dernier représente la succession
des répertoires à parcourir pour accéder aux fichiers (Navigation dans l'arbre). Un repertoire
contient par défaut 2 fichiers .. et .
Les répertoires sont séparés par un / dans l'écriture du chemin (attention c'est le même
symbole qui représente la racine)
a) Répertoire Parent
C'est celui qui est hiérarchiquement et immédiatement supérieur a celui du -
répertoire courant, il est note (..)
b) Répertoire courant
C’est celui dans lequel on se trouve à un instant donne durant la navigation dans les
systèmes de fichier il est noté (.)
c) Chemin absolu
Il devine la succession des répertoires à parcourir depuis la racine pour accéder
aux fichiers spécifiés.
Exemple: /Home/prepa2a/tp/tp1.c
d) Chemin relatif
Il désigne la succession des répertoires à parcourir depuis le répertoire courant
pour accéder aux fichiers spécifiés
Exemple : ../../root

IV- les types de fichiers


Sous Unix, les fichiers peuvent être de 5 types différents :
A - Exécutable
Ils correspondent à des programmes (écrits en langage c généralement) il n'est pas conseillé
de tenter de les éditer à l'aide d'un éditeur traditionnel. Il n'apparaitra que des caractères
bizarres et incompréhensibles. Seules les chaines de caractères stockées en constante seront
visibles. Mais en générale la taille d'un exécutable devrait vous en dissuader. Permet de
s’exécuter dans l’application

B- Répertoire
Les répertoires sont des ensembles de fichiers et de répertoire. Un répertoire peut ne contenir
aucun fichier, mais en revanche, un répertoire contient toujours un répertoire parent(..) et un
répertoire courant(.)

C- Les liens(ln)
Ce sont des fichiers assez spéciaux puisqu'ils permettent d'associer plusieurs a un seul et
même fichier. Pour créer un lien, on utilise la commande (ln).
L’utilité des liens est évidente puisqu’ils permettent à partir d'un seul fichier physiquement
présent sur l'espace disque, d'avoir plusieurs réf de noms différents et localises en des lieux
différents d'un même fichier qu'il n'est plus besoin de copier. Lorsque le fichier pointé est
volumineux, l'emploi des liens est donc très avantageux.
Les liens peuvent être de deux types :

i) liens symboliques
C’est un simple pointeur vers un autre fichier bien réel. La commande ln-s permet de créer un
lien symbolique sur un fichier. Ce lien sera présent sous la forme d'un fichier dont le nom sera
affiche après le symbole @. La syntaxe et la suivante :
ln-s nomfichier nomlien
ii) liens phys
Un lien physique sur un fichier est un fichier qui occupe exactement le même espace disque
que le fichier vers lequel il pointe, ainsi les deux fichier (le lien et le fichier pointe) sont
physiquement les mêmes bien que virtuellement, pour le système de fichier, ils portent des
noms différents et puisse être localisé dans des répertoires différents, sa syntaxe est la
suivante : ln nomfichier nomlien. Ils ont la même taille que celle du fichier

d) Fichier ordinaire
Un fichier est de type ordinaire lorsqu'il est tout à fait normal, il n'a rien de particulier ie il
n'est ni un exécutable ni un répertoire et ni un lien

e) fichier cache
Les fichiers et répertoires caches se distinguent des autres par la seule présence d'un point en
première position dans leur nom, la commande de listage des fichiers (ls) ne les affichera pas
par défaut. Pour les faire apparaitre il faut taper ls - a

V) Navigation (cd = Change directory)


La commande Unix de navigation dans le système de fichier est cd
Exemple ==> Description
cd ==> se de place vers le répertoire courant ie ne change pas de place
cd ..==> va dans le répertoire parent
cd /==> saute vers le répertoire racine a la base de tous les systèmes
cd /Home ==> se déplace vers le répertoire home fils de la racine
cd ../.. ==> remonte de deux crans
cd ../mail==> remonte d'un cran et va dans le répertoire mail

VI) Commandes sur le système de fichier


rm ==> supprime un fichier ou un répertoire
mv ==> déplace ou renomme un fichier ou un répertoire
mkdir ==> crée un répertoire
rmdir ==> supprime un répertoire
cp ==> copie un fichier ou répertoire
pwd ==> affiche le chemin du répertoire courant
cd ==> se de place dans le système de fichier
ls ==> affiche la liste des fichiers et répertoires
ln ==> crée un lien vers un fichier

Aux commandes sur les fichiers rm, mv et cp vous pouvez spécifier plusieurs arguments et
utiliser les métacaractères
taper man suivi du nom de Lacommande pour savoir ce que cette dernière fait.

Devoir : les commandes de manipulation de fichier avec exemple, les métacaractères, et ls


Quels sont les métacaractères utilisés dans les systèmes de fichier
VII) Lister les fichiers (avec la commande ls)
Une commande essentielle de tout SE, est le listage des fichiers et des sous répertoires du
répertoire courant l'équivalent sous Unix de la commande dir du DOS est ls. Cette commande
accepte les métacaractères a fin de n'afficher que les fichiers qui correspondent a certaines
contraintes lexicographique. La syntaxe est : ls expression régulière
on peut afficher toutes les infos relatives a un fichier: types, droit, numéro d'inode, nom,l'uid
(user identifier), GId, la taille, la date de création, ... avec l'attribut -l et la syntaxe se
présentera comme suit: ls -l.
Pour afficher les fichiers caches, on utilise l'attribut -a(all) très pratique pour lister les fichiers
de configuration et la syntaxe est : ls -a

COMMANDE DESCRIPTION
Ls lister les fichiers par ordre alphabétique en colonne
ls -l liste les fichiers en ligne avec toutes les infos connexes
ls -a liste en plus les fichiers caches
ls -m sépare les fichiers par une virgule
ls -t trie par date
ls -lu trie par date de dernier accès et affiche cette date
ls -S affiche les types de fichiers ie en rajoutant le symbole
correspondant[/(répertoire),*(exécutable)
ls -s trie par ordre de taille décroissante
ls -X trie par type d'extension
ls -r trie inverse
>ecrase le contenu du fichier avant d’ajouter le nouveau contenu
VIII) Métacaractères
* et ? sont très utiles lors de la manipulation des fichiers en groupe
* remplace dans l'expression dans laquelle il apparait 0,1 ou plusieurs autres caractères.
? remplace un et un seul caractère

exple: rm *-r permet de supprimer de tous les répertoires inclus dans celui courant. à utiliser
avec parcimonie
exple: mv tp*.c tpc : déplace dans le répertoire tpc, tous les fichiers ayant n'importe quel
caractère entre tp et .c
exple : mv tp??.c tpc :déplace exactement deux caractères entre tp et .c
CHAPITRE 2 : MANIPULATION DE FICHIERS

I- AFFICHER
Sous Unix, il existe de nombreuses commandes spécialisées qui permettent d'afficher sur la
sortie standard le contenu d'un fichier. Par combinaison de ses commandes aux seins des
tubes, on peut former des commandes complexes très utiles

1- Afficher le contenu d'un fichier(cat)


La commande cat permet d'afficher sur a sortie standard l'entier contenu d'un fichier
Sa syntaxe est la suivante :
Cat fichier ou
cat fichier1 fichier2 fichier3 ou
cat fichier1 fichier2 fichier3>fichier4
exple:
cat -v/bin/ls: permet d'afficher le contenu de ls
L’option v permet de transformer les caractères de contrôle en caractère affichable a l'écran ,
ceci est très utile pour rechercher des chaines de caractères à l'intérieur d'un programme
exple2: cat lettre.txt rapport.txt conclusion.txt>publication.txt

2- Affiche inverse (avec la commande tac)


tac est homologue a cat mais affiche le contenu d'un fichier en partant de la dernière ligne
vers la première

3- Afficher l'entête (Head)


Head permet de n'afficher que le premières lignes d'un fichier (10 par défaut)
sa syntaxe est la suivante: Head nom du fichier
exple: Head lettre.txt
head -n4 lettre.txt affiche les 4 premiers lignes
head -vcio lettre.txt affiche les 10 premiers caractères après le nom du fichier
4- Afficher la fin (tail)
la commande tail permet de n'afficher que les dernières lignes d'un fichier(10 par défaut) elle
est homologue a head et possède les mêmes attributs
tail -1 nomfichier affiche la dernière ligne du fichier
nl nomfichier : numérote les lignes d’un fichier
devoir chercher a quoi servent les commandes : find, grep, wc, file
5- Afficher écran par écran (avec la commande less et more)
elles permettent d'afficher page par page des fichiers volumineux sur la sortie standard. Pour
passer a la page suivante : les touches flèches. Pour effectuer un défilement vertical (touche.)
pour quitter touche q

tp
taper
-mkdir 3il
-mkdir Analyse
-mkdir 3il/Analyse/eleve
-mkdir 3il/Analyse/espace metrique
-mkdir 3il/Analyse/M pulsar
-touch 3il/music

utiliser gedit (éditeur de texte pour saisir a l'intérieur des fichiers)


exple :
-nano 3il/Music(pour ecrire)
-numbers
-fuck love
-love drugs and sex
-skeezers
-look at me
-Rockstar
-paradise
-33
-rapstar
-wlg
-lundi
-Motorsport
-tuer pour tuer
-on ne met pas le cœur
-potentiel
-loup garou
-caméléon
-ca sort comme ca sort
-demineur
-all girls are the same
-twerk
-crtl+x+ o+ enter
-cd 3il
-ls
-cat music
-nano matlab
-lenght
-factorial
-div
-cat music matlab>tic
-tac tic

-head -n4 tic


-tail -n4 tic

6- Numérotation des lignes(nl)


Syntaxe nl nom du fichier

7- affichage avec tri(sort)


sort/nl tic

II- Statistique(wc)
wc permet de compter le nombre de caractères, de mots et de lignes d'un fichier
Syntaxe : wc nom fichier
exple: wc Matlab résultat:

III-type de fichier(file)
Syntaxe : File fichier, elle retourne le type d’un fichier passé en paramètre

Devoir : recherche sur les droits d'accès sous Unix


IV- Création d’un fichier(touch)
La commande touch permet de créer un nouveau fichier vide sa syntaxe est : touch
nomdufichier.
Appliquer à un fichier déjà existant, elle modifie son heure de dernier accès et met cette
dernière a l’heure courante par défaut
V- Recherche de fichier(find)
Cette commande est ultra puissante, elle permet de faire une recherche sur le système de
fichier et d’afficher la liste des fichiers satisfaisant a une combinaison de critères très varié. Sa
syntaxe est la suivante : find répertoire critères[-print].
Exple: find . -name ‘‘ *.c ’’ -print
Cet exple lance la recherche depuis le répertoire courant(.) et affiche le résultat de la
recherche(print). Le critère de recherche porte sur le nom (name) et doit satisfaire le motif
(expression régulière) suivant : ‘*.c’’ ie tous les fichiers d’extension .c

VI- Les droits d’accès


1- Notion de droit
Les droits d’accès aux fichiers encore appelés mode ou permission sont un point
essentiel du système Unix, il permet de définir des droits différents sur un même
fichier selon la catégorie d’user.
Ainsi les manipulations de fichiers sont restreintes selon les droits alloues à chaque
fichier, à chaque catégorie d’user correspond des droits spécifiques sur un fichier.

2- Affichage des droits(ls)


Pour afficher des droits alloues à un fichier, il faut utiliser ls-l qui permet de lister les
fichiers d’un répertoire avec toutes les infos connexes possibles dont les droits du
fichier qui se présente comme suit :
(- --- --- ---)
Type user groupe other
3- Droits d’accès
Ils sont au nombre de 3 :
a) Lecture (r)
L’accès en lecture autorise la lecture du fichier ie qu’il est possible d’éditer ce
fichier avec une appli quelconque pour avoir le contenu, cet accès est désigné par
la lettre r (mis pour Read)
Alloue à un répertoire, ce droit permet de lister les fichiers qu’il contient

b) Ecriture (w)
L’accès en écriture permet de modifier un fichier et de le supprimer, il est désigné
par w mis pour write.
Alloue à un répertoire, il autorise la modification et la suppression du fichier qu’il
contient quel que soit les droits d’accès des fichiers de ce répertoire (même s’il ne
possède pas eux même le droit en écriture)

c) Exécution(x)

L’accès en exécution permet à un fichier exécutable d’être lancé et a un répertoire


d’être ouvert, il est désigné par la lettre x mit pour exécute
Pour qu’un programme puisse être exécuté il est indispensable que le droit en
exécution soit autorisé
Quant à un répertoire, il est tout aussi indispensable que son droit en exécution soit
autorisé pour qu’on puisse accéder au fichier qu’il contient
Ce droit en exécution est sans effet lorsqu’il est affecté à un fichier qui n’est pas
exécuté

4- Catégories d’user
- Propriétaire
- Groupes
- Autre
5- Changement de droits(chmod)
La commande pour créer un tube est mkfifo TUBE
Tube permet à un fichier de partager les commandes
Notation symbolique : chmod catégorie + opération +liste des droits + nomfichier
Parmi les catégories on peut avoir u=user, g=groupe, o=other, a =all
Parmi les opérations +, -, =
Parmi les listes des droits : r, w, x
Exple on veut affecter tous les droits au groupe musique :
Chmod g=rwx Musique
Exple donner tous les droits a tout le monde
Chmod a=rwx Musique

TP :
-touch musique
-rw_r__r__
-ls-l
CHAPITRE 3 : LE SCRIPTS
Créer un fich-ier nomme sript1. Ecrire
# ?/bin/bash/
Read nom
Echo ‘’je m’appelle $nom’’
Ctrl+x
./script1
Donnons les droits d’auteur
Chmod a=rwx script1

I- Les commandes
Shell est un programme qui permet l’exécution des p
Le Shell est homologue a l’invite du msdos puisqu’il permet d’exécuter :
- Des commandes internes
- Des commandes externes
- Des commandes complexes
- Des fichiers de commandes
Tout programme en cours d’exe est appelé processus, le Shell en est un
1) Commandes internes (PWD,cd)
Les commandes internes au Shell font partie intégrante du Shell et leur
exécution n’implique pas la création d’un nouveau processus. Exple :pwd, cd
2) Commandes externes
Ce sont des programmes binaires généralement situées dans le répertoire /bin
que le Shell va exécuter sous la forme d’un nouveau processus. Exemple :
Ls, gzip
3) Commandes complexes
Elles résultent de la combinaison de plusieurs commandes par l’intermédiaire
de tube : exple : ls-al/head-n5/nl
4) Fichiers de commandes
Appelés aussi script Shell, ces fichiers texte regroupe une succession ordonnes
de commandes et de structure de contrôle. Ecrire un script revient a faire de la
programmation. Exple
if [$# -eg 1]
then [-f ‘‘/bin/$1’’]

echo “commande externe”


fi
else
then
echo “syntaxe :$o commande”
fi
II- Les flux de données
Ils sont transportés par trois voies différentes :
- L’entrée standard
- La sortie standard
- La sortie erreur standard
1- Entrée standard
C’est le canal d’entrée des donnes qui est utilisé par le système. Par défaut
c’est le clavier.
Ainsi les commandes du Shell prennent leur paramètre sur l’entrée standard
2- Sortie standard
C’est le canal de sortie des données. C’est par ce canal que transite les données
résultant de l’exécution d’une commande. C’est en général un terminal
ie l’écran.
Ainsi les commandes du Shell écrivent très souvent des résultats sur la sortie
standard
3- Sortie d’erreur standard
C’est le canal par lequel les messages d’erreur transitent c’est en général
l’écran. Il arrive quelque fois qu’une fenêtre soit spécialement dédié à ce canal.
Dès qu’un code d’erreur est généré par une commande, il est envoyé un
message sur ce canal
4- Les redirections
Il est possible de changer temporairement les entrées et sorties standard lors de
l’exécution d’une commande.
Par exple si on souhaite écrire dans un fichier la liste des fichiers d’un
répertoire on use ls>liste.txt
Le caractère > permet de créer le fichier si celui-ci n’existe pas lors de
l’exécution de la commande, si le fichier existe déjà, son contenu est écrasé.
Pour conserver le contenu d’un fichier intact et écrire à sa suite on use le
caractère >> exple : echo ‘ liste de mon répertoire’>>liste.txt
Le tableau suivant recapitule

Caractères Description
> Redirige la sortie standard
>> Redirige la sortie standard sans
écrasement
< Redirige l’entrée standard
2> Redirige la sortie erreur standard
2>> Redirige la sortie erreur standard
sans écrasement

III- Les caractères spéciaux


En plus des caractères de redirections des flux standard de données, le Shell
possède des caractères dont la signification est très spéciale les voici regroupés
dans le tableau suivant :
* Métacaractères qui remplace n’importe
quelle chaine caractères. Exple : copie
tous les c
? Meta caractère qui remplace un
caractère quelconque
; Permet de séparer plusieurs commandes
écrites sur une même ligne
Exple: cp* .c DATA; tar cvf data.tar
DATA. Tar permet d’archiver et
compresser. Cvf permet de contenir le
programme tel qu’il est écrit
() Regroupe des commandes exple :
(echo ‘‘liste’’ ; ls)>liste.txt
& Permet le lancement d’un processus en
arrière-plan. Cela permet d’exécuter
d’autre commande pendant qu’un autre
processus s’exécute. Exple :Netscape&
| Permet la communication par tube entre
deux commandes. Exple :ls-l|file : la
commande du listage de fichier du
répertoire ls envoie chacun d’eux a la
commande qui permet de connaitre le
type d’un fichier(file)
# Introduit un commentaire. Exple :
#ceci est un commentaire
\ Déspécialise le caractère qui suit, ie si le
caractère qui le suit est spécial alors le
Shell l’ignorera exple : echo
‘‘bon\*jour’’
‘ ’ Définie une chaine de caractère qui ne
sera pas évaluée par le Shell. Exple :
echo ‘* ? &’
‘‘ ’’ Définie une chaine de caractère dont les
variables seront évaluées par le Shell
` ` Définie une chaine de caractère qui sera
interprété comme une commande et
remplacé par la chaine qui sera renvoyé
sur la sortie standard a l’exécution de
ladite commande exple : echo `pwd`>
liste.txt. : écrit a la fin du fichier le
chemin et le nom du répertoire courant ;
Taf : préparer un expose sur le Shell
CHAPITRE 3 : LE SHELL
a) Commandes
Commande internes, externes (situe dans le répertoire bin), complexe (composition de
plusieurs commande exemple : ls -al|head -n3|nl), de commande
Exemple : écrire un programme qui a détecte si une commande est interne ou externe

# !/bin/bash
If [$# -eq 1] compte si le nombre de paramètres entrés = 1
then
If [ -f ‘/bin/$1 ’] si le fichier est dans le repertoire bin
Then
echo ‘$1 est une commande externe’
fi
else
echo ‘syntaxe $0 : commande’
fi

Vous aimerez peut-être aussi