记录下常用的 macOS 命令。

 

open - 打开文件、目录或执行程序

open 其实等同于我们在 GUI 下面执行双击命令

1
2
3
4
5
open /Applications/Dictionary.app #Dictionary 应用 
open ~/Movies # 开当前用户 Movies 目录

touch ~/1.txt # 创建 1.txt
open -e ~/1.txt # 打开 1.txt 并用 TextEdit 编辑

我们也可以直接把文件夹拖入 Terminal 就会在命令行直接出现该文件夹路径。

 

say - 文字转语音

say 是命令行上的 VoiceOver:

1
$ say "Never trust a computer you can't lift."

-f 选项朗读特定文本文件,-o 选项将朗读结果存为音频文件而不是播放:

1
$ say -f mynovel.txt -o myaudiobook.aiff

say 命令也可以用于在脚本中播放警告或提示可以在系统设置(System Preferences)的字典和语音(Dictation & Speech)选项中调整系统的语音选项甚至是语音的语言。

 

screencapture - 截图

screencapture 实际上就是命令行上的 Grab.app。

全屏幕截图,并保存为 image.png,作为新邮件的附件:

1
$ screencapture -C -M image.png 

鼠标选择抓取范围并复制到剪贴板:

1
$ screencapture -c -W

延迟 10 秒截屏,用 preview.app 打开

1
$ screencapture -T 10 -P image.png

鼠标选择抓取范围保存到 image.pdf 文件

1
$ screencapture -s -t pdf image.pdf

更多用法可以参阅 screencapture --help

 

pbcopy/pbpaste - 直接与系统剪贴板交互

在命令行拷贝到系统剪贴板一般是用鼠标选中需要的部分然后 < kbd>⌘</kbd>+c,反之从系统剪贴板粘贴到命令行则是 < kbd>⌘</kbd>+v。但这样效率并不高,macOS 提供了 pbcopypbpaste 工具来进行命令行和系统剪贴板的交互。

利用管道符来传递待拷贝内容到 pbcopy 命令

1
$ ls ~ | pbcopy # 把 ls ~ 的结果拷贝到系统剪贴板 

也可以利用重定向符号来传递内容

1
$ pbcopy < blogpost.txt

我们也可以多个命令组合起来实现一个复杂的操作,如访问 Google 拷贝其徽标

1
$ curl http://www.google.com/doodles\#oodles/archive | grep -A5 'latest-doodle on' | grep 'img src' | sed s/.*'<img src="\/\/'/''/ | sed s/'" alt=".*'/''/ | pbcopy

利用管道语法可以选取要拷贝的内容,我们也可以利用 pbcopy 和 pbpaste 来实现自动化工作流,例如抓取 Github 的 api 到本地的文件

1
$ curl https://api.github.com | pbcopy && pbpaste >> ~/api.json

 

mdfind - 命令行上的 Spotlight

类似于 Spotlight,mdfind 可以实现自定义查找,例如文件内容匹配和元数据查找。

mdfind 还提供更多的搜索选项。例如 -onlyin 选项可以约束搜索范围为一个目录:

1
$ mdfind -onlyin ~/Documents essay

mdfind 的索引数据库在后台自动更新。

 

launchctl - macOS 启动脚本

launchctl 管理 OS X 的启动脚本和定时服务。类似于 linux 的 cron。

显示当前的启动脚本

1
$ launchctl list

开机自启动 apache 服务器:

1
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist

停止正在运行的 apache 服务

1
$ sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist 

停止并取消开机启动的 apache 服务

1
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 

Launchd 脚本存储位置:

1
2
3
4
5
~/Library/LaunchAgents    
/Library/LaunchAgents
/Library/LaunchDaemons
/System/Library/LaunchAgents
/System/Library/LaunchDaemons

启动脚本的格式可以参考 这篇 blog,或苹果开发者中心的 文章。也可以使用 Lingon 应用来完全取代命令行。