[Toulouse-pm] OSCON (3)

Michel Rodriguez mrodrigu at ieee.org
Tue Jul 27 14:16:12 CDT 2004


Welcome to my bin
    *MJD*

    Quelques petits bouts pour commencer: "fork && exit;" pour mettre
    le process en background. "exec $command; die "could not run
    $command";" exec retourne uniquement si la commande ne marche pas.

    Il présente les outils de son ~/bin, sur le même principe que
    Damian l'an dernier a YAPC. J'aime bien ce genre de talk parce que
    ça me donne des idées, et surtout ça m'incite à être fénéant,
    vraiment fénéant, cad écrire mes propres outils.

    Il nous prévient d'abord que le code qúil va présenter est tel
    quel, brut de sa machine, y compris les fautes de frappe, le
    traitement des options non-standard, et surtout le thème qui lui
    est apparu en préparant le cours: "over-engineering", ses outils
    sont souvent un peu trop compliqués, surtout avec des options dont
    il ne se sert jamais.

    Il nous présente d'abord un programme qui replace slocate. Il
    construit juste une liste des fichiers sur sa machine (avec
    "find"!) et ensuite utilise une couche au-dessus de "grep". Je
    pense que je vais réutiliser ça, j'en ai marre de ne pas pouvoir
    utiliser d'expressions régulieres avec "slocate". Du coup je tape
    "slocate toto | grep 'toto$'" trop souvent.

    Maintenant "pgrep" qui remplace grep. Il lui permet de remplacer
    par example "find . -type f | xargs grep /foo/". Tiens, il utilise
    "printf( "%2$s",...)", ou le %2$s sort le deuxième argument du
    "printf" (le "printf" a toujours la même liste d'arguments et il
    construit le format en fonction des options). Je peux faire le
    barbot et montrer que je connais les options de "grep" mieux que
    lui parce qúil a écrit "pgrep" il y a 2 ans alors que j'ai écrit
    "xml_grep" l'an dernier ;--)

    Maintenant "ticker": "it is an incredibly useless program that
    takes up an enormous amount of cycles and I use it all the time":
    il fait comme "tail -f" sauf qúil affiche la taille du fichier.
    Pour quand on veut savoir si le (ou plusieurs) fichier grossit,
    sans être interessé par son contenu. Le code sommence par "use
    FileHandle;"... qui n'est jamais utilisé. Au cas ou certains ne
    connaitraient pas, comment utiliser un module si il est installé,
    sans mourrir s'il ne l'est pas:

      if( eval( 'require Time::Hires') ) { import Time::Hires; }

    Un autre truc que je savais pas: "print "\r";" revient au début de
    la ligne sans changer de ligne (sous unix).

    Il a quelques options rigolotes, qúil n'a jamais utilisées: le
    nombre de pages (lignes/66) du fichier, le taux de
    grossissement...

    Bon, on passe a "ftail". Il utilise "supervise" pour les services
    genre mail. "supervise" se charge de la rotation des logs, ce qui
    fait que "tail -f" n'affiche plus le bon fichier (mais le vieux
    log qui ne grossit plus). Donc "ftail" suit le fichier par nom. En
    fait maintenant "tail --follow=name" fait ça.

    Puis "f", qui remplace "awk '{print $7}'" (remplacé par "f 7"). Le
    code fait 4 lignes (juste décrementer l'argument, un "split" et
    voili!). En plus il peut faire "f -1" pour avoir la dernière
    colonne. Wouah, je me rappelais plus de l'option "-a" qui met Perl
    en mode "awk" (la ligne est "split"-ée et @F reçoit le résultat).

    On passe a "psgrep", qui fait juste l'équivalent de "ps -ef |
    grep", sauf que en plus ça laisse l'en-tête qui donne le nom des
    colonnes. 5 lignes, tout bête mais ça fait gagner du temps.

    "sw" lance un process dans une petite fenêtre ("sw" veut dire
    small window). Au lieu de lancer les process en background il les
    lance avec "sw" le plus souvent. Il découvre, à sa grande surrise
    que le code est... ! ligne de shell!!

      exec rxvt -fn 6x10 -e "$@" &

    Tiens, il trouve un bug dans "attach", qui lui permet de créer
    depuis la ligne de commande des mails avec des attachements.

    Sa conclusion: ses programmes sont souvent assez mal codés, mais
    en fait comme ils sont courts ça n'est pas très grave, ils
    marchent assez bien et il s'en sert s'en arrêt.





More information about the Toulouse-pm mailing list