Table des matières:
- Qu'est-ce qu'une coquille?
- Histoire et tour d'horizon des obus
- Scripting
- Un coup d'œil sous le capot de la ligne de commande Unix / Linux
La ligne de commande sur les systèmes Unix et Linux est déjà très puissante, mais les shells sont un outil encore plus puissant qu'il n'y paraît. Vous pouvez les personnaliser et les changer selon le contenu de votre cœur, tant que vous savez comment.
Qu'est-ce qu'une coquille?
Presque tous les manuels Unix et Linux ont le schéma standard d'un shell enveloppant le système d'exploitation, ressemblant à une sorte de barre chocolatée. Le shell n'est vraiment qu'une interface entre le système d'exploitation, y compris le noyau, le système de fichiers et les différents appels système et l'utilisateur. Pendant de nombreuses années, c'était la seule interface utilisateur interactive avant que les interfaces utilisateur graphiques ne deviennent courantes dans les années 80. Les interfaces utilisateur graphiques pourraient également être considérées comme un type de shell, car elles remplissent plusieurs des mêmes fonctions: lancement de programmes, configuration du système et gestion des fichiers.
Ces humbles interfaces textuelles ont une puissance surprenante. D'une part, ce sont des langages de programmation à part entière. Avant l'apparition de langages de script encore plus puissants comme Python, les scripts shell étaient idéaux pour écrire des programmes qui n'avaient pas nécessairement besoin de la puissance de C.Ils sont toujours utiles pour automatiser les tâches système et pour le prototypage rapide.
Ils ont également un certain nombre de fonctionnalités qui facilitent le travail et la recherche de fichiers. L'un des plus largement utilisés est le «joker» ou le «globbing». Presque tous les utilisateurs Unix et Linux connaissent le caractère générique "*" pour faire correspondre n'importe quel caractère. C'est en fait le travail du shell. Différents obus ont des options encore plus puissantes.
L'une des caractéristiques distinctives d'Unix est la possibilité de rediriger l'entrée et la sortie du programme. Le shell implémente cette fonctionnalité.
Le shell n'est qu'un autre programme, il est donc possible pour tout programmeur ayant les bonnes compétences d'en créer un. Plusieurs obus importants sont apparus au fil des ans.
Histoire et tour d'horizon des obus
Bien qu'il y ait eu plusieurs obus Unix dans les premiers jours du système d'exploitation, le premier à obtenir une reconnaissance majeure en dehors des Bell Labs était le Bourne Shell, du nom de Stephen R. Bourne. La principale innovation du shell était qu'il supportait les fonctionnalités de programmation structurée, permettant pour la première fois d'utiliser le shell comme un véritable langage de programmation. Il est tellement indispensable que toutes les versions modernes d'Unix et de Linux l'utilisent encore, bien qu'il s'agisse généralement d'un des plus récents shells émulant le shell Bourne.
Le prochain gros shell était le C Shell, généralement abrégé en «csh». Cette coque a été développée à UC Berkeley, devenant un composant majeur de la saveur BSD d'Unix. Comme son nom l'indique, sa syntaxe est conçue pour ressembler au langage de programmation C, mais elle a vraiment été conçue pour une utilisation interactive.
Il comprenait un mécanisme d'historique qui permettait aux utilisateurs de revenir en arrière et de répéter toutes les commandes qu'ils avaient émises plus tôt sans avoir à retaper une ligne entière et d'améliorer le contrôle des travaux, ce qui facilitait l'exécution de plusieurs tâches. (Rappelez-vous, c'était une époque où la plupart des gens utilisaient encore des terminaux textuels.)
Le prochain gros obus était le Korn Shell, également issu des Bell Labs. Le coquillage a été nommé d'après David Korn, pas le groupe, soit dit en passant. La principale innovation du shell Korn est l'introduction de l'édition en ligne de commande, étendant encore plus la fonctionnalité d'historique. Les utilisateurs peuvent revenir en arrière et modifier les commandes qu'ils ont tapées à l'aide de commandes similaires aux éditeurs vi ou Emacs.
Parmi les principaux obus, le Bourne Again Shell, ou bash, est le plus populaire depuis son introduction à la fin des années 80. Ce shell, développé dans le cadre du projet GNU, intègre les innovations des shells C et Korn tout en conservant la compatibilité avec le shell Bourne, d'où le nom. C'est le shell "standard" de la plupart des distributions Linux.
Le Z Shell (zsh), sorti pour la première fois en 1990, est le rêve d'un utilisateur en ligne de commande. Non seulement il possède la plupart des autres fonctionnalités majeures des autres coques, mais il est incroyablement personnalisable avec de nombreuses fonctionnalités puissantes. L'un des plus puissants est la globalisation récursive, qui permet aux utilisateurs de faire correspondre les noms de fichiers dans les sous-répertoires lors de l'émission de commandes plutôt que de fichiers dans le répertoire de travail actuel. Les utilisateurs vraiment avancés peuvent également personnaliser les options de complétion, en faisant correspondre les fichiers sans avoir à les taper complètement. Et pour les dactylographes aux gros doigts, cela peut aussi corriger votre orthographe. Ce shell est tellement avancé que sa page de manuel a été divisée en plusieurs sections très longues.
Scripting
Comme mentionné précédemment, les shells ne sont pas seulement des interfaces de ligne de commande, mais de puissants langages de programmation. La beauté des scripts shell est que vous pouvez utiliser le même langage dans une utilisation interactive régulière ainsi que dans des scripts, ce qui rend la courbe d'apprentissage beaucoup plus plate. Les shells modernes incluent toutes les fonctionnalités habituelles du langage de programmation, y compris le contrôle de flux, les fonctions et les variables. Certains d'entre eux ont même des structures de données avancées comme des tableaux associatifs.
Malgré leur puissance, la programmation en shell a quelques écueils. Le plus gros problème est qu'il est trop facile d'écrire des scripts qui dépendent d'un programme qui peut ne pas être sur un autre système, ou qui dépend d'une saveur particulière d'Unix ou de Linux. C'est pourquoi les scripts shell sont les mieux adaptés aux programmes que vous savez ne seront exécutés que sur un seul système. Si vous essayez de construire quelque chose de portable et que vous ne voulez pas écrire un programme C, votre meilleur pari est d'écrire dans un autre langage de script comme Perl ou Python.
Un coup d'œil sous le capot de la ligne de commande Unix / Linux
Il y a plus de puissance sous la surface de votre ligne de commande Unix / Linux. Cet article pourrait vous inspirer à jeter un œil sous le capot de votre coque préférée pour voir ce que vous pouvez vraiment faire. Si vous souhaitez vous lancer dans les scripts shell, vous pouvez consulter les livres Unix Power Tools et Learning the Bash Shell. Le document original de Stephen R. Bourne sur son shell sert également de bonne introduction au monde des scripts shell, même s'il est ancien.
