P96 Etats
P96 Bébés
P96 Infirmières
P96-Cat-1
P96-Cat-2
 
Thème 1
Thème 2
Thème 3
Thème 4
Thème 5
Sommaire
Séance 6
Thème 7
Thème 8
Thème 9
Thème 10
 



 

Unix

Le système d'exploitation Unix

La particularitéd'Unix par rapport à Windows ou Mac OS est qu'il est muni d'interprètes de commandes (ou shells) fonctionnant en mode texte.
 

Le système de fichiers d'Unix

Les fichiers Unix sont organisés selon une arborescence, un système qui est à peu près le même que celui des macs ou des PC. Les fichiers ordinaires sont les feuilles de l'arborescence, dont les répertoires (ou directories) sont les noeuds.

La différence avec les macs ou les PC (sous windows) est que vous ne disposez que d'une interface texte pour voir tout ça.
Pour se situer et se déplacer, on utilisera donc les commandes suivantes au lieu de cliquer dans des valises :

ls
Lister le contenu du répertoire courant.
cd dir
Aller en dir.
mkdir dir
Créer le répertoire dir.
touch name
Créer un fichier vide de nom name.
Un fichier (ou un répertoire, les répertoire sont des fichiers) peut être repéré de façon absolue ou relative. La commande pwd donne le répertoire courant de façon absolue.

La commande ls répond en termes relatifs, c'est à dire que les fichiers qu'elle liste ne sont pas précédés de ``/'' et sont
 

Commandes de fichiers

cp name1 name2
Copier le contenu du fichier de nom name1 dans le fichier de nom name2. Si name2 est un nom de répertoire, alors la cible est un fichier qui a le même nom de base que name1 et situé dans name2.
mv name1 name2
Changer le nom du fichier name1 en name2. Néanmoins, si name2 est un nom de répertoire, alors la cible est comme pour la commande cp.
rm name...
Effacer tous les fichiers donnés en argument.
rmdir name...
Effacer tous les répertoires donnés en argument, ces répertoires doivent être vides.
Les commandes cp et rm n'agissent pas directement sur les répertoires. Pour ce faire, il faut leur donner l'option ``-r''. L'effet est alors de copier ou d'effacer un répertoire et son contenu.
more name...
Visionner les fichiers donnés en arguments, page par page. On passe à la page suivante par la barre d'espacement et on quitte prématurément par ``q'' (Il y a d'autres sous-commandes, taper ``?'' pour l'aide).
cat name...
Afficher en une seule fois le contenu des fichiers donnés en arguments. La commande cat est souvent utilisée avec un seul argument pour voir rapidement le contenu d'un fichier court.

Droits des fichiers

Les fichiers ont des droits, ces droits sont de trois sortes, lecture (r), écriture (w) et exécution (x) ; et ils concernent quatre catégories de personnes, l'utilisateur propriétaire du fichier (u), le groupe propriétaire du fichier (g), les autres (o) et tout le monde (a). On visionne les propriétaires et droits d'un fichier avec ls -l.

On modifie les droits par la commande chmod, on peut ajouter des droits avec ``+'' ou en enlever avec ``-''.

Par exemple, on peut autoriser lecture et exécution à tout le monde sur le fichier tempo :

% chmod a+rx tempo
% ls -l tempo
-rwxrwxr-x   1 544   everyone            0 Oct 12 21:45 tempo

Motifs

L'interpréteur de commande (le ``shell'') interprète certains caractères comme des motifs opérant sur les noms de fichiers :
*
Représente n'importe quelle suite de caractères (sauf ``.'' en tête et ``/'').
?
Représente n'importe quel caractère (sauf ``.'' en tête et ``/'').
[...]
Représente un caractère pris dans ``...'', où ``...'' peut être une suite de caractères ou d'intervalles de la forme ``c1-c2''.
[^...]
Représente un caractère qui n'est pas pris dans ``...''.
Considérons un répertoire qui contient les fichiers suivants :
% ls
a       aa      ab      ac      ad      b       c      d
On liste facilement les fichiers dont le nom se compose d'un seul caractère :
% ls ?
a  b  c  d
Ou encore les fichiers dont le nom commence par un ``a'' :
% ls a*
a   aa  ab  ac  ad
Ou enfin les fichiers qui ne commencent ni par ``a'', ni par ``b'', ni par ``c'' :
% ls [^a-c]*
d

Redirections


Unix permet de rediriger le résultat des commandes dans un fichier à l'aide du caractère ``>'' :

> name
Rediriger la sortie vers le fichier name. Le fichier name ne doit pas exister et est créé.
>> name
Rediriger la sortie vers le fichier name. Si name existe déjà, la sortie est ajoutée en fin de fichier.
On aura donc par exemple :
% ls
a  b  c  d

% ls > liste
% ls > liste
liste: File exists.
% ls >> liste
% cat liste
a
b
c
d
liste
a
b
c
d
liste
La commande cat sans arguments lit son entrée sur le clavier. On peut ainsi créer un fichier non-vide :
% cat > tempo
Une ligne     
Encore une
On termine l'entrée en tapant Control-d
% cat tempo
Une ligne
Encore une
On termine l'entrée en tapant Control-d
 

Filtres et pipes

Les commandes qui lisent le clavier et affichent sur la console (on parle aussi d'entrée et de sortie standard) sont appelés des filtres. De nombreuses commandes Unix agissent comme des filtres quand on les utilise sans argument. C'est le cas de cat, mais aussi de sort (trier), wc (compter les lignes), etc. On peut rediriger l'entrée d'un filtre par ``< name''.

Par exemple, on peut trier le fichier tempo ci-dessus (l'option ``-u'' de sort évite la répétition de la même ligne dans la sortie triée) ::

% sort -u < tempo > tempo.trie
% cat tempo.trie 
Encore une
On termine l'entrée en tapant Control-d
Une ligne
Une ligne en plus
On peut ensuite compter les lignes de tempo.trie qui sont les lignes différentes de tempo par :
% wc -l < tempo.trie
      4
Une des astuces majeures d'Unix est la possibilité de connecter deux filtres cmd1 et cmd2, par ``cmd1 | cmd2''. C'est à dire que la sortie de cmd1 est l'entrée de cmd2. On peut donc, pour compter les lignes différentes de tempo, se passer du fichier tempo.trie :
% sort -u < tempo | wc -l
      4
 

 

Exercices


Exercice 1 :

Exercice 2 :


Exercice 3 :


Exercice 4 :

Lorsque l'on édite un fichier name, l'éditeur Emacs sauve de temps en temps le contenu du buffer dans un fichier name~.

Exercice 5 :