Parties
- Table des matières
- raccourcis clavier
- Raccourcis clavier du shell: touche "tab"
- Raccourcis clavier du shell: les flèches
- Raccourcis clavier du shell: "control-c"
- manipulation de fichiers
- Création d'un répertoire pour le TP
- Télécharger une archive
- Le fichier ".tar.gz"
- Désarchivage
- Désarchivage (suite)
- Décourverte du contenu du répertoire
- Analyse du type d'un fichier
- Analyse du contenu d'un fichier
- Une image
- La commande "file"
- Le ménage
- deplacement d'un fichier
- Ménage: les fichiers png
- Méta-caractère "*"
- Comprendre le "*"
- Ménage: les fichiers jpg et gif
- Ménage: suite
- opérations sur une arborescence
- Copier un repertoire
- Détruire une arboresence
- processus
- Processus
- Liste des processus
- Tuer un processus
- Tuer un autre processus
- Tuer son propre bash
- chemins
- Chemins
- Chemins
- Chemins
- Chemins
- Chemins
- chemins relatifs à partir de répertoires différents
- chemins relatifs à partir de répertoires différents -2
- chemins relatifs à partir de répertoires différents -3
- chemins relatifs à partir de répertoires différents -4
- droits d'accès
- ls -l - proprietaire
- ls -l : groupe
- ls -l : droits
- Droits d'acces: mise en place
- droits d'accès à un fichier
- Commande ls
- Enlever des droits
- Droits d'ecriture
- Droits: le menage
- exercices divers
- Archive code source gzip
- Désarchivage
- Découverte du contenu
- La commande "wc"
- commande wc (suite)
- commande wc (suite 2)
- ls
- taille d'un fichier
- compression
- compression (suite)
- Décompression
- ls recursif
- cp et chemins relatifs
- Environement "less"
- La commande "tail"
- tail (suite)
- Le ménage
- Sondages
1. Table des matières
1.1 Table des matières
Bienvenue au TP 2.
Avez vous bien fait et fini le TP précèdent?
C'est important d'avoir bien compris les notions du TP précèdent avant de faire ce TP.
Si ce n'est pas fait, finissez d'abord le TP précèdent.
Cliquez sur "début du TP" pour commencer.
2. raccourcis clavier
2.2 Raccourcis clavier du shell: touche "tab"
Raccourcis clavier de la ligne de commande: touche "tab"
La touche tab est très pratique, elle permet de compléter automatiquement certains mots qu'on vient de commencer à écrire.
La touche tab se trouve tout à gauche de votre clavier:
On va essayer.
Ouvrez une fenêtre shell (un terminal).
Vérifiez que vous êtes bien dans votre répertoire personnel (~).
Nous voulons taper la commande "cd public_html" en s'aidant de la touche "tab".
Sans taper sur entrée, tapez "cd pu" puis appuyez sur la touche tab.
Normalement, le shell devrait compléter le mot "public_html" tout seul.
Le shell a regardé les fichiers et répertoires du répertoire courant dont le nom commençait par "pu".
Quand il y a plusieurs possibilités, le shell ne peut pas deviner laquelle il doit prendre choisir; par exemple s'il y avait à la fois "public_html" et "puriste.txt" dans le répertoire courant. Dans ce cas, vous pouvez appuyer deux fois sur "tab" pour que le shell vous indique toutes les possibilités. Ajoutez alors quelques lettres supplémentaires et re-appuyez sur "tab".
Exercice:
Essayez de taper: "less /usr/bin/evince" en tapant le minimum de lettres possibles:
Commencez par "less /u" puis appuyez sur tab.
Quand ça bloque, appuyez deux fois sur tab, rajoutez une lettre, et re-appuyez sur tab.
2.3 Raccourcis clavier du shell: les flèches
Raccourcis clavier du shell: les flèches
En utilisant les flèches du clavier, on peut réutiliser une commande qu'on a déjà tapé.
La flèche vers le haut permet de remonter dans l'historique des commandes et la flèche vers le bas permet de redescendre.
Dans un terminal, tapez plusieurs fois sur la flèche vers le haut, puis celle vers le bas, pour voir comment ça marche.
On peut ensuite changer la commande commande choisie en se déplaçant avec les flèches droite et gauche.
2.4 Raccourcis clavier du shell: "control-c"
Le raccourci "control-c" (ctrl-c) permet de tuer un processus lancé. C'est très pratique lorsqu'une commande prend trop de temps ou qu'elle est bloquée.
Nous allons essayer avec la commande "sleep". Celle-ci ne fait rien, elle attend juste un certain temps. Par exemple, "sleep 10" attend 10 secondes (regardez "man sleep").
Tapez "sleep 100", puis faites "control-c" après quelques secondes. Vous verrez que la commande s'arrête dès que vous tapez control-c (avant les 100 secondes).
Deuxième essai.
Tapez la commande "gedit". Une fenêtre s'ouvre. Revenez à la fenêtre terminal, sans fermer la nouvelle fenêtre. Vous verrez que vous n'avez plus la main. Tapez "control-c" dans la fenêtre shell. La fenêtre "gedit" disparaît. Vous l'avez tué!
3. manipulation de fichiers
3.1 manipulation de fichiers
3.2 Création d'un répertoire pour le TP
Nous allons créer un répertoire pour travailler pendant ce TP.
Au dernier TP nous avons crée un répertoire appelé "systeme".
Dans une fenêtre shell (un terminal), entrez dans ce répertoire à l'aide de la commande "cd systeme".
Quelle commande faut-il taper pour créer un répertoire appelé tp2?
(on l'a utilisé cette commande plusieurs fois au dernier TP)
3.3 Télécharger une archive
Nous allons télécharger une archive, l'enregistrer et la désarchiver. Cela nous permettra de manipuler ensuite une arborescence de fichiers.
Tout d'abord, allez dans votre répertoire personnel (cd ~) et vérifiez (ls) que vous avez bien un répertoire appelé "Téléchargements". S'il n'existe pas, créez le: "mkdir ~/Téléchargements"
Téléchargement et enregistrement
Cliquez sur
fichiers-tp2.tar.gz pour télécharger l'archive (en cas de problème, ouvre une nouvelle fenetre sur la page principale de ce cours et cliquez sur le fichier). Le navigateur va vous demander ce que vous voulez faire avec. Cliquez sur l'option "enregistrer dans un fichier" ("save to disk") puis sur le bouton "ok".
Ouvrez une fenêtre shell et tapez la commande suivante.
[dupond@r10102 ~]# ls Téléchargements
Vous devriez voir un fichier appelé "fichiers-tp2.tar.gz".
Est-ce que c'est bien le cas?
- oui : très bien, nous allons pouvoir continuer
- non : verifiez que vous avez bien fait toutes les étapes indiquées. En cas de problème demandez de l'aide à vos voisins ou à votre enseignant.
3.4 Le fichier ".tar.gz"
En cours nous avons vu différents types de fichiers et les extensions qu'ils portent habituellement.
En regardant votre cours, d'après son extension, quel est le format du fichier :
fichiers-tp2.tar.gz
- Un fichier d'archive qui a été compressé
- Un fichier d'archive simple
- un fichier texte
- un fichier compressé puis archivé
3.5 Désarchivage
Rentrez dans le sous-répertoire tp2 du répertoire systeme (commande "cd").
Quel est le chemin complet du fichier que nous avons téléchargé?
indications:
- vous utiliserez "~" pour indiquer votre répertoire personnel
- on inclura le nom de fichier "fichiers-tp2.tar.gz" dans le chemin
- ~/Téléchargements/fichiers-tp2.tar.gz : oui, c'est bien
- ~/Téléchargements : c'est presque ca. Vous avez oublié le nom du fichier
- ~/Téléchargements/ : c'est presque ca. Vous avez oublié le nom du fichier
3.6 Désarchivage (suite)
Vérifiez que vous vous trouvez bien dans le répertoire "~/systeme/tp2"
Ca se voit sur la partie en vert de l'invite de la ligne de commandes. Vous pouvez aussi utiliser la commande "pwd".
Pour désarchiver vous devez taper la commande suivante:
tar xzvf ~/Téléchargements/fichiers-tp2.tar.gz
Lors de l'exécution de la commande, vous devez voir défiler tous les noms des fichiers contenus dans l'archive.
Avec la commande "ls" vérifiez qu'il s'est bien crée un nouveau répertoire appelé "fichiers-tp2".
3.7 Décourverte du contenu du répertoire
Rentrez dans le nouveau répertoire qui a été crée (utilisez la commande "cd" avec les arguments qu'il faut).
Tapez la commande "ls" pour voir les fichiers qui s'y trouvent.
Il y en a beaucoup!
Dans les questions suivantes on va essayer de comprendre de quoi il s'agit et de faire un peu le ménage.
On va utiliser la commande "ls" avec des options particulières pour afficher les fichier par taille croissante:
tapez la commande: "ls -lSrh"
(ça fait beaucoup d'options! attention seul le "S" est en majuscule)
Vous pouvez voir la taille des fichiers sur la colonne du centre:
par exemple 1,6K ça veut dire "1,6 kilo octets"
Quel est le fichier le plus gros du répertoire?
- documentation.pdf
- sef.html
- bookmark-missing.png
- network.gif
3.8 Analyse du type d'un fichier
Analyse du type d'un fichier
On va regarder le fichier "home.png" pour essayer de comprendre de quoi il s'agit.
Regardez dans votre cours, dans la partie sur les formats de fichier (cours-2), pour savoir à quoi correspond l'extension ".png".
Il s'agit de?
- fichier multimedia: image
- fichier bureautique: document word
- fichier compressé
- fichier archive
3.9 Analyse du contenu d'un fichier
Analyse du contenu d'un fichier
D'après votre cours, s'agit-il d'un fichier texte ou binaire?
On va essayer de regarder ce qu'il y a dedans avec la commande "cat".
La commande "cat nom-de-fichier" affiche le contenu brut du fichier dans votre terminal.
Si le contenu brut du fichier est directement lisible par un être humain, c'est qu'il s'agit d'un fichier texte.
Si le contenu brut du fichier est incompréhensible, il s'agit probablement d'un fichier binaire.
Tapez la commande "cat robots.txt"
Essayez de comprendre ce qui est affiché.
C'est du texte... (en anglais).
Tapez la commande "cat home.png"
Essayez de comprendre ce qui est affiché. Dur, non?
Si votre terminal est brouillé après cette commande, fermez le et ouvrez en un autre.
Vous pouvez aussi essayer de taper à l'aveugle la commande "reset" suivie d'entrée.
3.10 Une image
Le fichier "home.png" représente une image, c'est un fichier binaire. Pour l'utiliser un éditeur de texte n'est pas très approprié. Il faut donc utiliser un logiciel spécifique.
Tapez la commande "ristretto home.png" pour visualiser cette image dans le logiciel "ristretto" de visualisation d'images.
Dans ristretto, vous pouvez agrandir l'image avec la molette de la souris.
3.11 La commande "file"
tapez les commandes suivantes et essayez de comprendre le résultat:
file robots.txt
file home.png
file home.gif
file home.jpg
file documentation.pdf
file index.html
En utilisant ces résultats, votre cours, et la commande "man file", quels sont les types de ces fichiers ?
- bien
- faux
- home.gif : image (binaire)
- home.jpg : image (binaire)
- documentation.pdf : autre binaire
- index.html : texte
- robots.txt : texte
- image.png : image (binaire)
3.12 Le ménage
Nous allons faire le ménage dans ce répertoire. Il contient beaucoup trop de fichiers.
Quelle commande faut-il taper pour créer un sous répertoire appelé "images"?
(tapez là et verifiez que le répertoire est bien crée)
3.13 deplacement d'un fichier
Reverifiez que le répertoire "images" est bien crée.
En vous inspirant du TP précèdent utilisez la commande "mv" pour déplacer le fichier "home.png" dans le répertoire "images".
(rappel de la syntaxe: "mv fichier-source répertoire-destination")
Quelle est la commande à taper?
(vérifiez dans votre terminal avant de répondre)
Après chaque opération utilisez la commande "ls" dans chaque répertoire pour vérifier que tout s'est bien passé.
- mv home.png images : oui!
3.14 Ménage: les fichiers png
Nous venons de déplacer un seul fichier avec la commande "mv".
Maintenant nous allons déplacer deux fichiers d'un coup.
Dans ce cas la syntaxe de la commande "mv" est la suivante:
"mv fichier-source1 fichier-source2 répertoire-destination"
Quelle commande faut-il taper pour déplacer le fichier "share.png" et le fichier "server.png" d'un seul coup dans le répertoire "images"?
(essayez d'abord dans votre terminal avant de répondre)
- mv share.png server.png images
3.15 Méta-caractère "*"
On veut déplacer tous les fichier dont l'extension est ".png" dans le répertoire "images".
Ça va être très long de taper le nom de tous les fichiers...
Pour aller plus vite on va utiliser la commande "mv" avec un argument contenant le méta-caractère "*".
En vous inspirant de votre cours sur le méta-caractère "*", quelle commande faut-il taper, pour déplacer en une seule fois, tous les fichiers ".png" dans le répertoire "images"?
3.16 Comprendre le "*"
On va essayer de comprendre ce que le shell a fait à la commande précédente.
Pour ça on va utiliser la commande "echo".
La commande "echo" est très simple, elle ne fait que répéter ses arguments.
Tapez la commande "echo bonjour toto" pour voir ce qui se passe.
La commande affiche "bonjour toto"... elle ne fait que répéter ce qu'elle à reçu en arguments.
Tapez la commande "echo .gif".
La commande affiche ".gif"... elle ne fait que répéter ce qu'elle à reçu en arguments.
Tapez la commande "echo *.gif".
La commande affiche une longue liste de noms de fichier se terminant par ".gif".
Comme précédemment, elle ne fait que répéter ce qu'elle à reçu en arguments. MAIS, avant d'appeler la commande "echo", le shell a remplacé "*.gif" par une liste de tous les fichiers se terminant par ".gif"
3.17 Ménage: les fichiers jpg et gif
Comme on l'a vu, la commande "mv" peut déplacer plusieurs fichier d'un coup.
La syntaxe de la commande est alors: "mv fichier-1 fichier-2 fichier-3 fichier-4 ... fichier-n répertoire-destination"
le dernier argument c'est le répertoire vers lequel on veut déplacer les fichiers.
On a vu à l'exercice précèdent que le shell remplace:
"*.jpg" par une longue liste de noms de fichier terminant par ".jpg"
"*.gif" par une longue liste de noms de fichier terminant par ".gif"
Pour obtenir une liste de tous les fichiers terminant par "*.gif" ou par "*.jpg" , il suffit de mettre une liste après l'autre (séparées par un espace): "*.jpg *.gif"
Quelle commande, faut-il taper pour déplacer, en une seule fois, tous les fichier ".jpg" et ".gif" dans le répertoire "images".
- mv .jpg .gif images
- mv *.gif *.jpg images
3.18 Ménage: suite
Voyons si vous avez bien compris.
Créez un répertoire nommé "html" et déplacez-y tous les fichiers d'extension ".html"
Regardez, avec la commande "ls", ce qui reste dans le répertoire d'origine.
Combien de fichiers est-ce qu'il y a? (on ne compte pas les répertoires)
4. opérations sur une arborescence
4.1 opérations sur une arborescence
4.2 Copier un repertoire
Revenez dans le répertoire ~/systeme/tp2
Essayez de faire une copie du répertoire fichiers-tp2 avec la commande:
"cp fichiers-tp2 copie-fichiers"
Que se passe-il?
La commande "cp" ne copie pas, par défaut, les répertoires.
Si on le lui dit pas explicitement, la commande "cp" ignore les répertoires.
Pour que "cp" copie toute une arborescence (répertoires et les fichiers et sous répertoires contenus), il faut lui dire de copier récursivement.
En regardant votre cours et le manuel de "cp", trouvez l'option de la commande "cp" qui permet de copier des répertoires.
La syntaxe de la commande cp sera alors: "cp [option] répertoire-source répertoire-destination"
Ici "[option] " c'est l'option qui permet de copier récursivement.
Quelle commande faut-il taper pour effectuer la copie du répertoire "fichiers-tp2" en "copie-fichiers"?
- cp -[ra] fichiers-tp2 copie-fichiers
4.3 Détruire une arboresence
Rentrez dans le répertoire "copie-fichiers".
Regardez le contenu (commande "ls").
Normalement vous devez y trouvez un répertoire appelé "images".
Essayez de supprimer ce répertoire en tapant "rm images".
Que se passe-il?
Comme pour la commande "cp", la commande "rm" ne fonctionne pas, par défaut, sur les répertoires.
Il faut le lui demander explicitement en utilisant une option.
On utilisera aussi une deuxième option pour éviter que "rm" ne demande une confirmation d'effacement pour chaque fichier.
La syntaxe de la commande "rm" est alors:
"rm [option-récursif] [option-pas-confirmation] nom-répertoire"
Utilisez la commande "man rm" pour trouver les bonnes options.
Quelle commande faut-il utiliser pour qu'il détruise tout le répertoire "images" sans poser de questions?
(on métra en deuxième l'option pour empêcher les questions)
- rm (-r -f|-rf|-fr) images
5. processus
5.2 Processus
Comme on l'a fait au début du TP, tapez la commande "sleep 1000" puis arrêtez-la avec "control-c".
Vous venez de créer un processus, puis vous l'avez tué.
Maintenant, tapez la commande "sleep 1000 &" et notez le numéro qui s'affiche.
(le "&" est un et-commercial, il se trouve sous la touche "1")
A quoi sert le caractère "&" dans la commande "sleep 1000&"? (regardez votre cours)
5.3 Liste des processus
Agrandissez (ou maximisez) votre fenêtre terminal pour qu'elle soit à peu près aussi grande que l'écran.
Maintenant nous allons regarder la liste de tous les processus qui tournent sur votre machine.
tapez la commande: "ps -ef"
Il y en-a beaucoup!
Regardez les commandes sur la colonne de droite pour essayer de voir si vous en reconnaissez quelques-unes ("firefox": votre navigateur web, "bash": votre shell...).
La colonne de gauche est intitule "PID" (process-identification):
ce sont les numéros d'identification de chaque processus.
On va maintenant se limiter a quelques processus intéressants.
Tapez la commande "ps" sans options.
Est-ce que vous-y retrouvez le processus "sleep" que vous avez lancé tout à l'heure?
A quoi correspond le numéro que vous avez noté en lançant la commande "sleep"?
- le numéro du processus
- le temps (en millisecondes) restant avant la fin du processus
- la place mémoire occupée par le processus
- le nombre de fois que la commande sleep à été lancé depuis l'installation de la machine
- le nombre de pepites de chocolat qu'il y a dans un paquet de cookies : Faux. Vous devez avoir faim :-) Recomptez: http://www.myhomecooking.net/chocolate-chip-cookies/images/chocolate-chip-cookies.jpg
5.4 Tuer un processus
On veut utiliser la commande "kill" pour tuer le processus "sleep" qu'on a lancé tout à l'heure.
La syntaxe de la commande "kill" est la suivante: "kill numero-du-processus"
Tapez la commande qu'il faut.
Verifiez avec la commande "ps" que vous avez bien tué ce pauvre processus.
5.5 Tuer un autre processus
On va recommencer l'opération pour un autre processus.
Tapez la commande "gedit &".
Une fenêtre s'ouvre. Sans fermer la fenêtre, revenez au terminal.
Retenez le numéro du processus. (pas le numéro entre crochets [], qui correspond à autre chose).
Maintenant tapez la commande "ps" et vérifiez que vous y trouvez bien, dans la liste, "gedit" avec son numéro de processus correspondant.
Maintenant, tuez gedit avec la commande "kill". La fenêtre doit disparaître.
5.6 Tuer son propre bash
Tapez la commande "ps".
Vous constaterez qu'il y a un processus appelé "bash".
Bash est le shell dans le quel vous travaillez. C'est le programme qui fait fonctionner la ligne de commande.
Regardez son numéro de processus sur la colonne de gauche (affiché par "ps").
Tuez le processus "bash" en tapant la commande "kill numéro-du-processus-bash"
Retapez la commande "ps". Vous constaterez que le processus "bash" est toujours la.
C'est qu'il est coriace ... il ne se laisse pas tuer aussi facilement!
Maintenant, tapez la commande "kill -9 numéro-du-processus-bash"
Votre fenêtre disparaît!
A votre avis, que s'est-il passé?
6. chemins
6.2 Chemins
On va faire quelques exercices sur les chemins.
Souvenez vous du premier cours. Un chemin est une suite de noms de répertoires séparés par des "/".
Le chemin peut se finir par un nom de fichier (c'est alors le chemin d'un fichier).
Il y a deux types de chemins:
- les chemins relatifs, qui partent de l'endroit ou vous êtes (répertoire courant)
- les chemins absolus qui commencent à la racine "/" ou bien par un raccourci "~"
Par exemple:
"/usr/include" est un chemin
absolu, qui commence à la racine du système de fichiers ("/").
Le répertoire "usr" se trouve à la racine et "include" est un sous-répertoire de "usr".
"tp1/essai.txt" est un chemin
relatif. Il indique que le répertoire courant contient un sous répertoire appelé "tp1" dans lequel il y a un fichier appelé "essai.txt"
"../public_html" est un chemin
relatif. Il indique qu'il faut remonter d'un répertoire et redescendre dans le répertoire "public_html".
(
Attention: les chemins ci-dessous n'ont rien à voir avec la figure)
Indiquez les types des chemins suivants:
- oui, très bien.
- non
- /home/bosc/image.png : chemin absolu
- systeme/tp1 : chemin relatif
- ~/dupond : chemin absolu
- /etc/password : chemin absolu
- ../image.gif : chemin relatif
6.3 Chemins

Dans ces exercices, on utilisera le raccourci "~" si nécessaire.
Supposons qu'on se trouve dans votre
répertoire personnel (~).
Quel est le chemin
absolu du fichier README.html qui se trouve dans le sous-répertoire public_html de votre répertoire personnel?
(y compris le nom du fichier)
- ~/public_html/README.html
6.4 Chemins

Dans ces exercices, on utilisera le raccourci "~" si nécessaire (important!).
Supposons qu'on se trouve dans votre
répertoire personnel (~).
Quel est le chemin
relatif du fichier README.html qui se trouve dans le sous-répertoire public_html de votre répertoire personnel?
(y compris le nom du fichier)
6.5 Chemins

Dans ces exercices, on utilisera le raccourci "~" si nécessaire.
Supposons qu'on se trouve dans le
répertoire ~/systeme
Quel est le chemin
absolu du fichier README.html qui se trouve dans le sous-répertoire public_html de votre répertoire personnel?
(y compris le nom du fichier)
- ~/public_html/README.html
6.6 Chemins

Dans ces exercices, on utilisera le raccourci "~" si nécessaire.
Supposons qu'on se trouve dans le
répertoire ~/systeme
Quel est le chemin
relatif du fichier README.html qui se trouve dans le sous-répertoire public_html de votre répertoire personnel?
(y compris le nom du fichier)
- ../public_html/README.html
6.7 chemins relatifs à partir de répertoires différents
Chemins relatifs à partir de répertoires différents
Dans les exercices suivants nous allons faire à chaque fois la même opération : lire le contenu du fichier
exemple.txt à l'aide de la commande
less.
La seule chose qui changera c'est le répertoire courant (le répertoire ou on se trouve). Nous utiliserons à chaque fois un chemin relatif. Comme un chemin relatif dépend du répertoire ou on se trouve, le chemin changera à chaque fois.
Supposons qu'on tape:
cd ~/systeme/tp2/exo2
Que faut-il ensuite taper pour lire le fichier
exemple.txt
- less exemple.txt
- less [.]/exemple[.]txt : Oui, mais le ./ est implicite. C'est plus simple d'écrire directement: less exemple.txt
6.8 chemins relatifs à partir de répertoires différents -2
Ex.2
Supposons qu'on tape:
cd ~/systeme/tp2
Que faut-il ensuite taper pour lire le fichier
exemple.txt
- less [.]/exo2/exemple[.]txt : Oui, mais le ./ est implicite. C'est plus simple d'écrire directement: less exo2/exemple.txt
- less exo2/exemple[.]txt
6.9 chemins relatifs à partir de répertoires différents -3
Ex.3
Supposons qu'on tape:
cd ~/systeme/tp2/exo1
Que faut-il ensuite taper pour lire le fichier
exemple.txt
- less ../exo2/exemple[.]txt
6.10 chemins relatifs à partir de répertoires différents -4
Ex.4
Supposons qu'on tape:
cd ~
Que faut-il ensuite taper pour lire le fichier
exemple.txt
- less systeme/tp2/exo2/exemple[.]txt
7. droits d'accès
7.2 ls -l - proprietaire
Comme nous l'avons vu en cours, on peut utiliser la commande ls avec l'option "-l" pour connaitre les droits d'accès d'un fichier.
Par exemple supposons que la commande "ls -l" affiche ceci:
-rw-r--r-- 1 toto titi 4664083 2010-08-24 17:44 exemple.txt
Quel est le nom du propriétaire de ce fichier?
7.3 ls -l : groupe
En considérant le même fichier que la question précédente:
-rw-r--r-- 1 toto titi 4664083 2010-08-24 17:44 exemple.txt
A quel groupe appartient ce fichier?
7.4 ls -l : droits
En considérant le même fichier que la question précédente:
-rw-r--r-- 1 toto titi 4664083 2010-08-24 17:44 exemple.txt
Quels affirmations sont justes?
- Les utilisateurs appartenant au groupe titi peuvent lire ce fichier
- Les utilisateurs appartenant au groupe titi peuvent modifier ce fichier
- L'utilisateur toto peut modifier ce fichier
- Un utilisateur appelé ahmed qui n'appartient pas au groupe "titi" peut lire ce fichier
- Un utilisateur appelé ahmed qui n'appartient pas au groupe "titi" peut modifier ce fichier
7.5 Droits d'acces: mise en place
Droits d'accès: mise en place
Nous allons maintenant expérimenter la manipulation des droits d'accès.
Pour cela vous devez travailler avec votre voisin.
Tapez les commandes suivantes:
chmod o+x ~
chmod o+x ~/systeme
chmod o+rx ~/systeme/tp2
A partir de maintenant, vos camarades peuvent lire le contenu de votre répertoire ~/systeme/tp2
Tapez "pwd".
Demandez à votre voisin de taper la commande:
"ls /home/usager/XXXXXXXX/systeme/tp2"
où "XXXXXXX" est votre nom de login.
Normalement, votre voisin devrait pouvoir afficher le contenu de votre répertoire sans message d'erreur.
7.6 droits d'accès à un fichier
Ouvrez un éditeur de texte, écrivez quelques mots et enregistrez le avec dans le répertoire "~/systeme/tp2" avec le nom "essai-droits.txt"
Retournez à la fenêtre terminal et vérifiez que vous vous trouvez bien dans votre répertoire "~/systeme/tp2" et que le fichier "essai-droits.txt" s'y trouve bien.
On va utiliser la commande "chmod" pour permettre à votre voisin de lire ce fichier.
Quelle commande faut-il écrire pour ajouter aux autres ("others" en anglais) le droit de lire le fichier "essai-droits.txt"?
(regardez votre cours et essayez avant de répondre)
- chmod o+r essai-droits.txt
7.7 Commande ls
La commande "ls" permet aussi d'afficher des informations détaillés sur un fichier.
Quelle commande faut-il taper pour afficher toutes les informations sur le fichier "essai-droits.txt"?
(et uniquement de ce fichier)
(regardez votre cours, ou utilisez la commande "ls --help" et cherchez "utiliser le format long d'affichage")
7.8 Enlever des droits
Demandez à votre voisin de lire le contenu de votre fichier à l'aide de la commande "less".
Quelle commande faut-il taper pour enlever le droit de lecture sur le fichier "essai-droits.txt" à la fois aux autres ("others") et à votre groupe?
essayez et verifiez en demandant à votre voisin de relire le contenu du fichier avec la commande "less".
- chmod (og|go)-r essai-droits.txt
7.9 Droits d'ecriture
Redonnez les droits de lecture aux autres ("others") sur le fichier "essai-droits.txt".
Vérifiez que votre voisin arrive bien à le lire avec la commande "less".
Demandez à votre voisin d'ouvrir votre fichier dans un éditeur de texte.
Est-ce que vôtre voisin arrive à changer le contenu? Et à l'enregistrer?
Quelle commande faut-il taper pour ajouter aux autres ("others") le droit d'écriture sur ce fichier?
( Essayez, puis demandez a votre voisin de fermer son éditeur, puis de relancer un éditeur et ouvrir votre fichier.
Vérifiez qu'il arrive bien a modifier et enregistrer. Vérifiez avec la commande "less" que le fichier a bien été modifié. )
- chmod o+w essai-droits.txt
7.10 Droits: le menage
Le ménage
On a fini d'expérimenter avec les droits d'accès.
On va donc faire le ménage dans les droits, pour éviter des problèmes par la suite.
Supprimez le fichier "essai-droits.txt"
Tapez les commandes suivantes:
chmod o-x ~
chmod o-x ~/systeme
chmod o-rx ~/systeme/tp2
8. exercices divers
8.2 Archive code source gzip
Nous allons télécharger le code source d'un programme appelé "gzip".
Comme on l'a vu en cours, le programme gzip sert à compresser des fichiers.
Ici nous allons juste regarder et manipuler les fichier de l'archive.
Vous trouverez l'archive "gzip-1.2.4.tar.gz" à l'adresse suivante
http://ftp.gnu.org/pub/gnu/gzip/
Téléchargez là.
8.3 Désarchivage
Vérifiez que le fichier gzip-1.2.4.tar.gz se trouve bien dans votre répertoire "~/Téléchargements"
Allez dans votre répertoire "~/systeme/tp2" et désarchivez-y l'archive avec la commande suivante:
"tar xzvf ~/Téléchargements/gzip-1.2.4.tar.gz"
Vérifiez qu'un répertoire nommé "gzip-1.2.4" s'est bien crée, et rentrez dedans.
Tapez la commande "ls" pour voir ce qu'il y a dedans.
8.4 Découverte du contenu
Le répertoire contient un fichier appelé README
"README" ca veut dire "lisez-moi" en anglais.
Prenez l'habitude de toujours lire les fichiers appelés README (commande "less README")
Dans le répertoire Il y a aussi plusieurs fichiers ".c" et ".h"
Quel est le type de ces fichiers?
- code source d'un programme
- fichier binaire contenant une image
- fichier compressé
- fichier source d'une page web
8.5 La commande "wc"
La commande "wc" (word count) permet d'afficher le nombre de lignes contenues dans un fichier.
Regardez la page man de "wc" (commande: "man wc")
Combien de lignes contient le fichier gzip.c ?
8.6 commande wc (suite)
Combien de mots est-ce qu'il y a dans le fichier "gzip.c"
8.7 commande wc (suite 2)
Tapez la commande "wc util.c zip.c"
Les deux premières lignes correspondent aux deux fichiers "util.c zip.c" et la dernière donne le total.
En utilisant le méta-caractère "*", combien de lignes est-ce qu'il y a au total dans tous les fichiers de type ".c"
En quelle année a été modifié le fichier gzip.c pour la dernière fois?
8.9 taille d'un fichier
Quelle est la taille (en octets) du fichier "texinfo.tex"?
8.10 compression
Comme on l'a vu en cours, la commande "gzip" permet de compresser un fichier.
Tapez la commande "gzip texinfo.tex"
Affichez le contenu du répertoire avec la commande "ls".
Est-ce que le fichier "texinfo.tex" existe encore?
Quel est son nouveau nom?
8.11 compression (suite)
Quelle est la taille du nouveau fichier?
- environ un tiers de la taille d'origine
- environ deux tiers de la taille d'origine
- environ un dixième de la taille d'origine
- la compression n'a pas beaucoup réduit la taille du fichier
8.12 Décompression
Nous allons décompresser le fichier, pour retrouver l'original:
Tapez la commande "gunzip texinfo.tex.gz"
Vérifiez que le fichier "texinfo.tex" est retourné et qu'il a la bonne taille.
8.13 ls recursif
Tapez la commande "ls -R" (le R est en majuscule!)
qu'est-ce qui se passe?
- ls affiche le répertoire courant et tous ses sous-répertoires récursivement
- ls affiche de l'information très détaillé sur le répertoire courant
- ls affiche des fichier cachés
- ls affiche n'importe quoi, il est devenu fou! : mais non... ls n'est pas fou. C'est vous qui etes fatigué :-)
8.14 cp et chemins relatifs
Vérifiez que vous êtes bien dans le répertoire "~/systeme/tp2/gzip-1.2.4"
Dans le répertoire "primos" il y a un répertoire appelé "include". Dans ce répertoire il y a un fichier appelé "errno.h".
Tout en restant dans le répertoire "~/systeme/tp2/gzip-1.2.4" (pas de commande "cd"),
quelle commande faut-il taper pour copier le fichier "errno.h" dans le répertoire "~/systeme/tp2/gzip-1.2.4" ?
Vous utiliserez des chemins relatifs pour le fichier source et pour le répertoire destination.
- cp primos/include/errno[.]h [.]
8.15 Environement "less"
La commande "less" fournit un environnement d'affichage temporaire qui disparaît lorsqu'on quitte en appuyant sur la touche "q". C'est très pratique pour jeter un coup d'oeil rapide dans un fichier texte, sans avoir à ouvrir un éditeur de texte.
On va voir quelques touches importantes.
Tapez la commande "less trees.c"
Essayez d'utiliser les différentes flèches de votre clavier pour parcourir le fichier.
Essayez d'utiliser les les touches "page-up, page-down" (Pg.Prec Pg.Suiv) pour parcourir le fichier.
Appuyez sur "q" pour quitter.
Re-tapez la commande "less trees.c"
Tapez "/include" et appuyez sur entrée.
Dans l'environnement "less" la touche "/" permet de rechercher un texte. Ici on a recherché le terme "include".
Appuyez à nouveau sur "/" suivi d'entrée. Cela vous permet d'aller à la prochaine occurrence du terme "include".
Recommencez au moins 7 fois. Puis quittez avec "q".
Combien de fois apparaît le terme "include" dans ce fichier?
8.16 La commande "tail"
Tapez la commande "tail trees.c"
En vous aidant de la commande "less", à quoi correspond l'affichage de la commande "tail trees.c"?
- Aux 10 dernieres lignes du fichier
- Aux 10 premieres lignes du fichier
- Aux 10 lignes les plus longues du fichier
- A 10 lignes correspondant à la queue principale du système d'exploitation : C'est quoi la queue principale du système d'exploitation??? La vous répondez au hasard... allez, un petit effort encore, le TP est presque fini :-)
8.17 tail (suite)
tapez les commandes suivantes:
(pensez à utiliser les fleches pour réutiliser les commandes déjà tapés)
tail -n 1 trees.c
tail -n 2 trees.c
tail -n 3 trees.c
tail -n 4 trees.c
tail -n 5 trees.c
head trees.c
head -n 1 trees.c
head -n 2 trees.c
head -n 3 trees.c
head -n 4 trees.c
A quoi sert la commande "head"?
- A afficher les premieres lignes d'un fichier
- A couper la tete d'un fichier : Allons... pauvre fichier. Il n'a rien fait pour meriter ca.
- A afficher les dernieres lignes d'un fichier.
- A rien. : Mais si! C'est une commande très utile...
8.18 Le ménage
Les concepteurs de la commande "gzip" sont un peu désordonnés.
On va faire le ménage dans leur logiciel.
Créez un répertoire appelé "sources" et déplacez y tous les fichiers ".c", ".h" et ".S"
Créez un répertoire appelé "documentation" et déplacez y tous les fichiers ".1", ".tex", ".texi", ".texinfo", ".doc" et ".info"
Créez un répertoire appelé "scripts" et déplacez y tous les fichiers ".in" sauf "configure.in" et "Makefile.in"
Combien de fichiers reste-il dans le répertoire?
8.19 Sondages
Sondages
Onglets
Cliquez avec le bouton du milieu de la souris (la molette), sur le le lien "intro-système" (en haut à gauche de cette page: "dept INFO » intro-système"). Vous devez voir un nouveau onglet apparaître dans votre navigateur.
L'utilisation de ce bouton est très pratique pour naviguer. Par exemple, dans la page des résultats d'une recherche google, vous pouvez cliquer sur plusieurs liens avec le bouton du milieu. Vous aurez plusieurs nouveaux onglets que vous pouvez visiter ensuite.
Sondages et forums
Allez dans le nouveau onglet "intro-système" et répondez aux différentes questions posées par le sondage.
Prenez l'habitude de répondre régulièrement à ces sondages. Ça nous permet de mieux adapter les enseignements à vos besoins. Prenez aussi le temps de lire et de participer aux forums de discussion. N'hésitez pas à intervenir et à poser des questions!