OS X 終端對外開放了許多很強大的UNIX實用工具和指令碼。如果你是從Linux轉過來的,你會發現許多熟悉的命令正是按照你想的那樣執行。但是高階使用者通常不知道OS X自帶了許多在其他作業系統中沒有的基於文字的實用工具。
更新:感謝讀著的反饋,我已經在後續的文章裡寫了更多的命令介紹:(800多個)
1.open
open
開啟檔案,目錄和應用。很興奮,對不對?但是作為命令列中的雙擊,它確實隨手可用。例如,輸入如下:
1 2 |
; html-script: false ] $ open /Applications/Safari.app/ |
…這樣就開啟Safari了,就好像你在Finder中雙擊了它的圖示。1
如果你對一個檔案使用open
,它將嘗試載入該檔案以及與其相關的圖形介面應用。對一個圖片使用open screenshot.png
會在預覽中開啟該圖片。你可以設定-a
標識來選擇用哪個應用開啟,或者-e
在TextEdit中開啟檔案直接編輯。
對目錄使用open
會在直接將你帶到該目錄所在的Finder視窗。使用open
進去到當前的目錄非常地有用。
請記住Finder和終端之間的一體化是雙向的—如果你把Finder中的檔案拖拽到終端中,在命令列中會貼上出檔案的完整路徑。
2.pbcopy 和 pbpaste
這兩個命令能讓你從命令列中複製和貼上文字。當然了,你也可以使用滑鼠—但是pbcopy
和pbpaste
真正的力量在於他們是UNIX命令,也就是說這兩個命令得益於管道、重定向,並能在指令碼中與其他命令一起使用。輸入如下:
1 2 |
; html-script: false ] $ ls ~ | pbcopy |
…這樣會把home目錄中的所有檔案複製到剪下板中。你可以很容易地得到檔案的內容:
1 2 |
; html-script: false ] $ pbcopy < blogpost.txt |
…或者做一些更瘋狂的事。這個hacked-up指令碼會抓取到最新的谷歌塗鴉連結,並把它複製到剪下板中。
1 2 |
; html-script: false ] $ 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
還可以用於自動或加速某些型別的任務。例如,如果你想要儲存郵件主題到任務列表中,那麼你可以從郵件應用中複製主題並執行:
1 2 |
; html-script: false ] $ pbpaste >> tasklist.txt |
3.mdfind
許多Linux高階使用者曾嘗試使用locate
來搜尋Mac上的檔案,然後很快發現它不起作用。還有個古老的UNIX命令find,但是OS X帶有自己的殺手級搜尋工具:Spotlight。那麼為什麼不在命令列中利用它的能力呢?
那正是mdfind所做的。任何Spotlight能找到的,mdfind
也能找到。包括搜尋檔案內容和後設資料。
mdfind
帶來了一些便利,這使得它比那些老的命令更傑出。例如,使用-onlyin
標識可以限制只搜尋單個目錄:
1 2 |
; html-script: false ] $ mdfind -onlyin ~/Documents essay |
mdfind
資料庫應該在後臺更新,但是你也可以使用mdutil
(還有Spotlight)分析解決問題。如果Spotlight沒有正常工作,mdutil -E
將刪除索引,並重頭開始建立。你也可以使用mdutil -i
完全關閉索引。
4.screencapture
使用screencapture
可以獲得多種不同型別的截圖。它類似於Grab.app和快捷鍵cmd
+shift
+3
和cmd
+shift
+4
,可是它更加的靈活。下面是幾種你可以使用screencapture
的不同方式:
捕獲螢幕內容,包括游標,並把得到的圖片(命名為’image.png’)新增到一個新的郵件資訊中:
1 2 |
; html-script: false ] $ screencapture -C -M image.png |
用滑鼠選擇一個視窗,然後捕獲它的內容不帶視窗的影子,並把影像複製到剪下板上:
1 2 |
; html-script: false ] $ screencapture -c -W |
延遲10秒後捕獲螢幕,並在預覽中開啟新的影像:
1 2 |
; html-script: false ] $ screencapture -T 10 -P image.png |
用滑鼠選擇螢幕的一部分,捕獲它的內容,然後儲存為pdf:
1 2 |
; html-script: false ] $ screencapture -s -t pdf image.pdf |
要檢視更多選項,輸入screencapture —help
5.launchctl
launchctl
讓你與OS X初始化指令碼launchd
互動,用啟動守護程式和啟動代理,你可以控制開機時的啟動服務。你甚至可以設定指令碼定期執行或者每隔一段時間後在後臺執行,類似於Linux中的計劃任務。
例如,如果你想Apache伺服器在你開啟電腦時自動啟動,只要簡單的輸入如下:
1 2 3 |
; html-script: false ] $ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist |
執行launchctl list
會展示出當前載入的啟動指令碼。sudo launch unload [path/to/script]
將會停止並解除安裝正在執行的指令碼,新增-w
標識將從啟動序列中永久刪除這些指令碼。我想要在Adobe軟體和Microsoft軟體建立的所有自動升級“助手”上執行一次。
Launchd指令碼儲存在下面的位置:
1 2 3 4 5 6 |
; html-script: false ] ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons /System/Library/LaunchAgents /System/Library/LaunchDaemons |
如果要看看什麼寫入到了啟動代理或守護程式,這有一個很不錯的部落格,是Paul Annesley寫的,能夠帶你瞭解檔案格式。如果你想要學習如何寫你自己的launchd
指令碼,蘋果在他們的開發者網站上提供了幫助文件。如果你想完全避免使用命令列,還有一個非常棒的Lingon軟體。
6.say
這是一件非常有趣的事:say
把文字轉換成語音,它使用OS X給VoiceOver使用的TTS引擎。沒有任何選項,say
僅僅是地讀出你輸入的內容:2
1 2 |
; html-script: false ] $ say "Never trust a computer you can't lift." |
你也可以使用say
用-f
標識讀出文字的內容,你還可以用-o
標識儲存產生的音訊剪輯:
1 2 |
; html-script: false ] $ say -f mynovel.txt -o myaudiobook.aiff |
say
命令可以用於代替控制檯日誌和警告聲音。例如,你可以設定Automator指令碼或Hazel指令碼進行批檔案處理,然後用say
提示任務已完成。
但是say
最有意思的應用相當地邪惡:如果你用ssh
來訪問朋友或同事的Mac,你可以默默地登入他們的機器並通過命令列干擾他們。給他們一個Siri的驚喜。
通過改變系統偏好設定中的聽寫與語音的預設設定,你可以改變say
的聲音和語言!
7.diskutil
diskutil
是OS X上的磁碟工具的命令列介面。它所作的事情和磁碟工具的一樣,但是它還有一些額外的功能—例如用零或隨機數填充一個磁碟。只要輸入diskutil list
就可以檢視磁碟的路徑名,還有連線在你電腦上的移動裝置,然後用命令指定你想要操作的卷。一定要小心:diskutil
如果使用不正確的話會永久抹掉磁碟上的資料。
8.brew
當然了—這不是技術上一個原本的命令。但是作為OS X使用者應該會使用HomeBrew。網上把它叫作“The missing package manager for OS X”,確實如此。如果你曾在Linux中使用過apt-get
,那麼使用Homebrew時你會感到很容易上手。3
brew
使你能很容易接觸到上千個開源社群免費的實用工具和外掛。例如,brew install imagemagick
將會幫你配置好ImageMagick,一個非常強大的實用工具,從播放gif動畫到幾十種不同型別圖片之間的轉換它都能完成。brew install node
將為你安裝NodeJS,它是時下非常流行的開發和執行伺服器端JavaScript應用的工具。
你也可以這樣使用Homebrew:brew install archey
將會為你安裝Archey,一個很酷且輕量級的指令碼,它可以在一個彩色的蘋果logo旁邊顯示出你Mac的規格。
Homebrew可供選擇的範圍很多—因為它很容易建立慣用語,新包可以一直被新增進來。
但是關於Homebrew最棒的是哪一部分呢?它把所有檔案放在一個單獨的目錄:/usr/local/
。也就是說你可以安裝最新版本的系統軟體,例如python
和mysql
,而且不會影響已內建的這些軟體。如果你想要擺脫Homebrew,刪除也很容易。
編輯—5月15日:一些朋友建議我不應該盲目地刪除/usr/local
的內容。要謹慎一些。如果要安全地移除Homebrew,可以使用uninstall script。
為了更好地使用Terminal.app,這裡有一份所有適用於OS X 10.9 Mavericks的控制檯命令A-Z列表。