HOWTO Comment migrer de VMS � Linux
 Auteur : Guido Gonzato et Mike Miller
 Traducteur : Dimitri Ara
 v1.1.3, 17 Septembre 1999

 Ce HOWTO est destin� � toutes les personnes qui utilisent VMS et qui
 ont maintenant besoin ou envie de passer � Linux, le clone libre
 d'Unix.  Nous effectuerons la transition --- je l'esp�re, sans douleur
 --- en comparant les commandes et les outils disponibles sur ces deux
 syst�mes.
 ______________________________________________________________________

 Table des mati�res





















































 1. Introduction

    1.1 Pourquoi Linux ?
    1.2 Commandes et fichiers comparables

 2. Petite introduction

    2.1 Fichiers
    2.2 R�pertoires
    2.3 Programmes
    2.4 Visite guid�e

 3. �diter des fichiers

 4. TeXer

 5. Programmer

    5.1 Fortran
    5.2 Utiliser
    5.3 Scripts
    5.4 C

 6. Graphiques

 7. Mail et outils pour Internet

 8. Sujets avanc�s

    8.1 Droits et propri�t�
    8.2 Multit�che : processus et t�ches (
    8.3 Fichiers, deuxi�me
    8.4 Files d'impression

 9. Configurer

 10. Programmes utiles

    10.1 Visionneur de fichiers :
    10.2 Num�ros de version sous Linux
    10.3 Archiver : tar et gzip

 11. Exemples du monde r�el

 12. Astuces dont on ne peut se passer

 13. Lire des bandes VMS depuis Linux

    13.1 Introduction
    13.2 Les bases
    13.3 Quelques d�tails
    13.4 Commentaires sur la taille des blocks

 14. La fin

    14.1 Copyright
    14.2 Avertissement


 ______________________________________________________________________

 11..  IInnttrroodduuccttiioonn




 11..11..  PPoouurrqquuooii LLiinnuuxx ??


 Vous avez entendu dire qu'Unix est difficile et vous �tes h�sitant �
 la perspective d'abandonner VMS ?  Pas de panique. Linux, l'un des
 meilleurs clones d'Unix, n'est pas plus difficile � utiliser que VMS.
 En fait, je le trouve m�me plus facile.  D'ailleurs, la plupart des
 gens trouve Linux beaucoup plus puissant et versatile que VMS
 (�videmment les aficionados de VMS ne sont pas de cet avis).

 Linux et VMS sont tous les deux de bons syst�mes d'exploitation et
 accomplissent essentiellement les m�mes taches. Cependant, les outils
 de Linux sont � mon humble avis sup�rieurs. Leur syntaxe est souvent
 plus concise et ils ont souvent les quelques fonctionnalit�s de plus
 qui font la diff�rence et permettent de gagner du temps (vous
 entendrez souvent que VMS et Unix ont des philosophies diff�rentes).
 De plus, Linux est disponible sur les PC alors que ce n'est pas le cas
 de VMS (les derniers PC �tant d'ailleurs plus puissants que les VAX).
 Et, cerise sur le g�teau, les excellentes performances des nouvelles
 cartes graphiques transforment votre tite bo�te Linux, gr�ce � X, en
 une puissante station de travail graphique bien souvent plus rapide
 qu'une machine sp�cialement pr�vue pour cette t�che.

 J'ai plusieurs raisons de croire que la combinaison Pentium/Linux est
 pr�f�rable � celle de VAX/VMS, mais ces pr�f�rences sont strictement
 personnelles et vous ne serez peut-�tre pas d'accord. Vous en
 d�ciderez de vous-m�me dans quelques mois.

 Je prends en hypoth�se que vous �tes une �tudiant ou un chercheur �
 l'universit� et que vous utilisez r�guli�rement VMS pour les t�ches
 suivantes :


 �  �crire des papiers avec TeX/LaTeX ;

 �  programmer en Fortran ;

 �  faire des graphiques ;

 �  utiliser Internet ;

 �  etc.

 Dans la section suivante je vais vous expliquer comment faire ces
 t�ches sous Linux en utilisant votre exp�rience de VMS. Mais avant
 tout v�rifiez que :


 �  Linux et le _S_y_s_t_�_m_e _X _W_i_n_d_o_w sont correctement install�s ;

 �  vous avez un administrateur syst�me pour s'occuper des d�tails
    techniques (s'il-vous-pla�t, demandez de l'aide � eux, pas � moi
    :-) ;

 �  votre _s_h_e_l_l --- l'�quivalent de DCL --- est bash (demandez � votre
    administrateur).

 Notez que ce HOWTO n'est pas suffisant pour faire de vous un linuxien
 pur et dur : il contient seulement le strict n�cessaire pour vous
 permettre de commencer. Vous devriez en apprendre plus sur Linux pour
 pouvoir en tirer le maximum (fonctionnalit�s avanc�es de bash,
 programmation, expressions r�guli�res, etc.).

 Les documents du _L_i_n_u_x _D_o_c_u_m_e_n_t_a_t_i_o_n _P_r_o_j_e_c_t (projet de documentation
 de Linux), disponibles sur metalab.unc.edu:/pub/Linux/docs/LDP, sont
 une importante source d'informations.
 NDT : je vous sugg�re �galement de lire le _G_u_i_d_e _d_u _r_o_o_t_a_r_d d'�ric
 Dumas et plus g�n�ralement tout ce que l'on peut trouver sur
 http://www.freenix.fr/linux et http://www.traduc.org.

 Et maintenant, c'est parti !


 11..22..  CCoommmmaannddeess eett ffiicchhiieerrss ccoommppaarraabblleess


 Ce tableau compare les commandes les plus utilis�es sous VMS et Linux.
 Gardez � l'esprit que leur syntaxe est souvent tr�s diff�rente ; pour
 plus de d�tails allez faire un tour dans les sections suivantes.





















































 VMS                           Linux                   Notes
 -------------------------------------------------------------------------------
 @COMMAND                      command                    (doit �tre ex�cutable)
 COPY fichier1 fichier2        cp fichier1 fichier2
 CREATE/DIR [.r�pertoire]      mkdir r�pertoire           (seulement un par un)
 CREATE/DIR [.r�p1.r�p2]       mkdirhier r�p/r�p
 DELETE fichier                rm fichier
 DIFF fichier1 fichier2        diff -c fichier1 fichier2
 DIRECTORY                     ls
 DIRECTORY [...]fichier        find . -name fichier
 DIRECTORY/FULL                ls -al
 EDIT fichier                  vi fichier,            (vous n'allez pas l'aimer)
                               emacs fichier,                   (compatible EDT)
                               jed fichier                (idem --- mon pr�f�r�)
 FORTRAN prog.for              g77 prog.f,        (pas besoin de lier avec LINK)
                               f77 prog.f,
                               fort77 prog.f
 HELP commande                 man commande     (la commande doit �tre pr�cis�e)
                               info commande
 LATEX fichier.tex             latex fichier.tex
 LOGIN.COM                     .bash_profile,                    (fichier cach�)
                               .bashrc                                    (idem)
 LOGOUT.COM                    .bash_logout                               (idem)
 MAIL                          mail,                                (un peu cru)
                               elm,                             (beaucoup mieux)
                               pine                            (encore meilleur)
 PRINT fichier.ps              lpr fichier.ps
 PRINT/QUEUE=laser fichier.ps  lpr -Plaser fichier.ps
 PHONE utilisateur             talk utilisateur
 RENAME fichier1 fichier2      mv fichier1 fichier2      (ne marche pas avec des
                                                             fichiers multiples)
 RUN progname                  programme
 SEARCH fichier "motif"        grep motif fichier
 SET DEFAULT [-]               cd ..
 SET DEFAULT [.r�p.r�p]        cd r�p/r�p
 SET HOST machine              telnet machine,            (pas exactement pareil)
                               rlogin machine
 SET FILE/OWNER_UIC=paul       chown paul fichier        (compl�tement diff�rent)
 SET NOBROADCAST               mesg
 SET PASSWORD                  passwd
 SET PROT=(perm) fichier       chmod perm fichier       (compl�tement diff�rent)
 SET TERMINAL                  export TERM=          (la syntaxe est diff�rente)
 SHOW DEFAULT                  pwd
 SHOW DEVICE                   du, df
 SHOW ENTRY                    lpq
 SHOW PROCESS                  ps -ax
 SHOW QUEUE                    lpq
 SHOW SYSTEM                   top
 SHOW TIME                     date
 SHOW USERS                    w
 STOP                          kill
 STOP/QUEUE                    kill,                        (pour les processus)
                               lprm                   (pour supprimer un travail
                                                        de la file d'impression)
 SUBMIT commande               commande &
 SUBMIT/AFTER=dur�e commande   at dur�e commande
 TEX fichier.tex               tex fichier.tex
 TYPE/PAGE fichier             more fichier
                               less fichier                     (beaucoup mieux)




 Bien s�r, les diff�rences des deux syst�mes ne se limitent pas aux
 noms des commandes. Continuez donc � lire.

 22..  PPeettiittee iinnttrroodduuccttiioonn


 Voila ce que vous devez absolument savoir avant de vous loguer pour la
 premi�re fois. D�tendez-vous, il y a relativement peu de chose.


 22..11..  FFiicchhiieerrss



 �  Les noms des fichiers sous VMS on la forme
    fichier.extension.version.  Sous Linux, le num�ro de version
    n'existe pas (c'est une grosse limitation mais on peut la compenser
    par d'astucieux moyens : jetez un oeil � la section ``Num�ros de
    version sous Linux'') ; les noms des fichiers sont normalement
    limit�s � 255 caract�res et peuvent contenir autant de points que
    vous le d�sirez. Par exemple, C_est.un.FICHIER.txt est un nom de
    fichier valide.

 �  Linux fait la distinction entre les majuscules et les minuscules.
    Ainsi, FICHIER.txt et fichier.txt sont deux fichiers diff�rents et
    ls est une commande alors que LS n'en est pas une.

 �  Un fichier dont le nom commence par un point est un fichier cach�
    (ce qui veut dire qu'il ne sera normalement pas affich� quand on
    listera les fichiers du r�pertoire) alors qu'un fichier dont le nom
    finit par un tilde (� ~ �) repr�sente une sauvegarde de fichier (ou
    _b_a_c_k_u_p).

 Maintenant, voici un tableau pr�sentant les correspondances entre les
 commandes de VMS et celle de Linux en ce qui concerne la gestion des
 fichiers.




      VMS                                     Linux
      ---------------------------------------------------------------------

      $ COPY fichier1.txt; fichier2.txt;      $ cp fichier1.txt fichier2.txt
      $ COPY [.r�p]fichier.txt;1 []           $ cp r�p/fichier.txt .
      $ COPY [.r�p]fichier.txt;1 [-]          $ cp r�p/fichier.txt ..
      $ DELETE *.dat.*                        $ rm *dat
      $ DIFF fichier1 fichier2                $ diff -c fichier1 fichier2
      $ PRINT fichier                         $ lpr fichier
      $ PRINT/queue=imprimante fichier        $ lpr -Pimprimante fichier
      $ SEARCH *.tex.* "g�ologie"             $ grep g�ologie *tex




 Regardez en plus loin dans le document pour avoir d'autres exemples.
 Si vous voulez vous attaquer aux notions de droits, de propri�taires
 et aux sujets avanc�s, reportez vous � la section ``Sujets avanc�s''.


 22..22..  RR��ppeerrttooiirreess



 �  Les noms des r�pertoires sous VMS sont de la forme
    [p�re.r�p.sousr�p]. L'�quivalent sous Linux est :
    /p�re/r�p/sousr�p/.  Le p�re de tous les r�pertoires est le
    r�pertoire racine appel� / ; il contient d'autres r�pertoires comme
    /bin, /usr, /tmp, /etc, et bien d'autres.
 �  Le r�pertoire /home contient les r�pertoires _h_o_m_e (NDT : � home �
    signifie � maison �) des utilisateurs : par exemple, /home/pierre,
    /home/paul et ainsi de suite. Quand un utilisateur se logue, il
    commence dans son r�pertoire _h_o_m_e ;  c'est l'�quivalent de
    SYS$LOGIN. Il y a un raccourci pour le r�pertoire _h_o_m_e : le tilde
    (� ~ �). Ainsi, cd ~/tmp est �quivalent �, disons, cd
    /home/paul/tmp.

 �  Les noms des r�pertoires sont soumis aux m�mes r�gles que ceux des
    fichiers. En plus de cela, chaque r�pertoire a deux entr�es
    sp�ciales : l'une est . : elle repr�sente le r�pertoire lui-m�me
    (comme []) ; l'autre, .., repr�sente le r�pertoire parent (comme
    [-]).

 Et maintenant quelques autres exemples :




      VMS                                     Linux
      ---------------------------------------------------------------------

      $ CREATE/DIR [.r�pertoire]              $ mkdir r�pertoire
      $ CREATE/DIR [.dir1.dir2.dir3]          $ mkdirhier r�p1/r�p2/r�p3
         non/disponible                       $ rmdir r�pertoire
                                              (si le r�pertoire est vide)
                                              $ rm -R r�pertoire
      $ DIRECTORY                             $ ls
      $ DIRECTORY [...]fichier.*.*            $ find . -name "fichier*"
      $ SET DEF SYS$LOGIN                     $ cd
      $ SET DEF [-]                           $ cd ..
      $ SET DEF [p�re.r�p.sousr�p]            $ cd /p�re/r�p/sousr�p
      $ SET DEF [.r�p.sousr�p]                $ cd r�p/sousr�p
      $ SHOW DEF                              $ pwd




 Si vous voulez en savoir plus sur les droits, les propri�taires, ou
 tout simplement en savoir plus tout court, sautez � la section
 ``Sujets avanc�s''.


 22..33..  PPrrooggrraammmmeess



 �  Les commandes, les programmes compil�s et les scripts _s_h_e_l_l
    (�quivalent des fichiers de commandes de VMS) n'ont pas forc�ment
    une extension comme .EXE or .COM et peuvent s'appeler comme bon
    vous semble. Les fichiers ex�cutables sont marqu�s d'un ast�risque
    (� * �) lorsque vous ex�cutez ls -F.

 �  Pour lancer un fichier ex�cutable, il suffit de taper son nom (pas
    de RUN, ni de PROGRAM.EXE, ni encore de @COMMAND). Il est donc
    n�cessaire que le fichier soit situ� dans un r�pertoire du _p_a_t_h,
    qui est une liste de r�pertoires. En g�n�ral, le _p_a_t_h contient des
    r�pertoires comme /bin, /usr/bin, /usr/X11R6/bin, etc. Si vous
    �crivez vos propres programmes, placez-les dans un r�pertoire de
    votre _p_a_t_h (pour savoir comment, reportez-vous � la section
    ``Configurer''). Vous pouvez aussi lancer un programme en indiquant
    son chemin complet, par exemple /home/paul/donn�es/monprog ou
    ./monprog si le r�pertoire courant n'est pas dans le _p_a_t_h.

 �  Les options des commandes sont pass�es sur la ligne de commande
    gr�ce � OPTION= sous VMS et gr�ce � -_u_n_e___o_p_t_i_o_n ou --_u_n_e___o_p_t_i_o_n
    sous Linux, _u_n_e___o_p_t_i_o_n �tant une lettre, diff�rentes lettres
    combin�es ou un mot. En particulier, l'option -R (r�cursif) de
    plusieurs commandes de Linux permet de faire la m�me chose que le
    [...] de VMS.

 �  Vous pouvez lancer plusieurs commandes sur la ligne de commande :



      $ commande1 ; commande2 ; ... ; commande





 �  Toute la flexibilit� de Linux repose sur deux fonctionnalit�s
    (l'une n'existe pas sous VMS, l'autre est mal impl�ment�e) : la
    redirection des entr�s/sorties et les _p_i_p_e_s. (Pour �tre sinc�re,
    j'ai entendu que les versions r�centes de IDL supportent la
    redirection et les _p_i_p_e_s mais je n'ai pas ces versions.) La
    redirection sous VMS n'est qu'un effet de bord (souvenez vous de
    l'option /OUTPUT=) ou une t�che fastidieuse comme



      $ DEFINE /USER SYS$OUTPUT OUT
      $ DEFINE /USER SYS$INPUT IN
      $ RUN PROG





 dont l'�quivalent sous Linux (Unix) est simplement :



      $ prog < in > out





 Utiliser des _p_i_p_e_s est tout simplement impossible sous VMS mais ils
 jouent un r�le cl� sous Unix. En voici un exemple typique :



      $ monprog < donn�es | filtre1 | filtre2 >> r�sultat.dat 2> erreurs.log &





 Traduisons. Le programme monprog utilise le fichier donn�es comme
 entr�e, sa sortie est canalis�e (gr�ce � |) vers le programme filtre1
 qui l'utilise en tant qu'entr�e et la traite. La sortie r�sultante est
 canalis�e (_p_i_p_�_e) vers filtre2 pour �tre encore une fois trait�e.  La
 sortie finale est ajout�e (gr�ce � >>) au fichier r�sultat.dat, et les
 messages d'erreurs sont redirig�s (gr�ce � 2>) vers le fichier
 errors.log.  Tout ceci est ex�cut� en arri�re-plan (gr�ce au & � la
 fin de la ligne de commande). Pour en savoir plus � ce sujet,
 reportez-vous � la section ``Exemples''.



 Pour le multit�che, les files, et tout ce qui s'y rapporte, reportez-
 vous � la section ``Sujets avanc�s''.


 22..44..  VViissiittee gguuiidd��ee


 Maintenant vous �tes pr�t pour essayer Linux. Entrez votre identifiant
 et votre mot de passe. Attention, Unix distingue les minuscules des
 majuscules. Ainsi, si votre login et votre mot de passe sont pierre et
 Mon_Code, ne tapez _p_a_s Pierre ou mon_code.

 Une fois que vous �tes logu�, le prompt s'affiche. Il y a des chances
 pour que se soit quelque chose du genre nom_de_la_machine:$. Si vous
 voulez le changer ou lancer des programmes automatiquement, vous
 devrez �diter le fichier cach� .profile ou .bash_profile (jetez un
 oeil aux exemples dans la section ``Configurer''). C'est l'�quivalent
 de LOGIN.COM.

 Appuyer sur alt + F1, alt + F2, ..., alt + F6 permet de changer de
 console virtuelle. Quand une console virtuelle est occup�e avec une
 application plein �cran, vous pouvez changer de console et continuer �
 travailler.  Essayez et loguez-vous sur une autre console virtuelle.

 Maintenant, vous voulez peut-�tre lancer le _S_y_s_t_�_m_e _X _W_i_n_d_o_w (que nous
 appellerons maintenant X). X est un environnement graphique similaire
 au DECWindows --- en fait, ce dernier d�rive de X. Tapez la commande
 startx et attendez quelques secondes ; vous verrez probablement
 s'ouvrir un xterm ou un autre �mulateur de terminal, et peut-�tre une
 barre de boutons (cela d�pend de la mani�re dont votre administrateur
 syst�me a configur� votre machine Linux). Cliquez sur le menu (essayez
 les deux boutons de la souris) pour voir les menus.

 Quand vous utilisez X, vous devez appuyez sur ctrl + alt + F1, ...,
 ctrl + alt + F6 pour acc�der au mode texte (console). Essayez. Quand
 vous �tes dans une console, vous pouvez revenir � X en appuyant sur
 alt + F7. Pour quitter X, suivez les instructions de votre menu ou
 appuyez sur ctrl + alt + backspace.

 Tapez la commande suivante pour obtenir une liste du contenu du
 r�pertoire courant (incluant les fichiers cach�s) :



      $ ls -al




 Appuyez sur shift + page up pour faire d�filer l'�cran vers le haut.
 Maintenant, pour obtenir de l'aide sur la commande ls tapez



      $ man ls




 Appuyez sur q pour quitter. Pour finir notre tour d'horizon, tapez
 exit pour quitter votre session. Si maintenant vous voulez �teindre
 votre PC, appuyez sur ctrl + alt + suppr et attendez quelques secondes
 (n'�teignez _j_a_m_a_i_s votre PC tant que Linux tourne ; cela peut causer
 des dommages dans le syst�me de fichier).


 Si vous pensez que vous �tes pr�t pour travailler, allez-y. Mais si
 j'�tais vous, je passerais d'abord par la section ``Sujets avanc�s''.


 33..  ��ddiitteerr ddeess ffiicchhiieerrss


 EDT ne tourne pas sous Linux, mais il y a beaucoup d'autres �diteurs
 disponibles. Le seul qui soit s�r d'�tre pr�sent sur tout syst�me Unix
 est vi --- oubliez-le, votre administrateur en a s�rement install� un
 meilleur. L'�diteur le plus populaire est probablement emacs, qui peut
 �muler EDT jusqu'� un certain degr� ; jed est un autre �diteur qui
 permet l'�mulation de EDT.

 Ces deux �diteurs sont particuli�rement utiles pour �diter des sources
 de programmes puisque qu'ils ont deux fonctionnalit�s inconnue de
 EDT : la coloration syntaxique et l'indentation automatique. De plus,
 vous pouvez compilez vos programmes � partir de l'�diteur (gr�ce � M-x
 compile sous emacs --- pour comprendre la notation � M-x compile �
 lisez la suite ; en cas d'erreur de  syntaxe, le curseur se
 positionnera tout seul sur la ligne en question. Je parie que vous ne
 voudrez plus jamais utiliser EDT apr�s.

 Si vous avez emacs, lancez-le. Tout d'abord vous devez comprendre le
 syst�me de notation de combinaison de touche d'emacs. C d�signe
 contr�le et M la touche m�ta (en g�n�ral alt ou �chap).  Maintenant,
 tapez M-x edt-emultation-on. M-x permet de lancer des commandes avec
 emacs comme ctrl + z avec EDT. � partir de maintenant, emacs fait
 comme s'il �tait EDT � part pour quelques commandes :


 �  n'appuyez _p_a_s sur ctrl + z pour lancer une commande. Si vous l'avez
    fait, vous avez stopp� emacs. Tapez fg pour reprendre votre session
    emacs ;

 �  appuyez sur C-h ? pour obtenir de l'aide ou sur C-h t pour lancer
    un tutoriel ;

 �  pour sauver un fichier, appuyez sur C-x C-s ;

 �  pour quittez, appuyez sur C-x C-c ;

 �  pour ins�rez un nouveau fichier dans un buffer (pour ouvrir un
    fichier, en gros), appuyez sur C-x C-f, et ensuite C-x b pour
    changer de buffer.

 Si vous avez jed, demandez � votre administrateur de le configurer
 comme il faut. L'�mulation est active d�s que vous le lancez. Utilisez
 les m�me touches que sur EDT et appuyez sur �chap ? h pour obtenir
 l'aide. Les commandes sont lanc�es de la m�me mani�re que dans emacs.
 De plus, il y a quelques raccourcis pratiques faisant d�faut � EDT ;
 vous pouvez en plus configurer ces raccourcis clavier. Demandez �
 votre administrateur.

 Vous pouvez aussi utilisez un autre �diteur avec une interface
 compl�tement diff�rente. emacs en mode natif est un choix courant. Un
 autre �diteur populaire est joe qui peut �muler d'autres �diteurs
 comme emacs lui-m�me (en �tant m�me plus facile � utiliser) ou
 l'�diteur DOS. Lancez l'�diteur sous le nom jmacs ou jstar et appuyez
 respectivement sur ctrl + x h ou ctrl + j pour obtenir l'aide en
 ligne. emacs et jed sont _b_e_a_u_c_o_u_p plus puissants que ce bon vieux EDT.





 44..  TTeeXXeerr


 TeX et LaTeX sont identiques � leurs homologues de VMS --- seulement
 plus rapides :-), mais les outils pour manipuler les fichiers .dvi
 et .ps sont bien sup�rieurs :


 �  Pour compiler un fichier TeX faites comme d'habitude tex file.tex.

 �  Pour convertir un fichier .dvi en .ps, tapez dvips -o fichier.ps
    fichier.dvi.

 �  Pour visualiser un fichier .dvi, tapez lors d'une session X xdvi
    fichier.dvi &. Cliquez sur la page pour zoomer. Ce programme est
    intelligent : si vous �ditez et lancez TeX pour produire une
    nouvelle version de votre fichier .dvi, xdvi actualisera
    l'affichage.

 �  Pour visualiser un fichier .ps, taper lors d'une session X
    ghostview fichier.ps &. Cliquez sur la page pour zoomer. Le
    document entier ou des pages s�lectionn�s peuvent �tre imprim�s. Un
    programme plus r�cent et meilleur permet �galement de faire �a :
    gv ;

 �  Pour imprimer un fichier .ps on utilise g�n�ralement la commande
    lpr fichier.ps. Cependant si l'imprimante postscript s'appelle, par
    exemple, � ps � (demandez � votre administrateur syst�me), il
    faudra faire lrp -Pps fichier.ps. Pour plus d'informations au sujet
    des files d'impressions, allez � la section ``Files
    d'impressions''.


 55..  PPrrooggrraammmmeerr


 Programmer sous Linux est _b_e_a_u_c_o_u_p plus agr�able : il existe un grand
 nombre d'outils qui rendent la programmation plus facile et plus
 rapide. Par exemple, la torture qu'est le cycle �dition, sauvegarde,
 sortie de l'�diteur, compilation, r��dition, etc. peut �tre raccourci
 en utilisant des �diteurs comme emacs ou jed, comme nous l'avons vu au
 dessus.


 55..11..  FFoorrttrraann


 Il n'y a pas de r�elle diff�rence pour le fortran, mais sachez qu'au
 moment o� j'�cris ces lignes, les compilateurs (libres) ne sont pas
 totalement compatibles avec ceux de VMS ; attendez-vous � quelques
 probl�mes mineurs (en fait, le compilateur de VMS utilise des
 extensions qui ne sont pas standard). Jetez un oeil � /usr/doc/g77/DOC
 ou /usr/doc/f2c/d2c.ps pour plus de d�tails.

 Votre administrateur a sans doute install� soit le compilateur natif
 g77 (bien, mais, au jour de la version 0.5.21, toujours pas
 parfaitement compatible avec le Fortran de DEC), soit le traducteur de
 Fortran en C, f2c, et un des ses front-ends qui font de lui une
 imitation de compilateur natif. D'apr�s mon exp�rience, le paquetage
 yaf77 est celui qui donne les meilleurs r�sultats.

 Pour compiler un source en Fortran avec g77, �ditez le et sauvez le
 avec l'extension .f, et faites



 $ g77 monprog.f




 Cela va cr�er par d�faut un ex�cutable appel� a.out (vous n'avez pas �
 effectuer les liens). Pour donner � l'ex�cutable un nom diff�rent et
 faire quelques optimisations :



      $ g77 -O2 -o monprog monprog.f




 M�fiez-vous des optimisations ! Demandez � votre administrateur
 syst�me de lire la documentation fournie avec le compilateur et de
 vous dire s'il y a des probl�mes.

 Pour compiler une sous-routine :



      $ g77 -c masub.f




 Un fichier masub.o sera cr��. Pour lier cette sous-routine � un
 programme, vous devrez faire



      $ g77 -o monprog monprog.f masub.o




 Si vous avez plusieurs sous-routines externes et que vous voulez cr�er
 une biblioth�que, faites



      $ cd sousroutines/
      $ cat *f > mabib.f ; g77 -c mabib.f




 Le fichier mabib.o cr�� pourra alors �tre li� � vos programmes.

 Pour finir, pour lier une biblioth�que externe appel�e, disons,
 liblambda.so , utilisez



      $ g77 -o monprog monprog.f -llambda




 Si vous avez f2c, vous n'aurez qu'� utiliser f77 ou fort77 � la place
 de g77.


 Un autre outil de programmation utile est make. Il est d�crit ci-
 dessous.


 55..22..  UUttiilliisseerr mmaakkee


 make est un outil pour g�rer la compilation de programmes divis�s en
 plusieurs fichiers sources.

 Supposons que vous ayez des fichiers sources contenant vos routines
 appel�s fichier_1.f, fichier_2.f et fichier_3.f, et un fichier source
 principal qui utilise ces routines appel� monprog.f. Si vous compilez
 votre programme � la main, quand vous modifierez un fichier source
 vous allez devoir chercher quel fichier d�pend de quel fichier, et les
 recompiler en tenant compte des d�pendances.

 Plut�t que de devenir fou, je vous propose d'�crire un _m_a_k_e_f_i_l_e. C'est
 un fichier texte qui contient les d�pendances entre les sources :
 quand un source est modifi�, seuls les sources qui d�pendent du
 fichier modifi� seront recompil�es.

 Dans notre cas, le _m_a_k_e_f_i_l_e ressemblerait � ceci :


 ______________________________________________________________________

 # Voici le Makefile
 # Attention : appuyez sur la touche tabulation quand � <TAB> �
 # est �crit ! C'est tr�s important : n'utilisez pas d'espace � la place.

 monprog: monprog.o fichier_1.o fichier_2.o fichier_3.o
 <TAB>g77 -o monprog monprog.o fichier_1.o fichier_2.o fichier_3.o
 # monprog d�pend de quatre fichiers objets

 monprog.o: monprog.f
 <TAB>g77 -c monprog.f
 # monprog.o d�pend de son fichier source

 fichier_1.o: fichier_1.f
 <TAB>g77 -c fichier_1.f
 # fichier_1.o d�pend de son fichier source

 fichier_2.o: fichier_2.f fichier_1.o
 <TAB>g77 -c fichier_2.f fichier_1.o
 # fichier_2.o d�pend de son fichier source et d'un fichier objet

 fichier_3.o: fichier_3.f fichier_2.o
 <TAB>g77 -c fichier_3.f fichier_2.o
 # fichier_3.o d�pend de son fichier source et d'un fichier objet

 # fin du Makefile
 ______________________________________________________________________



 Enregistrez ce fichier sous le nom Makefile et tapez make pour
 compiler votre programme. Vous pouvez aussi l'appeler monprog.mak et
 taper make -f monprog.mak. Et bien s�r, si vous voulez en savoir
 plus : info make.


 55..33..  SSccrriippttss sshheellll



 Les scripts _s_h_e_l_l sont les �quivalents des fichiers de commandes de
 VMS et, pour changer, sont beaucoup plus puissants.

 Pour �crire un script, tout ce que vous avez � faire est d'�crire un
 fichier au format ASCII contenant les commandes, l'enregistrer et le
 rendre ex�cutable (chmod +x fichier). Pour le lancer, tapez son nom
 (pr�c�d� de ./ s'il n'est pas dans le _p_a_t_h).

 �crire des scripts avec bash est un sujet tellement vaste qu'il
 n�cessiterait un livre entier, et je ne ne vais pas m'attarder sur le
 sujet. Je vais juste vous donner un exemple plus ou moins
 compr�hensible et, je l'esp�re, utile, � partir duquel vous pourrez
 comprendre quelques r�gles de base.


 ______________________________________________________________________
 #!/bin/sh
 # exemple.sh
 # Je suis un commentaire.
 # Ne modifiez pas la premi�re ligne, elle doit �tre pr�sente.
 echo "Ce syst�me est : `uname -a`" # utilise la sortie de la commande
 echo "Mon nom est $0" # variable interne
 echo "Vous m'avez donn� les $# param�tres suivants : "$*
 echo "Le premier param�tre est : "$1
 echo -n "Quel est votre nom ? " ; read votre_name
 echo remarquez la diff�rence : "Salut $votre_name" # cit� avec "
 echo remarquez la diff�rence : 'Salut $votre_name' # cit� avec '
 REPS=0 ; FICHIERS=0
 for fichier in `ls .` ; do
   if [ -d ${fichier} ] ; then # si le fichier est un r�pertoire
     REPS=`expr $REPS + 1`  # REPS = REPS + 1
   elif [ -f ${fichier} ] ; then
     FICHIER=`expr $FICHIER + 1`
   fi
   case ${fichier} in
     *.gif|*jpg) echo "${fichier}: fichier graphique" ;;
     *.txt|*.tex) echo "${fichier}: fichier texte" ;;
     *.c|*.f|*.for) echo "${fichier}: fichier source" ;;
     *) echo "${fichier}: fichier quelconque" ;;
   esac
 done
 echo "Il y a ${REPS} r�pertoires et ${FICHIERS} fichiers"
 ls | grep "ZxY--!!!WKW"
 if [ $? != 0 ] ; then # valeur de sortie de la derni�re commande
   echo "ZxY--!!!WKW n'a pas �t� trouv�"
 fi
 echo "�a suffit... tapez 'man bash' si vous voulez plus d'informations."
 echo "Note du traducteur : 'info bash' est plus complet."
 ______________________________________________________________________




 55..44..  CC


 Linux est un excellent environnement pour la programmation en C. Si
 vous connaissez le C, voici quelques conseils pour vous d�brouiller
 sous Linux. Pour compiler le c�l�bre hello.c vous utiliserez le
 compilateur gcc, qui est standard dans le monde de Linux et qui a la
 m�me syntaxe que g77 :



      $ gcc -O2 -o hello hello.c

 Pour lier une biblioth�que � un programme, ajoutez l'option
 -lbiblioth�que.  Par exemple pour lier la biblioth�que math et
 optimiser faites



      $ gcc -O2 -o mathprog mathprog.c -lm




 (L'option -lbiblioth�que force gcc � lier la biblioth�que
 /usr/lib/libbiblioth�que.a ; ainsi -lm lie /usr/lib/libm.a.)

 Quand votre programme est divis� en plusieurs fichiers sources, vous
 aurez besoin du programme make d�crit juste au dessus.

 Vous pouvez obtenir de l'aide sur quelques fonctions de la libc dans
 la section 3 des pages man. Par exemple :



      $ man 3 printf




 Il existe beaucoup de biblioth�ques disponible. Parmi les premi�res
 que vous voudrez probablement utiliser, il y a ncurses, qui permet de
 g�rer quelques effets du mode texte et svgalib pour faire du
 graphisme.


 66..  GGrraapphhiiqquueess


 Parmi la masse de paquetages de graphiques disponibles, gnuplot sort
 du lot pour sa puissance et sa facilit� d'utilisation. Cr�ez tout
 d'abord deux fichiers de donn�es : 2D-data.dat (deux donn�es par
 ligne) et 3D-data.dat (trois par ligne). Puis, sous X, lancez gnuplot.

 Exemple d'un graphe en 2D :



      gnuplot> set title "mon premier graphe"
      gnuplot> plot '2D-data.dat'
      gnuplot> plot '2D-data.dat' with linespoints
      gnuplot> plot '2D-data.dat', sin(x)
      gnuplot> plot [-5:10] '2D-data.dat'




 Exemple d'un graphe en 3D (chaque � ligne � de _x valeurs est suivie
 d'une ligne vide) :



      gnuplot> set parametric ; set hidden3d ; set contour
      gnuplot> splot '3D-data.dat' using 1:2:3 with linespoints





 Un fichier de donn�es d'une seule colonne (une s�rie de temps par
 exemple) peut aussi �tre dessin� comme un graphe en 2D :



      gnuplot> plot [-5:15] '2D-data-1col.dat' with linespoints




 ou en 3D (avec des lignes vides dans le fichier comme au dessus) :



      gnuplot> set noparametric ; set hidden3d
      gnuplot> splot '3D-data-1col.dat' using 1 with linespoints




 Pour imprimez un graphe, si la commande pour imprimer sur votre
 imprimante postscript est lpr -Pps fichier.ps, faites



      gnuplot> set term post
      gnuplot> set out '| lpr -Pps'
      gnuplot> replot




 Tapez ensuite set term x11 pour r�afficher sur votre serveur X. Ne
 soyez pas d�concert� : la derni�re impression se lancera seulement
 quand vous quitterez gnuplot.

 Pour plus d'informations, tapez help ou regardez le r�pertoire des
 exemples (/usr/lib/gnuplot/demos/) s'il existe.


 77..  MMaaiill eett oouuttiillss ppoouurr IInntteerrnneett


 Du fait qu'Internet est n� sur des machines Unix, on trouve plein
 d'applications de qualit� et facile d'utilisation sous Linux. En voici
 quelques-unes :


 �  Mail : utilisez elm ou pine (NDT : mutt est tr�s bien aussi) pour
    g�rer votre courrier. Ces deux programmes ont une aide en ligne.
    Pour des messages courts, vous pouvez utilisez mail (mail -s
    "Salut" utilisateur@quelquepart < msg.txt). Vous pr�f�rez peut-�tre
    d'autres programmes comme xmail ou �quivalent.

 �  Newsgroups : utilisez tin ou slrn. Ils sont tous les deux tr�s
    intuitifs.

 �  FTP : en plus de l'in�vitable ftp, demandez � votre administrateur
    d'installer l'excellent ncftp ou un m�me un client graphique comme
    xftp.

 �  WWW : netscape, xmosaic, chimera et arena sont des browsers
    graphiques ; lynx quant � lui utilise la console et est rapide et
    pratique.


 88..  SSuujjeettss aavvaanncc��ss


 L�, le jeu devient coriace. Apprenez �a, et ensuite vous pourrez dire
 que vous � connaissez quelque chose � Linux � ;-)


 88..11..  DDrrooiittss eett pprroopprrii��tt��


 Les fichiers et les r�pertoires ont des droits et des propri�taires,
 comme sous VMS. Si nous ne pouvez pas lancer un programme, ne pouvez
 pas modifier un fichier ou ne pouvez pas acc�der � un r�pertoire,
 c'est parce vous n'avez pas les droits ad�quats pour le faire et/ou
 parce que le fichier ne vous appartient pas. Regardez l'exemple
 suivant :



      $ ls -l /bin/ls
      -rwxr-xr-x   1 root     bin         27281 Aug 15  1995 /bin/ls*




 Le premier champ indique les droits du fichier ls. Il y a trois types
 de propri�t� : le propri�taire, le groupe et les autres (comme le
 propri�taire, le groupe et le reste du monde sous VMS) et trois
 droits : lecture, �criture et ex�cution.

 De gauche � droite, - est le type du fichier  (- d�signe un fichier
 ordinaire, d un r�pertoire, l un lien, etc.) ; rwx sont les droits du
 propri�taire (lecture, �criture, ex�cution) ;  r-x sont les droits du
 groupe du propri�taire (lecture, ex�cution) ; r-x sont les droits pour
 tous les autres utilisateurs (lecture, �criture).

 Pour changer les droits d'un fichier :



      $ chmod <quiXdroit> <fichier>




 Avec _q_u_i repr�sentant u (ce sont alors les droits du propri�taire qui
 sont affect�s), g (ceux du groupe) ou o (ceux des � autres �). X est
 soit + (dans ce cas il donne les droits), soit - (il les enl�ve). Et
 _d_r_o_i_t est r, w ou x. Voici un exemple :



      $ chmod u+x fichier




 Cela permet de rendre le fichier ex�cutable pour le propri�taire. Il
 existe un petit raccourci chmod +x fichier.



      $ chmod go-wx fichier



 L�, on enl�ve les droits d'�criture et d'ex�cution au groupe et aux
 autres (donc � tout le monde sauf au propri�taire).



      $ chmod ugo+rwx fichier




 Tous les droits sont donn�s � tout le monde.

 Une mani�re plus courte de pr�ciser les droits se base sur les
 nombres : rwxr-xr-x peut �tre exprim� par 755 (chaque lettre
 correspond � un bit : --- vaut 0, --x 1, -w- 2, etc).

 Pour un r�pertoire, rx signifie que vous pouvez vous placer dans ce
 r�pertoire et w que vous pouvez effacer un fichier dans ce r�pertoire
 (en tenant compte des droits du fichier �videmment) ou le r�pertoire
 lui-m�me. Tout �a n'est qu'une petit partie du sujet : man est votre
 ami.

 Pour changer le propri�taire d'un fichier :



      $ chown <utilisateur> <fichier>




 Pour r�sumer, voici un tableau :



      VMS                             Linux
      ------------------------------------------------------------------------------

      SET PROT=(O:RW) fichier.txt     $ chmod u+rw fichier.txt
                                      $ chmod 600 fichier.txt
      SET PROT=(O:RWED,W) fichier     $ chmod u+rwx fichier
                                      $ chmod 700 fichier
      SET PROT=(O:RWED,W:RE) fichier  $ chmod 755 fichier
      SET PROT=(O:RW,G:RW,W) fichier  $ chmod 660 fichier
      SET FILE/OWNER_UIC=JOE fichier  $ chown joe fichier
      SET DIR/OWNER_UIC=JOE [.dir]    $ chown joe rep/






 88..22..  MMuullttiitt��cchhee :: pprroocceessssuuss eett tt��cchheess (( jjoobbss ))


 En voici plus � propos de la mani�re de lancer les programmes. Il n'y
 a pas de file d'attente sous Linux ; le multit�che est g�r� tr�s
 diff�remment. Voici � quoi ressemble une ligne de commande typique :



      $ commande -s1 -s2 ... -sn par1 par2 ... parn < entr�e > sortie &




 Maintenant, voyons comment marche le multit�che. Les programmes qui
 tournent en avant-plan (_f_o_r_e_g_r_o_u_n_d) ou arri�re-plan (_b_a_c_k_g_r_o_u_n_d) sont
 appel�s des processus.


 �  Pour lancer un processus en arri�re plan :



      $ programme [option] [< entr�e] [> sortie] &
      [1] 234





 Le shell vous donne le num�ro de _j_o_b (le premier nombre ; regardez ci-
 dessus) et le PID (le num�ro du processus). Chaque processus est iden�
 tifi� par son PID.

 Pour voir combien de processus sont lanc�s :



      $ ps -ax





 La liste des processus actifs va �tre affich�e.

 �  Pour tuer un processus :



      $ kill <PID>





 Vous aurez peut-�tre besoin de tuer un processus quand vous ne savez
 pas le quitter de la bonne mani�re... ;-) Parfois, une processus sera
 seulement tu� par une des commandes suivantes :



      $ kill -15 <PID>
      $ kill -9 <PID>





 En plus de �a, le shell vous permet de stopper ou de suspendre
 temporairement un processus, envoyer un processus en arri�re-plan ou
 en ramener un en avant-plan. Dans ce contexte, les processus sont
 appel�es jobs.


 �  Pour voir combien de _j_o_b_s sont actifs :




 $ jobs





 Les _j_o_b_s sont identif�s par le nombre que le shell leur donne et non
 pas par leur PID.

 �  Pour stopper un processus qui tourne en avant-plan appuyez sur
    ctrl + c. (�a ne marche pas toujours.)

 �  Pour suspendre un processus tournant en avant-plan appuyez sur
    ctrl + z (Idem.)

 �  Pour envoyer un processus suspendu en arri�re-plan (qui devient
    alors un _j_o_b) :



      $ bg <job>





 �  Pour envoyer un _j_o_b en avant-plan :



      $ fg <job>





 �  Pour tuer un _j_o_b :



      $ kill %<job>






 88..33..  FFiicchhiieerrss,, ddeeuuxxii��mmee


 Voici plus d'information sur les fichiers.


 �  _s_t_d_i_n, _s_t_d_o_u_t et _s_t_d_e_r_r : sous Unix, tous les composants du syst�me
    sont assimil�s � des fichiers. Les commandes et les programmes
    puisent leur entr�e dans un � fichier � appel� _s_t_d_i_n (l'entr�e
    standard : g�n�ralement le clavier), redirigent leur sortie vers un
    � fichier � appel� _s_t_d_o_u_t (g�n�ralement l'�cran) et leurs erreurs
    vers un � fichier � appel� _s_t_d_e_r_r (g�n�ralement l'�cran).

    En utilisant < et > vous redirigez l'entr�e et la sortie vers un
    fichier diff�rent. De plus, >> ajoute la sortie � un fichier � la
    place de l'�craser ; 2> redirige les messages d'erreur (_s_t_d_e_r_r) ;
    2>&1 redirige _s_t_d_e_r_r vers _s_t_d_o_u_t, alors que 1>&2 redirige _s_t_d_o_u_t
    vers _s_t_d_e_r_r. Il y a un � trou noir � appel� /dev/null : tout ce qui
    est redirigez vers lui dispara�t.
 �  Jokers/ : sur la ligne de commande * correspond � (et d�signe) tous
    les fichiers sauf ceux qui sont cach�s ; .* correspond � tous les
    fichiers cach�s ; *.* correspond seulement ceux qui ont un � . � au
    milieu de leur nom suivi par d'autres caract�res ; l*c correspondra
    � � lo�c � et � luc � ; *c* correspondra � � piocher � et � picorer
    �. % devient ?.  Il existe �galement un autre joker : []. Par
    exemple : [abc]* d�signe les fichiers commen�ant par a, b ou c ;
    *[I-N123] d�signe les fichier finissant par I, J, K, L, M, N, 1, 2
    ou 3.

 �  mv (RENAME) ne permet pas de renommer plusieurs fichiers d'un coup.
    Ainsi, mv *.xxx *.yyy ne marchera pas.

 �  Utilisez cp -i et mv -i pour �tre pr�venu quand un fichier va �tre
    �cras�.


 88..44..  FFiilleess dd''iimmpprreessssiioonn


 Vos fichiers � imprimer sont plac�s dans une file comme sous VMS.
 Quand vous lancez une commande d'impression, vous aurez peut-�tre �
 pr�ciser le nom de l'imprimante. Par exemple



      $ lpr fichier.txt # ce fichier est plac� dans la file de l'imprimante standard
      $ lpr -Plaser fichier.ps # celui dans celle de l'imprimante � laser �




 Pour g�rer la file d'impression utilisez les commandes suivantes :



      VMS                                     Linux
      ------------------------------------------------------------------------------

      $ PRINT fichier.ps                      $ lpr fichier.ps
      $ PRINT/QUEUE=laser fichier.ps          $ lpr -Plaser fichier.ps
      $ SHOW QUEUE                            $ lpq
      $ SHOW QUEUE/QUEUE=laser                $ lpq -Plaser
      $ STOP/QUEUE                            $ lprm <num�ro de job>





 99..  CCoonnffiigguurreerr


 Votre administrateur syst�me a d� vous fournir certains fichier de
 configuration comme .xinitrc, .bash_profile et .inputrc. Ceux que vous
 voudrez peut-�tre modifier sont :


 �  .bash_profile ou .profile : ce fichier est lu par le shell au
    moment du login. C'est l'�quivalent de LOGIN.COM.

 �  .bash_logout : celui-ci est lu en fin de session. C'est
    l'�quivalent de LOGOUT.COM.

 �  .bashrc : il est lu par les shells non interactifs


 �  .inputrc : ce fichier configure les r�les des touches du clavier et
    le comportement du shell.

 Pour vous donner un exemple, j'ai inclus une partie mon
 .bash_profile :


 ______________________________________________________________________
 # $HOME/.bash_profile

 # on ne red�finit pas le path si ce n'est pas n�cessaire
 echo $PATH | grep $LOGNAME > /dev/null
 if [ $? != 0 ]
 then
   export PATH="$PATH:/home/$LOGNAME/bin"  # ajoute mon r�pertoire au path
 fi

 export PS1='LOGNAME:\w\$ '
 export PS2='Continued...>'

 # alias

 alias bin="cd ~/bin" ; alias cp="cp -i" ; alias d="dir"
 alias del="delete" ; alias dir="/bin/ls $LS_OPTIONS --format=vertical"
 alias ed="jed" ; alias mv='mv -i'
 alias u="cd .." ; alias undel="undelete"

 # Quelques fonctions utiles

 inst() # installe un tarball gzip� dans le r�pertoire courant
 {
   tar xvfz $1
 }
 cz() # liste le contenu d'une archive .zip
 {
   unzip -l $*
 }
 ctgz() # liste le contenu d'un tarball gzip�
 {
   for fichier in $* ; do
     tar tfz ${fichier}
   done
 }
 tgz() # cr�e une archive .tgz � la zip.
 {
   nom=$1 ; tar cvf $1 ; shift
   tar -rf ${nom} $* ; gzip -S .tgz ${nom}
 }
 ______________________________________________________________________



 Et voici mon .inputrc :













 ______________________________________________________________________
 # $HOME/.inputrc
 #
 # Ce fichier est lu par bash et d�finit les fonctions attach�s aux touches
 # par le shell ; ce qui suit permet d'avoir un comportement courant pour
 # les touches <it/fin/, <it/home/ (la touche au dessus de fin), <it/suppr/
 # et les caract�res accentu�s.
 # Pour plus d'information, man readline.

 "\e[1~": beginning-of-line
 "\e[3~": delete-char
 "\e[4~": end-of-line

 set bell-style visible
 set meta-flag On
 set convert-meta Off
 set output-meta On
 set horizontal-scroll-mode On
 set show-all-if-ambiguous On

 # (F1 .. F5) sont "\e[[A" ... "\e[[E"

 "\e[[A": "info "
 ______________________________________________________________________




 1100..  PPrrooggrraammmmeess uuttiilleess



 1100..11..  VViissiioonnnneeuurr ddee ffiicchhiieerrss :: lleessss


 Vous utiliserez un tel programme tous les jours, c'est pourquoi je
 vais vous donner quelques astuces pour l'utiliser au mieux. Avant
 tout, demandez � votre administrateur de configurer less pour qu'il
 puisse afficher non seulement des fichiers textes mais aussi les
 fichiers compress�s, les archives, etc.

 Comme les derni�res versions de TYPE, less vous permet de vous
 d�placer dans le fichier dans les deux directions. Il accepte aussi
 plusieurs commandes qui sont lanc�es en appuyant sur une touche. Les
 plus utilis�s sont :


 �  tout d'abord, appuyez sur q pour quitter ;

 �  h pour obtenir l'aide ;

 �  g pour aller au d�but du fichier, G � la fin, un nombre suivi de g
    pour aller � cette ligne (par exemple 125g), un nombre suivi de %
    pour aller � ce pourcentage du fichier ;

 �  /motif recherche vers l'avant le motif ; n recherche vers l'avant
    la l'occurrence suivante ; ?pattern et N font la m�me chose vers
    l'arri�re ;

 �  m suivi d'une lettre marque la position courante (par exemple ma) ;

 �  :e ouvre un autre fichier ;

 �  !commande ex�cute un shell.


 1100..22..  NNuumm��rrooss ddee vveerrssiioonn ssoouuss LLiinnuuxx


 H�las, Linux ne supporte toujours pas les num�ros de version
 nativement.  Cependant, on peut r�gler ce probl�me de deux mani�res.
 La premi�re est d'utiliser RCS (Revision Control System) qui vous
 permet de garder la trace des pr�c�dentes versions d'un fichier. RCS
 est trait� dans _L_e _m_i_n_i_-_H_o_w_t_o _R_C_S.

 La seconde est d'utiliser un �diteur qui sait traiter les num�ros de
 version.  emacs ou joe feront l'affaire. Pour emacs, ajoutez ces
 lignes dans votre .emacs.


 ______________________________________________________________________
 (setq version-control t)
 (setq kept-new-versions 15) ;;; ou toute autre valeur
 (setq kept-old-versions 15)
 (setq backup-by-copying-when-linked t)
 (setq backup-by-copying-when-mismatch t)
 ______________________________________________________________________



 Pour jed, v�rifiez que vous avez une version sup�rieure � la 0.98.7.
 Le patch pour les num�ros de version est disponible sur
 http://ibogeo.df.unibo.it/guido/slang/backups.sl


 1100..33..  AArrcchhiivveerr :: ttaarr eett ggzziipp


 Sous Unix il existe quelques applications tr�s r�pandues qui sont
 utilis�s pour archiver et compresser des fichiers. tar est utilis�
 pour faire des archives (c'est � dire un regroupement de fichiers).
 Pour faire une archive :



      $ tar -cvf <archive.tar> <fichier> [fichier...]




 Pour extraire des fichiers d'une archive :



      $ tar -xpvf <archive.tar> [fichier...]




 Pour lister le contenu d'une archive :



      $ tar -tf <archive.tar> | less




 Les fichiers peuvent �tre compress�s en utilisant compress ou gzip.
 compress est aujourd'hui obsol�te et on n'utilise plus que gzip.


      $ compress <fichier>
      $ gzip <fichier>




 Ceci cr�era un fichier compress� avec l'extension .Z (pour compress)
 ou .gz (pour gzip). Ces programmes ne font pas d'archives mais
 compressent des fichiers individuellement. Pour d�compresser utilisez



      $ compress -d <fichier.Z>
      $ gzip -d <fichier.gz>




 Faites un tour du c�t� de leurs pages man.

 Les utilitaires unarj, zip et unzip sont aussi disponibles.

 Les fichier avec l'extension .tar.gz ou .tgz (archiv�s par tar, puis
 compress�s par gzip) sont tr�s communs dans le monde Unix. Voici
 comment lister le contenu d'une telle archive :



      $ tar -ztf <fichier.tar.gz> | less




 Pour extraire les fichiers � partir d'un .tar.gz :



      $ tar -zxf <fichier.tar.gz>





 1111..  EExxeemmpplleess dduu mmoonnddee rr��eell


 Le principe central d'Unix est qu'il existe plusieurs commandes
 simples qui peuvent �tre li�es ensemble gr�ce aux _p_i_p_e_s et aux
 redirections pour accomplir des t�ches plus compliqu�es. Regardez les
 exemples suivants (je n'expliquerai que les plus compliqu�s ; pour les
 autres, reportez vous aux sections pr�c�dentes ou aux pages man).


 �  ls est trop rapide et je ne peux pas lire le nom de tous les
    fichiers.



      $ ls | less





 �  J'ai un fichier qui contient une liste de mots. Je veux les trier
    dans l'ordre inverse et les imprimer.
      $ cat fichier.txt | sort -r | lpr





 �  Mon fichier de donn�es contient des doublons. Comment les effacer ?



      $ sort fichier.dat | uniq > nouveaufichier.dat





 �  J'ai un fichier appel� papier.txt ou papier.tex ou quelques choses
    dans le genre mais je ne m'en rappelle plus. Comment le retrouver ?



      $ find ~ -name "papier*"





 Expliquons. find est une commande tr�s utile qui liste tous les
 fichier dans une arborescence (qui commence � partir du r�pertoire
 _h_o_m_e dans ce cas). Sa sortie peut-�tre filtr�e selon plusieurs
 crit�res comme par exemple -name.

 �  J'ai un fichier texte qui contient le mot � entropie � dans ce
    r�pertoire. Existe-t-il quelque chose de comparable � SEARCH ?

    Bien s�r, essayez cela :



      $ grep -l 'entropie' *





 �  Quelque part, j'ai un fichier texte qui contient le mot � entropy �
    et j'aimerai le retrouver. Sous VMS j'aurais utilis� search entropy
    [...]*.*.*, mais grep n'est pas r�cursif.



      $ find . -exec grep -l "entropy" {} \; 2> /dev/null





 find . sort tous les noms des fichiers � partir du r�pertoire courant,
 -exec grep -l "entropy" lance une commande sur chacun des fichiers
 (repr�sent�s par {}), \ termine la commande). Si vous pensez que la
 syntaxe est horrible... vous avez raison :-)

 Vous auriez aussi pu �crire le script suivant :



 ______________________________________________________________________
 #!/bin/sh
 # rgrep: grep r�cursif
 if [ $# != 3 ]
 then
   echo "Utilisation : rgrep <param�tres> <motif> <r�pertoire>"
   exit 1
 fi
 find $3 -name "*" -exec grep $1 $2 {} \; 2> /dev/null
 ______________________________________________________________________



 Voici l'explication. grep marche comme SEARCH et combin� avec find
 nous obtenons le meilleur des deux mondes.

 �  J'ai un fichier qui a deux lignes d'en-t�te et qui a ensuite _n
    donn�es par ligne, pas n�cessairement espac�es de la m�me mani�re.
    Je veux extraire la deuxi�me et le cinqui�me champs de chaque
    ligne. Dois-je �crire un programme en Fortran ?

    Nan. Ceci est plus rapide :



      $ awk 'NL > 2 {print $2, "\t", $5}' fichier.dat > nouveaufichier.dat





 awk est en fait un langage de programmation. Pour chaque ligne � par�
 tir de la troisi�me, on affiche le second et le cinqui�me champ en les
 s�parant par une tabulation. Apprenez � vous servir de awk --- il vous
 fera gagner beaucoup de temps.

 �  J'ai t�l�charg� le ls-lR.gz d'un FTP. Pour chaque sous r�pertoire,
    il y a une ligne � total _x �, avec _x la taille en Kilo-octets du
    r�pertoire. J'aimerais avoir le total de toutes ces valeurs.



      zcat ls-lR.gz | awk ' $1 == "total" { i += $2 } END {print i}'





 zcat sort le contenu du fichier .gz. La sortie est envoy�e vers awk
 dont je vous recommande chaudement de lire la page man.

 �  J'ai �crit un programme en Fortran, monprog, pour calculer un
    param�tre � partir d'un fichier de donn�es. Je voudrais le lancer
    sur des centaines de fichiers et avoir la liste des r�sultats, mais
    c'est une calamit� de demander chaque fois le nom du fichier. Sous
    VMS, j'aurais �crit un long fichier de commande. Et sous Linux ?

    Un script tr�s court. Faites votre programme pour qu'il cherche le
    programme mesdonn�es.dat et pour qu'il afficher le r�sultat sur
    l'�cran (stdout) et �crivez ensuite ce petit script :






    ___________________________________________________________________
    #!/bin/sh
    # monprog.sh: lance la m�me commande sur plusieurs fichiers
    # usage: monprog.sh *.dat
    for fichier in $*  # pour tous les param�tres (e.g. *.dat)
    do
      # ajouter le nom du fichier dans r�sultat.dat
      echo -n "${fichier}:    " >> r�sultats.dat
      # copie le param�tre courant dans mesdonn�es.dat et lance monprog
      # et ajoute le sortie � r�sultats.dat
      cp ${fichier} mesdonn�es.dat ; monprog >> r�sultats.dat
    done
    ___________________________________________________________________



 �  Je veux remplacer � g�ologie � par � g�ophysique � dans tous mes
    fichiers textes. Dois-je les �diter manuellement ?

    Nan. �crivez ce script :


    ___________________________________________________________________
    #!/bin/sh
    # remplace $1 par $2 dans $*
    # utilisation : remplace "vieux-motif" "nouveau-motif" fichier [fichier...]
    VIEUX=$1           # premier param�tre
    NOUVEAU=$2         # second
    shift ; shift      # enlever les deux premier param�tres ; les suivants sont
                       # les noms des fichiers
    for fichier in $*  # pour tous les fichier donn�s en param�tres
    do
    # remplace toutes les occurrences de VIEUX par NOUVEAU et sauve cela
    # dans un fichier temporaire
      sed "s/$VIEUX/$NOUVEAU/g" ${fichier} > ${fichier}.nouveau
    # renommer le fichier temporaire
      /bin/mv ${fichier}.new ${fichier}
    done
    ___________________________________________________________________



 �  J'ai des fichier contenant des donn�es. Je ne connais pas leur
    taille et je dois enlever leur avant-derni�re et leur avant-avant-
    derni�re lignes. Heu... � la mimine ?

    Bien s�r que non :


    ___________________________________________________________________
    #!/bin/sh
    # prune.sh: efface les n-1�me et n-2�me ligne de fichiers
    # utilisation : prune.sh fichier [fichier...]
    for fichier in $*   # pour chaque param�tre
    do
      LIGNES=`wc -l $fichier | awk '{print $1}'`  # nombre de ligne dans fichier
      LIGNES=`expr $LIGNES - 3`                   # LIGNES = LIGNES - 3
      head -n $LIGNES $fichier > $fichier.new     # sort les premi�res lignes
                                                  # de LIGNES
      tail -n 1 $fichier >> $fichier.new          # ajoute la derni�re ligne
    done
    ___________________________________________________________________



 NDT : il est tout de m�me beaucoup plus �l�gant d'utiliser ed :
 ______________________________________________________________________
 #!/bin/sh
 # prune.sh: efface les n-1�me et n-2�me ligne de fichiers
 # utilisation : prune.sh fichier [fichier...]
 for fichier in $*   # pour chaque param�tre
 do
   printf '$-2,$-1d\nw\nq\n' | ed -s $fichier
 done
 ______________________________________________________________________



 J'esp�re que ces exemples vous auront ouvert l'app�tit.


 1122..  AAssttuucceess ddoonntt oonn nnee ppeeuutt ssee ppaasssseerr



 �  La compl�tion de commande : l'appui sur la touche tabulation quand
    vous tapez une commande va compl�ter la ligne de commande. Par
    exemple, disons que vous devez taper less
    un_nom_de_fichier_tr�s_long. Il vous suffira de taper less un puis
    d'appuyer sur tabulation (si vous avez plusieurs fichier qui
    commencent par les m�mes caract�res tapez-en assez pour r�soudre
    l'ambigu�t�).

 �  Faire d�filer l'�cran vers le haut : en appuyant sur Shift-Page_up
    vous pouvez faire d�filer l'�cran vers le haut de quelques pages
    (le nombre de page d�pend de la m�moire vid�o de votre PC).

 �  R�tablir l'�cran : s'il vous arrive de faire un more ou un cat sur
    un fichier binaire votre �cran pourra se retrouver plein de
    symboles bizarres. Pour arranger les choses, � l'aveuglette tapez
    reset ou cette s�quence de caract�res : echo ctrl-v Echap c Entr�e.

 �  Copier du texte sur la console : demandez � votre administrateur
    d'installer gpm, un driver pour la souris en mode texte. Cliquez et
    glissez pour s�lectionner du texte et ensuite appuyez sur le bouton
    droit pour coller le texte s�lectionn�. �a marche entre plusieurs
    consoles virtuelles.

 �  Copier du texte sous X : cliquez et glissez pour s�lectionnez le
    texte dans un xterm et cliquez ensuite sur le bouton du milieu (ou
    les deux boutons) pour coller.


 1133..  LLiirree ddeess bbaannddeess VVMMSS ddeeppuuiiss LLiinnuuxx

 (Cette section a �t� �crite par Mike Miller)


 1133..11..  IInnttrroodduuccttiioonn


 De temps en temps vous pourrez �tre amen� � lire des bandes
 enregistr�es � partir d'une machine sous VMS (ou des bandes
 enregistr�es pour �tre lisibles sous VMS et les syst�mes Unix). En
 g�n�ral, c'est assez facile pour les bandes DECFILES11A.

 Bien que l'on puisse lire ceci comme une partie d'un mini-HOWTO Linux,
 je crois que les informations ici pr�sent�es sont appliquables � tout
 syst�me Unix -- j'ai fait cela avec Linux et les syst�mes Unix d'HP,
 de SUN et de DEC. La principale d�pendance � la plate-forme est le nom
 des fichiers p�riph�riques qui peuvent varier d'un syst�me � l'autre,
 et les options de mt pour sp�cifier le nom du p�riph�rique (par
 exemple, mt -f avec Linux et mt -t sur HPUX 9).

 Avertissement : j'ai seulement essay� cela avec des lecteurs de bande
 Exabyte 8 mm SCSI. Si vous avez lu d'autres formats (vous avez encore
 des lecteurs 9 pistes qui tra�nent quelque part ?), faites-le moi
 savoir et je les ajouterai.


 1133..22..  LLeess bbaasseess


 Pour lire une bande qui a �t� �crite avec la commande copy de VMS (ou
 une commande compatible) tout ce que vous devez savoir est que, pour
 chaque fichier effectif, il y aura trois fichiers de donn�es sur la
 bande : une ent�te, les donn�es et une terminaison. L'ent�te et la
 terminaison sont int�ressantes car elles contiennent des informations
 sur le fichier tel qu'il �tait sous VMS. Le fichier de donn�es est...
 le fichier de donn�es.  Chacun de ces fichiers peut �tre extrait de la
 bande avec la commande dd. La bande peut �tre positionn�e en utilisant
 la commande mt.

 Prenons un exemple. J'ai une bande VMS. Les deux premiers de ses
 fichiers �taient appel�s ce66-2.evt et ce66-3.evt sur le syst�me VMS.
 Le label de la bande est c66a2.

 Si j'ex�cute les commandes suivantes


 ______________________________________________________________________
 $ dd if=$TAPE bs=16k of=ent�te1
 $ dd if=$TAPE bs=16k of=donn�e1
 $ dd if=$TAPE bs=16k of=terminaison1
 $ dd if=$TAPE bs=16k of=ent�te2
 $ dd if=$TAPE bs=16k of=donn�e2
 $ dd if=$TAPE bs=16k of=terminaison2
 ______________________________________________________________________



 je me retrouve avec six fichiers : ent�te1, donn�e1, terminaison1,
 ent�te2, donn�e2 et terminaison2. La syntaxe ici est if="fichier
 d'entr�e", bs="taille des blocs" et of="fichier de sortie". TAPE doit
 �tre une variable d'environnement contenant le nom du p�riph�rique de
 votre lecteur de bande --- par exemple /dev/nts0 si vous utilisez le
 premier disque SCSI sous Linux.

 Si vous aviez voulu r�cup�rer le second fichier, mais pas le premier,
 sous son non d'origine, vous n'auriez pas eu � vous pr�occuper de
 l'ent�te :


 ______________________________________________________________________
 $ mt -f $TAPE fsf 4
 $ dd if=$TAPE bs=16k of=ce66-2.evt
 $ mt -f $TAPE fsf 1
 ______________________________________________________________________



 Notez le 4. Il permet de sauter trois fichiers pour le premier fichier
 et un pour l'ent�te du deuxi�me. Le second mt saute la seconde
 terminaison et positionne la bande au d�but du prochain fichier : la
 troisi�me ent�te. Vous pouvez aussi utilisez mt pour sauter des
 fichiers en arri�re (bsf), rembobiner (rewind) ou d�charger la bande
 (offline, rewoffl).

 1133..33..  QQuueellqquueess dd��ttaaiillss


 Les fichiers d'ent�tes et de terminaisons contiennent des donn�es
 ASCII en majuscules utilis�es par VMS pour stocker des informations
 sur le fichier comme par exemple la taille des blocs. Ils contiennent
 aussi le nom du fichier, ce qui peut �tre utile si vous voulez faire
 des scripts qui lisent automatiquement des fichiers ou recherchent un
 fichier particulier. La premi�re ent�te de la bande est un peu
 diff�rente des suivantes.

 L'en-t�te du premier fichier de la bande (comme par exemple dans
 l'exemple ci-dessus) d�bute par la cha�ne � VOL1 �. Suit le nom de
 volume.  Dans notre exemple, le fichier ent�te1 commence par
 � VOL1C66A2 �. Vient ensuite une s�rie d'espace termin�e par un
 chiffre. Apr�s, on trouve la cha�ne � HDR1 � qui indique que l'on a �
 faire � un fichier d'ent�te. Les caract�res qui suivent imm�diatement
 la cha�ne � HDR1 � forment le nom du fichier VMS.  Dans l'exemple,
 cette cha�ne est � HDR1CE66-2.EVT �. Le prochain champ est le nom du
 volume.

 Le champs initial des autres fichiers (c'est-�-dire tous sauf le
 premier de la bande) est quelque peu diff�rent.  � VOL1 � n'est pas
 pr�sent. Le reste est identique.  Un autre champ utile est le
 septi�me. Il se termine par � DECFILES11A �. C'est un signe de
 conformit� au standard DEC Files11A.



      Champ                Ent�te initiale                  Ent�tes suivantes
      1                    VOL1 + nom du volume             HDR1 + nom du fichier
      2                    HDR1 + nom du fichier            Nom du volume
      3                    Nom du volume                    ...
      4                    ...                              ...
      5                    ...                              ...
      6                    ...                              DECFILES11A
      7                    DECFILES11A




 Pour une documentation compl�te sur le format de l'ent�te et de la
 terminaison, voyez la documentation DEC FILES11 (sur le mur
 gris/orange --- demandez � votre communaut� VMS locale :-).


 1133..44..  CCoommmmeennttaaiirreess ssuurr llaa ttaaiillllee ddeess bblloocckkss


 Dans l'exemple, j'ai utilis� une taille de bloc de 16 ko. Sur un
 syst�me Unix, il n'y a pas de taille de bloc associ�e � un fichier sur
 un disque alors que, sous VMS, chaque fichier � une taille de bloc
 sp�cifique. Cela veut dire que la taille du bloc importe peu sous
 linux... sauf que cela  rend la lecture des bandes plus compliqu�e. Si
 vous avez des difficult�s pour trouver la taille du bloc et pour lire
 une bande, vous pouvez essayer de r�gler la taille de bloc mat�rielle
 de votre lecteur de bande en utilisant mt -f $TAPE setblk 0. La
 syntaxe exacte de l'option setblk (et sa disponibilit�) d�pend de la
 version de mt, de l'interface mat�rielle de votre lecteur de bande et
 de votre environnement Unix.

 (Merci � Wojtek Skulski pour avoir signal� l'option setblk.)




 1144..  LLaa ffiinn



 1144..11..  CCooppyyrriigghhtt


 Sauf indication contraire, les droits d'auteur des HOWTO Linux sont
 d�tenus par leurs auteurs respectifs. Les HOWTO Linux peuvent �tre
 reproduits et distribu�s, en totalit� ou en partie, sur tout m�dia
 physique ou �lectronique dans la mesure o� ce copyright est pr�serv�
 dans chaque copie. La distribution commerciale en est autoris�e et
 encourag�e. L'auteur appr�cierait toutefois qu'on lui notifie
 individuellement ce genre de distribution.

 Le pr�sent copyright doit couvrir toute traduction, compilation et
 autre travail d�riv� des HOWTO Linux. C'est-�-dire qu'il est interdit
 d'imposer des restrictions de diffusion allant au del� du pr�sent
 copyright � des ouvrages inspir�s, ou incorporant des passages, de
 HOWTO Linux. Sous certaines conditions, des exceptions � ces r�gles
 seront tol�r�es : contactez le coordinateur des HOWTO � l'adresse
 donn�e ci-dessous.

 Pour r�sumer, nous souhaitons une diffusion aussi large que possible
 de ces informations. N�anmoins, nous entendons garder la propri�t�
 intellectuelle (copyright) des HOWTO, et appr�cierions d'�tre inform�s
 de leur redistribution.

 Pour toute question plus g�n�rale, merci de contacter le coordinateur
 des HOWTO, Guylhem Aznar, � l'adresse �lectronique linux-
 [email protected] par email.


 1144..22..  AAvveerrttiisssseemmeenntt


 Ce travail a �t� �crit d'apr�s l'exp�rience que nous avons eue au
 _S_e_t_t_o_r_e _d_i _G_e_o_f_i_s_i_c_a _o_f _B_o_l_o_g_n_a _U_n_i_v_e_r_s_i_t_y (Italie), ou un VAX 4000 a
 �t� remplac� par un Pentium tournant sous Linux. La plupart de mes
 coll�gues sont des utilisateurs de VMS, et certains d'entre eux l'ont
 abandonn� pour Linux.

 Le _H_O_W_T_O _C_o_m_m_e_n_t _m_i_g_r_e_r _d_e _V_M_S _� _L_i_n_u_x a �t� �crit par Guido Gonzato
 et Mike Miller qui a �crit la partie sur la lecture des bandes VMS.
 Merci beaucoup � mes coll�gues et amis qui m'ont aid� � d�finir les
 besoins et les habitudes de l'utilisateur lambda de VMS, et
 particuli�rement au Dr. Warner Marsocchi.

 S'il vous pla�t, aidez moi � am�liorer ce HOWTO. Je ne suis pas un
 expert de VMS et je n'en serai jamais un. C'est pourquoi vos
 suggestions et reports de bogues seront plus que bienvenus.

 Amusez-vous bien,

 Guido =8-)