info@mp2i-pv
Le but de ce TP est de manipuler les commandes de survie dans un shell.
Pour s’habituer à se servir de la ligne de commande, il faut au début se forcer à le faire. Entre autres : bannir tout navigateur de fichiers, regarder les pages de manuel des commandes et, si on n’a pas trouver par soi-même, demander comment effectuer une action dès qu’on en a besoin (voire utiliser les raccourcis claviers pour vos applications courantes).
Vos comptes contiennent par défaut plusieurs répertoires, dont le
répertoire Documents. Ce répertoire n’est pas local à la machine,
mais se trouve sur un serveur de
fichiers: vous le retrouverez quelle que soit la machine de TP sur
laquelle vous vous connecterez, il est donc conseillé de mettre tous
vos fichiers dans cette arborescence. (Note: d’autres répertoires sont
également partagés, mais pas votre répertoire de login.)
Comme vu en cours, l’ensemble des fichiers possède une structure
arborescente. Le point de départ de cette structure s’appelle la racine et
correspond toujours au chemin absolu /.
On peut créer un nouveau répertoire avec la commande mkdir qui prend
comme argument un chemin valide. On peut supprimer un répertoire
vide avec la commande rmdir (en lui fournissant bien entendu un
chemin valide pour le répertoire à supprimer).
exemple (rappel : le caractère $ désigne l’invite de commande):
$ ls
$ mkdir Repertoire
$ ls
Repertoire
$ mkdir Repertoire/AAA
$ ls
Repertoire
$ ls Repertoire/
AAA
$ mkdir BBB/CCC
mkdir: impossible de créer le répertoire «BBB/CCC»: Aucun fichier ou dossier de ce type
La dernière commande produit une erreur car le répertoire courant ne
contient pas de sous-répertoire BBB.
Exercice 1 :
MP2I et un répertoire MPI dans le
sous-répertoire Documents de votre répertoire
personnel (quand vous ouvrez un terminal, le répertoire courant est
par défaut votre répertoire personnel).Informatique dans votre répertoire
MP2I.mkdir) quelle option permet
de créer tout un chemin de nouveaux répertoires, et utilisez-la
pour créer le répertoire ~/Documents/MP2I/Informatique/TP/TP1 en une seule
ligne de commande (rappel : dans le shell ~ désigne le répertoire
personnel de l’utilisateur).~/Documents/MP2I/Informatique/TP/TP1 votre répertoire
courant avec la commande cd.SI dans votre répertoire courant, puis
supprimez-le.Note : Prenez l’habitude de ranger vos données et de ne pas mettre tout en vrac dans votre répertoire personnel, cela facilitera grandement votre vie quotidienne sur machine au bout d’un moment.
Exercice 2 :
Lancez la commande setxkbmap us dans votre terminal. Écrivez le
texte qwerty maintenant. À vous de trouver comment régler à nouveau
votre clavier en azerty !
Exercice 3 :
En vous aidant de sa page de manuel, trouvez ce que fait la commande
tree et l’option qui permet de limiter la profondeur d’exploration.
Exercice 4 :
La commande cp permet de copier un fichier : son premier argument
est un chemin valide désignant un fichier source et son deuxième
argument est un chemin valide désignant une destination:
/tmp.fic.cat suivi du nom du fichier (quand un fichier est long,
on peut utiliser less qui permet du défilement page par page
grâce à la barre d’espace, ou ligne à ligne grâce à la touche
Enter et aux touches flèches; on arrête le défilement avec la
touche q)Exercice 5 :
Copier le fichier fic dans un nouveau fichier
copie. Ouvrez ce nouveau fichier l’éditeur de texte emacs (voir
section Choisir son éditeur de texte ci-dessous), en
écrivant le nom de l’éditeur suivi du nom du fichier.
Vous remarquez que vous ne pouvez plus écrire de commandes dans le
terminal. Fermez votre éditeur de texte et relancez la commande
précédente en la faisant suivre du caractère & (avec ou sans espace,
mais sur la même ligne de commande) : vous pouvez maintenant relancez
une commande (essayez avec la commande ls par exemple).
La première fois, le processus lancé par votre commande était en premier plan 1, alors que la deuxième fois il était en arrière-plan 1. Le processus au premier plan dans un terminal est celui qui reçoit les informations qu’on fait passer par le terminal (c’est souvent le shell donc).
La commande ifconfig permet d’obtenir l’adresse IP de sa machine
(c’est un identifiant unique qui identifie la machine sur le
réseau). En connaissant l’adresse IP d’une machine, on peut s’y
connecter à distance avec la commande ssh (à condition que ce soit
autorisé).
Exercice 6:
Connectez-vous à la machine de votre voisin (attention:
ssh ne fait pas d’echo pour le mot de passe, rien ne s’affiche) et
affichez la date et l’heure de la machine.
La plupart des systèmes multi-utilisateurs mettent en place un système de gestion de droits. Dans les systèmes de type unix/linux, les droits sont définis pour chaque fichier (au sens large, les répertoires sont également concernés). Ils sont de trois types et appliqués à trois groupes d’utilisateurs :
types de droits : lecture (r) / écriture (w) / exécution (x)
groupes d’utilisateurs : propriétaire du fichier (u) / groupe
propriétaire (g) / autres (o)
La commande id permet de connaître l’identifiant et les groupes
auxquels appartient un utilisateur. Sans argument, elle s’applique à
l’utilisateur qui lance la commande, mais elle peut aussi prendre en
argument le login (=nom de connection) d’un utilisateur ou son
identifiant (tous les utilisateurs sont identifiés par un nombre).
La commande ls avec l’option -l permet de connaître les droits sur
un fichier; ce sont les neuf derniers caractères du premier bloc de dix
caractères :
- pour un
fichier régulier, d pour un répertoire,Chaque groupe de trois caractères est composé de la manière suivante :
r si le type
d’utilisateur possède ce droit, - sinon,w si le type
d’utilisateur possède ce droit, - sinon,x si le type
d’utilisateur possède ce droit, - sinon,Signification de ces droits :
| fichier ordinaire | répertoire | |
|---|---|---|
r |
voir le contenu (ex: cat) |
voir le contenu (ex: ls) |
w |
modifier le contenu (ex: dans un éditeur) | ajouter/supprimer des fichiers ou sous-répertoires (ex: mkdir) |
x |
exécuter (lancer comme une commande) | traverser (.../repertoire/...) |
Attention : ls -l Rep où Rep est un répertoire donnera des
renseignements sur les fichiers et sous-répertoires de Rep, pas sur
Rep lui-même. Si on veut des renseignements sur Rep, il faut
ajouter l’option -d : ls -l -d, ou, plus simplement ls -ld.
Seuls le propriétaire d’un fichier et le super-utilisateur (aussi appelé root) pour modifier les droits d’un fichier. (Notez que pour supprimer un fichier il faut les droits en écriture sur le répertoire qui contient ce fichier, indépendemment du fait qu’on soit propriétaire ou non de ce fichier ou du répertoire.)
Pour modifier les droits d’un fichier (au sens large), on utilise la
commande chmod suivi d’information sur les nouveaux droits et du nom
du ou des fichier(s) concerné(s). Il y a plusieurs façons de spécifier
les nouveaux droits, pour l’instant nous n’en verrons qu’une: on
enchaÎne, en les séparant par des virgules (sans espaces) des
spécifications du type utilisateurs/opération/droit. Par exemple :
chmod ug+r,o-wx fichier1 fichier2
signifie qu’on ajoute les droits en lecture au propriétaire et au
groupe propriétaire du fichier et qu’on enlève les droits en écriture
et exécution aux autres, pour les fichiers fichier1 et
fichier2. Ce changement est relatif aux droits précédents : si par
exemple le propriétaire du fichier avait le droit d’écriture sur le
fichier1, il le garde, s’il ne l’avait pas, il ne l’a toujours pas.
Exercice 7 :
Public dans votre répertoire personnel de
telle sorte que tout le monde puisse lister le contenu de ce
répertoire. (Testez avec votre voisin(e).)public et un fichier prive dans ce
répertoire de telle sorte que votre voisin(e) puisse voir le
contenu du fichier public et pas celui du fichier prive.Le choix d’un éditeur de texte est personnel. Pour l’instant il y a (au moins) trois éditeurs installés sur les ordinateurs du lycée :
"Entrée" (sans les
espaces, une touche à la fois, dans
l’ordre) : Esc : q !Avantages : il est probable que ces deux éditeurs perdurent encore, vous les trouverez partout et ils ont une grosse communauté d’utilisateurs irréductibles. Ils sont faciles à installer et souvent installés par défaut dans les distributions linux grand public.
Il y a sûrement des avantages à utiliser VS Code, mais si ça se trouve dans deux ou trois ans j’en mettrai un autre à la place (qui se souvient encore d’atom?)
Comment choisir un éditeur ? Il faut les tester.
Mise en garde :
vi et emacs,1: Ceci est un abus de langage, ce n’est pas le processus à proprement parlé qui est en premier-plan ou en arrière-plan, c’est la tâche à laquelle il appartient, notion qui est hors programme. Si certains veulent un complément, j’avais fait des vidéos là-dessus (complètement hors programme bien sûr et vous ne comprendrez pas tout) : https://youtu.be/Uz7wE1Zk8zU et https://youtu.be/dgqc8TLyqJE.