J'aimerais pouvoir commenter un seul drapeau dans une commande d'une ligne. Bash ne semble avoir que des commentaires 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 un meilleur moyen?
Ce qui suit semble fonctionner, mais je ne sais pas s'il est portable:
ls -l `# -F is turned off` -a /etc
Mon préféré est:
Cela aura des frais généraux, 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 a-z A-Z | # 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 plus lisible) de simplement copier la ligne et 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 pas bon.
Que diriez-vous de le stocker dans une variable?
#extraargs=-F
ls -l $extraargs -a /etc
Voici ma solution pour les commentaires en ligne entre plusieurs commandes canalisées.
Exemple de code non commenté:
#!/bin/sh
cat input.txt \
| grep something \
| sort -r
Solution pour un commentaire de pipe (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
La plupart des commandes permettent aux arguments de venir dans n'importe quel ordre. Il suffit de déplacer 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
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
Si le commentaire vaut la peine d'être dit, il peut probablement aller au bout de la ligne, ou sur une ligne seul. Je trouve rarement un besoin de commentaires internes avec du code avant et après le commentaire, dans aucune langue.
Oh, il y a une exception, le dialecte de SQL que j'utilise habituellement et qui utilise '{comments}'. De temps en temps j'écrirai:
CREATE UNIQUE INDEX u1_table ON Table(...);
CREATE {DUPS} INDEX d1_table ON Table(...);
Mais même cela ne va pas.
Pour désactiver une partie d'une commande telle que a && b
, j'ai simplement créé un script vide x
qui se trouve sur le chemin d'accès, afin de pouvoir effectuer les opérations suivantes:
mvn install && runProject
quand j'ai besoin de construire, et
x mvn install && runProject
quand pas (en utilisant Ctrl + A et Ctrl + E aller au début et à la fin).
Comme indiqué dans les commentaires, une autre façon de le faire est d'utiliser Bash :
au lieu de x
:
$ : Hello world, how are you? && echo "Fine."
Fine.