{"id":29,"date":"2013-03-10T15:39:54","date_gmt":"2013-03-10T14:39:54","guid":{"rendered":"http:\/\/sam-soul.fr\/Info\/?p=29"},"modified":"2013-03-10T15:39:54","modified_gmt":"2013-03-10T14:39:54","slug":"de-vms-a-linux","status":"publish","type":"post","link":"http:\/\/les-fougs.com\/wordpress\/2013\/03\/10\/de-vms-a-linux\/","title":{"rendered":"de VMS \u00e0 Linux"},"content":{"rendered":"<h1>HOWTO Comment migrer de VMS \u00e0 Linux<\/h1>\n<h2>Auteur : <a href=\"mailto:guido@ibogeo.df.unibo.it\">Guido Gonzato<\/a> et <a href=\"mailto:miller5@uiuc.edu\">Mike Miller<\/a><br \/>\nTraducteur : <a href=\"mailto:dimitri.ara@wanadoo.fr\">Dimitri Ara<\/a><\/h2>\n<p><span>v1.1.3, 17 Septembre 1999<\/span><\/p>\n<hr \/>\n<p><span style=\" font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><em>Ce HOWTO est destin\u00e9 \u00e0 toutes les personnes qui utilisent VMS et qui ont maintenant besoin ou envie de passer \u00e0 Linux, le clone libre d&rsquo;Unix. Nous effectuerons la transition &#8212; je l&rsquo;esp\u00e8re, sans douleur &#8212; en comparant les commandes et les outils disponibles sur ces deux syst\u00e8mes.<\/em><\/span><\/p>\n<hr \/>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Introduction\"><\/a><a name=\"s1\"><\/a>1. Introduction<\/h2>\n<h2 style=\" font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss1.1\"><\/a>1.1 Pourquoi Linux ?<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Vous avez entendu dire qu&rsquo;Unix est difficile et vous \u00eates h\u00e9sitant \u00e0 la perspective d&rsquo;abandonner VMS ? Pas de panique. Linux, l&rsquo;un des meilleurs clones d&rsquo;Unix, n&rsquo;est pas plus difficile \u00e0 utiliser que VMS. En fait, je le trouve m\u00eame plus facile. D&rsquo;ailleurs, la plupart des gens trouve Linux beaucoup plus puissant et versatile que VMS (\u00e9videmment les aficionados de VMS ne sont pas de cet avis).<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Linux et VMS sont tous les deux de bons syst\u00e8mes d&rsquo;exploitation et accomplissent essentiellement les m\u00eames taches. Cependant, les outils de Linux sont \u00e0 mon humble avis sup\u00e9rieurs. Leur syntaxe est souvent plus concise et ils ont souvent les quelques fonctionnalit\u00e9s de plus qui font la diff\u00e9rence et permettent de gagner du temps (vous entendrez souvent que VMS et Unix ont des philosophies diff\u00e9rentes). De plus, Linux est disponible sur les PC alors que ce n&rsquo;est pas le cas de VMS (les derniers PC \u00e9tant d&rsquo;ailleurs plus puissants que les VAX). Et, cerise sur le g\u00e2teau, les excellentes performances des nouvelles cartes graphiques transforment votre tite bo\u00eete Linux, gr\u00e2ce \u00e0 X, en une puissante station de travail graphique bien souvent plus rapide qu&rsquo;une machine sp\u00e9cialement pr\u00e9vue pour cette t\u00e2che.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">J&rsquo;ai plusieurs raisons de croire que la combinaison Pentium\/Linux est pr\u00e9f\u00e9rable \u00e0 celle de VAX\/VMS, mais ces pr\u00e9f\u00e9rences sont strictement personnelles et vous ne serez peut-\u00eatre pas d&rsquo;accord. Vous en d\u00e9ciderez de vous-m\u00eame dans quelques mois.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Je prends en hypoth\u00e8se que vous \u00eates une \u00e9tudiant ou un chercheur \u00e0 l&rsquo;universit\u00e9 et que vous utilisez r\u00e9guli\u00e8rement VMS pour les t\u00e2ches suivantes :<\/p>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>\u00e9crire des papiers avec TeX\/LaTeX ;<\/li>\n<li>programmer en Fortran ;<\/li>\n<li>faire des graphiques ;<\/li>\n<li>utiliser Internet ;<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Dans la section suivante je vais vous expliquer comment faire ces t\u00e2ches sous Linux en utilisant votre exp\u00e9rience de VMS. Mais avant tout v\u00e9rifiez que :<\/p>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>Linux et le <em>Syst\u00e8me X Window<\/em> sont correctement install\u00e9s ;<\/li>\n<li>vous avez un administrateur syst\u00e8me pour s&rsquo;occuper des d\u00e9tails techniques (s&rsquo;il-vous-pla\u00eet, demandez de l&rsquo;aide \u00e0 eux, pas \u00e0 moi \ud83d\ude42 ;<\/li>\n<li>votre <em>shell<\/em> &#8212; l&rsquo;\u00e9quivalent de <code>DCL<\/code> &#8212; est <code>bash<\/code> (demandez \u00e0 votre administrateur).<\/li>\n<\/ul>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Notez que ce HOWTO n&rsquo;est pas suffisant pour faire de vous un linuxien pur et dur : il contient seulement le strict n\u00e9cessaire pour vous permettre de commencer. Vous devriez en apprendre plus sur Linux pour pouvoir en tirer le maximum (fonctionnalit\u00e9s avanc\u00e9es de <code>bash<\/code>, programmation, expressions r\u00e9guli\u00e8res, etc.).<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Les documents du <em>Linux Documentation Project<\/em> (projet de documentation de Linux), disponibles sur <a href=\"ftp:\/\/metalab.unc.edu\/pub\/Linux\/docs\/LDP\">metalab.unc.edu:\/pub\/Linux\/docs\/LDP<\/a>, sont une importante source d&rsquo;informations.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">NDT : je vous sugg\u00e8re \u00e9galement de lire le <em>Guide du rootard<\/em> d&rsquo;\u00c9ric Dumas et plus g\u00e9n\u00e9ralement tout ce que l&rsquo;on peut trouver sur <code><a href=\"http:\/\/www.freenix.fr\/linux\">http:\/\/www.freenix.fr\/linux<\/a><\/code> et <code><a href=\"http:\/\/www.traduc.org\/\">http:\/\/www.traduc.org<\/a><\/code>.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Et maintenant, c&rsquo;est parti !<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss1.2\"><\/a>1.2 Commandes et fichiers comparables<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Ce tableau compare les commandes les plus utilis\u00e9es sous VMS et Linux. Gardez \u00e0 l&rsquo;esprit que leur syntaxe est souvent tr\u00e8s diff\u00e9rente ; pour plus de d\u00e9tails allez faire un tour dans les sections suivantes.<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>VMS Linux Notes ------------------------------------------------------------------------------- @COMMAND command (doit \u00eatre ex\u00e9cutable) COPY fichier1 fichier2 cp fichier1 fichier2 CREATE\/DIR [.r\u00e9pertoire] mkdir r\u00e9pertoire (seulement un par un) CREATE\/DIR [.r\u00e9p1.r\u00e9p2] mkdirhier r\u00e9p\/r\u00e9p 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\u00e9f\u00e9r\u00e9) 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 \u00eatre pr\u00e9cis\u00e9e) info commande LATEX fichier.tex latex fichier.tex LOGIN.COM .bash_profile, (fichier cach\u00e9) .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\u00e9p.r\u00e9p] cd r\u00e9p\/r\u00e9p SET HOST machine telnet machine, (pas exactement pareil) rlogin machine SET FILE\/OWNER_UIC=paul chown paul fichier (compl\u00e8tement diff\u00e9rent) SET NOBROADCAST mesg SET PASSWORD passwd SET PROT=(perm) fichier chmod perm fichier (compl\u00e8tement diff\u00e9rent) SET TERMINAL export TERM= (la syntaxe est diff\u00e9rente) 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 &amp; SUBMIT\/AFTER=dur\u00e9e commande at dur\u00e9e commande TEX fichier.tex tex fichier.tex TYPE\/PAGE fichier more fichier less fichier (beaucoup mieux)<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Bien s\u00fbr, les diff\u00e9rences des deux syst\u00e8mes ne se limitent pas aux noms des commandes.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Petite introduction\"><\/a><a name=\"s2\"><\/a>2. Petite introduction<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Voila ce que vous devez absolument savoir avant de vous loguer pour la premi\u00e8re fois. D\u00e9tendez-vous, il y a relativement peu de chose.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss2.1\"><\/a>2.1 Fichiers<\/h2>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>Les noms des fichiers sous VMS on la forme <code>fichier.extension.version<\/code>. Sous Linux, le num\u00e9ro de version n&rsquo;existe pas (c&rsquo;est une grosse limitation mais on peut la compenser par d&rsquo;astucieux moyens : jetez un oeil \u00e0 la section <a href=\"http:\/\/www.ibiblio.org\/pub\/Linux\/docs\/HOWTO\/translations\/fr\/html-1page\/VMS-to-Linux-HOWTO.html#Numeros de version sous Linux\">Num\u00e9ros de version sous Linux<\/a>) ; les noms des fichiers sont normalement limit\u00e9s \u00e0 255 caract\u00e8res et peuvent contenir autant de points que vous le d\u00e9sirez. Par exemple, <code>C_est.un.FICHIER.txt<\/code> est un nom de fichier valide.<\/li>\n<li>Linux fait la distinction entre les majuscules et les minuscules. Ainsi, <code>FICHIER.txt<\/code> et <code>fichier.txt<\/code> sont deux fichiers diff\u00e9rents et <code>ls<\/code> est une commande alors que <code>LS<\/code> n&rsquo;en est pas une.<\/li>\n<li>Un fichier dont le nom commence par un point est un fichier cach\u00e9 (ce qui veut dire qu&rsquo;il ne sera normalement pas affich\u00e9 quand on listera les fichiers du r\u00e9pertoire) alors qu&rsquo;un fichier dont le nom finit par un tilde (\u00ab <code>~<\/code> \u00bb) repr\u00e9sente une sauvegarde de fichier (ou <em>backup<\/em>).<\/li>\n<\/ul>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Maintenant, voici un tableau pr\u00e9sentant les correspondances entre les commandes de VMS et celle de Linux en ce qui concerne la gestion des fichiers.<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>VMS Linux --------------------------------------------------------------------- $ COPY fichier1.txt; fichier2.txt; $ cp fichier1.txt fichier2.txt $ COPY [.r\u00e9p]fichier.txt;1 [] $ cp r\u00e9p\/fichier.txt . $ COPY [.r\u00e9p]fichier.txt;1 [-] $ cp r\u00e9p\/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\u00e9ologie\" $ grep g\u00e9ologie *tex<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Regardez plus loin dans le document pour avoir d&rsquo;autres exemples. Si vous voulez vous attaquer aux notions de droits, de propri\u00e9taires et aux sujets avanc\u00e9s, reportez vous \u00e0 la section <a href=\"http:\/\/www.ibiblio.org\/pub\/Linux\/docs\/HOWTO\/translations\/fr\/html-1page\/VMS-to-Linux-HOWTO.html#Sujets avances\">Sujets avanc\u00e9s<\/a>.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss2.2\"><\/a>2.2 R\u00e9pertoires<\/h2>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>Les noms des r\u00e9pertoires sous VMS sont de la forme <code>[p\u00e8re.r\u00e9p.sousr\u00e9p]<\/code>. L&rsquo;\u00e9quivalent sous Linux est : <code>\/p\u00e8re\/r\u00e9p\/sousr\u00e9p\/<\/code>. Le p\u00e8re de tous les r\u00e9pertoires est le r\u00e9pertoire racine appel\u00e9 <code>\/<\/code> ; il contient d&rsquo;autres r\u00e9pertoires comme <code>\/bin<\/code>, <code>\/usr<\/code>, <code>\/tmp<\/code>, <code>\/etc<\/code>, et bien d&rsquo;autres.<\/li>\n<li>Le r\u00e9pertoire <code>\/home<\/code> contient les r\u00e9pertoires <em>home<\/em> (NDT : \u00ab home \u00bb signifie \u00ab maison \u00bb) des utilisateurs : par exemple, <code>\/home\/pierre<\/code>, <code>\/home\/paul<\/code> et ainsi de suite. Quand un utilisateur se logue, il commence dans son r\u00e9pertoire <em>home<\/em> ; c&rsquo;est l&rsquo;\u00e9quivalent de <code>SYS$LOGIN<\/code>. Il y a un raccourci pour le r\u00e9pertoire <em>home<\/em> : le tilde (\u00ab <code>~<\/code> \u00bb). Ainsi, <code>cd ~\/tmp<\/code> est \u00e9quivalent \u00e0, disons, <code>cd \/home\/paul\/tmp<\/code>.<\/li>\n<li>Les noms des r\u00e9pertoires sont soumis aux m\u00eames r\u00e8gles que ceux des fichiers. En plus de cela, chaque r\u00e9pertoire a deux entr\u00e9es sp\u00e9ciales : l&rsquo;une est <code>.<\/code> : elle repr\u00e9sente le r\u00e9pertoire lui-m\u00eame (comme<code>[]<\/code>) ; l&rsquo;autre, <code>..<\/code>, repr\u00e9sente le r\u00e9pertoire parent (comme <code>[-]<\/code>).<\/li>\n<\/ul>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Et maintenant quelques autres exemples :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>VMS Linux --------------------------------------------------------------------- $ CREATE\/DIR [.r\u00e9pertoire] $ mkdir r\u00e9pertoire $ CREATE\/DIR [.dir1.dir2.dir3] $ mkdirhier r\u00e9p1\/r\u00e9p2\/r\u00e9p3 non\/disponible $ rmdir r\u00e9pertoire (si le r\u00e9pertoire est vide) $ rm -R r\u00e9pertoire $ DIRECTORY $ ls $ DIRECTORY [...]fichier.*.* $ find . -name \"fichier*\" $ SET DEF SYS$LOGIN $ cd $ SET DEF [-] $ cd .. $ SET DEF [p\u00e8re.r\u00e9p.sousr\u00e9p] $ cd \/p\u00e8re\/r\u00e9p\/sousr\u00e9p $ SET DEF [.r\u00e9p.sousr\u00e9p] $ cd r\u00e9p\/sousr\u00e9p $ SHOW DEF $ pwd<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Si vous voulez en savoir plus sur les droits, les propri\u00e9taires, ou tout simplement en savoir plus tout court, sautez \u00e0 la section <a href=\"http:\/\/www.ibiblio.org\/pub\/Linux\/docs\/HOWTO\/translations\/fr\/html-1page\/VMS-to-Linux-HOWTO.html#Sujets avances\">Sujets avanc\u00e9s<\/a>.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss2.3\"><\/a>2.3 Programmes<\/h2>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>Les commandes, les programmes compil\u00e9s et les scripts <em>shell<\/em> (\u00e9quivalent des fichiers de commandes de VMS) n&rsquo;ont pas forc\u00e9ment une extension comme <code>.EXE<\/code> or <code>.COM<\/code> et peuvent s&rsquo;appeler comme bon vous semble. Les fichiers ex\u00e9cutables sont marqu\u00e9s d&rsquo;un ast\u00e9risque (\u00ab <code>*<\/code> \u00bb) lorsque vous ex\u00e9cutez <code>ls -F<\/code>.<\/li>\n<li>Pour lancer un fichier ex\u00e9cutable, il suffit de taper son nom (pas de <code>RUN<\/code>, ni de <code>PROGRAM.EXE<\/code>, ni encore de <code>@COMMAND<\/code>). Il est donc n\u00e9cessaire que le fichier soit situ\u00e9 dans un r\u00e9pertoire du <em>path<\/em>, qui est une liste de r\u00e9pertoires. En g\u00e9n\u00e9ral, le <em>path<\/em> contient des r\u00e9pertoires comme <code>\/bin<\/code>, <code>\/usr\/bin<\/code>, <code>\/usr\/X11R6\/bin<\/code>, etc. Si vous \u00e9crivez vos propres programmes, placez-les dans un r\u00e9pertoire de votre<em>path<\/em> (pour savoir comment, reportez-vous \u00e0 la section <a href=\"http:\/\/www.ibiblio.org\/pub\/Linux\/docs\/HOWTO\/translations\/fr\/html-1page\/VMS-to-Linux-HOWTO.html#Configurer\">Configurer<\/a>). Vous pouvez aussi lancer un programme en indiquant son chemin complet, par exemple <code>\/home\/paul\/donn\u00e9es\/monprog<\/code> ou<code>.\/monprog<\/code> si le r\u00e9pertoire courant n&rsquo;est pas dans le <em>path<\/em>.<\/li>\n<li>Les options des commandes sont pass\u00e9es sur la ligne de commande gr\u00e2ce \u00e0 <code>OPTION=<\/code> sous VMS et gr\u00e2ce \u00e0 <code>-<\/code><em>une_option<\/em> ou <code>--<\/code><em>une_option<\/em> sous Linux, <em>une_option<\/em> \u00e9tant une lettre, diff\u00e9rentes lettres combin\u00e9es ou un mot. En particulier, l&rsquo;option <code>-R<\/code> (r\u00e9cursif) de plusieurs commandes de Linux permet de faire la m\u00eame chose que le <code>[...]<\/code> de VMS.<\/li>\n<li>Vous pouvez lancer plusieurs commandes sur la ligne de commande :<br \/>\n<blockquote>\n<pre>$ commande1 ; commande2 ; ... ; commande<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<ul>\n<li>Toute la flexibilit\u00e9 de Linux repose sur deux fonctionnalit\u00e9s (l&rsquo;une n&rsquo;existe pas sous VMS, l&rsquo;autre est mal impl\u00e9ment\u00e9e) : la redirection des entr\u00e9s\/sorties et les <em>pipes<\/em>. (Pour \u00eatre sinc\u00e8re, j&rsquo;ai entendu que les versions r\u00e9centes de IDL supportent la redirection et les <em>pipes<\/em> mais je n&rsquo;ai pas ces versions.) La redirection sous VMS n&rsquo;est qu&rsquo;un effet de bord (souvenez vous de l&rsquo;option <code>\/OUTPUT=<\/code>) ou une t\u00e2che fastidieuse comme<br \/>\n<blockquote>\n<pre>$ DEFINE \/USER SYS$OUTPUT OUT $ DEFINE \/USER SYS$INPUT IN $ RUN PROG<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>dont l&rsquo;\u00e9quivalent sous Linux (Unix) est simplement :<\/p>\n<blockquote>\n<pre>$ prog out<\/pre>\n<\/blockquote>\n<p>Utiliser des <em>pipes<\/em> est tout simplement impossible sous VMS mais ils jouent un r\u00f4le cl\u00e9 sous Unix. En voici un exemple typique :<\/p>\n<blockquote>\n<pre>$ monprog &gt; r\u00e9sultat.dat 2&gt; erreurs.log &amp;<\/pre>\n<\/blockquote>\n<p>Traduisons. Le programme <code>monprog<\/code> utilise le fichier <code>donn\u00e9es<\/code> comme entr\u00e9e, sa sortie est canalis\u00e9e (gr\u00e2ce \u00e0 <code>|<\/code>) vers le programme <code>filtre1<\/code> qui l&rsquo;utilise en tant qu&rsquo;entr\u00e9e et la traite. La sortie r\u00e9sultante est canalis\u00e9e (<em>pip\u00e9e<\/em>) vers <code>filtre2<\/code> pour \u00eatre encore une fois trait\u00e9e. La sortie finale est ajout\u00e9e (gr\u00e2ce \u00e0 <code>&gt;&gt;<\/code>) au fichier <code>r\u00e9sultat.dat<\/code>, et les messages d&rsquo;erreurs sont redirig\u00e9s (gr\u00e2ce \u00e0 <code>2&gt;<\/code>) vers le fichier <code>errors.log<\/code>. Tout ceci est ex\u00e9cut\u00e9 en arri\u00e8re-plan (gr\u00e2ce au <code>&amp;<\/code> \u00e0 la fin de la ligne de commande). Pour en savoir plus \u00e0 ce sujet, reportez-vous \u00e0 la section <a href=\"http:\/\/www.ibiblio.org\/pub\/Linux\/docs\/HOWTO\/translations\/fr\/html-1page\/VMS-to-Linux-HOWTO.html#Exemples\">Exemples<\/a>.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour le multit\u00e2che, les files, et tout ce qui s&rsquo;y rapporte, reportez-vous \u00e0 la section <a href=\"http:\/\/www.ibiblio.org\/pub\/Linux\/docs\/HOWTO\/translations\/fr\/html-1page\/VMS-to-Linux-HOWTO.html#Sujets avances\">Sujets avanc\u00e9s<\/a>.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Visite guidee\"><\/a><a name=\"ss2.4\"><\/a>2.4 Visite guid\u00e9e<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Maintenant vous \u00eates pr\u00eat 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 <code>pierre<\/code> et<code>Mon_Code<\/code>, ne tapez <em>pas<\/em> <code>Pierre<\/code> ou <code>mon_code<\/code>.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Une fois que vous \u00eates logu\u00e9, le prompt s&rsquo;affiche. Il y a des chances pour que se soit quelque chose du genre <code>nom_de_la_machine:$<\/code>. Si vous voulez le changer ou lancer des programmes automatiquement, vous devrez \u00e9diter le fichier cach\u00e9 <code>.profile<\/code> ou <code>.bash_profile<\/code> (jetez un oeil aux exemples dans la section <a href=\"http:\/\/www.ibiblio.org\/pub\/Linux\/docs\/HOWTO\/translations\/fr\/html-1page\/VMS-to-Linux-HOWTO.html#Configurer\">Configurer<\/a>). C&rsquo;est l&rsquo;\u00e9quivalent de <code>LOGIN.COM<\/code>.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Appuyer sur alt + F1, alt + F2, &#8230;, alt + F6 permet de changer de console virtuelle. Quand une console virtuelle est occup\u00e9e avec une application plein \u00e9cran, vous pouvez changer de console et continuer \u00e0 travailler. Essayez et loguez-vous sur une autre console virtuelle.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Maintenant, vous voulez peut-\u00eatre lancer le <em>Syst\u00e8me X Window<\/em> (que nous appellerons maintenant X). X est un environnement graphique similaire au DECWindows &#8212; en fait, ce dernier d\u00e9rive de X. Tapez la commande <code>startx<\/code> et attendez quelques secondes ; vous verrez probablement s&rsquo;ouvrir un <code>xterm<\/code> ou un autre \u00e9mulateur de terminal, et peut-\u00eatre une barre de boutons (cela d\u00e9pend de la mani\u00e8re dont votre administrateur syst\u00e8me a configur\u00e9 votre machine Linux). Cliquez sur le menu (essayez les deux boutons de la souris) pour voir les menus.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Quand vous utilisez X, vous devez appuyez sur ctrl + alt + F1, &#8230;, ctrl + alt + F6 pour acc\u00e9der au mode texte (console). Essayez. Quand vous \u00eates dans une console, vous pouvez revenir \u00e0 X en appuyant suralt + F7. Pour quitter X, suivez les instructions de votre menu ou appuyez sur ctrl + alt + backspace.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Tapez la commande suivante pour obtenir une liste du contenu du r\u00e9pertoire courant (incluant les fichiers cach\u00e9s) :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ ls -al<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Appuyez sur shift + page up pour faire d\u00e9filer l&rsquo;\u00e9cran vers le haut. Maintenant, pour obtenir de l&rsquo;aide sur la commande <code>ls<\/code> tapez<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ man ls<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Appuyez sur <code>q<\/code> pour quitter. Pour finir notre tour d&rsquo;horizon, tapez <code>exit<\/code> pour quitter votre session. Si maintenant vous voulez \u00e9teindre votre PC, appuyez sur ctrl + alt + suppr et attendez quelques secondes (n&rsquo;\u00e9teignez <em>jamais<\/em> votre PC tant que Linux tourne ; cela peut causer des dommages dans le syst\u00e8me de fichier).<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Si vous pensez que vous \u00eates pr\u00eat pour travailler, allez-y. Mais si j&rsquo;\u00e9tais vous, je passerais d&rsquo;abord par la section <a href=\"http:\/\/www.ibiblio.org\/pub\/Linux\/docs\/HOWTO\/translations\/fr\/html-1page\/VMS-to-Linux-HOWTO.html#Sujets avances\">Sujets avanc\u00e9s<\/a>.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Editer des fichiers\"><\/a><a name=\"s3\"><\/a>3. \u00c9diter des fichiers<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><code>EDT<\/code> ne tourne pas sous Linux, mais il y a beaucoup d&rsquo;autres \u00e9diteurs disponibles. Le seul qui soit s\u00fbr d&rsquo;\u00eatre pr\u00e9sent sur tout syst\u00e8me Unix est <code>vi<\/code> &#8212; oubliez-le, votre administrateur en a s\u00fbrement install\u00e9 un meilleur. L&rsquo;\u00e9diteur le plus populaire est probablement <code>emacs<\/code>, qui peut \u00e9muler <code>EDT<\/code> jusqu&rsquo;\u00e0 un certain degr\u00e9 ; <code>jed<\/code> est un autre \u00e9diteur qui permet l&rsquo;\u00e9mulation de <code>EDT<\/code>.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Ces deux \u00e9diteurs sont particuli\u00e8rement utiles pour \u00e9diter des sources de programmes puisque qu&rsquo;ils ont deux fonctionnalit\u00e9s inconnue de <code>EDT<\/code> : la coloration syntaxique et l&rsquo;indentation automatique. De plus, vous pouvez compilez vos programmes \u00e0 partir de l&rsquo;\u00e9diteur (gr\u00e2ce \u00e0 M-x compile sous emacs &#8212; pour comprendre la notation \u00ab M-x compile \u00bb lisez la suite ; en cas d&rsquo;erreur de syntaxe, le curseur se positionnera tout seul sur la ligne en question. Je parie que vous ne voudrez plus jamais utiliser <code>EDT<\/code> apr\u00e8s.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Si vous avez <code>emacs<\/code>, lancez-le. Tout d&rsquo;abord vous devez comprendre le syst\u00e8me de notation de combinaison de touche d&rsquo;<code>emacs<\/code>. C d\u00e9signe contr\u00f4le et M la touche m\u00e9ta (en g\u00e9n\u00e9ral alt ou \u00e9chap). Maintenant, tapez M-x edt-emultation-on. M-x permet de lancer des commandes avec <code>emacs<\/code> comme ctrl + z avec <code>EDT<\/code>. \u00c0 partir de maintenant, <code>emacs<\/code> fait comme s&rsquo;il \u00e9tait <code>EDT<\/code> \u00e0 part pour quelques commandes :<\/p>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>n&rsquo;appuyez <em>pas<\/em> sur ctrl + z pour lancer une commande. Si vous l&rsquo;avez fait, vous avez stopp\u00e9 emacs. Tapez <code>fg<\/code> pour reprendre votre session emacs ;<\/li>\n<li>appuyez sur C-h ? pour obtenir de l&rsquo;aide ou sur C-h t pour lancer un tutoriel ;<\/li>\n<li>pour sauver un fichier, appuyez sur C-x C-s ;<\/li>\n<li>pour quittez, appuyez sur C-x C-c ;<\/li>\n<li>pour ins\u00e9rez 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.<\/li>\n<\/ul>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Si vous avez <code>jed<\/code>, demandez \u00e0 votre administrateur de le configurer comme il faut. L&rsquo;\u00e9mulation est active d\u00e8s que vous le lancez. Utilisez les m\u00eame touches que sur <code>EDT<\/code> et appuyez sur \u00e9chap ? h pour obtenir l&rsquo;aide. Les commandes sont lanc\u00e9es de la m\u00eame mani\u00e8re que dans <code>emacs<\/code>. De plus, il y a quelques raccourcis pratiques faisant d\u00e9faut \u00e0 <code>EDT<\/code> ; vous pouvez en plus configurer ces raccourcis clavier. Demandez \u00e0 votre administrateur.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Vous pouvez aussi utilisez un autre \u00e9diteur avec une interface compl\u00e8tement diff\u00e9rente. <code>emacs<\/code> en mode natif est un choix courant. Un autre \u00e9diteur populaire est <code>joe<\/code> qui peut \u00e9muler d&rsquo;autres \u00e9diteurs comme emacs lui-m\u00eame (en \u00e9tant m\u00eame plus facile \u00e0 utiliser) ou l&rsquo;\u00e9diteur DOS. Lancez l&rsquo;\u00e9diteur sous le nom <code>jmacs<\/code> ou <code>jstar<\/code> et appuyez respectivement sur ctrl + x h ou ctrl + j pour obtenir l&rsquo;aide en ligne. <code>emacs<\/code> et<code>jed<\/code> sont <em>beaucoup<\/em> plus puissants que ce bon vieux <code>EDT<\/code>.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"TeXer\"><\/a><a name=\"s4\"><\/a>4. TeXer<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">TeX et LaTeX sont identiques \u00e0 leurs homologues de VMS &#8212; seulement plus rapides :-), mais les outils pour manipuler les fichiers <code>.dvi<\/code> et <code>.ps<\/code> sont bien sup\u00e9rieurs :<\/p>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>Pour compiler un fichier TeX faites comme d&rsquo;habitude <code>tex file.tex<\/code>.<\/li>\n<li>Pour convertir un fichier <code>.dvi<\/code> en <code>.ps<\/code>, tapez <code>dvips -o fichier.ps fichier.dvi<\/code>.<\/li>\n<li>Pour visualiser un fichier <code>.dvi<\/code>, tapez lors d&rsquo;une session X <code>xdvi fichier.dvi &amp;<\/code>. Cliquez sur la page pour zoomer. Ce programme est intelligent : si vous \u00e9ditez et lancez TeX pour produire une nouvelle version de votre fichier <code>.dvi<\/code>, <code>xdvi<\/code> actualisera l&rsquo;affichage.<\/li>\n<li>Pour visualiser un fichier <code>.ps<\/code>, taper lors d&rsquo;une session X <code>ghostview fichier.ps &amp;<\/code>. Cliquez sur la page pour zoomer. Le document entier ou des pages s\u00e9lectionn\u00e9s peuvent \u00eatre imprim\u00e9s. Un programme plus r\u00e9cent et meilleur permet \u00e9galement de faire \u00e7a : <code>gv<\/code> ;<\/li>\n<li>Pour imprimer un fichier <code>.ps<\/code> on utilise g\u00e9n\u00e9ralement la commande <code>lpr fichier.ps<\/code>. Cependant si l&rsquo;imprimante postscript s&rsquo;appelle, par exemple, \u00ab ps \u00bb (demandez \u00e0 votre administrateur syst\u00e8me), il faudra faire <code>lrp -Pps fichier.ps<\/code>. Pour plus d&rsquo;informations au sujet des files d&rsquo;impressions, allez \u00e0 la section <a href=\"http:\/\/www.ibiblio.org\/pub\/Linux\/docs\/HOWTO\/translations\/fr\/html-1page\/VMS-to-Linux-HOWTO.html#Files d'impressions\">Files d&rsquo;impressions<\/a>.<\/li>\n<\/ul>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Programmer\"><\/a><a name=\"s5\"><\/a>5. Programmer<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Programmer sous Linux est <em>beaucoup<\/em> plus agr\u00e9able : il existe un grand nombre d&rsquo;outils qui rendent la programmation plus facile et plus rapide. Par exemple, la torture qu&rsquo;est le cycle \u00e9dition, sauvegarde, sortie de l&rsquo;\u00e9diteur, compilation, r\u00e9\u00e9dition, etc. peut \u00eatre raccourci en utilisant des \u00e9diteurs comme <code>emacs<\/code> ou <code>jed<\/code>, comme nous l&rsquo;avons vu au dessus.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss5.1\"><\/a>5.1 Fortran<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Il n&rsquo;y a pas de r\u00e9elle diff\u00e9rence pour le fortran, mais sachez qu&rsquo;au moment o\u00f9 j&rsquo;\u00e9cris ces lignes, les compilateurs (libres) ne sont pas totalement compatibles avec ceux de VMS ; attendez-vous \u00e0 quelques probl\u00e8mes mineurs (en fait, le compilateur de VMS utilise des extensions qui ne sont pas standard). Jetez un oeil \u00e0 <code>\/usr\/doc\/g77\/DOC<\/code> ou <code>\/usr\/doc\/f2c\/d2c.ps<\/code> pour plus de d\u00e9tails.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Votre administrateur a sans doute install\u00e9 soit le compilateur natif <code>g77<\/code> (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, <code>f2c<\/code>, et un des ses front-ends qui font de lui une imitation de compilateur natif. D&rsquo;apr\u00e8s mon exp\u00e9rience, le paquetage <code>yaf77<\/code> est celui qui donne les meilleurs r\u00e9sultats.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour compiler un source en Fortran avec <code>g77<\/code>, \u00e9ditez le et sauvez le avec l&rsquo;extension <code>.f<\/code>, et faites<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ g77 monprog.f<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Cela va cr\u00e9er par d\u00e9faut un ex\u00e9cutable appel\u00e9 <code>a.out<\/code> (vous n&rsquo;avez pas \u00e0 effectuer les liens). Pour donner \u00e0 l&rsquo;ex\u00e9cutable un nom diff\u00e9rent et faire quelques optimisations :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ g77 -O2 -o monprog monprog.f<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">M\u00e9fiez-vous des optimisations ! Demandez \u00e0 votre administrateur syst\u00e8me de lire la documentation fournie avec le compilateur et de vous dire s&rsquo;il y a des probl\u00e8mes.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour compiler une sous-routine :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ g77 -c masub.f<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Un fichier <code>masub.o<\/code> sera cr\u00e9\u00e9. Pour lier cette sous-routine \u00e0 un programme, vous devrez faire<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ g77 -o monprog monprog.f masub.o<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Si vous avez plusieurs sous-routines externes et que vous voulez cr\u00e9er une biblioth\u00e8que, faites<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ cd sousroutines\/ $ cat *f &gt; mabib.f ; g77 -c mabib.f<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Le fichier <code>mabib.o<\/code> cr\u00e9\u00e9 pourra alors \u00eatre li\u00e9 \u00e0 vos programmes.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour finir, pour lier une biblioth\u00e8que externe appel\u00e9e, disons, <code>liblambda.so<\/code> , utilisez<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ g77 -o monprog monprog.f -llambda<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Si vous avez <code>f2c<\/code>, vous n&rsquo;aurez qu&rsquo;\u00e0 utiliser <code>f77<\/code> ou <code>fort77<\/code> \u00e0 la place de <code>g77<\/code>.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Un autre outil de programmation utile est <code>make<\/code>. Il est d\u00e9crit ci-dessous.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss5.2\"><\/a>5.2 Utiliser <code>make<\/code><\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><code>make<\/code> est un outil pour g\u00e9rer la compilation de programmes divis\u00e9s en plusieurs fichiers sources.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Supposons que vous ayez des fichiers sources contenant vos routines appel\u00e9s <code>fichier_1.f, fichier_2.f et fichier_3.f<\/code>, et un fichier source principal qui utilise ces routines appel\u00e9 <code>monprog.f<\/code>. Si vous compilez votre programme \u00e0 la main, quand vous modifierez un fichier source vous allez devoir chercher quel fichier d\u00e9pend de quel fichier, et les recompiler en tenant compte des d\u00e9pendances.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Plut\u00f4t que de devenir fou, je vous propose d&rsquo;\u00e9crire un <em>makefile<\/em>. C&rsquo;est un fichier texte qui contient les d\u00e9pendances entre les sources : quand un source est modifi\u00e9, seuls les sources qui d\u00e9pendent du fichier modifi\u00e9 seront recompil\u00e9es.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Dans notre cas, le <em>makefile<\/em> ressemblerait \u00e0 ceci :<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<pre># Voici le Makefile # Attention : appuyez sur la touche tabulation quand \u00ab \u00bb # est \u00e9crit ! C'est tr\u00e8s important : n'utilisez pas d'espace \u00e0 la place. monprog: monprog.o fichier_1.o fichier_2.o fichier_3.o g77 -o monprog monprog.o fichier_1.o fichier_2.o fichier_3.o # monprog d\u00e9pend de quatre fichiers objets monprog.o: monprog.f g77 -c monprog.f # monprog.o d\u00e9pend de son fichier source fichier_1.o: fichier_1.f g77 -c fichier_1.f # fichier_1.o d\u00e9pend de son fichier source fichier_2.o: fichier_2.f fichier_1.o g77 -c fichier_2.f fichier_1.o # fichier_2.o d\u00e9pend de son fichier source et d'un fichier objet fichier_3.o: fichier_3.f fichier_2.o g77 -c fichier_3.f fichier_2.o # fichier_3.o d\u00e9pend de son fichier source et d'un fichier objet # fin du Makefile<\/pre>\n<hr \/>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Enregistrez ce fichier sous le nom <code>Makefile<\/code> et tapez <code>make<\/code> pour compiler votre programme. Vous pouvez aussi l&rsquo;appeler <code>monprog.mak<\/code> et taper <code>make -f monprog.mak<\/code>. Et bien s\u00fbr, si vous voulez en savoir plus : <code>info make<\/code>.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss5.3\"><\/a>5.3 Scripts <em>shell<\/em><\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Les scripts <em>shell<\/em> sont les \u00e9quivalents des fichiers de commandes de VMS et, pour changer, sont beaucoup plus puissants.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour \u00e9crire un script, tout ce que vous avez \u00e0 faire est d&rsquo;\u00e9crire un fichier au format ASCII contenant les commandes, l&rsquo;enregistrer et le rendre ex\u00e9cutable (<code>chmod +x fichier<\/code>). Pour le lancer, tapez son nom (pr\u00e9c\u00e9d\u00e9 de <code>.\/<\/code> s&rsquo;il n&rsquo;est pas dans le <em>path<\/em>).<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\u00c9crire des scripts avec <code>bash<\/code> est un sujet tellement vaste qu&rsquo;il n\u00e9cessiterait un livre entier, et je ne ne vais pas m&rsquo;attarder sur le sujet. Je vais juste vous donner un exemple plus ou moins compr\u00e9hensible et, je l&rsquo;esp\u00e8re, utile, \u00e0 partir duquel vous pourrez comprendre quelques r\u00e8gles de base.<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<pre>#!\/bin\/sh # exemple.sh # Je suis un commentaire. # Ne modifiez pas la premi\u00e8re ligne, elle doit \u00eatre pr\u00e9sente. echo \"Ce syst\u00e8me est : `uname -a`\" # utilise la sortie de la commande echo \"Mon nom est $0\" # variable interne echo \"Vous m'avez donn\u00e9 les $# param\u00e8tres suivants : \"$* echo \"Le premier param\u00e8tre est : \"$1 echo -n \"Quel est votre nom ? \" ; read votre_name echo remarquez la diff\u00e9rence : \"Salut $votre_name\" # cit\u00e9 avec \" echo remarquez la diff\u00e9rence : 'Salut $votre_name' # cit\u00e9 avec ' REPS=0 ; FICHIERS=0 for fichier in `ls .` ; do if [ -d ${fichier} ] ; then # si le fichier est un r\u00e9pertoire 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\u00e9pertoires et ${FICHIERS} fichiers\" ls | grep \"ZxY--!!!WKW\" if [ $? != 0 ] ; then # valeur de sortie de la derni\u00e8re commande echo \"ZxY--!!!WKW n'a pas \u00e9t\u00e9 trouv\u00e9\" fi echo \"\u00c7a suffit... tapez 'man bash' si vous voulez plus d'informations.\" echo \"Note du traducteur : 'info bash' est plus complet.\"<\/pre>\n<hr \/>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"C\"><\/a><a name=\"ss5.4\"><\/a>5.4 C<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Linux est un excellent environnement pour la programmation en C. Si vous connaissez le C, voici quelques conseils pour vous d\u00e9brouiller sous Linux. Pour compiler le c\u00e9l\u00e8bre <code>hello.c<\/code> vous utiliserez le compilateur <code>gcc<\/code>, qui est standard dans le monde de Linux et qui a la m\u00eame syntaxe que <code>g77<\/code> :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ gcc -O2 -o hello hello.c<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour lier une biblioth\u00e8que \u00e0 un programme, ajoutez l&rsquo;option <code>-lbiblioth\u00e8que<\/code>. Par exemple pour lier la biblioth\u00e8que math et optimiser faites<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ gcc -O2 -o mathprog mathprog.c -lm<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">(L&rsquo;option <code>-lbiblioth\u00e8que<\/code> force <code>gcc<\/code> \u00e0 lier la biblioth\u00e8que <code>\/usr\/lib\/libbiblioth\u00e8que.a<\/code> ; ainsi <code>-lm<\/code> lie <code>\/usr\/lib\/libm.a<\/code>.)<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Quand votre programme est divis\u00e9 en plusieurs fichiers sources, vous aurez besoin du programme <code>make<\/code> d\u00e9crit juste au dessus.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Vous pouvez obtenir de l&rsquo;aide sur quelques fonctions de la libc dans la section 3 des pages man. Par exemple :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ man 3 printf<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Il existe beaucoup de biblioth\u00e8ques disponible. Parmi les premi\u00e8res que vous voudrez probablement utiliser, il y a <code>ncurses<\/code>, qui permet de g\u00e9rer quelques effets du mode texte et <code>svgalib<\/code> pour faire du graphisme.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Graphiques\"><\/a><a name=\"s6\"><\/a>6. Graphiques<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Parmi la masse de paquetages de graphiques disponibles, <code>gnuplot<\/code> sort du lot pour sa puissance et sa facilit\u00e9 d&rsquo;utilisation. Cr\u00e9ez tout d&rsquo;abord deux fichiers de donn\u00e9es : <code>2D-data.dat<\/code> (deux donn\u00e9es par ligne) et <code>3D-data.dat<\/code> (trois par ligne). Puis, sous X, lancez <code>gnuplot<\/code>.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Exemple d&rsquo;un graphe en 2D :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>gnuplot&gt; set title \"mon premier graphe\" gnuplot&gt; plot '2D-data.dat' gnuplot&gt; plot '2D-data.dat' with linespoints gnuplot&gt; plot '2D-data.dat', sin(x) gnuplot&gt; plot [-5:10] '2D-data.dat'<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Exemple d&rsquo;un graphe en 3D (chaque \u00ab ligne \u00bb de <em>x<\/em> valeurs est suivie d&rsquo;une ligne vide) :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>gnuplot&gt; set parametric ; set hidden3d ; set contour gnuplot&gt; splot '3D-data.dat' using 1:2:3 with linespoints<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Un fichier de donn\u00e9es d&rsquo;une seule colonne (une s\u00e9rie de temps par exemple) peut aussi \u00eatre dessin\u00e9 comme un graphe en 2D :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>gnuplot&gt; plot [-5:15] '2D-data-1col.dat' with linespoints<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">ou en 3D (avec des lignes vides dans le fichier comme au dessus) :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>gnuplot&gt; set noparametric ; set hidden3d gnuplot&gt; splot '3D-data-1col.dat' using 1 with linespoints<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour imprimez un graphe, si la commande pour imprimer sur votre imprimante postscript est <code>lpr -Pps fichier.ps<\/code>, faites<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>gnuplot&gt; set term post gnuplot&gt; set out '| lpr -Pps' gnuplot&gt; replot<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Tapez ensuite <code>set term x11<\/code> pour r\u00e9afficher sur votre serveur X. Ne soyez pas d\u00e9concert\u00e9 : la derni\u00e8re impression se lancera seulement quand vous quitterez <code>gnuplot<\/code>.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour plus d&rsquo;informations, tapez <code>help<\/code> ou regardez le r\u00e9pertoire des exemples (<code>\/usr\/lib\/gnuplot\/demos\/<\/code>) s&rsquo;il existe.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Mail et Outils pour Internet\"><\/a><a name=\"s7\"><\/a>7. Mail et outils pour Internet<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Du fait qu&rsquo;Internet est n\u00e9 sur des machines Unix, on trouve plein d&rsquo;applications de qualit\u00e9 et facile d&rsquo;utilisation sous Linux. En voici quelques-unes :<\/p>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>Mail : utilisez <code>elm<\/code> ou <code>pine<\/code> (NDT : mutt est tr\u00e8s bien aussi) pour g\u00e9rer votre courrier. Ces deux programmes ont une aide en ligne. Pour des messages courts, vous pouvez utilisez <code>mail<\/code> (<code>mail -s \"Salut\" utilisateur@quelquepart &lt; msg.txt<\/code>). Vous pr\u00e9f\u00e9rez peut-\u00eatre d&rsquo;autres programmes comme <code>xmail<\/code> ou \u00e9quivalent.<\/li>\n<li>Newsgroups : utilisez <code>tin<\/code> ou <code>slrn<\/code>. Ils sont tous les deux tr\u00e8s intuitifs.<\/li>\n<li>FTP : en plus de l&rsquo;in\u00e9vitable <code>ftp<\/code>, demandez \u00e0 votre administrateur d&rsquo;installer l&rsquo;excellent <code>ncftp<\/code> ou un m\u00eame un client graphique comme <code>xftp<\/code>.<\/li>\n<li>WWW : <code>netscape<\/code>, <code>xmosaic<\/code>, <code>chimera<\/code> et <code>arena<\/code> sont des browsers graphiques ; <code>lynx<\/code> quant \u00e0 lui utilise la console et est rapide et pratique.<\/li>\n<\/ul>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Sujets avances\"><\/a><a name=\"s8\"><\/a>8. Sujets avanc\u00e9s<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">L\u00e0, le jeu devient coriace. Apprenez \u00e7a, et ensuite vous pourrez dire que vous \u00ab connaissez quelque chose \u00e0 Linux \u00bb \ud83d\ude09<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Droits et propriete\"><\/a><a name=\"ss8.1\"><\/a>8.1 Droits et propri\u00e9t\u00e9<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Les fichiers et les r\u00e9pertoires ont des droits et des propri\u00e9taires, comme sous VMS. Si nous ne pouvez pas lancer un programme, ne pouvez pas modifier un fichier ou ne pouvez pas acc\u00e9der \u00e0 un r\u00e9pertoire, c&rsquo;est parce vous n&rsquo;avez pas les droits ad\u00e9quats pour le faire et\/ou parce que le fichier ne vous appartient pas. Regardez l&rsquo;exemple suivant :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ ls -l \/bin\/ls -rwxr-xr-x 1 root bin 27281 Aug 15 1995 \/bin\/ls*<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Le premier champ indique les droits du fichier <code>ls<\/code>. Il y a trois types de propri\u00e9t\u00e9 : le propri\u00e9taire, le groupe et les autres (comme le propri\u00e9taire, le groupe et le reste du monde sous VMS) et trois droits : lecture, \u00e9criture et ex\u00e9cution.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">De gauche \u00e0 droite, <code>-<\/code> est le type du fichier (<code>-<\/code> d\u00e9signe un fichier ordinaire, <code>d<\/code> un r\u00e9pertoire, <code>l<\/code> un lien, etc.) ; <code>rwx<\/code> sont les droits du propri\u00e9taire (lecture, \u00e9criture, ex\u00e9cution) ; <code>r-x<\/code> sont les droits du groupe du propri\u00e9taire (lecture, ex\u00e9cution) ; <code>r-x<\/code> sont les droits pour tous les autres utilisateurs (lecture, \u00e9criture).<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour changer les droits d&rsquo;un fichier :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ chmod<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Avec <em>qui<\/em> repr\u00e9sentant <code>u<\/code> (ce sont alors les droits du propri\u00e9taire qui sont affect\u00e9s), <code>g<\/code> (ceux du groupe) ou <code>o<\/code> (ceux des \u00ab autres \u00bb). X est soit <code>+<\/code> (dans ce cas il donne les droits), soit <code>-<\/code> (il les enl\u00e8ve). Et <em>droit<\/em> est<code>r<\/code>, <code>w<\/code> ou <code>x<\/code>. Voici un exemple :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ chmod u+x fichier<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Cela permet de rendre le fichier ex\u00e9cutable pour le propri\u00e9taire. Il existe un petit raccourci <code>chmod +x fichier<\/code>.<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ chmod go-wx fichier<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">L\u00e0, on enl\u00e8ve les droits d&rsquo;\u00e9criture et d&rsquo;ex\u00e9cution au groupe et aux autres (donc \u00e0 tout le monde sauf au propri\u00e9taire).<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ chmod ugo+rwx fichier<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Tous les droits sont donn\u00e9s \u00e0 tout le monde.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Une mani\u00e8re plus courte de pr\u00e9ciser les droits se base sur les nombres : <code>rwxr-xr-x<\/code> peut \u00eatre exprim\u00e9 par 755 (chaque lettre correspond \u00e0 un bit : <code>---<\/code> vaut 0, <code>--x<\/code> 1, <code>-w-<\/code> 2, etc).<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour un r\u00e9pertoire, <code>rx<\/code> signifie que vous pouvez vous placer dans ce r\u00e9pertoire et <code>w<\/code> que vous pouvez effacer un fichier dans ce r\u00e9pertoire (en tenant compte des droits du fichier \u00e9videmment) ou le r\u00e9pertoire lui-m\u00eame. Tout \u00e7a n&rsquo;est qu&rsquo;une petit partie du sujet : man est votre ami.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour changer le propri\u00e9taire d&rsquo;un fichier :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ chown<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour r\u00e9sumer, voici un tableau :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>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\/<\/pre>\n<\/blockquote>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Multitache\"><\/a><a name=\"ss8.2\"><\/a>8.2 Multit\u00e2che : processus et t\u00e2ches (<em>jobs<\/em>)<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">En voici plus \u00e0 propos de la mani\u00e8re de lancer les programmes. Il n&rsquo;y a pas de file d&rsquo;attente sous Linux ; le multit\u00e2che est g\u00e9r\u00e9 tr\u00e8s diff\u00e9remment. Voici \u00e0 quoi ressemble une ligne de commande typique :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ commande -s1 -s2 ... -sn par1 par2 ... parn sortie &amp;<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Maintenant, voyons comment marche le multit\u00e2che. Les programmes qui tournent en avant-plan (<em>foreground<\/em>) ou arri\u00e8re-plan (<em>background<\/em>) sont appel\u00e9s des processus.<\/p>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>Pour lancer un processus en arri\u00e8re plan :<br \/>\n<blockquote>\n<pre>$ programme [option] [ sortie] &amp; [1] 234<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>Le shell vous donne le num\u00e9ro de <em>job<\/em> (le premier nombre ; regardez ci-dessus) et le PID (le num\u00e9ro du processus). Chaque processus est identifi\u00e9 par son PID. Pour voir combien de processus sont lanc\u00e9s :<\/p>\n<blockquote>\n<pre>$ ps -ax<\/pre>\n<\/blockquote>\n<p>La liste des processus actifs va \u00eatre affich\u00e9e.<\/p>\n<ul>\n<li>Pour tuer un processus :<br \/>\n<blockquote>\n<pre>$ kill<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Vous aurez peut-\u00eatre besoin de tuer un processus quand vous ne savez pas le quitter de la bonne mani\u00e8re&#8230; \ud83d\ude09 Parfois, une processus sera seulement tu\u00e9 par une des commandes suivantes :<\/p>\n<blockquote>\n<pre>$ kill -15 $ kill -9<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">En plus de \u00e7a, le shell vous permet de stopper ou de suspendre temporairement un processus, envoyer un processus en arri\u00e8re-plan ou en ramener un en avant-plan. Dans ce contexte, les processus sont appel\u00e9es <code>jobs<\/code>.<\/p>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>Pour voir combien de <em>jobs<\/em> sont actifs :<br \/>\n<blockquote>\n<pre>$ jobs<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>Les <em>jobs<\/em> sont identif\u00e9s par le nombre que le shell leur donne et non pas par leur PID.<\/p>\n<ul>\n<li>Pour stopper un processus qui tourne en avant-plan appuyez sur ctrl + c. (\u00c7a ne marche pas toujours.)<\/li>\n<li>Pour suspendre un processus tournant en avant-plan appuyez sur ctrl + z (Idem.)<\/li>\n<li>Pour envoyer un processus suspendu en arri\u00e8re-plan (qui devient alors un <em>job<\/em>) :<br \/>\n<blockquote>\n<pre>$ bg<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li>Pour envoyer un <em>job<\/em> en avant-plan :<br \/>\n<blockquote>\n<pre>$ fg<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li>Pour tuer un <em>job<\/em> :<br \/>\n<blockquote>\n<pre>$ kill %<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss8.3\"><\/a>8.3 Fichiers, deuxi\u00e8me<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Voici plus d&rsquo;information sur les fichiers.<\/p>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li><em>stdin<\/em>, <em>stdout<\/em> et <em>stderr<\/em> : sous Unix, tous les composants du syst\u00e8me sont assimil\u00e9s \u00e0 des fichiers. Les commandes et les programmes puisent leur entr\u00e9e dans un \u00ab fichier \u00bb appel\u00e9 <em>stdin<\/em> (l&rsquo;entr\u00e9e standard : g\u00e9n\u00e9ralement le clavier), redirigent leur sortie vers un \u00ab fichier \u00bb appel\u00e9 <em>stdout<\/em> (g\u00e9n\u00e9ralement l&rsquo;\u00e9cran) et leurs erreurs vers un \u00ab fichier \u00bb appel\u00e9 <em>stderr<\/em> (g\u00e9n\u00e9ralement l&rsquo;\u00e9cran). En utilisant <code>&lt;<\/code> et <code>&gt;<\/code>vous redirigez l&rsquo;entr\u00e9e et la sortie vers un fichier diff\u00e9rent. De plus, <code>&gt;&gt;<\/code> ajoute la sortie \u00e0 un fichier \u00e0 la place de l&rsquo;\u00e9craser ; <code>2&gt;<\/code> redirige les messages d&rsquo;erreur (<em>stderr<\/em>) ; 2&gt;&amp;1 redirige <em>stderr<\/em> vers <em>stdout<\/em>, alors que 1&gt;&amp;2 redirige <em>stdout<\/em> vers <em>stderr<\/em>. Il y a un \u00ab trou noir \u00bb appel\u00e9 <code>\/dev\/null<\/code> : tout ce qui est redirigez vers lui dispara\u00eet.<\/li>\n<li>Jokers\/ : sur la ligne de commande <code>*<\/code> correspond \u00e0 (et d\u00e9signe) tous les fichiers sauf ceux qui sont cach\u00e9s ; <code>.*<\/code> correspond \u00e0 tous les fichiers cach\u00e9s ; <code>*.*<\/code> correspond seulement ceux qui ont un \u00ab . \u00bb au milieu de leur nom suivi par d&rsquo;autres caract\u00e8res ; <code>l*c<\/code> correspondra \u00e0 \u00ab lo\u00efc \u00bb et \u00ab luc \u00bb ; <code>*c*<\/code> correspondra \u00e0 \u00ab piocher \u00bb et \u00ab picorer \u00bb. <code>%<\/code> devient <code>?<\/code>. Il existe \u00e9galement un autre joker : <code>[]<\/code>. Par exemple :<code>[abc]*<\/code> d\u00e9signe les fichiers commen\u00e7ant par a, b ou c ; <code>*[I-N123]<\/code> d\u00e9signe les fichier finissant par I, J, K, L, M, N, 1, 2 ou 3.<\/li>\n<li><code>mv<\/code> (<code>RENAME<\/code>) ne permet pas de renommer plusieurs fichiers d&rsquo;un coup. Ainsi, <code>mv *.xxx *.yyy<\/code> ne marchera pas.<\/li>\n<li>Utilisez <code>cp -i<\/code> et <code>mv -i<\/code> pour \u00eatre pr\u00e9venu quand un fichier va \u00eatre \u00e9cras\u00e9.<\/li>\n<\/ul>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Files d'impressions\"><\/a><a name=\"ss8.4\"><\/a>8.4 Files d&rsquo;impression<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Vos fichiers \u00e0 imprimer sont plac\u00e9s dans une file comme sous VMS. Quand vous lancez une commande d&rsquo;impression, vous aurez peut-\u00eatre \u00e0 pr\u00e9ciser le nom de l&rsquo;imprimante. Par exemple<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ lpr fichier.txt # ce fichier est plac\u00e9 dans la file de l'imprimante standard $ lpr -Plaser fichier.ps # celui dans celle de l'imprimante \u00ab laser \u00bb<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour g\u00e9rer la file d&rsquo;impression utilisez les commandes suivantes :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>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<\/pre>\n<\/blockquote>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Configurer\"><\/a><a name=\"s9\"><\/a>9. Configurer<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Votre administrateur syst\u00e8me a d\u00fb vous fournir certains fichier de configuration comme <code>.xinitrc<\/code>, <code>.bash_profile<\/code> et <code>.inputrc<\/code>. Ceux que vous voudrez peut-\u00eatre modifier s ont :<\/p>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li><code>.bash_profile<\/code> ou <code>.profile<\/code> : ce fichier est lu par le shell au moment du login. C&rsquo;est l&rsquo;\u00e9quivalent de <code>LOGIN.COM<\/code>.<\/li>\n<li><code>.bash_logout<\/code> : celui-ci est lu en fin de session. C&rsquo;est l&rsquo;\u00e9quivalent de <code>LOGOUT.COM<\/code>.<\/li>\n<li><code>.bashrc<\/code> : il est lu par les shells non interactifs<\/li>\n<li><code>.inputrc<\/code> : ce fichier configure les r\u00f4les des touches du clavier et le comportement du shell.<\/li>\n<\/ul>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour vous donner un exemple, j&rsquo;ai inclus une partie mon <code>.bash_profile<\/code> :<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<pre># $HOME\/.bash_profile # on ne red\u00e9finit pas le path si ce n'est pas n\u00e9cessaire echo $PATH | grep $LOGNAME &gt; \/dev\/null if [ $? != 0 ] then export PATH=\"$PATH:\/home\/$LOGNAME\/bin\" # ajoute mon r\u00e9pertoire au path fi export PS1='LOGNAME:\\w\\$ ' export PS2='Continued...&gt;' # 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\u00e9 dans le r\u00e9pertoire courant { tar xvfz $1 } cz() # liste le contenu d'une archive .zip { unzip -l $* } ctgz() # liste le contenu d'un tarball gzip\u00e9 { for fichier in $* ; do tar tfz ${fichier} done } tgz() # cr\u00e9e une archive .tgz \u00e0 la zip. { nom=$1 ; tar cvf $1 ; shift tar -rf ${nom} $* ; gzip -S .tgz ${nom} }<\/pre>\n<hr \/>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Et voici mon <code>.inputrc<\/code> :<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<pre># $HOME\/.inputrc # # Ce fichier est lu par bash et d\u00e9finit les fonctions attach\u00e9s aux touches # par le shell ; ce qui suit permet d'avoir un comportement courant pour # les touches<\/pre>\n<hr \/>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Programmes utiles\"><\/a><a name=\"s10\"><\/a>10. Programmes utiles<\/h2>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss10.1\"><\/a>10.1 Visionneur de fichiers : <code>less<\/code><\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Vous utiliserez un tel programme tous les jours, c&rsquo;est pourquoi je vais vous donner quelques astuces pour l&rsquo;utiliser au mieux. Avant tout, demandez \u00e0 votre administrateur de configurer <code>less<\/code> pour qu&rsquo;il puisse afficher non seulement des fichiers textes mais aussi les fichiers compress\u00e9s, les archives, etc.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Comme les derni\u00e8res versions de <code>TYPE<\/code>, <code>less<\/code> vous permet de vous d\u00e9placer dans le fichier dans les deux directions. Il accepte aussi plusieurs commandes qui sont lanc\u00e9es en appuyant sur une touche. Les plus utilis\u00e9s sont :<\/p>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>tout d&rsquo;abord, appuyez sur q pour quitter ;<\/li>\n<li>h pour obtenir l&rsquo;aide ;<\/li>\n<li>g pour aller au d\u00e9but du fichier, G \u00e0 la fin, un nombre suivi de <code>g<\/code> pour aller \u00e0 cette ligne (par exemple <code>125g<\/code>), un nombre suivi de <code>%<\/code> pour aller \u00e0 ce pourcentage du fichier ;<\/li>\n<li><code>\/motif<\/code> recherche vers l&rsquo;avant le motif ; <code>n<\/code> recherche vers l&rsquo;avant la l&rsquo;occurrence suivante ; <code>?pattern<\/code> et <code>N<\/code> font la m\u00eame chose vers l&rsquo;arri\u00e8re ;<\/li>\n<li><code>m<\/code> suivi d&rsquo;une lettre marque la position courante (par exemple <code>ma<\/code>) ; <code>'<\/code> suivi de la m\u00eame lettre rappelle cette position ;<\/li>\n<li><code>:e<\/code> ouvre un autre fichier ;<\/li>\n<li><code>!commande<\/code> ex\u00e9cute un shell.<\/li>\n<\/ul>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Numeros de version sous Linux\"><\/a><a name=\"ss10.2\"><\/a>10.2 Num\u00e9ros de version sous Linux<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">H\u00e9las, Linux ne supporte toujours pas les num\u00e9ros de version nativement. Cependant, on peut r\u00e9gler ce probl\u00e8me de deux mani\u00e8res. La premi\u00e8re est d&rsquo;utiliser RCS (Revision Control System) qui vous permet de garder la trace des pr\u00e9c\u00e9dentes versions d&rsquo;un fichier. RCS est trait\u00e9 dans <em>Le mini-Howto RCS<\/em>.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">La seconde est d&rsquo;utiliser un \u00e9diteur qui sait traiter les num\u00e9ros de version. <code>emacs<\/code> ou <code>joe<\/code> feront l&rsquo;affaire. Pour emacs, ajoutez ces lignes dans votre <code>.emacs<\/code>.<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<pre>(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)<\/pre>\n<hr \/>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour jed, v\u00e9rifiez que vous avez une version sup\u00e9rieure \u00e0 la 0.98.7. Le patch pour les num\u00e9ros de version est disponible sur <code><a href=\"http:\/\/ibogeo.df.unibo.it\/guido\/slang\/backups.sl\">http:\/\/ibogeo.df.unibo.it\/guido\/slang\/backups.sl<\/a><\/code><\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss10.3\"><\/a>10.3 Archiver : tar et gzip<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Sous Unix il existe quelques applications tr\u00e8s r\u00e9pandues qui sont utilis\u00e9s pour archiver et compresser des fichiers. <code>tar<\/code> est utilis\u00e9 pour faire des archives (c&rsquo;est \u00e0 dire un regroupement de fichiers). Pour faire une archive :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ tar -cvf [fichier...]<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour extraire des fichiers d&rsquo;une archive :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ tar -xpvf [fichier...]<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour lister le contenu d&rsquo;une archive :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ tar -tf | less<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Les fichiers peuvent \u00eatre compress\u00e9s en utilisant <code>compress<\/code> ou <code>gzip<\/code>. <code>compress<\/code> est aujourd&rsquo;hui obsol\u00e8te et on n&rsquo;utilise plus que <code>gzip<\/code>.<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ compress $ gzip<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Ceci cr\u00e9era un fichier compress\u00e9 avec l&rsquo;extension .Z (pour <code>compress<\/code>) ou .gz (pour <code>gzip<\/code>). Ces programmes ne font pas d&rsquo;archives mais compressent des fichiers individuellement. Pour d\u00e9compresser utilisez<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ compress -d $ gzip -d<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Faites un tour du c\u00f4t\u00e9 de leurs pages man.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Les utilitaires <code>unarj<\/code>, <code>zip<\/code> et <code>unzip<\/code> sont aussi disponibles.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Les fichier avec l&rsquo;extension <code>.tar.gz<\/code> ou <code>.tgz<\/code> (archiv\u00e9s par <code>tar<\/code>, puis compress\u00e9s par <code>gzip<\/code>) sont tr\u00e8s communs dans le monde Unix. Voici comment lister le contenu d&rsquo;une telle archive :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ tar -ztf | less<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour extraire les fichiers \u00e0 partir d&rsquo;un <code>.tar.gz<\/code> :<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>$ tar -zxf<\/pre>\n<\/blockquote>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"Exemples\"><\/a><a name=\"s11\"><\/a>11. Exemples du monde r\u00e9el<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Le principe central d&rsquo;Unix est qu&rsquo;il existe plusieurs commandes simples qui peuvent \u00eatre li\u00e9es ensemble gr\u00e2ce aux <em>pipes<\/em> et aux redirections pour accomplir des t\u00e2ches plus compliqu\u00e9es. Regardez les exemples suivants (je n&rsquo;expliquerai que les plus compliqu\u00e9s ; pour les autres, reportez vous aux sections pr\u00e9c\u00e9dentes ou aux pages man).<\/p>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li><code>ls<\/code> est trop rapide et je ne peux pas lire le nom de tous les fichiers.<br \/>\n<blockquote>\n<pre>$ ls | less<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<ul>\n<li>J&rsquo;ai un fichier qui contient une liste de mots. Je veux les trier dans l&rsquo;ordre inverse et les imprimer.<br \/>\n<blockquote>\n<pre>$ cat fichier.txt | sort -r | lpr<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li>Mon fichier de donn\u00e9es contient des doublons. Comment les effacer ?<br \/>\n<blockquote>\n<pre>$ sort fichier.dat | uniq &gt; nouveaufichier.dat<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li>J&rsquo;ai un fichier appel\u00e9 papier.txt ou papier.tex ou quelques choses dans le genre mais je ne m&rsquo;en rappelle plus. Comment le retrouver ?<br \/>\n<blockquote>\n<pre>$ find ~ -name \"papier*\"<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Expliquons. <code>find<\/code> est une commande tr\u00e8s utile qui liste tous les fichier dans une arborescence (qui commence \u00e0 partir du r\u00e9pertoire <em>home<\/em> dans ce cas). Sa sortie peut-\u00eatre filtr\u00e9e selon plusieurs crit\u00e8res comme par exemple <code>-name<\/code>.<\/p>\n<ul>\n<li>J&rsquo;ai un fichier texte qui contient le mot \u00ab entropie \u00bb dans ce r\u00e9pertoire. Existe-t-il quelque chose de comparable \u00e0 <code>SEARCH<\/code> ? Bien s\u00fbr, essayez cela :<br \/>\n<blockquote>\n<pre>$ grep -l 'entropie' *<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li>Quelque part, j&rsquo;ai un fichier texte qui contient le mot \u00ab entropy \u00bb et j&rsquo;aimerai le retrouver. Sous VMS j&rsquo;aurais utilis\u00e9 <code>search entropy [...]*.*.*<\/code>, mais <code>grep<\/code> n&rsquo;est pas r\u00e9cursif.<br \/>\n<blockquote>\n<pre>$ find . -exec grep -l \"entropy\" {} \\; 2&gt; \/dev\/null<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><code>find .<\/code> sort tous les noms des fichiers \u00e0 partir du r\u00e9pertoire courant, <code>-exec grep -l \"entropy\"<\/code> lance une commande sur chacun des fichiers (repr\u00e9sent\u00e9s par <code>{}<\/code>), <code>\\<\/code> termine la commande). Si vous pensez que la syntaxe est horrible&#8230; vous avez raison \ud83d\ude42 Vous auriez aussi pu \u00e9crire le script suivant :<\/p>\n<hr \/>\n<pre>#!\/bin\/sh # rgrep: grep r\u00e9cursif if [ $# != 3 ] then echo \"Utilisation : rgrep \" exit 1 fi find $3 -name \"*\" -exec grep $1 $2 {} \\; 2&gt; \/dev\/null<\/pre>\n<hr \/>\n<p>Voici l&rsquo;explication. <code>grep<\/code> marche comme <code>SEARCH<\/code> et combin\u00e9 avec <code>find<\/code> nous obtenons le meilleur des deux mondes.<\/p>\n<ul>\n<li>J&rsquo;ai un fichier qui a deux lignes d&rsquo;en-t\u00eate et qui a ensuite <em>n<\/em> donn\u00e9es par ligne, pas n\u00e9cessairement espac\u00e9es de la m\u00eame mani\u00e8re. Je veux extraire la deuxi\u00e8me et le cinqui\u00e8me champs de chaque ligne. Dois-je \u00e9crire un programme en Fortran ? Nan. Ceci est plus rapide :<br \/>\n<blockquote>\n<pre>$ awk 'NL &gt; 2 {print $2, \"\\t\", $5}' fichier.dat &gt; nouveaufichier.dat<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><code>awk<\/code> est en fait un langage de programmation. Pour chaque ligne \u00e0 partir de la troisi\u00e8me, on affiche le second et le cinqui\u00e8me champ en les s\u00e9parant par une tabulation. Apprenez \u00e0 vous servir de awk &#8212; il vous fera gagner beaucoup de temps.<\/p>\n<ul>\n<li>J&rsquo;ai t\u00e9l\u00e9charg\u00e9 le <code>ls-lR.gz<\/code> d&rsquo;un FTP. Pour chaque sous r\u00e9pertoire, il y a une ligne \u00ab total <em>x<\/em> \u00bb, avec <em>x<\/em> la taille en Kilo-octets du r\u00e9pertoire. J&rsquo;aimerais avoir le total de toutes ces valeurs.<br \/>\n<blockquote>\n<pre>zcat ls-lR.gz | awk ' $1 == \"total\" { i += $2 } END {print i}'<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><code>zcat<\/code> sort le contenu du fichier <code>.gz<\/code>. La sortie est envoy\u00e9e vers awk dont je vous recommande chaudement de lire la page man.<\/p>\n<ul>\n<li>J&rsquo;ai \u00e9crit un programme en Fortran, <code>monprog<\/code>, pour calculer un param\u00e8tre \u00e0 partir d&rsquo;un fichier de donn\u00e9es. Je voudrais le lancer sur des centaines de fichiers et avoir la liste des r\u00e9sultats, mais c&rsquo;est une calamit\u00e9 de demander chaque fois le nom du fichier. Sous VMS, j&rsquo;aurais \u00e9crit un long fichier de commande. Et sous Linux ? Un script tr\u00e8s court. Faites votre programme pour qu&rsquo;il cherche le programme mesdonn\u00e9es.dat et pour qu&rsquo;il afficher le r\u00e9sultat sur l&rsquo;\u00e9cran (stdout) et \u00e9crivez ensuite ce petit script :<br \/>\n<hr \/>\n<pre>#!\/bin\/sh # monprog.sh: lance la m\u00eame commande sur plusieurs fichiers # usage: monprog.sh *.dat for fichier in $* # pour tous les param\u00e8tres (e.g. *.dat) do # ajouter le nom du fichier dans r\u00e9sultat.dat echo -n \"${fichier}: \" &gt;&gt; r\u00e9sultats.dat # copie le param\u00e8tre courant dans mesdonn\u00e9es.dat et lance monprog # et ajoute le sortie \u00e0 r\u00e9sultats.dat cp ${fichier} mesdonn\u00e9es.dat ; monprog &gt;&gt; r\u00e9sultats.dat done<\/pre>\n<hr \/>\n<\/li>\n<li>Je veux remplacer \u00ab g\u00e9ologie \u00bb par \u00ab g\u00e9ophysique \u00bb dans tous mes fichiers textes. Dois-je les \u00e9diter manuellement ? Nan. \u00c9crivez ce script :<br \/>\n<hr \/>\n<pre>#!\/bin\/sh # remplace $1 par $2 dans $* # utilisation : remplace \"vieux-motif\" \"nouveau-motif\" fichier [fichier...] VIEUX=$1 # premier param\u00e8tre NOUVEAU=$2 # second shift ; shift # enlever les deux premier param\u00e8tres ; les suivants sont # les noms des fichiers for fichier in $* # pour tous les fichier donn\u00e9s en param\u00e8tres do # remplace toutes les occurrences de VIEUX par NOUVEAU et sauve cela # dans un fichier temporaire sed \"s\/$VIEUX\/$NOUVEAU\/g\" ${fichier} &gt; ${fichier}.nouveau # renommer le fichier temporaire \/bin\/mv ${fichier}.new ${fichier} done<\/pre>\n<hr \/>\n<\/li>\n<li>J&rsquo;ai des fichier contenant des donn\u00e9es. Je ne connais pas leur taille et je dois enlever leur avant-derni\u00e8re et leur avant-avant-derni\u00e8re lignes. Heu&#8230; \u00e0 la mimine ? Bien s\u00fbr que non :<br \/>\n<hr \/>\n<pre>#!\/bin\/sh # prune.sh: efface les n-1\u00e8me et n-2\u00e8me ligne de fichiers # utilisation : prune.sh fichier [fichier...] for fichier in $* # pour chaque param\u00e8tre do LIGNES=`wc -l $fichier | awk '{print $1}'` # nombre de ligne dans fichier LIGNES=`expr $LIGNES - 3` # LIGNES = LIGNES - 3 head -n $LIGNES $fichier &gt; $fichier.new # sort les premi\u00e8res lignes # de LIGNES tail -n 1 $fichier &gt;&gt; $fichier.new # ajoute la derni\u00e8re ligne done<\/pre>\n<hr \/>\n<p>NDT : il est tout de m\u00eame beaucoup plus \u00e9l\u00e9gant d&rsquo;utiliser <code>ed<\/code> :<\/p>\n<hr \/>\n<pre>#!\/bin\/sh # prune.sh: efface les n-1\u00e8me et n-2\u00e8me ligne de fichiers # utilisation : prune.sh fichier [fichier...] for fichier in $* # pour chaque param\u00e8tre do printf '$-2,$-1d\\nw\\nq\\n' | ed -s $fichier done<\/pre>\n<hr \/>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">J&rsquo;esp\u00e8re que ces exemples vous auront ouvert l&rsquo;app\u00e9tit.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"s12\"><\/a>12. Astuces dont on ne peut se passer<\/h2>\n<ul style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<li>La compl\u00e9tion de commande : l&rsquo;appui sur la touche tabulation quand vous tapez une commande va compl\u00e9ter la ligne de commande. Par exemple, disons que vous devez taper <code>less un_nom_de_fichier_tr\u00e8s_long<\/code>. Il vous suffira de taper <code>less un<\/code> puis d&rsquo;appuyer sur tabulation (si vous avez plusieurs fichier qui commencent par les m\u00eames caract\u00e8res tapez-en assez pour r\u00e9soudre l&rsquo;ambigu\u00eft\u00e9).<\/li>\n<li>Faire d\u00e9filer l&rsquo;\u00e9cran vers le haut : en appuyant sur Shift-Page_up vous pouvez faire d\u00e9filer l&rsquo;\u00e9cran vers le haut de quelques pages (le nombre de page d\u00e9pend de la m\u00e9moire vid\u00e9o de votre PC).<\/li>\n<li>R\u00e9tablir l&rsquo;\u00e9cran : s&rsquo;il vous arrive de faire un <code>more<\/code> ou un <code>cat<\/code> sur un fichier binaire votre \u00e9cran pourra se retrouver plein de symboles bizarres. Pour arranger les choses, \u00e0 l&rsquo;aveuglette tapez <code>reset<\/code> ou cette s\u00e9quence de caract\u00e8res : <code>echo ctrl-v Echap c Entr\u00e9e<\/code>.<\/li>\n<li>Copier du texte sur la console : demandez \u00e0 votre administrateur d&rsquo;installer <code>gpm<\/code>, un driver pour la souris en mode texte. Cliquez et glissez pour s\u00e9lectionner du texte et ensuite appuyez sur le bouton droit pour coller le texte s\u00e9lectionn\u00e9. \u00c7a marche entre plusieurs consoles virtuelles.<\/li>\n<li>Copier du texte sous X : cliquez et glissez pour s\u00e9lectionnez le texte dans un <code>xterm<\/code> et cliquez ensuite sur le bouton du milieu (ou les deux boutons) pour coller.<\/li>\n<\/ul>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"s13\"><\/a>13. Lire des bandes VMS depuis Linux<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">(Cette section a \u00e9t\u00e9 \u00e9crite par Mike Miller)<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss13.1\"><\/a>13.1 Introduction<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">De temps en temps vous pourrez \u00eatre amen\u00e9 \u00e0 lire des bandes enregistr\u00e9es \u00e0 partir d&rsquo;une machine sous VMS (ou des bandes enregistr\u00e9es pour \u00eatre lisibles sous VMS et les syst\u00e8mes Unix). En g\u00e9n\u00e9ral, c&rsquo;est assez facile pour les bandes DECFILES11A.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Bien que l&rsquo;on puisse lire ceci comme une partie d&rsquo;un mini-HOWTO Linux, je crois que les informations ici pr\u00e9sent\u00e9es sont appliquables \u00e0 tout syst\u00e8me Unix &#8212; j&rsquo;ai fait cela avec Linux et les syst\u00e8mes Unix d&rsquo;HP, de SUN et de DEC. La principale d\u00e9pendance \u00e0 la plate-forme est le nom des fichiers p\u00e9riph\u00e9riques qui peuvent varier d&rsquo;un syst\u00e8me \u00e0 l&rsquo;autre, et les options de <code>mt<\/code> pour sp\u00e9cifier le nom du p\u00e9riph\u00e9rique (par exemple, <code>mt -f<\/code> avec Linux et <code>mt -t<\/code> sur HPUX 9).<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Avertissement : j&rsquo;ai seulement essay\u00e9 cela avec des lecteurs de bande Exabyte 8 mm SCSI. Si vous avez lu d&rsquo;autres formats (vous avez encore des lecteurs 9 pistes qui tra\u00eenent quelque part ?), faites-le moi savoir et je les ajouterai.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss13.2\"><\/a>13.2 Les bases<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour lire une bande qui a \u00e9t\u00e9 \u00e9crite avec la commande <code>copy<\/code> 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\u00e9es sur la bande : une ent\u00eate, les donn\u00e9es et une terminaison. L&rsquo;ent\u00eate et la terminaison sont int\u00e9ressantes car elles contiennent des informations sur le fichier tel qu&rsquo;il \u00e9tait sous VMS. Le fichier de donn\u00e9es est&#8230; le fichier de donn\u00e9es. Chacun de ces fichiers peut \u00eatre extrait de la bande avec la commande dd. La bande peut \u00eatre positionn\u00e9e en utilisant la commande <code>mt<\/code>.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Prenons un exemple. J&rsquo;ai une bande VMS. Les deux premiers de ses fichiers \u00e9taient appel\u00e9s <code>ce66-2.evt<\/code> et <code>ce66-3.evt<\/code> sur le syst\u00e8me VMS. Le label de la bande est c66a2.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Si j&rsquo;ex\u00e9cute les commandes suivantes<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<pre>$ dd if=$TAPE bs=16k of=ent\u00eate1 $ dd if=$TAPE bs=16k of=donn\u00e9e1 $ dd if=$TAPE bs=16k of=terminaison1 $ dd if=$TAPE bs=16k of=ent\u00eate2 $ dd if=$TAPE bs=16k of=donn\u00e9e2 $ dd if=$TAPE bs=16k of=terminaison2<\/pre>\n<hr \/>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">je me retrouve avec six fichiers : <code>ent\u00eate1<\/code>, <code>donn\u00e9e1<\/code>, <code>terminaison1<\/code>, <code>ent\u00eate2<\/code>, <code>donn\u00e9e2<\/code> et <code>terminaison2<\/code>. La syntaxe ici est <code>if=\"fichier d'entr\u00e9e\"<\/code>, <code>bs=\"taille des blocs\"<\/code> et <code>of=\"fichier de sortie\"<\/code>. TAPE doit \u00eatre une variable d&rsquo;environnement contenant le nom du p\u00e9riph\u00e9rique de votre lecteur de bande &#8212; par exemple \/dev\/nts0 si vous utilisez le premier disque SCSI sous Linux.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Si vous aviez voulu r\u00e9cup\u00e9rer le second fichier, mais pas le premier, sous son non d&rsquo;origine, vous n&rsquo;auriez pas eu \u00e0 vous pr\u00e9occuper de l&rsquo;ent\u00eate :<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<pre>$ mt -f $TAPE fsf 4 $ dd if=$TAPE bs=16k of=ce66-2.evt $ mt -f $TAPE fsf 1<\/pre>\n<hr \/>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Notez le 4. Il permet de sauter trois fichiers pour le premier fichier et un pour l&rsquo;ent\u00eate du deuxi\u00e8me. Le second <code>mt<\/code> saute la seconde terminaison et positionne la bande au d\u00e9but du prochain fichier : la troisi\u00e8me ent\u00eate. Vous pouvez aussi utilisez <code>mt<\/code> pour sauter des fichiers en arri\u00e8re (<code>bsf<\/code>), rembobiner (<code>rewind<\/code>) ou d\u00e9charger la bande (<code>offline<\/code>, <code>rewoffl<\/code>).<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss13.3\"><\/a>13.3 Quelques d\u00e9tails<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Les fichiers d&rsquo;ent\u00eates et de terminaisons contiennent des donn\u00e9es ASCII en majuscules utilis\u00e9es 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 \u00eatre utile si vous voulez faire des scripts qui lisent automatiquement des fichiers ou recherchent un fichier particulier. La premi\u00e8re ent\u00eate de la bande est un peu diff\u00e9rente des suivantes.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">L&rsquo;en-t\u00eate du premier fichier de la bande (comme par exemple dans l&rsquo;exemple ci-dessus) d\u00e9bute par la cha\u00eene \u00ab VOL1 \u00bb. Suit le nom de volume. Dans notre exemple, le fichier <code>ent\u00eate1<\/code> commence par \u00ab VOL1C66A2 \u00bb. Vient ensuite une s\u00e9rie d&rsquo;espace termin\u00e9e par un chiffre. Apr\u00e8s, on trouve la cha\u00eene \u00ab HDR1 \u00bb qui indique que l&rsquo;on a \u00e0 faire \u00e0 un fichier d&rsquo;ent\u00eate. Les caract\u00e8res qui suivent imm\u00e9diatement la cha\u00eene \u00ab HDR1 \u00bb forment le nom du fichier VMS. Dans l&rsquo;exemple, cette cha\u00eene est \u00ab HDR1CE66-2.EVT \u00bb. Le prochain champ est le nom du volume.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Le champs initial des autres fichiers (c&rsquo;est-\u00e0-dire tous sauf le premier de la bande) est quelque peu diff\u00e9rent. \u00ab VOL1 \u00bb n&rsquo;est pas pr\u00e9sent. Le reste est identique. Un autre champ utile est le septi\u00e8me. Il se termine par \u00ab DECFILES11A \u00bb. C&rsquo;est un signe de conformit\u00e9 au standard DEC Files11A.<\/p>\n<blockquote style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">\n<pre>Champ Ent\u00eate initiale Ent\u00eates 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<\/pre>\n<\/blockquote>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour une documentation compl\u00e8te sur le format de l&rsquo;ent\u00eate et de la terminaison, voyez la documentation DEC FILES11 (sur le mur gris\/orange &#8212; demandez \u00e0 votre communaut\u00e9 VMS locale :-).<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss13.4\"><\/a>13.4 Commentaires sur la taille des blocks<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Dans l&rsquo;exemple, j&rsquo;ai utilis\u00e9 une taille de bloc de 16 ko. Sur un syst\u00e8me Unix, il n&rsquo;y a pas de taille de bloc associ\u00e9e \u00e0 un fichier sur un disque alors que, sous VMS, chaque fichier \u00e0 une taille de bloc sp\u00e9cifique. Cela veut dire que la taille du bloc importe peu sous linux&#8230; sauf que cela rend la lecture des bandes plus compliqu\u00e9e. Si vous avez des difficult\u00e9s pour trouver la taille du bloc et pour lire une bande, vous pouvez essayer de r\u00e9gler la taille de bloc mat\u00e9rielle de votre lecteur de bande en utilisant <code>mt -f $TAPE setblk 0<\/code>. La syntaxe exacte de l&rsquo;option setblk (et sa disponibilit\u00e9) d\u00e9pend de la version de <code>mt<\/code>, de l&rsquo;interface mat\u00e9rielle de votre lecteur de bande et de votre environnement Unix.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">(Merci \u00e0 <a href=\"http:\/\/www.ibiblio.org\/pub\/Linux\/docs\/HOWTO\/translations\/fr\/html-1page\/skulski@nsrlc6.nsrl.rochester.edu\">Wojtek Skulski<\/a> pour avoir signal\u00e9 l&rsquo;option setblk.)<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"s14\"><\/a>14. La fin<\/h2>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss14.1\"><\/a>14.1 Copyright<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Sauf indication contraire, les droits d&rsquo;auteur des HOWTO Linux sont d\u00e9tenus par leurs auteurs respectifs. Les HOWTO Linux peuvent \u00eatre reproduits et distribu\u00e9s, en totalit\u00e9 ou en partie, sur tout m\u00e9dia physique ou \u00e9lectronique dans la mesure o\u00f9 ce copyright est pr\u00e9serv\u00e9 dans chaque copie. La distribution commerciale en est autoris\u00e9e et encourag\u00e9e. L&rsquo;auteur appr\u00e9cierait toutefois qu&rsquo;on lui notifie individuellement ce genre de distribution.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Le pr\u00e9sent copyright doit couvrir toute traduction, compilation et autre travail d\u00e9riv\u00e9 des HOWTO Linux. C&rsquo;est-\u00e0-dire qu&rsquo;il est interdit d&rsquo;imposer des restrictions de diffusion allant au del\u00e0 du pr\u00e9sent copyright \u00e0 des ouvrages inspir\u00e9s, ou incorporant des passages, de HOWTO Linux. Sous certaines conditions, des exceptions \u00e0 ces r\u00e8gles seront tol\u00e9r\u00e9es : contactez le coordinateur des HOWTO \u00e0 l&rsquo;adresse donn\u00e9e ci-dessous.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour r\u00e9sumer, nous souhaitons une diffusion aussi large que possible de ces informations. N\u00e9anmoins, nous entendons garder la propri\u00e9t\u00e9 intellectuelle (copyright) des HOWTO, et appr\u00e9cierions d&rsquo;\u00eatre inform\u00e9s de leur redistribution.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Pour toute question plus g\u00e9n\u00e9rale, merci de contacter le coordinateur des HOWTO, Guylhem Aznar, \u00e0 l&rsquo;adresse \u00e9lectronique <a href=\"mailto:linux-howto@sunsite.unc.edu\">linux-howto@sunsite.unc.edu<\/a> par email.<\/p>\n<h2 style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\"><a name=\"ss14.2\"><\/a>14.2 Avertissement<\/h2>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Ce travail a \u00e9t\u00e9 \u00e9crit d&rsquo;apr\u00e8s l&rsquo;exp\u00e9rience que nous avons eue au <em>Settore di Geofisica of Bologna University<\/em> (Italie), ou un VAX 4000 a \u00e9t\u00e9 remplac\u00e9 par un Pentium tournant sous Linux. La plupart de mes coll\u00e8gues sont des utilisateurs de VMS, et certains d&rsquo;entre eux l&rsquo;ont abandonn\u00e9 pour Linux.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Le <em>HOWTO Comment migrer de VMS \u00e0 Linux<\/em> a \u00e9t\u00e9 \u00e9crit par <a href=\"mailto:guido@ibogeo.df.unibo.it\">Guido Gonzato<\/a> et <a href=\"mailto:miller5@uiuc.edu\">Mike Miller<\/a> qui a \u00e9crit la partie sur la lecture des bandes VMS. Merci beaucoup \u00e0 mes coll\u00e8gues et amis qui m&rsquo;ont aid\u00e9 \u00e0 d\u00e9finir les besoins et les habitudes de l&rsquo;utilisateur lambda de VMS, et particuli\u00e8rement au Dr. Warner Marsocchi.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">S&rsquo;il vous pla\u00eet, aidez moi \u00e0 am\u00e9liorer ce HOWTO. Je ne suis pas un expert de VMS et je n&rsquo;en serai jamais un. C&rsquo;est pourquoi vos suggestions et reports de bogues seront plus que bienvenus.<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Amusez-vous bien,<\/p>\n<p style=\"font-family: 'Times New Roman'; line-height: normal; font-size: medium;\">Guido <code>=8-)<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>HOWTO Comment migrer de VMS \u00e0 Linux Auteur : Guido Gonzato et Mike Miller Traducteur : Dimitri Ara v1.1.3, 17 Septembre 1999 Ce HOWTO est destin\u00e9 \u00e0 toutes les personnes qui utilisent VMS et qui ont maintenant besoin ou envie de passer \u00e0 Linux, le clone libre d&rsquo;Unix. Nous effectuerons la transition &#8212; je l&rsquo;esp\u00e8re, &hellip; <a href=\"http:\/\/les-fougs.com\/wordpress\/2013\/03\/10\/de-vms-a-linux\/\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;de VMS \u00e0 Linux&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[51],"tags":[],"_links":{"self":[{"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/posts\/29"}],"collection":[{"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/comments?post=29"}],"version-history":[{"count":0,"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/posts\/29\/revisions"}],"wp:attachment":[{"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/media?parent=29"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/categories?post=29"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/tags?post=29"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}