(點選上方快速關註並設定為星標,一起學Python)
圓慄子 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
△ 也可以是火車司機
熟練使用命令列,是成為一個老司機必備的技能。
這裡有一份入門&進階指南,名字叫“命令列的藝術”,在GitHub收穫了5萬標星。
技巧改寫面廣,且富含具體的例子。主要為Linux所寫,卻也有Mac和Windows的專用章節。
專案作者Joshua Levy說:
文章並不長,但當你掌握這裡列出的所有技巧時,你就學會很多關於命令列的東西了。
他還說了:
這份資源不僅能幫助剛接觸命令列的新手,對有經驗的人也大有裨益。
從誕生之初到今天,專案被翻成了16種語言。就是說,如果感覺中文有翻譯腔,可以回去看英文原版 (手動狗頭) 。
那麼,先來觀察一下,老司機是怎樣煉成的。
基礎篇 & 日常篇
這份資源主要專註在互動式 Bash,但也有許多技巧可以用在其他shell和普通Bash腳本里。
基礎篇
所以,萌新就從Bash的基礎知識開始學習。然後:
要熟悉一種基於文字的編輯器;學會用man命令閱讀檔案。
還有,用apropos查詢檔案。要知道有些命令不對應可執行檔案,而是Bash內建好的。可以用help和help-d來獲得幫助資訊。
另外,要學會用>和<來重定向輸入和輸出,用|來重定向管道;還要用萬用字元*和取用,瞭解取用中‘和”的區別。
……
包括Bash中的任務管理工具,檔案管理工具,網路管理工具等等,都要在這一篇裡熟絡起來。
此篇共分12條技能,算是比較短的一篇了。
基礎打好之後,進入:
日常使用篇
顧名思義,這裡實現的是一些日常技巧。
比如,為了方便長命令的編輯,用ctrl-x ctrl-e開啟一個編輯器,來輸入當前正編輯的命令;
比如,用xargs (或parallel)。這個非常給力。你可以控制每行的引數個數 (-L) 和最大並行數 (-P) 。如果不確定它會不會照你想的做,就先用xargs echo查一下。另外,用-I{}也很方便。
比如,對ssh設定做些小最佳化可能很有用,比如這個~/.ssh/config檔案包含了防止特定網路環境下連線斷開、壓縮資料、多通道等選項:
1TCPKeepAlive=yes
2 ServerAliveInterval=15
3 ServerAliveCountMax=6
4 Compression=yes
5 ControlMaster auto
6 ControlPath /tmp/%r@%h:%p
7 ControlPersist yes
註意,日常部分有44條技能。請君堅持修煉完成,然後前往下一章節。
各類專門技巧
首先,是檔案及資料處理技能,一共33條:
比如,用ag在原始碼或資料檔案裡檢索 (grep -r 同樣可以做到,但相比之下 ag 更加先進) 。
比如,將HTML 轉為文字:lynx -dump -stdin。
比如,當你要處理棘手的 XML 時候,xmlstarlet 算是上古流傳下來的神器了。
……
後面還有系統除錯技巧20條,和單行指令碼技巧7條 (每條都有例子) 。
以及別忘了,冷門但有用的工具,是一個大大大大大串列。
至此,各種技巧已分類仔細,就算是老司機也可以按照自己的需要,找到一些好用的方法了。
還有更多
學到這裡,Linux使用者可能已經吃飽了。
專案裡還有Mac的專用技巧,以及Windows的專用技巧,決定先不詳述,大家可以自行探索。
最後,作者毫不吝惜地列舉了其他人類出品的各種命令列指南:
各路資源排山倒海向你湧來,再不學習可能就要被淹了。
傳送門:
https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md
朋友會在“發現-看一看”看到你“在看”的內容