在提取中没有 -f 选项的 tar

Tos*_*osh 2 tar

我的问题类似于问题What do the -f parameter in the tar command,但它与存档提取有关。如果我发出tar x而不是tar xf mytarball.tar,是否期望我通过标准输入“输入”存档?这应该由Ctrl-Z终止?

Sté*_*las 6

这取决于tar实现。tar作为磁带归档,与大多数tar实现中,如果你不给一个f选项,用xtar会从一些磁带设备中提取数据。

tar然而,在像 GNU 这样的一些现代实现中,它不是第一个磁带设备,而是从标准输入读取存档。

如果 tar 的 stdin 是一个终端,比如当你tar x在没有输入重定向的情况下在终端的 shell 提示符下运行时,那么是的,你必须在键盘上输入存档的内容(考虑到这将是非常棘手的) tar 存档是二进制格式)并通过按eof两次发送字符的键或组合键完成(通常是^D(0x4),通常通过按 获得Ctrl+D)。

通常,您不键入存档的内容,而是将 stdin 设置为文件或管道或套接字,例如

tar x < file # better tar xf - < file for portability
xzcat file.xz | tar x
Run Code Online (Sandbox Code Playgroud)