tar
1.1、tar简介

tar是一种打包格式,并不是压缩格式。

tar命令有两个实现版本:GNU tarBSD tar

BSD tarUNIX操作系统的默认tar实现。macOS移植了FreeBSD的工具, 所以,macOS默认也是使用的BSD tar

GNU tar是由GNU project实现的tar命令。

GNU tar完全兼容BSD tar

GNU tar默认已经安装在了各种Unix-like操作系统发行版中了, 用户一般是无需再次安装的。当然,您也可以再次安装。

GNU tar官网:https://www.gnu.org/software/tar

1.2、通过包管理器安装GNU tar
操作系统包管理器安装命令
Windowsscoopscoop install tar
macOSHomeBrewbrew install gnu-tar
GNU/LinuxLinuxBrewbrew 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 

step1、安装依赖

下载时cURL
解压时tarxz
编译时POSIX shGNU CoreUtilsmakegcc
运行时
  • glibc ( libc.sold-linux-x86-64.so )
  • acl ( libacl.so )
  • attr ( libattr.so )

step2、使用curl命令下载GNU tar源码包 (

curl -LO https://mirrors.tuna.tsinghua.edu.cn/gnu/tar/tar-latest.tar.xz

step3、使用tar解压GNU tar源码包

tar vxf tar-latest.tar.xz

step4、进入tar-1.32目录,并查看它的内容

step5、配置、编译、安装

./configure && make && sudo make install
1.4、tar命令

查看tar的帮助,如下:

tar --help

tar命令的使用格式:

tar [option]... [filePath]...

参数说明:

参数说明
-v打印详细日志
-t打印包里面的内容列表
-f指定文件
-C指定解压到的文件夹
--strip-components=N假如压缩包里有几层文件夹,而你想跳过前面某几层
-x解压模式
-z依赖gzip,处理.gz.tgz格式的文件
-j依赖bzip2,处理.bz2格式的文件
-J依赖xz,处理.xz格式的文件
--lzma依赖xz,处理.lzma格式的文件
1.7、列出压缩包里的内容,检验压缩包的完整性

示例:

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.8、解压文件

解压.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