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 Prochaine révision Les deux révisions suivantes | ||
doc:programmation:shells:bash-les-differents-caracteres-speciaux [05/03/2023 21:24] agp91 [Introduction] |
doc:programmation:shells:bash-les-differents-caracteres-speciaux [06/03/2023 07:47] agp91 [Le shell] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Bash : Vision d'ensemble ====== | ====== Bash : Vision d'ensemble ====== | ||
- | * Objet : Vue d'ensemble du shell Bash et présentation des différentes fonctionnalités. | + | * Objet : Début de la série de wiki visant à maîtriser bash par les caractère. |
* Niveau requis : {{tag>débutant avisé}} | * Niveau requis : {{tag>débutant avisé}} | ||
- | * Commentaires : FIXME | + | * Commentaires : Bash, ligne de commande et scripts |
- | * Suivi : | + | * Suivi : {{tag>en-chantier}} |
* Création par [[user>Hypathie]] 20/03/2014 | * Création par [[user>Hypathie]] 20/03/2014 | ||
* Testé par [[user>Hypathie]] en Avril 2014 | * Testé par [[user>Hypathie]] en Avril 2014 | ||
Ligne 11: | Ligne 11: | ||
**Nota :** Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | **Nota :** Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
+ | <note important> | ||
+ | Page en court de réécriture | ||
+ | </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 62: | 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èmes de fichiers**. ((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é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, 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, 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é 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** (tué) 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 les **entrés/sorties standards** vers la console ou des fichiers. | ||
- | * 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. | + | * 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 passer un processus en arrière plan, ou de le remettre au premier plan. | + | |
* 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ée **code de retour**. |
+ | * De regrouper des commandes, nommé **lot de commande** ou **suite de commandes**. | ||
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é, certaines fonctionnalités. | ||
Ligne 83: | Ligne 97: | ||
* 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ée 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, pouvant être rappelé 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ème 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 une shell libre pour les UNIX libre.\\ |
__**Voir aussi :**__ | __**Voir aussi :**__ | ||
Ligne 115: | Ligne 129: | ||
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. Dans un premier temps... 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-definitions|Terminaux et consoles, définitions]]. |
</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 console. |
- | 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 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). | ||
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. | 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é. | 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é. | ||
Ligne 130: | Ligne 150: | ||
</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).\\ | + | 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.\\ | + | Un login graphique nommé **gestionnaire de session graphique** ou **gestionnaire d'affichage** (**X display manager**) est affiché. |
- | 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 continuer, nous devons renseigner notre nom d'utilisateur, puis notre mot de passe. |
- | 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é.\\ | + | 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. | Quand nous naviguons entre les différentes consoles, pour revenir sur l'interface graphique, la combinaison ''Ctrl''+''Alt''+''F7'' doit être utilisée. | ||
Ligne 146: | Ligne 173: | ||
<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> | <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. | + | Ainsi un shell exécuté dans une console ou un terminal graphique, peut être nommé console. |
</note> | </note> | ||
Ligne 155: | Ligne 182: | ||
===== Shell BASH ===== | ===== Shell BASH ===== | ||
- | |||
- | Le //shell// (« coquille » en anglais) est également appelé //interpréteur de commandes//. | ||
- | |||
- | >C'est une couche logicielle qui fournit une l'interface utilisateur à système | ||
- | >d'exploitation. | ||
- | >Il correspond à la couche la plus externe de ce dernier. | ||
- | >Il se présente sous la forme d'une interface en ligne de commande accessible | ||
- | >depuis la console ou un terminal. | ||
- | >L'utilisateur lance des commandes sous forme d'une entrée texte exécutée ensuite par le shell. | ||
- | |||
- | <note tip>Le shell bash est l'un des shell utilisé sous gnu/linux. | ||
- | Pour un historique et la liste des shell les plus utilisés, voir : | ||
- | * http://fr.wikipedia.org/wiki/Shell_Unix#Historique_des_shell_Unix | ||
- | * [[doc:programmation:shell:shell#introduction|le shell pour tous:introduction]] | ||
- | |||
- | Quand on installe Debian Stable, le shell utilisateur par défaut est le shell Bash((alors que l'interpréteur de commande par défaut pour les applications est dash)). | ||
- | </note> | ||
- | |||
==== Connaître votre shell utilisateur ==== | ==== Connaître votre shell utilisateur ==== |