Programmation éditoriale
I. Introduction à Unix / Linux

Éric Guichard1

Sommaire

1  Le projet initial
    1.1  Rappel du descriptif
    1.2  Fil conducteur du cours
    1.3  Exemples de réalisations
2  Linux / Unix
    2.1  Apports
    2.2  Une présentation iconique
    2.3  Le terminal
    2.4  Architecture et chemins d'accès
3  Quelques commandes Unix
    3.1  Culture: astuces et raccourcis
        3.1.1  Dans une fenêtre de terminal
        3.1.2  Général
    3.2  Documentations
        3.2.1  Sur l'internet
        3.2.2  Sur la machine
    3.3  Commandes les plus utiles
    3.4  Empilages de commandes
        3.4.1  Embo îtements de commandes
        3.4.2  Usage du système de fichiers
4  Unix dans Perl
    4.1  Commande system
    4.2  Variables
    4.3  Redirections
Ce document est avant tout un aide-mémoire pour les personnes qui s'initient à Linux et à la programmation: il accompagne un cours de programmation éditoriale (à l'ENSSIB), devant des machines, et n'a pas vocation à s'y substituer.
Il propose aussi une mise en perspective de l'informatique et de la programmation, au regard de la culture écrite: la plupart de mes étudiants sont des <<littéraires>>, et je crois que les passerelles entre le monde des programmeurs et les mondes lettrés de la période de l'imprimé sont plus nombreuses et variées qu'on ne l'imagine.
De toute façon, même en admettant qu'ils soient distincts, ces deux mondes ont un point commun: ce n'est pas avec un seul mode d'emploi, une seule carte qu'ils se laissent explorer. Et si ces quelques pages ont une quelconque utilité, ce ne pourra être qu'en complément aux milliers ou millions d'autres pages, livres, articles, essais... qui proposent des cours, des conseils, des critiques sur des thèmes analogues à ceux abordés dans ce document.
Note: la table des matières est à la fin du document.

1  Le projet initial

Cette introduction replace le cours dans son contexte géographique, pédagogique, et temporel (Lyon, 2009, pour des volontaires de culture littéraire) .

1.1  Rappel du descriptif

Le propos de cet enseignement est d'apprendre à réaliser un réel logiciel en ligne, ce qui me semble le mode ultime de l'édition de pages dynamiques et un passage obligé pour toute forme de publication numérique un peu complexe.
Une telle production alimente la réflexivité: comment la réalisation technique d'un site web et une problématique éditoriale s'infléchissent-elles l'une l'autre? comment l'une et l'autre facilitent-elles la compréhension de ce qu'est une technologie de l'intellect, Comment la pratique (mettre les mains dans le <<cambouis des octets>>) permet-elle de s'affranchir des fausses questions quant à l'internet et de construire à son sujet des problématique pertinentes?

1.2  Fil conducteur du cours

Je rappelle ici quelques points développés oralement.

1.3  Exemples de réalisations

2  Linux / Unix

2.1  Apports

Une approche presque épistémologique.

2.2  Une présentation iconique

Pour le profane, l'ergonomie Linux ne se distingue plus de celle des autres OS:

2.3  Le terminal

Outil essentiel. Sobre, voire laid, parfois impoli (command not found), parfois bavard, parfois (trop?) silencieux.
- Définition: Un terminal (ou émulateur de terminal) est une interface de communication en l'humain et le système d'exploitation. Il permet de saisir et d'afficher du texte, souvent adapté à un interpréteur de commandes (qu'on appelle un shell), sinon à des programmes élaborés: un éditeur de texte comme joe, un logiciel pour gérer ses mails comme mutt, un processeur de texte comme LATEX, un navigateur comme lynx, un programme comme perl, etc.
On peut tout faire (et très vite) avec un terminal. C'est aussi le principal moyen pour communiquer avec un ordinateur distant.
Principaux équivalents: putty, sinon cmd sur Windows. Terminal (Applications -> Utilitaires -> Terminal.app), sinon X11 sur un Mac.

2.4  Architecture et chemins d'accès

Ce point informatique est désormais bien connu de tous. Pour Linux / Unix, il suffit de se rappeler que l'articulation d'un chemin d'accès est le /. Le chemin d'accès absolu à un fichier, à un dossier, ou à une commande est donné par la succession des dossiers qui y conduisent, en partant de la racine (root) notée /.
Exemples: /usr/bin/perl, /home/dupont/pancarte.jpg.
On peut aussi parcourir l'arborescence Unix de façon relative: .. pour remonter d'un cran, ~ pour passer <<chez>> un utilisateur (cd ~ dupont), etc.

3  Quelques commandes Unix

Je conseille une (re)lecture non linéaire de ce paragraphe: certains points relatifs à la culture seront mieux compris après l'expérimentation de commandes, les uns et les autres seront mieux assimilés après une vraie pratique et la consultation de plusieurs autres documentations, etc.

3.1  Culture: astuces et raccourcis

Les savoirs qui suivent peuvent apparaître parfois élémentaires, mais ils relèvent de la littératie de base de l'informatique, sinon de la bouée de sauvetage; et nous pourrions montrer que la culture classique et imprimée sollicite elle aussi de telles connaissances, euphémisées voire oubliées tellement elles sont présentes et indispensables.

3.1.1  Dans une fenêtre de terminal

3.1.2  Général

Ce point vaut pour la majorité des logiciels et oscille entre entre bon sens et conseils.

3.2  Documentations

Dans le monde de l'imprimé, évitez les traductions, souvent truffées d'erreurs (cas le moins tragique: un $ devient un S, etc.).

3.2.1  Sur l'internet

Voici une petite sélection:

3.2.2  Sur la machine

On découvre plusieurs documentations en passant des commandes dans le terminal. Elles ne sont pas toujours très conviviales; parfois elles sont traduites en français. Pour quitter ces pages d'explications, on tape q (on en sort comme on sort du less).
La plus importante est la commande man (manual). Par exemple, man man explique comment fonctionne ce manuel. man lacommande détaille l'usage de la commande lacommande. Exemples: man less, man mv, man chown.
On peut aussi rechercher dans quel contexte, est utilisé un mot ou une commande:
man -k lacommande. Cela peut être utile lorsque le nom de la commande n'est pas intuitif. Ex.: man password ne donne pas de réponse, car la commande permettant de changer de mot de passe ne s'intitule pas password. Mais un man -k password aide à comprendre que la commande recherchée est passwd.
D'autres questions? Voir http://www.tuteurs.ens.fr/unix/aide.html

3.3  Commandes les plus utiles

Les commandes doivent être saisies dans un terminal et conclues par un passage à la ligne pour devenir effectives (le retour-chariot signale au système la fin de la commande).
Une commande est souvent suivie d'options (précédées d'un tiret) et de paramètres. Exemple: ls -l *jpg: affiche de façon détaillée (option -l) les descriptifs de tous les fichiers se terminant par jpg (paramètre *jpg).

3.4  Empilages de commandes

C'est la force d'Unix/Linux: cet OS fonctionne sur le concept de brique élémentaire (logiciels et commandes élémentaires). Vous emboîtez l'une après l'autre pour obtenir le résultat de votre choix, que vous pouvez rediriger comme bon vous semble.

3.4.1  Emboîtements de commandes

Le trait d'union entre deux commandes s'appelle le pipe. C'est le symbole | . On l'obtient avec les touches Alt_Gr-6 sur un PC, Alt-Maj-L sur un Mac.
Voici deux exemples:

3.4.2  Usage du système de fichiers

Le résultat d'une commande (ou de plusieurs emboîtées) peut être redirigé vers des fichiers: > file (ou >> file si on veut éviter d'écraser le fichier file en cas de relance de la commande).
Exemple: grep sub *pl | sort > mesroutines
sélectionne toutes les lignes contenant le mot sub (qui définit une routine en Perl) dans les fichiers se terminant par pl (souvent des programmes Perl), les trie et copie le résultat dans le fichier mesroutines.

4  Unix dans Perl

Il est conseillé de connaître des rudiments de Perl avant de lire cette partie, qui donne très succinctement quelques moyens de manipuler Unix/Linux via Perl.

4.1  Commande system

On peut appeler une commande Unix (en fait, un programme externe) à partir d'un programme Perl: system ("la commande que je désire");
Cet appel se produit au moment demandé et le programme Perl se poursuit une fois la commande externe achevée.
Cas classiques: wget, ps2gif, etc. Il est conseillé d'appeler ces commandes via leur chemin d'accès complet: /bin/rm mieux que rm!

4.2  Variables

Il arrive que l'on désire glisser dans une variable le résultat d'une commande Unix. En ce cas, on utilise des apostrophes inverses:
$ladatedelinstant= ` date ` ;

4.3  Redirections

Il est utile de se rappeler la ligne
open (L, ls | );
Le fichier L contient donc le résultat de la commande ls
Application: travailler sur tous les fichiers d'un dossier donné. Détail:
 
open (L, "ls | ");
while (<L>)
         {chop;
        $fichier=$_;
print Ön va travailler sur le fichier $fichier \n";
        open (F, $fichier);
         while (<F>)
                {traitement du fichier}
         close (F);
        }
close (L);

Notes:

1Maître de conférences à l'ENSSIB, responsable de l'équipe Réseaux, Savoirs & Territoires de l'École normale supérieure.


File (badly) translated from TEX by TTH, version 3.85.
On 1 Jun 2009, 21:42.