* belongs to the POSIX standard,
** is an extension. You are right it's not in
man 7 glob. Tools that treat
** specially (i.e. not as
* simply followed by
*) tend to agree what it means, but AFAIK it's only because there is a consensus, not because they all use some common library (like
glob() mandated by POSIX) whose documentation could be the ultimate answer to your question.
I'm afraid the best you can get is the documentation of each tool, separately. The links you posted are exactly this.
None of your links covers
ls **/* though. This example works because the shell expands
ls is even started. You tagged
bash, therefore I assume your shell is Bash. For Bash these are the relevant fragments of the documentation:
Matches any string, including the null string. When the
globstar shell option is enabled, and
* is used in a filename expansion context, two adjacent
*s used as a single pattern will match all files and zero or more directories and subdirectories. If followed by a
/, two adjacent
*s will match only directories and subdirectories.
If set, the pattern
** used in a filename expansion context will match all files and zero or more directories and subdirectories. If the pattern is followed by a
/, only directories and subdirectories match.
Any other shell (or whatever tool) that supports
** shall document it for itself.
** is an extension, some tools by default suppress their support unless you explicitly enable it. E.g. here (it's one of the links you posted) we can read "If
recursive is true, the pattern
** will …"; but by default
recursive=False. Similarly in Bash
** is by default just
* followed by
*, this changes when you invoke
shopt -s globstar.
There is no guarantee all tools that treat
** specially will expand it in exactly the same way. In general there may be edge cases and nuances. Always refer to the documentation of the tool you're actually using.