TD1
Linux : les bases
Patrick FULCONIS
1
Présentation de l’UE
• thèmes et aspects pratiques
– But : acquérir l’autonomie nécessaire à la compréhension et à la
résolution des problèmes liés à l’environnement de
programmation et au système d’exploitation, et introduction aux
modèles mathématiques et informatiques qui structurent le
comportement d’un système.
– Programme :
• éléments de système : interpréteur, système de fichiers,
programmation shell
• programmation en C : codage de l’information, bibliothèques
standard (notamment I/O), mémoire (notamment les pointeurs
et tableaux)
• outils : gcc, make, gdb
• introduction aux automates
• projet : utilisation des notions précédentes pour la réalisation
d’une partie d’un interpréteur de commandes simple
2
Présentation de l’UE
• thèmes et aspects pratiques
– Organisation : 4 créneaux par semaine, dont 2 TPs sur machine
l’un à la suite de l’autre. Pour ces derniers, le premier est
encadré, le second ne l’est pas (il permet de terminer le travail
demandé).
– TD/CTD : préparation des TPs à venir, et on revient sur ceux qui
ont été faits
– TPs (en binôme) : exercices. Certaines notions sont vues pour la
première fois en TP. Rédaction d’un compte rendu à rendre à la
séance de TD suivante. Ces comptes-rendus sont corrigés mais
pas notés.
– Evaluation :
• CC1 : un DS (25%)
• CC2 : des petites interros (25mn) les semaines 3, 5, 7, 9, 11
(25%)
• un examen terminal (50%). (rattrapage uniquement exam)
3
Linux
Unix/Linux différencie les majuscules des minuscules
Unix n’aime pas les espaces et caractères
spéciaux dans les noms de fichiers, ni les
accents
L’espace sert de séparateur entre
commandes/options/arguments
4
Arborescence (Chemin/path)
• Tout répertoire/fichier peut être identifié
de deux manières différentes
– Par son chemin (référence) absolu
• Liste des répertoires depuis la racine (/) jusqu’au fichier recherché.
– Par son chemin (référence) relatif
• Liste des répertoires depuis le répertoire courant (là ou l’on se trouve) jusqu’au fichiers
recherché.
– On appellera nom d’un fichier ou d’un répertoire son chemin relatif depuis le
répertoire où il se trouve
• c’est-à-dire la fin de tous les chemins qui le désignent
5
Arborescence (Chemin/path)
/
boot dev etc home proc root sbin tmp usr var
ubuntu toto mirroir donnees
tp1 linux sav
f1 f2 f3 [Link]
Répertoire courant : /home Répertoire courant : /tmp
Nom répertoire de destination : tp1
Nom fichier de destination : [Link]
Chemin absolu : /home/ubuntu/tp1
Chemin absolu : /tmp/mirroir/linux/[Link]
Chemin relatif : ubuntu/tp1 Chemin relatif : mirroir/linux/[Link]
6
Arborescence (Chemin/path)
• Relation père/fils
• Répertoires :
/ répertoire racine de l’arborescence
. répertoire courant
.. répertoire parent
~ répertoire principal (homedir) de l’utilisateur courant
~toto répertoire principal (homedir) de l’utilisateur toto
• Remarques :
– Le chemin absolu est unique
– Il existe de nombreux chemins relatifs possibles pour un fichier
• En général on choisit le plus cours
• Mais les aller-retours ne sont pas interdit
– En général, on utilise le chemin le plus pratique : relatif quand on est proche, absolu quand on est loin dans
l’arbre.
7
Arborescence (Chemin/path)
/
boot dev etc home proc root sbin tmp usr var
tp_c tp_unix mirroir donnees
tp1 linux sav
f1 f2 f3
Répertoire courant : tp1
Nom répertoire de destination : linux
Chemin absolu : /tmp/mirroir/linux
Chemin relatif : ../../../tmp/mirroir/linux
8
Les commandes
• Syntaxe générale
commande [-options ] [arguments ] arguments
la commande peut être suivie d'options ou d'arguments
(paramètres) (séparés par des espaces)
Si ceux-ci apparaissent entre crochets dans l’aide en ligne
« man », c'est qu'ils sont facultatifs, sinon ils sont obligatoires
Les options sont précédées d'un "-" contrairement aux arguments
- Exemple : lister des fichiers ls
ls [-altrR] [noms…]
-a : (all) tous les fichiers, même cachés
-l : (long) lister au format long
-t : (tri) lister en triant par date
-R : (recursive) lister récursivement dans les répertoires
ls –l ; ls –ltr ; ls –R –l /usr ; ls –al . ; ls –lR /etc
9
Les commandes
• Sur les répertoires :
pwd : affiche le répertoire courant (print working directory)
cd : change de répertoire courant (change directory)
cd .. remonte au répertoire père
cd / va au répertoire racine
cd va au répertoire home de l’utilisateur
cd - va au répertoire précédent
mkdir : crée un nouveau répertoire (make directory)
mkdir toto crée le répertoire toto
rmdir : efface un répertoire vide (remove directory)
rmdir toto supprime le répertoire toto
10
Les commandes
• Sur les fichiers :
ls liste les fichiers et répertoires (list)
cp copie des fichiers et répertoires (copy)
rm supprime des fichiers et répertoires (remove)
mv déplace et/ou renomme un fichier ou un répertoires
(move)
touch crée un fichier vide (ou change la date d’un fichier
existant)
11
Manipulation de fichiers
• Visualisation de fichiers texte
Utilisation des commandes (en mode texte) :
cat, more et less
cat (concaténer) : permet d’afficher, de créer, copier et de
concaténer des fichiers.
Syntaxe : cat nom_fichier
12
Manipulation de fichiers
Visualisation de fichier texte (suite)
more (ou less): affiche un fichier page par page ( )
Syntaxe : more nom_fichier
Avant d’utiliser les commandes d’affichage, il est nécessaire
de
connaître le type de fichier(texte, binaire, exécutable).
La commande file permet d’identifier le type d’un fichier.
Syntaxe : file nom_fichier
Éditeurs mode texte : vi, vim, emacs, gedit …
13
Manipulation de fichiers
• Copie, déplacement et effacement de fichiers
Copie de fichiers
cp (copy) permet :
• de copier des fichiers
• des répertoires avec l’option –R ou –r (-R est recommandée)
Syntaxe :
cp source destination
source = ce qui est copié destination = vers où c’est
copié
Exemple :
cp [Link] /home/toto
Copie le fichier [Link] dans le répertoire toto (si rep toto14
Manipulation de fichiers
• Copie, déplacement et effacement de fichiers
(suite)
Attention :
source = fichiers à copier/déplacer
source peut être des fichiers/répertoires
destination = où on les copie/déplace
destination peut exister ou non, être un répertoire ou fichier
Exemples :
cp fichier1 fichier2
cp fichier1 /tmp/fichier2
cp fichier1 /tmp/
cp /tmp/fichier1 .
cp fichier1 tmp (tmp fichier ou repertoire)
cp –R rep1 rep2 (rep2 existe ou non)
cp –R /tmp/rep1 /tmp2/rep2
15
Manipulation de fichiers
• Conventions
quand il y a fich dans un nom, c’est un fichier,
quand il y a rep, c’est un répertoire.
<chemin>fich est un chemin qui désigne le fichier de nom
fich.
<chemin> peut être réduit à ε.
Exemples :
dans /Public/123 Public/TP1/fich1 :
<chemin>=/Public/123 Public/TP1/ et fich=fich1
Dans fichier1, <chemin>=ε et fich=fichier1.
16
Manipulation de fichiers
1. cp fich1 fich2
2. cp <chemin1>fich1 <chemin2>fich2
3. cp <chemin1>fich <chemin2>rep
4. cp <chemin1>fich1 ... <cheminn>fichn
<chemindest>rep
5. cp <chemin1>* <chemindest>rep
6. cp -R <cheminsource>repsource <chemindest>repdest
17
Manipulation de fichiers
• Copie, déplacement et effacement de fichiers
(suite)
Renommage/déplacement de fichiers
mv (move) permet :
• de changer le nom des fichiers ou répertoires
• De déplacer des fichiers ou répertoire (équivalent à une copie,
suivi d’une suppression).
Syntaxe :
Changement de nom : mv nom_fichier nouv_nom_fichier
Exemple :
mv [Link] [Link] 18
Manipulation de fichiers
• Copie, déplacement et effacement de fichiers
(suite)
Déplacement de fichiers
Syntaxe :
Déplacement : mv source destination
Différent si destination existe ou non, et si fichier ou répertoire
Exemple :
mv [Link] /home/site/
19
Manipulation de fichiers
• Copie, déplacement et effacement de fichiers
(suite)
Effacement ou suppression de fichiers ou répertoires
rm (remove) permet de supprimer des fichiers ou répertoires
Option –R ou -r pour supprimer un répertoire (et ce qu’il
contient)
Attention : pas de corbeille …
Syntaxe :
rm chemin
Exemple :
rm /home/site/[Link]
rm –R /home/site 20
Les métacaractères
• Outils permettant d’optimiser les actions dans une
commande
– Les métacaractères sont symbolisés par les caractères
suivants :
*, ?, [ ], { }
– Métacaractère *
• Remplace n’importe quelle suite de caractères (vide y compris)
Exemple : lister tous les fichiers dont la 1ere lettre commence par a
ls a*
– Métacaractère ?
• Remplace 1 et 1 seul caractère
Exemple : lister tous les fichiers dont la dernière lettre est un et un
seul caractère (tp1, tp2, tp3,… mais pas tp, tp12, [Link] …)
ls tp?
21
Les métacaractères
• Outils permettant d’optimiser les actions dans une commande
– Métacaractère [ ]
Définition d’un intervalle de lettre ou chiffres.
Remplace 1 seul caractère
Exemples :
lister tous les fichiers dont la première lettre commence par a, b ou c
ls [abc]* ou ls [a-c]* (ou ls {a,b,c}*)
lister tous les fichiers qui se termine par 7, 8 et 9
ls *[7-9]
lister tous les fichiers qui ne se termine pas par 6, 7 ,8, 9
ls *[!6-9] ou ls *[^6-9]
22
Les métacaractères
• Outils permettant d’optimiser les actions dans une
commande
lister la liste de fichiers suivante : [Link], [Link], …[Link]
Quelle est la bonne commande ?
ls toto[31-39].txt
ls toto3[1-9].txt
ls [toto31-toto39].txt
lister la liste de fichiers [Link], [Link], … [Link] :
ls toto??.txt
ls toto[0-3][0-9].txt
23
Commandes/caractères
spéciaux
• Ctrl-C (^C) arrête un processus
• Ctrl-D exit (logout) (utilisation non conseillé)
• Job & exécute le processus en background (arrière-plan)
• Ctrl-Z suspend un processus
• bg bascule le processus en background (arrière-plan)
• fg permet de reprendre (en premier plan) l'exécution du
job suspendu
si on a oublié &, faire Ctrl-Z puis bg
• Ctrl-L rafraichit l'écran (clear , reset)
24
Système d’exploitation –
Interpréteur de commandes
Patrick FULCONIS
25
Système d’exploitation
Environnement utilisé en TP lors de INF111 :
–un ensemble de terminaux-X ou de PC connectés à un réseau
–session de travail = ouvrir une connexion avec une des machines du
réseau (un “serveur’”, par exemple turing)
Le serveur contient donc un ensemble de programmes qui lui permettent :
–d’attendre des commandes, de les analyser et d’exécuter les programmes
correspondants
–d’éditer des fichiers, de compiler des programmes C, etc.
–de gérer les ressources de la machine : disques, périphériques, processeur
(partagés par différents utilisateurs)
–de gérer les utilisateurs (comptes, droits, ...)
–etc.
→ cet ensemble (fini !) de programmes constitue ce que l’on appelle le
“système d’exploitation” (système Unix dans le cas des serveurs du
DLST)
Rq : sur les PC du DLST, on se connecte sur le système d’exploitation
Windows
26
SE - Interpréteur de
commandes
Un des premiers rôles du système d’exploitation est
d’exécuter en permanence un programme de dialogue avec
l’utilisateur chargé d’attendre et d’exécuter des commandes.
Ces commandes peuvent être fournies soit à travers une
interface graphique (par exemple en cliquant dans un menu),
soit sous forme de texte saisi dans une fenêtre (soit même
éventuellement sous d’autres formes : micro, caméra, etc).
→ l’important est de comprendre que, quelle que soit
l’interface utilisée, ce dialogue est géré par un programme
qui s’exécute en permanence sur la machine, l’interpréteur
de commandes.
Dans le cas d’Unix, les commandes sont fournies (par défaut)
à travers une interface textuelle. L’interpréteur de
commandes s’appelle alors un “shell”
27
Le Shell
• Dans l'environnement du shell, chaque ligne démarre par un
prompt,
• Celui-ci se termine par le caractère # si l'utilisateur connecté est
root
(administrateur)
• Par
Unix, le caractère
Linux $ s'il s'agit
différencie les d'un autre utilisateur.
majuscules des minuscules
Unix n’aime pas les espaces et caractères spéciaux dans
les noms de fichiers, ni les accents
L’espace sert de séparateur entre
commandes/options/arguments
Différents shell : bash, sh, zsh, tcsh, … 28
Analyse et exécution d’une
commande Unix
Le comportement par défaut de l’interpréteur de commande peut être
décrit de la manière suivante :
1. attente d’une séquence de caractères terminée par “Return”
2. analyse de cette séquence : est-ce une commande Unix correcte ?
— si oui, on l’exécute, et on attend que cette exécution se termine !
— sinon, on affiche un message d’erreur
3. on recommence ...
29
Analyse et exécution d’une
commande Unix
Dans certains cas, on souhaite ne pas attendre que la commande en cours
d’exécution soit terminée avant de pouvoir exécuter une nouvelle
commande :
– soit parce que c’est une commande qui prend du temps (un calcul long),
– soit parce que l’on veut que cette commande continue à s’exécuter (nedit).
On peut alors indiquer à l’interpréteur que cette commande doit être
exécutée en ”tâche de fond” (background) en la faisant suivre de ’&’. Dans ce
cas l’interpréteur de commande lance l’exécution (si la commande est
correcte) et se remet immédiatement en attente de la prochaine commande.
Exemple : gedit &
variante possible (si on a oublie le &) :
nedit (le shell est « bloqué »)
CTRL-Z (suspend l’exécution de la commande en cours)
bg (relance en tâche de fond (background) la dernière commande suspendue)
(en général : le shell affiche « gedit & »)
30
Analyse et exécution d’une
commande Unix
Remarque :
On peut ainsi avoir plusieurs commandes qui s’exécutent en même
temps : il faut donc que la machine soit capable d’exécuter plusieurs
programmes “en même temps” alors qu’elle ne possède en général
qu’un petit nombre de processeurs (voire un seul !).
En pratique cette “simultanéité” est obtenue à travers une fonction
du système d’exploitation qui permet d’interrompre / relancer
l’exécution d’un programme, de gérer une liste de programmes ”en
attente”, de choisir lequel exécuter à un instant donné, etc.
Linux est un système à temps partagé (et multi-tâches, multi-
utilisateurs)
31
Analyse et exécution d’une
commande Unix
Pour faciliter l’analyse, les commandes Unix sont toujours de la même
forme : un <nom de commande> suivi de 0 ou plusieurs <arguments>
exemples :
cp tp1.c tp2.c
mkdir TP
nedit un_fichier
gcc tp1.c
ls
Lorsqu’une commande est incorrecte, le shell fournit un message
d’erreur, différent selon la nature de l’erreur :
— lorsque le <nom de commande> est incorrect
— lorsque les <arguments> sont incorrects (pas le bon nombre,
“options” inexistantes)
— lorsque la commande ne peut s’exécuter correctement (les
arguments sont “incorrects” : fichiers manquants, problème de droits,
etc.)
32
Analyse et exécution d’une
commande Unix
• En particulier, quel genre d’erreur obtient-on si on
exécute cp * dans les cas suivants :
– le répertoire courant contient 1 fichier (et c’est tout)
– le répertoire courant contient 2 fichiers (et c’est tout)
– le répertoire courant contient 3 fichiers (et c’est tout)
– le répertoire courant contient n fichiers et 1 répertoire (et
c’est tout)
33
Analyse et exécution d’une
commande Unix
• Remarque 1 :
– “exécuter” une commande signifie en géneral démarrer
un (nouveau) programme chargé d’exécuter cette
commande. (c’est le cas pour ls, mkdir, etc.).
– Certaines autres commandes sont traitées directement
par l’interpréteur de commande (cd). Mais tout ça est
assez transparent pour l’utilisateur ...
– Une question connexe est de savoir comment fait
l’interpréteur de commande pour savoir “où se trouve” le
programme à exécuter ? la réponse dans un prochain
épisode !
34
Analyse et exécution d’une
commande Unix
• Remarque 2 :
– Il y a des commandes qui “modifie quelque chose”
dans l’environnement (comme cd ou mkdir ou cp) et
– Des commandes qui “ne modifie rien” mis à part les
pixels de l’écran. (comme ls ou pwd).
35
Linux
Droits et utilisateurs
Patrick FULCONIS
36
Utilisateurs et permissions
• Unix distingue 3 catégories d’utilisateurs
– User (u)
– Group (g)
– Others (o)
• User (u)
– Désigne la personne qui a créé le fichier/répertoire, c’est
le propriétaire (peut être modifié par la suite)
• Group (g)
– Désigne les membres du groupe d’utilisateurs
• prof, étudiants, … pour un établissement d’enseignement.
• direction, comptabilité, infographie, … pour une société
• Others (o)
– Désigne tous les autres utilisateurs
37
Utilisateurs et permissions
(suite)
• Unix distingue 3 types de permissions
– r : read => permission de lecture
– w : write => permission d’écriture
– x : exécution => permission d’exécution
• Visualiser les permissions sur les
fichiers/répertoires
La commande pour visualiser les permissions est : ls -l
Type Propriétaire Groupe Autres Nom Groupe Nom
U G O propriétaire fichier
d rwx r-x r-x ubuntu prof cours
- rwx rwx rwx ubuntu prof [Link]
- rwx --- --- ubuntu prof tp_unix.txt
38
Utilisateurs et permissions
(suite)
• Types de fichiers
– - : fichier normal
– d : répertoire
– b : fichier spécial – mode blocs (disquette, clé
usb, …)
– c : fichier spécial – mode caractères (ram,
imprimante, …)
– l : lien symbolique (raccourci)
– s : socket (communications entre processus ou
réseau)
– p : pipe (communications entre programmes) 39
Utilisateurs et permissions
(suite)
40
Utilisateurs et permissions
(suite)
• Sémantique des permissions
Fichier r Autorise la consultation
– Affichage
– copie
w Autorise la modification
– modification du contenu
– suppression du fichier
– changement de nom
x Autorise l’exécution
– le fichier doit être un programme
41
Utilisateurs et permissions
(suite)
• Sémantique des permissions
Répertoire r Autorise la consultation
– affichage du contenu (ls)
w Autorise la modification
– modification du nom (mv)
– ajout/suppression du contenu (rm)
– suppression du répertoire (rm)
x Autorise la traversée
– utilisation dans un chemin d’accès à une
entrée (fichier/répertoire) (cd)
42
Utilisateurs et permissions
(suite)
• Modification des droits
– La commande chmod (change mode) permet de
modifier et d’attribuer des droits.
• Syntaxe
chmod qui(u g o) quoi(+ - =) permission(r w x)
fichier/rep
a = all = ugo (chmod +r = chmod a+r = chmod ugo+r)
Exemple 1 : retirer les droits d’écriture et d’exécution pour le
groupe et les autres sur le fichier [Link]
chmod go-wx [Link]
Exemple 2 : ajouter les droits de lecture et d’écriture pour le
groupe sur le fichier tp_unix.txt
chmod g+rw tp_unix.txt 43
Utilisateurs et permissions
(suite)
• Syntaxe en forme condensée
chmod qui&quoi (3 chiffres) fichier/rep
1er chiffre : user
2ème chiffre : group
3ème chiffre : other
1 : exécution
2 : écriture
4 : lecture
Ex: chmod 764 [Link] 44
FIN
• Merci de votre attention !
45