La coquille de poisson

Une introduction utilisateur à la coquille de poisson

J'ai utilisé leCoquille de poissondepuis des mois, et je pense que c'est la meilleure coque que j'ai jamais utilisée. Pour de nombreuses raisons.

Les gens semblent s'en tenir àFrapperqui est la valeur par défaut sur de nombreux systèmes (mise à jour: maintenant la valeur par défaut de macOS est Zsh) ou utilisez Zsh, avec un excellent outil commeOh mon zshpour le rendre encore plus étonnant.

Bash, bien que génial, est un shell très basique, avec un ensemble limité d'options configurables. J'ai tendance à l'utiliser principalement pour courirScripts bash(qui sont un autre sujet) plutôt que comme un shell interactif. Zsh offre beaucoup de fonctionnalités mais nécessite un peu de configuration à mettre en place, ce qui pourrait effrayer les débutants. De plus, trop d'options et de liberté signifient que vous pouvez entrer dans une paralysie de configuration assez facilement, et vous finissez par changer les options 20 fois par semaine pour vous assurer de ne pas manquer.

Je ne veux pas me «dénigrer» sur ces projets, qui sont incroyables et que j'ai utilisés pendant beaucoup de temps et parfois encore. Cette description est ma tentative de mettre en évidence les avantages du poisson

Fish Shell à la rescousse! Ce shell fournit un environnement incroyable et une configuration complète prête à l'emploi.

Mes fonctionnalités préférées de Fish sont:

  • il a de meilleures fonctionnalités de saisie semi-automatique pour les commandes que vous avez déjà exécutées et cela seul rend vraiment mon quotidien plus rapide et moins stressant.
  • vous commencez à taper une commande et appuyez sur la toucheupkey pour voir toutes les heures de l'historique du shell où vous avez utilisé cette commande auparavant.
  • vous pouvez installer Fish sur n'importe quel système et cela fonctionne de la même manière partout, sans avoir à trop personnaliser pour obtenir les choses sophistiquées.

En ce qui concerne le script, il est assez différent du script Bash (d'une meilleure manière à mon humble avis), mais vous pouvez exécuter n'importe quel script Bash à condition qu'il soit préfixé avec#!/bin/bash.

Juste après l'installation, vous obtenez ces belles choses:

  • coloration syntaxique
  • une belle invite
  • autocompletion
  • suggestion de paramètre avec conseils de page de manuel
  • configuration basée sur le Web

et à mon avis, c'est la coque la plus conviviale pour les débutants.

L'une des choses amusantes dont je me souviens que j'ai remarquée était la page d'accueil. Au début, je ne pouvais pas comprendre si c'était une sorte de relique du passé:

Pour les plus chanceux possédant un ordinateur graphique, vous pouvez définir vos couleurs et afficher les fonctions, les variables et l'historique à partir d'une page Web.

Puis j'ai réalisé que c'était l'humour du programmeur et cela m'a fait rire. La technologie devrait toujours être amusante, non?

Tout d'abord: qu'est-ce qu'une coquille?

Un shell est une interface avec le système d'exploitation sous-jacent. Il vous permet d'exécuter des opérations à l'aide de texte et de commandes, et il fournit aux utilisateurs des fonctionnalités avancées telles que la possibilité de créer des scripts.

Installation

Installez Fish en exécutantbrew install fishsur macOS.

Découvrez monGuide du terminal macOS

fishest installé dans/usr/local/bin/fish.

Puisque c'est probablement déjà sur votre chemin, exécutezfishpour démarrer la coquille de poisson (tapezexitpour revenir à votre shell par défaut)

Configuration

Une autre chose intéressante à propos de Fish est une configuration Web. Courirfish_configpour démarrer le client Web.

configuration

De là, vous pouvez

  • choisissez un jeu de couleurs dans une liste de couleurs prédéfinies
  • choisissez une invite dans une liste prédéfinie
  • inspecter les fonctions Fish et les variables configurées
  • voir l'historique des commandes

La configuration est stockée dans le~/.config/fishdossier, et c'est là que vous pouvez le modifier sans avoir à utiliser la configuration Web (facultative).

Fonctionnalités Fish: coloration syntaxique, saisie semi-automatique et suggestion de paramètres avec conseils de page de manuel

Fish vous permet d'exécuter les commandes Unix habituelles disponibles sur votre système. Opérations sur le système de fichiers, par exemple:

  • lspour lister les fichiers
  • cdchanger de dossier
  • rmpour supprimer un fichier ou un dossier
  • mvpour déplacer un fichier vers un autre dossier ou modifier un nom de fichier
  • cppour copier un fichier

Si vous exécutez l'une de ces commandes (ouanycommande, vraiment) vous commencerez à voir les mots que vous tapez obtenir des couleurs différentes. Cela facilite la lecture et la compréhension des commandes.

Fish ajoute également l'auto-complétion. Si tu couraiscd ~/.config/fish/auparavant, et maintenant vous tapezcd, Fish suggérera des commandes que vous voudrez peut-être taper, et il vous suffit d'appuyer sur la flèche droite pour accepter la suggestion (ou vous pouvez continuer à taper pour changer la commande). Cette suggestion est basée sur l'historique des commandes et les chemins de fichiers.

Les suggestions basées sur la saisie semi-automatique fonctionnent également pour les commandes. Ici j'ai tapécet onglet appuyé:

autocomplete commands

Fish suggère également des paramètres et comment les utiliser. Taperls -et appuyez surtab. Une liste des paramètres que vous pouvez utiliser et leur signification est présentée ci-dessous:

autocomplete

Cette aide en ligne est générée à partir depages de manuel, l'aide du shell utile (essayez d'exécuterman lspour l'aide complète).

Définir Fish comme coquille par défaut

Si vous aimez Fish une fois que vous l'avez essayé et que vous voulez en faire votre shell par défaut, ouvrez le fichier/etc/shells. j'utilisepicopour faire ces petites modifications de fichiers, avecpico /etc/shells, mais vous pouvez utiliser n'importe quel éditeur de votre choix, même VS Code aveccode /etc/shells.

Il devrait contenir quelque chose de similaire à:

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh

Ajoutez cette ligne à la fin pour ajouter la coquille de poisson:

/usr/local/bin/fish

next, run

chsh -s /usr/local/bin/fish

enter your password, and the shell will change for your user.

change shell

Plugins

You can install Fish plugins.

Fisher is a popular Fish package manager.

Install it using

curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

and it’s available with the fisher command.

Now a package can be installed using fisher add <github-repository-path> and removed using fisher rm <github-repository-path>.

List all plugins installed using fisher ls.

Run fisher to update all the packages you installed.

Popular plugins are

Here is a list of packages you can install.

POSIX compliance

Various shells comply with the POSIX shell command standard.

POSIX means

  • Portable
  • Operating
  • System
  • Interface
  • X (for Unix)

and it’s a standard meant to unify the various Unix environment that were built over time. There is a shell command standard subset, which is meant as a way to unify how Unix shells work.

Unix is a specification/standard for a family of operating systems. Linux and macOS are based on Unix (Windows is not).

bash, ksh and others are POSIX compliant. Being POSIX compliant makes scripts written with POSIX compatibility work across POSIX compliant shells.

Fish (like sh or csh for example) is not compliant, so it’s not a POSIX shell, and this means that writing commands and scripts for Fish is different. Scripts written for Fish won’t work outside of Fish. Just like csh scripts only work on csh (and derivatives)

Why is it different? Various reasons, but I imagine having to support POSIX means the shell must adhere to a common language that might interfere with the shell philosophy and way of working. Not everyone want to have that baggage of tech to support forever.

This will very rarely be a problem with executing commands, but you need to keep it in mind when it comes to scripting and programming.

Download my free Linux Commands Handbook


More cli tutorials: