万能解压 (extract)
核心理念
> 解决一个具体的小痛点:tar.gz / zip / rar / 7z……参数永远记不住,tar -xzf 还是 tar -xjf?
> 一个 extract 命令全搞定。
能力边界
- 本技能提供万能解压命令,支持
tar.gz / tgz / tar.bz2 / tbz2 / tar.xz / tar / zip / rar / 7z / gz / bz2格式; - 解压依赖系统已安装对应工具(
tar/unzip/unrar/7z)。这些均为常见系统自带工具;若当前环境缺失某工具,会在调用时给出明确提示(兜底表述,避免离线环境静默失败),不会承诺自动安装或后台补充; - 不承诺主动推送或后台常驻,所有操作均为用户主动调用时执行;
- 可通过在
case分支追加一行来扩展新格式(可扩展性)。
用法
extract <文件> # 解压到当前目录
extract <文件> -d <目录> # 解压到指定目录
extract --list <文件> # 只列出内容不解压
extract *.zip # 批量解压(通配符)
extract --help # 帮助
extract --version # 版本号
安装
chmod +x install.sh && ./install.sh
# 默认安装到 ~/.local/bin/extract,确保该路径在 PATH 中
which extract # 能找到即安装成功
示例
$ extract something.tar.gz
→ 解压: something.tar.gz
✓ 完成: something.tar.gz
$ extract data.zip -d ~/Downloads/target
→ 解压: data.zip
✓ 完成: data.zip
$ extract *.rar
→ 解压: a.rar
✓ 完成: a.rar
扩展方向
| 想加什么 | 怎么改 |
|---|---|
| 加新格式 | 在 extract_one() 的 case 分支加一行 |
| 解压后自动 ls | 在 main() 末尾追加 ls |
| 中文 zip 编码识别 | 在 *.zip 分支加 unzip -O 判断 |
| 解压后删除原包 | 在 extract_one() 末尾加 rm -f "$file" |