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.
Prochaine révision | Révision précédente | ||
atelier:chantier:bash:le-caractere-pour-commenter [23/06/2024 17:45] agp91 créée |
atelier:chantier:bash:le-caractere-pour-commenter [26/06/2024 11:31] (Version actuelle) agp91 [Conclusions] |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
* Niveau requis : {{tag>débutant}} | * Niveau requis : {{tag>débutant}} | ||
* Pour aller vers : {{tag>avisé}} | * Pour aller vers : {{tag>avisé}} | ||
- | * Commentaires : Pour l'interpréteur de commande bsh (et zsh aussi). | + | * Commentaires : Pour l'interpréteur de commande bash (et zsh aussi). |
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
* Suivi : {{tag>en-chantier à-tester}} | * Suivi : {{tag>en-chantier à-tester}} | ||
Ligne 32: | Ligne 32: | ||
===== Descriptions ===== | ===== Descriptions ===== | ||
- | //Bash// dispose que d'un seul caractère pour introduire (composer) les commentaires. | + | //Bash// ne dispose que d'un seul caractère pour introduire (composer) les commentaires. |
Il s'agit du caractère **''#''**. | Il s'agit du caractère **''#''**. | ||
S'il n'est pas protégé((La protection de caractère ou de mots réservés indique à //bash// de ne pas interpréter ce qui est protégé comme élément de sa syntaxe.\\ Voir : [[atelier:chantier:bash:les-caracteres-de-protection|Bash : Les caractères de protection]])) et si l'option ''interactive_comments'' n'est pas désactivée (voir section [[#exceptions|Exceptions]] plus bas),\\ | S'il n'est pas protégé((La protection de caractère ou de mots réservés indique à //bash// de ne pas interpréter ce qui est protégé comme élément de sa syntaxe.\\ Voir : [[atelier:chantier:bash:les-caracteres-de-protection|Bash : Les caractères de protection]])) et si l'option ''interactive_comments'' n'est pas désactivée (voir section [[#exceptions|Exceptions]] plus bas),\\ | ||
- | Ce caractère commente tout ce qui le suit, jusqu'à la fin de ligne. | + | Ce caractère commente tout ce qui le suit, jusqu'à la fin de la ligne. |
---- | ---- | ||
Ligne 60: | Ligne 60: | ||
<code># Commentaire d'une ligne entière</code> | <code># Commentaire d'une ligne entière</code> | ||
- | * Et les commentaires de fin ligne (du caractère de commentarisation''#'', jusqu'à la fin ligne). | + | * Et les commentaires de fin de ligne (du caractère de commentarisation''#'', jusqu'à la fin de ligne). |
<code> | <code> | ||
- | echo "Debian Facile" # Commentaire de fin ligne | + | echo "Debian Facile" # Commentaire de fin de ligne |
</code><code> | </code><code> | ||
Debian Facile | Debian Facile | ||
</code> | </code> | ||
- | Pour écrire un commentaire de fin de ligne, un caractère blanc((Les **blancs** sont les espaces et les tabulation.\\ Voir ''man bash'' section DÉFINITIONS.)) est obligatoire devant le caractère ''#'' pour que //bash// le reconnaisse comme caractère de commentarisation. | + | Pour écrire un commentaire de fin de ligne, un caractère blanc((Les **blancs** sont les espaces et les tabulation.\\ Voir ''man bash'' section DÉFINITIONS.)) est obligatoire devant le caractère ''#'' pour que //bash// le reconnaisse comme caractère marquant le début d’un commentaire. |
<code user> | <code user> | ||
- | ls# Ceci n est pas un commentaire de fin ligne | + | ls# Ceci n est pas un commentaire de fin de ligne |
</code><code> | </code><code> | ||
bash: ls# : commande introuvable | bash: ls# : commande introuvable | ||
Ligne 78: | Ligne 78: | ||
---- | ---- | ||
- | Seul le saut de ligne met fin au commentaire débuter par ''#''.\\ | + | Seul le saut de ligne met fin au commentaire débuté par ''#''.\\ |
Ainsi, //bash// ne permet pas d'écrire un commentaire au milieu d'une ligne, dans le genre :\\ | Ainsi, //bash// ne permet pas d'écrire un commentaire au milieu d'une ligne, dans le genre :\\ | ||
''<commande> <COMMENTAIRE> <commande>'' | ''<commande> <COMMENTAIRE> <commande>'' | ||
Ligne 102: | Ligne 102: | ||
</code> | </code> | ||
- | Ou avec l'opérateur de redirection **''<nowiki><<</nowiki>''**((L'opérateur de redirection **''<nowiki><<</nowiki>''**, nommé **document en ligne** (//herdoc// en anglais), permet de rediriger l'entrée de l'interpréteur depuis la source actuelle (la ligne de commande ou depuis le script exécuté).\\Voir ''nan bash'' section REDIRECTION > Document en ligne.)) | + | Ou avec l'opérateur de redirection **''<nowiki><<</nowiki>''**((L'opérateur de redirection **''<nowiki><<</nowiki>''**, nommé **document en ligne** (//herdoc// en anglais), permet de rediriger l'entrée de l'interpréteur depuis la source actuelle (la ligne de commande ou depuis le script exécuté).\\ Voir ''man bash'' section REDIRECTION > Document en ligne.)) |
<code> | <code> | ||
Ligne 125: | Ligne 125: | ||
Pourtant il y en a ! | Pourtant il y en a ! | ||
- | Mise à part que ces pseudos commentaires, | + | Mis à part que ces pseudos commentaires, |
* Ne sont pas reconnus comme commentaire, par la colorisation syntaxique et ne peuvent donc être colorisés comme le sont les commentaires. | * Ne sont pas reconnus comme commentaire, par la colorisation syntaxique et ne peuvent donc être colorisés comme le sont les commentaires. | ||
Ligne 165: | Ligne 165: | ||
Mais,\\ | Mais,\\ | ||
- | LOL C'est du "Cana... Dry" (ça en a l'apparence, ça en a le goût, mais s'en est pas). | + | LOL C'est du "Cana... Dry" (ça en a l'apparence, ça en a le goût, mais n'en est pas). |
Voyons cela en demandant l'affichage de notre fonction mémorisée par ''bash'' : | Voyons cela en demandant l'affichage de notre fonction mémorisée par ''bash'' : | ||
Ligne 215: | Ligne 215: | ||
shopt interactive_comments | shopt interactive_comments | ||
</code><code> | </code><code> | ||
- | restricted_shell off | + | interactive_comments off |
</code> | </code> | ||
Réactivons les commentaires : | Réactivons les commentaires : | ||
Ligne 224: | Ligne 224: | ||
---- | ---- | ||
- | Le caractère **''#''** n'est pas reconnu comme introduisant un commentaire lorsqu'il est protégé, que se soit par | + | Le caractère **''#''** n'est pas reconnu comme introduisant un commentaire lorsqu'il est protégé, que ce soit par |
* Le caractère de protection ''\'' (contre oblique) | * Le caractère de protection ''\'' (contre oblique) | ||
* Ou par l'encadrement entre guillemets (simples ou doubles) | * Ou par l'encadrement entre guillemets (simples ou doubles) | ||
- | Ou lorsque qu'il utilisé dans d'autres usages que //bash// lui attribut : | + | Ou lorsque qu'il est utilisé dans d'autres usages que //bash// lui attribue : |
* Dans le développement des paramètres, variables et tableaux : | * Dans le développement des paramètres, variables et tableaux : | ||
- | * Le paramètre spécial **''$#''** ou **''${#}''** : Retourne le nombre de paramètre positionnel. | + | * Le paramètre spécial **$#** ou **${#}** : Renvoie le nombre de paramètre positionnel. |
- | * **''${p#motif}''** ou **''${p##motif}''** : Supprime le préfixe ''motif'' du contenu du paramètre (ou de la variable) ''p'' | + | * **${p#motif}** ou **${p##motif}** : Supprime le préfixe ''motif'' du contenu du paramètre (ou de la variable) ''p'' |
- | * **''${#var}''** ou **''${#tab[indice]}''** : Retourne le nombre de caractère contenu dans la variable ''var'' ou de l'élément ''indice'' du tableau ''tab''. | + | * **${#var}** ou **${#tab[indice]}** : Renvoie le nombre de caractère contenu dans la variable ''var'' ou de l'élément ''indice'' du tableau ''tab''. |
- | * **''${#tab[*]}''** ou **''${#tab[@]}''** : Retourne le nombre d'éléments du tableau ''tab''. | + | * **${#tab[*]}** ou **${#tab[@]}** : Renvoie le nombre d'éléments du tableau ''tab''. |
- | * **''${p/#motif/chaîne}''** : Substitue ''motif'' par ''chaîne'' si ''motif'' se trouve au début du contenu de ''p''. | + | * **${p/#motif/chaîne}** : Substitue ''motif'' par ''chaîne'' si ''motif'' se trouve au début du contenu de ''p''. |
- | * Dans une évaluation arithmétique avec **''[base#]n''** où ''base'' indique la base numérique utilisée pour exprimer le nombre ''n''. | + | * Dans une évaluation arithmétique avec **base#n** où ''base'' indique la base numérique utilisée pour exprimer le nombre ''n''. |
- | * Dans l'écriture de l'invite, **''\#''** est remplacé lors du développement de l'invite par le numéro de la commande précédemment utilisée. | + | * Dans l'écriture de l'invite, **\#** est remplacé lors du développement de l'invite par le numéro de la commande précédemment utilisée. |
- | * Quand il est utilisé comme //indicateur d'événement// dans le développement de l'historique : **''<chaîne> !#''**<key>Entrèe</key>. | + | * Quand il est utilisé comme //indicateur d'événement// dans le développement de l'historique : **<chaîne> !#**<key>Entrèe</key>. |
**__Remarques__ :** Dans tous ces cas d'usages, le caractère ''#'' n'est pas précédé d'un blanc.\\ | **__Remarques__ :** Dans tous ces cas d'usages, le caractère ''#'' n'est pas précédé d'un blanc.\\ | ||
Ligne 252: | Ligne 252: | ||
Voir : ''man bash'' section EXÉCUTION DES COMMANDES | Voir : ''man bash'' section EXÉCUTION DES COMMANDES | ||
- | ===== Conclusion ===== | + | ===== Conclusions ===== |
Écrire des commentaires dans un script (ou dans un code source), fait parti de l'art de bien écrire un programme. | Écrire des commentaires dans un script (ou dans un code source), fait parti de l'art de bien écrire un programme. | ||
Ligne 268: | Ligne 268: | ||
Expliquer des commandes complexes (dont la compréhension ne saute pas yeux).\\ | Expliquer des commandes complexes (dont la compréhension ne saute pas yeux).\\ | ||
Inhiber une partie du code sans devoir le supprimer.\\ | Inhiber une partie du code sans devoir le supprimer.\\ | ||
- | Laisser des annotation de développement.\\ | + | Laisser des annotations de développement.\\ |
Etc. | Etc. | ||
Quoi qu'il en soit, les commentaires doivent être précis et concis.\\ | Quoi qu'il en soit, les commentaires doivent être précis et concis.\\ | ||
- | Par exemple il est inutile de commenter une commande dont le nom est suffisant explicite.\\ | + | Par exemple il est inutile de commenter une commande dont le nom est suffisamment explicite.\\ |
Mais là encore c'est relatif, par exemple lors de l'écriture d'un script pédagogique.\\ | Mais là encore c'est relatif, par exemple lors de l'écriture d'un script pédagogique.\\ | ||
- | Et ils ne devraient pas être utilisés pour écrire de une documentation complète (il y a d'autre voix pour cela). | + | Et ils ne devraient pas être utilisés pour écrire une documentation complète (il y a d'autres voix pour cela). |
Sans oublier qu'ils doivent être compréhensibles par d'autres afin de partager son code.\\ | Sans oublier qu'ils doivent être compréhensibles par d'autres afin de partager son code.\\ | ||
Ligne 281: | Ligne 281: | ||
---- | ---- | ||
- | Le mécanisme de commentarisation de bash est très simple.\\ | + | Le mécanisme de commentarisation de //bash// est très simple.\\ |
Il utilise un seul caractère pour introduire (débuter) un commentaire, qui se poursuit jusqu’à la fin de ligne.\\ | Il utilise un seul caractère pour introduire (débuter) un commentaire, qui se poursuit jusqu’à la fin de ligne.\\ | ||
Ainsi nous pouvons commenter : | Ainsi nous pouvons commenter : | ||
Ligne 288: | Ligne 288: | ||
* Et à partir d'un certain endroit de la ligne, jusqu'à sa fin. | * Et à partir d'un certain endroit de la ligne, jusqu'à sa fin. | ||
- | Cela est largement suffisant rendant inutiles l'usage des pseudos alternatives.\\ | + | Cela est largement suffisant rendant inutile l'usage des pseudos alternatives.\\ |
Qui n'ont rien à voir avec les commentaires. | Qui n'ont rien à voir avec les commentaires. | ||
- | ---- | + | <note tip> |
- | + | Toutes fois,\\ | |
- | Voir aussi : [[doc:programmation:commenter|Commenter]] | + | Les pseudos alternatives décrites plus haut sont pratiques durant la phase de développement d'un script.\\ |
+ | Non pas pour réaliser des commentaires.\\ | ||
+ | Mais dans le cas où il est nécessaire d'inhiber un grand bloc de code.\\ | ||
+ | Évitant ainsi d'insérer devant chaque lignes à inhiber le caractère ''#''. | ||
+ | </note> |