命令行可能是 OS X 用户群体划分的分水岭,有的用户就是喜欢 GUI 的直接,有的用户就是喜欢 shell 的高效。虽然 OS X 没有强制用户使用哪一种方式,但是,命令行肯定是每一个用户都接触过,因为有一些操作不得不通过命令行来完成,不信你看看这份「$Awesome OS X Command Line」文档。

学习和使用命令行是需要付出时间和代价的,你会感受到门槛这个东西的存在,但是总的来说也是值得的。这里不展开如何学习命令行,主要讲一讲如何在 OS X 高效地使用命令行。

iTerm 2 + zsh + oh-my-zsh

Windows 用户想要使用 shell 需要一个终端模拟器,例如 Putty 或者 SecureCRT 等终端模拟器。OS X 默认自带了 Terminal 这款软件,但是想要用好命令行,不得不说一说「iTerm 2 + zsh + oh-my-zsh」这个组合。

  • iTerm 2 是终端模拟器,具备Tab、分屏、全局快捷键等功能。真的是 OS X 平台上少有的免费且强大的软件,堪称业界良心。
  • zsh 是比 bash 更强大的 shell,具备主题、自动补全、通配符、别名等功能,而且更多的功能还可以通过插件方式来扩展。
  • oh-my-zsh 是 zsh 主题和插件管理工具,集成了许多有用的插件,如 git、git-extras、autojump 等。

如果还没有尝试过「iTerm 2 + zsh + oh-my-zsh」组合,请一定花点时间试一试。如果你还有兴趣进一步研究不同的 shell,还可以尝试看看 fish 这款新起的用户友好的 shell。

至于怎么配置和安装「iTerm 2 + zsh + oh-my-zsh」,网上有很多教程,这里就不再赘述。

Package Manager

在使用命令行时,肯定或多或少要用到包管理器,用于安装和管理各式各样的软件包,如同在服务器端的 yum 之于 centos。

  • brew 是 OS X 平台最主要的包管理器,几乎是事实上的官方包管理器。作者 Max Howell 前阵子面试 Google 因为写不出翻转二叉树被拒,断然去了 Apple 写就了 Swift Package Manager。
  • Homebrew cask 是基于 brew 面向应用的管理器,使得 OS X 平台上安装应用不需要打开 dmg 包,拖动图标到 Applications 目录,而是直接通过命令行安装。
  • gem 是 Ruby 包管理器,也有许多优秀的包能够使用,例如 Jeklly 等。而且 brew 本身就是基于 gem 安装。
  • npm 是 Node 包管理器,JavaScript 大行其道之时,自然涌现出很多优秀的由 Node 写成的包,尤其是前端相关的。

Useful Commands and Packages

  • open 用于在命令行打开文件和目录。例如 open ./ 目录直接在 Finder 里跳转到指定目录,open README.md 文件直接在默认的应用打开。
  • pbcopy / pbpaste 通过和管道一起使用能够将剪切板直接和管道的输入和输出相结合,例如 md5 'raw string` | pbcopy
  • z 类似于 autojump,通过记录和分析你的 cd 命令,直接通过目录名称跳转到你想要的目录。例如,之前经常需要跳转到 cd ~/www/renrenche 目录处理文件,那之后键入 z renrenche 就能直接跳转到 renrenche 目录。
  • ack 比 grep 更好用的文本查找工具,在命令行查找个代码啥的最合适不过了。
  • htop 比 top 命令更有好的进程查看器,支持交互操作且分类更加详细。
  • tmux 终端复用软件,能够在登录远程服务器之后复用窗口和进程。
  • httpie 比 curl 更有好的 HTTP 命令行工具。
  • mackup 通过 dropbox 自动备份常用工具的配置文件,例如 .zshrc.vimrc 等。

参考文章