Un émulateur de terminal innovant pour les data geeks

Pour ceux qui comme moi ont l’habitude de manipuler les données avec des outils en ligne de commande (genre csvkit, jq, xsv, qsv, sqlite, duckdb, etc.), je signale un émulateur de terminal innovant (MacOS, Linux) : https://www.waveterm.dev/

Il est encore très jeune et possède pas mal de défauts, mais je le trouve particulièrement innovant sur plusieurs points :

  • chaque commande est indépendante : on n’est pas obligé d’attendre la fin d’une commande pour entrer la suivante (je sais qu’on peut utiliser & à la fin d’une commande mais ce n’est pas tout à fait pareil) ; ça améliore la productivité car on peut préparer la commande suivante ou en suivre éventuellement le fichier résultant (tail) sans changer de terminal
  • chaque commande est finement éditable : lorsque j’édite habituellement une commande du shell sur plusieurs lignes je suis obligé de patiemment attendre que le curseur se déplace jusqu’au point souhaité via la touche « déplacement à gauche » ; ici chaque entrée est un peu comme un éditeur de texte : on peut utiliser toutes les touches de déplacement voir même la souris pour aller plus rapidement au point souhaité
  • il est possible d’archiver des commandes pour ne garder à l’écran que celles souhaitées

Ainsi ça rend très simple la fabrication de petits extraits de code de plusieurs lignes, qui vont par exemple concourir à l’élaboration d’un script plus complet.

[[ -f "en.openfoodfacts.org.products.tmp.parquet" ]] && rm en.openfoodfacts.org.products.tmp.parquet
duckdb <<EOF
  COPY (
    FROM read_csv_auto('en.openfoodfacts.org.products.csv', quote='', sample_size=3000000, delim='\t') 
  ) TO 'en.openfoodfacts.org.products.tmp.parquet' (FORMAT PARQUET, COMPRESSION 'ZSTD');
EOF

Malgré une interface encore très très perfectible, il me fait d’ores-et-déjà gagner pas mal de temps.

3 Likes