在一个命令行上使用 cat、tar 和 gzip 解压缩和解压 .tar.gz 文件

Mat*_*boc 4 linux tar gzip cat

如何在一个命令行上使用 cat、tar 和 gzip 解压缩和解压 .tar.gz 文件?这甚至可能吗?

Kus*_*nda 11

不需要catgzip

$ tar xvzf archive.tar.gz
Run Code Online (Sandbox Code Playgroud)

选项字符串告诉tarx详细模式 ( v)提取 ( )标志后的压缩 ( z) 档案f

使用所有cat,tar gzip(这是愚蠢的,不要这样做):

$ cat archive.tar.gz | gzip -d -c | tar xvf -
Run Code Online (Sandbox Code Playgroud)

或者

$ gzip -d -c archive.tar.gz | cat | tar xvf -
Run Code Online (Sandbox Code Playgroud)

-作为文件名给出时,tar将从标准输入读取存档。

最后两个示例受到通常称为“无用使用cat”的影响,因为唯一要做的cat就是将数据混洗到管道的下一部分。

一个稍微好一点的版本,没有cat

$ gzip -c -d archive.tar.gz | tar xvf -
Run Code Online (Sandbox Code Playgroud)

tar不知道如何处理压缩档案的系统上,这实际上可能是一件有用的事情。

我在tar上面使用的古老选项字符串(-前面没有破折号 ( ))来自破折号通常用于指定命令行选项之前的时间。其他不使用常规选项语法的实用程序包括ddmt,但尽管tar今天的大多数实现都能理解较新的破折号选项,但dd通常不会。的mt命令(它控制磁带的操作)已经获得(特别是在Linux)一些破折号选项,但在命令行的唯一的非可选部分仍然是命令,该命令要在驱动器上执行,例如rewindeof