Vous êtes sur la page 1sur 231

SYSTÈME D’EXPLOITATION

GNU/ LINUX

EL BAHRI Nisserine
elbahri_nisserin@upf.ac.ma
SYSTÈME D’EXPLOITATION
SYSTÈME D’EXPLOITATION
➢ Services gérés par le système d’exploitation :

Gestion de fichiers Gestion des applications

Gestion de mémoire Gestion d’entrée/sortie


« I'm doing a (free) operating system (just a
hobby, won't be big and professional like gnu)
it probably will never support anything other
than AT hard disk. »

Linus Torvalds
HISTORIQUE (UNIX)
UNIX (PHYLOSOPHIE)
Sous unix, tout est fichier

• fichiers (!)
• répertoires
• devices
• liens
• pipes
• sockets
UNIX (PHYLOSOPHIE)
Sous unix, les fichiers doivent être
• lisibles par l'homme
• exploitables simplement par la machine

...donc sous Unix :


• tous les fichiers de configuration sont texte...
• ...ou générés à partir de fichiers texte
• pas de binaire : les fichiers de configuration
doivent être éditables simplement (≠registry)
• pas de formats exotiques (≠xml)
• pas de formats fermés (≠doc,...)
GNU (HISTORIQUE)
GNU : « Gnu's Not Unix »
• Promu par la Free Software Foundation
• Objet : développement d'outils et de licences
libres
▪ 1984 : emacs (Editeur)
▪ 1987 : gcc (compilateur)
▪ 1989 : GPLv1 (licence)
▪ 1991 : GPLv2
▪ 1997 : lesstif (interface
graphique)
LINUX (HISTORIQUE)
• Août 1991
▪ 1ère version
▪ code source : 63 Ko
• 1994 :
▪ utilisé pour la première fois par Debian
▪ code source : 1 Mo

• Juin 1996 : v2.0


▪ code source : 5 Mb
• Mars 2006 : v2.6.11, >200 Mb
▪ 20+ architectures supportées
▪ (x86, ppc, sparc, arm, a, avr32, ...)
LINUX (HISTORIQUE)
360x1012
FLOPS

1x109 FLOPS

20x103 MIPS

1 MIPS
GNU/LINUX (LE KERNEL ET L’OS)
Kernel : Linux
• mise à disposition des ressources machines
▪ entrées
▪ allocation mémoire
• gestion d'accès aux ressources machines
▪ droits
▪ ordonnancement
▪ gestion des accès
• modulaire
▪ chargement déchargement de modules (drivers)
▪ automatique ou manuel
GNU/LINUX (LE KERNEL ET L’OS)
GNU/LINUX (LES DISTRIBUTIONS)
GNU/LINUX (LES DISTRIBUTIONS)
GNU/LINUX (LES DISTRIBUTIONS)
• Payantes (RHEL), semi-payantes (Mandriva)
• gratuites (presque toutes)
• Pour l'expert (Debian), le débutant (Kubuntu),
le maniaque (LFS), le patient (Gentoo), le
nostalgique (Yggdrasil, Slackware)
• Orientée bureautique (Ubuntu), serveur
(Trustix) ou généraliste (SuSE, Fedora)
• Plus de 350 distributions sur le «marché»
GNU/LINUX (LES DISTRIBUTIONS)
• Points communs ?
▪ kernel
▪ outils GNU

• Différences ?
▪ système de packages (rpm, apt, …)
▪ fichiers de configuration
▪ fichiers de démarrage
▪ organisation et type du filesystem
▪ philosophie
▪ canaux de distribution
▪ méthode d'installation, de configuration
▪ outils
▪ …
ATELIER
• Installation d'Ubuntu comme machine virtuelle
▪ Installer Vmware
▪ Installer Ubuntu à partir d’une image iso
▪ Mettre à jour
▪ Explorer Ubuntu
▪ Indicators (haut à droite)
▪ Menu bar
▪ Launcher (barre à gauche)
▪ Dash
▪ workspaces
▪ System Settings
▪ Changer l’apparence
▪ La résolution
▪ La souris
▪ Langue du clavier
▪ Paramètres réseau
CRÉATION D’UNE MACHINE VIRTUELLE

2
CRÉATION D’UNE MACHINE VIRTUELLE

3
CRÉATION D’UNE MACHINE VIRTUELLE

4
CRÉATION D’UNE MACHINE VIRTUELLE

6
CRÉATION D’UNE MACHINE VIRTUELLE

7
CRÉATION D’UNE MACHINE VIRTUELLE

8
CRÉATION D’UNE MACHINE VIRTUELLE

9
CRÉATION D’UNE MACHINE VIRTUELLE

10
CRÉATION D’UNE MACHINE VIRTUELLE

11
CRÉATION D’UNE MACHINE VIRTUELLE

12
CRÉATION D’UNE MACHINE VIRTUELLE

13
CRÉATION D’UNE MACHINE VIRTUELLE

14
CRÉATION D’UNE MACHINE VIRTUELLE

15
CRÉATION D’UNE MACHINE VIRTUELLE

16
FIN CRÉATION D’UNE MACHINE VIRTUELLE
ETAPES D’INSTALLATION

1
ETAPES D’INSTALLATION

3 4

7
ETAPES D’INSTALLATION
9

8
ETAPES D’INSTALLATION

10
ETAPES D’INSTALLATION

11
ETAPES D’INSTALLATION

13
12
ETAPES D’INSTALLATION

14
ETAPES D’INSTALLATION

15
ETAPES D’INSTALLATION

16
ETAPES D’INSTALLATION

17
18
ETAPES D’INSTALLATION

19

20
ETAPES D’INSTALLATION
ETAPES D’INSTALLATION

21
ETAPES D’INSTALLATION
22

23

24
ETAPES D’INSTALLATION

25 26

27
ETAPES D’INSTALLATION

29

28
ETAPES D’INSTALLATION 30

31
33

32
ETAPES D’INSTALLATION

35

34
ETAPES D’INSTALLATION

36
FIN D’INSTALLATION
SHELL (DEFINITIONS)

• Shell : est un interpréteur de commandes destiné aux systèmes


d'exploitation de type Unix qui permet d'accéder aux fonctionnalités
internes du système d'exploitation.

➢ N.B : Que le Shell est le synonyme de terminal.


SHELL (DEFINITIONS)

• terminal : c'est l'interface entre l'utilisateur et le système d'exploitation,


c'est un émulateur de console qui permet de lancer des commandes
texte depuis l'interface graphique dans laquelle se trouve une invite
de commande matérialisée par $ ou # suit une barre clignotante.

Invité de commandes
SHELL (DEFINITIONS)

• Les systèmes d'exploitation de type unix disposent le plus souvent d'un


shell. À l'origine, l'interpréteur de commandes par défaut était sh, qui
donna naissance à de nombreuses variantes, dont csh, étendu en
tcsh, ou ksh, ou encore rc... Mais aujourd'hui bash, s'inspirant de sh, ksh,
et csh, est le shell le plus répandu, bien qu'il existe d'autres interpréteurs
de commandes, comme zsh, ou ash.

• Une commande est une instruction qu'un utilisateur envoie au


système d'exploitation de son ordinateur pour lui faire exécuter une
tâche. Il peut s'agir de manipuler des fichiers, d'accéder à des
répertoires, de modifier des droits d'accès, etc.

➢ Exemple des cmd:


pwd, cd, ls, mkdir, rmdir, ...
SHELL (INTERET)
▪ Afficher les shells installés: cat /etc/shells
▪ Afficher le shell par défaut: $SHELL
▪ Changer shell: taper nom shell

➢ Remarque :

✓ $SHELL c’est une variable d’environnement.


✓ La commande env :permet d’afficher une liste des variablles avec leurs contenus.

➢ Exemple :
echo $SHELL

➢ Autre exemple :
SHELL
• On peut exécuter plusieurs shells en parallèle (unix est multitâche)
• Plusieurs utilisateurs peuvent exécuter un shell en même temps (unix est
multiutilisateurs)
SHELL (INTERET)
• Chaque utilisateur possède un shell par défaut, qui sera lancé à
l'ouverture d'une invite de commande. Le shell par défaut est précisé
dans le fichier de configuration /etc/passwd dans le dernier champ
de la ligne correspondant à l'utilisateur :

➢ Différence entre cmd cat et gedit:


SHELL (DIFFÉRENCE)
• Il est possible de changer de shell dans une session en exécutant
tout simplement le fichier exécutable correspondant, par exemple :

➢ Ou bien :

➢ Déterminer le shell courant:

➢ Exemple :
SHELL
Par défaut dans la plupart des shells le prompt est composé du nom
de la machine, suivi de deux points (:), du répertoire courant, puis d'un
caractère indiquant le type d'utilisateur connecté :

➢ «$» indique qu'il s'agit d'un utilisateur normal

➢ «#» indique qu'il s'agit de l'administrateur, appelé «root»


FILESYSTEM

• Organisé hiérarchiquement dans sa totalité


• depuis la racine («/»)
• Sensible à la casse (des caractères)
• Utilise '/' pour séparer les répertoires dans un chemin
• Peut contenir n'importe quel caractère
• Taille pratique d'un nom de fichier illimitée
FILESYSTEM (ORGANISATION)
FILESYSTEM (ORGANISATION)
FILESYSTEM (ORGANISATION)
FILESYSTEM (ORGANIZATION)
➢ Répertoire essentiels au fonctionnement :

/ : racine

/bin : contient les commandes de base (sous Unix, presque toutes les
commandes sont "externes", et non intégrées au shell comme sous DOS).
/boot : contient les informations nécessaires au démarrage de la machine.

/dev : contient les fichiers spéciaux correspondant aux périphériques.

/etc : la plupart des fichiers de configuration.

/home : contient les répertoires personnels des utilisateurs. Par exemple,


l'utilisateur BOB a généralement pour répertoire /home/BOB .

/lib : contient les principales bibliothèques partagées (équivalent des DLL


de Windows).
FILESYSTEM (ORGANISATION)
Répertoire Sous répertoire Contenu
/bin /usr/bin Commande de base
/usr/local/bin Commandes supplémentaires ajoutées par l'administrateur
/sbin /usr/sbin Commandes d'administration
/boot Contient les fichiers du noyau Linux
/dev Contient les fichiers particuliers aux périphériques
/etc /etc/rc.d Contient les fichiers de configuration du système
/etc/init.d Sous répertoire de démarrage des services sous Linux
/home Contient les répertoires personnels des utilisateurs
/lib /usr/lib Bibliothèques de sous programmes utilisées pour le
développements
/mnt /mnt/cdrom Contient les répertoires des périphériques amovibles: CD/
/mnt/floppy disquette, USB
/mnt/usb
/proc Répertoire dédié aux processus
/root Répertoire personnel de l'administrateur
/tmp Les fichiers temporaires
/usr /usr/include Principal répertoire du système
/usr/share/man Sous répertoire des fichiers d'entête
/usr/local Sous répertoire de manuels Linux
Logiciels installés par l'administrateur
/var /var/log Répertoire contenant la partie « variable » du système
/var/spool comme les traces d'activités du système; les boîtes aux
/var/spool/mail lettres, etc.
/var/mail
FILESYSTEM
FILESYSTEM (BALADE DANS LE FS)
• Notion de ligne de commande
Une ligne de commande est une chaîne de caractère constituée d'une
commande, correspondant à un fichier exécutable du système ou bien
d'une commande du shell ainsi que des arguments (paramètres)
optionnels

➢ Syntaxe : Commande -option param1


Commande -option1 -option2 param1 param2 param3
➢ Exemple :
ls -a -l /home/ahmed/Bureau
ls -al /home/ahmed/Bureau
echo {1..9}
Pour chaque commande il existe généralement un certain nombre
d'options pouvant être détaillées en tapant une des commandes
suivantes :
commande --help ls --help
➢ Exemple :
man commande man ls
• La commande « echo » permet simplement d'afficher une ligne sous
forme d’un message ou d’un contenu d’une ou plusieurs variables.
➢ L’option -e : permet de remplacer l’expression par sa signification.

➢ Il est possible avec l’option -n de retirer le saut de ligne insérer par


défaut à la fin de la ligne afficher par echo :

➢ Exemple :
FILESYSTEM (BALADE DANS LE FS)

• Se déplacer dans le filesystem


▪ cd chemin (chemin relatif)
▪ cd /chemin (chemin absolu)
• Voir le contenu du répertoire
▪ ls (contenu du répertoire courant)
▪ ls chemin (contenu de « chemin »)
• Connaître le répertoire courant
▪ pwd (print working directory)
FILESYSTEM (BALADE DANS LE FS)
Répertoires à part :
/ : racine du filesystem
. : répertoire courant
.. : répertoire parent
~ : répertoire maison («home dir», correspond à $HOME)

➢ Exemple :
PRINCIPAUX RACCOURCIS CLAVIER
➢ Gestion des documents :
PRINCIPAUX RACCOURCIS CLAVIER
➢ Edition :
SHELL (E/S)
• Entrées-sorties standard

Lors de l'exécution d'une commande, un processus est créé.


Celui-ci va alors ouvrir trois flux :

• STDIN (entrée standard) : ce qui est envoyé vers le processus


• STDOUT (sortie standard) : ce qui est envoyé par le processus
• STDERR (sortie erreur standard) : les erreurs renvoyés par le
processus
SHELL(E/S REDIRECTION)
• Redirections

Linux possède des mécanismes permettant de rediriger les entrées-


sorties standards vers des fichiers :
▪ «>» permet de rediriger la sortie standard d'une commande située à
gauche vers le fichier situé à droite.

➢ Exemple :
ls –al > test.txt
cat /etc/passwd >> test.txt
echo “hello” > fich1.txt
▪ «<» indique une redirection de l'entrée standard.

➢ Exemple :
cat < fs
SHELL (E/S)
➢ Exemple :
SHELL(PIPES)
• Les «pipes» (pipelines) permettent d'envoyer la sortie d'une
commande (STDOUT) à l'entrée d'une autre (STDIN) :

• processus > fichier


STDOUT est écrit dans fichier (et non plus sur le terminal)

• processus 2> fichier


STDERR est écrit dans fichier (et non plus sur le terminal)

• processus > fichier1 2> fichier2


STDOUT est écrit dans fichier1 et STDERR dans fichier2
SHELL (E/S)
• cat : copie STDIN (ou un fichier) sur STDOUT
(écrit les erreurs, s'il y a, sur STDERR)
COMMANDES DE BASE (CD)
• cd argument
« rentre » dans le répertoire argument
Après un changement de répertoire courant, l'ancien
répertoire courant est stocké dans '-', permettant d'y revenir
avec 'cd -'
exemples
Cd (equivaut à 'cd ~' et 'cd $HOME')
cd ..
cd
cd /etc
cd etc
COMMANDES DE BASE (LS)
• ls option argument
liste les fichiers/répertoires correspondant à
argument ou dans le répertoire argument
options
-a : affiche tous les fichiers (y compris ceux
commencant par '.')
-l : listing étendu
-R : récursif (affiche le chemin)
-S : tri par taille
-t : tri par date de modification
-r : inverser le tri
-1 : affichage sur une colonne
exemples
ls /etc
ls -laR ~
COMMANDES DE BASE ({MK,RM}DIR)
• mkdir [p] répertoire1 répertoire2 ...
crée les répertoires répertoire1, répertoire2, ...
Option:
-p : crée les répertoires supérieurs si nécessaire
• exemples
mkdir $HOME/documents
mkdir test $HOME/images_iso
mkdir -p $HOME/documents/personnel/{photos,factures}
mkdir doc1 doc2

• rmdir répertoire1 répertoire2 ...

supprime les répertoires répertoire1, répertoire2, ...


ces répertoires doivent être vides pour pouvoir être supprimés (sion
utiliser rm -rf )
• exemples
rmdir $HOME/documents
rmdir test $HOME/images_iso
rmdir $HOME/documents/personnel/{photos,factures}
COMMANDES DE BASE (CP & MV)
cp source destination
copie la source (fichier ou répertoire) vers la destination (fichier ou
répertoire)
• options
-p : préserve les droits
-R : récursif

• exemples
cp *.txt /tmp
cp Bureau/test.txt Documents/toast.txt
cp -R controles Bureau/backup
mv source destination
➢ déplace la source (fichier ou répertoire) vers la destination (fichier ou
répertoire)
➢ Exemple : mv *.txt /tmp

➢ permet aussi de renommer un fichier ou un répertoire :

➢ Exemple : mv rep/test.txt rep/toast.txt


COMMANDES DE BASE (RM & TOUCH)
rm argument
Supprime le fichier ou répertoire argument
• options
-R : récursif
-f : force la suppression
• exemples
rm -rf /doc/pictures
rm toast.txt
touch fichier
Crée le fichier s'il n'existe pas, ou met la date de
modification du fichier à l'heure courant s'il existe
La commande : '>' permet aussi de créer un fichier
• exemples
touch toast.txt
COMMANDES DE BASE (GLOBBING)

• Permet de nommer plusieurs fichiers d'un seul


coup grâce à des « jokers » (wildcards)
▪ ? : accepte un seul caractère
▪ * : accepte n'importe quel caractère 0 ou n
fois
▪ [chars] : acceptée (liste de caractères
alphanumériques)
▪ [^chars] ou [!chars] : dénote une classe de
caractères refusée (liste, suite alphabétique ou
suite numérique)
▪ {e1,e2,e3} : remplace les arguments par les
éléments de la liste
▪ {e1,e2}{e3,e4} : remplace les arguments par le
produit cartésien des deux listes
1. Afficher le chemin du dossier actuel. TP1 : EXERCICE 1
2. A quoi ça sert la commande ls ? afficher les informations d’aide concernant cette commande.
3. Essayer les options de la commande ls.
4. Rappeler les commandes de base de navigation dans le système de fichiers. Utiliser
ces commandes afin d'explorer l'arborescence du système.
5. Afficher le contenu du dossier Bureau en utilisant le chemin relatif et le chemin absolu.
6. Passer directement à l’emplacement :
a) Répertoire racine. b)répertoire courant. c) répertoire parent. d) répertoire maison.
7. Utiliser une commande pour créer un répertoire « cours » dans le dossier home d’un user.
8. Utiliser une commande pour créer les répertoires linux et php dans un répertoire cours dans votre répertoire personnel.
9. Créer un fichier essai contenant le texte « ceci est un essai » dans le dossier cours/linux
10.Copier le fichier « essai » dans le répertoire php.
11.Modifier le contenu du fichier « essai » par « le contenu précédent est écrasé » dans le dossier cours/linux.
12.recopier le fichier dans le dossier cours/php.
13.Copier le dossier « cours » avec son contenu dans un dossier nv crée dans votre dossier personnel.
14.Créer un nouveau fichier « essai2 » et déplacer le dans un dossier nv2.
15.Renommer le dossier « cours » qui existe dans le répertoire nv par le nom « leçon ».
16.Supprimer le fichier « essai » d’origine.
17.A la fois renommer le répertoire PHP qui existe dans « cours » par symfony_php et le déplacer dans le répertoire leçon.
18.Sauvegarder la liste des fichiers contenus dans le répertoire de travail dans un fichier nommé list.txt
19.Donner une commande qui permet d'effacer le répertoire nv2 avec son contenu.
20.Donner une commande qui permet d'effacer juste le contenu du répertoire cours.
21.Donner une commande qui retourne le contenu du répertoire « / » trié en ordre alphabétique inversé.
TP1 : SOLUTION D’EXERCICE 1
16. rm cours/Linux/essai.txt
1. Pwd
17. mv cours/PHP nv/leçon/symfony_php
2. Ls --help ou man ls
3. Ls –al ou –l,… 18.ls > list.txt
4. Cd 19.rm -Rf nv2
5. Ls Bureau ou ls /home/amed/Bureau
20.rm -R cours/*
6. a) Cd / b) cd . c) cd .. d) cd ~
7. mkdir cours 21.ls -r /
8. mkdir /home/ahmed/cours/Linux /home/ahmed/cours/PHP ou bien :
mkidir ./cours/Linux ./cours/PHP ou bien : mkidir cours/Linux cours/PHP
ou bien : mkdir cours/{Linux,PHP}
9. echo ‘ceci est un essai’ > cours/Linux/essai.txt
10.cp cours/Linux/essai.txt cours/PHP
11.echo ‘le contenu précédent est écrasé’ > cours/Linux/essai.txt
12.cp cours/Linux/essai.txt cours/PHP
13.cp -R cours nv
14.touch essai2.txt; mkdir nv2;mv essai2.txt nv2
15.mv nv/cours nv/leçon
COMMANDES DE BASE (GLOBBING)
• abc? : accepte un fichier de 4 lettres commençant
par abc
• abc* : accepte un fichier de 3 lettres ou plus
commençant par abc
• *abc* : accepte un fichier de 3 lettres ou plus
contenant abc
• [ab]c : accepte un fichier de 2 lettres commençant
par 'a' ou 'b'
• [a-m]* : accepte un fichier commençant par une
lettre comprise alphabétiquement entre 'a' et 'm'
inclus
• *[0-1][0-9] : accepte un fichier se terminant par un
nombre compris entre '00' et '19'
• [13579]*[a-z] : accepte un fichier commençant par
un nombre impair et se terminant par une minuscule
COMMANDES DE BASE (GLOBBING)
• [^13579]*[^az] : accepte un fichier commençant
par un nombre pair et se terminant par une
majuscule
• {a,b,c} : accepte les fichiers nommés 'a', 'b' ou 'c'
• {a*,*b*,*c} : accepte les fichiers dont le nom
commence par 'a', contient 'b' ou se termine par
'c'
• *{.doc,.odt,.rtf} : accepte les fichiers nommés
'*.doc', '*.odt' ou '*.rtf'
• {photo,image}{.jpg,.png} : accepte les fichiers
nommés 'photo.jpg', 'photo.png', 'image.jpg' ou
'image.png'
• {jean,pierre}{,jean} : accepte les fichiers dont le
nom est 'jean', 'jean-jean', 'pierre' ou 'pierre-jean'
COMMANDES DE BASE
(GLOBBING: LIMITES)

• On ne peut pas matcher '/'


• On doit matcher explicitement le caractère '.'

• Remarque :
Ce ne sont pas des expressions régulières
TP1 : EXERCICE 2
1. Créer les fichiers suivants:
panacota tiramisu anaconda annee2021 annee40
annee4200 annee4a annee4mode Aéroport Aérobie5
Desserts

2. Lister tous les fichiers :


✓ Se terminant par 5
✓ Commençant par annee4
✓ Commençant par annee4 et de 7 lettres maximum
✓ Commençant par annee avec aucun chiffre numérique
✓ Contenant la chaîne ana
✓ Commençant par a ou A
TP1 : SOLUTION D’EXERCICE 2

ls *5
ls annee4*
ls annee4?
ls annee[!0-9]*
ls *ana*
ls [aA]*
TP1 : EXERCICE 3
• En utilisant la commande echo répondre aux questions
suivantes :
1. afficher tous les fichiers se trouvant dans votre répertoire courant.
2. afficher tous les fichiers qui commence par la lettre « D » et qui se trouvent
dans votre répertoire courant.
3. afficher tous les fichiers qui se terminent par un « s ».
4. afficher tous les fichiers qui commencent par « D » et se terminent par « s »
et ont le caractère « n » au milieu.
5. afficher les fichiers qui ont exactement six caractères dans leurs noms.
6. afficher les fichiers qui ont 8 caractères dans leurs noms et qui commencent
par « D ».
7. afficher les fichiers dont les noms contiennent au moins 6 caractères et se
terminent par un « s ».
8. afficher les fichiers qui commencent par un « D » ou un « P ».
9. afficher les fichiers qui ne commencent par un « D » ou un « P ».
10. afficher les fichiers qui commencent par une lettre comprise entre « D » et
« P ».
11. afficher les fichiers qui commencent par une lettre qui n'est pas comprise
entre « D » et « P ».
TP1 : SOLUTION D’EXERCICE 3

1. echo *
2. echo D*
3. echo *s
4. echo D*n*s
5. echo ??????
6. echo D???????
7. echo *?????s ou echo ?????*s
8. echo [DP]*
9. echo [!DP]*
10. echo [D-P]*
11. echo [!D-P]*
SHELL(PIPES)

• Les pipes et les redirections peuvent être combinées


SHELL(PIPES & REDIRECTION)
Attention à l'ordre des redirections et des
pipelines
• a | b 2> c
le résultat de la commande a est passé à b
les erreurs de b sont redirigées dans le fichier c
• a 2> c | b
le résultat de la commande a est passé à b
les erreurs de a sont redirigées dans le fichier c

➢ Exemple :

ls –al |cat > test.txt


SHELL: COMMANDES MULTIPLES
• Le shell permet l'exécution de commandes successives en les
séparant par ';' :
➢ Exemple : ls > ~/liste.txt; cd ; ls >> ~/liste.txt

Le shell permet d'exécuter une commande uniquement si la précédente a


marché :

➢ Exemple : cat fichier > /dev/null && echo "le fichier existe"

Le shell permet d'exécuter une commande uniquement si la précédent a


échoué :

➢ Exemple :
cat fichier > /dev/null|| echo "le fichier n'existe pas"
SHELL: JOB CONTROL

• Fonctionnalité interne au shell


• Permet de gérer des tâches (processus)
• multiples dans un même shell :
suspension temporaire : le processus est arrêté jusqu'à nouvel
ordre
arrêt définitif : le processus est terminé
mise en arrière/avant plan : le processus reçoit l'entrée clavier
SHELL: JOB CONTROL
• Suspendre (stopper) un processus : <Ctrl>z
• Arrêter (terminer) un processus : <Ctrl>c (si le
processus est à l'avant plan)
• Arrêter (terminer) un processus : kill %n (si le
processus est à l'arrière plan)
• Voir la liste des processus du terminal (jobs) : jobs
• Mettre un job en arrière plan : bg %n ou %n&
• Mettre un job en avant plan : fg %n ou %n
• Lancer un job en arrière plan : commande &
• Exemple: (sleep 60; echo ‘message’) &
SHELL: JOB CONTROL
SHELL(COMPLÉTION)

Permet de compléter une saisie utilisateur dans


le shell :
• Affecté à la touche « tab »
• La complétion affiche la plus grande
correspondance unique
• S'applique aux commandes et à leurs
arguments (selon configuration)
• « tab-tab » affiche toutes les correspondances
possibles
EDITEURS

« An infinite number of monkeys typing into GNU


emacs would never make a good program. »

Linus Torvalds
EDITEURS (AUTRES)
la différence entre les éditeur est par rapport aux thèmes, rapidité, le
nombre de fonctionnalité, sont-ils destinés à la programmation comme
« Geany » ou au texte,…

• CLI (command line interface) : aee, ed, e3, joe, jed, nano, pico,....
• XWindow : xed, xwpe, axe,...
• Gnome (GNU Network Object Model Environment) : gedit, gnotepad+,
scite,
• scribes...
• KDE : kate, kedit, ...
COMMANDES DE BASE (VIM)
Vim : il s'agit d'une version améliorée de l'un des plus anciens
éditeurs en console : « Vi », il permet l’édition du texte.
COMMANDES DE BASE (VIM)
Installer vim : sudo apt install vim
Pour consulter le tutoriel vim : vimtutor fr

➢ Exemple :
Sortir de vim sans enregistrer: Echap puis taper: « :q! »
Saisir du texte: taper: « i »
Enregistrer les insersion: taper « :x »
Effacer la saisie : Echap puis taper « d » ou cliquer sur « delete »
Enregistrer puis quitter : taper « :wq! »
COMMANDES DE BASE (VIM)
COMMANDES DE BASE (EGREP)
Egrep : permet la recherche dans des fichiers
• D'un caractère ou d'une chaîne de caractères
• Simplement d'un mot
• D'une chaîne formalisée par une expression régulière

egrep options patron fichier

• liste les fichiers/répertoires contenant une chaine


correspondant à patron.
Options

-v : inverse le comportement de egrep (n'affiche que les lignes qui ne


correspondent pas)
-i : insensible à la casse
-n : retourne le numéro de la ligne
-R : récursif
➢ Exemple : egrep –R “upf” Bureau
-w : mot exacte
-c : retourne le nombre de fois
COMMANDES DE BASE (EGREP)
patrons d'expression régulière :
. n'importe quel caractère

* le caractère précédent 0 ou plusieurs fois

+ le caractère précédent 1 fois au moins

? le caractère précédent 0 ou 1 fois

() groupage d’expressions

{n} le caractère précédent exactement n fois

{m,n} le caractère précédent de m à n fois

{n,} au moins le caractère précédent n fois successive ou plus

[a-z] une lettre en minuscule

[a-zA-Z] une lettre

[0-9] un chiffre

[ ] caractère ou un autre

^/$ le début/la fin de ligne

| séparateur pour spécifier de multiples expression (OU logique)

\ chercher un caractère utilisé dans le regex


COMMANDES DE BASE (EGREP)
➢ Syntaxe :
egrep option patron nomfichier

➢ Exemple 1 :
egrep “n” test.txt
egrep “^n” test.txt

➢ Exemple 2 :
Ls | egrep “e$”

➢ Exemple 3 :
egrep -i "effacez moi" fichier && rm -f fichier1
egrep -i "gardez moi" ~/fichier.txt || rm -f fichier2

N.B
^ : exprime aussi la négation
➢ Exemple 4 : egrep “^[^n]” test.txt
COMMANDES DE BASE (EGREP)
• Matcher une ligne commençant par « foo » :
egrep "^foo*"
• Matcher une ligne commençant par « foo » ou contenant « bar » :
egrep "^foo|bar"
• Matcher une ligne commençant par « foo » ou commençant par « bar » :
egrep "^(foo|bar)"
• Matcher une ligne commençant par « foo » et contenant « bar » :
egrep "^foo.*bar"
• Matcher une ligne commençant par « foo » et se terminant par « bar » :
egrep "^foo.*bar$"
• Matcher une ligne contenant le caractère '*' :
egrep "\*"
• Matcher une ligne contenant le caractère '*' ou le caractère '?' :
egrep " \*|\?"
COMMANDES DE BASE (EGREP)
Exemples d'expression régulière :
:Les expressions "space" et "tab" représentent les touches [espace] et [tabulation].
La tabulation est représentée par les caractères ‘\t’ ou <Ctrl-V><tab>.
Regex Signification
Aujourd'hui il y a du soleil, mais demain il pleut !
soleil soleil toujours.
Passer ses vacances au soleil.

^soleil soleil toujours.

soleil$ Passer ses vacances au soleil.

Chaine composée de 3 caractères.


^[A-Z][5-9].$ Le premier est une majuscule, le second est un chiffre entre 5 et 9 et le dernier un caractère
quelconque. Exemple: B6z

^$ Chaine vide (aucun caractère entre ^ et $)


^[spacetab]*$ Chaine contenant entre 0 et n caractères espace ou tabulation
Chaine contenant le chiffre 7, suivi d'un espace, suivi de n'importe quel chiffre sauf 8, suivi de la
lettre A 0 à n fois. Exemple:x7 6
7space[0-79]A*
abc79Axy
7 1AAAAAAAAAAAAAAAAbfgddghjgdhj
Chaine dont l'avant dernier caractère est un chiffre et le dernier n'est ni une lettre majuscule ni
un caractère souligné. Exemple :AZER1a
[0-9][^A-Z_]$
3*
440008b
Chaine contenant 2 chiffres suivi du caractère . (point) suivi d'un chiffre.
[0-9][0-9]\.[0-9]
Exemple :4576.45
Chaine contenant deux caractère xy au moins deux fois. Exemple : bxyaz
[xy]{2,}
xxzyyj100xy

^(c|k)h Chaine commence par ch ou kh, Exemple :khalid, chaimae


TP2 : EXERCICE 1
1. Créer un répertoire essai-egrep dans votre home directory.
2. Dans ce répertoire créer les fichiers suivants:

tomate poire pomme cerise Fraise fraise courgette

POMME3 afraise POMmE fraise4

3. Afficher les fichiers (sortie de la commande ls redirigée vers


egrep) avec les critères sur leur nom suivant:
Critère 1 Le nom doit être Fraise ou fraise
Critère 2 se est en fin de nom
Critère 3 ai est présent dans le nom
Critère 4 Nom contenant un chiffre numérique
Critère 5 Nom contenant la chaîne mm ou MM
TP2 : SOLUTION D’EXERCICE 1
1. Mkdir essai-egrep; cd ~/essai-egrep

2. Touch tomate poire pomme cerise Fraise fraise courgette


POMME3 afraise

3.

ls | egrep -w "[Ff]raise" ou bien egrep "^[Ff]raise$"


ls | egrep "se$"
ls | egrep "ai"
ls | egrep "[0-9]"
ls | egrep "MM|mm"
TP2 : EXERCICE 2
1. Copiez le fichier /etc/passwd dans votre home directory.
2. Afficher la ligne commençant par votre nom de login.
3. Afficher le même résultat demander par la question 2 à
l’aide de la commande cat.

➢ Solution :

1 cd cp /etc/passwd ~
2 egrep "^nomlogin" passwd
3 cat passwd | egrep "^nomlogin"
TP2 : EXERCICE 3
1. Rediriger le contenu du fichier « passwd » dans un
nouveau fichier « logins » dans home directory.
2. Ajouter le nom « ahmed », « saad » et « sara2021 » à l’aide
de la commande echo dans le fichier « logins », chaque
nom dans une ligne.
3. Dans le fichier « logins » ,Afficher les lignes des noms de
login ne contenant pas de chiffre.
4. Afficher les lignes du fichier « logins » commençant par
des noms de login de 3 ou 4 caractères.

➢ Solution :

1 cat passwd > logins


2 echo -e "ahmed\nsaad\nsara2021" >> logins
3 egrep -v "[0-9]" logins
4 egrep "^.{3,4}:" logins
➢ Copier le fichier fruits sur vos bureaux puis Afficher les lignes d’un fichier à l’aide egrep
:
1. contenant l’expression berries.

TP2 : EXERCICE 4
2. contenant l’expression appLES en ignorant la casse.
3. ne contenant pas l’expression apple.
4. contenant le mot apples.
5. dont le fruit commence par la lettre s.
6. dont le fruit commence par une voyelle minuscule.
7. dont le fruit commence par la lettre p ou une lettre comprise entre a et g.
8. dont le fruit ne commence pas par une voyelle.
9. dont le fruit ne commence pas par une lettre comprise entre a et m.
10.dont le nom comporte au moins 6 lettres.
11.dont le nom comporte exactement 5 lettres, ni plus ni moins !
12.dont le fruit commence par un p et comporte un maximum de 7 lettres.
13.dont le prix se termine par 79.
14.dont le prix ne se termine pas par 9.
15.dont le prix se termine par 9 mais pas par 39, 69, 79, ni 89.
16.dont le prix ne se termine pas par 09, ni par 39, ni par 79.
17.dont le prix contient un point. On considère que le seul point présent dans chaque ligne marque la décimale du prix.
18.dont le prix est inférieur à 1 euro. Il n’y a pas besoin de comparaisons numériques pour cela. . .
19.dont le prix est inférieur à 1 euro et dont le nom commence par une lettre comprise entre a et g.
20.dont le prix est supérieur ou égal à 1 euro mais inférieur strictement à 1.50 euros.
21.dont la première lettre du fruit est comprise entre a et e, et dont la deuxième lettre est a ou e.
22.dont la première lettre du fruit est comprise entre p et t, ou dont la deuxième lettre est a ou e.
TP2 : SOLUTION D’EXERCICE 4
1. egrep "berries" fruits.txt
2. egrep -i "appLES" fruits.txt
3. egrep -v "apple" fruits.txt
4. egrep -w "apples" fruits.txt
5. egrep "^s" fruits.txt
6. egrep "^[aeyuio]" fruits.txt
7. egrep "^[pa-g]" fruits.txt ou bien egrep "^(p|[a-g])" fruits.txt
8. egrep -vi "^[aeyuio]" fruits.txt ou bien egrep "^[^aeyuioAEYUIO]" fruits.txt
9. egrep -v "^[a-m]" fruits.txt ou bien egrep "^[^a-m]" fruits.txt
10. egrep "^[a-zA-Z]{6,}$" fruits.txt
11. egrep -w "^[a-zA-Z]{5}$" fruits.txt
12. egrep "^p[a-zA-Z]{0,6}$ " fruits.txt
13. egrep "79$" fruits.txt
14. egrep -vi " [9a-z]$" fruits.txt ou egrep "[^9a-zA-Z]$" fruits.txt ou egrep "[0-8]$" fruits.txt
15. egrep "[^36-8]9$" fruits.txt
16. egrep -v "(09|39|79|[A-Za-z])$" fruits.txt
17. egrep "\." fruits.txt
18. egrep " 0\." fruits.txt ou bien egrep " 0\.[0-9]" fruits.txt
19. egrep "^[a-g].* 0\." fruits.txt ou bien egrep "^[a-g].* 0\.[0-9]" fruits.txt
20. egrep "1\.[0-4]" fruits.txt
21. egrep "^[a-e][ae]" fruits.txt
22. egrep "^[p-t]|^.[ae]" fruits.txt
COMMANDES DE BASE
(CAT, LESS, TEE ET WC)
cat fichier1 fichier2 ...
affiche le contenu de fichier1 fichier2 ... sur la sortie standard

➢ Exemple : cat /dev/urandom


less fichier1 fichier2 ...
comme cat, affiche le contenu de fichier1 fichier2 ... sur la sortie
standard mais effectue un arrêt à chaque page

➢ Exemple : less /etc/password


tee fichier
duplique l'entrée standard vers la sortie standard et dans un fichier
➢ Exemple : vmstat 1 | tee fichier

wc option fichier
compte le nombre de lignes (-l), bytes (-c), mots (-w) .... dans fichier

➢ Exemple : wc -l /etc/passwd
COMMANDES DE BASE (CUT)
cut :permet d'afficher des zones spécifiques d'un fichier
➢ Syntaxe : cut option fichier1 fichier2 ...
La commande cut attend en paramètre un ou plusieurs fichiers;
si plusieurs fichiers sont fournis alors ces derniers seront concaténés.

options
-c : Couper par caractères
-f : Couper par champs
-d : permet d'exprimer le caractère séparateur de champ.
Le caractère séparateur par défaut est la tabulation.

➢ Exemple :
cut -c 3 Bureau/testvim.txt
cut -d: -f1,6,7 /etc/passwd
COMMANDES DE BASE (TR)
Tr :permet de convertir une chaîne de caractères, supprime et serre
les caractères de l'entrée standard et écrit le résultat dans la sortie
standard..
➢ Syntaxe : tr option caractère caractère
options
-c : Tous les caractères qui ne sont pas spécifiés dans la première
chaîne sont convertis selon les caractères de la seconde.
-d : Efface le caractère spécifié.
-s : si le caractère spécifié se répéte plusieurs fois de suite, il est réduit
à une seule unité.
➢ Exemple :
tr "[a-z]" "[A-Z]" < Bureau/fruits2.txt
echo football | tr -c o t
tr -d "0" < /etc/passwd
tr -s "0" < /etc/passwd
COMMANDES DE BASE (TAIL & HEAD)
head [nX] fichier1 fichier2 ...
affiche les X premiers lignes de fichier1 fichier2 ... sur la sortie standard si
tail est appellé sans arguments, la source est l'entrée standard

➢ Exemple : head -n1 /etc/passwd

tail [nX] [f] fichier1 fichier2 ...


affiche les X dernières lignes de fichier1 fichier2 ... sur la sortie
standard si tail est appellé sans arguments, la source est l'entrée
standard et le nombre de lignes est 10.

➢ Exemple : tail -n5 /var/log/syslog


tail /var/log/syslog

Une combinaison des deux permet d'afficher la nième ligne d'un fichier :
head -n10 /etc/passwd | tail -n1 : affiche la 10ème ligne de /etc/passwd
head -n20 /etc/group | tail -n3 : affiche les lignes 18 à 20 lignes de /etc/group
COMMANDES DE BASE
(COMPRESSION)
GZIP
Compression: gzip fichier
Décompression: gunzip fichier.gz
Option Signification
-1...-9 Qualité et la vitesse de compression; -6 par défaut.
-l Permet d'obtenir des informations sur le fichier compressé.
-c Permet d'écrire les résultats sur la sortie standard.
-k Permet de compresser le fichier et de conserver le fichier original
-d Permet de décompresser le fichier

➢ Exemple : gzip -c test2.txt

➢ Exemple 1 : gzip -l passwd.txt

➢ Exemple 2 : gunzip test1.txt.gz


COMMANDES DE BASE
(COMPRESSION)
BZIP2
Compression: bzip2 fichier
Décompression: bunzip2 fichier.bz2

➢ Exemple :
bzip2 test2.txt

bunzip2 test2.txt.bz2
COMMANDES DE BASE (ARCHIVE)
tar
Archivage: tar [options] nom d’archive.tar dossier
ou tar [options] fichier1 fichier2 …
Option Signification
-c signifie créer une archive tar
-v signifie afficher le détail des opérations
-f signifie assembler l'archive dans un fichier
-r Ajouter à un archive existant
-t Afficher le contenu sans extraction
-x Extraire de l’archive
-z Compression gzip
-j Compression bzip2

➢ Exemple : tar cfvz archive.tar.gz list.txt passwd.txt


tar frv ar.tar.gz archive.tar.gz dossier
tar tf ar.tar.gz
tar xfvz archive.tar.gz
tar cfvj dossierarchive.tar.bz2 dossier1 list.txt dossier2
rm -R dossierarchive.tar.bz2
tar cfv dossierarchive.tar dossier4
COMMANDES DE BASE
(VERSIONS 'Z' & 'BZ')
zcat fichier1 fichier2 ...
bzcat fichier1 fichier2 ...
comme cat, mais sur des fichiers gzippés/bzippés, si zcat/bzcat est
appellé sans arguments, la source est l'entrée standard
➢ Exemple : zcat myfile.gz
bzcat myfile.bz2
zless fichier1 fichier2 ...
bzless fichier1 fichier2 ...
comme less, mais sur des fichiers gzippés/bzippés
si less est appellé sans arguments, la source est l'entrée standard
➢ Exemple : bzless myfile.bz2

zgrep options patron fichier


rechercher des fichiers éventuellement compressés contenant une
chaine correspondant à patron
➢ Exemple : zgrep "cache" fichier.txt.gz
COMMANDES DE BASE (SORT)
La commande sort permet de trier les lignes d'un fichier.

➢ Exemple :
sort fruits

➢ Les options de sort sont les suivantes :


-r inverse l'ordre de tri
-R affiche le résultat alétoirement
-o ecrire le résultat dans un fichier
-u supprime les lignes doublons
-n trie sur des chiffres
-k champ [.car] [options] , champ [.car] [options] Spécifier le ou les
champs à prendre en compte en tant que critère de tri.

➢ Exemples :
sort Bureau/fruits.txt -o testsort
sort -k3.1,3.3 /etc/services
TP3 : EXERCICE 1
1. Afficher le contenu du fichier /etc/hdparm.conf avec un arrêt
à chaque page.
2. Afficher le nombre de lignes, de bytes et de mots du fichier
/etc/protocols dans le stdout puis sauvegarder le résultat dans
un autre fichier « résultat.txt » (utiliser une seule commande).
3. Afficher les lignes du fichier /etc/protocols .
4. Afficher les lignes de 5 à 13 contenus dans le fichier
/etc/protocols .
5. Afficher les informations suivantes (provenant de /etc/passwd)
: nom de connexion de l'utilisateur, nom complet (champ libre)
et shell attribué à l'utilisateur.
➢ Comme suivant :
TP3 : SOLUTION D’EXERCICE 1
1. less /etc/hdparm.conf

2. touch résultat.txt; wc -lcw /etc/protocols | tee résultat.txt

3. cat /etc/protocols

4. head -n13 /etc/protocols | tail -n9

5. echo -e " USER\tWHOIS\tSHELL "; cut -d : -f 1,5,7 /etc/passwd |head -4 | tr : '\t'


TP3 : EXERCICE 2
1. Capturer l’écran, puis renommer l’image par « capture.png ».
2. Déplacer l’image « capture.png » vers le répertoire personnel.
3. Créer une copie de l’image sous le nom « capture2.png »
4. Lister le détail du contenu de répertoire personnel et vérifier la taille
des deux images précédentes.
5. Compresser l’image « capture.png » en format bzip2.
6. Comparer l’image compressé avec sa copie non compressée.
7. Décompresser l’image.
8. Créer un fichier «àcompresser.txt» contenant le message « ce fichier
sera compresser en format gzip ».
9. compresser le fichier «àcompresser.txt» en format gzip.
10. Afficher les informations du fichier compressé
11. Afficher le contenu du fichier compressé (sous fichier).
12. Décompresser ce fichier.
TP3 : SOLUTION D’EXERCICE 2
2. mv Images/capture.png ~
3. cp capture.png capture2.png
4. ls -l
5. bzip2 capture.png
6. ls -l
7. bunzip2 capture.png.bz2
8. echo ‘ce fichier sera compressé en format gzip’ >
àcompresser.txt
9. gzip àcompresser.txt
10. gzip -l àcompresser.txt.gz
11. gedit àcompresser.txt.gz ou zcat àcompresser.txt.gz
12. gunzip àcompresser.txt.gz ou gzip -d àcompresser.txt.bz
TP3 : EXERCICE 3
1. Créer 3 fichiers : Linux1.txt, Linux2.txt et Linux3.txt
2. Mettre les fichiers dans un dossier « Linux »
3. archiver ce dossier sous « archive.tar ».
4. Supprimer le dossier Linux avec son contenu.
5. Vérifier l’existence du dossier Linux et les fichiers crées.
6. Extraire les fichiers de l’archive et vérifier l’existence du dossier Linux , puis
supprimer l’archive.
7. Extraire les fichiers du dossier Linux, ensuite, refaire la question 2 autrement
(archiver que les fichiers sous archive2.tar).
8. Afficher le contenu de l’archive sans extraction.
9. Créer un nouveau fichier : Linux4.txt et le mettre dans l’archive2.
10. Supprimer les fichiers : Linux1.txt, Linux2.txt, Linux3.txt, Linux4.txt
11. Afficher le contenu de l’archive puis le compresser avec gzip.
12. Extraire les fichiers de l’archive
13. Créer une archive3 compressé avec bzip2 contenant les quatre fichiers.
14. Extraire les fichiers de l’archive compressé bzip2.
TP3 : SOLUTION D’EXERCICE 3
1. touch Linux1.txt Linux2.txt Linux3.txt ou bien touch Linux{1..3}.txt
2. mkdir Linux; mv Linux*.txt Linux ou bien mv Linux{1..3}.txt Linux
3. tar -cvf archive.tar Linux
4. rm -R Linux
5. Ls -R Linux
6. tar -xvf archive.tar; Ls -R Linux; rm -R archive.tar
7. mv Linux/Linux*.txt ~ ; tar -cvf archive2.tar Linux1.txt Linux2.txt
Linux3.txt
8. tar -tf archive2.tar
9. touch Linux4.txt;tar -rvf archive2.tar Linux4.txt
10. rm Linux*.txt
11. tar -tf archive2.tar; gzip archive2.tar
12. tar -xvf archive2.tar.gz
13. tar -cjvf archive3.tar.bz2 Linux*.txt
14. tar -jxvf archive3.tar.bz2
TP3 : EXERCICE 4

1. Afficher les 15 premières lignes de /etc/profile


2. Afficher les 15 dernières lignes de /etc/profile
3. Afficher toutes les lignes à partir de la quinzième
4. Affichez les lignes 15 à 20
5. Récupérer les lignes 5 à 9 de /etc/fstab (par deux méthodes)
6. Comment afficher la cinquième ligne d'un fichier ?
TP3 : SOLUTION D’EXERCICE 4
1. head -n15 /etc/profile
2. tail -n15 /etc/profile
3. cat /etc/profile | tail -n13 ou bien tail +15 /etc/profile ou tail -n13 /etc/profile
4. head -n20 /etc/profile | tail -n6
5. head -n9 /etc/fstab | tail -n5 ou bien tail -n8 /etc/fstab | head -n5
6. head -n15 /etc/fstab | tail -n1
TP3 : EXERCICE 5
1. Lancer la commande Ping dans le terminal sans spécifier le nombre de
paquets.
a. Suspendre la commande ping lancée.
b. Afficher la liste des jobs.
c. Relancer la commande au premier plan.
d. Suspendre la commande de nouveau.
e. Relancer la commande en arrière-plan.
f. Passer la commande au premier plan.
g. Tuer la commande.

2. Lancer au premier plan une commande qui affiche un message sur la


sortie standard après 2 minutes.
a. Cette commande est-elle convenable d’être lancée au premier plan ?
b. Lancer la même commande en arrière-plan.
c. Voir les jobs avant la fin de l’exécution de la commande.
d. Tuer ce processus.
e. Voir les jobs après la fin de l’exécution de la commande.
TP3 : SOLUTION D’EXERCICE 5
1. ping 192.168.1.1
a. ctrl+z
b. Jobs
c. fg 1 ou %1
d. Ctrl+z
e. bg 1 ou %1&
f. fg 1 ou %1
g. Ctrl+c

2. sleep 120; echo salut après deux minutes


a. non
b. (sleep 120; echo salut après deux minutes) &
c. Jobs
d. Kill %1
e. jobs
TP3 : EXERCICE 6
1. Etant donné le fichier Nom.txt dont le contenu est :

a. Trier le fichier par ordre croissant la colonne « Résultat ». Les deux lignes
titres doivent figurer dans la sortie triée.
b. Trier le fichier par ordre décroissant la colonne « Résultat ». Les deux
lignes titres doivent figurer dans la sortie triée.
c. Trier par nombre le fichier par ordre croissant la colonne « Résultat ». Les
deux lignes titres doivent figurer dans la sortie triée.
d. Trier le fichier par ordre croissant la colonne « Résultat », puis la colonne
«Nom». Les deux lignes titres doivent figurer dans la sortie triée.

2. Trier le fichier sur le premier caractère de sa deuxième colonne.


3. Trier le fichier sur la portion entre le 3ème et 8ème caractère de sa
première colonne.
TP3 : SOLUTION D’EXERCICE 6
a. head -2 Bureau/Nom.txt; tail -7 Nom.txt | sort -k2
1.
b. head -2 Bureau/Nom.txt; tail -7 Nom.txt | sort -k2 -r
c. head -2 Bureau/Nom.txt; tail -7 Nom.txt | sort -k2 -n
d. head -2 Bureau/Nom.txt; tail -7 Nom.txt | sort -k2; head -2 Nom.txt; tail -7
Nom.txt | sort -k1

2. sort -k2.1 Nom.txt


3. sort -k1.3,1.8 Nom.txt
COMMANDES DE BASE(UNIQ)
uniq : permet de supprimer les lignes consécutives doublon lues

➢ Syntaxe :
uniq option file

Option :
-c: affiche le nombre d'occurences de chaque ligne
-d: Affiche que les doublons

➢ Exemple :

echo -e "aaa\naaa\naaa\nbbb\nbbb"|uniq
COMMANDES DE BASE(SED)
sed : Un éditeur de flux est utilisé pour effectuer des transformations de
texte de base sur un flux d'entrée (un fichier ou une entrée d'un pipeline).

➢ Syntaxe : sed [OPTION] {action} file

➢ Options:
-i: remplace dans le fichier
-r :permet d'utiliser des expressions régulières (presque) compatibles avec egrep
-n :écrit seulement les lignes spécifiées (par l'option /p) sur la sortie standard
-f :fournit un fichier de commandes.

➢ Fonctions:
• s: remlace texte par un autre sur STDOUT
• d:supprime une ligne sur STDN
• p:imprime la ligne (utile avec l'option -n)
• G: ajouter un saut de ligne après chaque ligne dans le fichier
• g:global, c'est à dire toutes les occurences de la chaine (par defaut seule la première
occurence est remplacée de chaque ligne)
• !: négation (par exemple ne remplacer pas la première occurence)
• = : renvoie le numéro de la ligne
• a: ajoute une ligne après l’occurrence indiquée.
• i: ajoute une ligne avant l’occurrence indiquée
• n: indique l’ordre d’occurrence dans la ligne
COMMANDES DE BASE(SED)
➢ Exemples :
sed 's/apple/banana/' fruits.txt
sed G fruits.txt
sed = fruits.txt

➢ Comparer : ➢ avec :
sed 'p' fruits.txt sed -n 'p' fruits.txt
➢ Comparer : ➢ avec :
sed '/pp/d' fruits.txt sed '/pp/!d' fruits.txt
➢ Comparer : ➢ avec :
sed 's/a/b/' fruits.txt sed 's/a/b/g' fruits.txt
COMMANDES DE BASE(SED)
RECHERCHER DES FICHIERS: FIND
Find : liste les fichiers/répertoires situés dans argument selon des critères définis
dans options.
➢ effectue une recherche sur le filesystem en temps réèl : long
➢ Syntaxe :
Find chemin [OPTION] file
➢ Options:
-name : Recherche par nom de fichier.
-iname : Recherche par nom de fichier sans tenir compte de la casse.
-type : Recherche par type de fichier (fichier,répertoire,lien).
-user : Recherche par propriétaire.
-group : Recherche par appartenance à un groupe.
-size : Recherche par taille de fichier.
-mtime qui permet de donner une indication en jours.
-exec : execute la commande située juste après chaque occurrence trouvée.
➢ patrons de globs :
. n'importe quel caractère
* le caractère précédent 0 ou plusieurs fois
+ le caractère précédent 1 fois au moins
? le caractère précédent 0 ou 1 fois
➢ Exemple :
[a-z] une lettre en minuscule
[a-zA-Z] une lettre
find . –name noms.txt
[0-9] un chiffre find / –name "*co*" –type d
find . -name "Linux2" -exec rm {} \; 2>/dev/null
RECHERCHER DES FICHIERS: LOCATE
• find effectue une recherche sur le filesystem en temps réèl : long
• Pour la recherche par nom de fichier, locate permet de faire la
même chose
• locate permet de rechercher des expressions régulières (find ne
peut rechercher que des globs)
• locate utilise une base de données prégénérée Par updatedb
➢ Options:
-i : insensible à la case.
-c : afficher seulement le nombre de résultat.
-n <N°> : N'affiche que les n premiers résultats .
-e : forcer Locate à imprimer uniquement les entrées qui correspondent
aux fichiers existants

➢ Pour installer locate : sudo apt install mlocate


➢ Mettre à jour la BD : sudo updatedb
➢ Exemple : locate cours
TP4 : EXERCICE 1
1. Créer le fichier noms.txt avec le contenu suivant : (utiliser la
commande vim pour insérer le texte):

2. Afficher sur le STDOUT le contenu du fichier noms.txt.


3. Personnaliser l’affichage en évitant les lignes doublons
4. Afficher le nombre d'occurrences de chaque ligne
5. Afficher que les lignes doublons
6. Compter que les lignes doublons
TP4 : SOLUTION D’EXERCICE 1
1. Touch noms.txt; vim noms.txt
(taper « i » puis saisir le texte, taper « Echap » ensuite « :x »)

1. cat noms.txt
2. uniq nom.txt
3. uniq -c noms.txt
4. uniq -d noms.txt
5. uniq -c -d noms.txt
TP4 : EXERCICE 2
1. Remplacer la première lettre « r » par « R » de OUTPUT de la commande ls -l.
2. Remplacer la deuxième lettre « r » par « R » de OUTPUT de la commande ls -l.
3. Remplacer toutes les lettres « r » par « R » de OUTPUT de la commande ls -l.
4. ajouter une nouvelle ligne « New Line » avant chaque « u » de OUTPUT de la commande ls -l.
5. ajouter une nouvelle ligne « New Line » après chaque « u » de OUTPUT de la commande ls -l.
6. supposant que le contenu du fichier cmd.txt est comme suivant :

➢ à l’aide de la commande ls -l afficher dans le STDOUT le résultat de l’exécution des commande


du fichier cmd.txt
7. afficher dans STDOUT les lignes du fichier noms.txt qui contiennent les lettres « mm » .
8. afficher dans STDOUT les lignes du fichier noms.txt qui commencent par « a ».
9. remplacer dans le fichier le nom « mohammed » par « ahmed ».
10. ajouter une ligne vide après chaque ligne dans le fichier.
11. supprimer les lignes vides du fichier noms.txt
12. afficher dans STDOUT juste les lignes qui ne se terminent pas par « i ».
13. afficher dans STDOUT deux tabulations au lieu d’espace qui sépare le prénom et le nom.
14. remplacer « amal » par « esapce » dans STDOUT.
15. supprimer « amal » dans STDOUT.
16. afficher dans STDOUT que le nombre de lignes du fichier noms.txt
17. compter le nombre des lignes du fichier noms.txt à l’aide de la commande sed.
18. supprimer dans STDOUT la 3ème et la 4ème ligne du fichier noms.txt
19. suprimer dans STDOUT la 5ème ligne à 9ème ligne du fichier noms.txt
20. vider le fichier nom.txt
TP4 : SOLUTION D’EXERCICE 2
1. ls -l |sed 's/r/R/'
2. ls -l |sed 's/r/R/2'
3. ls -l |sed 's/r/R/g'
4. ls -l |sed '/u/iNew ligne'
5. ls -l |sed '/u/aNew ligne'
6. echo -e "/total/d\ns/mars/MARS/"; ls -l |sed -f cmd.txt
7. sed -n '/mm/p' noms.txt
8. sed -r -n '/^a/p' noms.txt
9. sed -i 's/ahmed/mohammed/' noms.txt
10. sed -i G noms.txt
11. sed -ri '/^$/d' noms.txt ou bien sed -ri ‘/[[:alnum:]]/!d' noms.txt
12. sed -r -n '/i$/!p' noms.txt
13. sed ‘s/ /\t\t/ ‘ noms.txt
14. sed 's/amal/ /' noms.txt
15. sed '/amal/d' noms.txt
16. sed -n = noms.txt
17. sed -n $= noms.txt
18. sed '3d;4d' noms.txt
19. sed '5,9d' noms.txt
TP4 : EXERCICE 3
1. Installer la commande « locate »
2. Garder le fichier « fruits.txt » dans le home directory, puis créer une copie sur
le « Bureau » .
3. Créer deux fichiers « myfile1 » « MYFILE2 » dans le home directory.
4. Mettre à jour la base de bonnées.
5. Chercher l’emplacement du fichier dont l’expression «myfile ».
6. Chercher l’emplacement du fichier dont l’expression «myfile » en ignorant la
casse.
7. Supprimer le fichier « MYFILE2 » puis chercher son emplacement dont
l’expression «myfile » en ignorant la casse, sans mettre à jour la BD.
8. Afficher le résultat correct des emplacements des fichier dont l’expression
«myfile » en ignorant la casse, sans mettre à jour la BD.
9. Chercher les emplacements du fichier « fruits.txt » à l’aide de la commande
locate.
10. Limiter cet affichage à deux résultat.
11. Chercher combien de fois existe le fichier « fruits.txt ».
TP4 : SOLUTION D’EXERCICE 3
1. sudo apt install mlocate
2. cp fruits.txt Bureau/fruits.txt
3. touch myfile1.txt MYFILE2.TXT
4. sudo updatedb
5. locate "myfile"
6. locate -i "myfile"
7. rm MYFILE;locate -i "myfile"
8. locate -i -e "myfile"
9. locate "fruits.txt"
10. locate -n2 "fruits.txt"
11. locate -c "fruits.txt"
TP4 : EXERCICE 4
➢ Remarque : La redirection des erreurs vers le fichier poubelle /dev/null

1. Cherchez dans toute l'arborescence les fichiers dont le nom se


termine par .c
2. Commençant par X ou x.
3. Chercher les fichiers qui commence par «a» ou «A» et se termine
par un chiffre entre 3 et 6
4. Dont les noms ne contiennent pas de chiffre.
5. Chercher dans /usr les fichiers dont la taille dépasse 1Mo (2000
blocs de 500Ko).
6. Chercher tous les répertoires existants dans le home directory.
7. Chercher les fichiers qui ont été modifié il y a deux mois.
8. Chercher puis supprimer le fichier « myfile1 » avec l’annulation
d’affichage d’erreurs.
9. Chercher un fichier modifié il y a moins de 12 jours et dont la taille
soit supérieure à 30 K.
TP4 : SOLUTION D’EXERCICE 4
1. find / -name "*.c" -type f
2. find / -name "[Xx]*" ou find / -iname "x*"
3. find . -name '[aA]*[3-6]'
4. find . -name "[!0-9]"
5. find /usr -size +500k
6. find . -type d
7. find . -mtime 60
8. find . -name "myfile1" -exec rm {} \; 2>/dev/null
9. find . -type f -size +30k -mtime -12
UTILISATEURS
UTILISATEURS
• Définis dans le fichier /etc/passwd
• root (UID 0) :
• propriétaire de presque tous les fichiers système
• possède tous les droits

• utilisateurs « système » (UID < 1000) :


• daemon, bin, apache,… : Servent à faciliter la gestion des droits
d’accès de certaines application et démons.

• « utilisateurs ordinaires » vrais utilisateurs (UID >= 1000) : Patrick, marcel

• Mots de passes définis dans le fichier /etc/shadow

• Critères des comptes et des groupes définis dans le fichier /etc/login.defs


UTILISATEURS (/ETC/PASSWD)
• Pour chaque utilisateur, le fichier /etc/passwd contient sept
champs :
▪ login
▪ mot de passe ('x' pour les shadow passwords)
▪ UID (User ID)
▪ GID (Group ID, groupe principal)
▪ champ de commentaire (nom complet, adresse, téléphones)
▪ répertoire personnel (« home dir »)
▪ le shell exécuté au login
UTILISATEURS (/ETC/SHADOW)
• Seul root peut lire/modifier ce fichier
• Pour chaque utilisateur, le fichier /etc/shadow contient le mot de passe
de connexion et ses paramètres de validité :
▪ login
▪ mot de passe chiffré
▪ 6 champs décrivant la validité du compte
▪ 1 champ réservé
• Il est impossible de se logguer directement si le mot de passe est '*' ou '!‘
• ‘*’ : indique le compte ne peut pas être connecté
• ‘!’ : indique que le compte est verrouillé
• 0 : indique que l'utilisateur peut changer le mot de passe à n'importe quel
moment.
• 99999 : indique que le mot de passe est toujours valide
• 7 : indique le nombre de jours avant l'expiration.
➢ Exemple :
mblanc:$1$QJ//btH...jL:13428:0:99999:7:::

login:passwdcrypté:Age en jour:période de changement:Durée de validité:Durée de validité restante:


Durée d'invalidation:Date d'expiration: Champs réservé
UTILISATEURS
(/ETC/PASSWD & /ETC/SHADOW)
UTILISATEURS
(/ETC/PASSWD & /ETC/SHADOW)
CHANGER
(COMPTE,PASSWORD)
• Su : c’est la commande qui permet de se connecter à
un compte.
➢ Exemple : su ahmed

• Sudo : c’est la commande qui permet l’exécution d’une


commande en tant qu’administrateur (root).

➢ Exemple : sudo ls /root

• passwd : c’est la commande qui permet de créer ou


modifier un mot de passe d’un compte.

➢ Exemple : passwd ahmed


UTILISATEURS (GROUPES:
/ETC/GROUP)
• Chaque ligne contient 4 champs :
▪ le nom du groupe
▪ le mot de passe du groupe
▪ l'ID du groupe (GID)
▪ la liste des membres du groupe, séparés par
des ','
• Chaque utilisateur possède en général un
groupe à son nom (Unique Private Group),
c'est son groupe primaire
• Chaque utilisateur peut aussi appartenir à n
groupes secondaires
• Les groupes systèmes permettent souvent aux
utilisateurs de manipuler des devices (fax,
audio, ...)
UTILISATEURS (GROUPES:
/ETC/GROUP)
UTILISATEURS (CRÉATION &
GESTION)
• Outils « posix » :
{user,group}{add,mod,del}
• Outils « distro-dependant » :
{add,del}{user,group}
• Edition directe des fichiers
▪ déconseillée pour les créations/suppressions
▪ acceptable pour les modifications
UTILISATEURS (USERADD)
• Options :
-u: déterminer le uid de l’utilisateur.
-g: déterminer le « groupe principale » de connexion
initial de l’utilisateur. « par défaut c’est le uid donné à l’utilisateur »
-G: déterminer ou créer un ou plusieurs groupes secondaires
-m : créer le répertoire personnel pour le compte du nouvel utilisateur
-d : déterminer le dossier personnel du l’utilisateur.
-c: déterminer le champ commentaire du fichiers de mots
de passe du nouvel utilisateur.
-r: créer un compte système.
-s: déterminer le shell de connexion de l’utilisateur.
-e: déterminer la date d’expiration du compte sous format
AAAA-MM-JJ
➢ Exemple :
Useradd -u 4500 -c « compte d’un agent comptable » -s /bin/sh ahmed
Useradd -md /home/monir monir
Useradd -u 6000 -g 1200 -G comptabilité, gestion monir
UTILISATEURS (USERMOD)
• Options :
-u: changer le uid de l’utilisateur.
-g: changer le « groupe principale »
-G: changer l’appartenance d’un utilisateur à un ou plusieurs
groupes secondaires
-c: changer le champ commentaire du fichiers de mots
de passe du nouvel utilisateur.
-d : changer le dossier personnel de l’utilisateur.
-l: changer le nom du login.
-a: ajouter l’utilisateur à un autre groupe et garder l’appartenance
d’origine
-s: changer le shell de connexion de l’utilisateur.
-e: changer la date d’expiration du compte sous format
AAAA-MM-JJ

➢ Exemple : sudo usermod -l nadir -u 1006 -G RH -c "a été changé" ahmed


sudo usermod -g comptabilité -aG marketing,gestion nadir; id nadir
UTILISATEURS (CRÉATION &
GESTION)
• Modification du groupe primaire d'un utilisateur:
usermod -g group user
• Ajout d'un groupe secondaire à un utilisateur existant
usermod -a -G group user
• Ajout d'un nouvel utilisateur à un groupe primaire
useradd -g groupe user
• Ajout d'un nouvel utilisateur à un ou plusieurs groupe
secondaire
useradd -G group1, group2 user
• Vérifier les groupes associés à un utilisateur
groups user
UTILISATEURS (USERDEL)

• userdel : permet d’effacer le compte d’un utilisateur

➢ Syntaxe :
userdel nom_user

➢ Exemple :
sudo userdel ahmed
GROUPES (GROUPADD, GROUPMOD &
GROUPDEL)
• groupadd : permet de créer un groupe et pour Vérifier la liste des
groupes : /etc/group

➢ Exemple :
sudo groupadd -g 7888 comptabilité
• groupmod : permet de modifier les informations d’un groupe.
Options :
-n: changer le nom du groupe.
-g: changer le numéro du groupe « gid »

➢ Exemple :
sudo groupmod -g 1050 comptabilité
sudo groupmod -n gestion comptabilité
1. Création de 2 groupes “G1” “G2”.

TP5 :
2. Vérifier si les deux groupes sont ajoutés dans la liste des groupes /etc/group.
3. Créer quatre utilisateurs : fahd, aicha, hamid, morad. (à l’aide de la cmd adduser)
4. Vérifier si les quatres users sont ajoutés dans la liste des users /etc/passwd.
5. Le premier et deuxième utilisateur sont membres du premier groupe.
6. Le troisième et quatrième utilisateur sont membres du second groupe.
7. Le deuxième utilisateur est aussi membre du second groupe.
8. Le quatrième utilisateur est aussi membre du premier groupe.
9. Créer un groupe sous gid « 1300 » où le nom est « secrétariat ».
10. Changer le nom du groupe « G1 » par « marketing ».
11. Vérifier la liste des groupes
12. Modifier le uid de utilisateur fahd vers « 7000 ».
13. Modifier le commentaire du compte aicha par "c'est un compte secrétariat".
14. Modifier le groupe primaire de l’utilisateur hamid par « Finance ».
15. Modifier pour le compte morad : son groupe primaire par « marketing » et son shell par « dash ».
16. Modifier le nom du compte(login) hamid par hamada
17. Vérifier si les modifications sont effectuées à partir la liste des comptes utilisateurs
18. Supprimer le group G2.
19. Désactiver le compte de la secrétaire après 3 mois d’utilisation
20. Se connecter au compte de la secrétaire pour vérifier son expiration (via la console).
21. Se connecter au compte morad (via le mode graphique), puis fermer sa session, ensuite : Supprimer
son compte et son espace personnel (via le mode console).
TP5 : EXERCICE 1 SOLUTION
1. sudo groupadd G1; sudo groupadd G2
2. cat /etc/group
3. sudo adduser fahd; sudo adduser aicha; sudo adduser hamid; sudo adduser morad
4. cat /etc/passwd
5. sudo usermod -G G1 fahd; sudo usermod -G G1 aicha
6. sudo usermod -G G2 hamid; sudo usermod -G G2 morad
7. sudo usermod -aG G2 aicha
8. sudo usermod -aG G1 morad
9. sudo groupadd -g 1300 secrétariat
10. sudo groupmod -n marketing G1
11. cat /etc/group
12. sudo usermod -u 7000 fahd
13. sudo usermod -c "c'est un compte secrétariat" aicha
14. sudo groupadd Finance && sudo usermod -g Finance hamid
15. sudo usermod -g marketing -s /bin/dash morad
16. sudo usermod -l hamada hamid
17. cat /etc/passwd
18. sudo groupdel -f G2
19. sudo usermod -e 2022-07-20 aicha
20. su aicha
21. sudo userdel morad&&sudo rm -R /home/morad
ou bien : sudo userdel morad;sudo rm -R /home/morad
ou bien : sudo deluser morad;sudo rm -R /home/morad
LES DROITS
LES DROITS (GÉNÉRALITÉS)
Chaque fichier ou répertoire possède :
• un propriétaire
• un groupe propriétaire
Chaque fichier ou répertoire possède 3 listes de droits :
• les droits pour le propriétaire
• les droits pour le groupe
• les droits pour les autres
Chaque liste donne les opérations possibles pour cet utilisateur :
• lecture (r) :
fichier : donne la possibilité de lire le contenu du fichier
répertoire : donne la possibilité de lire le contenu d'un répertoire (la liste des
fichiers qu'il contient)
• écriture (w) :
fichier : permet d'écrire dans ce fichier
répertoire : permet d'y créer/renommer/supprimer des fichiers ou des répertoires
• exécution ou accès(x) :
fichier : permet d'exécuter ce fichier
répertoire : permet d'y 'rentrer' (cd) et de voir son contenu
LES DROITS (FONCTIONNEMENT)
• Ls –l : c’est la commande qui permet l’affichage des droit d’un fichier ou d’un
repétoire et son contenu.
• option:
-d : permet d’afficher exactement les droits juste de repértoire donné.

➢ Exemple :
Ls -ld repértoire
Ls -l fichier1
LES DROITS (CHMOD)
chmod : permet de gérer les droits et peut fonctionner selon
un mode littéral ou bien le mode binaire.

➢ Deux méthode :

binaire
absolue
littéral
chmod
relative littéral
LES DROITS (CHMOD
« MODE LITTÉRAL »)
➢ Syntaxe :
chmod destinataire(s) opération droits, ...
• destinataire : u (user), g (group), o (other) ou a(all c-à-dire les 3 catégories)
• droits : r (read), w (write),x (execute ou cd)

➢ Méthode absolue : ➢ Méthode relative :


• opération : = (mettre à la valeur) • opération : + (ajouter), - (supprimer)

➢ Exemple : Absolue ➢ Exemple : Relative


chmod ug=rwx,o=rx fichier4 chmod a+rx repertoire
chmod a=rx fichier4 chmod u+rw, g-r, o+rwx fichier3
chmod u=rwx, g=rx, o=- fichier4 chmod ugo+rwx fichier1 fichier2
LES DROITS (CHMOD
« MODE BINAIRE »)
Propriétaire
➢ Méthode absolue : R W X Résultat

0 0 0 0

user@host:-$ ls –la /fichier 0 0 1 1


0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7

chmod 755 <=> chmod u=rwx,g=rx,o=rx

➢ Exemple :
chmod 755 Fichier1
LES DROITS (CHMOD
« EXEMPLE »)

1. Changer les droits d’accès pour qu’ils deviennent : rwx r-- ---, par les 3 façons
2. Retirer le droit de l ’écriture de user par la méthode relative.
➢ Solution : • USER : rwx : 7
• Groupe : r-- : 4
• Autres : --- : 0

• Q1 : ➢ Méthode absolue « mode binaire » :


chmod 740 test.txt

➢ Méthode absolue « mode littéral »:


chmod u=rwx,g=r,o=- test.txt
➢ Méthode relative « mode littéral »:
chmod u+x,g-w,o-r test.txt

• Q2 : ➢ Méthode relative « mode littéral »:


chmod u-w test.txt
LES DROITS (CHOWN)
chown : permet de changer le propriétaire ou le groupe propriétaire
d'un fichier
➢ Syntaxe : chown propriétaire fichier ou répertoire
• propriétaire : nouveau propriétaire du fichier ou répertoire
• fichier ... : fichiers ou répertoires dont il faut changer la propriété
➢ Exemple : chown amjad /home/cours

➢ Autre syntaxe :
chown propriétaire:groupe fichier ou répertoire
• propriétaire : nouveau propriétaire du fichier ou répertoire
• groupe : nouveau groupe propriétaire du fichier ou répertoire
• fichier ... : fichiers ou répertoires dont il faut changer la propriété

➢ Exemple :
chown amjad:tutorat /home/cours
LES DROITS (CHGRP)
chown : permet de changer le groupe propriétaire d'un
fichier.

➢ Syntaxe : chgrp groupe fichier ou répertoire

• groupe : nouveau groupe propriétaire du fichier ou répertoire


• fichier ... : fichiers ou répertoires dont il faut changer la propriété

➢ Exemple :
chgrp tutorat /home/cours

• Pour afficher le propriétaire d’un dossier ou d’un fichier :

➢ Exemple :
Ls -ld /home/cours
LES DROITS (UMASK)
• Les droits d'un fichier ou répertoire à sa création sont défini
par umask.
• A sa création, un fichier aura les permissions :
666 - (umask)
• A sa création, un répertoire aura les permissions :
777 - (umask)
LES DROITS (UMASK)
• umask : affiche la valeur de umask par défaut.
• umask -S: affiche les doits d’accès par défaut.
• umask -p: définit ou change la valeur de umask par défaut durant
l’ouverture de la session.
➢ Exemple : Changer les droits par défaut par : u=rwx, g=rx, o=r
umask : 0 2 3
LES DROITS (SUID/SGID BITS)
suid/sgid bits (s) : celui qui exécute prend temporairement
l'identité du propriétaire ou groupe propriétaire du fichier.

➢ très utile mais très dangereux.


➢ Remarque : autoriser soit par la méthode relative ou absolue octale

➢ Exemple SUID: ➢ Exemple SGID:


chmod u+s file chmod g+s file
chmod 4755 file chmod 2755 file
chmod u-s file chmod g-s file
chmod 0755 file chmod 0755 file
LES DROITS (STICKY BIT)
sticky bit (t) : seul le propriétaire du fichier ou répertoire peut
renommer ou supprimer un fichier ou un répertoire affligé du
« sticky bit »

➢ Remarque : autoriser soit par la méthode relative ou absolue octale


➢ Exemple : chmod +t file <=> chmod 1755 file
chmod -t file <=> chmod 0755 file
TP6 : EXERCICE 1
1. Créer un compte utilisateur « ali » à l’aide de l’outil « posix ».
2. Créer un répertoire « ali » dans le répertoire home.
3. Vérifier le propriétaire du répertoire « ali ».
4. Changer le propriétaire de répertoire « ali » du compte « root » par par le compte « ali ».
5. Vérifier le propriétaire du répertoire « ali ».
6. Changer le groupe propriétaire de répertoire « ali » du groupe « root » par par groupe « ali ».
7. Vérifier le propriétaire du répertoire « ali ».
8. Donner la ligne de commande qui réduit la question 4 et 6.
9. Activer le compte « ali » par une configuration de son mot de passe, puis se déconnecter et se
connecter graphiquement au compte « ali ».
10. Créer un compte utilisateur « salah » avec son répertoire home à l’aide de la cmd useradd.
11. Activer le compte « salah »
12. Se connecter au compte « salah » via l’invité de commande.
13. Créer deux répertoires « documents-ali » et « documents-salah » chacun dans son espace personnel
puis créer quelques fichiers dans chaque ces deux fichiers.
14. Donner un accès complet au répertoire « documents-ali » et à tous ses sous-répertoires pour « ali ».
15. Donner un accès en lecture au répertoire «documents-salah » et tous ses sous-répertoires pour tous
les autres utilisateurs.
TP6 : SOLUTION D’EXERCICE 1

1. Sudo useradd ali


2. Sudo mkdir /home/ali
3. Sudo ls -ld /home/ali
4. sudo chown ali /home/ali
5. Sudo ls -ld /home/ali
6. sudo chgrp ali /home/ali
7. Sudo ls -ld /home/ali
8. sudo chown ali:ali /home/ali
9. sudo passwd ali
10. sudo useradd -md /home/salah salah ou bien sudo useradd -m salah
11. sudo passwd salah
12. su salah
13. mkdir /home/ali/documents-ali /home/salah/documents-salah
14. sudo chmod –R u=rwx /home/ali/documents-ali
15. sudo chmod –R o=r /home/salah/documents-salah
TP6 : EXERCICE 2
1. Créer un répertoire essai_droit dans votre répertoire courant, par
défaut ce répertoire est à 755 (rwxr-xr-x).

2. Quelles sont les commandes (en notation symbolique et en base 8)


pour lui donner les droits suivant (on suppose qu'après chaque
commande on remet le répertoire à 755:

propriétaire groupe les autres


droit en droit en droit droit en droit en droit droit en droit en droit
lecture écriture d'accès lecture écriture d'accès lecture écriture d'accès

commande 1 oui oui oui oui non oui non non oui

commande 2 oui non oui non oui non non non oui

commande 3 non oui non non non oui oui non non

commande 4 non non oui oui non oui non non non

commande 5 oui non non oui non non oui non non
TP6 : SOLUTION D’EXERCICE 2
1. sudo mkdir essai-droit

2. su root

Absolue Relative
commande
Octal Littéral Littéral
commande 1 Chmod 751 essai-droit chmod o=x essai-droit chmod o-r essai-droit

commande 2 chmod 521 essai-droit chmod u=rx,g=w,o=x essai-droit chmod u-w,g-rx+w,o-r essai-droit

commande 3 chmod 214 essai-droit chmod u=w,g=x,o=r essai-droit chmod u-rx,g-r,o-x essai-droit

commande 4 chmod 150 essai-droit chmod u=x,o=- essai-droit chmod u-rw,o-rx essai-droit

commande 5 chmod 444 essai-droit chmod a=r essai-droit chmod u-xw,g-x,o-x essai-droit
TP6 : EXERCICE 3
1. Afficher le masque appliqué aux droits des fichiers et dossiers lors
de la création.
2. Quel masque appliquer si on veut créer les fichiers et les dossiers
en lecture seule ?
3. Tapez la commande umask, de manière à ce que les fichiers lors
de leur création aient par défaut les droits 640 (rw-r-----), et les
répertoires 750 (rwxr-x---).

➢ Solution :

1. umask
2. Umask 033
3. umask 027
TP6 : EXERCICE 4
1. Créer un compte utilisateur « adil » à l’aide de la cmd adduser.
2. Tester la possibilité de l’utilisateur de changer son mot de passe.
3. Afficher les droits du fichier /usr/bin/passwd.
4. Changer en tant que « adil » le suid du fichier /usr/bin/passwd,
quel est le résultat de cette commande?et quelle la solution?
a. vérifier le contenu du fichier /etc/sudoers.
b. vérifier les membres du groupe sudo.
c. ajouter « adil » à ce groupe.
d. rechanger en tant que « adil » le suid du fichier /usr/bin/passwd

5. Revoir la possibilité d’un utilisateur de changer son mot de passe.


6. chercher la possibilité de changer le mot de passe de cet
utilisateur.
TP6 : SOLUTION D’EXERCICE 4
1. sudo adduser adil
2. passwd adil
3. ls -ld /usr/bin/passwd
4. su adil
sudo chmod u-s /usr/bin/passwd
Résultat : adil n'apparaît pas dans le fichier sudoers. Cet événement sera signalé.
Solution : vérifier le contenu du fichier /etc/sudoers via la commande vim ou cat

vérifier les membres du groupe sudo, ajouter « adil » à ce groupe,


puis rechanger en tant que « adil » le suid du fichier /usr/bin/passwd
a) sudo cat /etc/sudoers
b) cat /etc/group
c) sudo usermod -G sudo adil
d) sudo chmod u-s /usr/bin/passwd
5. passwd adil
6. Su root
passwd adil
1.
TP6 : EXERCICE
Ajouter le compte « salah » au groupe « sudo ».
5
2. Vérifier si « salah » est membre du groupe « sudo » par l’affichage de la ligne
du même groupe qui existe dans le fichier /etc/group.
3. Se connecter avec le compte « adil » .
4. Créer un répertoire « sticky » dans votre répertoire home.
5. Vérifier les droits du répertoire « sticky ».
6. Attribuer tous les droits au nouveau répertoire.
7. Créer un fichier « file » dans le répertoire « sticky ».
8. Attribuer tous les droits au nouveau fichier.
9. Changer l’utilisateur vers « salah » et essayer de supprimer le fichier « file ».
10. Changer l’utilisateur vers « adil » et recréer le fichier « file » avec tous les
droits.
11. Changer le sticky-bit de « sticky » vers t, puis vérifier ses droits.
12. Changer l’utilisateur vers « salah » et essayer de supprimer le fichier « file ».
13. Ajouter « salut » au fichier « file », puis lire son contenu.
14. essayer également de renommer le fichier « file » par « fichier ».
15. voir si sticky-bit est appliqué sur le compte « root », en renommant et
supprimant le fichier (vérifier si le fichier est renommé avant sa suppression).
TP6 : SOLUTION D’EXERCICE 5
1. sudo usermod -G sudo salah
2. egrep "sudo" /etc/group ou bien cat /etc/group | egrep "sudo"
3. su adil
4. mkdir sticky
5. ls -ld sticky
6. sudo chmod a=rwx sticky
7. touch sticky/file
8. sudo chmod a=rwx sticky/file
9. su salah
rm sticky/file

9. su adil
10. touch sticky/file; sudo chmod a=rwx sticky/file

11. sudo chmod +t sticky;ls -ld sticky


12. su salah
rm sticky/file

13. echo 'salut'> sticky/file;cat sticky/file


14. mv sticky/file sticky/fichier
15. sudo mv sticky/file sticky/fichier;ls sticky
sudo rm sticky/fichier;ls sticky
SHELL(E/S)

• Par défaut tout processus possède :


▪ 1 entrée
▪ 2 sorties
• Ces I/O sont distinctes pour chaque processus
• Pour les programmes interactifs (comme les shells) :
▪ les entrées proviennent du clavier
▪ les sorties s'affichent sur l'écran
SHELL (HISTORIQUE)
• bash mémorise toutes les commandes dans un fichier
d'historique
• cet historique est enregistré dans un fichier lorsque le shell
se termine (.bash_history).
• cet historique est lu depuis un fichier au démarrage d'un
shell
• le nom du fichier est défini dans $HISTFILE et la taille de
l'historique dans $HISTFILESIZE (2000 commande au max).
• La commande history est la commande qui affiche
l’historique des commande exécutées.
• le rappel de commandes :
▪ par numéro (!numéro)
▪ par nom (!nomcmd)
SHELL
(HISTORIQUE)
SHELL (HISTORIQUE)
SHELL & COMMANDES
AVANCÉES
SHELL & COMMANDES
AVANCÉES (ALIASES)
• Les alias permettent de créér une commande personnalisée.
➢ Syntaxe :
alias nomalias= " commande –option argument "

➢ Exemple :
alias cat="echo 'impossible de lire'"
alias Bureau="cd /home/nisserine/Bureau"

• alias sans arguments donne la liste des alias actuellement définis.

➢ Exemple : alias

• unalias permet de supprimer un alias

➢ Exemple : unalias Bureau


SHELL & COMMANDES
AVANCÉES (ALIASES)
➢ Exemple :
SHELL & COMMANDES AVANCÉES
Remarque:
(ALIASES)
• Les alias créés seront supprimés à la fermeture du terminal.
• Pour créer des alias permanents, il faut éditer le fichier .bashrc
avec l’un des éditeurs de fichier(vim,gedit,…).
➢ Exemple :
SHELL & COMMANDES
AVANCÉES (BOUCLES: FOR)
for/in : permet d'exécuter une série de commandes sur chacun
des éléments d'une liste
➢ Syntaxe :
for var in (list); do things; done
➢ Exemples :

for i in 1 2 3 for i in {1..6};


do echo i vaut $i do echo i vaut $i;
done done

for i in "mnt" "boot" "var"; for i in b{in,oot};


do echo Contenu de /$i; do echo Contenu de /$i;
ls /$i; ls /$i; done
done
SHELL & COMMANDES
AVANCÉES (BACKTICKS & SEQ)
seq : permet de générer une liste sur STDOUT
• seq 1 9 -> affiche les chiffres de de 1 à 9
• seq 1 2 9 -> affiche les nombres impairs entre 1 et 9

• Les ` ` (backticks) exécutent une commande et se remplacent par la


sortie de cette commande

• echo `pwd` : affiche le chemin actuel


• rm `seq 1 3` : supprime les fichiers nommés 1 2 et 3
➢ Exemples :
touch test`seq 1 3`
rm test`seq 1 3`
echo `pwd`
SHELL & COMMANDES
AVANCÉES (FOR & SEQ)
➢ Exemple :
SHELL SCRIPTING
• Un shell script est un fichier exécutable contenant une série de
commandes shell
• Un script commence généralement par :
#!/bin/bash ou #!/bin/sh
• Par convention, il se termine en général par « .bash » ou « .sh »,…
• Les lignes commençant par '#' sont des commentaires
• Il doit être exécutable, ou appelé par 'sh script‘ par la comande
sh puis le nom du ficher ou bien par ./ puis le nom du fichier.
➢ Exemple :

sh script1.sh
./script1.sh
➢ Exemple : SHELL SCRIPTING
1. Créer un fichier « test-script.sh ».
2. Editer ce dernier par l’éditeur « vim » comme suivant :

3. Ajouter le droit d’exécution au fichier « test-script » .


4. Exécuter le fichier « test-script.sh » .
➢ solution :
SHELL SCRIPTING (VARIABLES)
• Dans un script, on peut utiliser des variables locales ou issues de
l'environnement
echo $HOME
• En dehors de l'affectation, la variable doit être précédée par '$‘
mavar="bonjour"
echo $mavar
➢ Exemple :

➢ Suppression de variables :
• Pour rendre indéfinies une ou plusieurs variables, on utilise la
commande interne unset.
➢ Syntaxe :
unset var [ var1 . . . ]

➢ Exemple : a=4
echo $a
unset a
declare g=9.81
➢ Exemple de déclaration d’une constante : echo $g
SHELL SCRIPTING (VARIABLES)
• Le passage d’une valeur à partir de l’entrée standard se fait
par:
Read var
➢ Exemple 1 :

➢ Options :
-t: limiter le temps autorisé pour saisir un message.
-p: afficher un message de prompt
-n: limiter le nombre de caractère.

➢ Exemple 2 :
SHELL SCRIPTING (VARIABLES)
• La commande test ou [ ] :permet la comparaison entre-elles.
➢ Les opérateurs arithmétiques :
✓ l'addition : +
✓ la soustraction : -
✓ la multiplication : *
✓ la division : / ➢opérations logiques :
✓ la puissance : **
✓ && : signifie « et »
✓ le modulo : %
✓ || : signifie « ou »

➢ Les opérateurs relationnels :


-eq: Vérifie si les nombres sont égaux
-ne: Vérifie si les nombres sont différents.
-gt : supérieur strictement
-lt : inférieur strictement
-ge: supérieur ou égale
-le : inférieur ou égale
SHELL SCRIPTING (VARIABLES)
➢ Comparaison de chaînes
✓ = : égal (chaînes identiques)
✓ != : différent
✓ -z : vide
✓ -n ou ! -z : non vide
✓ < : précède (tri alphabétique)
➢ Exemple : ✓ > : suit (tri alphabétique)
SHELL SCRIPTING (VARIABLES)
➢opérations mathématiques :
• La commande let est équivalente à ((expression))

➢ Syntaxe : let "expression"


➢ Exemple :

➢ Autre exemple :
SHELL SCRIPTING (VARIABLES)

➢ Le shell offre plusieurs possibilités pour formuler des calculs :

➢ Syntaxe 1 : ➢ Syntaxe 2 :
Var=$[ expression ] Var=$(( expression ))

➢ Exemple 1 : ➢ Exemple 2 :
valeur=$[10*20] valeur=$((10*20))
echo $valeur echo $valeur
valeur=$[$valeur + 2] valeur=$(($valeur+2))
echo $valeur echo $valeur
SHELL SCRIPTING (VARIABLES)
➢ tableau:
• L’interpréteur bash permet d’utiliser des tableaux indicés ou associatifs
➢ Syntaxe :
tableau=(“valeur1” “valeur2”…)
➢ Exemple : tableau indicé ➢ Exemple : tableau associatifs

• Declare : permet la creation du tableau de façon explicite.

➢ l’option :
-a : pour un tableau indicé.
-A : pour un tableau associatif :
➢ Exemple :

➢ Autre exemple :
SHELL SCRIPTING (BRANCHEMENTS)
• La construction if/then/else/fi permet d'effectuer des
branchements conditionnels
➢ Syntaxe :
if [ test ]
then
echo "C'est vrai“
else
echo ‘C’est faux”
fi
➢ Exemple :
SHELL SCRIPTING (BRANCHEMENTS)
• La construction if/then/elif/then/else/fi permet d'effectuer des
branchements conditionnels imbiriquées.

➢ Syntaxe :
if [ test1 ]
then ➢ Exemple :
echo "vrai du test1 "
elif [ test2 ]
then
echo "vrai du test2 "
else
echo " faux du test2 "
fi
SHELL SCRIPTING (BRANCHEMENTS)
• La construction case permet également d'effectuer des
branchements conditionnels
➢ Syntaxe :
➢ Exemple :
case variable in
cas1)
…;;
cas2)
…;;
cas3)
… ;;
*)
… ;;
esac
SHELL SCRIPTING (OPÉRATEURS DE
TEST DES FICHIERS)
-e FILE : FILE existe
-d FILE : FILE existe et c’est un répertoire
-f FILE : FILE existe et c’est un fichier régulier
-r FILE FILE existe et la lecture est permise
-s FILE FILE existe et sa taille est supérieure à 0
-w FILE FILE existe et l’écriture est permise
-x FILE FILE existe et l’exécution est permise

➢ Exemple :
if [ -d $repertoire ]
then
echo " c’est un répertoire"
else
echo “ce n’est pas un répertoire"
fi
SHELL SCRIPTING (BOUCLES)

while condition/do/done permet de boucler tant que la


condition est vraie
➢ Syntaxe :
while [ test]; do
instructions
done

➢ Exemple :
TP 7: EXERICE 1
1. Trouver le fichier contenant l’historique des commandes pour
chaque utilisateur.
2. Afficher l’historique de vos commandes.
3. Afficher l’historique des commandes du root.
4. Ré exécuter une commande par numéro.
5. Ré exécuter une commande par nom.

➢ Solution :
1. echo $HISTFILE

2. history
3. Su root
history
4. !102
5. !ls -l
TP 7: EXERICE 2
1. Créer un alias permettant de passer vers les comptes d’utilisateurs en
mettant le nom du compte. (exemple : le compte salah)
2. Créer un alias « a » permettant de changer l’utilisateur vers votre
compte.
3. Créer un alias permettant d’imposer la liste étendue lors de l’exécution
de la commande ls.
4. Supprimer le dernier alias crée.
5. Voir la possibilité d’exécuter les alias dans un autre shell.
6. Voir si les alias restent après fermeture du shell.

➢ Solution :
1. alias salah="su salah"
2. alias a="su ahmed"
3. alias ls="ls -l"
4. unalias ls
5. sh
salah
6. bash
a
TP 7: EXERICE 3
1. Utiliser une boucle pour créer 10 fichiers (file1, …, file10).
2. Vérifier la création des fichiers.
3. Utiliser une boucle pour supprimer les 10 fichiers à la fois.
4. Vérifier la suppression des fichiers.
5. Utiliser une boucle pour créer 10 fichiers (file1, …, file10) chaque
fichier doit contenir un message « Bounjour dans fichier n ».
6. Utiliser une boucle pour afficher le contenu du fichier comme suit :

➢ Solution :
1. for i in `seq 10`; do touch fichier$i; done
2. ls
3. for i in `seq 10`; do rm fichier$i; done
4. ls
5. for i in `seq 10`; do echo 'Bounjour dans fichier'$i > fichier$i; done
6. for i in `seq 10`;do echo fichier$i :; cat fichier$i;done
TP 7: EXERICE 4
1. Afficher une liste de numéros de 1 à 10.
2. Créer un fichier « dix.txt » , éditer -le pour qu'il contient la liste des
nombres de 1 à 10.
3. Ecrire une commande qui permet de lister les fichiers et les
répertoires dans le dossier actuel avec le format suivant :

4. Afficher la liste des fichiers par type selon le format suivant (utiliser
la commande file -b):
SOLUTION TP 7: EXERICE 4

1. for i in `seq 10`; do echo $i; done; ou bien :


for i in {1..10}; do echo $i; done; ou bien seq 10

2. touch dix.txt;for i in `seq 1 10`; do echo $i >> dix.txt; done;cat dix.txt;done;


OU BIEN seq 1 10 > dix.txt

2. for i in `ls -r`;do echo il y a $i dans `pwd`;done;

3. for i in `ls`;do echo le fichier $i est de type `file -b $i`;done;


TP 7: EXERICE 5
1. Créer un script « admission.bash » dans le home directory.
2. Editer ce fichier avec l’editeur « gedit ».
3. Demander une variable « note ».
4. Vérifier si la note entre 10 et 20 puis afficher le résultat d’admission

➢ Solution :

1. touch admission.bash
2. gedit admission.bash
3. read -p "donner votre note " note
4. if [ $note -ge 10 ] && [ $note -le 20 ]
then
echo "vous êtes admis"
else
echo "vous n'êtes pas admis"
fi
TP 7: EXERICE 6

1. Créer deux scripts « mention-if.bash » et « mention-case.bash »


dans le home directory.
2. Editer ce fichier avec l’editeur « gedit ».
3. Le script « mention-if.bash » demande une note puis il affiche la mention
avec le test « if ».
4. Le script « mention-case.bash » demande une note puis il affiche la
mention avec le test « case ».
TP 7: EXERICE 6
➢ Solution : 1. touch mention-if.bash mention-case.bash
2. gedit mention-if.bash 1. gedit mention-if.bash
3. read -p "donner votre note " note 2. read -p "donner votre note " note
4. if [ $note -ge 10 ] && [ $note -lt 12 ] 3. case $note in
then "10" | "11")
echo "passable" echo "passable"
elif [ $note -ge 12 ] && [ $note -lt 14 ] ;;
then "12"|"13")
echo "A.B" echo "A.B";;
elif [ $note -ge 14 ] && [ $note -lt 16 ] "14"|"15")
then echo "Bien";;
echo "Bien" "16"|"17")
elif [ $note -ge 16 ] && [ $note -lt 18 ] echo "T.B";;
then "18"|"19"|"20")
echo "T.B" echo "Excellent"
elif [ $note -ge 18 ] && [ $note -lt 20 ] ;;
then *)
echo "Excellent" echo "faible :( "
else ;;
echo "faible :(" esac
fi
TP 7: EXERICE 7
1. Créer un fichier « testfile.bash » dans le home directory.
2. Activer son droit d’exécution.
3. Editer ce fichier par l’éditeur « vim » pour que soit traiter :

a. La demande d’une variable « nom » d’un fichier ou dossier.


b. La vérification d’existence du nom donné.
c. La vérification du nom si il est un fichier ou répertoire.
d. Pour chaque type il doit vérifier ses droit (rwx) puis il affiche le résultat de chaque
vérification.

4. Exécuter le fichier « testfile.bash », puis tester avec le nom du répertoire « Bureau ».


5. Créer un noveau dossier « testdossier » dans le répertoire personnel.
6. Exécuter le fichier « testfile.bash » en testant le nom du répertoire « testdossier ».
7. Retirer le droit de l’écriture et d’accès de répertoire « testdossier ».
8. Créer un fichier « testfich.txt » dans le répertoire « home ».
9. Exécuter le fichier « testfile.bash » en testant le nom du fichier « testfich.txt ».
10. Ajouter le droit d’exécution et retirer le droit d’écriture au fichier « testfich.txt ».
11. Tester la dernière modification.
SOLUTION TP 7: EXERICE 7
1. touch testfile.bash
2. sudo chmod a+x testfile.bash
3. vim testfile.bash

4. ./testfile.bash
Bureau
5. mkdir testdossier
6. ./testfile.bash
testdossier
7. sudo chmod u-wx testdossier
8. touch testfich.txt
9. ./testfile.bash
testfich.txt
10. sudo chmod u+x-w testfich.txt
./testfile.bash
testfich.txt
TP 7: EXERICE 8

Ecrire un script shell permettant d’afficher le menu suivant :

Menu
Affichage repertoire courant........... 1
Liste des fichiers du repertoire....... 2
Informations sur un fichier..............3
Accès à un de repertoire…..............4
n premieres lignes d'un fichier.........5
Sortie................................................0
Choix:

L’utilisateur doit saisir un numéro. Le programme exécute l’opération selon le


numéro saisi.
Le menu doit réapparaitre à la fin de chaque opération jusqu’à la saisie de 0.
SOLUTION TP 7: EXERICE 8

#!/bin/bash
clear
choix=1
while [ $choix -ne 0 ]
do
echo "Menu"
echo " Affichage repertoire courant............1"
echo " Liste des fichiers du repertoire..........2"
echo " Informations sur un fichier.................3"
echo " Accès à un repertoire........................4"
echo " n premieres lignes d'un fichier..........5"
echo " Sortie....................................................0"
echo -n "Choix: "
read choix
case $choix in
"0")
echo "fin de menu" ;;
"1")
pwd ;;
"2")
ls ;;
"3")
echo -n "Nom du fichier: " ; read file
ls -l $file;;
"4")
echo -n "Nom du repertoire: " ; read rep
cd $rep;ls;;
"5")
echo -n "Nom du fichier: " ; read file
echo -n "Nb de lignes a afficher: " ; read n
head -$n $file ;;
*)
echo "Choix non propose";;
esac
done
TP 7: EXERICE 9
1. Créer un script « tri-tableau.bash » dans le home directory.
2. Activer son droit d’exécution.
3. Editer ce fichier par l’éditeur « gedit » pour que soit traiter :
a. Initialiser un tableau par {8,3,2,9,4}.
b. Trier ce tableau.
c. Afficher le résultat du tri.

4. Exécuter le script.
TP 7: EXERICE 10
1. Créer un script « moy-contrôle.bash » dans le home directory.
2. Activer son droit d’exécution.
3. Editer ce fichier par l’éditeur « gedit » pour que soit traiter :
a. Demander le nombre des étudiant.
b. Demander la note du contrôle1 et la note du contrôle2 de
chaque étudiant.
c. Vérifier que chaque est entre 0 et 20, si non l’utilisateur doit
ressaisir la note.
d. Calculer la moyenne de chaque étudiant à l’aide de la
commande « let ».
e. Afficher la moyenne de chaque étudiant en indiquant sa
position.

Vous aimerez peut-être aussi