原文出處: http://www.cnblogs.com/hxvicky/p/4554129.html
mac上的命令行工具
原文:《Eight Terminal Utilities Every OS X Command Line User Should Know》
OS X 的Terminal 終端開(kāi)辟了強(qiáng)大的UNIX實(shí)用工具和腳本的世界嘉冒。如果你是從Linux轉(zhuǎn)移過(guò)來(lái)的用戶,你會(huì)在OS X 終端上發(fā)現(xiàn)很多熟悉的命令。但是即使是高級(jí)用戶也經(jīng)常會(huì)忽略掉其實(shí)OS X終端也會(huì)有一系列在其他的操作系統(tǒng)中沒(méi)有的終端工具叫搁。當(dāng)你學(xué)習(xí)了以下這些只適用于Mac的課程會(huì)讓你更高效的使用Mac命令行同時(shí)消除UNIX系統(tǒng)和你的Mac系統(tǒng)之間的差別佩研。
1. open
open:打開(kāi)文件,目錄和程序。這是令人興奮的燥翅,對(duì)嗎关噪?其實(shí)它真正的作用是用于命令行模擬鼠標(biāo)雙擊操作迷帜。假如當(dāng)你輸入:
- $ open /Applications/Safari.app/
輸入該命令時(shí)會(huì)像你在Finder中雙擊Safari圖標(biāo)一樣啟動(dòng)Safari瀏覽器。
如果你用open命令指向一個(gè)文件色洞,它會(huì)啟動(dòng)相關(guān)的GUI應(yīng)用程序加載該文件戏锹。open screenshot.png命令會(huì)在預(yù)覽中打開(kāi)該圖片。當(dāng)然你可以在命令中加入 -a 標(biāo)識(shí)來(lái)選擇你想要用來(lái)加載該文件的應(yīng)用程序火诸,或者使用 -e 標(biāo)識(shí)直接在文本編輯器中打開(kāi)編輯锦针。
對(duì)于一個(gè)目錄運(yùn)行open命令會(huì)直接在Finder窗口中打開(kāi)該目錄。該方法特別適用于在命令行中運(yùn)行open . 來(lái)打開(kāi)當(dāng)前目錄。
請(qǐng)記住Finder和Terminal終端之間的集成是相互的奈搜,當(dāng)你把Finder中的一個(gè)文件拖入到Terminal終端窗口時(shí)悉盆,它的絕對(duì)路徑就會(huì)被粘貼在命令行中。
2. pbcopy 和 pbpaste
這兩個(gè)命令可以讓你復(fù)制和粘貼命令行中的文本內(nèi)容馋吗。當(dāng)然你可以直接使用鼠標(biāo)完成上述操作焕盟。但是pbcopy和pbpaste真正的魔力是它們是UNIX命令,這使它們可以受益于管道(piping)宏粤,重定向并且在腳本中可以與其他命令一起使用脚翘。例如當(dāng)輸入:
- $ ls ~ | pbcopy
輸入該命令時(shí)會(huì)將你的home目錄中的文件列表拷貝到OS X 系統(tǒng)的剪切板中。你可以通過(guò)如下命令輕易的獲取文檔的內(nèi)容:
- $ pbcopy < blogpost.txt
或者過(guò)一些更瘋狂的事绍哎。下面這條腳本會(huì)抓取最新的Google doodle 的鏈接并且將它拷貝到你的剪切板中来农。
- $ 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是一種很好的用來(lái)抓取命令行輸出內(nèi)容的方式,它無(wú)需你翻頁(yè)和細(xì)心的看每一行內(nèi)容崇堰。該方法可以很容易地共享診斷信息沃于。pbcopy和pbpaste也可以用來(lái)自動(dòng)或者快速執(zhí)行類似的任務(wù)。例如海诲,當(dāng)你想要將電子郵件的主題行保存到一個(gè)任務(wù)列表繁莹,你可以先在郵件程序中拷貝這些內(nèi)容然后再運(yùn)行:
- $ pbpaste >> tasklist.txt
3. mdfind
許多重度Linux用戶會(huì)在Mac上使用locate命令搜索文件,但是他們很快發(fā)現(xiàn)這個(gè)方法不可行特幔。在UNIX中有一個(gè)古老的find命令咨演,但是在OS X中它有它自己的殺手級(jí)搜索工具:Spotlight。所以我們?yōu)樯恫辉诿钚兄薪栌盟牧α磕兀?/p>
這就是實(shí)際當(dāng)中mdfind所做的事敬辣。任何Spotlight能搜索到的內(nèi)容雪标,mdfind同樣也能搜索到。這當(dāng)然也包括搜索文件內(nèi)部及元數(shù)據(jù)溉跃。
mdfind因?yàn)樗囊恍┍憬菪允顾谒倪@個(gè)大哥哥中脫穎而出村刨。例如,-onlyin 標(biāo)識(shí)可以將搜索限制在一個(gè)指定的目錄中:
- $ mdfind -onlyin ~/Documents essay
mdfind數(shù)據(jù)庫(kù)需要在后臺(tái)經(jīng)常更新數(shù)據(jù)撰茎,但你可以使用mdutil命令來(lái)排除故障(同樣適用于Spotlight)嵌牺。如果Spolight沒(méi)有正確的工作,使用mdutil -E將會(huì)清楚數(shù)據(jù)庫(kù)中的索引然后通過(guò)抓取重建索引龄糊。你同樣也可以通過(guò)運(yùn)行mdutil -i off 來(lái)完全完畢索引逆粹。
4. screencapture
screencapture 可以讓你拍攝多種屏幕快照。它類似于抓圖程序或者cmd + shift +3 和 cmd + shift + 4 的截屏快捷鍵炫惩,但是它更加靈活僻弹。以下是幾種你可以使用screencapture的方式:
抓取屏幕中的所有內(nèi)容,包括光標(biāo)他嚷,并且將該截圖(以’image.png’命名)附再一封新的電子郵件中:
- $ screencapture -C -M image.png
通過(guò)你的鼠標(biāo)選擇一個(gè)窗口蹋绽,然后抓取該窗口中的內(nèi)容(不包括該窗口的陰影效果)將該截圖復(fù)制到剪切板中:
- $ screencapture -c -W
延時(shí)10秒截屏并且在預(yù)覽中打開(kāi)該截圖:
- $ screencapture -T 10 -P image.png
通過(guò)鼠標(biāo)選定一個(gè)區(qū)域截圖芭毙,同時(shí)將該內(nèi)容保存為pdf文件:
- $ screencapture -s -t pdf image.pdf
你可以通過(guò)輸入 screencapture —help 來(lái)查看更多選項(xiàng)。
5. launchctl
launchctl 可以讓你與OS X 的初始化腳本系統(tǒng)launchd進(jìn)行交互卸耘。通過(guò)啟動(dòng)守護(hù)進(jìn)程與啟動(dòng)代理退敦,你可以在啟動(dòng)你的電腦時(shí)控制你的啟動(dòng)服務(wù)項(xiàng)。你甚至可以通過(guò)編寫腳本定期或再指定的時(shí)間間隔內(nèi)執(zhí)行操作蚣抗,類似于Linux中的corn工具侈百。
例如,當(dāng)你想要在你啟動(dòng)你的Mac時(shí)自動(dòng)啟動(dòng)Apache服務(wù)器時(shí)翰铡,你可以輸入:
- $ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
通過(guò)運(yùn)行l(wèi)aunchctl list會(huì)列出所有當(dāng)前狀態(tài)下加載了的啟動(dòng)腳本钝域。sudo launchctl unload [path/to/script] 命令會(huì)停止并且卸載運(yùn)行中的腳本,該命令增加 -w 標(biāo)識(shí)時(shí)會(huì)將該腳本永久的從你的啟動(dòng)隊(duì)列中清除两蟀。我喜歡用這個(gè)命令來(lái)終止運(yùn)行所有類似于Adobe程序及微軟Office的自動(dòng)更新“助手”网梢。
啟動(dòng)腳本儲(chǔ)存在以下幾個(gè)位置中:
~/Library/LaunchAgents
/Library/LaunchAgents
/Library/LaunchDaemons
/System/Library/LaunchAgents
/System/Library/LaunchDaemons
對(duì)于想要了解啟動(dòng)進(jìn)程與啟動(dòng)代理的詳細(xì)機(jī)制震缭,推薦你去瀏覽Paul Annesley 的博客赂毯,該博客將從文件格式帶你了解該內(nèi)容。同時(shí)如果你想要學(xué)習(xí)如何編寫你自己的啟動(dòng)腳本拣宰,Apple在他們開(kāi)發(fā)者網(wǎng)站上提供了許多很有幫助的文檔供參考党涕。如果你希望完全避免命令行的操作,同樣有一個(gè)非常棒的叫Lingon的程序可以幫助你巡社。
6. say
這是一個(gè)很有趣的命令:say 將文本轉(zhuǎn)化為語(yǔ)音膛堤,它使用了OS X中VoiceOver使用的文字語(yǔ)音轉(zhuǎn)換系統(tǒng)。無(wú)需任何選項(xiàng)晌该,say命令會(huì)將你輸入的任何文本內(nèi)容轉(zhuǎn)化為語(yǔ)音輸出:
- $ say “Never trust a computer you can’t lift.”
你可以使用帶-f 標(biāo)識(shí)的say命令來(lái)朗讀一個(gè)文本文檔中的內(nèi)容肥荔,同時(shí)使用-o 標(biāo)識(shí)來(lái)保存輸出的音頻內(nèi)容:
- $ say -f mynovel.txt -o myaudiobook.aiff
say 命令可以用于腳本的控制臺(tái)日志和報(bào)警聲音。例如朝群,你可以設(shè)置批處理或者Hazel腳本處理文件燕耿,在處理完成后使用say命令發(fā)出提醒。
但是對(duì)于say命令最好玩的用法是比較陰險(xiǎn)的:如果對(duì)于你的朋友或者同事的Mac你有ssh登陸權(quán)限姜胖,你可以通過(guò)命令行悄無(wú)聲息的登陸他們的電腦誉帅。然后給他們一個(gè)Siri-ous驚喜。
你可以在系統(tǒng)偏好設(shè)置中的聽(tīng)寫與語(yǔ)音面板中設(shè)置say命令的語(yǔ)音(和語(yǔ)言)右莱。
7. diskutil
diskutil 是OS X中磁盤管理工具的命令行界面蚜锨。它可以完成任何它的圖形界面兄弟能完成的任務(wù),同時(shí)它也包含一些額外的能力—例如在一個(gè)磁盤中寫滿零或者隨機(jī)數(shù)據(jù)慢蜓。簡(jiǎn)單的輸入diskutil list會(huì)列出所有磁盤的路徑名和鏈接到你電腦上的可移除的媒體介質(zhì)亚再,然后再指向你想要操作的卷的命令。請(qǐng)注意:如果不正確的使用diskutil命令會(huì)永久的清楚磁盤上的數(shù)據(jù)晨抡。
8. brew
好吧氛悬,這個(gè)嚴(yán)格上說(shuō)不是一個(gè)本地命令饲鄙。但是沒(méi)有一個(gè)OS X高級(jí)用戶會(huì)離得開(kāi)Homebrew。它的官網(wǎng)將它定義為“OS X上丟失的包管理工具”圆雁,它說(shuō)的很正確忍级。如果你在Linux系統(tǒng)上使用過(guò)apt-get命令,你會(huì)在Homebrew中有找到組織的感覺(jué)伪朽。
brew 讓你輕松的從開(kāi)源社區(qū)獲取成千上萬(wàn)的開(kāi)放的實(shí)用工具和軟件庫(kù)轴咱。例如,brew install imagemagick 命令會(huì)為你安裝ImageMagick工具烈涮,它使一個(gè)功能強(qiáng)大的工具包朴肺,它可以從事任何從GIF動(dòng)畫到幾十種不同類型的圖片轉(zhuǎn)換任務(wù)。brew install node 命令會(huì)為你安裝NodeJS坚洽,它是一個(gè)最新的熱門的在服務(wù)器端開(kāi)發(fā)和運(yùn)行JavaScript程序的工具戈稿。
你同樣也可以用Homebrew來(lái)獲得樂(lè)趣:brew install archey 命令會(huì)為你安裝 Archey,它是一個(gè)很酷的腳本讶舰,用來(lái)在一個(gè)多彩的Apple Logo顯示你的Mac的配置鞍盗。Homebrew的可選內(nèi)容很廣泛,同時(shí)它很容易創(chuàng)建新規(guī)則跳昼,一直都會(huì)有新的包被添加進(jìn)來(lái)般甲。
archeyARCHEY —我的命令行工具中把所有的配置都顯示出來(lái)。
但是Homebrew最大的優(yōu)勢(shì)是什么鹅颊?它將它所有的文件都保存在一個(gè)獨(dú)立的目錄中:/usr/local/ 敷存。這意味著你可以無(wú)需干涉系統(tǒng)內(nèi)建的軟件而安裝系統(tǒng)軟件的最新版本,比如python和mysql堪伍。而且當(dāng)你卸載Homebrew 安裝包時(shí)锚烦,它很方便就可以被移除。
5.15修改:有人對(duì)我建議不能盲目的刪除/usr/local/目錄中的內(nèi)容帝雇。這是一個(gè)非常重要的預(yù)防措施涮俄。為了安全的移除Homebrew,請(qǐng)使用卸載腳本摊求。
9. textutil
textutil使用Cocoa的文本引擎對(duì)文檔進(jìn)行操作禽拔,并可以在多種格式間轉(zhuǎn)換,包括室叉,.doc睹栖、.txt和.rtf。例如茧痕,將一個(gè)HTML文檔轉(zhuǎn)換成一個(gè)簡(jiǎn)單的Word文檔野来。
- $ textutil -convert html article.doc
textutil另一個(gè)有意思的功能是能夠?qū)⒍鄠€(gè)文件合并成一個(gè)長(zhǎng)文檔。如下命令可將三個(gè)Word文檔合并成一個(gè).rtf文檔:
- $ textutil -cat rtf article1.doc article2.doc article3.doc
10. sips
sips是一個(gè)圖像處理工具踪旷,是ImageMagick一個(gè)原生的替代選擇曼氛。因?yàn)樗墙⒃贏pple的Core Image之上豁辉,sips在顏色配置等方面有很大功能。但是它也是一個(gè)不錯(cuò)的快速圖像處理工具舀患,如轉(zhuǎn)換徽级、調(diào)整大小、裁剪和旋轉(zhuǎn)聊浅。
這個(gè)腳本將文件中的ipegs格式的圖片轉(zhuǎn)換成png格式的:
- file --out $file.png
11. ssh-add
如果你反復(fù)使用ssh訪問(wèn)一個(gè)安全服務(wù)器餐抢,例如Amazon’s EC2,那么你就應(yīng)該知道ssh-add低匙。這個(gè)命令允許你將私鑰文件保存到到OS X keychain旷痕。只需設(shè)置一次,就能使用ssh命令顽冶,無(wú)需手動(dòng)包括私鑰文件或弄混~ / . ssh /內(nèi)容
之前:
- $ ssh -i keyfile.pem [server]
之后:
- $ ssh-add -k keyfile.pem
- $ ssh [server]
12. man
man命令調(diào)出不是OS X獨(dú)有的幫助手冊(cè)欺抗,這無(wú)需多說(shuō)。但是Twitter用戶 @peternlewis 使我想起了Terminal.cpp功能强重。如果你在Help menu中輸入一個(gè)命令名绞呈,Terminal將自動(dòng)地調(diào)出與之相關(guān)的頁(yè)面。
關(guān)于終端程序的更多操作竿屹,這里有一個(gè)從A-Z排序的在OS X 10.9 Mavericks中所有可用的控制臺(tái)命令行报强。