Comment j'ai transformé mes sessions de terminal Linux en défis speedrun quotidiens


J'utilise Linux depuis de très nombreuses années maintenant, mais j'apprends toujours de nouvelles choses tout le temps. Il semble que quelle que soit la tâche que vous exécutez, il existe un moyen plus rapide de la réaliser. J'ai donc décidé de commencer à me concentrer sur ces gains de vitesse pour voir à quelle vitesse ma vie de terminal peut être.

Maintenant que je mesure les temps de commande et identifie les gains de performances, mon utilisation quotidienne de Linux devient de plus en plus efficace. Voici comment.

Commencez à chronométrer vos commandes

Identifier les pertes de temps est la première étape pour les résoudre

Un terminal indiquant que la commande du vient d'être exécutée et qu'elle a pris 186 secondes.

Bien entendu, le moyen le plus simple de chronométrer une commande consiste à utiliser la commande temporelle existante. Vous pouvez l'utiliser pour chronométrer un programme, c'est donc idéal si vous essayez d'optimiser une commande spécifique ou un script que vous avez écrit.

Mais utiliser le temps comme outil de reporting simple et généraliste est délicat, et je voulais un moyen rapide de découvrir à quoi je consacre réellement du temps à utiliser le terminal. En utilisant zsh, vous pouvez vous connecter à deux événements : preexec, qui s'exécute juste avant que le shell n'exécute une commande, et precmd, qui s'exécute juste avant de revenir à l'invite.

timer_preexec() 
    mkdir -p -- "$1" && cd -P -- "$1" 

timer_precmd() site

add-zsh-hook preexec timer_preexec
add-zsh-hook precmd timer_precmd

Dans la version complète de ce script, je définis la variable PROMPT dans time_precmd si elle dépasse un seuil, je suis donc averti chaque fois qu'une commande prend plus d'un certain temps. Ce n'est que le début de cette approche ; vous pouvez aller beaucoup plus loin et tenir un registre approprié si vous le souhaitez.

Une autre approche utilise la variable d'environnement REPORTTIME zsh pour exécuter automatiquement le time avec chaque commande :

export REPORTTIME=0

Vous pouvez définir REPORTTIME sur un certain nombre de secondes pour signaler uniquement les commandes qui prennent plus de temps.

Accélérer l'utilisation quotidienne de votre terminal

Il existe souvent un moyen plus rapide de faire quelque chose

La deuxième partie du speed running consiste à utiliser des raccourcis pour travailler plus rapidement. Ces gains peuvent sembler minimes au premier abord, mais au fil du temps, ils se combineront pour former d’importantes économies et réduire la frustration quotidienne.

Arrêtez d'utiliser la flèche vers le haut

Un terminal Linux montrant l'utilisation de la substitution du caret pour corriger la commande "git comit" avec un m à "git commit" avec deux.

Je perds beaucoup de temps sur la ligne de commande à réexécuter ou à réécrire les commandes précédentes. Les fonctionnalités d'historique de votre shell rendent cela très simple : appuyez sur En haut plusieurs fois pour retrouver une commande précédente, puis appuyez sur Entrer pour le relancer. Ou utiliser Gauche, Droiteet Retour arrière pour le modifier, puis exécutez-le. Peut-être que tu as même progressé vers Ctrl + A pour passer au début de la ligne.

Il s’avère que la plupart de ces longues saisies sont inutiles. Pour commencer, il y a !$ qui s'étend jusqu'au dernier argument de la commande précédente, vous permettant de faire des choses comme ceci :

mkdir -p my/new/directory
cd !$

Je trouve que cela est pratique lors de l'exécution d'une commande que je viens de rendre exécutable (mais assurez-vous de fournir le préfixe ./ s'il n'est pas déjà dans votre PATH) :

chmod +x foo.sh
./!$

Il existe un grand nombre de raccourcis pour l'extension de l'historique, comme !! qui s'étend à la commande précédente :

apt install something

# oops, need to be root...
sudo !!

Mais ces techniques sont loin d’être le seul moyen de réécrire les commandes passées. Une autre approche, et probablement ma principale recommandation, est la substitution du signe d'insertion :

$ cd my/new/directry
cd: no such file or directory

$ ^tr^tor
cd my/new/directory

En utilisant cette syntaxe, votre shell prendra la commande précédente, remplacera la première instance de la première chaîne par la seconde et réexécutera le résultat. Je me force maintenant à adopter cette technique au lieu de l'approche manuelle de la flèche vers le haut, et je suis agréablement surpris de voir à quel point elle est plus rapide, maintenant que je suis habitué à réfléchir au correctif et à comment le réaliser.

Enfin, la commande fc est probablement la plus utile que vous n'utilisez pas déjà. Par défaut, il ouvre la dernière commande dans votre éditeur de terminal, puis l'exécute lorsque vous quittez. Si vous souhaitez apporter des modifications plus importantes à une commande, cela est généralement plus rapide que la substitution du curseur, les raccourcis de l'historique ou le déplacement manuel du curseur.

Utiliser des alias et des fonctions

Un terminal affichant le résultat de la commande alias qui est constitué de plusieurs alias, dont jq alias jq --indent 4.

Il existe probablement des commandes – et des ensembles de commandes – que vous exécutez tout le temps sans même y penser. Vous êtes en pilote automatique, le processus est donc simple et rapide, mais il pourrait être bien plus rapide. Si vous exécutez une commande de la même manière, encore et encore, envisagez un alias.

Les alias fournissent un remplacement de texte de base, donc au lieu de taper ls-lh chaque fois que vous souhaitez une longue liste de fichiers, vous pouvez faire ceci :

ll

Pour configurer cela, vous devrez définir un alias, probablement dans un fichier comme .bashrc. Utilisez simplement la commande alias, choisissez une courte série de lettres qui ne sont pas déjà utilisées et définissez la commande développée dans son intégralité :

alias ll='ls -lh'

Les gains peuvent sembler insignifiants, mais ils augmenteront à mesure que vos commandes dureront. Par exemple, j'aime utiliser eza au lieu de ls, donc mon alias ressemble à ceci :

alias ll='eza --long --sort=size --reverse'

Cela représente beaucoup de saisie, d'autant plus que j'utilise cet alias plusieurs fois, chaque jour.

Si vos alias commencent à devenir plus compliqués, envisagez plutôt de définir une fonction simple. Les fonctions vous permettent d'utiliser des paramètres et un flux de contrôle, et vous pouvez également les appeler à partir de vos propres scripts shell.

L’une des fonctions les plus utiles que je m’assure toujours de définir est celle-ci :

mkd() 
    mkdir -p -- "$1" && cd -P -- "$1" 

Pour commencer, remarquez que le nom de cette fonction est plus court que le mkdir standard ; c'est déjà une économie à chaque fois que vous créez un répertoire ! Mais, plus important encore, il fait la chose que je fais habituellement une fois que j'ai créé un répertoire : entrer dans ce répertoire avec cd.

J'envoie également l'option -p à mkdir par défaut, car cela crée des répertoires intermédiaires, comme les documents dans « mkd docs/finance ».

Il est important de noter qu'il existe quelques inconvénients mineurs à utiliser -p tout le temps : certains types d'erreurs peuvent vous échapper, par exemple. Mais un vrai coureur de vitesse ne se préoccupe pas de ce genre de risques ; ils font tout correctement, le plus rapidement possible.

Utilisez des outils plus rapides

Un terminal Linux affichant les résultats de la commande fd recherchant des fichiers markdown, tous au format README.md.

Bien que l’ensemble d’outils Linux de base soit stable, mature et fiable, des alternatives sont disponibles. Beaucoup d’entre eux sont écrits dans des langages plus modernes, comme Rust, qui est rapide et sûr.

Les meilleurs outils de ligne de commande incluent tmux, pour la gestion de session, fzf et fd, des alternatives rapides à find/grep et zoxid, qui rend la navigation beaucoup plus efficace que cd.

Connaissez vos limites et débarrassez-vous-en !

Votre shell possède de nombreuses fonctionnalités puissantes qui vous permettent non seulement de mesurer votre productivité, mais également de l'améliorer. La complétion des onglets, les processus en arrière-plan et le chaînage de commandes ne sont que quelques-uns de ceux que je n'ai pas mentionnés ici.



Vous pouvez lire l’article original (en Angais) sur le sitewww.howtogeek.com