作为一个有动手能力的 Mac 用户,如果你不想用破解软件,又找不到合适的解压应用,这篇文章就是为你准备的。
Mac 自带的解压工具 Archive Utility 实在糟糕透顶:支持格式极少、大文件易报错、反复在 zip 和 cpgz 间循环解压,不是一个理想的工具:
每次看着压缩包子子孙孙无穷尽,我都感叹:二胎政策真厉害。
Mac 上一直缺乏完美解压方案——也许你从某些奇怪站点下载的「绿色版」BetterZip 例外。我一直想要一款这样的解压应用:
- 速度快、体积小、内存占用少
- 无广告、免费
- 最好开源
在 windows 平台,免费开源的 7z 是不少有识之士的首选。不幸的是 macOS 上只有它的命令行版本,这一截门槛阻碍了许多有心尝试的用户。好在我们有 Automator,可以在右键菜单中打造一个简易解压服务,解决一些基础需求。
安装 Homebrew
你当然可以直接下载安装 p7zip,但当你贪便宜装了一百个免费命令行程序以后——就知道我们这些写教程的——祥林嫂般强调包管理,是多么必要了。
用这条命令安装它:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装 p7zip
直接用 homebrew 安装 p7zip:
brew install p7zip
跑完后看一下 p7zip 的命令,很丰富,从分解压包内单个文件、卷解压/压缩,到设置压缩率,一应俱全。但我们的目的不是成为压缩包达人,而是解决日常所需。
制作 Automator services
在终端内,我需要运行这样的命令来解压文件:
7z x [文件名] [存放路径]
Automator 可以跑 shell 命令,但如你所见,把上面那句话复制粘贴是不会发生奇迹的。需要向它转递正确的[文件名]变量。
打开 Automator 后新建一个 services,它将被用于右键菜单:
首先将输入对象限制为「文件或文件夹」,以防止在不需要解压的 时候蹦出来「解压」选项;添加一个「拷贝至剪贴板」步骤,获得右键所选中文件的名称:
下一步添加「运行 shell 脚本」,将「传递输入」设为「作为自变量」,再用「$@ 」(你不用知道这是什么)来接收上一步获得的文件名。我喜欢把文件解压到桌面,所以添加了「-o」选项,后面直接指定输出路径为桌面:
7z x $@ -o/Users/Min/Desktop
考虑到一般我们在用系统默认的 shell,它莫名其妙不会调用你安装的命令,所以需要在上一条命令前声明环境变量。说人话就是,大声告诉它:我叫你一声,你敢应吗!
PATH=$PATH:/usr/local/bin/
记得两条命令之间用「;」隔开。
保存好你的造物,运行它试试:
看起来不错嘛。
局限与对策
除动手的时间成本和一点点技术门槛外,这个解决方案还是和商业软件有着差距:
- 不能直接解压带密码的文件
- 不能方便地单独解压出某一项
- 没有图形界面
即便如此,在多数情况下,它仍是一个不错的解压方案,没有密码的压缩包基本可以成功解压。遇到密码、分卷等复杂情况,也能打开终端应对。没有图形界面在我看来倒是一大优点,你只需要右键目标文件,直接选择「解压」即可,不必「打开应用-选择文件-解压文件-关闭应用」。值得一提的是,在速度上,基于 p7zip 的办法也是虎父无犬子。
另有一个痛点,常见的 rar 作为一种专利格式,是不能用 p7zip 打开的。推荐用免费的 unrar 实现其解压,让我们如法炮制一个右键菜单服务:
使用自制的小工具让我舒服许多,偶尔遇到不能直接解压的,打开终端也能对付过去。当然,口碑不错的解压应用还有很多,但都不比 p7zip 全能,前者们总是遇到无法解释的格式不支持问题(例如大名鼎鼎的 Unarchiver,就把我的 sketchup 工程解构成了豆腐渣)。
结语
自制小工具可以实现更好的客制化,并且免费、轻量、安全。有的时候我们并不是不会动手,只是太懒。在资源泛滥的时代,我不会分享成品,而是告诉你方法。