“tar xzf -”中的连字符“-”是什么意思?

“tar xzf -”中的连字符“-”是什么意思?

当尝试从命令行安装 dropbox 时,我读取了命令

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

这里是什么 -意思?是上一个目录吗?

答案1

某些命令可以接受-文件名,以下任一项均可:

  • 写信给标准输出而不是命名文件。这就是-传递给wgetafter 的参数-O所做的事情。
  • 阅读标准输入而不是来自命名文件。这就是参数在之后-传递给的内容。tarxzf

您展示的命令使用 下载存档文件,wget并使用 解压tar。为此, 的输出wget管道( |) 到 的输入tar。这就是为什么wget写入标准输出而不是文件并tar从标准输入而不是文件读取的原因。

答案2

这只是一个文件名,很多 Unix 程序将其解释为“不是真正地打开一个文件,而是读取stdin(或写入stdout)”。

这意味着从流入程序的输入中读取;在您的情况下,这就是 wget 的输出。

答案3

参数-指定应从档案而不是文件tar读取。从stdinGNU tar 手册

如果你-使用存档名称tar从标准输入读取档案(列出或提取文件时)

其他命令具有相同的行为,并且由POSIX.1-2017 标准

指南 13

对于使用操作数来表示要打开以进行读取或写入的文件的实用程序,“ -”操作数应该仅用于表示标准输入(或标准输出,当从上下文中可以清楚地知道指定了输出文件时)或名为 的文件-

相关内容