8个不可不知的Mac OS X专用命令行工具

OS X的终端下通用不少Unix的工具和脚本。若是从Linux迁移到OS X会发现不少熟悉的命令和脚本工具,其实并无任何区别。html

可是OS X也提供了不少其余系统所没有的特别的命令行工具。咱们推荐8个这类的工具,但愿有助于提升在Mac的命令行环境下的效率。node

1. open

open命令用于打开文件、目录或执行程序。就等同于在命令行模式下,重复图形界面“双击”的动做。例如这个命令与在Finder中双击Safari是同样的:git

$ open /Applications/Safari.app/

若是open一个文件,则会使用关联的程序打开之。例如open screenshot.png会在Preview中查看图片。github

可使用-a选项要求自行选择打开的程序,或使用-e强制在TextEdit中编辑此文件。数据库

open一个目录会在Finder窗口中打开此目录。一个颇有用的技巧是open .打开当前目录。apache

Finder和终端的交互是双向的——把文件从Finder中拖入终端,就等同于把文件的完整路径粘贴到命令行中。编程

2. pbcopy 和 pbpaste

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

$ ls ~ | pbcopy

能够将主目录的文件列表复制到剪贴板。服务器

也能够把任意文件的内容读入剪贴板:app

$ pbcopy < blogpost.txt

作点更疯狂的尝试:获取最新Google记念徽标(doodle)的URL并复制到剪贴板:

$ 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工具能够简单的抓取命令的输出,而没必要向上滚动翻阅终端窗口。能够用于和他人分享命令行的标准和错误输出。pbcopypbpaste也能够用于自动化或加速执行一些事情。例如把一些邮件的主题存为任务列表,就能够先从Mail.app中复制主题,再运行:

$ pbpaste >> tasklist.txt

3. mdfind

许多Linux用户都发现Linux下查找文件的方法在OS X上很差用。固然经典的Unix find命令老是能够,但既然OS X有杀手级搜索工具Spotlight,为何不在命令行上也使用一下呢?

这就是mdfind命令了。Spotlight能作的查找,mdfind也能作。包括搜索文件的内容和元数据(metadata)。

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

$ mdfind -onlyin ~/Documents essay

mdfind的索引数据库在后台自动更新,不过你也可使用mdutil工具诊断数据库的问题,诊断mdfind的问题也等同于诊断Spotlight。若是Spotlight的工做不正确,mdutil -E命令能够强制重建索引数据库。也能够用mdutil -i完全关闭文件索引。

4. screencapture

screencapture命令能够截图。和Grab.appcmd + shift + 3cmd + shift + 4热键类似,但更加的灵活。

抓取包含鼠标光标的全屏幕,并以image.png插入到新邮件的附件中:

$ screencapture -C -M image.png

用鼠标选择抓取窗口(及阴影)并复制到剪贴板:

$ screencapture -c -W

延时10秒后抓屏,并在Preview中打开之:

$ screencapture -T 10 -P image.png

用鼠标截取一个矩形区域,抓取后存为pdf文件:

$ screencapture -s -t pdf image.pdf

更多用法请参阅screencapture --help

5. launchctl

launchctl管理OS X的启动脚本,控制启动计算机时须要开启的服务。也能够设置定时执行特定任务的脚本,就像Linux cron同样。

例如,开机时自动启动Apache服务器:

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

运行launchctl list显示当前的启动脚本。sudo launchctl unload [path/to/script]中止正在运行的启动脚本,再加上-w选项便可去除开机启动。用这个方法能够一次去除Adobe或Microsoft Office所附带的全部“自动更新”后台程序。

Launchd脚本存储在如下位置:

~/Library/LaunchAgents    
/Library/LaunchAgents          
/Library/LaunchDaemons
/System/Library/LaunchAgents
/System/Library/LaunchDaemons

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

6. say

say是一个文本转语音(TTS)的有趣的工具,引擎和OS X使用的同样也是VoiceOver。若是不加其余选项,则会简单的语音朗读你给定的字符串:

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

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

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

say命令能够用于在脚本中播放警告或提示。例如你能够设置Automator或Hazel脚本处理文件,并在任务完成时用say命令语音提示。

最好玩(不过也负罪感十足)的用法是:经过SSH链接到朋友或同事的计算机,而后用say命令给他们一个大大大惊喜……

能够在系统设置(System Preferences)的字典和语音(Dictation & Speech)选项中调整系统的语音选项甚至是语音的语言。

7. diskutil

diskutil是OS X磁盘工具应用的命令行版。既能够完成图形界面应用的全部任务,也能够作一些全盘填0、全盘填随机数等额外的任务。先使用diskutil list查看全部磁盘的列表和所在路径,而后对特定的磁盘执行命令。

警告:不正确使用diskutil可能意外的破坏磁盘数据。请当心。

8. brew

Homebrew程序提供的brew,严格来说不是一个OS X的原生命令,但任何一个OS X的专业用户都不会错过它。“OS X缺乏的包管理器”这个评价是恰如其分的。若是你曾经在Linux上使用过apt-get(或其余包管理器——译者注),你就会发现Homebrew基本上是同样的。

使用brew能够简单的获取数千种开源工具和函数库。例如brew install imagemagick就能够安装ImageMagick(几乎能够处理任何图像问题,转换任何格式的图像工具),brew install node能够安装Node.js(当前大热的服务器端JavaScript编程工具)。

也能够经过Homebrew作有趣的事情:brew install archey会安装Archey(在启动命令行时显示苹果LOGO和计算机硬件参数的小工具)。

请输入图片描述

Homebrew能安装的工具数量庞大,而且一直保持更新。Homebrew最棒的一点是:全部的文件都被约束在/usr/local/一个位置之下。也就是说能够经过Homebrew安装新版软件的同时,保持系统内置的依赖库或其余软件不变。同时若是想完全删除Homebrew,也变得很是简单。

(注:删除Homebrew最好仍是不要直接删除/usr/local/。应当用这个卸载脚本。)

最后,这里还有一篇OS X全部命令的完整列表


8个不可不知的Mac OS X专用命令行工具
原文:Eight Terminal Utilities Every OS X Command Line User Should Know
编译:SegmentFault 责任:沙渺

相关文章
相关标签/搜索