mac上的命令行工具

轉自愛米家的博客,原文:《Eight Terminal Utilities Every OS X Command Line User Should Knowphp

OS X  的Terminal 終端開闢了強大的UNIX實用工具和腳本的世界。若是你是從Linux轉移過來的用戶,你會在OS X 終端上發現不少熟悉的命令。可是即便是高級用戶也常常會忽略掉其實OS X終端也會有一系列在其餘的操做系統中沒有的終端工具。當你學習瞭如下這些只適用於Mac的課程會讓你更高效的使用Mac命令行同時消除UNIX系統和你的Mac系統之間的差異。
 
1. open
open:打開文件,目錄和程序。這是使人興奮的,對嗎?其實它真正的做用是用於 命令行模擬鼠標雙擊操做。假如當你輸入:
  1. $ open /Applications/Safari.app/ 
輸入該命令時會像你在Finder中雙擊Safari圖標同樣啓動Safari瀏覽器。
 
若是你用open命令指向一個文件,它會啓動相關的GUI應用程序加載該文件。open screenshot.png命令會在預覽中打開該圖片。固然你能夠在命令中加入 -a 標識來選擇你想要用來加載該文件的應用程序,或者使用 -e 標識直接在文本編輯器中打開編輯。
 
對於一個目錄運行open命令會直接在Finder窗口中打開該目錄。該方法特別適用於在命令行中運行open . 來打開當前目錄。
 
請記住Finder和Terminal終端之間的集成是相互的,當你把Finder中的一個文件拖入到Terminal終端窗口時,它的絕對路徑就會被粘貼在命令行中。
 
2. pbcopy 和 pbpaste
這兩個命令可讓你複製和粘貼命令行中的文本內容。固然你能夠直接使用鼠標完成上述操做。可是pbcopy和pbpaste真正的魔力是它們是UNIX命令,這使它們能夠受益於管道(piping),重定向而且在腳本中能夠與其餘命令一塊兒使用。例如當輸入:
  1. $ ls ~ | pbcopy 
輸入該命令時會將你的home目錄中的文件列表拷貝到OS X 系統的剪切板中。你能夠經過以下命令輕易的獲取文檔的內容:
  1. $ pbcopy < blogpost.txt 
 
或者過一些更瘋狂的事。下面這條腳本會抓取最新的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是一種很好的用來抓取命令行輸出內容的方式,它無需你翻頁和細心的看每一行內容。該方法能夠很容易地共享診斷信息。pbcopy和pbpaste也能夠用來自動或者快速執行相似的任務。例如,當你想要將電子郵件的主題行保存到一個任務列表,你能夠先在郵件程序中拷貝這些內容而後再運行:
  1. $ pbpaste >> tasklist.txt 
 
3. mdfind
許多重度Linux用戶會在Mac上使用locate命令搜索文件,可是他們很快發現這個方法不可行。在UNIX中有一個古老的find命令,可是在OS X中它有它本身的殺手級搜索工具:Spotlight。因此咱們爲啥不在命令行中借用它的力量呢?
 
這就是實際當中mdfind所作的事。任何Spotlight能搜索到的內容,mdfind一樣也能搜索到。這固然也包括搜索文件內部及元數據。
 
mdfind由於它的一些便捷性使它在它的這個大哥哥中脫穎而出。例如,-onlyin 標識能夠將搜索限制在一個指定的目錄中:
  1. $ mdfind -onlyin ~/Documents essay 
mdfind數據庫須要在後臺常常更新數據,但你可使用mdutil命令來排除故障(一樣適用於Spotlight)。若是Spolight沒有正確的工做,使用mdutil -E將會清楚數據庫中的索引而後經過抓取重建索引。你一樣也能夠經過運行mdutil -i off 來徹底完畢索引。
 
4. screencapture
screencapture 可讓你拍攝多種屏幕快照。它相似於 抓圖程序或者cmd + shift +3 和 cmd + shift + 4 的截屏快捷鍵,可是它更加靈活。如下是幾種你可使用screencapture的方式:
 
抓取屏幕中的全部內容,包括光標,而且將該截圖(以’image.png’命名)附再一封新的電子郵件中:
  1. $ screencapture -C -M image.png 
 
經過你的鼠標選擇一個窗口,而後抓取該窗口中的內容(不包括該窗口的陰影效果)將該截圖複製到剪切板中:
  1. $ screencapture -c -W 
 
延時10秒截屏而且在預覽中打開該截圖:
  1. $ screencapture -T 10 -P image.png 
 
經過鼠標選定一個區域截圖,同時將該內容保存爲pdf文件:
  1. $ screencapture -s -t pdf image.pdf 
 
你能夠經過輸入 screencapture —help 來查看更多選項。
 
5. launchctl 
launchctl 可讓你與OS X 的初始化腳本系統launchd進行交互。經過啓動守護進程與啓動代理,你能夠在啓動你的電腦時控制你的啓動服務項。你甚至能夠經過編寫腳本按期或再指定的時間間隔內執行操做,相似於Linux中的corn工具。
 
例如,當你想要在你啓動你的Mac時自動啓動Apache服務器時,你能夠輸入:
  1. $ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist 
 
經過運行launchctl list會列出全部當前狀態下加載了的啓動腳本。sudo launchctl unload [path/to/script] 命令會中止而且卸載運行中的腳本,該命令增長 -w 標識時會將該腳本永久的從你的啓動隊列中清除。我喜歡用這個命令來終止運行全部相似於Adobe程序及微軟Office的自動更新「助手」。
 
啓動腳本儲存在如下幾個位置中:
  1. ~/Library/LaunchAgents     
  2.  
  3. /Library/LaunchAgents           
  4.   
  5. /Library/LaunchDaemons 
  6.   
  7. /System/Library/LaunchAgents 
  8.   
  9. /System/Library/LaunchDaemons 
 
對於想要了解啓動進程與啓動代理的詳細機制,推薦你去瀏覽 Paul Annesley 的博客,該博客將從文件格式帶你瞭解該內容。同時若是你想要學習如何編寫你本身的啓動腳本,Apple在他們 開發者網站上提供了許多頗有幫助的文檔供參考。若是你但願徹底避免命令行的操做,一樣有一個很是棒的叫 Lingon的程序能夠幫助你。
 
6. say 
這是一個頗有趣的命令:say 將文本轉化爲語音,它使用了OS X中 VoiceOver使用的文字語音轉換系統。無需任何選項,say命令會將你輸入的任何文本內容轉化爲語音輸出:
  1. $ say 「Never trust a computer you can’t lift.」 
 
你可使用帶-f 標識的say命令來朗讀一個文本文檔中的內容,同時使用-o 標識來保存輸出的音頻內容:
  1. $ say -f mynovel.txt -o myaudiobook.aiff 
 
say 命令能夠用於腳本的控制檯日誌和報警聲音。例如,你能夠設置批處理或者 Hazel腳本處理文件,在處理完成後使用say命令發出提醒。
 
可是對於say命令最好玩的用法是比較陰險的:若是對於你的朋友或者同事的Mac你有ssh登錄權限,你能夠經過命令行悄無聲息的登錄他們的電腦。而後給他們一個Siri-ous驚喜。
 
你能夠在系統偏好設置中的聽寫與語音面板中設置say命令的語音(和語言)。
 
7. diskutil 
diskutil 是OS X中 磁盤管理工具的命令行界面。它能夠完成任何它的圖形界面兄弟能完成的任務,同時它也包含一些額外的能力—例如在一個磁盤中寫滿零或者隨機數據。簡單的輸入diskutil list會列出全部磁盤的路徑名和連接到你電腦上的可移除的媒體介質,而後再指向你想要操做的卷的命令。請注意:若是不正確的使用diskutil命令會永久的清楚磁盤上的數據。
 
8. brew 
好吧,這個嚴格上說不是一個本地命令。可是沒有一個OS X高級用戶會離得開 Homebrew。它的官網將它定義爲「OS X上丟失的包管理工具」,它說的很正確。若是你在Linux系統上使用過apt-get命令,你會在Homebrew中有找到組織的感受。
 
brew 讓你輕鬆的從開源社區獲取成千上萬的開放的實用工具和軟件庫。例如,brew install imagemagick 命令會爲你安裝 ImageMagick工具,它使一個功能強大的工具包,它能夠從事任何從GIF動畫到幾十種不一樣類型的圖片轉換任務。brew install node 命令會爲你安裝 NodeJS,它是一個最新的熱門的在服務器端開發和運行JavaScript程序的工具。
 
你一樣也能夠用Homebrew來得到樂趣:brew install archey 命令會爲你安裝  Archey,它是一個很酷的腳本,用來在一個多彩的Apple Logo顯示你的Mac的配置。Homebrew的可選內容很普遍,同時它很容易建立新規則,一直都會有新的包被添加進來。 
archeyARCHEY —個人命令行工具中把全部的配置都顯示出來。
 
可是Homebrew最大的優點是什麼?它將它全部的文件都保存在一個獨立的目錄中:/usr/local/ 。這意味着你能夠無需干涉系統內建的軟件而安裝系統軟件的最新版本,好比python和mysql。並且當你卸載Homebrew 安裝包時,它很方便就能夠被移除。
 
5.15修改:有人對我建議不能盲目的刪除/usr/local/目錄中的內容。這是一個很是重要的預防措施。爲了安全的移除Homebrew,請使用 卸載腳本
 
9. textutil
textutil使用Cocoa的文本引擎對文檔進行操做,並能夠在多種格式間轉換,包括,.doc、.txt和.rtf。例如,將一個HTML文檔轉換成一個簡單的Word文檔。
  1. $ textutil -convert html article.doc 
 
textutil另外一個有意思的功能是可以將多個文件合併成一個長文檔。以下命令可將三個Word文檔合併成一個.rtf文檔:
  1. $ textutil -cat rtf article1.doc article2.doc article3.doc 
 
10. sips
sips是一個圖像處理工具,是ImageMagick一個原生的替代選擇。由於它是創建在Apple的Core Image之上,sips在顏色配置等方面有很大功能。可是它也是一個不錯的快速圖像處理工具,如轉換、調整大小、裁剪和旋轉。
 
這個腳本將文件中的ipegs格式的圖片轉換成png格式的:
  1. for file in *.jpeg; do sips -s format png $file --out $file.png 
 
11. ssh-add
若是你反覆使用ssh訪問一個安全服務器,例如Amazon’s EC2,那麼你就應該知道ssh-add。這個命令容許你將私鑰文件保存到到OS X keychain。只需設置一次,就能使用ssh命令,無需手動包括私鑰文件或弄混~ / . ssh /內容
 
以前:
  1. $ ssh -i keyfile.pem [server] 
 
以後:
  1. $ ssh-add -k keyfile.pem 
  2. $ ssh [server] 
 
12. man
man命令調出不是OS X獨有的幫助手冊,這無需多說。可是Twitter用戶 @peternlewis 使我想起了Terminal.cpp功能。若是你在Help menu中輸入一個命令名,Terminal將自動地調出與之相關的頁面。
 
關於終端程序的更多操做,這裏有一個從A-Z排序的 在OS X 10.9 Mavericks中全部可用的控制檯命令行
相關文章
相關標籤/搜索