您可能应该使用:
git ls-remote ssh://git@git_repo:port
没有任何后缀,因为它默认列出所有内容。
您可以使用:
git ls-remote ssh://git@git_repo:port '*'
(或者双引号也一样——其中一个或两个也可以在 Windows 上工作)。在 Unix/Linux 风格的命令 shell 中,shell将在运行命令之前替换*
为当前目录中所有文件的列表,除非您保护星号不受 shell 影响。
您还可以使用单个反冲:
git ls-remote ssh://git@git_repo:port \*
因为有很多方法可以保护单个字符免受 shell 的影响。规则有点复杂,但一般来说,单引号是“最强大”的引号,而双引号引用glob字符1而不是其他扩展。2 如果您尚未在引号内,则反斜杠会引用紧接的下一个字符(双引号内的反斜杠行为在某些 shell 中会有所不同)。
1全局字符是*
、[
和?
。之后[
,glob 中的字符运行到结尾]
。因此echo foo[abc]
查找名为fooa
、foob
和的文件fooc
。注意.
一般不特殊:foo.*
只匹配名称以 开头的文件foo.
,即包括句点:一个文件名foo
不以 开头foo.
,只以foo
,不匹配。
Glob 与正则表达式非常不同:在正则表达式中,.
匹配任何字符(就像?
在 glob 中一样),星号表示“重复先前的匹配零次或多次”,因此 glob*
和正则表达式.*
相似。(在正则表达式匹配中,我们还需要考虑表达式是否被锚定。globs 总是被锚定的,这样就不会出现问题。)
2大多数扩展都使用美元符号$
,如$var
or ${var}
or $(subcommand)
,但反引号也调用命令替换,如echo `echo bar`
.