每次在linux解压文件都要去网上查一次,因为记不住后面跟的参数(原因还是不理解这些参数的意思)。所以总结解压命令。
tar命令
首先,tar是一个打包工具,并不是一个压缩工具,tar的压缩功能是调用了别的工具来实现的。
tar命令的用法是 tar [function] [option] pathname。其中必须选择一个function,相当于是指定tar的任务。function可以用简写首字母,可以与后面的option混用(所以之前我都不知道有个function的存在,以为都是option)。所有的function支持见下表。比如说,如果要创建一个归档文件,就用tar -c,如果是从归档中提取文件,就是tar -x。
FUNCTION LETTERS
Main operation mode:
-A, –catenate, –concatenate
append tar files to an archive
-c, –create
create a new archive
-d, –diff, –compare
find differences between archive and file system
–delete
delete from the archive (not on mag tapes!)
-r, –append
append files to the end of an archive
-t, –list
list the contents of an archive
–test-label
test the archive volume label and exit
-u, –update
only append files newer than copy in archive
-x, –extract, –get
extract files from an archive
然后是options,其中有一个option(-f)是必须的,就是指定使用的归档。而且这个参数后面需要跟一个文件名字,所以一般都把它放在tar的最后一个参数上。例如打包文件的命令就是tar -cf new.tar。其中第一个c是函数名,可以和后面的option组合。文件名的后缀是为了好识别,不加也可以(推荐加,不然你就不知道一个文件是文件还是归档了)。
常用的参数如下:
-p或–same-permissions:用原来的文件权限还原文件
-v:列出处理过的文件,显示运行过程还是挺好的
-j, –bzip2:后缀是.bz2形式的压缩
-J, –xz:后缀是xz形式的压缩
-z, –gzip:后缀是gz形式的压缩
综上,打包一个文件的命令就是:tar -cvzf file.tar.gz dir,解压文件的命令就是tar -xvf file.tar.gz。
我有一点不理解的是,网上的解压命令基本上都是带-z参数的,即tar -xzvf file.tar.gz,但是我尝试了一下不指定解压器也是能工作的,不知道为什么网上都这么说。到论坛问了一下,原来之前版本的tar是不能自动识别压缩编码的,现在已经可以自动识别了,不需要加zjJ任何参数了。
解压以前需要指定压缩格式,现在新版本不需要,加不加 -a 参数都会自动判断格式
所以对于 gz 格式的解压,在新版 tar 上,以下命令全部等价
tar -zxf
tar zxf
tar -xf
tar xf
tar -axf
tar axf
不过,规范一点更好,写脚本的时候,统一使用 tar -zxf 或者 tar -axf 这些参数,免得出 bug
所以还是用Linux比较晚……会遇到一些奇奇怪怪的问题……
zip文件的压缩和解压
另一种跨平台的压缩格式是.zip。这种格式的文件相关的命令是zip和unzip。通过下面几个例子了解一下,用的时候查man就可以。
递归压缩 zip -r yasuo.zip abc.txt dir1
解压 unzip yasuo.zip
查看压缩文件内的内容,但是不解压 unzip -v large.zip
验证下载文件的正确性 unzip -t large.zip
参考资料