GNU/Linux >> Tutoriels Linux >  >> Linux

Quel est votre shell préféré pour le travail d'administrateur système ?

Vous avez peut-être déjà entendu l'expression « quand on n'a qu'un marteau, tous les problèmes ressemblent à des clous ». Cela ne s'applique pas au monde merveilleux des shells POSIX. Pour les non-initiés, un écran noir brillant de texte vert est identique à tout autre écran noir brillant de texte vert, mais de nombreux administrateurs système savent que le shell que vous choisissez peut modifier toutes les facettes de votre interaction avec votre ordinateur.

Il n'est pas rare de le découvrir à la dure, généralement sous pression. Une fois que vous éprouvez l'impuissance d'entrer la syntaxe incorrecte dans un shell inconnu, vous développez rapidement un attachement à celui avec lequel vous êtes à l'aise. Même ainsi, la plupart des shells populaires ont des vertus qui poussent différents administrateurs système à les définir comme interface par défaut. . Si vous passez un peu de temps avec chacun, vous constaterez peut-être que vous développez un nouveau favori, ou du moins que vous pouvez vous installer dans un shell de sauvegarde fiable.

Voici quelques-uns des shells les plus populaires et ce que les utilisateurs apprécient à leur sujet.

Cendre et tiret

Le shell Almquist a été développé comme un clone du célèbre shell Bourne (à ne pas confondre avec le Bourne Again Shell, autrement connu sous le nom de Bash). Il a été gardé intentionnellement léger, probablement pour la même raison que l'édition de ligne et l'historique ont été exclus à l'origine :Kenneth Almquist a estimé que les fonctions UX supplémentaires appartenaient à l'extérieur du shell. Des décennies plus tard, le shell est toujours un petit shell de base préféré. Il a été livré avec les versions initiales d'Android, et c'était un shell par défaut commun pour l'environnement de démarrage minimal des distributions Linux pendant de nombreuses années.

Comme avec de nombreux shells POSIX, l'utilisation d'Ash est théoriquement familière à toute personne habituée à une console. Vous tapez des commandes ; vous obtenez une sortie. Certaines des fonctionnalités supplémentaires sont là, tandis que d'autres manquent. Par exemple, si vous avez l'habitude d'utiliser les raccourcis clavier de style Emacs ou Vim, vous les trouverez sensiblement absents d'Ash. Cependant, vous pouvez les activer (tant qu'ils ont été inclus au moment de la compilation) avec le -E (pour Emacs) ou -V (pour Vim). Historique (en fait le fc commande intégrée dans Ash) n'est pas non plus une donnée, selon la façon dont Ash a été compilé. Il n'y a pas de tableaux et la commande intégrée trap n'accepte aucune option.

Dash est un shell Almquist, et est, en fait, un port de Ash de NetBSD vers Debian Linux, et signifie Debian Almquist Shell .

La meilleure caractéristique de Ash est également sa plus grande limitation. C'est un shell minimal, donc si vous recherchez la simplicité, alors c'est le shell qu'il vous faut.

Bash

Le shell Bourne-Again (Bash) a été créé par le projet GNU pour remplacer le shell propriétaire Bourne (qui lui-même a été créé pour remplacer le shell de Ken Thompson). Aujourd'hui, Bash est plus qu'un simple shell :c'est un langage de programmation légitime, l'un des principaux outils de l'administrateur système ingénieux, et presque une icône culturelle pour les non-programmeurs ayant besoin d'une automatisation rapide et sale. Si vous pouvez passer une journée dans un shell Linux, vous pouvez développer un script Bash pour vous remplacer. C'est simple, direct et étonnamment puissant, avec des fonctionnalités qui incluent des tableaux, une pile de répertoires, des interruptions, l'analyse de sous-chaînes, des raccourcis clavier Emacs ou Vim, et bien plus encore.

Un argument courant contre Bash est sa taille, qui sur mon système est d'environ 1 Mo contre 200 Ko pour Ash. Une autre est sa complexité. Bash est si riche en fonctionnalités que même si un script écrit en POSIX pur s'exécute en Bash, il n'en va pas toujours de même pour un script Bash tentant de s'exécuter dans un shell POSIX pur. Bien que Bash ait un mode POSIX, ses "bashismes" supplémentaires sont généralement trop attrayants pour être ignorés. La bonne nouvelle est que Bash est open source, il peut donc facilement être installé pour exécuter un script plein de Bash-ismes, mais certains utilisateurs s'y opposent néanmoins par principe.

Bash est un shell flexible et puissant et a remplacé d'autres shells par défaut sur de nombreux systèmes. Apprenez Bash et vous ferez l'expérience d'un shell moderne et riche en fonctionnalités qui montre tous les signes d'une convivialité croissante au fur et à mesure de son développement.

[ Télécharger maintenant :Un guide de l'administrateur système sur les scripts Bash. ]

Boîte occupée

BusyBox est un binaire multi-appel qui combine de nombreux utilitaires POSIX courants en un seul exécutable. En d'autres termes, il s'agit du binaire tout-en-un principal de l'interface utilisateur POSIX. Lorsqu'il est installé à partir du code source, il place une busybox exécutable dans la bibliothèque de votre système, et vous devez vous y connecter lors de la création de commandes individuelles pour vous et vos utilisateurs. Par exemple :

$ ln --symbolic /lib64/busybox/busybox gzip
$ gzip --help 
BusyBox v1.28.1 (2020-07-13 11:42:31 NZST) multi-call binary.

Usage: gzip [-cfkdt123456789] [FILE]...

En moins de 1 Mo, vous obtenez environ 400 commandes, dont ls , cd , cp , mv , grep , ps , mot de passe , éteindre , printf , sed , utilitaires de compression, gestion des processus et bien plus encore. La plupart de ces commandes sont minimes par rapport à leurs équivalents GNU, mais selon votre cas d'utilisation, elles sont probablement suffisantes. De même, le shell interactif de Busybox est Ash, il répond donc aux spécifications POSIX et ne fournit rien d'autre.

Csh ou Tcsh

Le shell C (csh ), et sa version ultérieure, tcsh , utilisez une syntaxe de type C (ou C++ ou Java, si vous êtes plus familier avec celles-ci). Par exemple, voici un if boucle dans Bash :

v=1

if [[ $v == 1 ]]
  then
  echo "verbose"
fi

Et voici la même chose en Csh :

set v=1

if ($v == 1) then
  echo "verbose"
endif

La différence est subtile, mais pour les personnes habituées à la syntaxe du C et des langages similaires, il existe suffisamment de petites différences pour améliorer sensiblement leur expérience. Certaines commandes intégrées manquent également. Par exemple, il n'y a pas de type ou hash commandes dans tcsh , et vous ne pouvez pas définir vos propres fonctions.

Tandis que csh souffre un peu de son âge, tcsh est une bonne mise à jour et a la plupart des mêmes fonctionnalités que Bash, bien qu'avec une syntaxe différente de temps en temps.

Poisson

La coquille de poisson s'appelle fièrement "une coquille moderne pour les années 90". Il a tous les avantages des shells robustes comme Bash et Zsh, mais avec des fonctionnalités supplémentaires telles que la coloration syntaxique, un fish_config commande, et bien plus encore. Son objectif est de fournir un contexte supplémentaire à l'utilisateur et un meilleur système de gestion de configuration qu'un simple .bashrc .

Il y a de légères différences de syntaxe ici et là. Par exemple, voici une définition de fonction pour Bash :

function sshrm() { 
  /usr/bin/sed -i "$1d" $HOME/.ssh/known_hosts
}

La même chose dans Fish, cependant :

function sshrm
  /usr/bin/sed -i "$1d" $HOME/.ssh/known_hosts
end

Les fans de Fish adorent ses capacités de thématisation simples et la façon dont il utilise par défaut un répertoire de fichiers de configuration plutôt qu'un .bashrc fichier qui, au mieux, source d'autres fichiers de points.

Corn

Le shell Korn (ksh ) a été développé par David Korn et publié en 1983. Alors que Bash et tcsh ont été livrés comme shells par défaut pour les systèmes POSIX populaires, le shell Korn est resté en grande partie un shell "alternatif". Mais en tant que shells alternatifs, ksh a bien fait pour lui-même, et lorsque Microsoft a présenté Powershell lors de conférences techniques, ils ont cité le shell Korn comme sa principale influence.

Il existe plusieurs versions différentes du shell Korn (mksh, ksh93, ksh93u+, ksh2020 et autres), mais les branches officielles sont maintenues sur le Github d'AT&T.

Aux utilisateurs de Bash, ksh est susceptible de se sentir assez familier. Lire un didacticiel sur les scripts Korn revient presque à lire sur les scripts Bash. Vous pouvez définir vos propres fonctions, créer des alias, écrire des boucles et même programmer des options de complétion par onglets. Les raccourcis clavier Emacs sont activés par défaut, mais vous pouvez passer à vi raccourcis clavier utilisant le -o vi option au lancement, ou en plaçant set -o vi dans votre ~/.environ.ksh fichier de configuration.

Ce qui manque à Kornshell, vous ne le remarquerez probablement pas immédiatement. Par exemple, vous ne pouvez pas activer ou désactiver les commandes intégrées, et il existe une commande intégrée appelée whence qui fait le même travail que le which exécutable. Il n'y a pas de typeset commande, mais Kornshell a des tableaux avec les fonctionnalités de recherche les plus essentielles disponibles. En d'autres termes, bien qu'il existe des différences mineures, ksh est facile à utiliser pour toute personne habituée à Bash, Fish ou Zsh.

Zsh

Le shell Z (zsh ) est un shell POSIX interactif de type Bourne connu pour son abondance de fonctionnalités innovantes. Les utilisateurs de Z Shell citent souvent ses nombreuses commodités et lui attribuent une efficacité accrue et une personnalisation étendue. Lors du premier lancement, Zsh propose plusieurs options de configuration, telles que la taille de votre historique, les raccourcis clavier (Emacs ou Vim) et le nombre de fonctionnalités supplémentaires que vous souhaitez. Par exemple, vous pouvez créer le cd commande implicite en autorisant Zsh à initier un changement de répertoire lorsque vous fournissez un chemin non exécutable sans commande. Il existe plusieurs fonctionnalités supplémentaires, et vous pouvez les activer ou les désactiver en modifiant le .zshrc fichier de configuration.

Il existe quelques différences subtiles de syntaxe entre Bash et Zsh, mais peu de commandes sont souvent scriptées, de sorte que la probabilité que vous deviez adapter les scripts est faible. Par exemple, pour désactiver une commande intégrée dans Bash :

$ enable -n cd

En Zsh, la commande est un peu plus intuitive :

$ disable cd

Pour reconstruire les chemins de commande en cache dans Bash, vous devez effacer celui existant, mais dans Zsh, il y a une option pour cela :

$ hash -f

Il y a aussi de petits avantages pour ceux qui migrent d'autres coquilles. Par exemple, vous pouvez utiliser le whence commande dans Z Shell, qui serait familière aux utilisateurs du shell Korn.

Zsh est un mélange amusant et dynamique d'anciennes et de nouvelles fonctionnalités, et il a une communauté dynamique qui développe des thèmes et des plugins pour cela. Ceux-ci sont faciles à installer et ajoutent encore plus de fonctionnalités à votre coque, faisant de Z Shell un concurrent pour la coque la plus flexible disponible.

Choisissez vos coques

Comme d'habitude avec l'open source, vous n'avez pas à choisir un seul outil parmi un outil donné. Bien que je sois un utilisateur dévoué de Bash à la maison, j'utilise souvent par défaut tcsh par habitude au travail, car de nombreux scripts de l'industrie des effets visuels ont été écrits pour C Shell. À ce jour, j'écris compulsivement des hooks Git dans tcsh pour cette raison.

Vous n'avez pas forcément à justifier votre choix de coque. Utilisez ce qui fonctionne le mieux pour vous et votre équipe. Tant que c'est open source, vous avez fait un excellent choix.

[ Cours en ligne gratuit :Présentation technique de Red Hat Enterprise Linux. ]


Linux
  1. Quelle est votre astuce de terminal Linux préférée ?

  2. Quel est votre gestionnaire de packages Linux préféré ?

  3. Joyeux anniversaire GNOME :Quelle est votre version préférée ?

  4. Quel est votre outil d'enregistrement d'écran préféré pour Linux ?

  5. Quel est votre émulateur de terminal Linux préféré ?

Quelle est votre distribution Linux préférée ?

Administrateurs système Linux :Quel est votre IDE préféré ?

Pourquoi le parent Shell Here-document ne fonctionne pas pour la sous-commande dans Dash mais Bash fonctionne?

12 exemples de boucle Bash For pour votre script de shell Linux

10 meilleurs jeux pour Steam Deck :quel est votre préféré ?

Quelle est la différence entre &> et >&en bash ?