Journal Quelques gemmes en CLI

Posté par .
26
2
juin
2024

Salut nal',

Je propose de partager quelques outils en ligne de commande que j'ai découverts récemment, que je trouve particuliÚrement sympas et qui me semblent peu connus.

wezterm

Commençons par le terminal. Je suis depuis longtemps un utilisateur d'urxvt, mais Ă  la fin de l'annĂ©e derniĂšre, j'ai voulu changer d'Ă©mulateur de terminal. J'avais entendu parler de kitty et d'alacritty, mais je voulais voir comment ça se passe ailleurs et je suis tombĂ© sur wezterm. C'est un terminal qui se configure en lua et qui a la plupart des fonctionnalitĂ©s des Ă©mulateurs rĂ©cents (accĂ©lĂ©ration graphique, possibilitĂ© d'afficher des images dans le terminal,...). Je le trouve plutĂŽt cool, mĂȘme s'il demande de la configuration pour ĂȘtre utilisable. Je n'ai pas utilisĂ© sa gestion de session SSH que certains trouvent gĂ©niale. Mais j'ai eu l'occasion d'interagir avec le dĂ©veloppeur principal qui est trĂšs sympa.

Site https://wezfurlong.org/wezterm
Code https://github.com/wez/wezterm
Licence MIT
Démarrage 2017
Développement un seul développeur qui accepte pas mal de contributions
Langage rust

ugrep

J’ai peut ĂȘtre ratĂ© une Ă©tape, mais pour moi la guerre des greps a commencĂ© avec silversearcher alias ag. Le game a de mon point de vu rapidement Ă©tait pliĂ© avec ripgrep qui est extrĂȘmement rapide et qui a des comportements originaux qui si on accepte qu’ils sont diffĂ©rent du grep standard sont assez pratiques. Je suis tombĂ© sur ugrep, une alternative trĂšs trĂšs cool. DĂ©jĂ  c’est un drop-in replacement Ă  grep, il a les performances qui le classe dans le mĂȘme groupe que rg, mais il a aussi beaucoup beaucoup de fonctionnalitĂ©s. Par exemple il peut faire des recherches par fuzzing ou faire des opĂ©rations boolĂ©ennes (par exemple FOO OR BAR qui peut se coupler avec des types de recherche). Petite chose sympathique, il est possible de sauvegarder sa configuration dans un fichier .ugrep. Pour les contributeurs c’est fait en C++.

Site https://ugrep.com/
Code https://github.com/Genivia/ugrep
Licence BSD 3 clauses
Démarrage 2019
Développement un seul développeur qui accepte pas mal de contributions
Langage C++

viddy

J’utilise watch pour certaines tĂąche d’administration systĂšme. Par exemple quand je dois manipuler un cluster (kubernetes, cassandra ou autre) j’aime bien avoir un terminal qui tourne en me donnant le rĂ©sultat de la commande du status du cluster. Quand on attend le changement d’état d’un nƓud c’est assez pratique. viddy fait ça avec quelques raffinements en plus. Les 2 qui m’intĂ©ressent le plus c’est celui qui met en surbrillance les changements et celui qui permet de parcourir les prĂ©cĂ©dents rĂ©sultats.

Code https://github.com/sachaos/viddy
Licence MIT
Démarrage 2021
DĂ©veloppement le dĂ©veloppement a l’air au ralenti, les issues (dont la plupart demandent plutĂŽt des nouvelles fonctionnalitĂ©s) ne trouvent pas de rĂ©ponses
Langage Go

hyperfine

La commande time est trĂšs utile, mais des fois la vitesse d’une commande peut ĂȘtre assez variable. hyperfine rĂ©sous ça en lançant plusieurs fois la commande et en donnant des statistiques. C’est assez pratique et ça permet d’avoir le rĂ©sultat quand les caches sont dĂ©jĂ  chaud.

Code https://github.com/sharkdp/hyperfine
Licence double Apache 2 & MIT
Démarrage 2018
Développement un seul développeur
Langage rust

lsd

Je n’utilise pas de gestionnaire de fichier. À la place j’utilise mon shell, mais ça ne veut pas dire que je suis un moine qui veut tout voir en vert sur noir ! J’aime bien avoir des couleurs et que tout soit bien prĂ©sentĂ©. AprĂšs la mort de exa et un court passage sur eza, j’ai dĂ©couverts lsd. Il a plus de fonctionnalitĂ© (il me semble) et peut ĂȘtre configurĂ© (et j’aime bien configurer mes outils).

Code https://github.com/lsd-rs/lsd
Licence Apache 2
Démarrage 2018
Développement un seul développeur
Langage rust

zsh-vi-mode

J’ai rĂ©cemment voulu rĂ©essayer les mode vi de zsh. Juste changer le binding n’est pas trĂšs confortable ne cerais-ce parce qu’on ne sait pas dans quel mod vi on se trouve. En chrechant des idĂ©es de configuration sympa je suis tombĂ© sur un projet qui le rĂ©implĂ©mente en corrigeant au passage un certains nombre de "petites" choses qui peuvent ĂȘtre inconfortable aux plus habituĂ©s de vi. Je trouve que ça fonctionne vraiment bien.

Code https://github.com/jeffreytse/zsh-vi-mode
Licence MIT
Démarrage 2020
Développement un seul développeur
Langage zsh
  • # LSD

    PostĂ© par . ÉvaluĂ© Ă  5.

    ça a l'air génial, LSD ! Les icÎnes en fontes, j'adore.

    • [^] # Re: LSD

      PostĂ© par . ÉvaluĂ© Ă  2.

      J'ai testé lsd et c'est vraiment super pratique! Merci pour ce journal!

  • # vidir - Renommage/suppression rapide de fichiers au travers d’un Ă©diteur de texte

    PostĂ© par . ÉvaluĂ© Ă  7.

    Je me permets de contribuer à ce bel inventaire avec vidir, dont je ne me lasse pas. En gros ça envoie la liste des fichiers du dossier courant ou une liste précise de fichiers dans votre éditeur de fichiers favori. De là, vous pouvez les supprimer (en virant la ligne correspondante) ou les renommer (en corrigeant la ligne correspondante)... et ce possiblement trÚs vite et en masse, selon votre maßtrise de votre éditeur de texte. Sauvegardez le fichier (temporaire) et les modifications correspondantes seront appliquées.

  • # Bat

    PostĂ© par . ÉvaluĂ© Ă  5.

    Un autre outil sympathique dans la mĂȘme veine: bat. C'est un cat avec de la coloration syntaxique, et qui par dĂ©faut montre le rĂ©sultat dans un pager.

    • [^] # Re: Bat

      PostĂ© par (site web personnel) . ÉvaluĂ© Ă  3.

      Qui n'a pas de rapport avec l'autre logiciel B.A.T. (visuels)

      • [^] # Re: Bat

        PostĂ© par . ÉvaluĂ© Ă  1.

        J'aime bien l'autocollant sur la couverture : en raison d'un problÚme de mémoire, cette version n'a ni bruitages ni simulateur de vol... Vive les jeux français !

    • [^] # Re: Bat

      PostĂ© par . ÉvaluĂ© Ă  2.

      Bat demande moins de configuration, mais je suis bien avec lesspipe pour ça.

      https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • # wezterm

    PostĂ© par (site web personnel) . ÉvaluĂ© Ă  3.

    Merci pour le lien, je ne connaissais pas.

    Il y a un paquet Debian ainsi qu'un dépÎt, ça c'est cool. C'est pas si souvent que ce genre d'outils alternatifs se retrouvent packagés pour Debian.
    Pour ceux qui se posent la question : il est Wayland natif.

    J'ai fait une conf minimale rapidement ce matin (font, couleurs), il est plus rapide à se lancer que Kitty que j'utilisais jusqu'à présent.
    Ça se joue Ă  pas grand chose et on pourrait penser que ça frise l'enculage de mouches, mais aprĂšs ĂȘtre passĂ© Ă  Emacsclient, la petite seconde pour le lancement de Kitty Ă©tait devenue plus visible.
    Là c'est instantané (~100ms), c'est plus confortable.

    Je suis pas rentré dans le détail pour le moment, mais dÚs que j'aurai un moment j'éplucherai la doc.

    There is no spoon...

    • [^] # Re: wezterm

      PostĂ© par . ÉvaluĂ© Ă  2.

      Merci pour le lien, je ne connaissais pas.

      Dans les terminaux actuels, il est difficile de se faire une place, mais j'ai l'impression qu'il monte doucement. Il est pas révolutionnaire, il n'a pas de killer feature, mais il fait bien tout ce qu'il fait j'ai l'impression.

      J'ai juste trouvé dommage qu'il ne semble pas avoir de gestion out of the box du clipboard et du coup j'ai un truc comme ça :

      function make_mouse_binding(dir, streak, button, mods, action)
       return {
       event = { [dir] = { streak = streak, button = button } },
       mods = mods,
       action = action,
       }
      end
      config.mouse_bindings = {
       make_mouse_binding('Up', 1, 'Left', 'NONE', wezterm.action.CompleteSelectionOrOpenLinkAtMouseCursor 'PrimarySelection'),
       make_mouse_binding('Up', 1, 'Left', 'SHIFT', wezterm.action.CompleteSelectionOrOpenLinkAtMouseCursor 'PrimarySelection'),
       make_mouse_binding('Up', 1, 'Left', 'ALT', wezterm.action.CompleteSelection 'PrimarySelection'),
       make_mouse_binding('Up', 1, 'Left', 'SHIFT|ALT', wezterm.action.CompleteSelectionOrOpenLinkAtMouseCursor 'PrimarySelection'),
       make_mouse_binding('Up', 2, 'Left', 'NONE', wezterm.action.CompleteSelection 'PrimarySelection'),
       make_mouse_binding('Up', 3, 'Left', 'NONE', wezterm.action.CompleteSelection 'PrimarySelection'),
      }

      https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • # D'autres, prinpalement en rust

    PostĂ© par . ÉvaluĂ© Ă  1. DerniĂšre modification le 04 juin 2024 Ă  22:33.

    Voir les sources de cet articles: https://connect.ed-diamond.com/linux-pratique/lp-141/l-essor-de-nouveaux-outils-en-ligne-de-commandes-ecrits-en-rust

    Ou via ce repo Github: https://github.com/sts10/rust-command-line-utilities

    Note: Si vous en avez d'autres outils codés avec d'autres langages, il sont les biens venus.

    • [^] # Re: D'autres, prinpalement en rust

      PostĂ© par . ÉvaluĂ© Ă  2.

      Pour mieux expliquer ma démarche, ce qui m'a paru intéressant c'est de faire de la curation parler d'outils que j'utilise et qui me paraissent particuliÚrement intéressants. Une liste limitée d'outils que je trouve particuliÚrement intéressants et peu connus.

      Tu peut en trouver des profusions dans ton moteur de recherche, github ou gitlab : tu tape "awesome" + un mot clef que tu recherche (un langage ou un domaine) et tu tombe sur des tétrachiées d'outils.

      Ton premier lien est derriĂšre un paywall.

      Les 2 approches sont pertinentes mais ne s’adressent pas tout Ă  fais au mĂȘme publique. Celle de la profusion permet Ă  ceux qui veulent tester, dĂ©couvrir et sont prĂȘt Ă  passer du temps alors que l'autre est plus pour les gens "pressĂ©s".

      https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

      • [^] # Re: D'autres, prinpalement en rust

        PostĂ© par . ÉvaluĂ© Ă  2. DerniĂšre modification le 07 juin 2024 Ă  00:01.

        Ton premier lien est derriĂšre un paywall.

        C'est exacte mais j'ai bien prisĂ©e: dans les sources de l’article !

        Cependant je suis d'accord que l'on avait pas la mĂȘme dĂ©marche et que cela peut ĂȘtre dĂ©routant quand il y a quand il y a trop d'outils Ă  tester ( ou trop de description Ă  lire).

        Voici ceux que j'utilise.

        #puts a type indicator character at the end of special files’ names.
         alias ls='eza'
        # long list
         alias ll='eza -long --octal-permissions --time-style long-iso --git --icons=auto'
        #all files in list
         alias la='ll --almost-all'
        #all files in list sort by modified
         alias llm='la -s modified'
         alias llM='la -s modified --reverse'
        #all files in list sort by created
         alias llc='la -s created'
         alias llC='la -s created --reverse'
        #all files in list sort by size
         alias lls='la -s size'
         alias llS='la -s size --reverse'
        #as tree
         lstree() { eza -TL${1:-3} }
         alias lT='lstree'
        
        • alacritty - emulateur de terminal en combo avec zellij - multiplexeur de terminal.
          Alacritty "juste fonctionne", il ne sert que à ca, pas d'autre fonctionnalitées et c'est trÚs biens comme ca.
          Zellij se raproche plus ou moins de tmux mais avec les racourcis clavier visible.

        • Bat sorte de cas mais avec coloration syntaxique. On en parle plus haut.
          Pour avoir, le mĂȘme comportement que cat par defaut, on peut utiliser son fichier de configuration ou l'alias suivant cat='bat -pp'

        • delta - diff avec un affichage plus "moderne", peut aussi s’interfacer avec git (diff,merge,blam,...)

        • fd alternative Ă  find, beaucoup plus rapide.

        • Et dans le cas oĂč ces outils, qui sont tous Ă©cris en Rust, ne sont pas intĂ©grĂ©s en tant que paquet pour votre distribution prĂ©fĂ©rĂ©e, je vous invite Ă  utiliser cargo-binstall et cargo-update. Ces outils vont vous permettre d'installer et de mettre Ă  jours facilement les outils Rust qui vous intĂ©resse.
          Par exemple aprÚs avoir installé cargo-binstall comme indiqué dans sa documentation, pour installer cargo-update: cargo binstall cargo-update et cargo install-update -a pour mettre à jours les outils. Les noms de ces outils sont à valider sur https://crates.io/.
          (Tiré du Linux Pratique cité dans mon premier message. )

        • ZK - A plain text note-taking assistant, ce coups ci, c'est du Go. Un outil en lignes de commandes pour gĂ©rer vos notes (votre second cerveau) sous forme de fichier markdown. Je l'utilise en parallĂšle d'Obsidian pour la version graphique.

        • [^] # Re: D'autres, prinpalement en rust

          PostĂ© par . ÉvaluĂ© Ă  2. DerniĂšre modification le 07 juin 2024 Ă  00:19.

          J'ai oublié (toujours en Rust):

          • atuin une sorte de cd | history assez pratique. AprĂšs avoir installĂ© l'outil, tout chemins des dossiers auquel vous accederez via z <chemon de votre dossier> seront stockĂ©es dans une base de donnĂ©es et classĂ© selon leur frĂ©quence d'accĂšs. De cette maniĂšre, si vous accĂ©der souvant Ă  ~/dossier1/dossier11/dossier111, vous pourrez accĂ©der depuis n'importe quel dossier courant Ă  dossier111 avec z dossier111.
            Personnellement, j'ai créé l'alias suivant cd="z".
          • [^] # Re: D'autres, prinpalement en rust

            PostĂ© par . ÉvaluĂ© Ă  2.

            Ce que tu décris ressemble plutÎt à zoxide : "A smarter cd command".

            Atuin c'est pour améliorer la gestion de l'historique shell : stockage, recherche, synchro. Pour cela moi j'utilise (une version modifiée de) hishtory.

Suivre le flux des commentaires

Note : les commentaires appartiennent Ă  celles et ceux qui les ont postĂ©s. Nous n’en sommes pas responsables.