每個(gè)程序員都應(yīng)該知道的8個(gè)Linux命令

編譯地址:8 Linux Commands Every Developer Should Know
原文地址:
http://www.vaikan.com/8-linux-commands-every-developer-should-know/

每個(gè)程序員都應(yīng)該知道的8個(gè)Linux命令.jpg

每個(gè)程序員纠拔,在職業(yè)生涯的某個(gè)時(shí)刻,總會(huì)發(fā)現(xiàn)自己需要知道一些Linux方面的知識(shí)聚请。我并不是說你應(yīng)該成為一個(gè)Linux專家,我的意思是龄恋,當(dāng)面對(duì)linux命令行任務(wù)時(shí),你應(yīng)該能很熟練的完成挖息。事實(shí)上鞭呕,學(xué)會(huì)了下面8個(gè)命令珊擂,我基本上能完成任何需要完成的任務(wù)。

注意:下面的每個(gè)命令都有十分豐富的文檔說明用含。這篇文章并不是來詳盡的展示每個(gè)命令的各種功用的。我在這里要講的是這幾個(gè)最常用的命令的最常見用法。如果你對(duì)linux命令并不是很了解义辕,你想找一些這方面的資料學(xué)習(xí)灌砖,那這篇文章將會(huì)給你一個(gè)基本的指導(dǎo)善炫。

讓我們從處理一些數(shù)據(jù)開始宪萄。假設(shè)我們有兩個(gè)文件,分別記錄的訂單清單和訂單處理結(jié)果狰右。

order.out.log 
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99 
8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99 
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99 
order.in.log 
8:22:20 111, Order Complete 
8:23:50 112, Order sent to fulfillment 
8:24:20 113, Refund sent to processing

cat

cat – 連接文件班利,并輸出結(jié)果

cat命令非常的簡(jiǎn)單,你從下面的例子可以看到馒稍。

jfields$ cat order.out.log 
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

就像它的說明描述的皿哨,你可以用它來連接多個(gè)文件。

jfields$ cat order.* 
8:22:20 111, Order Complete
8:23:50 112, Order sent to fulfillment
8:24:20 113, Refund sent to processing
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

如果你想看這些log文件的內(nèi)容纽谒,你可以把它們連接起來并輸出到標(biāo)準(zhǔn)輸出上证膨,就是上面的例子展示的。這很有用鼓黔,但輸出的內(nèi)容可以更有邏輯些央勒。

sort

sort – 文件里的文字按行排序

此時(shí)sort命令顯然是你最佳的選擇。

jfields$ cat order.* | sort
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:22:20 111, Order Complete
8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
8:23:50 112, Order sent to fulfillment
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:20 113, Refund sent to processing

就像上面例子顯示的澳化,文件里的數(shù)據(jù)已經(jīng)經(jīng)過排序崔步。對(duì)于一些小文件,你可以讀取整個(gè)文件來處理它們缎谷,然而井濒,真正的log文件通常有大量的內(nèi)容,你不能不考慮這個(gè)情況列林。此時(shí)你應(yīng)該考慮過濾出某些內(nèi)容瑞你,把catsort后的內(nèi)容通過管道傳遞給過濾工具希痴。

grep

grep, egrep, fgrep – 打印出匹配條件的文字行

假設(shè)我們只對(duì)Patterns of Enterprise Architecture這本書的訂單感興趣者甲。使用grep,我們能限制只輸出含有Patterns字符的訂單砌创。

jfields$ cat order.* | sort | grep Patterns
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

假設(shè)退款訂單113出了一些問題虏缸,你希望查看所有相關(guān)訂單——你又需要使用grep了。

jfields$ cat order.* | sort | grep ":\d\d 113, "
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:20 113, Refund sent to processing

你會(huì)發(fā)現(xiàn)在grep上的匹配模式除了“113”外還有一些其它的東西嫩实。這是因?yàn)?13還可以匹配上書目或價(jià)格刽辙,加上額外的字符后,我們可以精確的搜索到我們想要的東西甲献。
現(xiàn)在我們已經(jīng)知道了退貨的詳細(xì)信息宰缤,我們還想知道日銷售和退款總額。但我們只關(guān)心Patterns of Enterprise Architecture這本書的信息竟纳,而且只關(guān)心數(shù)量和價(jià)格撵溃。我現(xiàn)在要做到是切除我們不關(guān)心的任何信息疚鲤。

cut

cut – 刪除文件中字符行上的某些區(qū)域

又要使用grep锥累,我們用grep過濾出我們想要的行。有了我們想要的行信息集歇,我們就可以把它們切成小段桶略,刪除不需要的部分?jǐn)?shù)據(jù)。

jfields$ cat order.* | sort | grep Patterns
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

jfields$ cat order.* | sort | grep Patterns | cut -d"," -f2,5 
1, 39.99 
-1, 39.99

現(xiàn)在,我們把數(shù)據(jù)縮減為我們計(jì)算想要的形式际歼,把這些數(shù)據(jù)粘貼到Excel里立刻就能得到結(jié)果了惶翻。
cut是用來消減信息、簡(jiǎn)化任務(wù)的鹅心,但對(duì)于輸出內(nèi)容吕粗,我們通常會(huì)有更復(fù)雜的形式。假設(shè)我們還需要知道訂單的ID旭愧,這樣可以用來關(guān)聯(lián)相關(guān)的其他信息颅筋。我們用cut可以獲得ID信息,但我們希望把ID放到行的最后输枯,用單引號(hào)包上议泵。

sed

sed – 一個(gè)流編輯器。它是用來在輸入流上執(zhí)行基本的文本變換桃熄。

下面的例子展示了如何用sed命令變換我們的文件行先口,之后我們?cè)谠儆?code>cut移除無用的信息。

jfields$ cat order.* | sort | grep Patterns \
>| sed s/"[0-9\:]* \([0-9]*\)\, \(.*\)"/"\2, '\1'"/
1, Patterns of Enterprise Architecture, Kindle edition, 39.99, '111'
-1, Patterns of Enterprise Architecture, Kindle edition, 39.99, '113'

lmp-jfields01:~ jfields$ cat order.* | sort | grep Patterns \
>| sed s/"[0-9\:]* \([0-9]*\)\, \(.*\)"/"\2, '\1'"/ | cut -d"," -f1,4,5
1, 39.99, '111'
-1, 39.99, '113'

我們對(duì)例子中使用的正則表達(dá)式多說幾句瞳收,不過也沒有什么復(fù)雜的碉京。正則表達(dá)式做了下面幾種事情:

  • 刪除時(shí)間戳
  • 捕捉訂單號(hào)
  • 刪除訂單號(hào)后的逗號(hào)和空格
  • 捕捉余下的行信息

里面的引號(hào)和反斜杠有點(diǎn)亂,但使用命令行時(shí)必須要用到這些缎讼。
一旦捕捉到了我們想要的數(shù)據(jù)收夸,我們可以使用\1 & \2來存儲(chǔ)它們,并把它們輸出成我們想要的格式血崭。我們還在其中加入了要求的單引號(hào)卧惜,為了保持格式統(tǒng)一,我們還加入了逗號(hào)夹纫。最后咽瓷,用cut命令把不必要的數(shù)據(jù)刪除。
現(xiàn)在我們有麻煩了舰讹。我們上面已經(jīng)演示了如何把log文件消減成更簡(jiǎn)潔的訂單形式茅姜,但我們的財(cái)務(wù)部門需要知道訂單里一共有哪些書。

uniq

uniq – 刪除重復(fù)的行

下面的例子展示了如何過濾出跟書相關(guān)的交易月匣,刪除不需要的信息钻洒,獲得一個(gè)不重復(fù)的信息。
看起來這是一個(gè)很簡(jiǎn)單的任務(wù)锄开。
這都是很好用的命令素标,但前提是你要能找到你想要的文件。有時(shí)候你會(huì)發(fā)現(xiàn)一些文件藏在很深的文件夾里萍悴,你根本不知道它們?cè)谀耐吩狻5绻闶侵滥阋獙ふ业奈募拿值脑捲⒚猓@對(duì)你就不是個(gè)問題了。

find

find – 在文件目錄中搜索文件

在上面的例子中我們處理了order.in.logorder.out.log這兩個(gè)文件计维。這兩個(gè)文件放在我的home目錄里的袜香。下面了例子將向大家展示如何在一個(gè)很深的目錄結(jié)構(gòu)里找到這樣的文件。

jfields$ find /Users -name "order*"
Users/jfields/order.in.log
Users/jfields/order.out.log

find命令有很多其它的參數(shù)鲫惶,但99%的時(shí)間里我只需要這一個(gè)就夠了蜈首。
簡(jiǎn)單的一行,你就能找到你想要的文件欠母,然后你可以用cat查看它疾就,用cut修剪它。但文件很小時(shí)艺蝴,你用管道把它們輸出到屏幕上是可以的猬腰,但當(dāng)文件大到超出屏幕時(shí),你也許應(yīng)該用管道把它們輸出給less命令猜敢。

less

less – 在文件里向前或向后移動(dòng)

讓我們?cè)倩氐胶?jiǎn)單的 cat | sort例子中來姑荷,下面的命令就是將經(jīng)過合并、排序后的內(nèi)容輸出到less命令里缩擂。在 less命令鼠冕,使用“/”來執(zhí)行向前搜索,使用“胯盯?”命令執(zhí)行向后搜索懈费。搜索條件是一個(gè)正則表達(dá)式。

jfields$ cat order* | sort | less

如果你在 less命令里使用 /113.*博脑,所有113訂單的信息都會(huì)高亮憎乙。你也可以試試?.*112,所有跟訂單112相關(guān)的時(shí)間戳都會(huì)高亮叉趣。最后你可以用 ‘q’ 來退出less命令泞边。

linux里有很豐富的各種命令,有些是很難用的疗杉。然而阵谚,學(xué)會(huì)了前面說的這8個(gè)命令,你已經(jīng)能處理大量的log分析任務(wù)了烟具,完全不需要用腳本語言寫程序來處理它們梢什。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市朝聋,隨后出現(xiàn)的幾起案子嗡午,更是在濱河造成了極大的恐慌,老刑警劉巖玖翅,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翼馆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡金度,警方通過查閱死者的電腦和手機(jī)应媚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猜极,“玉大人中姜,你說我怎么就攤上這事「” “怎么了丢胚?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)受扳。 經(jīng)常有香客問我携龟,道長(zhǎng),這世上最難降的妖魔是什么勘高? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任峡蟋,我火速辦了婚禮,結(jié)果婚禮上华望,老公的妹妹穿的比我還像新娘蕊蝗。我一直安慰自己,他們只是感情好赖舟,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布蓬戚。 她就那樣靜靜地躺著,像睡著了一般宾抓。 火紅的嫁衣襯著肌膚如雪子漩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天石洗,我揣著相機(jī)與錄音痛单,去河邊找鬼。 笑死劲腿,一個(gè)胖子當(dāng)著我的面吹牛旭绒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播焦人,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼挥吵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了花椭?” 一聲冷哼從身側(cè)響起忽匈,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矿辽,沒想到半個(gè)月后丹允,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郭厌,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年雕蔽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了折柠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡批狐,死狀恐怖扇售,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嚣艇,我是刑警寧澤承冰,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站食零,受9級(jí)特大地震影響困乒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贰谣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一顶燕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冈爹,春花似錦涌攻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至憋肖,卻和暖如春因痛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背岸更。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工鸵膏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怎炊。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓谭企,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親评肆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子债查,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,146評(píng)論 2 34
  • 本文筆記源自這里——[實(shí)驗(yàn)樓]歡迎大家在下面交流其中有問題的地方喜歡請(qǐng)點(diǎn)收藏,每日更新(全部已親自實(shí)踐). 一. ...
    東皇Amrzs閱讀 3,971評(píng)論 7 54
  • 1.Linux下如何用命令查看實(shí)時(shí)日志(完整命令) tail -f 路徑.log查看前多少行 tai-200f 路...
    qianyewhy閱讀 2,258評(píng)論 0 11
  • 大家都知道瓜挽,Linux系統(tǒng)提供了非常多非常多的命令或工具盹廷,這些命令都各有所長(zhǎng),都是系統(tǒng)需要的久橙。但我們精力有限俄占,要掌...
    劉振鋒閱讀 11,488評(píng)論 10 90
  • 文/七月田也 遇到這樣和你聊天的同事,你還能愉快的和他玩耍嗎碰凶? 1 業(yè)務(wù)水平一般,卻經(jīng)常對(duì)你說“那誰鹿驼,去干這個(gè)欲低,去...
    世微先生閱讀 5,712評(píng)論 26 9