常用的 macOS 命令行命令
记录下常用的 macOS 命令。
open - 打开文件、目录或执行程序
open
其实等同于我们在 GUI 下面执行双击命令
1 | open /Applications/Dictionary.app #Dictionary 应用 |
我们也可以直接把文件夹拖入 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 提供了 pbcopy
和 pbpaste
工具来进行命令行和系统剪贴板的交互。
利用管道符来传递待拷贝内容到 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 | ~/Library/LaunchAgents |