42
ISET NABEUL Initiation à l’utilisation du système d’exploitation UNIX Réalisé par : Elies Jebri Technologue Janvier 2002 [Ce document traite des aspects relatifs à l’utilisation du système UNIX. Il s'agit d'une présentation des commandes de base pour un utilisateur. A la fin vous aborderez quandmême l’écriture de scripts shell souvent traités comme étant une tâche d’administration système.]

Unix User Polycope

Embed Size (px)

DESCRIPTION

unix

Citation preview

  • 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

    =>