La structure des répertoires et des fichiers sous Linux est très similaire à celle de DOSWin. Les fichiers ont des noms qui doivent obéir à certaines règles, ils sont stockés dans des répertoires, certains d'entre eux sont exécutables et parmi ceux-ci, la plupart disposent d'options. De plus, il est possible d'utiliser les caractères joker, la redirection et les pipes. Seules quelques différences mineures existent :
TROPCOUR.TXT
. Linux peut faire mieux. Si vous avez
installé Linux en utilisant un système de fichiers comme ext2 ou
umsdos, vous avez le loisir d'utiliser des noms de fichier plus longs
(jusqu'à 255 caractères), et avec 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...
NOMFIC.tar.tgz
et
nomfic.tar.gz
sont deux fichiers différents. De même, ls
est
une commande mais LS
est une erreur ;
$ # la commande suivante cree un repertoire appele "Mes vieux fichiers"
$ mkdir "Mes vieux fichiers"
$ ls
Mes vieux fichiers bin tmp
De plus, l'usage de certains caractères est à éviter : parmi eux, il y
a !*$&
.
*
»
lorsque vous faites la commande ls -F
. Par exemple :
$ ls -F
Je_suis_un_rep/ cindy.jpg cjpg* lettre_a_Joe mon_1er_script* vieux
Les fichiers cjpg*
et mon_1er_script*
sont des exécutables,
autrement dit des «programmes». Sous DOS, les copies de
sauvegarde se terminent en .BAK, alors que sous Linux elles se
terminent par une tilde «~
». De plus, un fichier
commençant par un point est considéré comme étant caché. Exemple : le
fichier .Je.suis.un.fichier.cache
ne sera pas visible à la suite
de la commande ls
;
/option
, Linux utilise -option
ou
--option. Exemple : dir /s
devient ls -R
. Remarquez
que de nombreux programmes DOS, comme PKZIP
ou ARJ
utilisent
les options dans le style d'UNIX.
À présent, vous pouvez aborder la section Traduire les commandes DOS en Linux, mais à votre place, je poursuivrais ici.
UNIX est pourvu d'un type de fichier sans équivalent sous DOS : le
lien symbolique. On peut l'imaginer comme un pointeur sur un fichier
ou un répertoire, et on peut l'utiliser en lieu et place du fichier ou
du répertoire sur lequel il pointe ; cela ressemble aux raccourcis de
Windows. Des exemples de liens symboliques sont /usr/X11
,
qui pointe sur /usr/X11R6
; /dev/modem
, qui pointe
ou bien sur /dev/ttyS0
ou bien sur /dev/ttyS1
.
Pour fabriquer un lien symbolique :
$ ln -s <fic_ou_rep> <nomdulien>
Exemple :
$ ln -s /usr/doc/g77/DOC g77manual.txt
Il est alors possible de faire référence à g77manual.txt
au lieu
de /usr/doc/g77/DOC
. Les liens apparaissent de la manière
suivante dans l'affichage du contenu des répertoires :
$ ls -F
g77manual.txt@
$ ls -l
(des choses et d'autres...) g77manual.txt -> /usr/doc/g77/DOC
Sous DOS, les fichiers et les répertoires disposent des attributs suivants : A (archive), H (caché : hidden), R (lecture seule : read-only) et S (système). Seuls H et R ont un sens sous Linux : les fichiers cachés sont ceux qui commencent par un point, et pour ce qui est de l'attribut R, lisez ce qui suit.
Sous UNIX un fichier possède des «droits d'accès» et un propriétaire, qui, à son tour, fait partie d'un «groupe». Regardez cet exemple :
$ ls -l /bin/ls
-rwxr-xr-x 1 root bin 27281 Aug 15 1995 /bin/ls*
Le premier champ contient les droits d'accès au fichier
/bin/ls
, qui appartient à root et au groupe bin. En laissant
de côté le reste de l'information, souvenez-vous que la signification
de -rwxr-xr-x
, de gauche à droite, est :
-
est le type de fichier (-
= fichier ordinaire, d
= répertoire :
directory, l = lien etc.) ;
rwx
sont les droits d'accès pour le propriétaire du fichier
(lecture : read, écriture : write, exécution) ;
r-x
sont les droits d'accès pour le groupe auquel appartient le
propriétaire du fichier (lecture, exécution) ; (je n'aborderai pas le
concept de groupe, vous n'en avez pas besoin pour survivre, tant que
vous êtes débutant ;-) r-x
sont les droits d'accès pour tous les
autres utilisateurs (lecture, exécution).
Le répertoire /bin
dispose lui aussi de droits d'accès : cf.
Droits d'accès aux répertoires pour plus d'informations. C'est la raison pour laquelle
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'accès d'un fichier, la commande est :
$ chmod <quiXperm> <fic>
où qui
peut être u
(utilisateur, ou propriétaire), g
(groupe) o
(autres, other), X
vaut +
ou -
, et
perm
est à choisir parmi r
(lecture, read), w
(écriture, write) ou x
(exécution). Les usages courants pour
chmod
sont les suivants :
$ chmod +x fichier
cela positionne le droit d'exécution pour le fichier.
$ chmod go-rw fichier
cela enlève les droits de lecture et d'écriture pour tous excepté le propriétaire.
$ chmod ugo+rwx fichier
cela donne les droits de lecture, d'écriture et d'exécution à tout le monde.
# chmod +s fichier
cela fabrique un fichier de type «setuid» ou «suid» -- un fichier que tout un chacun peut exécuter avec les privilèges de son propriétaire. Typiquement, vous rencontrerez des fichiers suid appartenant à root ; souvent, il s'agit de fichiers système importants, comme le serveur X.
Un moyen plus court de faire référence aux droits d'accès est
d'utiliser les chiffres : rwxr-xr-x
peut être exprimé comme 755
(chaque lettre correspond à un bit : --- vaut 0, --x
vaut 1, -w-
vaut 2, -wx
vaut 3 etc.). Cela peut sembler
difficile, mais avec un peu de pratique, vous comprendrez le
concept. root
, en tant que super-utilisateur, a la
possibilité de changer les droits d'accès de quiconque. LPM.
À gauche, les commandes DOS, à droite, leurs correspondants Linux.
ATTRIB: chmod
COPY: cp
DEL: rm
MOVE: mv
REN: mv
TYPE: more, less, cat
Les redirections et la tuyauterie : <>>> |
Les jokers : * ?
nul: /dev/null
prn, lpt1: /dev/lp0 ou /dev/lp1; lpr
DOS Linux
---------------------------------------------------------------------
C:\GUIDO>ATTRIB +R FIC.TXT $ chmod 400 fic.txt
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 PAPIER.TXT TMP\ $ mv papier.txt tmp/
C:\GUIDO>REN PAPIER.TXT PAPIER.ASC $ mv papier.txt papier.asc
C:\GUIDO>PRINT LETTRE.TXT $ lpr lettre.txt
C:\GUIDO>TYPE LETTRE.TXT $ more lettre.txt
C:\GUIDO>TYPE LETTRE.TXT $ less lettre.txt
C:\GUIDO>TYPE LETTRE.TXT> NUL $ cat lettre.txt> /dev/null
n/a $ more *.txt *.asc
n/a $ cat section*.txt | less
Notes:
*
est plus malin sous Linux : *
désigne tous les
fichiers, sauf ceux qui sont cachés ; .*
désigne tous les
fichiers cachés (mais également le répertoire courant
«.
» et son répertoire parent «..
» :
attention !) ; *.*
ne désigne que les fichiers qui contiennent,
ou qui se terminent par un «.
» ; p*r
désigne
aussi bien «papier» que «plier» ; *c*
désigne aussi bien «ici» que «pacha» ;
more
, tapez <ESPACE> pour
parcourir le fichier, et «q» pour quitter. less
est
plus intuitif et vous permet d'employer les flèches ;
UNDELETE
n'existe pas, alors pensez-y à deux fois avant
d'effacer quoi que ce soit ;
< > >>
du DOS, Linux dispose de
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]*
désigne les fichiers commençant par a, b ou c ;
*[I-N1-3]
désigne les fichiers se terminant par I, J, K, L, M,
N, 1, 2, ou 3 ;
lpr
<fic> imprime un fichier en tâche de fond. Pour
vérifier l'état de la file d'impressions, utilisez lpq
; pour
retirer un fichier de la file, utilisez lprm
;
RENAME
identique à celui du DOS ; en
fait, mv *.xxx *.yyy
ne marchera pas. Un commande du type REN est
disponible à l'adresse
ftp://sunsite.unc.edu/pub/Linux/utils/file;
cp -i
et mv -i
pour être averti lorsqu'un
fichier est sur le point d'être écrasé.
Pour lancer un programme, entrez son nom comme vous le feriez sous DOS. Si le répertoire (cf. section Utilisation des répertoires) où se trouve le programme est inclus dans le PATH (cf. section Fichiers d'initialisation du système), le programme démarrera. Une exception : contrairement au DOS, sous Linux, un programme situé dans le répertoire courant ne s'exécutera pas à moins que ce répertoire ne soit inclus dans le PATH. Escamotage
NdT. : En français dans le texte.: si
prog
est votre programme, tapez ./prog
.Voici à quoi ressemble une ligne de commande typique :
$ commande [-o1 [-o2] ... [-on]] [arg1 [arg2] ... [argn]] [< entree] [> sortie]
où -o1
,...,-on
sont les options de la commande et
arg1
,...,argn
sont les arguments de la commande. Il est
possible de spécifier plusieurs commandes sur une seule ligne :
$ commande1 ; commande2 ; ... ; commanden
C'est tout au sujet de l'exécution des commandes, mais on peut facilement faire un pas de plus. L'une des principales motivations pour l'utilisation de Linux est qu'il s'agit d'un système d'exploitation multi-tâches -- il est capable de faire tourner plusieurs programmes (qu'on appellera des processus) en même temps. Vous pouvez lancer des processus en arrière-plan et continuer à travailler dans la foulée. De plus, Linux vous permet d'avoir plusieurs sessions : c'est comme si on travaillait sur plusieurs ordinateurs à la fois !
su -
<nomdelogin>
. Par exemple : su - root
. Cela peut être
utile pour effectuer une tâche que seul root peut accomplir, par
exemple.
exit
. S'il reste des jobs
arrêtés (cf. plus loin) vous en serez averti.
$ nomduprog [-options] [arguments] [< entree] [> sortie] &
[1] 123
Le shell associe un numéro de job au processus (ex. : [1]
;
cf. plus loin), ainsi qu'un PID (Process Identification
Numbernuméro d'identification du processus) ; 123 dans notre exemple).
ps ax
. Cela
affichera la liste des processus qui tournent actuellement.
kill
<PID>
. Vous pouvez être obligé de tuer un processus lorsque
vous ne savez pas comment le quitter proprement... À moins
d'être root, il vous est impossible de tuer les processus d'autres
personnes. Quelquefois, un processus ne pourra être tué qu'en faisant
kill -SIGKILL <PID>
.
De plus, le shell vous permet d'arrêter ou de suspendre temporairement
un processus, de l'envoyer en arrière-plan ou de le remettre au
premier plan. Dans ce contexte, les processus sont appelés
«jobs».
jobs
. Dans ce cas,
les jobs sont identifiés par leur numéro de job, et non pas par leur
PID.
bg
<%job>
(il devient alors un job).
fg
<%job>
. Pour ramener au premier plan le dernier job envoyé en
arrière-plan, il suffit de taper fg
.
kill <%job>
, où <job>peut être 1, 2, 3,...
À l'aide de ces commandes, vous pouvez formater un disque, compresser une flopée de fichiers, compiler un programme, et décompresser et archiver le tout, tout cela en même temps, tout en gardant la main. Essayez-donc de faire cela avec Windows, rien que pour voir la différence de performance (si ça ne plante pas, bien sûr).
Pour lancer un programme sur une machine distante dont le nom est
machine.distante.edu
, il suffit de faire :
$ telnet machine.distante.edu
Après vous être connecté, démarrez votre programme préféré. Cela va sans dire, vous devez avoir un compte utilisateur sur la machine distante.
Si vous disposez de X11, il vous est même possible de faire tourner une
application X sur une machine distante dont l'affichage se fera sur
votre écran X. Soit machine.distante.edu
la machine distante
disposant de X, et machine.locale.linux
votre machine Linux. Pour
faire tourner à partir de machine.locale.linux
une application X
résidant sur machine.distante.edu
, il faut faire ce qui suit :
xterm
ou ses équivalents, et tapez :
$ xhost +machine.distante.edu
$ telnet machine.distante.edu
remote:$ DISPLAY=machine.locale.linux:0.0
remote:$ nomduprogramme &
(au lieu de DISPLAY...
, il se peut que vous ayez à taper
setenv DISPLAY machine.locale.linux:0.0
. Cela dépend du shell
distant.)
Et voila ! nomduprogramme
va maintenant démarrer sur
machine.distante.edu
et ses affichages se feront sur votre
machine. Toutefois, il est inutile d'essayer de le faire par modem, ce
serait trop lent pour être utilisable. De plus il s'agit d'une méthode
fruste et non sécurisée : veuillez vous reporter au «Remote X Apps
mini-HOWTO» disponible à l'adresse
http://sunsite.unc.edu/LDP/HOWTO/mini/Remote-X-Apps.