OS X的終端下通用不少Unix的工具和腳本。若是從Linux遷移到OS X會發現不少熟悉的命令和腳本工具,其實並無任何區別。html
可是OS X也提供了不少其餘系統所沒有的特別的命令行工具。咱們推薦8個這類的工具,但願有助於提升在Mac的命令行環境下的效率。node
open
命令用於打開文件、目錄或執行程序。就等同於在命令行模式下,重複圖形界面「雙擊」的動做。例如這個命令與在Finder中雙擊Safari是同樣的:git
$ open /Applications/Safari.app/
若是open
一個文件,則會使用關聯的程序打開之。例如open screenshot.png
會在Preview中查看圖片。github
可使用-a
選項要求自行選擇打開的程序,或使用-e
強制在TextEdit中編輯此文件。數據庫
open
一個目錄會在Finder窗口中打開此目錄。一個頗有用的技巧是open .
打開當前目錄。apache
Finder和終端的交互是雙向的——把文件從Finder中拖入終端,就等同於把文件的完整路徑粘貼到命令行中。編程
這兩個工具能夠打通命令行和剪貼板。固然用鼠標操做複製粘貼也能夠——但這兩個工具的真正威力,發揮在將其用做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
工具能夠簡單的抓取命令的輸出,而沒必要向上滾動翻閱終端窗口。能夠用於和他人分享命令行的標準和錯誤輸出。pbcopy
和pbpaste
也能夠用於自動化或加速執行一些事情。例如把一些郵件的主題存爲任務列表,就能夠先從Mail.app中複製主題,再運行:
$ pbpaste >> tasklist.txt
許多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
完全關閉文件索引。
screencapture
命令能夠截圖。和Grab.app
與cmd + shift + 3
或cmd + 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
。
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應用來徹底取代命令行。
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)選項中調整系統的語音選項甚至是語音的語言。
diskutil
是OS X磁盤工具應用的命令行版。既能夠完成圖形界面應用的全部任務,也能夠作一些全盤填0、全盤填隨機數等額外的任務。先使用diskutil list
查看全部磁盤的列表和所在路徑,而後對特定的磁盤執行命令。
警告:不正確使用diskutil
可能意外的破壞磁盤數據。請當心。
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 責任:沙渺