Renouez avec les CLI récalcitrantes

Vous connaissez probablement ce problème. Oh oui, vous le connaissez ! Vous utilisez parfois un émulateur de terminal (comme xterm, *term, gnome-terminal, Konsole ou Terminal.app) et vous savez mettre à profit les petits raccourcis du shell, comme la flèche vers le haut pour naviguer dans l'historique, Ctrl+R pour chercher dans cet historique, les touches Début (ou Ctrl+A), Fin (ou Ctrl+e), flèche gauche et flèche droite pour vous déplacer dans la commande actuelle...
Vous savez aussi que sans ces touches le fait de taper dans une CLI (Command Line Interface) est une vraie baguette dans le cul. Et certains programmes ne se gênent pas pour vous le rappeler. Oui, beaucoup de programmes ont la fâcheuse tendance à ne pas proposer tous ces petits raccourcis sympathiques. Lorsque l'entrée standard est lue, par exemple, elle l'est de manière brute, donc adieu les raccourcis d'amour. Pour vous en convaincre, je vous invite à essayer juste l'entrée standard toute simple :
$ cat
pouet
pouet
ah ouais
ah ouais
^[[D^[[A^[[B^[[Cok   
 ok
^[^[^[^[
pourquoi ça marche pas ctrl+c????????
pourquoi ça marche pas ctrl+c????????
arrête de répéter ce que je dis
arrête de répéter ce que je dis
je suis un idiot
je suis un idiot
raaaah mais arrête !
raaaah mais arrête !
Alors, ça vous casse les bonbons ou quoi ? Si vous avez déjà fermé violemment votre émulateur de terminal, je vous rappelle que vous pouviez utiliser Ctrl+D pour fermer l'entrée standard. Voilà, vous êtes en rogne.
Heureusement il existe un programme qui vous permettra d'adorer à nouveau la ligne de commande, puisqu'il fonctionne avec quasiment toutes les CLI.

Le coupable

Il s'agit bien évidemment de rlwrap, un magnifique programme qui se contente d'utiliser readline lorsqu'il faut utiliser l'entrée standard. Ce truc bizarre nommé readline est une librairie GNU qui est responsable de tous les trucs que vous aimez bien dans le shell, c'est-à-dire les raccourcis-clavier, l'historique... En gros, si vous invoquez rlwrap en passant en argument le programme dont les mécanismes d'entrée vous hachent les bourses en petites lamelles (je pense en premier à ocaml ou sqlplus...), vous disposerez du même programme mais avec tous les petits raccourcis qui font votre bonheur !

Catwoman

Testons le comportement de rlwrap avec un programme très simple, cat, qui, lorsqu'il est appelé nature (comme les yaourts nature), recopie l'entrée sur la sortie. Nous n'allons pas revivre l'expérience humiliante de cat tout seul, alors regardons-le à l'œuvre avec sa super modification laser :
$ rlwrap cat
pouet
pouet
ah ouais
ah ouais
ah ouaisok
ah ouaisok
(reverse-i-search)`': ah ouais
Bon, je pense que vous avez compris, je ne vous fournis pas plus d'explications, car je sens que vous mourrez d'envie d'aller utiliser rlwrap en courant dans les champs !

1 commentaire(s)

Mar 13, 2010
max said...
21:48 max@toshibath ~% cat
pas chez moi :p
pas chez moi :p
^C
21:48 max@toshibath ~%

Vous pouvez réagir à cette page ou à une réaction à cette page ici.

oin? oin.

26573 oins since near 2010.

dubtrip

Fathaya Sound Syndicate

c.oin.name (en construction)

Chez Olivier El Mekki

Mon profil sur Posterous

oin, a join creation icons by fixicon — background by crazy-alice — powered by posterous

Ce site personnel est un fourre-tout qui peut servir de journal personnel, de répertoire de musique, de portfolio, de carnet de notes, de recueil de pensées diverses sur des sujets variés. Les auteurs dévoilent une partie de leur personne et de leurs recherches, afin qu’en retour ils puissent y trouver l’avis d’autres personnes. Les informations que vous trouverez ici sont données sans aucune garantie. Par ailleurs, ouvrir ce site annule la garantie. La musique qui se trouve sur ce site (et non pas celle qui est liée) est sous licence Creative Commons Music Sharing. L’administrateur du site se réserve le droit de vilipender quiconque sur ses terres et de retirer toute participation extérieure qui lui ferait perdre patience.