晚上的解压命令一般都是 tar -zvxf xxx.tar.gz
我想问一下这里的 z 参数是干啥的,文档也没看懂。我自己尝试了一下,压缩的时候加 z 参数确实用 gzip 压缩了体积,问题是在解压的时候,我不加 z(tar -xf filename.tar.gz)也成功解压了……为什么网上搜到的命令都是-zvxf 解压呢?
另外我发现,tar -xf 好像可以解压.xz 文件,bz2 文件,好像解压的时候带参数是没有用的???
相关文档
-j, --bzip2 filter the archive through bzip2 -J, --xz filter the archive through xz -p, --preserve-permissions extract information about file permissions (default for superuser) -v, --verbose verbosely list files processed -z, --gzip filter the archive through gzip
![]() | 1 zent00 2017-06-21 17:31:16 +08:00 via iPhone 调用 gzip |
![]() | 2 herozzm 2017-06-21 17:32:44 +08:00 via Android 好像是指定解压引擎,不加的话由系统设定 |
![]() | 3 scriptB0y OP |
![]() | 4 zent00 2017-06-21 17:36:30 +08:00 via iPhone ![]() 早期版本的 tar 无法自动判断文件所使用的压缩算法,所以需要指定 z 或 j,现代版本的 tar 都可以识别了,所以不需要指定 z j J,只需要告诉 tar 你是要解压 (x) 还是压缩 (c) |
![]() | 5 momocraft 2017-06-21 17:38:41 +08:00 ![]() 和 tar 版本有关。旧版本解压时可能要指定压缩方式,现代常见的 gnu tar 和 bsdtar 聪明一点。 |
![]() | 6 herozzm 2017-0621 17:38:45 +08:00 via Android ![]() @scriptB0y 是的我写脚本的时候解压文件都不加 z,因为里面有个类型的压缩文件,加了 z 参数反而会出错,不加都能顺利解压 |
![]() | 7 herozzm 2017-06-21 17:39:10 +08:00 via Android 里面有各种类型的文件 |
![]() | 8 cxbig 2017-06-21 17:42:37 +08:00 ![]() tar -c 本身只打包不压缩 -z 指定用 gzip 压缩方式 新版解压不需要指定-z,它会自动判断 |
10 introom 2017-06-21 17:45:03 +08:00 via Android 好问题,解压缩的时候会根据文件后缀自行判断压缩格式。 |
11 0ZXYDDu796nVCFxq 2017-06-21 17:47:20 +08:00 ![]() 压缩必须指定压缩格式 g: gzip j: bz2 J: xz 解压以前需要指定压缩格式,现在新版本不需要,加不加 -a 参数都会自动判断格式 所以对于 gz 格式的解压,在新版 tar 上,以下命令全部等价 tar -zxf tar zxf tar -xf tar xf tar -axf tar axf 不过,规范一点更好,写脚本的时候,统一使用 tar -zxf 或者 tar -axf 这些参数,免得出 bug |
![]() | 12 zent00 2017-06-21 17:54:01 +08:00 via iPhone 纠正我上一个回复里的一个误导性错误:打包的时候还是需要指定使用何种压缩算法的,tar 并不会根据扩展名来调用相应工具。tar 的自动识别仅适用于解包时。 |