Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Tag: Historique

Éditer

déc 3

Niveau : Star Star Star Empty Empty
Résumé : ed

Un autre petit voyage dans le passé nous amène à regarder l'un des tout premiers éditeurs de texte. Écrit à une époque ou les terminaux étaient constitué d'un clavier et d'un imprimante, ed est le seul, l'unique éditeur standard.

Dans la droite ligne des produits unix, ed a un nom de 2 lettres, fait une chose et le fait bien. Il est minimaliste, mais plein de fonctionnalités. Les habitués de vi et de sed ne seront pas dépaysés puisque ceux-ci sont les enfants légitimes de ed.

Une fois lancé, ed prend les commandes une par une, sur une ligne, et imprime une réponse qu'il y a lieu. C'est tout ! Reste à connaître les commandes. Ed comprend les commentaires et dispose de commandes d'une lettre a pour append, i pour insert, p pour print ... Bien qu'il ne se voit pas, ed dispose d'un curseur interne lui indiquant où il se trouve dans un fichier, celui-ci étant positionné à la fin du fichier au début de la session.

$ ed test.txt
# on ajoute une ligne à la fin du fichier (à la vi)
# l'entrée texte se termine par un point seul sur une ligne (ou ctrl-d)
a
Ligne de test
Ligne tout court
.
#on imprime tout (% à la vi, p à la sed)
%p
# on change la première ligne
1c
Ligne de retest
.
# modification à la sed
1s/Ligne/Droite/
# on sauvegarde
w
# on quitte
q

Une session d'édition est finalement très simple, surtout quand on connaît vi. Mais Pourquoi parler des ancêtres s'ils ne servent plus ? Tout simplement parce qu'il est installé partout, sur toutes vos machines. Et il se peut que certains scripts soient écrits en ed, même s'il ne fait rien qu'un bon sed -i ne puisse faire.

Niveau : Star Star Star Empty Empty
Résumé : write ; mesg ; wall ; talk

Une petite explication sur une commande du passé. A l'époque où la messagerie instantanée n'était pas encore née, où l'irc n'était qu'une vague idée, beaucoup de gens utilisaient déjà des unix. Généralement sur de gros système d'université où on trouvaient de très nombreux comptes et donc beaucoup de personnes connectées simultanément.

Write

On a alors trouvé une grande utilité à un petit utilitaire nommé write. Le concept est très simple, il permet d'écrire un message à une autre personne personne connectée à la même machine.

$ write peck
Coucou peck !
<ctrl-d>

Le système de communication est très basique, le message est directement écrit sur le terminal de la personne connectée. Comme cela peut devenir très gênant de se retrouver avec un message en plein millieu de son écran, il est possible d'interdire à un autre utilisateur de vous écrire :

# y pour réactiver
$ mesg n

Bien sur la personne peut être connectée sur plusieurs terminaux. Il est alors possible de choisir un terminal en particulier, la commande who peut vous aider à savoir qui est connecté à quel terminal :

$ who
$ write peck pts/3

La messagerie instantanée et l'irc, et la raréfaction de la ligne de commande on rendu cette communication un peu rare, voire inutile. Mais il reste une version de cette commande encore régulièrement utilisée. Wall permet d'écrire à tous les utilisateurs en même temps. Mieux, et tout comme pour write, vous pouvez même écrire aux utilisateurs qui ont désactivé la fonctionnalité si vous êtes root. Ceci sert principalement à avertir les utilisateur d'un évènement imminent sur le système :

$ wall
Attention chérie ça va couper !
<ctrl-d>

C'est même intégré à la commande shutdown.

Talk

Basé sur ce principe, et sur le fait que les utilisateurs pouvaient être sur des machines différentes, le système de conversation talk a été développé. Il nécessite cette fois un démon (talkd) qui se lance à travers inetd. Une fois installé, votre configuration inetd doit contenir ceci :

talk            dgram   udp     wait    nobody.tty      /usr/sbin/in.talkd      in.talkd

Je vous laisse deviner l'équivalent xinetd.

Une fois le démon lancé, il est possible de s'y connecter à distance avec le client talk pour parler avec un utilisateur local.

# talkd doit être en écoute sur localhost
$ talk peck@localhost

A ce moment l'utilisateur distant reçoit un message lui expliquant la commande à taper (quasiment la même) pour établir la conversation avec l'utilisateur qui le demande. On se retrouve alors avec un écran découpé en 2, chaque utilisateur ayant la moitié de l'écran pour son propre texte.

Histoire

On peut dire que ces outils appartiennent maintenant à l'histoire, mais il se peut que vous ayez encore occasionnellement besoin de write ou de wall pour un message urgent à une personne que vous savez être connecté à une machine à laquelle vous avez accès.