核心概念
在开始之前,请记住几个关键点:

- 文件扩展名:Unix/Linux 文件扩展名(如
.tar,.gz)更多是为了方便人类识别,系统并不强制依赖,但为了正确解压,你需要知道文件是用什么工具压缩的。 - 管道符 :可以将一个命令的输出直接作为另一个命令的输入,非常强大。
- (连字符):在命令中代表标准输入或标准输出。
tar -xzf -表示从标准输入读取并解压。 zcat,bzcat,xzcat:这些命令可以不解压文件,直接将其内容输出到标准输出,非常适合和管道结合使用。
.tar 文件 (Tape Archive)
.tar 文件本身只是将多个文件和目录“打包”成一个文件,并没有经过压缩,它通常与压缩工具(如 gzip, bzip2, xz)结合使用,形成 .tar.gz, .tar.bz2, .tar.xz 等文件。
基本命令:tar
-
解包(不解压):
tar -xvf filename.tar
-x: extract (解包)-v: verbose (显示详细过程,可选)-f: 指定文件 file (后面必须跟文件名)
-
解包并解压:
(图片来源网络,侵删)-
.tar.gz或.tgz(gzip 压缩)tar -xzvf filename.tar.gz # 或者 tar -xzf filename.tar.gz
-z: 通过 gzip 解压
-
.tar.bz2(bzip2 压缩)tar -xjvf filename.tar.bz2 # 或者 tar -xjf filename.tar.bz2
-j: 通过 bzip2 解压
-
.tar.xz(xz 压缩)tar -xJvf filename.tar.xz # 或者 tar -xJf filename.tar.xz
-J: 通过 JXZ 解压 (注意:J 是大写)
-
-
解压到指定目录:
(图片来源网络,侵删)tar -xzvf filename.tar.gz -C /path/to/target/directory
-C: 指定目录 Chdir
.gz 文件 (Gzip)
通常由 gzip 压缩单个文件生成。
基本命令:gunzip 或 gzip -d
-
解压文件:
gunzip filename.gz # 或者 gzip -d filename.gz
- 执行后,
filename.gz会被解压为filename,原压缩文件会消失。
- 执行后,
-
保留原压缩文件:
gunzip -k filename.gz # 或者 gzip -dk filename.gz
-k: keep (保留)
-
使用
tar处理: 对于*.tar.gz文件,最佳实践是直接使用tar -xzf命令,因为它会自动处理内部的 gzip 解压。
.bz2 文件 (Bzip2)
通常由 bzip2 压缩单个文件生成,压缩率比 gzip 高,但速度较慢。
基本命令:bunzip2 或 bzip2 -d
-
解压文件:
bunzip2 filename.bz2 # 或者 bzip2 -d filename.bz2
- 执行后,
filename.bz2会被解压为filename,原压缩文件会消失。
- 执行后,
-
保留原压缩文件:
bunzip2 -k filename.bz2 # 或者 bzip2 -dk filename.bz2
-
使用
tar处理: 对于*.tar.bz2文件,使用tar -xjf命令。
.zip 文件
跨平台最常用的压缩格式之一。
基本命令:unzip
-
解压文件:
unzip filename.zip
默认解压到当前目录。
-
解压到指定目录:
unzip filename.zip -d /path/to/target/directory
-
查看压缩包内容(不解压):
unzip -l filename.zip
-
覆盖前不提示:
unzip -o filename.zip
-o: overwrite (覆盖)
.rar 文件
Windows 平台常用,在 Linux 上需要安装 unrar 工具。
安装 unrar:
- Debian/Ubuntu:
sudo apt-get install unrar - CentOS/RHEL:
sudo yum install unrar
基本命令:unrar
-
解压文件:
unrar x filename.rar
x: extract,并保持原目录结构。
-
解压到指定目录:
unrar x filename.rar /path/to/target/directory
-
查看压缩包内容:
unrar l filename.rar
.7z 文件
7-Zip 格式,压缩率很高。
安装 p7zip:
- Debian/Ubuntu:
sudo apt-get install p7zip-full - CentOS/RHEL:
sudo yum install p7zip p7zip-plugins
基本命令:7z
-
解压文件:
7z x filename.7z
x: extract,并保持原目录结构。
-
解压到指定目录:
7z x filename.7z -o/path/to/target/directory
-o: 指定目录 (注意:o后面不能有空格)
.xz 文件
一种高压缩率的压缩格式。
基本命令:unxz 或 xz -d
-
解压文件:
unxz filename.xz # 或者 xz -d filename.xz
- 执行后,
filename.xz会被解压为filename。
- 执行后,
-
使用
tar处理: 对于*.tar.xz文件,使用tar -xJf命令。
.Z 文件 (Compress)
一种非常古老的 Unix 压缩格式,现在很少见。
基本命令:uncompress
uncompress filename.Z
总结速查表
| 文件扩展名 | 压缩工具 | 解压命令 | 常用选项 |
|---|---|---|---|
.tar |
无 (打包) | tar -xvf |
-C (指定目录) |
.tar.gz |
gzip |
tar -xzvf |
-C (指定目录) |
.tgz |
gzip |
tar -xzvf |
-C (指定目录) |
.tar.bz2 |
bzip2 |
tar -xjvf |
-C (指定目录) |
.tar.xz |
xz |
tar -xJvf |
-C (指定目录) |
.gz |
gzip |
gunzip 或 gzip -d |
-k (保留原文件) |
.bz2 |
bzip2 |
bunzip2 或 bzip2 -d |
-k (保留原文件) |
.zip |
zip |
unzip |
-d (指定目录), -l (列表) |
.rar |
rar |
unrar x |
x (保持结构), -d (指定目录) |
.7z |
7z |
7z x |
-o (指定目录) |
.xz |
xz |
unxz 或 xz -d |
|
.Z |
compress |
uncompress |
高级技巧:自动检测文件类型并解压
有时候你不确定一个文件是用什么工具压缩的,可以使用 file 命令来查看,或者使用 sharutils 包中的 unshar,但更通用的方法是写一个简单的脚本。
这里有一个非常实用的 Bash 函数,把它放到你的 ~/.bashrc 或 ~/.zshrc 文件里,source 一下,就可以直接使用 extract 命令了。
# 在 ~/.bashrc 或 ~/.zshrc 中添加以下内容
extract () {
if [ -f $1 ]; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted via extract()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
使用方法:
# 重载配置文件 source ~/.bashrc # 现在可以直接使用 extract 命令了 extract some_archive.tar.gz extract another_file.zip
希望这份详细的指南能帮助您!
