Qu’est-ce qu’un shell et à quoi sert-il ?

Auteur : Publié le

En bref : Un shell, ou interpréteur de commandes, est un programme qui reçoit les commandes de l’utilisateur et permet de lancer des programmes et d’effectuer des opérations dans le système. Il s’agit le plus souvent d’un interpréteur en mode texte, comme Bash, Zsh ou PowerShell. Le shell n’est pas le terminal : le terminal fournit un espace où saisir les commandes, tandis que le shell les interprète.

À quoi sert un interpréteur de commandes ?

Le shell permet d’utiliser un ordinateur à l’aide de commandes plutôt qu’en cliquant sur des boutons et des icônes. Vous pouvez ainsi parcourir des répertoires, copier des fichiers, lancer des applications, consulter les processus en cours ou administrer un serveur. Les opérations possibles dépendent du système, des programmes installés et des droits du compte.

Lorsque vous saisissez une commande, le shell reconnaît son nom et ses arguments supplémentaires, c’est-à-dire les informations qui précisent comment exécuter la tâche. Il exécute ensuite une fonction intégrée ou lance un programme externe. Par exemple, avec la commande python script.py, le shell lance l’interpréteur Python et lui transmet le nom du fichier à exécuter ; il n’interprète pas lui-même le code Python.

Les shells sont particulièrement utiles pour les tâches répétitives. Plutôt que de renommer manuellement plusieurs dizaines de fichiers, vous pouvez préparer une série de commandes qui applique une même règle à tous ces fichiers. Cet ensemble de commandes enregistré dans un fichier s’appelle un script shell.

Le terme « shell » a aussi un sens plus large : il peut désigner une interface graphique permettant d’utiliser le système. Toutefois, dans la documentation de programmation et l’administration des serveurs, il désigne généralement un interpréteur de commandes en mode texte.

Shell, terminal, console et SSH : quelles différences ?

Ces termes sont parfois employés comme des synonymes, mais ils désignent des éléments distincts :

TermeSignification
ShellProgramme qui interprète les commandes, par exemple Bash ou PowerShell.
TerminalApplication qui fournit une entrée et une sortie textuelles et dans laquelle un shell peut fonctionner, par exemple Windows Terminal.
ConsoleTerme dont le sens dépend du contexte ; il peut désigner un terminal système ou, dans le langage courant, une fenêtre de commandes.
SSHProtocole permettant de se connecter de manière sécurisée à un autre ordinateur, souvent pour utiliser son shell.

Vous pouvez donc ouvrir Windows Terminal, y lancer PowerShell, puis vous connecter par SSH à un serveur Linux. Une fois la connexion établie, les commandes peuvent être traitées par Bash sur le serveur. La fenêtre reste la même, mais l’ordinateur qui exécute les commandes et le shell utilisé changent.

Cette distinction est importante lorsque vous suivez des instructions. Une commande présentée comme étant « à coller dans le terminal » peut nécessiter un shell précis, un système particulier ou un programme supplémentaire. Ouvrir n’importe quelle fenêtre textuelle ne suffit pas à garantir sa compatibilité.

Les shells les plus courants et leurs usages

Bash est largement utilisé sur les systèmes Linux et dans les scripts d’administration. Zsh est le shell interactif par défaut des nouveaux comptes utilisateurs dans les versions récentes de macOS ; on le trouve également sous Linux. Ces deux shells ont de nombreuses commandes et constructions similaires, mais tous les scripts ne fonctionnent pas exactement de la même manière dans les deux.

PowerShell est développé principalement pour l’automatisation et l’administration. Il fonctionne sous Windows, et ses versions récentes sont également disponibles pour Linux et macOS. Contrairement aux pipelines de Bash, qui transmettent habituellement du texte d’une commande à l’autre, les pipelines de PowerShell peuvent transmettre des objets structurés, par exemple des informations sur les processus avec des champs distincts pour le nom et l’identifiant.

cmd.exe, l’interpréteur de commandes classique de Windows, apparaît encore dans d’anciennes instructions et dans les scripts batch. Ce n’est pas un autre nom de PowerShella. Les commandes et la syntaxe de ces deux shells diffèrent, même si tous deux peuvent fonctionner dans Windows Terminal.

Pour commencer, vous n’avez pas besoin d’installer un nouveau shell. Utilisez celui qui est disponible dans votre environnement et vérifiez pour quel système et quel shell les instructions que vous suivez ont été rédigées.

Premières commandes : un exemple simple

Pour commencer sans risque, vérifiez le répertoire courant et affichez son contenu. Le répertoire courant est le point de référence utilisé par le shell pour interpréter les chemins qui ne sont pas indiqués sous leur forme complète.

Dans Bash ou Zsh, saisissez successivement :

pwd
ls
mkdir apprentissage-shell
cd apprentissage-shell
pwd

La commande pwd affiche le répertoire courant, ls affiche son contenu et mkdir crée un nouveau répertoire. La commande cd permet de se placer dans le répertoire indiqué. Cet exemple ne supprime aucun fichier ; il crée le dossier apprentissage-shell, à condition que vous disposiez des droits nécessaires et que ce dossier n’existe pas déjà.

Dans PowerShellu, la séquence équivalente, avec les noms complets des commandes, est la suivante :

Get-Location
Get-ChildItem
New-Item -ItemType Directory -Name apprentissage-shell
Set-Location apprentissage-shell
Get-Location

Si un chemin contient des espaces, entourez-le de guillemets, par exemple cd "Mes documents". Sans guillemets, le shell peut traiter les différentes parties du chemin comme des arguments distincts.

Comment utiliser un shell en toute sécurité ?

Un shell n’est pas dangereux par nature, mais il permet d’effectuer rapidement des opérations sur de nombreux fichiers. Les commandes qui suppriment des données, modifient les droits d’accès ou sont exécutées en tant qu’administrateur demandent une attention particulière. Supprimer un fichier avec une commande ne signifie pas nécessairement le déplacer dans la corbeille.

Avant d’exécuter une commande inconnue, vérifiez ce qu’elle fait et quel est le répertoire courant. Ne copiez pas sans les comprendre des commandes qui téléchargent un script depuis Internet et l’exécutent immédiatement. Lorsque vous êtes connecté à un serveur par SSH, vérifiez également si vous travaillez dans un environnement de test ou de production.

Faites vos premiers exercices dans un répertoire séparé, avec des copies de fichiers sans importance. Vous pouvez ensuite apprendre à consulter l’aide d’une commande : dans Bash, utilisez help cd, et dans PowerShellu, Get-Help Set-Location.

Voir aussi : Qu’est-ce que l’AGI ?

À lire aussi

Découvrez comment PHP-FPM traite les requêtes PHP, son rôle face au serveur web et comment adapter ses processus au trafic.
Découvrez BIND, logiciel libre de serveur DNS : ses rôles, la gestion des domaines et les cas où le déployer vous-même.
Découvrez le registre polonais REGON, son numéro, ses différences avec NIP et KRS et comment vérifier les données d’une entreprise.