每個Mac OS X 命令行用戶應當知道的八個終端工具
原文鏈接:Eight Terminal Utilities Every OS X Command Line User Should Know
OS X 的Terminal 終端開辟了強大的UNIX實用工具和腳本的世界。如果你是從Linux轉移過來的用戶,你會在OS X 終端上發現很多熟悉的命令。但是即使是高級用戶也經常會忽略掉其實OS X終端也會有一系列在其他的操作系統中沒有的終端工具。當你學習了以下這些只適用于Mac的課程會讓你更高效的使用Mac命令行同時消除UNIX系統和你 的Mac系統之間的差別。
1.open
open:打開文件,目錄和程序。這是令人興奮的,對嗎?其實它真正的作用是用于命令行模擬鼠標雙擊操作。假如當你輸入:
$ 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),重定向并且在腳本中可以與其他命令一起使用。例如當輸入:
$ ls ~ | pbcopy
該命令時會將你的home目錄中的文件列表拷貝到OS X 系統的剪切板中。你可以通過如下命令輕易的獲取文檔的內容:
$ pbcopy < blogpost.txt
或者過一些更瘋狂的事。下面這條腳本會抓取最新的Google doodle 的鏈接并且將它拷貝到你的剪切板中。
$ curl http://www.google.com/doodles#oodles/archive | grep -A5 ‘latest-doodle on’ | grep ‘img src’ | sed s/.*’
在管道中使用pbcopy是一種很好的用來抓取命令行輸出內容的方式,它無需你翻頁和細 心的看每一行內容。該方法可以很容易地共享診斷信息。pbcopy和pbpaste也可以用來自動或者快速執行類似的任務。例如,當你想要將電子郵件的主 題行保存到一個任務列表,你可以先在郵件程序中拷貝這些內容然后再運行:
$ pbpaste >> tasklist.txt
3.mdfind
許多重度Linux用戶會在Mac上使用locate命令搜索文件,但是他們很快發現這個方法不可行。在UNIX中有一個古老的find命令,但是在OS X中它有它自己的殺手級搜索工具:Spotlight。所以我們為啥不在命令行中借用它的力量呢?
這就是實際當中mdfind所做的事。任何Spotlight能搜索到的內容,mdfind同樣也能搜索到。這當然也包括搜索文件內部及元數據。
mdfind因為它的一些便捷性使它在它的這個大哥哥中脫穎而出。例如,-onlyin 標識可以將搜索限制在一個指定的目錄中:
$ 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’命名)附再一封新的電子郵件中:
$ screencapture -C -M image.png
通過你的鼠標選擇一個窗口,然后抓取該窗口中的內容(不包括該窗口的陰影效果)將該截圖復制到剪切板中:
$ screencapture -c -W
延時10秒截屏并且在預覽中打開該截圖:
$ screencapture -T 10 -P image.png
通過鼠標選定一個區域截圖,同時將該內容保存為pdf文件:
$ screencapture -s -t pdf image.pdf
你可以通過輸入 screencapture —help 來查看更多選項。
5.launchctl
launchctl 可以讓你與OS X 的初始化腳本系統launchd進行交互。通過啟動守護進程與啟動代理,你可以在啟動你的電腦時控制你的啟動服務項。你甚至可以通過編寫腳本定期或再指定的時間間隔內執行操作,類似于Linux中的corn工具。
例如,當你想要在你啟動你的Mac時自動啟動Apache服務器時,你可以輸入:
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
通過運行launchctl list會列出所有當前狀態下加載了的啟動腳本。sudo launchctl unload [path/to/script] 命令會停止并且卸載運行中的腳本,該命令增加 -w 標識時會將該腳本永久的從你的啟動隊列中清除。我喜歡用這個命令來終止運行所有類似于Adobe程序及微軟Office的自動更新“助手”。
啟動腳本儲存在以下幾個位置中:
~/Library/LaunchAgents
/Library/LaunchAgents
/Library/LaunchDaemons
/System/Library/LaunchAgents
/System/Library/LaunchDaemons
對于想要了解啟動進程與啟動代理的詳細機制,推薦你去瀏覽Paul Annesley 的博客,該博客將從文件格式帶你了解該內容。同時如果你想要學習如何編寫你自己的啟動腳本,Apple在他們開發者網站上提供了許多很有幫助的文檔供參考。如果你希望完全避免命令行的操作,同樣有一個非常棒的叫Lingon的程序可以幫助你。
6.say
這是一個很有趣的命令:say 將文本轉化為語音,它使用了OS X中VoiceOver使用的文字語音轉換系統。無需任何選項,say命令會將你輸入的任何文本內容轉化為語音輸出:
$ say “Never trust a computer you can’t lift.”
你可以使用帶-f 標識的say命令來朗讀一個文本文檔中的內容,同時使用-o 標識來保存輸出的音頻內容:
$ 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。它的官網將它定義為“OSX 不可或缺的套件管理器”,它說的很正確。如果你在Linux系統上使用過apt-get命令,你會在Homebrew中有找到組織的感覺。
brew 讓你輕松的從開源社區獲取成千上萬的開放的實用工具和軟件庫。例如,brew install imagemagick 命令會為你安裝ImageMagick工具,它使一個功能強大的工具包,它可以從事任何從GIF動畫到幾十種不同類型的圖片轉換任務。brew install node 命令會為你安裝NodeJS,它是一個最新的熱門的在服務器端開發和運行JavaScript程序的工具。
你同樣也可以用Homebrew來獲得樂趣:brew install archey 命令會為你安裝 Archey,它是一個很酷的腳本,用來在一個多彩的Apple Logo顯示你的Mac的配置。Homebrew的可選內容很廣泛,同時它很容易創建新規則,一直都會有新的包被添加進來。
ARCHEY —我的命令行工具中把所有的配置都顯示出來。
但是Homebrew最大的優勢是什么?它將它所有的文件都保存在一個獨立的目錄 中:/usr/local/ 。這意味著你可以無需干涉系統內建的軟件而安裝系統軟件的最新版本,比如python和mysql。而且當你卸載Homebrew 安裝包時,它很方便就可以被移除。
5.15修改:有人對我建議不能盲目的刪除/usr/local/目錄中的內容。這是一個非常重要的預防措施。為了安全的移除Homebrew,請使用卸載腳本。
關于終端程序的更多操作,這里有一個從A-Z排序的在OS X 10.9 Mavericks中所有可用的控制臺命令行。
來自:http://aimijia.net/2014/05/each-mac-os-x-command-line-users-should-be-aware-of-the-eight-terminal-tool/