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 | ||
doc:programmation:shells:bash-les-differents-caracteres-speciaux [05/03/2023 23:39] agp91 [Bash : Vision d'ensemble] |
doc:programmation:shells:bash-les-differents-caracteres-speciaux [01/04/2023 19:17] (Version actuelle) agp91 [Consoles et terminaux] |
||
---|---|---|---|
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__ qui est fourni aux __processus fils__ créés par le shell. | + | * 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**, transmis aux __processus fils__ qui sont 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 programmes disposant de son propre **processus**. | + | * 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 terminé (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** : |
- | * De connecter les sorties d'un processus avec l'entrée d'un autre processus. Tant que le premier processus n'envoie rien vers ses sorties standards, l'exécution du second processus est suspendu. | + | * L'**entrée standard** depuis le clavier, la __sortie standard__ ou un fichier. |
- | * De passer un processus en arrière plan, ou de le remettre au premier plan. | + | * 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 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. | ||
- | * De récupéré l'état final d'une commande, nommé **code de retour**. | + | * La **gestion des tâches**, en passant un processus en **arrière plan**, ou de le remettre au **premier plan**. |
- | * De réaliser des lots de commande. | + | * 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 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é pour 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 ===== | ||
Ligne 124: | Ligne 127: | ||
* **La console** qui désigne, les interfaces que nous obtenons par la combinaison des touche ''Ctrl''+''Alt''+''F...'' | * **La console** qui désigne, les interfaces que nous obtenons par la combinaison des touche ''Ctrl''+''Alt''+''F...'' | ||
- | * **Le terminal** pour désigner, dans un environnent graphique, la fenêtre où nous obtenons une interface en mode. | + | * **Le terminal** pour désigner, dans un environnent graphique, la fenêtre où nous obtenons une interface en mode texte. |
<note> | <note> | ||
- | Cela est simple et précis. Dans un premier temps... Mais lorsque nous souhaitons aller plus loin, c'est finalement réducteur et porte à confusion.\\ | + | Cela est simple et précis.\\ |
+ | Mais lorsque nous souhaitons aller plus loin, c'est finalement réducteur et porte à confusion.\\ | ||
\\ | \\ | ||
- | Pour retrouver les définitions, voir : [[atelier:chantier:terminaux-et-consoles-definitions|Terminaux et consoles, définitions]]. | + | Pour retrouver les définitions, voir : [[atelier:chantier:terminaux-et-consoles-explications|Terminaux et consoles, explications]]. |
</note> | </note> | ||
- | Sur un système non graphique, nous disposons uniquement d'interface console. | + | ---- |
- | Sur un système Debian GNU/Linux moderne, 6 consoles sont proposées. | + | __**Sur un système non graphique**__, nous disposons uniquement d'interface en mode texte. |
+ | |||
+ | Sur un système Debian GNU/Linux moderne, 6 consoles sont disponibles. | ||
Elles sont accessibles par l'usage des touches ''Ctrl''+''Alt''+''F1'' à ''F6''. | Elles sont accessibles par l'usage des touches ''Ctrl''+''Alt''+''F1'' à ''F6''. | ||
Leur usage est sanctionné par la saisi au clavier d'**un login** (couple nom de l'utilisateur + mot de passe). | Leur usage est sanctionné par la saisi au clavier d'**un login** (couple nom de l'utilisateur + mot de passe). | ||
- | |||
- | Lors de la saisie du mot de passe, aucun caractère n'est affiché. Cela est normal, ainsi personne ne peut lire le mot de passe durant sa saisie. | ||
- | |||
- | Lorsque que le système est démarré, nous nous trouvons sur la première console. Elle est affichée à l'écran. Notre login est demandé. | ||
<code> | <code> | ||
Ligne 150: | Ligne 152: | ||
</code> | </code> | ||
- | Sur un système graphique, lorsque qu'il est démarré, nous nous trouvons directement sur une 7em console (pour les système Debian GNU/Linux moderne). | + | <note> |
+ | Lors de la saisie du mot de passe, aucun caractère n'est affiché.\\ | ||
+ | -> Ainsi personne ne peut lire le mot de passe durant sa saisie. | ||
+ | </note> | ||
- | Un login graphique nommé **gestionnaire de session graphique** ou **gestionnaire d'affichage** (**X display manager**) est affiché. | + | ---- |
- | Pour continuer, nous devons renseigner notre nom d'utilisateur, puis notre mot de passe. | + | __**Sur un système graphique**__, lorsque qu'il est démarré,\\ |
+ | Nous nous trouvons directement sur une 7em console (pour les système Debian GNU/Linux moderne). | ||
+ | |||
+ | Un login graphique nommé **gestionnaire de session graphique** ou **gestionnaire d'affichage** (**X display manager**) est affiché. | ||
+ | Pour continuer, nous devons renseigner notre nom d'utilisateur, puis notre mot de passe.\\ | ||
Une fois connecté, le bureau est affiché à l'écran. | Une fois connecté, le bureau est affiché à l'écran. | ||
- | Pour disposer d'une interface en mode texte (et accéder à un shell interactif), nous devons exécuter une application nommée un **terminal graphique** ou **émulateur de terminal**, plus communément **terminal**. | + | Pour disposer d'une interface en mode texte (et accéder à un shell interactif), nous devons exécuter une application nommée un **terminal fenêtre** ou **émulateur de terminal pour X**, plus communément **terminal**. |
Le shell est directement disponible, aucun login n'est demandé. Par défaut, nous sommes connectés avec notre nom d'utilisateur. | Le shell est directement disponible, aucun login n'est demandé. Par défaut, nous sommes connectés avec notre nom d'utilisateur. | ||
- | + | <note> | |
- | Nous pouvons, quand nous le souhaitons, changer d’utilisateur avec la commande **su //user//**. Le mot de passe de l'utilisateur (**//user//**) nous est alors demandé. | + | Nous pouvons, quand nous le souhaitons, changer d’utilisateur avec la commande **su**. |
- | + | ||
- | Quand nous naviguons entre les différentes consoles, pour revenir sur l'interface graphique, la combinaison ''Ctrl''+''Alt''+''F7'' doit être utilisée. | + | |
- | + | ||
- | <note>Sur le wiki de Debian, nous pouvons lire :\\ | + | |
- | \\ | + | |
- | [[https://wiki.debian.org/Console]] | + | |
- | <file>"Console" is also commonly used to designate terminal emulators (which emulate behavior of the console), or generally any kind of command line interface.</file> | + | |
- | Traduction : | + | |
- | <file>"Console" est également couramment utilisé pour désigner les émulateurs de terminaux (qui émulent le comportement de la console), ou généralement tout type d'interface de ligne de commande.</file> | + | |
- | \\ | + | |
- | Ainsi un shell exécuté dans une console ou un terminal graphique, peut être nommé console. | + | |
</note> | </note> | ||
+ | <note> | ||
+ | Quand nous naviguons entre les différentes consoles, pour revenir sur l'interface graphique,\\ | ||
+ | La combinaison ''Ctrl''+''Alt''+''F7'' (ou la commande **chvt 7**) doit être utilisée. | ||
+ | </note> | ||
+ | |||
+ | ---- | ||
__**Voir aussi** :__ | __**Voir aussi** :__ |