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 21:47] agp91 [Shell BASH] |
doc:programmation:shells:bash-les-differents-caracteres-speciaux [01/04/2023 19:17] (Version actuelle) agp91 [Consoles et terminaux] |
||
---|---|---|---|
Ligne 14: | Ligne 14: | ||
Page en court de réécriture | Page en court de réécriture | ||
</note> | </note> | ||
+ | |||
+ | * **Vision d'ensemble** ;-) | ||
+ | * [[doc:programmation:shells:la-page-man-bash-les-caracteres-speciaux|Détail et caractères]] | ||
+ | * [[atelier:chantier:bash:les-operateurs-sur-parametres|Les opérateurs de test sur paramètres]] | ||
+ | * [[doc:programmation:shells:la-page-man-bash-ii-les-operateurs-lexicographiques|Les opérateurs de test sur chaînes]] | ||
+ | * [[atelier:chantier:bash:les-operateurs-de-test-sur-fichiers|Les opérateurs de test sur fichiers]] | ||
+ | * [[doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs de comparaison numérique]] | ||
+ | * [[doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques|Les symboles dans les calculs]] | ||
+ | * [[doc:programmation:shells:page-man-bash-v-les-tableaux|Bash : les tableaux]] | ||
+ | * [[doc:programmation:shells:man-bash-vi-les-caracteres-de-transformation-de-parametres|Les caractères de transformation de parametres]] | ||
+ | * [[doc:programmation:shells:bash-vii-globs-etendus-regex|Bash : Variables, globs étendus, ERb, ERe]] | ||
===== Introduction ===== | ===== Introduction ===== | ||
Ligne 50: | 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 65: | 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 86: | 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 104: | 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 113: | 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 : [[|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.\\ | + | ---- |
- | 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).\\ | + | __**Sur un système non graphique**__, nous disposons uniquement d'interface en mode texte. |
- | 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é. | + | Sur un système Debian GNU/Linux moderne, 6 consoles sont disponibles. |
+ | |||
+ | 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). | ||
<code> | <code> | ||
Ligne 133: | 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> |
- | Un login graphique nommé **gestionnaire de session graphique** ou **gestionnaire d'affichage** (**X display manager**) est affiché.\\ | + | 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> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | __**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.\\ | 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**.\\ | + | |
- | Le shell est directement disponible, aucun login n'est demandé. Par défaut, nous sommes connectés avec notre nom d'utilisateur.\\ | + | |
- | 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é.\\ | + | |
- | 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 :\\ | + | 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**. |
- | \\ | + | |
- | [[https://wiki.debian.org/Console]] | + | Le shell est directement disponible, aucun login n'est demandé. Par défaut, nous sommes connectés avec notre nom d'utilisateur. |
- | <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> | + | <note> |
- | Traduction : | + | Nous pouvons, quand nous le souhaitons, changer d’utilisateur avec la commande **su**. |
- | <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, 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** :__ |