Maybaygiare.org

Blog Network

Drop Bash for fish shell pour obtenir de belles valeurs par défaut

Je suis l’une de ces personnes qui ouvre immédiatement une fenêtre de terminal après le démarrage de mon ordinateur. Ce n’est pas par nécessité à ce stade, mais l’habitude est là. J’ai passé la majeure partie de ma carrière à apprendre ses incantations magiques, et je trouve que naviguer dans mes tâches quotidiennes sur le terminal rend la journée de travail plus agréable. Cela dit, c’est agréable d’essayer quelque chose de nouveau de temps en temps.

J’ai récemment abandonné l’interpréteur de ligne de commande par défaut, Bash, au profit de fish, qui se présente fièrement comme « un shell de ligne de commande pour les années 90 ». Voici pourquoi j’ai changé.

J’ai trouvé ça.bashrc ne suffit pas

Il y a un peu plus d’un an, j’ai décidé d’arrêter de faire abstraction de mes systèmes d’exploitation et de commencer à l’apprendre à partir de zéro. Je suis récemment passé de Mac à Linux, ce qui m’a donné une raison d’envisager de porter mes fichiers dot vers le nouvel environnement. C’était rafraîchissant; J’ai trouvé une tonne de raccourcis et de duplications déroutants et je l’ai associé à quelque chose qui met bien en communication entre les systèmes d’exploitation. Voici quelques favoris:

## Nicer shell experience
export GREP_OPTIONS="--color=auto"; # make grep colorful
export LSCOLORS=gxfxbEaEBxxEhEhBaDaCaD; # make ls more colorful as well
export HISTSIZE=32768; # Larger bash history (allow 32³ entries; default is 500)
export HISTFILESIZE=$HISTSIZE;
export HISTCONTROL=ignoredups; # Remove duplicates from history. I use `git status` a lot.
export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"; # Make some commands not show up in history
export LANG="en_US.UTF-8"; # Language formatting is still important
export LC_ALL="en_US.UTF-8"; # byte-wise sorting and force language for those pesky apps
export MANPAGER="less -X"; # Less is more
export GPG_TTY=$(tty); # for gpg key management

J’ai entrepris un voyage pour démystifier la magie de mon environnement, et cela commence à avoir plus de sens.

La personnalisation casse mon.bashrc

C’est à ce point de clarté que je me suis retrouvé coincé. Je veux des conventions modernes dans mon terminal, en particulier les suggestions automatiques, la coloration syntaxique et la colorisation des sorties de commande sans trop de dépendances, et j’aimerais que cette configuration soit indépendante de l’interpréteur de ligne de commande que j’exécute. (iTerm2 est génial sur un Mac, mais je ne veux pas suivre son fichier de configuration crypté dans mes fichiers dot.) Alors que dois-je faire?

La première fois que je suis allé chercher une réponse, je l’ai résolue une étape à la fois:

  • D’abord, j’ai personnalisé mon ~/.fichier inputrc pour permettre la recherche en avant et en arrière.
  • Ensuite, j’ai remplacé cat par la sortie prettifiée de ccat et aliasé cat en ccat dans mon.bashrc. Cela a finalement rompu l’écriture sur stdout dans certains cas, j’ai donc cessé de l’utiliser.
  • En fin de compte, j’ai utilisé Bash-it, qui est un système de plugin puissant pour personnaliser Bash.

Après avoir épluché les pièces une par une, j’ai senti que je comprenais un peu plus comment fonctionnait mon système. Les cerceaux que j’avais l’impression de devoir franchir pour obtenir l’expérience moderne que je recherchais m’ont ramené aux normes qui m’ont amené à ce point. J’ai eu l’impression d’être prisonnière de l’histoire jusqu’à ce que je décide de tout jeter et d’essayer quelque chose de totalement différent.

Paramètres par défaut et personnalisation faciles avec fish shell

Fish shell est une interface de ligne de commande moderne avec des suggestions automatiques, la complétion d’onglets et la coloration syntaxique (entre autres fonctionnalités). J’aime particulièrement comment, dès la première fois que vous l’essayez en tapant fish, vous obtenez une belle expérience:

Dans la première ligne, la commande est bleue car pwd est une commande valide. Sur la deuxième ligne, il est rouge car pdw n’est pas une commande valide. J’ai appuyé sur Entrée pour montrer que c’est vrai, mais j’aurais pu rapidement corriger l’erreur et continuer ma journée. Dans la troisième commande, je veux changer de répertoire (cd) dans mon dossier de développement, et fish me demande automatiquement si je veux sauter dans mes fichiers dot, comme je l’ai fait la dernière fois. Lorsque j’appuie deux fois sur Tab, il affiche d’autres options dans le même répertoire, comme je m’y attendais.

Si je veux personnaliser mon expérience en coquille de poisson, je n’ai pas besoin d’installer de bibliothèque ou de framework supplémentaire pour le faire. Les navires de pêche avec la commande fish_config, qui lance une interface utilisateur graphique (GUI) où vous pouvez choisir différentes couleurs et des configurations rapides.

Ce qui est plus impressionnant, c’est que vous pouvez également consulter toutes les fonctions, variables, liaisons et plus encore disponibles à partir de l’interface graphique :

Si vous ajustez votre configuration, toutes les personnalisations sont stockées au même endroit : ~/.configuration / poisson. La capture d’écran ci-dessus montre que j’ai créé une fonction personnalisée qui me permet d’activer facilement un environnement Python en utilisant pyenv. Consultez le tutoriel sur les fonctions de poisson pour en savoir plus.

Soyez averti: le poisson n’est pas comme Bash

En essayant d’autres coquillages, j’ai trouvé qu’il y avait toujours quelques différences que je devais régler, mais elles me semblaient familières dans l’ensemble. Ce n’est pas le cas du poisson. La définition de la fonction, l’aliasing et les variables fonctionnent tous un peu différemment. Il existe des stratégies utiles pour la conversion.bashrc et.bash_profile les fichiers dans la configuration fish, mais c’est plus que ce que je vais couvrir dans cet article. Donc, alors que j’ai appris à aimer le poisson, je vous recommande de faire un tour dans le tutoriel interactif pour voir si cela vous plaît.

Essayez fish pour une belle coquille par défaut

J’aime bien commencer ma journée en ouvrant le terminal, et je l’apprécie encore plus depuis que je passe à la coquille de poisson. Cela m’a permis de ne plus m’inquiéter de ce qu’il y a dans Bash pour me concentrer sur le code que je prévois d’écrire. Si vous souhaitez vous éloigner du bricolage de votre terminal et vous concentrer davantage sur le code, essayez-le. Utilisez chsh pour le définir comme shell par défaut, et faites-moi savoir comment cela se passe dans les commentaires.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.