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 :
SUFFITPA.TXT
. Sous Linux, on peut faire mieux. Si vous avez
installé Linux en utilisant un système de fichiers
comme ext2 ou umsdos, vous pouvez utiliser des noms de fichiers plus
longs (jusqu'a 255 caractères), et qui comportent plus d'un
point : par exemple Ceci_est.un.TRES_long.nom.de.fichier
. Veuillez
noter que j'ai utilisé aussi bien des majuscules que des
minuscules : en fait...
NOMDEFICHIER.tar.gz
et nomdefichier.tar.gz
sont deux
fichiers différents. ls
est une commande, LS
est une erreur;
*
' lorsque vous faites la commande ls -F
.
Par exemple :
$ ls -F
lettre_a_Joe cindy.jpg cjpg* Je_suis_un_repertoire/ mon_1er_script* old~
Les fichiers cjpg*
et mon_1er_script*
sont
exécutables--- des ``programmes''. Sous DOS, des fichiers de
sauvegarde se terminent par .BAK, alors que sous Linux, ils se
terminent par une tilde '~
'. En outre, un fichier dont le
nom commence par un point est considéré comme
caché. Exemple : le fichier .Je.suis.un.fichier.cache
ne
figurera pas dans la sortie de la commande ls
;
/option
, sous Linux il s'agit de
-option
ou --option
. Exemple : dir /s
devient ls
-R
. Remarquez quee de nombreux programmes DOS, comme PKZIP
ou
ARJ
, utilisent les options à la manière d'Unix.
Vous pouvez maintenant vous rendre à la Section Traduire des commandes DOS vers Linux , mais, à votre place je poursuivrais la lecture.
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
.
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, -wx
vaut 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.
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 :
more
, appuyez sur ESPACE pour
parcourir le fichier, 'q' ou CTRL-C pour quitter. less
est plus
intuitif et vous permet d'utiliser les flêches;
UNDELETE
alors réflechissez-y
à deux fois avant d'effacer quoi que ce soit.
< > >>
du DOS, Linux connaît
2>
pour rediriger les messages d'erreur (stderr); de plus,
2>&1
redirige stderr vers stdout, alors que
1>&2
redirige stdout vers stderr;
[]
. Utilisation : [abc]*
correspond à tous les
fichiers commençant par a, b, c; *[I-N,1,2,3]
correspond
aux fichiers se terminant par I,J,K,L,M,N,1,2,3;
RENAME
identique à celui du DOS; en
fait, mv
*.xxx *.yyy ne marchera pas;
cp -i
et mv -i
pour être averti(e)
lorsqu'un fichier est sur le point d'être écrasé.
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
où -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 !
$ ALT-F1 ... ALT-F6
$ su - <nom de login>
Exemple :
$ su - root
Ceci est utile, par exemple, lorsque vous avez besoin de monter une
disquette (section
Les disquettes
) :
$ exit
S'il y a des jobs arretés (lire plus loin), vous serez averti(e).
$ nomdeprogramme [-options] [parametres] [< entree] [> sortie]
&
' à la fin de la ligne de commande
:
$ nomdeprogramme [-options] [parametres] [< entree] [> sortie]
[1] 123
le shell identifie le processus à un numéro de job
(ex. [1]
; cf. ci-dessous), et à un PID (123 dans notre exemple).
$ ps -a
Ceci affichera une liste des processus en train de tourner.
$ kill <PID>
Vous pourrez avoir besoin de tuer un processus lorsque vous ne savez
pas comment le quitter proprement... ;-). Parfois, un processus ne
pourra être tué qu'en faisant ceci :
$ kill -15 <PID>
$ kill -9 <PID>
En plus de ceci, le shell vous permet d'arrêter ou de suspendre
temporairement un processus, d'envoyer un processus en
arrière-plan et d'amener un processus de l'arrière-plan
vers le premier plan. Dans ce contexte, les processus sont
appellés des ``jobs''.
$ jobs
ici, les jobs sont identifiés par leur numéro de job, et
non par leur PID.
$ CTRL-C
$ CTRL-Z
$ bg <job>
$ fg <job>
$ kill <%job>
ou <job> peut être 1, 2, 3, ... A l'aide de ces
commandes, vous pouvez formatter un disque, compresser un lot de
fichiers, compiler un programme, décompresser et archiver tout
à la fois tout en gardant une invite
à votre disposition. Essayez de faire ceci avec DOS ! Et
essayez avec Windows, rien que pour voir la différence de performance.
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 :
xterm
ou un
émulateur de terminal équivalent, et tapez :
$ xhost + grossebecane.distante.fr
$ telnet grossebecane.distante.fr
grossebecane:$ DISPLAY=boite.linux.locale:0.0
grossebecane:$ nomdeprogramme &
( au lieu de DISPLAY...
, vous pourriez avoir à
écrire setenv DISPLAY boite.linux.locale:0.0
. Cela
dépend du shell distant. )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