[2019.04.01]Linux 学习心得(2)-- tar 命令的理解
这篇文章并不是发布最早的但是阅读量却每天都见长,很想知道各位大大是怎么找到这篇文章的。如果不忙,还请各位大大评论一下我看看,没准我可以为大家改进一下本文,提升一下质量。
==================================================
1.tar命令的小坑:当使用通配符*的时候,tar命令报错: Not found in archive
Root Cause: tar 命令的执行会先把 *.tar 翻译成 a.tar; b.tar; c.tar.... 然后再添加进整个命令,形成 tar -xvf a.tar b.tar c.tar .... 的结构再执行tar,然而该指令还有一个功能是解压缩某包中特定的文件,即 tar -xvf a.tar xxx.rmvb xxx.docx 。所以我们预期的输出应该是a; b; c; 三个tar文件都被解压缩成功,实际输出却变成在a当中寻找b和c并将二者单独解压缩出来,而在本案例中,a文件并没有b; c; 两个内容,所以出现了上述报错。
Solution :在bash中使用管道和xargs: ls *.gz |xargs -n1 tar -xzf
使用循环
2.tar命令的小坑:当命令顺序出错的时候,报错 You must....
tar -fxz spa.service_dc.tgz
│tar: You must specify one of the '-Acdtrux', '--delete' or '--test-label' options
│Try 'tar --help' or 'tar --usage' for more information.
由于Linux下打包工具的压缩格式真的超级多(tar/tgz/tar.gz/tar.bz2/tar.xz),而tar 着一条命令能干的事情也不少,所以刚接触还真的会有些头秃。
他的命令中可带的选项,分为下面几种:
1.必选选项,有且只有一个,必须放在选项的第一个位置,否则报上面的错。
-c 新建; -x 解压; -t 查看压缩文档内容; -r追加; -u 更新包中的文件
2.压缩选项,没有的话就是单纯的用tar打个包(不附带压缩功能),这类选项是可选的
-z 使用gzip进行之前选项的操作,对应的文件后缀是*.tgz / *.tar.gz
-j 使用bzp2的算法进行操作,对应的文件是*.tar.bz2
3.额外选项,建议放在最后一个选项的位置
-v 显示操作步骤(都把什么东西解压出来了)
-f 使用文件名,文件名必须紧跟在这个选项后面!