Академический Документы
Профессиональный Документы
Культура Документы
Le contenu
1- Introduction au Système d’exploitation (OS)
- Pourquoi un OS ?
- Qu'est ce que un OS?
2- Système d’exploitation open source
3. Système de fichiers et Gestion de fichiers et répertoires
- Manipulation des fichiers et répertoires - les liens –recherche des fichiers(find ,-exec) -
- Compression et archivage
4. Gestion des droits d’accès aux fichiers et répertoires (chmod) et l’éditeur vi
5. Extraire , trie et filtres et d’autre opération sur les fichiers :
’’wc, grep, cat, sort,uniq,cut,sed,split comm,diff’’’
6. Mécanismes de redirection et les Tubes(’ <’ , ‘<<‘, ‘>,’>>, ’|’’ pipe et double pipe ‘||’).
7- Gestion de processus
8. Automatisation des tache,
- date, at , crontab
9- le Shell et les Scriptes ( programmation sous linux)
- Commandes d’entée et sortie ( echo , read)
- Variables
- Structure de test et de contrôle(if), boucles (for , while) et expression
- Paramètres de scriptes ( $0, $#,$? ) ,($1, $2 ….$n)
INTRODUCTION :Rôles du OS
Les logiciels propriétaires sont donc les logiciels dont une licence,
souvent payante, ne donne qu'un droit limité d'utilisation. On n'a la plupart
du temps accès qu'aux binaires de ces logiciels. Certains logiciels
propriétaires sont gratuits, on les appelle alors des freewares.
(Windows est un OS propriétaire dont le code source est jalousement
gardé par Microsoft. Imaginez que c'est un peu comme le Coca-Cola :
personne ne connaît la recette de fabrication .
les quatre libertés fondamentales pour dire qu’un Système est open source:
Historique
Project GNU:
Historique
Project
Project GNU LINUX
GNU/LINUX
Il existe une très grande variété de distributions, ayant chacune des objectifs
et une philosophie particulière.
Systèmes de fichiers
Systèmes de fichiers: c’est une « subdivision du disque » dur
selon un certain format.
Gestion de fichiers et répertoires
• Ext3 : est très proche de l'ext2, à une différence majeure près, la journalisation. En
effet, ext2 n'était pas journalisé, et en cas de crash disque on risquait plus
facilement une perte de données. Ce n'est plus le cas avec l'ext3.
A noter que l'ext2 et l'ext3 sont parfaitement compatibles entre eux, dans un sens
comme dans l'autre.
Gestion de fichiers et répertoires
PARTITIONEMENT DISQUE DURE
Appellation des disques Dures
L’appellation "à la Linux" est un peu plus complexe que celle de Windows.
C:
Windows D:
E:
…
hda
Linux hdb
hdc
sda
…
Gestion de fichiers et répertoires
un "gros dossier de base qui contient tous les autres dossiers et fichiers".
Sous Windows, il y a en fait plusieurs racines. "C:\" est la racine de votre disque dur
Sous Linux, il n'y a qu'une et une seule racine : "/".
Le système de fichiers sur Linux est similaire à ce que l'on retrouve dans
Windows, i.e. une structure hiérarchique dont une racine et des répertoires qui
s'y rattachent.
Contrairement au système MS-DOS, qui contient plusieurs racine :A: ,C: ,D:
,…
Sous Linux, il y a une seule racine (root) :le slash "/" .
Par exemple, Le CD-ROM est atteint par le répertoire /cdrom.
/home/khalil/
Gestion de fichiers et répertoires
/ ( root)
bin
dev var
home tmp root lib
invite ("prompt")
pippo@localhost
P :~$
pippo : le premier élément est votre pseudonyme.
localhost : ça c'est le nom de l'ordinateur sur lequel vous êtes en train de travailler.
La ligne d'invite de commandes se lit donc ’pippo’ chez ‘localhost
: : c'est un séparateur.
$ : ce dernier symbole est très important, il indique votre niveau d'autorisation sur
la machine. Il peut prendre 2 formes différentes :
Les paramètres sont des options que l'on écrit à la suite de la commande.
Exemples de paramètres:
pippo@localhost :~$ ls -a
HISTORIQUE DES COMMANDES
Pour retrouver les commandes qu’on a déjà tapé, sans devoir les réécrire à
nouveau, on utilise les flèches haut ( ) ou ( ) de notre clavier.
:P
Effacer le contenu de la console .
Commande ls
La commande ls ( list): Affiche la liste des fichiers dans le répertoire courant, en
ordre alphanumérique, sauf ceux qui commencent par le caractère “.” ( sauf les
fichiers cachés)
« pour cacher un fichier sous linux, on le précède d’un « . »)
ls [options] [noms]
noms du ficher qu’on veut lister. Si ce paramètre
est absent, ls affichera les fichiers du répertoire
courant.
Exemple :
ls -l /home/pippo
Commande ls
ls a («all»: tous) Affiche tous les ls S (“size”: taille) Affiche les fichiers les
fichiers (y compris les fichiers .*) gros en premier.
Commande cd
cd [réperoire]
Si répertoire n’est pas précisé, alors le nouveau répertoire
sera le répertoire de connexion ($ home)( home c’est votre
dossier personnel).
Exemple :
pippo@localhost : /etc$
COMMANDES DE BASES : Répértoires
Commande cd
Commande cd
Remarque:
La commande cd, comme toutes les commandes utilisant des répertoires, permet de
spécifier deux types de chemins:
• Les chemins Absolus: ils faut spécifier toute l’arborescence depuis la racine
. Exemple: cd /home/rep1
Les chemins absolus commençent toujours par la racine (/). Vous devez faire
ensuite la liste des dossiers dans lequels vous voulez entrer.
Opérations de base sur les répertoires
• Les chemins relatifs :Un chemin relatif est un chemin qui dépend du
dossier dans lequel vous vous trouvez.
Opérations de base sur les répertoires
Opérations de base sur les répertoires
Opérations de base sur les répertoires
• Les chemins absolus :
les chemins absolus fonctionnent quel que soit le dossier dans lequel on
se trouve.
Commande pwd
La commande pwd (print working directory): Affiche le répertoire courant
("répertoire de travail »)
pwd
Exemple :
pippo@localhost :~$ pwd
/usr/lib/news/bin
pippo@localhost :~$cd .. pwd
/usr/lib/news
La commande pwd): peut etre utilisée lorsqu’on désire obtenir un chemin absolu sur le
répertoire courant.
Cette commande est également utilisée par les scripts pour déterminer le répertoire à
partir duquel ils sont exécutés.
COMMANDES DE BASES : Répertoires
Commande du
Exemple :
pippo@localhost :~$ cd /usr/news
pippo@localhost : /usr/news$ du
du - s : Affiche juste l’espace total occupé par le dossier, et donc n’affiche pas
l’espace des sous-dossiers. ( pour plus de lisibilité du –sh, je le combine à –h)
COMMANDES DE BASES : Répertoires
Commande mkdir
La commande mkdir ( make directory )( permet de créer un répertoire s’il n’existe
pas.
On peut aussi utiliser l’option -p pour créer un répertoire même si son répertoire
parent n’éxiste pas.
Si l’un des répertoires intermedaires n’existe pas, la commande mkdir retourne un
code d’erreur (exit status) sans créer le status ( sauf si l’option –p est spécifiée)
Exemple :
Si on veut créer le répertoire /tmp/ESTM/GI mais le répertoire /tmp/ESTM/GI
n’existe pas, on devrait normalement faire ceci:
pippo@localhost :~$ mkdir /tmp/ESTM/
pippo@localhost :~$ mkdir /tmp/ESTM/GI
Si on essaie de le créer, on reçoit le message suivant:
mkdir: cannot create directory ‘/tmp/ESTM/GI ’: No such file or directory.
Commande rmdir
La commande rmdir (remove directory) permet de supprimer le répertoire spécifié
sur la ligne de commande (répertoire). Si il existe des fichiers ou des sous
répertoires, la commande retournera un code d’erreur (exit status). (Pour supprimer
un répertoire, il faut qu’il soit vide)
rmdir [-p] répertoire
-p : permet de détruire tous les sous –répertoires vides.
Commande mv
mv fichier1 repertoire.
cat [fichier...]
Quand elle est appelée sans options e sans nom de fichier, la commande cat répète
sur la sortie standard ce qui est saisi sur l’entrée standard.
Exemple:
~$ cat Fruits
banane
Cerise
Orange
COMMANDES DE CONSULTATIONS : Fichiers 2
Commandes more / less
more [fichier...]
La commande head : Affiche les n premières lignes d’un fichier, alors qu tail
affiche les dernières lignes d’un fichier.
Si n n’est pas précisé, il prend par défaut la valeur 10.
• sort nom_fichier : Tri par ordre alphabétique des lignes d'un fichier
texte.
COMMANDES DE CONSULTATIONS : Fichiers 2
Commande touch
Sous les systèmes UNIX tout élément est représenté sous forme de fichier.
(Un périphérique, un écran, une imprimante, un répertoire…. TOUT EST FICHIER)
Un répertoire est un fichier qui contient la liste des fichiers sensés être stockés dans
ce répertoire.
L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la
base, appelée racine, est notée «/».
La liste des noms de fichiers est stockée à un autre endroit que leur
contenu.
Liens physiques:
Si vous supprimer le fichier d’origine, cela n’affecte pas le contenu du lien
physique.
Le contenu est supprimé quand il n’y a plus aucun fichier ( lien physique) qui y
fait référence.
Liens Symboliques
• Par taille
les fichiers qui font plus de 10 Mo
• Par Type
-type d : pour rechercher uniquement des
répertoires (directories).
Recherche de fichiers et de
répertoires
• Options des sélection des fichiers et répertoires
▫ name : recherche par nom de fichier
▫ type : recherche par type de fichier
▫ user : recherche par propriétaire
▫ group : recherche par l’appartenance à un groupe
▫ size : recherche par taille de fichier
▫ atime : recherche par date de dernier accès
▫ mtime : recherche par date de dernière modification
▫ ctime : recherche par date de création
▫ perm : recherche par autorisations d’accès
▫ links : recherche par nombre de références (links) aux fichiers
71
Recherche de fichiers et de
répertoires
• Option de commande
▫ Les options de commande seront traitées pour chaque fichier
trouvé. En dehors de l’option –print qui montre le chemin
d’accès au fichier, on peut mettre en place l’option -exec
Recherche de fichiers et de
répertoires
• Traitement sans confirmation avec –exec
• La spécification d’une commande derrière –exec est
soumise à certaines règles:
▫ L’option –exec doit être la dernière de la commande
find
▫ La commande placée derrière –exec doit être
terminée par le paramètre « ; ». Comme c’est un
caractère spécial, il doit être masqué par un \
73
Recherche de fichiers et de
répertoires suivi de –exec
Exemple
• find . –user student –exec ls –l {}\; ( affiche le
format long de la commande ls pour les fichiers trouvés)
Recherche de fichiers et de
répertoires
• Traitement après confirmation avec –ok
▫ Les mêmes explications s’appliquent également à
l’option –ok, mais celle-ci, demande une
confirmation d’exécution de la commande pour
chaque fichier trouvé. Ce n’est qu’en cas de réponse
affirmative (avec y), que la commande placée
derrière –ok sera exécutée.
▫ Exemple :
find . –ok rm {} \;
Critères de recherche de noms de
fichiers
• Modèles de noms de fichier
▫ * : remplace une chaîne vide ou de longueur variable
▫ ? : remplace un caractère unique quelconque
▫ [] : représente une série ou une plage de caractère
▫ [!…] : inverse la recherche
• Exemples
▫ a* : les fichiers dont le nom commence par a
▫ a?? : fichiers en trois lettres, commençant par a
▫ [aA]* : fichiers dont le nom commence par un a minuscule ou A majuscule.
▫ [a-m]* : fichiers dont le nom commence par une lettre de la plage a-m.
▫ *[1-5] : fichiers dont le nom se termine par un chiffre de la plage 1 à 5.
Archiver et compresser
Compression avec gzip et bzip2
• La compression d'un fichier se fait de manière suivante:
gzip fichier
• gzip renomme le fichier compressé en « fichier.gz ».
• gunzip fichier.gz
ou
• bunzip2 fichier.bz2
gzip et bzip2 ne permettent de compresser qu'un seul fichier à la fois.
tar : assembler des fichiers dans une archive
• tar : permet d'assembler des fichiers dans un seul fichier avant de les
compresser.
1. Pour réunir les fichiers dans un seul gros fichier appelé archive.
Exemple:
▫ lecture : 4,
▫ écriture : 2,
▫ exécution : 1,
▫ pas de permission : 0.
91
▫ liste des lignes contenant "image" ou "son" dans tous les fichiers du
répertoire courant :
grep -E "(image|son)" *
sort [fichier...]
• Cette exemple va créer les fichiers petit fichiers aa, ab, ac, …
Exemple:
$ diff carnet1 carnet2
< maurice:29:0298334432:Crozon
< robert:75:0144234452:Paris
---
> myriam:30:0434214452:Nimes
> olivier:29:0298333242:Brest
La commande de sed
sed est éditeur ligne non interactif, il lit les lignes d’un fichier une à une (ou
provenant de l’entrée standard) leur applique un certain nombre de
commandes d’édition et renvoie les lignes résultantes sur la sortie standard.
sed est une commande très riche (pour plus de détails man sed)
La commande de sed
La fonction de substitution : s
• s permet de changer la 1re ou toutes les occurrences d’une chaîne par une
autre.
• Syntaxe :
• sed "s/toto/TOTO/" fichier va changer la 1re occurrence de la chaîne
toto par TOTO
régulière.
• En fait les lignes du fichier d’entrée ne sont pas supprimées, elles le sont au
niveau de la sortie standard.
La commande de sed
Les fonctions : p, l et=
• Il est aussi possible d'utiliser 2>> pour ajouter les erreurs à la fin du
fichier
Exemple :
cut –d , -f 1 fichiers_inexistant.csv>>eleves 2>$1
< et << : lire depuis un fichier ou le clavier
Modifier la date
• Exemple:
La création du répertoire « docs » dans votre répertoire à 15h30
atrm num
Destruction d'une tâche en attente (num est le numéro de la tâche à
supprimer obtenu grâce à la commande atq).
Ecriture d'une crontab 1/2
L'utilisateur doit écrire une "crontab" pour décrire les tâches qu'il souhaite
automatiser.
Le format d'une "crontab" est une commande par ligne; une ligne est
composée de:
minute: 0-59
heure: 0-23
jour_mois: 1-31
mois: 1-12
jour_semaine: 0-6 (0 = dimanche)
: 22 11 13 * 5 df >> /tmp/df.log
Les processus
Définition
Un processus représente à la fois un programme en cours
d'exécution et tout son environnement d'exécution (mémoire, état,
identification, propriétaire, père ...)
Un numéro de processus unique PID (Process ID) : chaque processus Unix est
numéroté afin de pouvoir être différencié des autres
Exemple
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0.0 Aug 11 ?? 0:01.87 /sbin/init -a
root 3 1 0.0 Aug 11 ?? 0:00.27 /sbin/kloadsrv
Numéro
Signification
de signal
15 Signal de terminaison de processus.
Exemple:
#!/bin/bash
echo entrez deux nombres:
read nombre1 nombre2
echo La somme vaut $(($nombre1 + $nombre2))
Les variables
• On peut créer des variables V par affectation et les utiliser avec $V
Exemple:
#!/bin/bash
pays=Maroc
echo La variable pays vaut $pays
$ n=10 $ n=10
$ echo $(( n + 1 )) $q= $( echo $n + 1 |bc )
$ p = $(( n * 5 / 2 )) $p=$(echo $n*5/2 |bc )
$ echo $p $echo q
$echo $p
La commande test ou [ ]
• Cette commande permet de tester l'existence et le statut
d'un fichier.
• Test de fichier:
La commande test ou []
2.a
#!/bin/sh
echo " dooner 2 nombre"
read A B
if [ $A -lt 0 -a $B -lt 0 ] || [ $A -gt 0 -a $B -gt 0 ]
then
echo " produit positif"
else
echo " produit negatif"
fi 2.b
#!/bin/sh
echo " dooner 2 nombre"
if [ $1 -lt 0 -a $2 -lt 0 ] || [ $1 -gt 0 -a $2 -gt 0 ]
then
echo " produit positif"
else
echo " produit negatif"
fi
Substutution d’une commande:
syntaxe : variable= ` commande`
$ b= `wc –l file`
( b contient le nombre des ligne contenue dans le fichier )
• Syntaxe :
case Valeur in
Modele1) Commandes ;;
Modele2) Commandes ;;
*) action_defaut ;;
esac
La structure while
Syntaxe:
while (conditions)
do
liste de commandes ou d’instruction
Done
Exemple
#!/bin/bash
i=0
while [ $i -lt 100 ]
do
i=$(($i+1))
echo $i
done
La structure for
Syntaxe:
#!/bin/bash #!/bin/bash
for fichier in f1 f2 f3 f4 ….fn for ext in jpg png txt
do do
if [ -f $fichier ]; then rm *.$ext
echo "$fichier est un fichier done
ordinaire"
fi
done
La structure for
La commande seq
La commande seq permet de parcourir une suite de chiffre successive
$ for i in $(seq 1 4)
> do
> echo $i
> done
Résultat est :
1
2
3
4
Exercice 3 ( case … esac)
• En utilisant case ..esac Ecrire un programme appeler « jour.bash » qui
admet comme paramètre un chiffre de 1 à 7 et qui affiche le jour de la
semaine correspondant
• Exemple d’execution:
jour.bash 2
c’est mercredi !
Exercice 4 ( while)
• Ecrire un scripte shell qui permet de lire une suite de nombre saisis
à partir de clavier.
• Dés fin de la saisi marquée par le chiffre 999 . Afficher les nombre
en ordre croissant
Exercice 5 (for)
• Ecrire un scripte shell qui permet de trouver tous les fichiers
d’extention java dans l'arborescence courante qui contiennent la
chaine de caractères passée en paramètre :
Solution ( case … esac)
Ecercices 3
#!/bin/sh
case $1 in
1 ) echo "c'est lundi" ;;
2 ) echo "c'est mardi" ;;
3 ) echo "c'est mercredi" ;;
4 ) echo "c'est jeudi" ;;
5 ) echo "c'est vendredi" ;;
6 ) echo "c'est samedi" ;;
7 ) echo "c'est dimanche" ;;
*) echo "message" ;;
esac
Solution( while)
Ecercices 4
#!/bin/bash
if (test -f fich_num ) then
rm fich_num
fi
i=0
while (test $i -ne 99)
do
read num
i=$num
echo $num >> fich_num
done
sort -n fich_num
Solution (for)
Ecercices 5
#!/bin/sh
for file in `find . –type f -name "*.java ’’`
do
res=` grep $1 $file | wc –l `
if [ $res –ge 1 ] then
echo $file
fi
done