Recently, I stumbled upon a multiline comment type I have never seen before - here is a script example:echo a#: aaa : ddd #echo bThis seems to work, hell, even vim syntax-highlights it. What is this style of commenting called and how to I find more info about it?
Multiline shell script comments - how does this work?
bash;shell script
That is not a multi-line comment.  # is a single line comment. : (colon) is not a comment at all, but rather a shell built-in command that is basically a NOP, a null operation that does nothing except return true, like true (and thus setting $? to 0 as a side effect).  However since it is a command, it can accept arguments, and since it ignores its arguments, in most cases it superficially acts like a comment.  The main problem with this kludge is the arguments are still expanded, leading to a host of unintended consequences.  The arguments are still affected by syntax errors, redirections are still performed so : > file will truncate file, and : $(dangerous command) substitutions will still run.The least surprising completely safe way to insert comments in shell scripts is with #.  Stick to that even for multi-line comments.  Never attempt to (ab)use : for comments.  There is no dedicated multi-line comment mechanism in shell that is analogous to the slash-star /* */ form in C-like languages.For the sake of completeness, but not because it is recommended practice, I will mention that it is possible to use here-documents to do multi-line comments:: <<'end_long_comment'This is an abuse of the null command ':' and the here-document syntaxto achieve a multi-line comment.  According to the POSIX spec linked above, if any character in the delimiter word (end_long_comment in this case) above is quoted, the here-document will not be expanded in any way.  This is **critical**, as failing to quote the end_long_comment will result in the problems with unintended expansions described above. All of this text in this here-doc goes to the standard input of :, which does nothing with it, hence the effect is like a comment.  There is very little point to doing this besides throwing people off.  Just use '#'.end_long_comment