Là, le jeu devient coriace. Apprenez ça, et ensuite vous pourrez dire que vous « connaissez quelque chose à Linux » ;-)
Les fichiers et les répertoires ont des droits et des propriétaires, comme sous VMS. Si nous ne pouvez pas lancer un programme, ne pouvez pas modifier un fichier ou ne pouvez pas accéder à un répertoire, c'est parce vous n'avez pas les droits adéquats pour le faire et/ou parce que le fichier ne vous appartient pas. Regardez l'exemple suivant :
$ ls -l /bin/ls
-rwxr-xr-x 1 root bin 27281 Aug 15 1995 /bin/ls*
Le premier champ indique les droits du fichier ls
. Il y a trois types de
propriété : le propriétaire, le groupe et les autres (comme le
propriétaire, le groupe et le reste du monde sous VMS) et trois droits :
lecture, écriture et exécution.
De gauche à droite, -
est le type du fichier (-
désigne un fichier
ordinaire,
d
un répertoire, l
un lien, etc.) ; rwx
sont les droits du
propriétaire (lecture, écriture, exécution) ; r-x
sont les droits du
groupe du propriétaire (lecture, exécution) ; r-x
sont les droits pour
tous les autres utilisateurs (lecture, écriture).
Pour changer les droits d'un fichier :
$ chmod <quiXdroit> <fichier>
Avec qui représentant u
(ce sont alors les droits du propriétaire
qui sont affectés), g
(ceux du groupe) ou o
(ceux des « autres
»). X est soit +
(dans ce cas il donne les droits), soit -
(il
les enlève). Et droit est r
, w
ou x
. Voici un exemple :
$ chmod u+x fichier
Cela permet de rendre le fichier exécutable pour le propriétaire. Il existe un
petit raccourci chmod +x fichier
.
$ chmod go-wx fichier
Là, on enlève les droits d'écriture et d'exécution au groupe et aux autres (donc à tout le monde sauf au propriétaire).
$ chmod ugo+rwx fichier
Tous les droits sont donnés à tout le monde.
Une manière plus courte de préciser les droits se base sur les nombres :
rwxr-xr-x
peut être exprimé par 755 (chaque lettre correspond à un bit :
---
vaut 0, --x
1, -w-
2, etc).
Pour un répertoire, rx
signifie que vous pouvez vous placer dans ce
répertoire et w
que vous pouvez effacer un fichier dans ce répertoire (en
tenant compte des droits du fichier évidemment) ou le répertoire lui-même. Tout
ça n'est qu'une petit partie du sujet : man est votre ami.
Pour changer le propriétaire d'un fichier :
$ chown <utilisateur> <fichier>
Pour résumer, voici un tableau :
VMS Linux
------------------------------------------------------------------------------
SET PROT=(O:RW) fichier.txt $ chmod u+rw fichier.txt
$ chmod 600 fichier.txt
SET PROT=(O:RWED,W) fichier $ chmod u+rwx fichier
$ chmod 700 fichier
SET PROT=(O:RWED,W:RE) fichier $ chmod 755 fichier
SET PROT=(O:RW,G:RW,W) fichier $ chmod 660 fichier
SET FILE/OWNER_UIC=JOE fichier $ chown joe fichier
SET DIR/OWNER_UIC=JOE [.dir] $ chown joe rep/
En voici plus à propos de la manière de lancer les programmes. Il n'y a pas de file d'attente sous Linux ; le multitâche est géré très différemment. Voici à quoi ressemble une ligne de commande typique :
$ commande -s1 -s2 ... -sn par1 par2 ... parn < entrée > sortie &
Maintenant, voyons comment marche le multitâche. Les programmes qui tournent en avant-plan (foreground) ou arrière-plan (background) sont appelés des processus.
$ programme [option] [< entrée] [> sortie] &
[1] 234
Le shell vous donne le numéro de job (le premier nombre ; regardez
ci-dessus) et le PID (le numéro du processus). Chaque processus est identifié
par son PID.
Pour voir combien de processus sont lancés :
$ ps -ax
La liste des processus actifs va être affichée.
$ kill <PID>
Vous aurez peut-être besoin de tuer un processus quand vous ne savez pas le
quitter de la bonne manière... ;-) Parfois, une processus sera seulement tué
par une des commandes suivantes :
$ kill -15 <PID>
$ kill -9 <PID>
En plus de ça, le shell vous permet de stopper ou de suspendre temporairement
un processus, envoyer un processus en arrière-plan ou en ramener un en
avant-plan. Dans ce contexte, les processus sont appelées jobs
.
$ jobs
Les jobs sont identifés par le nombre que le shell leur donne et non pas
par leur PID.
$ bg <job>
$ fg <job>
$ kill %<job>
Voici plus d'information sur les fichiers.
<
et >
vous redirigez l'entrée et la sortie vers
un fichier différent. De plus, >>
ajoute la sortie à un fichier à la
place de l'écraser ; 2>
redirige les messages d'erreur (stderr) ;
2>&1 redirige stderr vers stdout, alors que 1>&2
redirige stdout vers stderr. Il y a un « trou noir » appelé /dev/null
: tout ce qui est redirigez vers lui disparaît.
*
correspond à (et désigne) tous
les fichiers sauf ceux qui sont cachés ; .*
correspond à tous les fichiers
cachés ; *.*
correspond seulement ceux qui ont un « . » au
milieu de leur nom suivi par d'autres caractères ; l*c
correspondra à
« loïc » et « luc » ; *c*
correspondra à
« piocher » et « picorer ». %
devient ?
.
Il existe également un autre joker : []
. Par exemple :
[abc]*
désigne les fichiers commençant par a, b ou c ;
*[I-N123]
désigne les fichier finissant par I, J, K, L, M, N, 1, 2 ou 3.
mv
(RENAME
) ne permet pas de renommer plusieurs fichiers d'un
coup. Ainsi, mv *.xxx *.yyy
ne marchera pas.
cp -i
et mv -i
pour être prévenu quand
un fichier va être écrasé.
Vos fichiers à imprimer sont placés dans une file comme sous VMS. Quand vous lancez une commande d'impression, vous aurez peut-être à préciser le nom de l'imprimante. Par exemple
$ lpr fichier.txt # ce fichier est placé dans la file de l'imprimante standard
$ lpr -Plaser fichier.ps # celui dans celle de l'imprimante « laser »
Pour gérer la file d'impression utilisez les commandes suivantes :
VMS Linux
------------------------------------------------------------------------------
$ PRINT fichier.ps $ lpr fichier.ps
$ PRINT/QUEUE=laser fichier.ps $ lpr -Plaser fichier.ps
$ SHOW QUEUE $ lpq
$ SHOW QUEUE/QUEUE=laser $ lpq -Plaser
$ STOP/QUEUE $ lprm <numéro de job>