Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Dernière révision Les deux révisions suivantes | ||
doc:programmation:shells:bash-les-differents-caracteres-speciaux [06/03/2023 07:47] agp91 [Le shell] |
doc:programmation:shells:bash-les-differents-caracteres-speciaux [06/03/2023 11:10] agp91 [Le shell] |
||
---|---|---|---|
Ligne 61: | Ligne 61: | ||
Un **shell**, nommé aussi **interpréteur de commande**, est un logiciel en espace utilisateur qui permet d'ordonner des actions au système d'exploitation.\\ | Un **shell**, nommé aussi **interpréteur de commande**, est un logiciel en espace utilisateur qui permet d'ordonner des actions au système d'exploitation.\\ | ||
- | De **manière interactive**, le shell permet à l'utilisateur de saisir, une ligne de commande au clavier, qui après interprétation, est exécutée.\\ | + | De manière **interactif**, le shell permet à l'utilisateur de saisir, une ligne de commande au clavier, qui après interprétation, est exécutée.\\ |
Lorsque le shell exécute une commande, sans précision, ni action supplémentaire, le shell attend la fin de l'exécution de la commande avant de redonner la main à l'utilisateur. | Lorsque le shell exécute une commande, sans précision, ni action supplémentaire, le shell attend la fin de l'exécution de la commande avant de redonner la main à l'utilisateur. | ||
Un shell est capable d'exécuter par lot, un ensemble de commande. La main est alors rendu à l’utilisateur, après l'exécution de la dernière commande du lot. Un lot de commande peut être écrit dans un fichier que nous nommons **script**. | Un shell est capable d'exécuter par lot, un ensemble de commande. La main est alors rendu à l’utilisateur, après l'exécution de la dernière commande du lot. Un lot de commande peut être écrit dans un fichier que nous nommons **script**. | ||
- | Un shell, peut de **manière non-interactif** exécuter un script. Lorsque toutes les commandes contenues dans le script sont exécutées, le shell se termine, sans donner la main à l'utilisateur. | + | Un shell, peut de manière **non-interactif** exécuter un script. Lorsque toutes les commandes contenues dans le script sont exécutées, le shell se termine, sans donner la main à l'utilisateur. |
<note> | <note> | ||
Ligne 76: | Ligne 76: | ||
Que le shell soit exécuté de manière interactif ou pas, il permet : | Que le shell soit exécuté de manière interactif ou pas, il permet : | ||
- | * D’accéder aux **systèmes de fichiers**. ((Bonne maxime à retenir : **Tout est fichier**.)) | + | * D’accéder aux **système de fichier**. ((Bonne maxime à retenir : **Tout est fichier**.)) |
- | * De fournir un environnement de travail, constitué de données. Mémorisées, sous la forme d'un couple nom/valeur, nommé variable. L'ensemble de ces variables sont nommées **variables de l'interpréteur**. S'ajoutent les __paramètres positionnels__ (ou __variable spéciales__ en csh) et autres __paramètres spéciaux__. | + | * De fournir un environnement de travail, constitué de donnée. Mémorisée, sous la forme d'un couple nom/valeur, nommé variable. L'ensemble de ces variables sont nommées **variables de l'interpréteur**. S'ajoutent les __paramètres positionnels__ (ou __variables spéciales__ en csh) et autres __paramètres spéciaux__. |
* De fournir un environnement, nommé **environnement**, constitué d'une sélection de variable, parmi les __variables de l'interpréteur__. L'**environnement** est un composant de l'__environnent d'exécution__. | * De fournir un environnement, nommé **environnement**, constitué d'une sélection de variable, parmi les __variables de l'interpréteur__. L'**environnement** est un composant de l'__environnent d'exécution__. | ||
- | * De fournir un **environnement d'exécution**, qui rassemble les informations nommées __données d'un processus__, indispensables au fonctionnement des processus. L'**environnement d’exécution** est transmis aux **processus fils**((Un **processus fils** est un processus créer par un autre processus, nommé **processus parent**.)) créés par le shell. | + | * De fournir un **environnement d'exécution**, qui rassemble les informations nommées __données d'un processus__, indispensables au fonctionnement des processus. L'**environnement d’exécution** est transmis aux **processus fils**((Un **processus fils** est un processus créer par un autre processus, alors nommé **processus parent**.)) créés par le shell. |
- | * D'exécuter des programmes dans des environnements, que nous nommons **processus**. Chaque programme dispose de son propre **processus**. Le shell, ne peut créer que des **processus fils**, nommé aussi **sous-shell** (**subshell**). | + | * D'exécuter des programmes dans des environnements, que nous nommons **processus**. Chaque programme dispose de son propre **processus**. Le shell, ne peut créer que des **processus fils**, nommés aussi **sous-shell** (**subshell**). |
- | * De **suspendre**, **reprendre** ou **terminer** (tué) l'exécution d'un processus en lui **envoyant un signal**. | + | * De **suspendre**, **reprendre** ou **terminer** (tuer) l'exécution d'un processus en lui **envoyant un signal**. |
- | * De rediriger les **entrés/sorties standards** vers la console ou des fichiers. | + | * De **rediriger** : |
+ | * L'**entrée standard** depuis le clavier, la __sortie standard__ ou un fichier. | ||
+ | * Les **sorties standards**((Par défaut, les sorties standards sont deux : la **sortie standard** et la **sortie d'erreur standard**.)) vers l'écran ou des fichiers. | ||
* De réaliser une **canalisation** (**pipeline**) entre deux processus. Les __sorties standards__ d'un processus sont connectées avec l'__entrée standard__ d'un autre processus. Quand le premier processus n'envoie rien vers ses __sorties standards__, l'exécution du second processus est suspendu. | * De réaliser une **canalisation** (**pipeline**) entre deux processus. Les __sorties standards__ d'un processus sont connectées avec l'__entrée standard__ d'un autre processus. Quand le premier processus n'envoie rien vers ses __sorties standards__, l'exécution du second processus est suspendu. | ||
* De remplacer le programme exécuté dans un processus par un autre programme. | * De remplacer le programme exécuté dans un processus par un autre programme. | ||
* La **gestion des tâches**, en passant un processus en **arrière plan**, ou de le remettre au **premier plan**. | * La **gestion des tâches**, en passant un processus en **arrière plan**, ou de le remettre au **premier plan**. | ||
- | * De récupérer l'état final d'une commande, nommée **code de retour**. | + | * De récupérer l'état final d'une commande, nommé **code de retour**. |
- | * De regrouper des commandes, nommé **lot de commande** ou **suite de commandes**. | + | * De regrouper des commandes, nommé **lot de commande** ou **suite de commande**. |
- | Certains shells sont dit restreint. Ils restreignent pour des raisons de sécurité, certaines fonctionnalités. | + | Certains shells sont dit restreint. Ils restreignent pour des raisons de sécurité et d'optimisation, certaines fonctionnalités. |
Exécuté de manière interactif, un shell offre des fonctionnalités supplémentaires : | Exécuté de manière interactif, un shell offre des fonctionnalités supplémentaires : | ||
Ligne 97: | Ligne 99: | ||
* De redonner la main à l'utilisateur, après l’exécution au premier plan, d'une commande ou d'un lot de commande. | * De redonner la main à l'utilisateur, après l’exécution au premier plan, d'une commande ou d'un lot de commande. | ||
* Il offre un environnement de travail à l'utilisateur : | * Il offre un environnement de travail à l'utilisateur : | ||
- | * Un **prompt** (ou invite) est affichée lorsque le shell rend la main à l'utilisateur. | + | * Un **prompt** (ou invite) est affiché lorsque le shell rend la main à l'utilisateur. |
* Un outil d'édition qui permet de naviguer dans la ligne en court de saisie. | * Un outil d'édition qui permet de naviguer dans la ligne en court de saisie. | ||
* Certains shells dispose : | * Certains shells dispose : | ||
- | * D'un **historique** des commandes déjà exécutées, pouvant être rappelé sur la ligne en court de saisie. | + | * D'un **historique** des commandes déjà exécutées. Ainsi une commande déjà utilisée peut-être rappelée sur la ligne en court de saisie. |
* D'une **complétion** des commandes, afin de faciliter la saisie des commandes. | * D'une **complétion** des commandes, afin de faciliter la saisie des commandes. | ||
Il existe de nombreux shells qui ont été développés au fil du temps.\\ | Il existe de nombreux shells qui ont été développés au fil du temps.\\ | ||
- | Bash est l'un des shells disponibles le plus rependu, installé par défaut sur de nombreux système dont Debian GNU/Linux.\\ | + | **Bash** est l'un des shells disponibles, le plus rependu, installé par défaut sur de nombreux systèmes, dont Debian GNU/Linux.\\ |
Le Bourn-again shell (bash) est une implémentation libre du Bourn shell (l'un des premiers shell UNIX).\\ | Le Bourn-again shell (bash) est une implémentation libre du Bourn shell (l'un des premiers shell UNIX).\\ | ||
- | Il a été développé par la **free software fondation**, pour le projet **GNU**. afin d'avoir une shell libre pour les UNIX libre.\\ | + | Il a été développé par la **free software fondation**, pour le projet **GNU**. afin d'avoir un shell libre pour les UNIX libre. |
__**Voir aussi :**__ | __**Voir aussi :**__ | ||
+ | * [[https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#What-is-a-shell_003f|(gnu)(en) Bash Reference Manual : What is a shell ?]] | ||
* Historique des shells Unix et GNU/Linux | * Historique des shells Unix et GNU/Linux | ||
* [[https://fr.wikipedia.org/wiki/Shell_Unix#Historique_des_shells_Unix|(fr.wikipedia) Shell Unix : Historique des shell Unix]] | * [[https://fr.wikipedia.org/wiki/Shell_Unix#Historique_des_shells_Unix|(fr.wikipedia) Shell Unix : Historique des shell Unix]] | ||
Ligne 115: | Ligne 118: | ||
* Liste des shells | * Liste des shells | ||
* [[https://fr.wikipedia.org/wiki/Shell_Unix#Shells|(fr.wikipedia) Shell Unix : shell]] | * [[https://fr.wikipedia.org/wiki/Shell_Unix#Shells|(fr.wikipedia) Shell Unix : shell]] | ||
- | * [[https://packages.debian.org/stable/shells|(packages.debian)Paquets logiciels dans « bullseye », Sous-section shells]] | + | * [[https://packages.debian.org/stable/shells/|(packages.debian)Paquets logiciels dans « bullseye », Sous-section shells]] |
===== Consoles et terminaux ===== | ===== Consoles et terminaux ===== |