Mac 技巧指南

这里主要整理一些一直以来使用 Mac 的技巧以及构建高效开发学习环境的指南。主要是按照个人的使用习惯,所以所用的工具和软件都比较偏写代码一些。


更新记录

  • 2016.09.10: 更新 macOS Sierra 内容
  • 2016.02.18: 初稿

更新 Sierra

  • 会出现 /usr/local 不可写的问题,用 sudo chown -R $(whoami) /usr/local 命令解决

实用命令

比较常见的 cat, ls 这类就不介绍了,主要说点需要操作的东西。

less

这个命令更适合用来查看长文本文件,因为它会允许你查找文本。语法为 less 后接文件路径,和 cat 一样。用 less 命令打开的文件其实和你查看命令使用指南的时候使用的是一个查看器,所以操作是相同的,同样可以使用 ▲(上箭头)或 ▼(下箭头)来上下移动文本,使用空格键来翻页,输入 / 和关键字来按照关键字搜索,按 Q 来退出使用指南页面。除此之外,按 V 键来使用 vi 文本编辑器。

which

这个命令会定位某个命令的文件路径。换言之,它会告诉你你执行某个具体命令的时候,在使用哪个文件。语法为 which 后接某个命令。

file

这个命令会尝试根据文件的内容输出文件类型。如果一个文件缺失了扩展名,那么这个命令可能会非常有用。语法为 file 后接文件路径。

caffeinate

caffeinate能阻止Mac进入睡眠状态,而且屏幕保护也不会激活。我们最好使用-t为命令加入具体的时间。比如下面的命令可以使Mac一小时内不进入睡眠状态。

caffeinate -t 3600

purge

purge命令可以清除内存和硬盘的缓存,与重启Mac的效果差不多。purge命令可以让不活跃的系统内存转变为可以使用的内存。你只需在终端中输入下面的命令即可。

purge

pbcopy 和 pbpaste

这两个工具可以打通命令行和剪贴板。当然用鼠标操作复制粘贴也可以——但这两个工具的真正威力,发挥在将其用作Unix工具的时候。意思就是说:可以将这两个工具用作管道、IO重定向以及和其他命令的整合。例如:

$ ls ~ | pbcopy

可以将主目录的文件列表复制到剪贴板。

也可以把任意文件的内容读入剪贴板:

$ pbcopy < blogpost.txt

使用管道语法配合pbcopy工具可以简单的抓取命令的输出,而不必向上滚动翻阅终端窗口。可以用于和他人分享命令行的标准和错误输出。pbcopy和pbpaste也可以用于自动化或加速执行一些事情。例如把一些邮件的主题存为任务列表,就可以先从Mail.app中复制主题,再运行:

$ pbpaste >> tasklist.txt

技巧篇

遇到一些疑难杂症,可以试试看。

批量调整图片

重新定义单个图片尺寸长和宽(忽略比例):sips -z 768 1024 xxx.png

768代表高度,1024代表长度,imge,png是你想要批量修改的图片名称

重新定义单个图片尺寸(保留比例):sips -Z 500 xxx.png

细心看,可以发现小写的“z”,变成了大写,要想保留图片原始比例就得这样做,比如你有一张宽度为900的图片,想规定长和宽最低像素值为500并保留比例,那么就可以执行以上命令。

在一个目录里批量修改同一后缀格式的图片:sips -Z(-z)500 *.png

用来给博客文章配图瘦身非常有效,实测可以节约大约 50% 的空间

切换 shell

nano 编辑器中

  • ctrl 表示 ^
  • F3保存,F2退出

具体步骤

  1. sudo nano /etc/shells
  2. /usr/local/bin/fish 添加进去(这里以添加 fish shell 为例子)
  3. chsh -s /usr/local/bin/fish (平时切换只需要用这句即可)

批量删除指定类型的文件

可以使用这条命令

find . -name ".Ulysses-Group.plist" -exec rm -Rf {} \;

清除不必要的服务

launchctl list 查看服务列表
launchctl remove xxxx 删除xxxxx服务的自启动

关闭 Rootless

Rootless 是 OSX 10.11 中为了增强安全性而增加的特性,不过对于开发者来说,不能访问根目录下的某些文件夹实在是很恼人的事情。下面是关闭的方法:

  • 开机按住 Command+R,进入恢复模式,打开 terminal,键入:
  • csrutil disable
  • 回车,重新启动即可。
  • 要恢复 rootless ,只需将 disable 改为 enable

重建 Mail 索引

当邮箱出现问题时,您可能会看到提醒信息说“邮件”需要通过重新索引邮件来修复邮箱。在其他时候,您可能想要自己重新索引邮件,例如,使用“主题”、“收件人”或“发件人”搜索邮箱时未返回正确结果时。

  • 如果“邮件”已打开,请退出它。
  • 在“User/资源库/Mail/V3/MailData”中,删除任何以“Envelope Index”开头的文件,如 Envelope Index 或 Envelope Index-shm。
  • 默认情况下,您的“资源库”个人文件夹处于隐藏状态。若要显示它,请选取 Finder >“前往文件夹”,然后输入“~/资源库”。
  • 打开“邮件”。
  • “邮件”将创建新 Envelope Index 文件。此过程可能需要几分钟,取决于“邮件”要重新索引的邮件数量。

清除 PRAM

(只适用于英特尔的苹果电脑)

这个方法不是根本的解决方法,但是可以除去一些不必要的开机设置。因而也节省了时间。方法是:重启你的电脑,同时按下 command + option + p + r 直到听到 3 到 4 声启动铃响之后松手。

清除PMU

(iMac不适用)

对于Macbook, Macbook Pro用户,方法是:

  1. 确保Macbook关闭.
  2. 去掉电源适配器和电池.
  3. 按下电源开关并保持5 秒钟,放开.
  4. 接上电源适配器和电池.
  5. 打开电源开关.

显示/隐藏 隐藏文件

使用下面的命令即可分别测试

defaults write com.apple.finder AppleShowAllFiles -bool true
defaults write com.apple.finder AppleShowAllFiles -bool false

还原 F1-F12

默认情况下,F1-F12 都是特殊功能,比如调节屏幕亮度。而当你需要键入 F1-F12 时(比如在使用 IntelliJ IDEA 的快捷键时),需要同时按住 Fn。这对于开发人员来说是非常不方便的。

把 F1-F12 改成标准功能键:选择 System Preferences > Keyboard,在Keyboard标签页中选中Use all F1, F2, etc. keys as standard function keys

利用语音功能

OS X 自带了语音功能,可以用say命令让 Mac 开口说话:

say hello

可以和&&或者;配合使用来提示你某任务已经完成:

brew update && brew upgrade && brew cleanup ; say mission complete

通过命令行来听取发音还是有点麻烦。其实我们几乎可以在任何地方选中单词,然后使用快捷键 ⌥+ESC 发音。仅仅需要这样设置一下:选择 System Preferences > Dictation & Speech,在Text to Speech标签页中选中Speak selected text when the key is pressed

在 Finder 窗口显示更多信息

打开任意 Finder 窗口。前往并打开「显示」-「显示路径栏」、「显示」-「显示状态栏」和「显示」-「显示预览」三项。

路径栏通常是从磁盘分区开始的,没改过名字的就叫做「Macintosh HD」,接下来是「用户」,可是路径信息的这两个项目几乎没什么作用,我们需要看的一般都是从个人账户开始后面的路径。下面我们就来尝试删除这两个路径选项:

打开终端,输入以下命令:

defaults write com.apple.finder PathBarRootAtHome -bool TRUE;killall Finder

回车后 Finder 会重启一下,改变即可见。

恢复默认:打开终端,输入如下代码并回车就可以恢复原样:

defaults delete com.apple.finder PathBarRootAtHome;killall Finder

让文件扩展名始终显示

当你看到一个文件但是不知道它的格式的时候,会不会困惑?每次都要去简介页面查看文件是 .jpg 还是 .png 是不是很繁琐?哦,还有 CMD-i 快捷键?但是这些都比默认就显示来得慢。

打开 Finder 偏好设置,选中「高级」标签,然后在「始终显示文件扩展名」前面打勾即可。

使 Finder 默认显示自定义目录

「我的所有文件」是一个非常实用的功能。但是这对于那些需要按照目录来显示文件的用户来说,每次都需要进行一次额外的操作才能打开用户目录或者其他文件夹。让我们取消默认显示「我的所有文件」功能:

打开 Finder 偏好设置,选中「通用」标签,然后在「开启新 Finder 窗口时打开」项下选择你喜欢的目录即可。

在侧边栏显示用户目录

在 Mac 系统中,绝大多数用户文件,例如音乐、照片等都存储在用户目录下,所以在 Finder 侧边栏一直显示用户目录的内容是一个好主意。设置起来同样很简单:

打开 Finder 偏好设置,选中「边栏」标签,然后记得勾选你的用户名。

在 Finder 标题栏显示完整路径

众所周知 Finder 是不显示路径的,你进入某个文件夹只会显示当前文件夹的名字而已。虽然你可以通过上文中的方法将路径栏调出来,但是这样也增加了 Finder 窗口的高度,对小屏幕机器尤为不利。那么,让我们更进一步,将 Finder 的完整路径显示在标题栏如何?

打开终端,输入以下命令并回车:

defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES

然后把 Finder 窗口关了再打开,你会发现路径栏变样子了:

其实呢,对着路径最左边的小图标点右键,就能快速访问路径中的任意一层:

恢复

defaults write com.apple.finder _FXShowPosixPathInTitle -bool NO

始终显示用户「资料库」

用户资料库是用来储存配置文件、缓存和用户数据的目录(路径:~/Library/),由于 OS X 设置了系统文件保护,资料库在 Finder 中被设置为默认不显示。然而,通过终端执行一个简单的命令,就可以让它始终显示了。

打开终端,运行以下命令:

chflags nohidden ~/Library/

回车即可。

显示文件(夹)的信息

Finder 可以告诉你一些关于文件和文件夹的非常实用的信息,比如选中的文件夹内有多少个文件、照片的分辨率(这个笔者最喜欢)等等。对于笔者这种重度截图党来说,这几乎是一个「必选」的设置。

在桌面点击鼠标右键,选择「查看显示选项」,选中「显示项目简介」项,现在看看,你的文件、文件夹有什么变化?

应用软件

付费软件:

  • 1Password:密码管理;
  • BetterZip2:解压缩;
  • Parallels Desktop:虚拟机
  • CleanMyMac 3:垃圾清理

免费软件:

  • Alfred:提高效率的神器
  • MPlayerX:视频播放器,播放各种格式视频
  • iTerm2:命令行终端
  • SiteSucker:网站备份工具
  • LICEcap:截取GIF动态图
  • ImageAlpha(Pngyu):png图片压缩

Java

现在 OS X 都不会自带 JDK 了,所以进行 Java 开发的话,需要下载 JDK。在 brew-cask 之前,我们需要从 https://developer.apple.com/downloads/ 或者 Oracle 网站上下载。还有更麻烦的--卸载 JDK 和升级 JDK。

JDK 安装文件是 pkg 格式,卸载和.app不一样,且没有自动卸载方式。

而 brew-cask 提供了自动安装和卸载功能,能够自动从官网上下载并安装 JDK 8。

brew cask install java

如果你需要安装 JDK 7 或者 JDK 6,可以使用homebrew-cask-versions

brew tap caskroom/versions
brew cask install java6

在 OS X 上,你可以同时安装多个版本的 JDK。你可以通过命令/usr/libexec/java_home -V来查看安装了哪几个 JDK。

那问题来了,当你运行java或者 Java 程序时使用的是哪个 JDK 呢?在 OS X 下,java也就是/usr/bin/java在默认情况下指向的是已经安装的最新版本。但是你可以设置环境变量JAVA_HOME来更改其指向:

$ java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
$ JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)

其中JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home可以用JAVA_HOME=`/usr/libexec/java_home -v 1.6` 这种更加通用的方式代替。

Homebrew

Mac OS X是基于Unix的操作系统,可以安装大部分为Unix/Linux开发的软件。然而,如果只是以使用为目的,对每个软件都进行手工编译不是很方便,也不利于管理已安装的软件,于是出现了类似于Linux中APT、Yum等类似的软件包管理系统,其中最著名的有MacPorts、Fink、Homebrew等。

Homebrew 尽可能地利用系统自带的各种库,使得软件包的编译时间大为缩短;同时由于几乎不会造成冗余,软件包的管理也清晰、灵活了许多。Homebrew的另一个特点是使用Ruby定义软件包安装配置(叫做formula),定制非常简单。

Homebrew的安装非常简单,在终端程序中输入以下命令即可。

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

由于Homebrew的安装地址可能变化,请到官方网站查看最新的安装方法。

Homebrew的可执行命令是brew,其基本使用方法如下(以wget为例)。

  • 查找软件包 brew search wget
  • 安装软件包 brew install wget
  • 列出已安装的软件包 brew list
  • 删除软件包 brew remove wget
  • 查看软件包信息 brew info wget
  • 列出软件包的依赖关系 brew deps wget
  • 更新 brew update
  • 列出过时的软件包(已安装但不是最新版本)brew outdated
  • 更新过时的软件包(全部或指定)brew upgradebrew upgrade wget

Homebrew Cask

brew-cask 允许你使用命令行安装 OS X 应用。比如你可以这样安装 Chrome:brew cask install google-chrome。还有 Evernote、Skype、Sublime Text、VirtualBox 等都可以用 brew-cask 安装。

brew-cask 是社区驱动的,如果你发现 brew-cask 上的应用不是最新版本,或者缺少你某个应用,你可以自己提交 pull request。

安装:

brew install caskroom/cask/brew-cask

应用也可以通过 App Store 安装,而且有些应用只能通过 App Store 安装,比如 Xcode 等一些 Apple 的应用。App Store 没有对应的命令行工具,还需要 Apple ID。倒是更新起来很方便。

几乎所有常用的应用都可以通过 brew-cask 安装,所以你要安装新的应用时,建议用 brew-cask 安装。如果你不知道应用在 brew-cask 中的 ID,可以先用brew cask search命令搜索。

参考资料

捧个钱场?