豐色 發自 凹非寺
量子位 | 公衆号 QbitAI
作為程式員,都知道指令行的好處。
奈何實在學不會、記不住。
今天,恰好有一個專門總結了各種常用和冷門指令行技巧的項目,号稱《指令行的藝術》,登上了GitHub熱榜。
一看,确實還有點來頭。
光看标星數,就有足足112k。
而它的作者,主要由19位程式員組成,除此之外,還有數十人作出了貢獻。
其内容主要都與Linux指令行有關(另有兩章專門講macOS和Windows系統),覆寫了基礎、日常使用、檔案及資料處理、系統調試、單行指令、“冷門但有用”等多方面的知識和技巧,用很簡潔的方式+示例予以了說明。
最開始,該項目隻是在Quora上傳播,後來挪到GitHub上後便火得一發不可收拾。
由于實在太幹貨,還被翻譯成了17種語言,其中就包括中文。
那麼,對于我們那不太熟的指令行技術,再挽救一下?
Ps. 熟的也可以看哦,畢竟還有一些“奇技淫巧”。
一文掌握所有指令行
文中所用指令主要基于互動式Bash,一共分為8篇。
基礎篇
這篇主要需要你掌握指令行基礎知識,一共12小項,包括:
- 會用man bash指令查閱手冊,會用apropos查找文檔,熟悉一個文本編輯器(推薦Vim);
- 懂得> 、 <、|、>>等符号的差別,會使用通配符,會使用ssh進行遠端指令行登入;
- 熟悉Bash中的任務管理工具、基本的檔案管理工具、基本的網絡工具;
- 懂正規表達式,會git,懂得查找和安裝軟體包。
日常使用篇
基礎知識完成後,這裡要教的都是一些非常日常的技巧,一共43條,比如:
- ctrl-r可以搜尋指令行曆史記錄,而按下右箭頭鍵可以不立即執行,進行修改;
- ctrl-x+ctrl-e可再打開一個編輯器來輸入目前正編輯的指令,這對于編寫長指令很友善;
- alias指令可以建立常用指令的快捷形式(eg. alias ll=’ls -latr’ ,就建立了一個别名 為ll新指令);
- 當使用通配符比對大量檔案名時,常會遇到“Argument list too long”的錯誤資訊,這種情況下換用find或xargs通常可以解決。
檔案及資料處理篇
這篇有35條,比如:
- 在目前目錄下通過檔案名查找一個檔案,可以使用find . -iname ‘something‘指令;
- 想要轉換Markdown、HTML等不同格式的檔案時,使用pandoc;
- 處理棘手的XML時,用上古流傳下來的神器xmlstarlet;
- 更改檔案時除了cut和paste,别忘了join。
系統調試篇
本篇也不少,共20條,比如:
- 進行web調試時用curl和curl -I指令,或者它們的好兄弟wget,或者更潮的httpie;
- 檢視磁盤使用情況時用ncdu,它比普通du -sh *更節省時間;
- 如果删除了一個檔案,但通過du發現沒有釋放預期的磁盤空間,請用如下指令檢查檔案是否被程序占用:lsof | grep deleted | grep “filename-of-my-big-file”……
單行指令篇
這部分指的就是我們所說的one-liners指令,一共7條,比如:
想計算文本檔案第三列中所有數的和時,下面的指令可能會比同等作用的Python代碼速度快三倍、代碼量少三倍:awk ‘{ x += $3 } END { print x }’ myfile。
冷門但有用篇
這部分是也算全文最長的一篇了,一共73條,各位可各取所需~
macOS篇和Windows篇
最後,對于使用macOS和Windows系統的程式員來說,也有一些小技巧不容錯過。
比如在macOS中,如果你想在終端中将Option鍵當作alt鍵使用,那麼隻需打開“偏好設定 -> 描述檔案 -> 鍵盤”,并勾選“使用Option鍵作為Meta鍵”;
由于macOS基于BSD UNIX,許多指令(例如ps,ls,tail,awk,sed)都和Linux中有微妙的不同,需要注意,具體差別可以通過标題為 “BSD General Commands Manual” 的man頁面檢視。
而在Windows中,隻需安裝一個Cygwin,你就可以直接感受Unix shell的威力了——前6篇介紹的東西複用就ok。
是以在這篇,作者也提供了一些Cygwin指令的使用技巧。
更多詳細内容直接戳下面的位址~
項目首頁:
https://github.com/jlevy/the-art-of-command-line
中文版:
https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md
— 完 —
量子位 QbitAI · 頭條号簽約
關注我們,第一時間獲知前沿科技動态