logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 [09/07/2014 13:53]
Hypathie [Métacaractères et méta-caractères !]
doc:programmation:shells:bash-les-differents-caracteres-speciaux [07/08/2014 10:21]
Hypathie [Bash : Vision d'ensemble]
Ligne 21: Ligne 21:
   * [[atelier:​chantier:​page-man-bash-v-les-tableaux|Les tableaux]]   * [[atelier:​chantier:​page-man-bash-v-les-tableaux|Les tableaux]]
   * [[atelier:​chantier:​man-bash-vi-les-caracteres-de-transformation-de-parametres|Caractères de transformation de paramètres]]   * [[atelier:​chantier:​man-bash-vi-les-caracteres-de-transformation-de-parametres|Caractères de transformation de paramètres]]
-  * [[atelier:​chantier:​bash-vii-globs-etendus-regex|Globs étendus ​et regex]]+  * [[atelier:​chantier:​bash-vii-globs-etendus-regex|Bash : Variables, globs étendus, ERb, ERe]]
  
 **Dans ce tuto** : **Dans ce tuto** :
   * définitions de //shell bash// et liens internes spécifiques au sujets évoqués ;   * définitions de //shell bash// et liens internes spécifiques au sujets évoqués ;
-  * explication sur l’ambiguïté du terme méta-caractère.+  * explication sur l’ambiguïté du terme métacaractère.
   * définitions de termes associés au shell et liens internes spécifiques au sujets évoqués   * définitions de termes associés au shell et liens internes spécifiques au sujets évoqués
  
Ligne 90: Ligne 90:
  
 Une commande interne est une commande dont le code est implémenté au sein même du shell. ​ Une commande interne est une commande dont le code est implémenté au sein même du shell. ​
-Les commandes sont intégrées,​ soit pour des raisons de performances (l'​appel d'une telle commande ne crée pas de processus fils du shell courant); soit parce qu'une commande intégrée se sert des variables internes du shell.+Les commandes sont intégrées,​ soit pour des raisons de performances (l'​appel d'une telle commande ne crée pas de processus fils(([[doc:​systeme:​processus|processus]])) ​du shell courant); soit parce qu'une commande intégrée se sert des variables internes du shell.
  
 Cela signifie que lorsqu'​on change de shell courant (par exemple bash, dash, zsh ou C-shell((Voir : http://​fr.wikipedia.org/​wiki/​Csh)),​ on ne dispose plus des mêmes commandes internes. Cela signifie que lorsqu'​on change de shell courant (par exemple bash, dash, zsh ou C-shell((Voir : http://​fr.wikipedia.org/​wiki/​Csh)),​ on ne dispose plus des mêmes commandes internes.
Ligne 136: Ligne 136:
 <code user>​type sleep</​code>​ <code user>​type sleep</​code>​
 <​code>​sleep est /​bin/​sleep</​code>​ <​code>​sleep est /​bin/​sleep</​code>​
-//''/​bin/​commande''​ signifie donc que c'est une commande externe.//+>''/​bin/​commande''​ signifie donc que c'est une commande externe.
  
 <code user>​type ls</​code>​ <code user>​type ls</​code>​
Ligne 146: Ligne 146:
 <code user>​which ls</​code>​ <code user>​which ls</​code>​
 <​code>/​bin/​ls</​code>​ <​code>/​bin/​ls</​code>​
-//''​ls''​ est donc l'​alias de la commande externe ''/​bin/​ls''​//+>''​ls''​ est donc l'​alias de la commande externe ''/​bin/​ls''​
 </​note>​ </​note>​
  
Ligne 290: Ligne 290:
 Attention, cette commande est dangereuse !\\  Attention, cette commande est dangereuse !\\ 
 Elle efface tout le contenu du dossier.\\ ​ Elle efface tout le contenu du dossier.\\ ​
-À ne pas lancer dans votre dossier personnel sous peine perdre ​de manière irrémédiable de tous vos fichiers ​ !+À ne pas lancer dans votre dossier personnel sous peine perdre ​irrémédiablement ​tous vos fichiers ​ !
 </​note>​ </​note>​
 <code user>​ls</​code>​ <code user>​ls</​code>​
Ligne 320: Ligne 320:
   * **À voir** : [[http://​abs.traduc.org/​abs-5.0-fr/​ch11.html|Guide avancé d'​écriture des scripts Bash: 11. Substitution de commandes]]   * **À voir** : [[http://​abs.traduc.org/​abs-5.0-fr/​ch11.html|Guide avancé d'​écriture des scripts Bash: 11. Substitution de commandes]]
  
-===== Métacaractères et méta-caractères ​!=====+===== Métacaractères et "​métacaractères" ​!=====
  
 ==== Définition usuelle de métacaractère et détail ==== ==== Définition usuelle de métacaractère et détail ====
   * Un métacaractère (en anglais, wild card ou joker) est un caractère qui représente un ou plusieurs autres caractères qui, eux, sont interprétés littéralement.   * Un métacaractère (en anglais, wild card ou joker) est un caractère qui représente un ou plusieurs autres caractères qui, eux, sont interprétés littéralement.
  
-Certains caractères spéciaux sont appelés //méta-caractères// ; soit parce qu'ils servent à effectuer des recherches sur les mots ; soient parce qu'ils servent dans les expressions rationnelles;​ soit encore parce qu'ils représentent symboliquement quelque chose, un fichier, la valeur d'une variable ; finalement parce que ces caractères représentes symboliquement quelque chose;+Certains caractères spéciaux sont appelés //métacaractères// ; soit parce qu'ils servent à effectuer des recherches sur les mots ; soient parce qu'ils servent dans les expressions rationnelles;​ soit encore parce qu'ils représentent symboliquement quelque chose, un fichier, la valeur d'une variable ; finalement parce que ces caractères représentes symboliquement quelque chose;
  
-  * D'une part, le wiki [[:​doc:​programmation:​shell:​les-metacaracteres|"​les métacaractères,​ ou globs, ou encore patterns"​]] présente les méta-caractères ​''?'',​ '';'',​ ''​*''​ et les crochets ''​[ ]''​ qui sont communs aux différents shell.+  * D'une part, le wiki [[:​doc:​programmation:​shell:​les-metacaracteres|"​les métacaractères,​ ou globs, ou encore patterns"​]] présente les métacaractères ​''?'',​ '';'',​ ''​*''​ et les crochets ''​[ ]''​ qui sont communs aux différents shell.
  
-Voici un tableau qui regroupe les méta-caractères ​+Voici un tableau qui regroupe les métacaractères ​
  
 ^                   ​Communs à différents shell                                         ​^^^ ​           ​ ^                   ​Communs à différents shell                                         ​^^^ ​           ​
Ligne 337: Ligne 337:
  
   * D'​autre part, man glob et man bash dénomme //​caractères génériques//​(( Et un enchaînement de motifs génériques est nommée par extension, une expression générique.   * D'​autre part, man glob et man bash dénomme //​caractères génériques//​(( Et un enchaînement de motifs génériques est nommée par extension, une expression générique.
-En effet, une chaîne de caractères ordinaires est un motif. Et un motif contenant un ou plusieurs "​caractères génériques"​ est appelé un "motif générique"​.)),​ ce que nous appellons ​des métacaractères .\\ Attention à la confusion ! Voir plus bas [[atelier:​chantier:​bash-les-differents-caracteres-speciaux#​definition-particuliere|définition particulière de man bash]].+En effet, une chaîne de caractères ordinaires est un motif. Et un motif contenant un ou plusieurs "​caractères génériques"​ est appelé un "motif générique"​.)),​ ce que nous appelons ​des métacaractères .\\ Attention à la confusion ! Voir plus bas [[atelier:​chantier:​bash-les-differents-caracteres-speciaux#​definition-particuliere|définition particulière de man bash]].
  
   * Quant au globbing, cela concerne l'​opération qui permet d'​invoquer,​ par un motif générique,​ une liste de noms de fichiers, pouvant correspondre à ce motifs.   * Quant au globbing, cela concerne l'​opération qui permet d'​invoquer,​ par un motif générique,​ une liste de noms de fichiers, pouvant correspondre à ce motifs.
Ligne 344: Ligne 344:
 Voir : man bash ligne 1914,sq. et man glob Voir : man bash ligne 1914,sq. et man glob
  
-En définitive,​ dans la suite j'​emploierai le terme "métacaractère" ​comme synonyme de globs simples et bracket.+En définitive,​ dans la suite j'​emploierai le terme métacaractère comme synonyme de globs simples et bracket.
  
 </​note>​ </​note>​
Ligne 351: Ligne 351:
       * Voir : [[doc:​systeme:​grep|Regexp et grep]]\\ ​       * Voir : [[doc:​systeme:​grep|Regexp et grep]]\\ ​
       * Voir : [[doc:​systeme:​sed|Regex et sed ]]\\        * Voir : [[doc:​systeme:​sed|Regex et sed ]]\\ 
-      * Pour un rappel des principaux caractères des expressions rationnelles voir : [[:atelier:​chantier:​bash-vii-globs-etendus-regex#​index|l'​index ​des regex bash]].+      * Pour un rappel des principaux caractères des expressions rationnelles voir : [[atelier:​chantier:​bash-vii-globs-etendus-regex#​tableau-des-caracteres-utilises-dans-les-expressions-regulieres-etendues|caractères ​des regexp étendues]].
  
   * Dans un contexte proche, c'​est-à-dire qui concerne la gestion des chaînes de caractères,​ le shell possède des mots réservés et des syntaxes qui permettent de modifier la valeur des variables ou paramètres créés(ées) par l'​utilisateur.   * Dans un contexte proche, c'​est-à-dire qui concerne la gestion des chaînes de caractères,​ le shell possède des mots réservés et des syntaxes qui permettent de modifier la valeur des variables ou paramètres créés(ées) par l'​utilisateur.
Ligne 431: Ligne 431:
 mkdir Hide-files && cd Hide-files && touch ./.fichier1 ./.fichier2 ./fichier1 ./fichier2 mkdir Hide-files && cd Hide-files && touch ./.fichier1 ./.fichier2 ./fichier1 ./fichier2
 </​code>​ </​code>​
-  ​+
   * Pour visualiser ce qu'on fait :   * Pour visualiser ce qu'on fait :
  
Ligne 507: Ligne 507:
 </​note>​ </​note>​
  
-==== Méta-caractères, ou opérateurs de contrôle et de redirection ====+==== "​Métacaractères"​, ou opérateurs de contrôle et de redirection ====
  
 ===Définition particulière === ===Définition particulière ===
  
 <code text man bash> <code text man bash>
-méta-caractère+métacaractère
     Un caractère qui, non protégé, sépare les mots. Un de ceux-ci :     Un caractère qui, non protégé, sépare les mots. Un de ceux-ci :
  
Ligne 522: Ligne 522:
 >On parle également de //token// (jeton). >On parle également de //token// (jeton).
  
-  * Attention dans ce sens, le terme de méta-caractère ​ne renvoie pas aux caractères génériques (man bash) ou au globbing et pattern mais fait référence à l'​analyse et au traitement par le shell de la ligne de commande. ​+  * Attention dans ce sens, le terme de "​métacaractère" ​ne renvoie pas aux caractères génériques (man bash) ou au globbing et pattern mais fait référence à l'​analyse et au traitement par le shell de la ligne de commande. ​
   * L'​ordre d'​analyse est le suivant :   * L'​ordre d'​analyse est le suivant :
   - découpage lexical en mots ;   - découpage lexical en mots ;
Ligne 535: Ligne 535:
  
 <note tip> En bref !!! <note tip> En bref !!!
-  * Les caractères servant __au globbing et au patterns__, sont désignés dans le man bash de caractères génériques.\\ Mais à l'​usage on parle de __métacaractères__.+  * Les caractères servant __au globbing et au patterns__, sont désignés dans le man bash de //caractères génériques//.\\ Mais à l'​usage on parle de __métacaractères__.
  
-  * Les caractères qui permettent le mécanisme de lecture d'une ligne de commande par le shell sont appelés dans le man bash méta-caractères.\\ Mais à l'​usage on parle __de mots réservés__.+  * Les caractères qui permettent le mécanisme de lecture d'une ligne de commande par le shell sont appelés dans le man bash //​métacaractères//​.\\ Mais à l'​usage on parle __de mots réservés__.
  
   * On distingue deux sortes de mots réservés : les opérateurs de contrôle et les opérateurs de redirection.   * On distingue deux sortes de mots réservés : les opérateurs de contrôle et les opérateurs de redirection.
Ligne 543: Ligne 543:
  
 ==== Les opérateurs de contrôle ==== ==== Les opérateurs de contrôle ====
 +
 ===Parmi tous les opérateurs de contrôle ci-dessous :=== ===Parmi tous les opérateurs de contrôle ci-dessous :===
-<​code>​+<​code ​text man bash>
     ||    && ​   ;    &    ;;    ( )    |    <​retour-chariot> ​     ||    && ​   ;    &    ;;    ( )    |    <​retour-chariot> ​
 </​code>​ </​code>​
 +
 +
 +===Il faut premièrement distinguer ceux qui servent à enchaîner les commandes :===
 +
 +'' ​ ||    && ​   ;    <​retour-chariot>​ ''​
 +
 Voir :  Voir : 
   * [[doc:​programmation:​shell:​shell|Le shell pour tous]]   * [[doc:​programmation:​shell:​shell|Le shell pour tous]]
 +  * [[doc:​programmation:​shell:​shell#​enchainer-plusieurs-commandes]]
   * [[atelier:​chantier:​script-bash-enchainement-de-commandes-et-etat-de-sortie#​enchainements-de-commandes-dans-les-scripts|Enchaînements de commandes dans les scripts]]   * [[atelier:​chantier:​script-bash-enchainement-de-commandes-et-etat-de-sortie#​enchainements-de-commandes-dans-les-scripts|Enchaînements de commandes dans les scripts]]
   * [[atelier:​chantier:​script-bash-etat-de-sorie-et-les-tests?&#​l-enchainement-conditionnel-est-fonde-sur-le-code-de-retour|l'​enchaînement conditionnel]]   * [[atelier:​chantier:​script-bash-etat-de-sorie-et-les-tests?&#​l-enchainement-conditionnel-est-fonde-sur-le-code-de-retour|l'​enchaînement conditionnel]]
  
-===Il faut premièrement distinguer ceux qui servent à enchaîner les commandes :=== +===Remarques ​=== 
-'' ​ ||    && ​   ;    ​<retour-chariot''​ +<note tip
- +Quant aux autres : '' ​ &    ;;    ( )    | ''​
-=== Quelques remarques sur les autres :=== +
-'' ​ &    ;;    ( )    | ''​+
  
   * Le signe ''​|''​ est un "​ou"​ logique.   * Le signe ''​|''​ est un "​ou"​ logique.
Ligne 564: Ligne 570:
  
     * le ''​|''​ dans le contexte d'​utilisation des globs étendus et des expressions rationnelles\\ voir : [[atelier:​chantier:​bash-vii-globs-etendus-regex?&#​les-globs-etendus]]\\ Par exemple : <code user>ls ~/​Test/​!(*jpg|*bmp)</​code>​     * le ''​|''​ dans le contexte d'​utilisation des globs étendus et des expressions rationnelles\\ voir : [[atelier:​chantier:​bash-vii-globs-etendus-regex?&#​les-globs-etendus]]\\ Par exemple : <code user>ls ~/​Test/​!(*jpg|*bmp)</​code>​
-    * Le le ''​|''​ avec les '';;''​ dans contexte de la commande ''​case'' ​  +    * Le ''​|''​ avec les '';;''​ dans contexte de la commande ''​case'' ​  
-<​code ​bash+<​code>​ 
-case $variable-name ​in +case chaîne ​in 
-   pattern1|pattern2|pattern3 +      ​choix1 )  commande ;; 
-         ​^ ​       ​+      choix2 ​choix3 ...) commande ;; 
-#          ou       ou +           
-     ​command1 +      ... 
-     ... +      * )  ​commande ... ;;
-     commandN +
-   *)+
 esac esac
- </​code>​ +</​code>​
   * On retrouve la paire de parenthèses simples ''​( )'':​   * On retrouve la paire de parenthèses simples ''​( )'':​
     * Avec la commande ''​function''​     * Avec la commande ''​function''​
Ligne 594: Ligne 597:
 > Et à pas confondre avec la double paire de parenthèse ''<​nowiki>​(( ))</​nowiki>''​ qui ne figure pas\\ dans la liste et qui sert à faire des calculs\\ (voir : [[atelier:​chantier:​page-man-bash-iv-symboles-dans-les-calculs-mathematiques]]. > Et à pas confondre avec la double paire de parenthèse ''<​nowiki>​(( ))</​nowiki>''​ qui ne figure pas\\ dans la liste et qui sert à faire des calculs\\ (voir : [[atelier:​chantier:​page-man-bash-iv-symboles-dans-les-calculs-mathematiques]].
  
-À voir : [[doc:​programmation:​shell:​shell#​enchainer-plusieurs-commandes]]+</​note>​ 
  
 ==== Les opérateurs de redirection ==== ==== Les opérateurs de redirection ====
Ligne 620: Ligne 624:
  
 <​note>​ <​note>​
-Enfin, ne sont pas désignés de méta-caractères ​:​\\  ​+Enfin, ne sont pas désignés de "​métacaractères",​ ni d'​opérateurs de contrôle ​:​\\  ​
 Tous les caractères spéciaux, c'​est-à-dire les symboles auxquels le shell est sensible.\\ Tous les caractères spéciaux, c'​est-à-dire les symboles auxquels le shell est sensible.\\
 Comme nous le verrons dans cette série de wiki, il s'agit : Comme nous le verrons dans cette série de wiki, il s'agit :
doc/programmation/shells/bash-les-differents-caracteres-speciaux.txt · Dernière modification: 01/04/2023 19:17 par agp91

Pied de page des forums

Propulsé par FluxBB