GNUtar
1.1、GNU tar简介
short for:tape archiver
是什么 ?:a utility to create tar archives, as well as various other kinds of manipulation. tar archives were used to store files conveniently on magnetic tape.
开发语言:C
开发组织:GNU
官方主页:https://www.gnu.org/software/tar
1.2、通过包管理器安装GNU tar
操作系统包管理器安装命令
Windowsscoopscoop install tar
macOSHomeBrewbrew install gnu-tar
GNU/LinuxHomeBrewbrew install gnu-tar
aptsudo apt-get install -y tar
CentOSyumsudo yum install -y tar
dnfsudo dnf install -y tar
openSUSEzyppersudo zypper install -y tar
Alpine Linuxapksudo apk add tar

Arch Linux

ArcoLinux

Manjaro Linux

pacmansudo pacman -Syyu --noconfirm
sudo pacman -S    --noconfirm tar
Gentoo LinuxPortagesudo emerge tar
1.3、通过编译源码安装GNU tar
1.4、tar命令

tar命令的使用格式:

tar --help
tar [option]... [FILE]...
option说明
-x解压压缩包
-c创建压缩包
-t列出压缩包里的内容
-v打印详细日志
-f <FILE>指定要解压的文件要压缩成的文件
-C <DIR>指定解压到的文件夹
--strip-components=N假如压缩包里有几层文件夹,而你想跳过前面某几层
-z依赖gzip,处理.gz.tgz格式的文件
-j依赖bzip2,处理.bz2格式的文件
-J依赖xz,处理.xz格式的文件
--lzma依赖xz,处理.lzma格式的文件
1.5、示例
1.5.1、检验压缩包的完整性

示例:

tar -tf apache-tomcat-8.5.9.tar.gz

运行效果如下:

执行这个命令的目的是检查tar文件是否是完整的,如果不是完整的,就没必要解压了。

if tar -tf apache-tomcat-8.5.9.tar.gz &> /dev/null; then
    tar zvxf apache-tomcat-8.5.9.tar.gz -C ~/bin
else
    echo "need to download"
fi

从上面的结果我们知道:apache-tomcat-8.5.9.tar.gz文件中第一层就是一个文件夹, 我们想要知道这个文件夹的名称,我们有下面这三种办法:

方法1:

tar -tf apache-tomcat-8.5.9.tar.gz | awk -F "/" '{print $1}' | sort | uniq

方法2:

tar -tf apache-tomcat-8.5.9.tar.gz | awk -F "/" '{print $1}' | tail -n 1

方法3:

tar -tf apache-tomcat-8.5.9.tar.gz | awk -F "/" '{print $1}' | sed -n '1p'
1.5.2、解压文件

解压.tar.gz或者.tgz文件:

tar vxf apache-tomcat-8.5.9.tar.gz -C ~/bin

解压.tar.bz2文件:

tar vxf sublime_text_3_build_3126_x64.tar.bz2 -C ~/bin

解压.tar.xz文件:

tar vxf bash-4.3.tar.xz -C ~/bin