【轉(zhuǎn)】 mac上的命令行工具

原文出處: 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)你輸入:

  1. $ 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)輸入:

  1. $ ls ~ | pbcopy

輸入該命令時(shí)會(huì)將你的home目錄中的文件列表拷貝到OS X 系統(tǒng)的剪切板中。你可以通過(guò)如下命令輕易的獲取文檔的內(nèi)容:

  1. $ pbcopy < blogpost.txt

或者過(guò)一些更瘋狂的事绍哎。下面這條腳本會(huì)抓取最新的Google doodle 的鏈接并且將它拷貝到你的剪切板中来农。

  1. $ 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)行:

  1. $ 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è)指定的目錄中:

  1. $ 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’命名)附再一封新的電子郵件中:

  1. $ screencapture -C -M image.png

通過(guò)你的鼠標(biāo)選擇一個(gè)窗口蹋绽,然后抓取該窗口中的內(nèi)容(不包括該窗口的陰影效果)將該截圖復(fù)制到剪切板中:

  1. $ screencapture -c -W

延時(shí)10秒截屏并且在預(yù)覽中打開(kāi)該截圖:

  1. $ screencapture -T 10 -P image.png

通過(guò)鼠標(biāo)選定一個(gè)區(qū)域截圖芭毙,同時(shí)將該內(nèi)容保存為pdf文件:

  1. $ 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í)翰铡,你可以輸入:

  1. $ 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è)位置中:

  1. ~/Library/LaunchAgents

  2. /Library/LaunchAgents

  3. /Library/LaunchDaemons

  4. /System/Library/LaunchAgents

  5. /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ǔ)音輸出:

  1. $ 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)容:

  1. $ 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文檔野来。

  1. $ textutil -convert html article.doc

textutil另一個(gè)有意思的功能是能夠?qū)⒍鄠€(gè)文件合并成一個(gè)長(zhǎng)文檔。如下命令可將三個(gè)Word文檔合并成一個(gè).rtf文檔:

  1. $ 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格式的:

  1. for file in *.jpeg; do sips -s format pngfile --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)容

之前:

  1. $ ssh -i keyfile.pem [server]

之后:

  1. $ ssh-add -k keyfile.pem
  2. $ 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)命令行报强。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末灸姊,一起剝皮案震驚了整個(gè)濱河市拱燃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌力惯,老刑警劉巖碗誉,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異父晶,居然都是意外死亡哮缺,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門甲喝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)尝苇,“玉大人,你說(shuō)我怎么就攤上這事埠胖】妨铮” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵直撤,是天一觀的道長(zhǎng)非竿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)谋竖,這世上最難降的妖魔是什么红柱? 我笑而不...
    開(kāi)封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任承匣,我火速辦了婚禮,結(jié)果婚禮上锤悄,老公的妹妹穿的比我還像新娘韧骗。我一直安慰自己,他們只是感情好零聚,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布宽闲。 她就那樣靜靜地躺著,像睡著了一般握牧。 火紅的嫁衣襯著肌膚如雪容诬。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天沿腰,我揣著相機(jī)與錄音览徒,去河邊找鬼。 笑死颂龙,一個(gè)胖子當(dāng)著我的面吹牛习蓬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播措嵌,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼躲叼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了企巢?” 一聲冷哼從身側(cè)響起枫慷,我...
    開(kāi)封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浪规,沒(méi)想到半個(gè)月后或听,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笋婿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年誉裆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缸濒。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡足丢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庇配,到底是詐尸還是另有隱情斩跌,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布讨永,位于F島的核電站滔驶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏卿闹。R本人自食惡果不足惜揭糕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一萝快、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧著角,春花似錦揪漩、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至产徊,卻和暖如春昂勒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舟铜。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工戈盈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谆刨。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓塘娶,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親痊夭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刁岸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容