-
ISETNABEUL
Initiationlutilisationdusystmedexploitation
UNIXRalispar:
EliesJebri
Technologue Janvier2002
[CedocumenttraitedesaspectsrelatifslutilisationdusystmeUNIX.Ils'agitd'uneprsentationdescommandesdebasepourunutilisateur.Alafinvousaborderezquandmmelcrituredescriptsshellsouventtraitscommetantunetchedadministrationsystme.]
-
Initiation lutilisation du systme dexploitation Unix 2
Elies Jebri Janvier 2002 ISET Nabeul
-
Initiation lutilisation du systme dexploitation Unix 3
Elies Jebri Janvier 2002 ISET Nabeul
Introduction
Qu'est ce qu'un systme dexploitation?
Un systme dexploitation est un programme ou ensemble de
programmes qui permet un utilisateur daccder aux potentialits
matrielles dune machine (calculateur) sans pour autant tre tenu de
matriser les particularits dexploitation de chaque composant
physique. Un SE associ aux composants matriels de la machine
constitue un ensemble de ressources1 dont il organise et optimise
lutilisation. Lutilisateur peut accder aux ressources en se
limitant lutilisant des fonctions (primitives ou appels systme)
fournies par le SE sans avoir besoin de connatre leur
fonctionnement interne. Un SE doit offrir lutilisateur une
interface utilisateur (graphique ou non) conviviale pour exploiter
les ressources matrielles et logicielles et accder aux servies quil
attend.
Les fonctions principales En fonctionnement, un systme
dexploitation assure les fonctions principales suivantes :
la gestion des dialogues utilisateur/machine la gestion des
oprations d'entres/sorties avec les priphriques la gestion des
ressources de l'ordinateur: mmoire, disque, cran,
clavier, .. la gestion des fichiers pour permettre daccder aux
donnes selon une
organisation logique (nom , chemin, ) sans avoir recours leur
manipulation directe (adresse sur disque, organisation physique,
)
la gestion de l'excution des programmes: gestion des espaces
mmoire, cadencement et synchronisation de l'excution, ..
Les caractristiques dun SE Du point de vue utilisateur, un SE
peut tre caractris principalement par les caractres suivants :
Sa capacit grer simultanment plusieurs tches : SE mono ou
multi-tches
Sa capacit grer simultanment les requtes et services de
plusieurs utilisateurs : SE mono ou multi-utilisateurs
La facilit dutilisation quil offre (la convivialit de linterface
utilisateur, la structuration des donnes, la complexit des
procdures, )
La scurit quil offre : au niveau de lidentification des
utilisateurs ainsi quau niveau de la gestion des accs aux donnes et
aux ressources.
Le mode dexploitation quil met en uvre : traitement par lots,
temps partag ou temps rel.
Sa dpendance machine : SE ddi, SE portable ou SE ouvert.
Organisation dun SE
1 Une ressource est un lment logiciel ou matriel fondamental
(processeur, mmoire, priphrique, flux dinformations, fichier, )
-
Initiation lutilisation du systme dexploitation Unix 4
Elies Jebri Janvier 2002 ISET Nabeul
Le SE fait partie des programmes de base (couche logiciel de
base) ncessaires au fonctionnement des logiciels dapplication
(couche applications). Il peut tre organis en plusieurs couches
:
Le noyau : constitu par la couche la plus proche du matriel, il
constitue le cur du systme et comporte les mcanismes de base
Les couches suprieures : qui incluent les fonctions de plus haut
niveau (gestion de la mmoire, gestion des fichiers, )
Cas du SE Unix UNIX est un SE multi-utilsateurs et multi-tches
qui a t dvelopp en 1970 aux laboratoires BELL par Thompson et
Ritchie. Il est structur en deux couches :
le noyau : qui inclut la gestion des processus, des fichiers et
de la mmoire,
la couche utilisateur : qui inclut les interprteurs de
commandes, les diteurs, les compilateurs, ..
Le noyau crit en grande partie en langage C permet au SE UNIX
dtre portable sur une trs large gamme de machines. Dot de nombreux
outils de communications, le SE UNIX se distingue par plusieurs
particularits :
le systme de fichier : laccs toutes les donnes est ralis par le
biais dune structure logique unique,
la banalisation des E/S la standardisation de laccs aux
ressources : qui sont toutes
considres comme des fichiers, les interprteur de commandes
(shell) : qui offre une grande flexibilit
dans la manipulation des commandes, Le dialogue UNIX -
utilisateur
Le dialogue entre lutilisateur et le SE UNIX seffectue la base
travers un interprteur de commande (shell) qui utilise un terminal
(clavier + cran) comme support physique du dialogue. Ce terminal
peut tre de deux types :
Un terminal connect travers une liaison rseau ou une liaison
directe (RS232 par exemple) la machine supportant le SE
Un pseudo-terminal : dans le cas o une autre machine, dote de
son propre SE, serait utilise pour ouvrir une session sur la
machine Unix (en utilisant lmulateur de terminal telnet par
exemple) ou dans le cas o plusieurs dialogues avec le SE Unix
seraient tablis par un mme utilisateur travers une interface
graphique. Lcran physique nest alors plus totalement ddi au
dialogue et seule une partie de cet cran est rserve comme tant la
zone daffichage du pseudo-terminal. Le pseudo-teminal partage avec
les autres applications le clavier de la machine sur laquelle il
est cr.
-
Initiation lutilisation du systme dexploitation Unix 5
Elies Jebri Janvier 2002 ISET Nabeul
1. Commencer et finir une
session de travail
Avant de commencer une session de travail il faut: 1- avoir un
compte sur la machine (un nom et un mot de passe), 2- que la
machine soit en marche. Si l'une des conditions n'est pas remplie,
contactez l'administrateur du systme.
NOTE Ne mettez jamais une machine en marche vous-mme! Il peut y
avoir de bonnes raisons pour qu'elle soit arrte. Contactez
l'administrateur du systme. De mme, n'teignez jamais une machine
sans son autorisation.
Dmarrer une session de travail
Vous devez voir au bas de l'cran un message semblable au
suivant:
HOST login: Si vous ne le voyez pas, la machine n'est pas
libre(1). Entrez au clavier le nom de votre compte:
HOST login: lambda Password:
Entrez au clavier votre mot de passe (Password). Remarquez que,
pour des raisons de confidentialit videntes, le mot de passe que
vous tapez ne s'crit pas l'cran. Tapez-le sans erreur sinon la
session de travail vous sera refuse.
NOTE Sous UNIX, les majuscules et les minuscules sont des
caractres diffrents!! Si votre compte est au nom de lambda, un
login avec le nom Lambda chouera.
1 Un utilisateur imprudent a laiss la machine sans terminer sa
session, laissant ainsi tous la possibilit de regarder (ou de
modifier!!) son travail.
-
Initiation lutilisation du systme dexploitation Unix 6
Elies Jebri Janvier 2002 ISET Nabeul
Si lidentification russit, le SE procde une srie dactions
dinitialisations et lance lexcution dun interprteur de commandes
(shell) qui prendra en charge les commandes que lutilisateur
souhaitera excuter. Ainsi, si vous avez tap nom et mot de passe
sans erreur, l'cran affiche des messages votre intention et la
dernire ligne doit ressembler :
...
...
HOST% HOST% (ou HOST$) est un message dinvite, qui est
gnralement li au nom de la machine Unix, affich par linterprteur de
commandes. Il signifie que vous avez la main et que cet interprteur
attend vos commandes.
En cas d'erreur: Si vous recevez un message du genre:
Login incorrect login:
Recommencez la procdure sans erreur de frappe. En cas de
plusieurs checs, contactez l'administrateur du systme.
Changer le mot de passe
La premire fois que vous avez russi dmarrer une session, vous
l'avez fait grce au mot de passe que vous a donn l'administrateur
du systme. Vous n'tes donc pas le seul connatre le mot de passe de
votre compte! La premire chose faire est donc de le changer. Vous
serez ainsi le seul le connatre. On change le mot de passe avec la
commande passwd1.
HOST% passwd Changing password for lambda on HOST Old
password:
Entrez l'ancien mot de passe HOST% passwd Changing password for
lambda on HOST Old password: New password:
Entrez le nouveau mot de passe.
NOTE Les mots de passe doivent comporter au moins six
caractres.
HOST% passwd Changing password for lambda on HOST Old password:
New password: Retype new password:
Retapez le nouveau mot de passe pour confirmation. Si tout s'est
bien pass, c'est dire que: -l'ancien mot de passe est correct, -les
deux frappes du nouveau mot de passe ont au moins 6 caractres et
sont identiques, vous retrouvez l'ordinateur en attente d'une
commande:
HOST% Si les deux conditions prcdentes ne sont pas remplies, la
commande passwd choue et le mot de passe est inchang.
1 Dans le cas de lutilisation dun systme dinformation rseau
(NIS) il faut utiliser la commande adquate (nispasswd par
exemple)
-
Initiation lutilisation du systme dexploitation Unix 7
Elies Jebri Janvier 2002 ISET Nabeul
Terminer la session de travail
Avant de quitter l'ordinateur (mme pour quelques minutes), il
faut terminer votre session de travail l'aide de la commande exit.
Faire cette commande est indispensable! Sinon toute personne
arrivant ultrieurement pourrait excuter des commandes sous votre
compte et altrer votre travail. Aprs excution, la machine est en
attente d'une nouvelle session de travail:
HOST login:
NOTE Pour terminer plus vite on peut taper la combinaison de
touches Ctrl-D . Bien vrifier que le mot login apparat l'cran. S'il
n'apparat pas recommencez Ctrl-D jusqu' son apparition.
-
Initiation lutilisation du systme dexploitation Unix 8
Elies Jebri Janvier 2002 ISET Nabeul
2. Les fichiers sous UNIX
Qu'est ce qu'un fichier? Un fichier est un ensemble d'octets,
qui possde un nom et une adresse permettant de le dsigner et de le
retrouver (1). On distingue diffrentes sortes de fichiers:
Les fichiers de donnes (Documents) Ces fichiers conservent les
informations qui y ont t crites. Leur rle ressemble celui d'une
feuille de papier sur laquelle on a crit des informations pour les
retrouver plus tard. Comme pour la feuille de papier on peut: -crer
un nouveau fichier vide (une feuille blanche) -crire dans un
fichier : soit en crasant l'ancien contenu soit la suite de
l'ancien contenu -effacer le contenu d'un fichier -dtruire le
fichier On verra plus tard qu'UNIX permet de faire bien d'autres
oprations sur le contenu des fichiers.
Les commandes (Commands) Ces fichiers sont des programmes
excutables. Lorsqu'on donne le nom d'un de ces fichiers UNIX, il
excute le programme de cette commande. Le fichier passwd en est un
exemple.
Les priphriques (Devices) Les terminaux, les imprimantes, les
traceurs, lecteurs de disquettes, clavier, cran etc sont considrs
comme des fichiers. Par exemple, pour imprimer, on crit dans le
fichier de l'imprimante.
Les rpertoires (Directories) Ces fichiers contiennent d'autres
fichiers(2). On peut les comparer des dossiers qui contiennent des
feuilles de papier ou d'autres dossiers.
Un trou noir Il existe un fichier particulier nomm /dev/null qui
se comporte comme un trou noir: il ne contient rien et tout ce
qu'on crit dedans est perdu. Contrairement ce qu'on pourrait
croire, ce fichier est trs utile.
Le systme de fichiers Lune des particularits du SE unix rside
dans lunicit de la structure arborescente qui permet lutilisateur
daccder aux fichiers. Cette structure, dsigne par systme de
fichiers (file system), traduit lorganisation
1 En gnral, l'information contenue dans les fichiers est stocke
dans une mmoire de masse (disque dur, disquette, bande magntique).
L'un des avantages de la notion de fichier sous UNIX est que
l'utilisateur peut oublier totalement quelle est la nature du
support physique de son fichier. 2 Pouvant tre eux-mmes des
rpertoires
-
Initiation lutilisation du systme dexploitation Unix 9
Elies Jebri Janvier 2002 ISET Nabeul
logique du stockage des donnes indpendamment de leur rpartition
physique sur les diffrents supports de stockage. Il existe un
fichier partir duquel on peut atteindre tous les autres. Ce fichier
est appel racine et son nom UNIX est "/" (prononcer "slash"). Voici
un exemple d'organisation de fichiers
/
user
alpha
tex prog.pas
beta
lambda
textes{t1t2prog.pasessai
dev null
usr
On peut voir travers cet exemple que lunicit de larborescence
offre tous les utilisateurs du SE une mme image de toutes les
donnes accessibles au SE mme si leur stockage ncessite la mise en
uvre de diffrents supports : par exemple tout le contenu du fichier
(rpertoire) user peut tre stock sur un premier disque D1 alors que
le reste des fichiers est stock sur un deuxime disque D2. Le D1
peut tre directement connect la machine ou non (accs distant ou par
rseau local) sans que limage du systme de fichier ne soit
change.
Chemin daccs Le fichier essai est dsign de manire unique par:
/user/lambda/essai On peut remarquer que les utilisateurs (cad les
fichiers) alpha et lambda ont tous les deux un fichier nomm
prog.pas. Ces deux fichiers sont diffrents et ne contiennent
certainement pas la mme chose. Ces deux fichiers sont
respectivement dsigns par : /user/alpha/prog.pas
/user/lambda/prog.pas
Les chemins absolus Les chemins qui dsignent les fichiers partir
de la racine sont appels chemins absolus. On les reconnat par le
fait qu'ils commencent par un "/". Ils peuvent dsigner sans ambigut
tous les lments de l'arborescence, mais ils peuvent devenir longs
si le chemin contient beaucoup de rpertoires imbriqus. Supposons
qu'on "se trouve" au point /user/lambda Les seuls fichiers qu'on
peut voir de ce point sont: textes, prog.pas et essai. On peut donc
dsigner sans ambigut le fichier prog.pas par: prog.pas
Les chemins relatifs Les chemins qui dsignent les fichiers
partir d'un point de l'arborescence sont appels chemins relatifs.
On les reconnat au fait qu'ils ne commencent pas par un "/". Les
chemins relatifs sont plus concis, mais il faut bien savoir "o on
se trouve" (current directory). Par exemple, la chane prog.pas
dsigne le fichier /user/lambda/prog.pas si on se trouve au point
/user/lambda mais il dsigne le fichier /user/alpha/prog.pas si on
se trouve au point /user/alpha.
-
Initiation lutilisation du systme dexploitation Unix 10
Elies Jebri Janvier 2002 ISET Nabeul
Pour dsigner le fichier essai: Si vous tes: la dsignation est:
n'importe o /user/lambda/essai (absolu) / user/lambda/essai /user
lambda/essai /user/lambda essai Chaque utilisateur a son propre
rpertoire (home directory) fix par l'administrateur lors de
l'ouverture du compte, dans lequel il est plac au dbut de la
session (current directory=home directory). Par exemple
l'utilisateur lambda est plac au point /user/lambda. Il peut donc
dsigner le fichier t1 par textes/t1. Il peut dsigner le "trou noir"
par /dev/null.
Un fichier peut donc tre dsign soit par un chemin relatif, soit
par un chemin absolu. Il n'est pas ncessaire de changer de
rpertoire courant pour atteindre ou dsigner un fichier. Il suffit
de le nommer par son chemin absolu.
Quelques abrviations utiles
. (point) Le rpertoire courant (current directory)
.. (2 points) Le rpertoire contenant le rpertoire courant ?
n'importe quel caractre [abn] l'un des caractres a b ou n ([ ] :
brackets) [c-l] une lettre de c l inclus (dash within brackets) *
n'importe quelle chane de caractres {file,toto,ex} l'une des chanes
file toto ou ex ({ }: braces) Ces abrviations permettent d'abrger
les chemins et de dsigner en une seule fois plusieurs fichiers dont
les noms ont des caractristiques communes; ou de dsigner un seul
fichier sans crire totalement son nom lorsque aucune ambigut n'est
possible. Si lambda est en /user: la dsignation : est quivalente :
. (point) /user .. / ~
/user/lambda ../?ev/n* /dev/null (entre autres)
/user/lambda/textes/t? /user/lambda/textes/t1 et
/user/lambda/textes/t2
Quel est le rpertoire courant ? pwd (print working
directory)
Cette commande renvoie le chemin absolu de votre rpertoire
courant. Immdiatement aprs un login, l'utilisateur lambda aura la
rponse suivante:
HOST% pwd (lacommande) /user/lambda (la rponse) HOST% (attente
de la commande suivante)
Cette commande est trs utile lorsqu'on a chang plusieurs fois de
rpertoire courant et qu'on a oubli o on se trouve dans
l'arborescence.
-
Initiation lutilisation du systme dexploitation Unix 11
Elies Jebri Janvier 2002 ISET Nabeul
Changer de rpertoire courant cd chemin_de_rpertoire (change
directory)
Exemples:
HOST% cd /dev (chemin absolu) HOST% pwd /dev HOST% cd .. HOST%
pwd / HOST% cd (retour la maison) HOST% pwd /user/lambda HOST% cd
../alpha (un tour chez le collgue) HOST% pwd /user/alpha HOST%
Les proprits des fichiers
Chaque fichier possde un certain nombre de proprits: 1) il a un
propritaire (gnralement l'utilisateur qui l'a cr) 2) il a des
autorisations d'accs Les diffrentes autorisations sont: r
autorisation de lecture w autorisation d'criture x autorisation
d'xcution Ces autorisations peuvent tre donnes sparment u
l'utilisateur lui-mme (user) g au groupe de l'utilisateur (group) o
a tous (others) Il existe des commandes pour vrifier les
autorisations (voir plus loin ls -l) et pour les changer (voir plus
loin chmod). Le rglage de ces autorisations est important: vous
choisissez ainsi ce que les autres ont le droit de faire sur vos
fichiers.
-
Initiation lutilisation du systme dexploitation Unix 12
Elies Jebri Janvier 2002 ISET Nabeul
3. Les commandes UNIX
Syntaxe gnrale Une commande UNIX peut comprendre quatre parties:
-la dsignation de la commande -les options -les arguments de la
commande -les redirections Les trois dernires parties ne sont pas
toujours prsentes. On peut demander plusieurs commandes sur la mme
ligne condition de les sparer par un ";" (semicolon). Elles seront
excutes dans l'ordre de gauche droite
HOST% cd /user/lambda ; pwd /user/lambda HOST%
Si une commande est trop longue pour tenir sur une ligne, il
suffit de terminer la ligne par un "\" (backslash) pour dire que la
suite se trouve la ligne suivante. L'exemple ci-dessous est
quivalent au prcdent.
HOST% cd /us\ er/lambda ; pwd (commande en deux lignes)
/user/lambda (la rponse) HOST%
NOTE Les exemples donns ci-dessous utilisent des commandes qui
n'ont pas encore t tudies. Elles seront compltement dcrites dans
les chapitres suivants.
La dsignation de la commande
Comme on l'a vu, une commande est un fichier excutable. On
devrait donc la dsigner par un chemin. Il faudrait donc savoir o
elle se trouve!! Heureusement, Unix va automatiquement chercher ces
fichiers dans des rpertoires qui contiennent les commandes
standard. S'il ne trouve pas il cherche dans d'autres rpertoires.
On verra plus tard comment dire UNIX o trouver des
commandes.(1)
Les options Certaines commandes proposent des options qui
modifient le comportement de la commande. Les options commencent
par un signe - suivi d'une (ou plusieurs) lettre qui dsigne
l'option. 1 Voir plus loin les variables d'environnement
-
Initiation lutilisation du systme dexploitation Unix 13
Elies Jebri Janvier 2002 ISET Nabeul
Exemples:
HOST% ls -l l est une option de la commande ls.
HOST% cc -o toto -O2 toto.c o est une option toto est l'argument
de l'option O2 est une autre option qui ne demande pas d'argument
toto.c est l'argument de la commande cc
NOTE La description des commandes dans ce manuel est succincte.
On n'y prsente en gnral que quelques options parmi les plus utiles.
Pour en avoir une description complte, consulter soit le manuel en
ligne avec la commande man, soit la documentation de rfrence.
Les arguments de la commande
La plupart des commandes demandent un ou plusieurs arguments
pour prciser sur quoi la commande va agir. Commande un seul
argument:
HOST% ls -l /user va donner la liste des fichiers contenus dans
le rpertoire /user. Commande deux arguments:
HOST% cp fic1 fic2 va copier le fichier fic1 dans un autre
fichier fic2
Les redirections Les commandes peuvent avoir une entre standard,
une sortie standard de rsultats et une sortie standard de messages
d'erreur. Lorsquune commande a besoin de donnes pour fonctionner,
elle attend ces donnes sur son entre standard. De mme, lorsque la
commande produit un rsultat (c'est dire d'autres donnes), elle les
envoie sur sa sortie standard de rsultat. Enfin si la commande se
passe mal (mauvais arguments, manuvres non autorises etc) elle
envoie des messages sur la sortie standard d'erreur. En l'absente
de redirections, les entres et sorties standard sont dfinies comme
suit: entre standard: clavier sortie standard de rsultats: cran
sortie standard d'erreurs: cran Toutes les commandes n'utilisent
pas forcment toutes les entres et sorties. Par exemple pwd ignore
l'entre standard.
rediriger la sortie rsultats > fic ou >>fic
> fic Le fichier fic est cr s'il n'existait pas ou cras s'il
existait dj.
>>fic Le fichier fic est cr s'il n'existait pas , mais
s'il existait dj, les sorties produites par la commande seront
ajoutes la fin. Exemples:
HOST% ls /usr/lambda > liste HOST% ls /usr/lambda/textes
>> liste
La liste des fichiers du rpertoire /usr/lambda est crite dans le
fichier liste. S'il y avait prcdemment quelque chose dans liste, il
est perdu.
-
Initiation lutilisation du systme dexploitation Unix 14
Elies Jebri Janvier 2002 ISET Nabeul
La liste des fichiers du rpertoire /usr/lambda/textes est ajoute
la fin du fichier liste.
rediriger l'entre
< fic Les donnes ncessaires la commande sont lues dans fic au
lieu d'tre lus au clavier.
NOTE Seules certaines commandes acceptent une redirection de
l'entre. Ce sont gnralement celles qui traitent le contenu d'un
fichier.
rediriger la sortie d'erreur
2> fic ou 2>> fic Fonctionne comme la redirection des
rsultats. Les messages d'erreur sont crits ou ajouts au fichier
fic. Exemple:
HOST% cat toto titi > /dev/null 2> erreurs Cette commande
envoie le rsultat de la concatnation au "trou noir", mais permet en
consultant le fichier erreurs de savoir si les fichiers toto et
titi sont bien des noms de fichiers existants. En effet, pour
chaque nom de fichier incorrect la commande cat envoie un message
d'erreur.
les pipelines commande1 | commande2 La sortie standard de
commande1 est redirige vers l'entre standard de commande2 . Ainsi
les rsultats de commande1 sont directement donns en entre
commande2. Exemple: (more est une commande qui affiche page par
page le contenu d'un fichier) Les deux commandes suivantes
HOST% ls /usr/dev > liste HOST% more liste
peuvent tre remplaces par HOST% ls /usr/lambda | more
Il est vident que le pipeline ne fonctionne que si commande1
fournit un rsultat sur le fichier standard de sortie et que
commande2 attend une entre sur le fichier standard d'entre.
Exemple:
HOST% cd /user/alpha (current directory) HOST% ls /usr/lambda |
pwd /user/alpha (rsultat de pwd seulement) HOST%
Le rsultat de ls a t redirig sur l'entre standard de pwd qui
l'ignore. Le rsultat de ls est donc perdu. Les commandes qui
traitent le contenu d'un fichier en entre et crivent leur rsultat
sur en fichier en sortie sont appeles des filtres (filter).
les accents graves ` (backquotes) Toute commande incluse entre
deux "`" est d'abord excute et son rsultat lui est substitu.
Exemple: Supposons qu'un fichier nomm listefic contienne une liste
de fichiers:
HOST% cat listfic /user/lambda/textes/t1 /user/lambda/textes/t2
HOST%
Supposons qu'on veuille effacer les fichiers dont la liste est
dans listfic. Une commande du genre cat listfic | rm ne fonctionne
pas car la commande rm ne traite pas le contenu du fichier qu'on
lui donne en argument.
-
Initiation lutilisation du systme dexploitation Unix 15
Elies Jebri Janvier 2002 ISET Nabeul
La solution est la suivante:
HOST% rm `cat listfic` HOST%
la commande cat listfic est d'abord value et est remplace par
son rsultat qui est: /user/lambda/textes/t1 /user/lambda/textes/t2
La commande est donc quivalente rm /user/lambda/textes/t1
/user/lambda/textes/t2 Les "`" substituent le rsultat de la
commande dans le texte o ils sont insrs. Ils sont souvent utiliss
pour fabriquer le texte d'une commande.
Aide en ligne man nom_de_commande Cette commande crit sur la
sortie standard une description complte de la
commande (son effet, sa syntaxe, la liste exhaustive de ses
options).
man -k mot_cl Cette commande fournit une liste des commandes en
rapport avec le mot cl dsign. Elle est utile lorsqu'on veut de
l'aide sur une commande dont on ne connat pas le nom.
apropos mot_cl Equivalent man -k.
whatis commande Donne une description succincte de la
commande.
-
Initiation lutilisation du systme dexploitation Unix 16
Elies Jebri Janvier 2002 ISET Nabeul
4. Manipulation des fichiers
Les manipulations de fichier sont des manuvres quotidiennes lors
qu'on travaille sur un ordinateur. En effet, toutes les donnes
qu'on manipule sont dans des fichiers. Il est donc important de
bien matriser ces commandes.
NOTE Les commandes voques dans ce cours comportent souvent un
grand nombre d'options. On se contente ici d'voquer les
principales. Pour la description complte de toutes les options le
lecteur est pri de se reporter la documentation officielle.
Lister un rpertoire Les listes fournies par ls sont par ordre
alphabtique par dfaut
ls Donne la liste des fichiers du rpertoire courant HOST% cd
textes HOST% ls t1 t2 HOST%
ls rpertoire Donne la liste des fichiers du rpertoire dsign
HOST% ls /user/lambda essai prog.pas textes HOST%
ls fichier Donne la liste des fichiers dont le nom correspond
fichier HOST% ls /user/lambda/*a* essai prog.pas HOST%
ls -l fichier_ou_rep Donne des renseignements complets sur
chaque fichier HOST% ls -l /user/lambda -rwxr--r-- 0 lambda 855 Apr
15 15:02 essai -rwxr--r-- 0 lambda 351 Jul 16 18:33 prog.pas
drwxr-xr-x 0 lambda 1024 Jun 29 09:44 textes HOST%
Les lettres de la premire colonne prcisent les autorisations
d'accs:
d-
utilisateurr-
w-
x-
grouper-
w-
x-
autresr-
w-
x-
La premire lettre (d ou -) indique si le fichier est un
rpertoire, Les trois suivantes indiquent les autorisations de
l'utilisateur (propritaire) Les trois suivantes indiquent les
autorisations du groupe Les trois dernires indiquent les
autorisations de tout le monde Ces autorisations peuvent tre
changes avec la commande chmod.
NOTE Donner le droit d'xcution un rpertoire signifie donner le
droit de l'ouvrir pour en voir le contenu
-
Initiation lutilisation du systme dexploitation Unix 17
Elies Jebri Janvier 2002 ISET Nabeul
Les colonnes suivantes indiquent: - le nombre de links (voir
plus loin) - le nom du propritaire - la taille en octets du fichier
- la date et l'heure de dernire modification - le nom du
fichier
ls -a fichier_ou_rep Cette commande montre les fichiers
normalement cachs (ceux dont le nom commence par ".")
HOST% ls -a /user/lambda . .. .profile .xxx essai prog.pas
textes HOST%
Crer un rpertoire mkdir nom_du_rpertoire Le nom du rpertoire
peut tre un chemin absolu ou relatif (par rapport au
rpertoire courant) Si l'endroit o vous voulez crer le rpertoire
vous est interdit vous recevrez un message d'erreur.
HOST% cd HOST% ls essai prog.pas textes HOST% mkdir lettres
HOST% ls essai lettres prog.pas textes HOST% mkdir /dev/truc mkdir:
Permission denied HOST%
Crer un fichier Il n'y a pas proprement parler de commande pour
crer un fichier. Ds que dans une commande on demande d'crire dans
un fichier qui n'existe pas encore, celui-ci est automatiquement
cr. Mais il est trs courant dutiliser la commande : touch
nom_du_fichier
Dtruire un fichier rm fic1 fic2 Si vous avez les autorisations
d'criture sur ces fichiers, ils seront effacs.
Dtruire un rpertoire rmdir nom_du_rpertoire Si vous avez
l'autorisation d'criture et si le rpertoire est vide, le
rpertoire
dsign sera dtruit. Il existe des options qui permettent de
dtruire un rpertoire et son contenu, mais leur emploi est trs
dangereux car on risque de dtruire accidentellement un trs grand
nombre de fichiers.
Copier des fichiers cp fic1 fic2 Le fichier fic1 est le fichier
source. Il doit ncessairement exister.
Le fichier fic2 est le fichier destination. S'il n'existe pas,
il est cr; s'il existait dj, il est cras par le contenu de
fic1.
cp -r rep1 rep2 Tous les fichiers de rep1 (ainsi que tous les
sous-rpertoires et leur contenu) seront copis avec le mme nom et la
mme structure dans le rpertoire rep2.
-
Initiation lutilisation du systme dexploitation Unix 18
Elies Jebri Janvier 2002 ISET Nabeul
Renommer ou dplacer un fichier mv fic1 fic2 Le fichier fic1 sera
renomm fic2.
HOST% cd /user/lambda HOST% mv textes text
NOTE la commande mv sert aussi dplacer des fichiers: en effet
fic1 et fic2 peuvent tre des chemins complets relatifs ou
absolus.
Exemple: Supposons que le contenu du rpertoire de l'utilisateur
lambda soit:
lambda
textes{t1t2prog.pasessai
HOST% cd HOST% mv textes/t2 t1 HOST%
Aprs excution le rpertoire aura le schma suivant:
lambda
textes{t1prog.pasessait1
Changer les autorisations
chmod chmod
ugouguogougo
+-
rwxrwrxwxrwx
fichier_ou_repertoire
Le premier groupe de lettres dsigne qui on veut modifier les
droits: u propritaire (user) g groupe du propritaire (group) o les
autres (others) + signifie qu'on veut accorder les droits qui
suivent - signifie qu'on veut retirer les droits qui suivent Le
second groupe de lettres dsigne les droits modifis r droit de
lecture (read) w droit d'criture (write) x droit d'xcution
(execute) Exemple:
HOST% ls -l /user/lambda/essai -rwxrwxrwx 1 lambda 523 Apr 05
14:50 essai HOST% chmod go-rw /user/lambda/essai HOST% ls -l
/user/lambda/essai -rwx--x--x 1 lambda 523 Apr 05 14:50 essai $
Il faut videmment tre le propritaire du fichier pour avoir le
droit de changer les autorisations.
-
Initiation lutilisation du systme dexploitation Unix 19
Elies Jebri Janvier 2002 ISET Nabeul
Retrouver un fichier whereis fic Cette commande permet de
retrouver le chemin du ou des fichiers qui
correspondent fic. HOST% whereis csh csh: /bin/csh
/usr/man/man1/csh.1 HOST%
Ici, la commande a retrouv deux fichiers qui s'appellent
csh.
find rpertoire options Cette commande recherche dans rpertoire
les fichiers correspondant aux conditions prcises dans les options.
les options sont:
find -name fic fic dsigne un ou plusieurs fichiers
find -user uid uid est soit un nom d'utilisateur soit son
numro
find -print On dsire voir le rsultat de la recherche sur la
sortie standard.
Sparer le chemin du nom basename fichier Ne garde que la dernire
partie de la chane fichier (c'est dire le nom du
fichier). Surtout utile dans les scripts.
dirname fichier Ne garde que la premire partie de la chane
fichier (c'est dire la suite des rpertoires qui y aboutissent).
Surtout utile dans les scripts.
-
Initiation lutilisation du systme dexploitation Unix 20
Elies Jebri Janvier 2002 ISET Nabeul
5. Manipulation du contenu
des fichiers
NOTE Les commandes voques dans ce chapitre sont une slection des
commandes disponibles dans Unix. De plus, elles comportent souvent
un grand nombre d'options. On se contente ici d'voquer les
principales. Pour la description complte de toutes les commandes et
de leurs options le lecteur est pri de se reporter la documentation
officielle.
Ecrire sur la sortie standard echo chane Ecrit la chane sur la
sortie standard.
Si elle n'est pas redirige, cette commande est surtout utile
dans les scripts. Si elle est redirige, elle peut servir crer un
fichier. Exemple:
HOST% echo "truc machin chouette" > toto HOST%
le fichier toto est cr et contient la chane de caractres truc
machin chouette.
banner chane Ecrit la chane en gros caractres sur la sortie
standard.
clear Efface l'cran.
Voir le contenu des fichiers more fic Cette commande envoie sur
la sortie standard (en gnral l'cran) le contenu du
fichier. Si le fichier ne tient pas dans l'cran, la commande
affiche le premier cran. Pour voir l'cran suivant: espace
Pour avancer d'une ligne: Return Pour quitter more: q
more fic1 fic2 Affiche le contenu de fic1 comme prcdemment. Pour
visualiser le fichier suivant : n
file fic1 fic2 Renvoie une description du contenu des
fichiers.
head -n fic Renvoie les n premires lignes du fichier fic.
tail -n fic Renvoie les n dernires lignes du fichier fic.
-
Initiation lutilisation du systme dexploitation Unix 21
Elies Jebri Janvier 2002 ISET Nabeul
od options fichier Renvoie le contenu du fichier sous forme
octale, hexadcimale, dcimale ou ascii suivant les options
demandes.
Imprimer un fichier lp imp fichiers Met les fichiers dsigns sur
la file d'attente de l'imprimante imp. S'informer
auprs de l'administrateur du systme pour les noms des
imprimantes et les options ventuelles utiliser.
lpr -Pimp fichiers Met les fichiers dsigns sur la file d'attente
de l'imprimante imp. S'informer auprs de l'administrateur du systme
pour les noms des imprimantes et les options ventuelles utiliser.
Cette commande possde beaucoup d'options permettant d'affiner le
travail. Notamment , l'option -h supprime l'impression de la page
d'entte.
lpq -Pimp Donne la file d'attente de l'imprimante imp.
lprm -Pimp fichiers Enlve les fichiers dsigns de la file
d'attente de l'imprimante imp.
lpstat Renvoie l'tat des imprimantes.
Recherche dans un fichier grep chaine fichier La commande grep
recherche dans le fichier toutes les occurrences de chane
. Elle fournit sur le fichier standard de sortie toutes les
lignes du fichier qui contiennent chane. Si la chane recherche
contient des espaces ou des caractres spciaux qui risquent d'tre
interprts, il faut l'enfermer dans des "". Supposons qu'il existe
un fichier nomm administrateurs qui contienne la liste des
administrateurs du systme.
HOST% grep "elies jebri" administrateurs technologue elies
jebri: ISET Nabeul HOST%
Cette commande possde un grand nombre d'options trs utiles
permettant d'affiner la recherche. Elle est souvent utilise dans
les pipelines.
Tableaux Dans beaucoup de commandes les fichiers de caractres
peuvent tre traits comme des tableaux. Un tableau est un ensemble
de lignes organises en colonnes. Chaque ligne a videmment le mme
nombre de colonnes. Normalement, les sparateurs de colonne sont des
tab (1) et les sparateurs de
ligne sont lf ou Return ou les deux. Dans un fichier organis en
tableau, les donnes sont ranges ligne par ligne. Exemple d'un
tableau trois colonnes et deux lignes:
donne tab donne tab donne Return
donne tab donne tab donne Return
expand -n fichier Permet de remplacer les caractres tab de
fichier par n espaces .
1 Il existe des fichiers organiss en tableaux dont les
sparateurs de colonne sont diffrents. Le fichier /etc/passwd qui
contient la liste des utilisateurs en est un exemple. Dans ce
fichier, le sparateur de colonnes est le caractre ":" (colon).
-
Initiation lutilisation du systme dexploitation Unix 22
Elies Jebri Janvier 2002 ISET Nabeul
unexpand fichier Remplace les espaces ou les chanes d'espaces
par un caractre tab . Cette commande permet de prparer des fichiers
pour un traitement sous forme de tableaux. Avec l'option -a seules
les chaines de plus de deux espaces sont remplaces par un tab .
Concatner des fichiers cat fic1 fic2 Cette commande renvoie le
contenu des fichiers dans l'ordre des arguments sur
le fichier standard de sortie. Cette commande est une autre
manire de consulter le contenu des fichiers. Exemples:
HOST% cat fic affiche le contenu de fic l'cran.
HOST% cat fic1 fic2 > fic3 concatne le contenu de fic1 et de
fic2 et les met dans fic3.
paste fic1 fic2 Concatnation de tableaux: les colonnes de fic2
sont ajoutes la droite des colonnes de fic 1. En gnral on redirige
le rsultat dans un fichier.
Extraction cut -fn1,n2,n3 -dspa fic Cette commande permet
d'extraire une partie des informations dans un fichier
organis en tableau. Exemple: le fichier /etc/passwd est organis
de la manire suivante:
nom:password_crypt:uid:gid:renseignements:homedir:shell La ligne de
l'utilisateur lambda pourrait tre: lambda :x :500 :500 :Utilisateur
lambda:/user/lambda:/bin/csh La commande: cut -f1,5 -d: /etc/passwd
> toto va crire dans le fichier toto des lignes ne comprenant
que les champs nom (1er champ) et renseignements (5me champ). La
ligne relative lambda sera: lambda:Lambda Mohamed EA3GM
La commande cut supporte beaucoup d'options, consulter les
rfrences.
wc option fichier Cette commande est un compteur. Suivant
l'option: -l compte les lignes du fichier -w compte les mots du
fichier -c compte les caractres du fichier
colrm startcol endcol Enlve du fichier en entre standard les
colonnes dont les numros vont de startcol endcol. Les sparateurs de
colonne sont supposs tre des caractres tab . Surtout utile quand
les entres et sorties standards sont rediriges.
Comparaison diff fic1 fic2 Cette commande permet de comparer le
contenu de deux fichiers. Le rsultat
de la comparaison est envoy sur le fichier standard de sortie.
Cette commande dtecte les ajouts (a), les effacements (d), les
changements (c) et les numros de ligne o ces changements sont
dtects:
num_lign_de_fic1 ade
num_lign_de_fic2
-
Initiation lutilisation du systme dexploitation Unix 23
Elies Jebri Janvier 2002 ISET Nabeul
Exemple: 3c3 (changement entre la ligne 3 de fic1 et la ligne 3
de fic2) < la_ligne_3_de_fic1 ---
>la_ligne_3_de_fic2
diff3 fic1 fic2 fic3 Comme diff mais pour trois fichiers.
sdiff fic1 fic2 Comme diff mais avec une prsentation diffrente
des rsultats
cmp fic1 fic2 Compare le contenu des deux fichiers octet par
octet. Cette commande peut comparer des fichiers de tous types
(ASCII ou binaire). Suivant les options on peut connatre les
diffrences ou seulement savoir si les fichiers sont identiques ou
non.
dircmp rep1 rep2 Compare les fichiers de mme nom dans les deux
rpertoires. Par dfaut, la comparaison est celle de la fontion cmp.
Avec l'option -d la comparaison est celle de diff.
comm fic1 fic2 Donne les lignes communes aux deux fichiers. Avec
les options, on peut limiter la comparaison certaines colonnes.
Tri sort options fic Trie les lignes du fichier fic. La commande
comporte de nombreuses options
pour dfinir le tri faire.
Couper un fichier en morceaux csplit fichier Cette commande lit
le fichier et cre des fichiers contenant des parties du
fichier d'origine. Les noms des fichiers crs et les rgles de
coupure sont dfinies dans les options et les arguments
complmentaires. Cette commande est surtout utile en programmation
pour dcouper un gros texte source en petits fichiers contenant
chacun une routine.
Compactage Les gros fichiers peuvent tre comprims par une
opration de compactage. On gagne ainsi de la place sur le disque.
La place gagne varie suivant la nature du fichier. La taille d'un
fichier texte peut tre rduite de 50%. Le fichier compact doit tre
dcompact pour tre nouveau exploitable.
pack fichier Compacte le fichier dsign.
unpack fichier Dcompacte le fichier dsign.
Les diteurs de texte Un diteur de texte est un programme
permettant de crer ou de modifier un fichier contenant du texte
(textes de programmes fortran, pascal, fichiers de donnes etc).
Sous Unix on trouve toujours au moins deux diteurs de texte: ed et
vi. ed est un diteur en mode ligne vi est un diteur en mode page.
vi est de loin le plus pratique. Il peut exister d'autres diteurs
de texte mais on n'est pas certain de les trouver sur tous les
systmes Unix.
-
Initiation lutilisation du systme dexploitation Unix 24
Elies Jebri Janvier 2002 ISET Nabeul
6. Utilisation de vi
vi (prononcer "vi-ae") est un diteur de texte qui est prsent sur
tous les systmes UNIX. Son nom est une abrviation de "visual
display editor". Bien qu'il puisse exister d'autres diteurs de
texte plus ergonomiques fonctionnant sous ce systme d'exploitation,
son apprentissage est utile car on est certain de le trouver
partout. Cet diteur de texte permet de crer et de modifier
n'importe quel fichier texte: programmes en tous langages, fichiers
de donnes, fichiers de configuration du systme, etc Tout fichier de
caractres en code ASCII est lisible et modifiable par vi. vi ignore
la souris. Toutes les commandes se font donc au clavier. Par
consquent, vi se trouve toujours dans l'un des deux tats: mode
commande: les touches frappes au clavier sont interprtes comme des
commandes et ne sont donc pas crites dans le texte. mode criture:
les touches frappes au clavier sont crites l o se trouve le
curseur. Pour passer en mode commande, il suffit de taper la touche
Escape . Si on
tait dj en mode commande la touche Escape est sans effet. La
(les) frappe(s) de touches qui suivent sont interprtes comme des
commandes. Pour passer en mode criture, il suffit de taper une
commande d'insertion ou d'ajout. Les frappes de touches qui suivent
sont crites dans le texte l'endroit o se trouve le curseur, jusqu'
la prochaine frappe de Escape . Ce qui suit est donc une
description des commandes de vi. La plupart des commandes se
rsument la frappe de quelques touches. Cependant, certaines d'entre
elles(1) demandent un nombre indtermin de caractres; dans ce cas,
le texte de la commande s'crit (pour contrle) sur la dernire ligne
de l'cran et se termine ncessairement par la frappe de la touche
Return . Ce qui se trouve sur la dernire ligne ne fait jamais
partie du texte. vi possde un grand nombre de commandes. Il n'est
pas ncessaire de les connatre toutes. Seules les premires sont
indispensables. C'est pendant l'utilisation, pour raliser
efficacement certaines oprations qu'on en apprend de nouvelles, en
se rfrant au mode d'emploi. On se rend compte alors que cet diteur
de texte est finalement assez puissant.
Dmarrer vi Il suffit de taper la commande: vi nom_de_fichier
nom_de_fichier peut en fait tre tout chemin comprhensible par UNIX.
vi peut ragir de deux faons: 1 Ce sont les commandes commenant par
/ ? : ou !
-
Initiation lutilisation du systme dexploitation Unix 25
Elies Jebri Janvier 2002 ISET Nabeul
Si nom_de_fichier dsigne un fichier qui n'existe pas, vi
comprend qu'il s'agit de la cration d'un nouveau fichier. vi vous
prsente donc un texte vide et se met en mode commande. Un message
sur la ligne de commande vous signale qu'il s'agit d'un nouveau
fichier (new file) Si nom_de_fichier dsigne un fichier qui existe,
vi comprend qu'il s'agit de la modification du fichier. vi vous
prsente l'cran le dbut du fichier et se met en mode commande. Il se
peut que votre intention tait de modifier un fichier existant, mais
qu'une faute de frappe dans nom_de_fichier fasse croire vi qu'il
s'agit d'un nouveau fichier. Il suffit de quitter vi en demandant
de ne pas enregistrer sur disque (aucun fichier ne sera cr) et de
recommencer la commande avec le nom correct. On peut aussi changer
de fichier sans quitter vi (voir plus loin: travailler sur un autre
fichier)
Quitter vi Pour quitter vi, il faut d'abord passer en mode
commande (si vous n'y tes pas dj) en tapant Escape .
quitter avec sauvegarde :wq Return ou ZZ ou :x Return
quitter sans sauvegarde :q Return ou :q! Return
Entrer du texte Lorsqu'on est en mode commande, il suffit de
taper une commande d'insertion de texte parmi les commandes
suivantes. Selon le choix de la commande le texte s'insre diffrents
endroits par rapport la position courante du curseur. vi reste
alors en mode criture jusqu' la prochaine frappe de Escape . vi
repasse alors en mode commande.
i insertion de texte gauche du curseur. Le reste de la ligne
s'il existe sera pouss vers la droite.
I insertion de texte au dbut de la ligne du curseur. Le reste de
la ligne s'il existe sera pouss vers la droite.
a insertion de texte droite du curseur. Le reste de la ligne
s'il existe sera pouss vers la droite.
A insertion de texte la fin de la ligne du curseur.
o (lettre "o" minuscule) ouvre une ligne au-dessous de la ligne
du curseur.
O (lettre "O" majuscule) ouvre une ligne au-dessus de la ligne
du curseur.
Dplacer le curseur Passer en mode commande (si vous n'y tes pas
dj) par la frappe de Escape puis:
par caractres ou h ou l On peut se dplacer de plusieurs
caractres en tapant un nombre avant la commande. Exemple: 2h ou 2
dplace le curseur de 2 caractres vers la gauche.
par mots w dplace le curseur au dbut du mot suivant b dplace le
curseur au dbut du mot prcdent e dplace le curseur la fin du mot
courant
-
Initiation lutilisation du systme dexploitation Unix 26
Elies Jebri Janvier 2002 ISET Nabeul
Il est noter que la notion de mot est prise son sens
informatique: un mot est une suite de caractres alphanumriques
comprise entre deux sparateurs , ; ( ) { } . ? ' " ! etc Si on veut
utiliser la notion de mot au sens littraire (spars par des espaces)
il faut employer les commandes W B E la place de w b e. On peut se
dplacer de plusieurs mots en tapant un nombre avant la commande.
Exemple: 2w dplace le curseur de 2 mots vers la droite.
par lignes 0 (zro) dplace le curseur en dbut de ligne $ dplace
le curseur en fin de ligne ou k dplace le curseur une ligne vers le
haut ou j dplace le curseur une ligne vers le bas + dplace le
curseur au dbut de la ligne suivante - dplace le curseur au dbut de
la ligne prcdente On peut se dplacer de plusieurs lignes en tapant
un nombre avant la commande. Exemple: 3ou 3k dplace le curseur de 3
lignes vers le haut. nG dplace le curseur la ligne n n. :n Return
dplace le curseur la ligne n n. G dplace le curseur la dernire
ligne du texte H dplace le curseur en premire ligne de l'cran L
dplace le curseur en dernire ligne de l'cran M dplace le curseur en
milieu de l'cran
par crans Ctrl-F dplace le curseur au dbut de l'cran suivant
Ctrl-B dplace le curseur au dbut de l'cran prcdent
Ctrl-D dplace le curseur 1/2 cran plus bas
Ctrl-U dplace le curseur 1/2 cran plus haut
Rechercher un texte
vers le bas /texte__rechercher Return ou /texte__rechercher/
vers le haut ?texte__rechercher Return ou
?texte__rechercher?
rpter la recherche n
dans l'autre sens N
recherche et remplacement :g/chaine_cherche/s/remplacement/gc Le
caractre "c" plac la fin de la commande signifie "avec
confirmation". Chaque fois qu'une occurrence de chaine_cherche est
trouve, l'utilisateur est interrog pour accepter (y) ou refuser (n)
le remplacement. La recherche/remplacement s'arrte avec Ctrl-D . Si
le caractre "c" n'est pas prsent, le remplacement est fait partout
automatiquement sans confirmation. Cette option est dangereuse car
il arrive souvent que certains remplacements ne soient pas
dsirables. Il existe de nombreux caractres spciaux qu'on peut
mettre dans chaine_cherche pour affiner la recherche. Consulter la
documentation.
-
Initiation lutilisation du systme dexploitation Unix 27
Elies Jebri Janvier 2002 ISET Nabeul
Changer du texte Pour changer du texte, (c'est dire remplacer un
morceau de texte par un autre) il faut commencer par amener le
curseur au dbut de la partie changer.
changer un caractre r nouveau_caractre
changer un mot cw nouveau_mot Escape Si le curseur n'tait pas au
dbut du mot, seul le reste du mot est chang.
changer une ligne cc nouvelle_ligne Escape
changer la fin d'une ligne C nouvelle_fin_de_ligne Escape
couper une ligne en deux Placer le curseur entre les mots sparer
et taper r Return (remplacement d'un espace par un Return ) .
joindre deux lignes Placer le curseur sur la ligne du dessus et
taper J
Effacer un / plusieurs caractres x nx n est le nombre de
caractres effacer
un / plusieurs mots dw ndw n est le nombre de mots effacer
une / plusieurs lignes dd ndd n est le nombre de lignes
effacer
la fin d'une ligne D
Dplacer du texte recopier une/plus. lignes Pour recopier une ou
plusieurs lignes il faut:
Dplacer le curseur sur la ligne copier Taper yy ou Y (yank). Une
copie de la ligne est mise dans un buffer (en tapant nyy ou nY, on
met la ligne et les n-1 lignes qui suivent dans le buffer). Dplacer
le curseur sur la ligne au-dessus de la (des) ligne(s) insrer Taper
p (put). Une copie du buffer est insre au-dessous la ligne.
Remarque 1: Aprs avoir mis la (les) ligne(s) recopier dans le
buffer on peut aussi Dplacer le curseur sur la ligne au-dessous de
la ligne insrer Taper P. Une copie du buffer est insre au-dessus de
la ligne. Remarque 2: Aprs ces oprations, le buffer contient
toujours une copie de la (des) ligne(s). On peut donc encore les
insrer d'autres endroits. Remarque 3: Aprs avoir copi dans le
buffer la (les) ligne(s), il ne faut pas faire de commandes qui en
changent le contenu. Il est prudent de ne faire que des dplacements
ou des recherches.
dplacer une/plus. lignes Pour dplacer une ou plusieurs lignes il
faut: Dplacer le curseur sur la ligne dplacer. Taper dd (delete).
Une copie de la ligne est mise dans un buffer (en tapant ndd on met
la ligne et les n-1 lignes qui suivent dans le buffer). Dplacer le
curseur sur la ligne au-dessus de la (des) ligne(s) insrer Taper p
(put). Une copie du buffer est insre au-dessous la ligne. Remarque
1: Aprs avoir mis la (les) ligne(s) dplacer dans le buffer on peut
aussi Dplacer le curseur sur la ligne au-dessous de la ligne insrer
Taper P. Une copie du buffer est insre au-dessus de la ligne.
-
Initiation lutilisation du systme dexploitation Unix 28
Elies Jebri Janvier 2002 ISET Nabeul
Remarque 2: Aprs ces oprations, le buffer contient toujours une
copie de la (des) ligne(s). On peut donc encore les insrer d'autres
endroits. Remarque 3: Aprs avoir copi dans le buffer la (les)
ligne(s), il ne faut pas faire de commandes qui en changent le
contenu. Il est prudent de ne faire que des dplacements ou des
recherches.
insrer un fichier :numro_de_ligne r fichier Return Le contenu de
fichier sera insr la ligne numro_de_ligne . si numro_de_ligne n'est
pas prsent l'insertion se fait la position courante du curseur.
Rpter la dernire commande
.(point) rpte le dernier effacement ou changement n rpte la
dernire recherche N rpte la dernire recherche en sens inverse La
combinaison de ces deux commandes permet de rsoudre un problme
courant: Supposons qu'un programme utilise une variable nomme "val"
et qu'on veuille changer son nom en "valeur". Il faut donc changer
toutes les chanes "val" (ou seulement certaines d'entre elles) en
"valeur". Voici la liste des commandes qui peut rsoudre le problme:
:1 (aller en premire ligne) /val (rechercher la premire occurrence
de val, le curseur se place sur le v) cw (on veut changer la fin du
mot, c.a.d. tout le mot) valeur (on tape le nouveau mot) Escape
(pour terminer la commande cw)
A ce stade, nous avons fait une recherche de "val" et un
remplacement par "valeur". Les autres vont tre trs rapides: n
(recherche du "val" suivant) . (remplacement du mot par "valeur" si
on le dsire) etc
Annuler la dernire commande
u annule la dernire commande U annule tous les changements
effectus sur la ligne actuelle
Travailler sur un autre fichier :e nom_de_fichier (edit)
Si le fichier actuel n'est pas sauvegard, vi vous propose de le
faire. Sauvegardez le fichier si vous le dsirez.
:e! nom_de_fichier Cette commande force vi changer de fichier
sans proposer la sauvegarde.
-
Initiation lutilisation du systme dexploitation Unix 29
Elies Jebri Janvier 2002 ISET Nabeul
Lancer une commande Unix sous vi
:! commande Return . La commande(1) s'excute, recouvrant
ventuellement une partie de l'cran de vi. A la fin de l'xcution de
la commande, un message hit Return to continue vous invite
retourner dans vi en tapant Return .
1 Il n'est pas interdit mais fortement dconseill de relancer vi
sous vi, surtout sur le mme fichier! Des effets de bord indsirables
pourraient entraner la perte du fichier.
-
Initiation lutilisation du systme dexploitation Unix 30
Elies Jebri Janvier 2002 ISET Nabeul
7. Gestion des processus
Lancer une commande en tche de fond commande & Si on prvoit
que l'excution d'une commande va durer longtemps, il est
intressant de la lancer en tche de fond (background), c'est dire
qu'on pourra continuer travailler sans attendre qu'elle soit
termine(1). Il suffit d'ajouter un "&" la fin de la commande.
Les commandes lances sans le "&" la fin de la ligne sont dites
en premier plan (foreground). Vous devez attendre la fin de son
excution pour lancer d'autres commandes.
HOST% toto & [1] 1282 HOST% (commandes) [1] done
(commandes)
Unix vous indique un numro de job [1] et un numro de processus
(PID : Processus IDentifier) Vous avez nouveau la main sans
attendre que la commande soit finie. Lorsque qu'une commande en
tche de fond est termine, vous recevez un message du genre [numro]
done qui s'inscrit en bas de l'cran.
Quels sont les processus en cours? ps Vous pouvez donc avoir
simultanment plusieurs processus en cours et il est
utile de les connatre. C'est ce que vous donne la commande ps:
HOST% ps PID TT STAT TIME COMMAND
1282 co R 10:05 toto
6006 co R 0:02 ps HOST%
La commande ps fournit un tableau des diffrents processus en
cours. Remarquez que la commande ps y figure elle-mme!
1 Les processus en cours semblent fonctionner simultanment. En
fait, ils fonctionnent chacun leur tour. C'est le systme
d'exploitation Unix qui se charge de distribuer le temps machine
aux diffrents processus demandeurs. L'utilisateur n'a pas se
proccuper de cette distribution, c'est le systme d'exploitation qui
s'en charge.
-
Initiation lutilisation du systme dexploitation Unix 31
Elies Jebri Janvier 2002 ISET Nabeul
Les diffrentes colonnes sont les suivantes. PID: Numro du
processus TT: identification du terminal qui a lanc le processus
STAT: Etat du processus. Il peut avoir les valeurs suivantes: R
runnable or running T stopped P paging D waiting on disk S sleeping
(moins de 20 sec) I idle (plus de 20 sec) Z terminated, control
passing to parent W swapped out > exceeded soft memory limits N
priority was reduced < priority was raised TIME : temps machine
COMMAND : la commande qui a lanc le processus Mme si on n'a pas
lanc de processus en tche de fond, la commande ps avec certaines
options fournit toujours une liste de processus en fonctionnement,
qui sont lancs par le systme lui-mme (gestion de disque, rseau
etc). Il ne faut donc pas s'tonner de la prsence de processus qu'on
n'a pas commands.
Stopper un processus en cours kill kill -1
numro_de_processus
Le processus stopper est identifi par son PID HOST% ps PID TT
STAT TIME COMMAND
1282 co R 10:05 toto
6006 co R 0:02 ps HOST% kill -1 1282 [1] Terminated toto
HOST%
l'option -1 est en principe suffisante pour stopper le
processus. En cas d'chec (vrifier avec une nouvelle commande ps),
on peut essayer l'option -9.
HOST% kill -9 1282 HOST%
Bien entendu vous ne pouvez pas interrompre n'importe quel
processus. Vous ne pouvez agir que sur ceux qui vous
appartiennent.
Lancer un processus plus tard at heure fichier Crez d'abord un
fichier (atfic par exemple) contenant les commandes
xcuter, puis lancez la commande at en lui donnant l'heure (et
ventuellement la date??) et le nom du fichier de commandes.
HOST% at 14:15 pm atfic HOST%
Consulter les rfrences pour connatre les diffrentes syntaxes
d'heure et de date admises par la commande at.
sleep dure Suspend l'xcution pendant un certain temps.
L'utilisation normale est la suivante: (sleep dure_en_secondes ;
commande1 )&
-
Initiation lutilisation du systme dexploitation Unix 32
Elies Jebri Janvier 2002 ISET Nabeul
Gestion des processus retards atq Cette commande donne la liste
des processus en attente d'xcution
HOST% atq Rank Execution Date Owner Job# Queue Job Name 1st Jan
1, 1991 0:00 lambda 936 a atfic HOST%
atrm n Cette commande retire le processus numro n de la liste
des processus en attente d'xcution.
HOST% atrm 936 936: removed HOST%
atrm -a Enlve tous les processus en attente.
wait Attend la fin d'xcution de tous les processus qui ont t
lancs en tache de fond (avec &)
Dure des processus time commande A la fin de l'xcution de la
commande commande, time affiche sur la sortie
standard trois temps (en secondes): temps entre le lancement de
la commande et la fin de son xcution (elapsed time) temps systme
dure d'xcution du code de la commande
-
Initiation lutilisation du systme dexploitation Unix 33
Elies Jebri Janvier 2002 ISET Nabeul
8. Ajuster son propre
environnement
Lorsque l'on excute une commande (un programme) ou au cours
d'une session le systme d'exploitation tient compte de certaines
caractristiques qui dfinissent la configuration de la machine et du
systme, les proprits de l'utilisateur, etc ...; l'ensemble de ces
caractristiques definit ce que l'on appelle "environnement".
Les variables d'environnement
La dfinition d'un environnement est gnralement assure par
l'affectation de certaines valeurs des variables dites variables
d'environnement. Ces variables sont en fait dfinies comme des
variables locales dans la session, puis leur validit est tendue
toutes les commandes excutes au cour de cette session en utilisant
la commande export. Exemple: La variable d'environnement TERM
dfinit le type de terminal utilis. Pour travailler avec un terminal
de type "sun" tapez:
HOST% TERM=sun HOST% export TERM
NOTE Si une variable d'environnement a dj t dfinie et exporte,
on peut modifier sa valeur sans la r-exporter.
env Affiche la liste des variables d'environnement actuellement
dfinies et les valeurs qui leurs sont affectes.
Les variables prdfinies
Lorsqu'on commence une session un certain nombre de variables
d'environnement sont dj dfinies. Les valeurs prdfinies de ces
variables peuvent tre modifies en ditant le fichier
$HOME/.profile
NOTE ATTENTION!!! Ne pas modifier ces valeurs si vous n'tes pas
sr du rsultat.
PATH La variable PATH contient une liste de rpertoires dans
lesquels Unix recherche les commandes que vous avez dsign sans
prciser leur chemin absolu. Chaque chemin est spar du suivant par
un ":". Exemple:
-
Initiation lutilisation du systme dexploitation Unix 34
Elies Jebri Janvier 2002 ISET Nabeul
La variable PATH pourrait contenir: /usr/bin:/usr/5bin:. Si la
commande que vous avez tape n'est pas dsigne par son chemin absolu,
Unix la recherche d'abord dans le rpertoire /usr/bin, puis dans le
rpertoire /usr/5bin, et enfin dans votre rpertoire courant (le
point final dsigne votre rpertoire courant).
NOTE Si vous n'tes pas sr de ce que vous faites, il vaut mieux
ne pas modifier le contenu de la variable PATH . Vous risquez de ne
plus pouvoir excuter certaines commandes.
HOME Cette variable contient le chemin absolu de votre rpertoire
personnel (home directory). En principe vous n'avez pas la
modifier. Exemple: cd $HOME est quivalent cd . Cette variable est
surtout utilise dans les scripts.
TMPDIR
L'horloge date Donne la date et l'heure actuelle.
last -n Renvoie les dates et heures de vos n derniers login.
leave hhmm Le systme vous enverra un message l'heure dite HOST%
leave 1535 Alarm set for Wed Mar 7 15:35:07 1984 HOST%
HOST% Time to leave! HOST%
leave +hhmm Le systme vous enverra le message dans hh heures et
mm minutes.
La calculatrice dc Calcule l'expression reue sur l'entre
standard.
dc fichier Calcule l'expression contenue dans le fichier La
commande dc offre un grand nombre d'options (gestion de piles,
diffrentes bases)
units Programme de conversion d'units. Il vous demande
interactivement l'unit de dpart, l'unit d'arrive et rpond en
donnant l'opration faire pour raliser la conversion
Les disques durs df Affiche l'espace libre sur les disques ou le
disque dsign. Les informations
sont plus ou moins dtailles suivant les options.
du fichier Donne le nombre de blocs (de 1 Ko) occups par le
fichier (qui peut tre un rpertoire). Suivant les options, les
rsultats sont plus ou moins dtaills.
Les disquettes L'utilisation du lecteur de disquettes ncessite
les manuvres suivantes: introduire la disquette dans le lecteur
faire la commande: mount /dev/fd0 /flop
-
Initiation lutilisation du systme dexploitation Unix 35
Elies Jebri Janvier 2002 ISET Nabeul
On accde alors au contenu de la disquette en visitant le
rpertoire /flop.
eject Ejecte la disquette du lecteur de disquettes. fdformat
Formate la disquette dans le lecteur de disquette.
Le formatage est une opration qui consiste prparer une disquette
vierge recevoir des informations. Cette opration est ncessaire pour
toute disquette neuve.
NOTE On peut reformater une disquette ancienne, mais toutes les
informations qui s'y trouvaient sont perdues!
l'option -v vrifie le formatage en fin d'opration l'option -l
formate en faible densit (720 Ko)
Le clavier tabs -n Place un taquet de tabulation tous les
ncaractres. Par dfaut, n vaut 8.
Vous et les autres HOSTname Renvoie le nom de la machine sur
laquelle vous travaillez.
uname -a Renvoie des renseignements sur la machine sur laquelle
vous travaillez.
id Renvoie le nom, le numro d'utilisateur, le groupe et le numro
du groupe.
logname Renvoie le nom sous lequel vous avez dmarr la
session.
who Renvoie la liste des utilisateurs actuels de la machine
whoami ou who am i Qui suis-je?
w Renvoie des renseignements sur les utilisateurs actuels de la
machine
-
Initiation lutilisation du systme dexploitation Unix 36
Elies Jebri Janvier 2002 ISET Nabeul
9. Les scripts
Qu'est-ce qu'un script ? Il arrive souvent qu'on ait faire une
suite de commandes pour raliser une opration complte, et qu'on ait
souvent besoin de refaire cette suite de commandes. On peut alors
penser mettre ces commandes dans un fichier et les excuter ensuite.
Un tel fichier de commandes est un script. Exemple: Supposons que
l'utilisateur lambda ait cr dans son rpertoire un rpertoire nomm
/user/lambda/tmp, dans lequel il a l'habitude de mettre des
fichiers temporaires. Une bonne habitude serait de vider le contenu
de ce rpertoire avant de quitter sa session pour librer de l'espace
disque. Il va donc crer (avec vi par exemple) un fichier texte
$HOME/nettoie dans lequel il va mettre les commandes suivantes:
cd $HOME/tmp rm `ls` echo "Nettoyage termin"
Le fichier nettoie est un fichier texte qui contient des
commandes. Ce fichier n'est pas un fichier excutable. Pour le
rendre excutable il faut lui donner le droit d'xcution:
HOST% chmod u+x $HOME/nettoie HOST%
Avec son droit d'xcution, le fichier nettoie est devenu une
nouvelle commande! Avant de quitter sa session, il suffira lambda
de lancer la commande nettoie.
HOST% nettoie nettoyage termin HOST%
Bien que trs simple, cet exemple permet d'imaginer des scripts
ralisant des oprations plus complexes. On verra dans la suite que
les scripts, comme toute commande Unix peuvent avoir des options,
des arguments et peuvent excuter certaines oprations sous
condition. Par exemple, on pourrait amliorer le script prcdent en
vrifiant d'abord que le rpertoire /user/lambda/tmp existe et est
bien un rpertoire. Si tel n'tait pas le cas, il enverrait un
message d'erreur du genre /user/lambda/tmp n'existe pas et ne
ferait rien d'autre.
-
Initiation lutilisation du systme dexploitation Unix 37
Elies Jebri Janvier 2002 ISET Nabeul
La possibilit d'excutions conditionnelles et de boucles permet
de regarder les scripts comme de vritables programmes dont les
instructions sont les commandes d'Unix.
Les variables Dans un script on peut dfinir des variables. Ces
variables ne peuvent contenir que des chanes alphanumriques. Un nom
de variable doit commencer par une lettre et peut tre constitu de
lettres, de chiffres et "_" (underscore). Exemples: var_1 v2
ma_variable
Affectation d'une variable Pour affecter une chaine
alphanumrique valeur une variable var il suffit d'crire:
var=valeur
NOTE Attention: pas d'espaces de chaque cot du signe "=".
Si la chaine valeur contient des caractres spciaux(1) il faut
l'enfermer entre deux """ (guillemets doubles). Exemples:
question="etre ou ne pas etre" var2=12 (ce n'est pas une valeur
numrique!! il s'agit du caractre "1" suivi du caractre "2") var3=
(affectation d'une chaine vide ) var4="cat fic1 fic2 > fic3"
Substitution d'une variable Le contenu de la variable var est
obtenu par $var. Exemple: Si vous excutez les lignes suivantes:
question="etre ou ne pas etre" echo $question vous verrez
s'afficher l'cran: etre ou ne pas etre
Par contre echo question donnera question
Porte des variables Une variable dfinie dans un script n'est
reconnue qu' l'intrieur du script. Pour la rendre connue l'extrieur
il faut utiliser la commande export.
export var Cette commande rend la variable var connue dans toute
votre session (notamment d'autres scripts pourront s'y rfrer).
1 Les caractres spciaux sont: " ' & $. , ; : ? * | ^ ( ) { }
[ ] \ > < # + espace tab
-
Initiation lutilisation du systme dexploitation Unix 38
Elies Jebri Janvier 2002 ISET Nabeul
Exemple: Supposons qu'un script shksp contienne les lignes
question="etre ou ne pas etre" export question
HOST% echo $question (avant excution du script) undefined
variable HOST% shksp (excution du script) HOST% echo $question
(aprs excution du script) etre ou ne pas etre HOST%
Les variables prdfinies
Il existe des variables prdfinies dont les noms sont: ? # $ !
qui ont une signification spciale:
? $? donne l'tat de retour de la dernire commande excute. L'tat
de retour est un entier retourn par toute commande Unix (y compris
les scripts). Sa valeur diffre suivant les commandes et donne une
indication sur le droulement de son excution. En gnral un tat de
retour gal 0 indique que la commande s'est bien passe(1).
Exemple:
HOST% grep "elies jebri" administrateurs (rsultat) HOST% echo
$?
On verra s'afficher 0 si la chaine "elies jebri" a t trouve 1 si
la chaine "elies jebri" n'a pas t trouve 2 s'il y a eu une
erreur(2)
# $# donne le nombre (3) d'arguments envoys au script .
0 1 2 3 $0 donne le nom de base du script $1 donne le premier
argument envoy au script $2 donne le deuxime argument envoy au
script etc
$ $$ donne le numro du processus (PID) du script.
! $! donne le PID du dernier processus excut en tche de
fond.
NOTE Les variables d'environnement utilisateur sont aussi
reconnues par le script (voir plus haut: les variables
d'environnement).
1 Consulter les rfrences pour savoir les tats renvoys par les
diffrentes commandes. 2 Par exemple si le fichier administrateurs
n'existe pas ou est inaccessible. 3 Sous forme de chaine de
caractres
-
Initiation lutilisation du systme dexploitation Unix 39
Elies Jebri Janvier 2002 ISET Nabeul
Commandes Toutes les commandes Unix sont utilisables dans un
script.
liste_de_commandes On note liste_de_commandes une suite de
commandes spares par un";" ou un Return .
NOTE L'tat de retour d'une liste_de_commandes est celui de la
dernire commande de la liste.
Droulement de l'excution du script
Normalement les commandes d'un script sont excutes en squence
dans l'ordre o elles sont crites. Cependant il est possible d'avoir
des excutions conditionnelles et des boucles.
Boucle for for nom in nom1 nom2 nom3 nomn do liste_de_commandes
done La liste de commandes liste_de_commandes est excute n fois en
affectant chaque fois la variable nom une nouvelle valeur prise
dans la liste nom1 nom2 nom3 nomn. En gnral, une ou plusieurs
commandes de liste_de_commandes utilise la valeur de nom .
Exemple:
cd /user/lambda/textes for fic in t1 t2 do chmod ugo+x $fic
done
Slection case case $variable in val1) liste_de_commandes_1;;
val2) liste_de_commandes_2;; valn) liste_de_commandes_n;; *)
liste_de_commandes_x;; esac
Si variable a l'une des valeurs val1 valn , la liste de
commandes correspondante est excute. Sinon liste_de_commandes_xest
excute. Exemple:
case $# in 0) echo "Il n'y a pas d'argument";; 1) echo "Il y a
un argument";; 2) echo "Il y a deux arguments";; *) echo "Il y a
plus de deux arguments";; esac
excution conditionnelle if if liste_de_commandes_1 then
liste_de_commandes_2 else liste_de_commandes_3 fi
liste_de_commandes_1 est d'abord excute. Si son tat de retour est
0, liste_de_commandes_2 est excute, sinon liste_de_commandes_3 est
excute.
-
Initiation lutilisation du systme dexploitation Unix 40
Elies Jebri Janvier 2002 ISET Nabeul
Exemple: if mkdir monrep then echo "le rpertoire monrep est cr"
else echo "la cration de monrep a chou" fi
test options commande Suivant les options choisies, la commande
test sert tester l'tat des fichiers comparer des chanes comparer
des entiers Elle renvoie la valeur 0 pour "vrai" et 1 pour "faux"
(sauf pour l'option -l) Quelques options utiles:
test -f fic Renvoie 0 si le fichier fic existe et n'est pas un
rpertoire.
test chaine1 = chaine2 Renvoie 0 si les chanes sont
identiques.
test chaine1 != chaine2 Renvoie 0 si les chanes sont
diffrentes.
test n1 -
eqnegtgeltle
n2 Renvoie 0 si l'entier n1 est
=>