[gull] Truc et astuces: bash redirection et gnuplot sans ficher temporaires

felix felix at f-hauri.ch
Tue Oct 25 09:49:24 CEST 2016


Bonjour,

Voici une ligne de commande qui permet de lancer gnuplot pour présenter
des délais de réponse au ping, sans fichier temporaire, ni *.plot :

  gnuplot -p -e "
      set xdata time;
      set timefmt '%s';
      set xrange [ '$(date +%s)' : '$(date -d 'now +30 seconds' +%s)' ];
      plot '-' using 1:2 with line title 'ping google';" < <(
    (
        ping -c 30 -n google.com |
          sed -u 's/^64.*time=\([0-9.]\+\) .*$/\1/p;d' |
          tee >(sed -u 's/.*/now/'| stdbuf -oL date -f - +d%s)
    ) | sed -u 'N;s/\n/ /;s/\([0-9.]\+\) d\([0-9]\+\) */\2 \1/;s/d//' |
    tee >(printf "%(%T)T %s\n" $(</dev/stdin) |
    column -c $COLUMNS >&2 )
  )

Mise en page et exemple en image: http://stackoverflow.com/a/40159300/1765658

Comme d'habitudes, cette "petite" ligne est bourrée de trucs et autres
bashismes...

En particulier, la commande
    `printf "%(...)T..." $(</dev/stdin)`
  qui, par oposition à
    `xargs printf ...`
  permet d'utiliser la fonction printf interne de bash, plutôt que
  /usr/bin/printf  (qui ne connait pas "%(...)T" ).
Cependant, je doute que cette syntaxe soit aussi robuste que `xargs`!!

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list