2. Les fichiers et les programmes

Contenu de cette section

2.1 Les fichiers : notes préliminaires

Linux a un système de fichiers---ce qui signifie ``la structure des répertoires et des fichiers qui s'y trouvent''---très similaire à celui de DOS. Les fichiers ont des noms qui obéissent à des règles spéciales, sont disposés dans des répertoires, certains sont exécutables, et parmi ceux-ci la plupart ont des options. De plus, vous pouvez utiliser les caractères ``joker'', faire des redirections et des enchaînements de commandes. Il n'y a que quelques différences mineures :

Vous pouvez maintenant vous rendre à la Section Traduire des commandes DOS vers Linux , mais, à votre place je poursuivrais la lecture.

2.2 Les liens symboliques

Unix dispose d'un type de fichier qui n'existe pas sous DOS : le lien symbolique. On peut le voir comme un pointeur sur un fichier ou sur un répertoire, et il peut être utilisé en lieu et place du fichier ou du répertoire sur lequel il pointe; cela ressemble aux raccourcis de Win 95. Des exemples de liens symboliques sont /usr/X11 qui pointe sur /usr/X11R6; /dev/modem qui pointe soit sur /dev/cua0 ou /dev/cua1. Pour créer un lien symbolique :

$ ln -s <fichier_ou_rep> <nom_du_lien>

Example :

$ ln -s /usr/doc/g77/DOC g77manual.txt

Maintenant, vous pouvez utiliser g77manual.txt au lieu de /usr/doc/g77/DOC.

2.3 Droits et propriétés

Ls fichiers et répertoires DOS ont les attributs suivants : A (archive), H (caché), R (lecture seule) et S (système). Seuls H et R ont un sens sous Linux : les fichiers cachés commençent par un point, et pour ce qui est de l'attribut R, lisez ce qui suit.

Sous Unix, un fichier a des ``droits'' et un propriétaire qui appartient à un ``groupe''. Considérez cet exemple :

$ ls -l /bin/ls
-rwxr-xr-x  1  root  bin  27281 Aug 15 1995 /bin/ls*

Le premier champ contient les droits du fichier /bin/ls, qui appartient à root et au groupe bin. Si l'on ne tient pas compte du reste de l'information (il y a le livre de Matt pour cela), souvenez-vous que -rwxr-xr-x signifie (de gauche à droite) :

- est le type du fichier (- = fichier ordinaire, d = répertoire, l = lien etc...); rwx sont les droits pour le propriétaire du fichier (r=read=lecture, w=write=écriture, x=exécution); r-x sont les droits pour le groupe auquel appartient le propriétaire (lecture, exécution); (je n'aborderai pas le concept de groupe, tant que vous serez débutant(e), vous pouvez vous en passer ;-) r-x sont les droits pour tous les autres utilisateurs (lecture, exécution).

Ceci explique vous vous ne pouvez pas effacer le fichier /bin/ls à moins d'être root : vous n'avez pas les droits pour le faire. Pour changer les droits d'un fichier, la commande est :

$ chmod <quiXdroits> <fichier>

où qui est u (user, c.à.d le propriétaire), g (groupe), o (other, les autres), X est soit + ou -, droits est r (lecture), w (écriture) ou x (exécution). Exemples :

$ chmod u+x fichier

ceci met les droits d'exécution pour le propriétaire du fichier. Raccourci : chmod +x fichier.

$ chmod go-wx fichier

ceci enlève les droits d'éciture et d'exécution pour tout le monde sauf le propriétaire.

$ chmod ugo+rwx fichier

ceci donne les droits de lecture d'écriture et d'exécution à tout le monde.

# chmod +s fichier

ceci fabrique un fichier appellé ``setuid'' ou ``suid'' --un fichier que tout le monde peut exécuter avec les privilèges de root.

( NdT.: L'auteur donne ici une explication expressément simplifiée du ``suid''. En effet, un fichier de ce type (généralement un exécutable) se comporte de la façon suivante : quelque soit l'utilisateur qui lance la commande, le processus qui lui sera associé aura comme propriétaire le propriétaire du fichier. En temps normal, c'est l'utilisateur qui lance une commande qui est propriétaire du processus associé à cette commande.... Or comme dans la plupart des cas l'utilisation du ``suid'' se fait sur des fichiers appartenant à root, l'utilisateur exécute bien ces fichiers avec les droits de root.)

Un moyen plus court pour désigner les droits est d'utiliser des nombres : rwx-xr-x peut s'écrire 755 (chaque lettre correspond à un bit : --- vaut 0, --x vaut 1, -w- vaut 2, -wxvaut 3...). Cela paraît compliqué, mais avec un peu de pratique, vous comprendrez le concept.

root, appelé également le super-utilisateur, peut changer les droits des fichiers quelque soit leur propriétaire. Il y aurait plus à en dire---LPM.

2.4 Traduire les commandes DOS vers Linux

A gauche, ls commandes DOS; à droite, leurs équivalents Linux.

COPY :          cp
DEL :           rm
MOVE :          mv
REN :           mv
TYPE :          more, less, cat

Les opérateurs de redirection et d'enchaînement de commandes : < > >> |

Les jokers : * ?

nul : /dev/null

prn, lpt1 : /dev/lp0 ou /dev/lp1; lpr

- EXEMPLES -

DOS                                     Linux
---------------------------------------------------------------------

C:\GUIDO>copy joe.txt joe.doc           $ cp joe.txt joe.doc
C:\GUIDO>copy *.* total                 $ cat * > total
C:\GUIDO>copy fractals.doc prn          $ lpr fractals.doc
C:\GUIDO>del temp                       $ rm temp
C:\GUIDO>del *.bak                      $ rm *~
C:\GUIDO>move paper.txt tmp\            $ mv paper.txt tmp/
C:\GUIDO>ren paper.txt paper.asc        $ mv paper.txt paper.asc
C:\GUIDO>print letter.txt               $ lpr letter.txt
C:\GUIDO>type letter.txt                $ more letter.txt
C:\GUIDO>type letter.txt                $ less letter.txt
C:\GUIDO>type letter.txt > nul          $ cat letter.txt > /dev/null
        n/a                             $ more *.txt *.asc
        n/a                             $ cat section*.txt | less

Notes :

2.5 Faire tourner des programmes : le multitâche et les sessions

Pour faire tourner un programme, entrez son nom comme vous le feriez sous DOS. Si le répertoire (section Répertoires ) où se trouve le programme est inclus dans le PATH (section Démarrage du système ), le programme démarrera. Attention : au contraire du DOS, sous Linux, un programme situé dans le répertoire courant ne sera pas lancé à moins que ce répertoire ne soit inclus dans le PATH. Solution : si prog est votre programme, tapez ./prog.

Voici à quoi ressemble une ligne de commande typique:

$ commande -o1 -o2 ... -on par1 par2 ... parn < entree > sortie

-o1, ..., -on sont les options de la commande, et par1, ..., parn ses paramètres. Vous pouvez spécifier plusieurs commandes sur la ligne de commande:

$ commande1 ; commande2 ; ... ; commanden

C'est à peu près tout en ce qui concerne l'exécution des programmes, mais il est aisé d'aller un peu plus loin. L'une des raisons principales d'utiliser Linux est qu'il est un système d'exploitation multitâche--il peut faire tourner plusieurs programmes (que nous appellerons processus à partir de maintenant) en même temps. De plus, Linux vous permet d'avoir plusieurs sessions : c'est comme d'avoir plein d'ordinateurs sous la main pour travailler !

2.6 Faire tourner des programmes sur des ordinateurs distants

Pour faire tourner un programme sur une machine distante dont l'adresse IP est grossebecane.distante.fr, faites :

$ telnet grossebecane.distante.fr

Après vous être connecté, démarrez votre programme favori. Il va sans dire que vous devez avoir un compte sur la machine distante.

Si vous disposez de X11, vous pouvez même faire tourner une application X sur un ordinateur distant, avec affichage sur votre écran X. Supposons que la machine X distante soit grossebecane.distante.fr et que boite.linux.locale soit votre machine Linux. Pour faire tourner un programme X résidant sur grossebecane.distante.fr à partir de boite.linux.locale, faites ce qui suit :

Et voila! Maintenant, nomdeprogramme va démarrer sur grossebecane.distante.fr et s'affichera sur votre écran. Toutefois, n'essayez pas ceci sur une liaison PPP.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre