1. 程式人生 > 其它 >簡述sed、grep和parted的速查表

簡述sed、grep和parted的速查表

因其 聞名,部分原因是 Linux 執行的幾乎所有操作都可以從終端呼叫;另一部分原因是 Linux 是一個高度模組化的作業系統,它的工具被設計用於產生十分確定的結果,在非常瞭解一些 後,你可以將這些命令進行奇妙的組合,產生有用的輸出。Linux 的學習過程一半是學習命令,另一半是學習如何將這些命令連成有意思的組合。

然而有這麼多 Linux 命令需要學習,邁出第一步似乎令人望而生畏。應該先學習哪一個命令?有那些命令需要熟練掌握,又有哪些命令只需要淺嘗輒止?認真考慮過這些問題後,我個人不相信有一個通用的答案。對所有人來說,“基本”命令很可能是相同的:

    • ls
    • cd
    • mv

有這些命令你就可以瀏覽自己的 Linux 檔案系統。

但是,除了基本命令,不同行業的“預設”命令有所不同。系統管理員需要 系統自我檢查和監測的工具;藝術家需要媒體轉換和圖形處理工具;家庭使用者可能想要PDF 處理、日曆、文件轉換工具。這份列表無窮無盡。

然而一些 Linux 命令由於極其重要能夠脫穎而出 —— 或者因為這些命令是每個人不時需要的常用的底層工具,或者因為這些命令是每個人在大多數時間都會覺得有用的萬能工具。

這裡有三個需要新增到你的列表中的命令。

Sed命令

用途:sed是一個任何 Linux 使用者都可以從學習中獲益的優良通用工具。從表面上看,它只是一個基於終端的“查詢和替換”,能夠簡單快速地糾正多個文件。sed命令為我節省了開啟單個檔案、尋找和替換一個單詞、儲存檔案、關閉檔案所需要的數個小時(也可能是數天)時間,僅此一條命令就證明了我在學習 Linux 終端的投入是合理的。一旦充分了解sed,你很有可能發現一個使生活更加輕鬆的潛在編輯技巧世界。

長處:命令的長處在於重複。如果你只有一個要編輯的檔案,很容易在傳統的文字編輯器開啟並進行“查詢和替換”。然而,如果要替換 5 或 50 個檔案,恰當地使用sed命令(可能結合GNU Parallel進行加速)可以幫你節省數個小時。

不足:你需要權衡直接更改期望所花的時間和構建正確的sed命令可能需要的時間。使用常見的sed 's/foo/bar/g'語法所做的簡單編輯通常值得上輸入這些命令所花的時間;但是利用保持空間和任何ed形式子命令的複雜sed命令可能需要高度集中的注意力和多次的試錯。事實證明,使用sed進行編輯通常是更好的方式。

祕技:下載我們的sed 速查表獲取命令的單字母子命令和語法概述的快速參考。

Grep命令

用途:grep一詞來源於其公認的笨拙描述:全域性正則表示式列印。換言之,在檔案中(或者其他形式的輸入中)找到的任何匹配模式,grep都會列印到終端。這使得grep成為一個強大的搜尋工具,尤其擅長處理大量的文字。

你可以使用 grep查詢 URL:

$grep--only-matching\\http\\:\/\/.*example.txt

你可以使用 grep查詢一個特定的配置項:

$grep--line-number\\foo=example.ini2:foo=true

當然,你還可以將 grep和其他命令組合:

$grepfoo=example.ini|cut-d=-f2true

長處:grep是一個簡單的搜尋命令,如果你閱讀了上面的例子,就已經基本有所瞭解。為了增強靈活性,你可以使用命令的擴充套件正則表示式語法。

不足:grep的問題也是它的長處:它只有搜尋功能。一旦你找到想要的內容,可能會面臨一個更大的問題 —— 如何處理找到的內容。有時進行的處理可能簡單如重定向輸出到一個檔案,作為過濾後的結果列表。但是,更復雜的使用場景可能需要對結果做進一步處理,或者使用許多類似awk、curl(湊巧的是,我們也有curl 速查表)的命令,或者使用現代計算機上你所擁有的數千個其他選項中的任何一個命令。

祕技:下載我們的grep 速查表獲取更多命令選項和正則表示式語法的快速參考。

Parted命令

用途:GNUparted不是一個常用命令,但它是最強大的硬碟操作工具之一。關於硬碟驅動器的沮喪事實是 —— 數年來你一直忽略它們,直到需要設定一個新的硬碟時,才會想起自己對於格式化驅動器的最好方式一無所知,而此時熟悉parted會十分有用。GNUparted能夠建立磁碟卷標,新建、備份、恢復分割槽。此外,你可以通過命令獲取驅動器及其佈局的許多資訊,併為檔案系統初始化驅動器。

長處:我偏愛parted而不是fdisk等類似工具的原因在於它組合了簡單的互動模式和完全的非互動選項。不管你如何使用parted,它的命令符合相同的語法,其編寫良好的幫助選單包含了豐富的資訊。更棒的是,命令本身是智慧的 —— 給一個驅動器分割槽時,你可以用扇區和百分比指明分割槽的大小,parted會盡可能計算出更精細的位置存放分割槽表。

不足:在很長一段時間內我不清楚驅動器的工作原理,因此切換到 Linux 後,我花費了很長時間學習 GNUparted。GNUparted和大多數終端磁碟工具假定你已經知曉什麼是一個分割槽、驅動器由扇區組成、初始時驅動器缺少檔案系統,需要磁碟卷標和分割槽表等等知識。硬碟驅動器的基礎而不是命令本身的學習曲線十分陡峭,而 GNUparted並沒有做太多的努力來彌補潛在的認知差距。可以說,帶你完成磁碟驅動器的基礎知識學習不是命令的職責,因為有類似的圖形應用,但是一個聚焦於工作流程的選項對於 GNUparted可能是一個有用的附加功能。

祕技:下載我們的parted 速查表獲取大量子命令和選項的快速參考。

這是一些我最喜歡的命令列表,但是其中的命令自然取決於我如何使用自己的計算機。我編寫很多命令直譯器 ,因此頻繁地使用 grep查詢配置選項,通過sed編輯文字。我還會用到parted,因為處理多媒體專案時,通常涉及很多硬碟驅動器。你可能已經開發了,或者很快就要使用最喜歡的(至少是頻繁使用的)命令開發自己的工作流程。

整合新的流程到日常工作時,我會建立或者下載一個速查表(就像上面的連結),然後進行練習。我們都有自己的學習方式,找出最適合你的方式,學習一個新的必需命令。你對最常使用的命令瞭解越多,你就越能充分地使用它們。