Commentaires en ligne pour Bash?

J’aimerais pouvoir commenter un seul drapeau dans une commande à une ligne. Bash ne semble avoir from # till end-of-line commentaires de from # till end-of-line . Je regarde des astuces comme:

 ls -l $([ ] && -F is turned off) -a /etc 

C’est moche, mais mieux que rien. Y a-t-il une meilleure façon?

Ce qui suit semble fonctionner, mais je ne suis pas sûr que ce soit portable:

 ls -l `# -F is turned off` -a /etc 

Mon préféré est:

Commenter dans un script Bash

Cela aura un peu de frais, mais techniquement, cela répond à votre question.

 echo abc `#put your comment here` \ def `#another chance for a comment` \ xyz etc 

Et pour les pipelines en particulier, il existe une solution plus propre sans frais généraux

 echo abc | # normal comment OK here tr az AZ | # another normal comment OK here sort | # the pipelines are automatically continued uniq # final comment 

Comment mettre un commentaire de ligne pour une commande multiligne

Je trouve plus facile (et le plus lisible) de copier la ligne et de commenter la version originale:

 #Old version of ls: #ls -l $([ ] && -F is turned off) -a /etc ls -l -a /etc 

$(: ...) est un peu moins laid, mais toujours pas bon.

Que diriez-vous de le stocker dans une variable?

 #extraargs=-F ls -l $extraargs -a /etc 

La plupart des commandes permettent aux arguments de venir dans n’importe quel ordre. Déplacez simplement les drapeaux commentés à la fin de la ligne:

 ls -l -a /etc # -F is turned off 

Ensuite, pour le réactiver, décommentez et supprimez le texte:

 ls -l -a /etc -F 

Voici ma solution pour les commentaires en ligne entre les commandes multiples.

Exemple de code sans commentaire:

  #!/bin/sh çat input.txt \ | grep something \ | sort -r 

Solution pour un commentaire de pipe (en utilisant une fonction d’assistance):

  #!/bin/sh pipe_comment() { cat - } cat input.txt \ | pipe_comment "filter down to lines that contain the word: something" \ | grep something \ | pipe_comment "reverse sort what is left" \ | sort -r 

Ou si vous préférez, voici la même solution sans la fonction d’assistance, mais c’est un peu plus compliqué:

  #!/bin/sh cat input.txt \ | cat - `: filter down to lines that contain the word: something` \ | grep something \ | cat - `: reverse sort what is left` \ | sort -r 

Si vous savez qu’une variable est vide, vous pouvez l’utiliser comme commentaire. Bien sûr, si ce n’est pas vide, cela gâchera votre commande.

 ls -l $ {1 # -F est désactivé} -a / etc

§ 10.2. Paramètre Substitution

Si le commentaire en vaut la peine, il est probable qu’il se produise à la fin de la ligne ou sur une ligne à part. Je trouve rarement un besoin de commentaires en ligne avec du code avant et après le commentaire dans n’importe quelle langue.

Oh, il y a une exception, qui est le dialecte de SQL que j’utilise habituellement et qui utilise ‘{comments}’. Je vais parfois écrire:

 CREATE UNIQUE INDEX u1_table ON Table(...); CREATE {DUPS} INDEX d1_table ON Table(...); 

Mais même cela est un tronçon.

Pour désactiver une partie d’une commande comme a && b , j’ai simplement créé un script vide x qui est sur le chemin, afin que je puisse faire des choses comme:

 mvn install && runProject 

quand j’ai besoin de construire, et

 x mvn install && runProject 

quand pas (utiliser Ctrl + A et Ctrl + E pour aller au début et à la fin).

Comme noté dans les commentaires, une autre façon de faire est Bash intégré : au lieu de x :

 $ : Hello world, how are you? && echo "Fine." Fine.