最近我遇到了一个命令:
curl https://start.spring.io/starter.tgz -d dependencies=webflux,actuator | tar -xzvf -
curl
本身不会下载该tgz
文件,因为它不是wget
.tar -xzvf
也不下载任何文件。但tar -xzvf -
确实“下载”文件。我在联机帮助页中没有找到任何-
解释tar
,并且我认为它与登录 shell 无关。我猜这是我用的外壳。这是什么-
?
答案1
curl
做下载文件。与 相反wget
,它会将下载的文件写入到,stdout
除非您指定-o
保存文件的选项。
至于-
in tar 命令,它与选项一起出现,您可以在, 部分-f
找到解释:info tar
6.1 Choosing and Naming Archive Files
如果使用“-”作为 ARCHIVE-NAME,“tar”将从标准输入读取存档(列出或提取文件时),或将其写入标准输出(创建存档时)。如果在修改存档时使用“-”作为 ARCHIVE-NAME,“tar”将从其标准输入读取原始存档,并将整个新存档写入其标准输出。
答案2
Curl 下载文件并将其发送到 STDOUT。同样可以用 来完成wget
。
然后通过管道( |
)将此文件发送到tar
命令的STDIN。这个破折号 ( -
) 告诉 tar 使用 STDIN 作为文件而不是文件系统中的文件。