前言

在 Unix 大家族里,每个家族成员都有一项让人引以为豪的技能,那就是「包管理」,macOS 也不例外。

如果你不了解包管理是什么,没关系,你可以想成是一个 Siri 掌握的 App Store,当你需要一个 app,你只需告诉 Siri:siri install wechat(Siri,安装微信),下载、安装等等这些便可恰如其分的完成,不需要去了解从何处下载安装包或者源代码,又要如何安装在电脑的哪个位置。

当你需要一个依赖于另一个软件的应用,比如说 You-Get(一款下载互联网视频的自由软件)需要先安装 Python 3。「包管理」会要么提醒你电脑缺少所依赖的 Python 3,要么恰如其分地把依赖的软件不多不少地安装好,再继续中断的 You-Get 安装过程。(通常情况下会采取后者)

整个过程不但安全可靠,而且简洁优雅,所有软件都来源于其对应的官方网站,并能够安全干净地卸载,而这一切都是普通的安装方式所做不到或做不好的。

快速上手

在 Homebrew 这里,我们在「终端」用文本进行交互,而不是像和 Siri 一样用语音交互。不像在 Windows 上的 cmd 那么可怕,macOS 的命令行工具是非常用户友好的,只需要用简单的几个英文单词,你就能告诉电脑要做什么。

首先要安装 Homebrew,我们用「聚焦」搜索「终端」并打开,粘贴以下代码到终端,按下回车键:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如同 Siri 一样,我们直呼 brew cask 就能得到一份使用说明,而输入 brew cask install atom (Brew cask,安装 Atom)并回车,即可安装 Atom。

安装 Atom

同样地,当电脑储存空间不足或者不再需要一款应用,我们用 uninstall 来卸载应用,但要注意:不同于从 App Store 下载的应用,卸载的应用的数据会被保留(比如偏好设置),以便下次安装后获得一致的体验。

如果我们想重置或还原一款应用的使用体验,或者单纯地想把应用留下来的痕迹一起清理掉,我们不用 uninstall 而是用 zap 来完整地抹掉一个应用。随后你可以用 install 来再次安装它。

小试牛刀:
brew cask install chrome
==> 没有叫这个名字的 Cask,是不是指 chrome-devtools、epichrome、google-chrome……

brew cask install google-chrome
==> 正在下载 https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg
🍺  google-chrome 安装成功!

brew cask zap google-chrome
==> 删除一堆文件、还会删除几个空的目录

登堂入室

到此为止我们学会了 Homebrew Cask 的一些基本用法,但你可能会奇怪:不是叫 Homebrew 吗,Cask 是什么?

其实 Homebrew Cask 是 Homebrew 附带的、用来安装和管理 GUI 应用软件的工具,也就是通常有一个窗口、一些按钮的这样的应用。而 Homebrew 是用于和它本身一样在终端使用的命令行软件的。我们只需要知道,除了在终端使用的软件,其他的软件都用 Cask 来管理就对了。

类似地,我们直呼 brew 就能得到一份使用说明,而输入 brew install you-get(Brew,安装 You-Get)并回车,即可安装 You-Get。You-Get 是我最喜欢的一个视频下载工具,它的用法比你能想象的还要简单:只需要输入 you-get 视频链接,就会立刻开始下载最高清晰度的源视频(以及字幕 & 弹幕)。

还有更多实用的命令行工具如 FFmpeg、MAS、Aria2,都可以用 Homebrew 来安装,这些工具可以帮助你的效率生活更上一层楼。

当你熟悉这样一种交互方式以后,其实命令行就一点也不可怕了,就和同 Siri 对话一样简单自然。

文本交互的未来

图形用户界面,这一交互方式的潜在价值被独具慧眼的乔布斯发现后,先后由 Macintosh 和 Windows 发扬光大,后者甚至一度置文本交互于死地。尽管文本交互很多时候更有效率,却一直可能只有程序员才用。但在如今 Siri、Google Assistant、Cortana、Alexa 等智能语音助理兴起之际,基于文本的交互方式似乎又燃起点点火星。

我期待这样一种未来:人们口述的自然语言将和鼠标、键盘一样,成为与计算机交互的重要途径;我们也不再需要用固定的英文单词去组成一行行的命令,相反我们只需要说出要做的事情,剩下的只要交给计算机去做就好。