Vous êtes sur la page 1sur 20

3IIR

Système d’exploitation (UNIX)


1ère partie

Professeur: IOUNOUSSE Jawad


Plan du cours + TP
Introduction et Rappels Module 1 : Principes de base
Programmation par scripts d'Unix et de la ligne de commande

Mécanismes de base
Module 2 : Travailler avec Unix

En ligne (Coursera)
Fonctionnement en interactif
Présentiel

Portabilité des scripts


Module 3 : Programmation Bash
Mécanismes complémentaires

Évaluation 1
Les services
Module 4 : Git et GitHub
Automatisation des tâches

Manipulation des fichiers et données Module 5 : Néphologie


Langage AWK

Évaluation 2
Lien du cours en ligne
https://www.coursera.org/learn/unix

Objectifs
 Acquérir les principes de fonctionnement du système Unix/Linux à travers
un terminal.
 Maitriser les compétences et les connaissances nécessaires à la réalisation
de scripts Shell Unix-Linux.
 Connaitre des techniques d'administration d'un système Unix ou Linux et
de manipulation des données en utilisant ce système d’exploitation.

Prérequis
 Connaissances de base sur les systèmes d’exploitation surtout UNIX.
 Commandes de base d’un terminal UNIX (Rappels nécessaires)
Introduction et Rappels
Historique
LINUX est un système d’exploitation gratuit !!
1 2
 LINUX dérive de UNIX (créé en 1969) par des
informaticiens professionnels (Ken Thompson1 et Dennis
Ritchie2).

 En 1984, la création de MS-DOS par Microsoft moins


compliqué mais payant. UNIX est devenu payant aussi. le 3
projet GNU était né grâce à Richard Stallman3 dans le but
de créer un nouveau système d'exploitation fonctionnant
comme UNIX (les commandes restant les mêmes). GNU
n’est pas seulement gratuit mais aussi « libre ».
4
 En 1991, Linus Torvalds4 créa son propre système
d'exploitation qui a prix le nom de LINUX = LINUS + UNIX
Distributions Linux

 La différence repose sur la politique de distribution, le système de maintenance et


la communauté .
 498 des 500 machines les plus puissantes du monde l'ont choisi comme OS (99%) !
Linux permet ainsi de s'éviter une dépense inutile.
Shell UNIX

Shell est un interpréteur de


commande. Il ne fait pas partie du
système d'exploitation UNIX et
c'est la raison pour laquelle il
porte ce nom « coquille », qui
indique son état détaché du
« noyau » Unix.
Son rôle est d'analyser la
commande tapée afin de faire
réagir le système pour qu'il
réponde aux besoins de
l'utilisateur. C'est le premier
langage de commandes développé
sur Unix par Steve Bourne.
L'arborescence des fichiers
/

/bin /boot /dev /etc /home /lib ...

/emsi /labo

/images /videos

Répertoire Signification Contenu du répertoire


/ Racine du système, à la base de la hierarchie
binaries, binary
/bin Le répertoire contenant les principales commandes (“ls”, “cd”, “cat” … )
utilities
/boot bootstrap Ensemble des fichiers nécessaires au démarrage de Linux
/dev device Fichiers pour la liaison avec les périphériques
/etc editing text config Fichiers textes de configuration des programmes, services et du système
/home home directory Répertoires personnels des utilisateurs
/lib librairies Bibliothèques partagées essentielles et modules du noyau
/media Points de montages pour les médias amovibles (USB, CD, SD, …)
/mnt mount Point de montage temporaire pour une partition ou un periphérique
/proc processes Etats du noyau Linux et des processus système
/root root Répertoire personnel du super-utilisateur
L'arborescence des fichiers
/

/bin /boot /dev /etc /home /lib ...

/emsi /labo

/images /videos

Répertoire Signification Contenu du répertoire


Informations relatives au système depuis son dernier démarrage (ex : utilisateurs
/run runtime system
actifs, services en cours d’exécution, etc.)
super binaries, super bi Exécutables système essentiels et fichiers binaires système (les commandes
/sbin
nary utilities d'administration)
/srv services Données pour les services du système
/tmp temporary Fichiers temporaires utilisés par des applications
Hiérarchie secondaire, pour des données en lecture seule par les utilisateurs.
/usr Unix system resources
Contient généralement les programmes installés par l’utilisateur.
Exécutables des programmes additionnels pour tous les utilisateurs (ex :
/usr/bin
gestionnaire de fichiers, lecteur de musique, navigateur Web, application…)
/usr/lib Bibliothèques partagées par les applications de /usr/bin et /usr/sbin
/usr/local Où l’utilisateur peut installer des logiciels en local et les compiler
/var variable Données variables et diverses (fichiers résultant de l'exploitation)
Shell, console ou Terminal
L’objectif de la console, Shell ou terminal est:
1. Fournir une interface pour la saisie de
commande
2. Redirection des entrées/sorties standards
3. Analyser les commandes
• substitution de noms de fichiers
• substitution de variables
• redirection d’entrées/sorties
4. Exécution de commandes
• mode synchrone
• mode asynchrone
5. Fournir un langage interprété

Les shells les plus connus sont sh, bash,


ksh, csh et tcsh
Utilisation du Shell
Deux modes d’utilisation :
 interactif : en ligne de commande.
1. Présente une invite (prompt) à l’utilisateur et attend que celui-ci tape une commande ;
2. Exécute la commande tapée par l’utilisateur
3. Retour en 1.
 non-interactif : scripts shell, batch
1. Lit une ligne du fichier
2. Exécute les instructions données dans la ligne du fichier
3. Passe à la ligne suivante
4. Retour en 1
Le programme s’arrête lorsqu’il n’y a plus de ligne à lire ou lorsqu’une instruction spéciale (exit
ou return) est rencontrée.

Convention : l’invite est :


• $ pour l’utilisateur normal en sh, bsh, bash user@machine$
• % pour l’utilisateur normal en csh, tcsh user@machine%
• # pour root dans tous les shells user@machine#
Premières lignes de commande
Pour se familiariser avec la saisie de commandes, nous pouvons tester quelques programmes
d'information :
 date : affiche la date et l'heure
 cal : affiche le calendrier
 who : liste des utilisateurs connectés
 man : mode d'emploi d’une commande. exemple: $ man date
 echo : affiche un message. exemple: $ echo -e "Bonjour\nComment ça va ?\c"

Caractère Effet
\n Saut de ligne (newline)
\b Retour arrière (backslash)
\t Tabulation On peut aussi afficher des
\c Pas de retour à la ligne (carriage) variables (partie Programmation)
\\ Affiche \
\$ Affiche $
\valeur Affiche le caractère spécial de code octal valeur

 exit : Sortie du programme en cours.


Premières lignes de commande
 Enchaînement de commandes:
 Commande simple en arrière plan
$ cmd [ arg ... ] &
$ cmd1 [ arg ... ] & cmd2 [ arg ... ] & (mode parallèle)

 Pipeline (tube de communication entre commandes)


$ cmd1 [ arg ... ] | cmd2 [ arg ...] | ...

 Exécuter la commande suivante en fonction de l’exit de la première


$ cmd1 [ arg ... ] || cmd2 [ arg ...] ... (Exécuter cmd2 si cmd1 échoue)
$ cmd1 [ arg ... ] && cmd2 [ arg ...] ... (Exécuter cmd2 si cmd1 réussit)

 Séquencement de commandes successives en premier plan (mode séquentiel)


$ cmd1 [ arg ... ]; cmd2 [ arg ... ]; cmd3 ...

 Groupement des commandes : exécution en sous-shell


$ ( cmd1 [ arg ... ]; cmd2 [ arg ... ]; cmd3 ... )

 Groupement des commandes : exécution dans le shell courant


$ { cmd1 [ arg ... ]; cmd2 [ arg ... ]; cmd3 ...;}
Premières lignes de commande
 Couleurs de textes (terminal compatible):
On peut redéfinir les variables $PS1 et $PS2 pour
afficher des messages en couleurs en utilisant par
exemple la commande echo selon la syntaxe suivante:
echo –e \033[XXm
avec XX est le code de la couleur; XX=0 (par défaut)
Exemples:
echo -e "\033[32mEMSI \033[0m est mon école"

Les codes de couleurs peuvent se cumuler :


echo -e "\033[31m\033[44mHello world \033[0m"

On peut cumuler plusieurs couleurs/effets séparés par ;

echo -e "\033[37;42;1;4;7mEMSI\033[0m"

Le caractère \033 peut être remplacé par \e


Commandes utiles
 Raccourcis utiles:
• Pour interrompre une commande on peut utiliser Ctrl + C.
• La flèche haut ↑ et la flèche bas ↓ permettent de naviguer dans l'historique du
terminal.
• tab permet de faire de l'auto-complétion.
• Pour aller au tout début de la ligne de commande on peut utiliser Ctrl + A.
• Pour aller à la fin de la ligne de commande on peut utiliser Ctrl + E.
• Pour effacer la ligne complète on peut utiliser Ctrl + U.
• Pour effacer le dernier mot qui précède on peut utiliser Ctrl + W.

 Gestion des utilisateurs:


 login : pour se connecter à une session.
 passwd : pour modifier son mot de passe.
 su : pour changer d’utilisateur.
 logname : affiche le nom de login de l'utilisateur.
 logout : pour fermer tous les travaux en cours, et remet le terminal dans son état
de départ (attente de login)..
Commandes utiles
 Commandes de gestion de répertoires:
 pwd : Print Working Directory, pour indiquer le nom du répertoire actif
 ls : affiche le contenu du répertoire courant (ou du répertoire demandé).
ls -al, ls -d : Ce sont des options de ls. Pour en savoir plus ( man ls ).
 cd : changement de répertoire.
cd .. : Pour retourner dans le dossier parent.
cd ~ : Pour retourner dans le dossier utilisateur.
 mkdir : permet la création d'un ou plusieurs répertoires
 rmdir : permet la suppression d'un ou plusieurs répertoires (vides bien sur)
 Commandes de fichiers:
 file : commande mineure, qui permet de savoir le type d'un fichier (Il est
préférable de se baser sur le contenu réel du fichier plutôt que sur l'extension !!!!)
 cp : copie les fichiers.
cp origine arrivée. L’origine peut être un ou plusieurs fichiers. L’arrivée peut être
un fichier (si une seule origine), ou un répertoire (si une ou plusieurs origines).
 mv : déplace les fichiers. Sert aussi à renommer les fichiers
 rm : suppression d’un ou des fichiers donnés en argument.
 cat : affiche le contenu du ou des fichiers donnés en argument.
 touch : crée un ou des fichiers donnés en argument.
Commandes utiles
 Les droits d'accès:
 chmod : (CHange MODe) modifie les droits d’accès d’un fichier.
$ chmod [ugoa] [+|-|=] [rwx] fichier
Ou $ chmod ZZZ fichier

User Group Other


r w x r w x r w x
1  1  1  1  1  1  1  1  1 
ou ou ou ou ou ou ou ou ou
0  0  0  0  0  0  0  0  0 

 chgrp : permet le changement de groupe pour les fichiers ou répertoires cités, à


condition que l’utilisateur fasse partie du nouveau groupe et soit propriétaire de ces
fichiers ou répertoires..
Exercice 1
1- En Shell, créez l’arborescence suivante à partir du répertoire utilisateur:

~ Test
Rep1

Rep2
Rep21

Rep22

Rep3

2- Créez le fichier « file.sh » dans le répertoire Rep22 et donnez lui le droit d’exécution.
3- Copiez le fichier « file.sh » dans le répertoire Test.
4- Renommez le fichier « file.sh » du répertoire Test en « script.sh » et supprimez celui
du répertoire Rep22.
Exercice 1 (Correction)
1- En Shell, créez l’arborescence suivante à partir du répertoire utilisateur:
~$ mkdir Test
~$ cd Test
~/Test$ mkdir Rep1 Rep2 Rep3
~/Test$ cd Rep2
~/Test/Rep2$ mkdir Rep21 Rep22
ou ~/ mkdir –p Test/{Rep1,Rep2/{Rep21,Rep22},Rep3}
2- Créez le fichier « file.sh » dans le répertoire Rep22 et donnez lui le droit d’exécution.
~/Test/Rep2$ cd Rep22
~/Test/Rep2/Rep22$ touch file.sh
~/Test/Rep2/Rep22$ chmod a+x file.sh

3- Copiez le fichier « file.sh » dans le répertoire Test.


~/Test/Rep2/Rep22$ cp file.sh ../..

4- Renommez le fichier « file.sh » du répertoire Test en « script.sh » et supprimez celui du


répertoire Rep22.
~/Test/Rep2/Rep22$ cd ../..
~/Test$ mv file.sh script.sh
~/Test$ rm ./Rep2/Rep22/file.sh
Exercice 2
1. Affichez les Shells disponibles sur votre système.
2. Affichez votre Shell actuel.
3. Affichez votre Shell par défaut.
4. Basculez d’un Shell à un autre puis fermer chaque Shell ouvert.
5. Changez votre Shell par défaut.
6. Vérifiez la disponibilité des éditeurs de texte et familiarisez-vous avec l’un d’eux.

Vous aimerez peut-être aussi