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 責任:沙渺

相關文章
相關標籤/搜索