深解Unix操作系統(tǒng)命令
我們來學(xué)習(xí)命令導(dǎo)向讓Unix操作系統(tǒng)命令一氣呵成的知識。這部分是Unix操作系統(tǒng)命令基礎(chǔ)知識,希望大家可以好好的學(xué)習(xí)。
在Unix操作系統(tǒng)中有一個(gè)很實(shí)用的功能即命令導(dǎo)向功能。簡單的是說,命令導(dǎo)向就是可以把幾個(gè)單獨(dú)的命令通過導(dǎo)向符號把他們連接起來。現(xiàn)在用戶文件夾/mnt/share下總共有八十多個(gè)文件夾。但是現(xiàn)在系統(tǒng)工程師要確切知道這個(gè)share文件夾下文件夾與文件的確切數(shù)字,該怎么辦呢?若要一個(gè)個(gè)去數(shù),也可以。我們可以通過幾個(gè)相關(guān)的命令來實(shí)現(xiàn)。
***個(gè)Unix操作系統(tǒng)命令:文件列表命令
在Window系統(tǒng)中,可以通過dir命令來顯示某個(gè)特定目錄下面的文件夾與文件信息。其實(shí)在Unix系統(tǒng)中也有類似的命令,如ls文件列表命令。不過這個(gè)命令要比dir命令功能上要強(qiáng)的多。如ls命令后面加入-l參數(shù)還可以顯示各個(gè)文件夾與文件的權(quán)限信息。而dir命令沒有這方面的功能。
利用ls命令可以列出某個(gè)特定目錄下的文件。如現(xiàn)在系統(tǒng)工程師想要查看文件嘉share下面的文件以及文件夾信息,可以先定位到這個(gè)文件夾下,然后使用ls命令來查看所有的文件夾與文件信息。通常情況下,此時(shí)文件夾或者文件顯示的順序是按ascll碼進(jìn)行排序的。也就是說,按字母進(jìn)行排序,并且大寫字母會排在小寫字母之前。
如果這個(gè)文件夾下的文件(文件夾)數(shù)據(jù)不多的話,那么數(shù)數(shù)的話,也可以比較快的得到正確的結(jié)果。但是,若文件(文件夾)比較多的話,如一頁還顯示不完,此時(shí)若靠數(shù)的話,顯然不能夠很快得到正確的結(jié)果。此時(shí),就需要通過其他命令來幫助系統(tǒng)工程師來完成這個(gè)任務(wù)。
第二個(gè)Unix操作系統(tǒng)命令:輸出重定向功能
在實(shí)際工作中,系統(tǒng)工程師除了可以在終端輸入ls命令的執(zhí)行結(jié)果之外,還可以使用一個(gè)特殊的命令“>”(輸出重定向命令)把執(zhí)行結(jié)果保存到一個(gè)文件夾里。如可以通過ls > total 命令把ls命令顯示的結(jié)果保存在total文件中。當(dāng)系統(tǒng)工程師執(zhí)行完這個(gè)命令之后,系統(tǒng)除了在屏幕上出現(xiàn)一個(gè)提示符之外,將不會顯示任何相關(guān)的內(nèi)容。
這就是Unix操作系統(tǒng)下shell外殼的重定向功能。這個(gè)重定向功能可以把本來應(yīng)該在屏幕上顯示的內(nèi)容重定向到一個(gè)用戶指定的文件中。Shell外殼程序會先對重定向符號前面的命令進(jìn)行解釋并,注意此時(shí)只是解釋命令但是并不執(zhí)行。然后shell程序會打開重定向符號后面的文件。第三步才是執(zhí)行這個(gè)命令,并把搜索到的結(jié)果保存到用戶指定的文件中。
如果系統(tǒng)工程師要查看這個(gè)文件中的內(nèi)容,則可以通過cat命令來查詢。如cat total就可以查看這個(gè)文件中的內(nèi)容。
第三個(gè)Unix操作系統(tǒng)命令:統(tǒng)計(jì)文件的行數(shù)命令
雖然已經(jīng)通過輸出重定向功能,把share文件夾下的所有文件(文件夾)信息保存到了一個(gè)特定的文件下。但是,此時(shí)系統(tǒng)工程師仍然不能夠一目了然的知道文件夾下文件與文件夾的總個(gè)數(shù)。雖然通過一個(gè)個(gè)數(shù)也可以達(dá)到預(yù)計(jì)的目的,但是這個(gè)太麻煩。雖然可以省去ls命令卷屏的麻煩,不過準(zhǔn)確率仍然不是很高。此時(shí),系統(tǒng)工程師就需要用到統(tǒng)計(jì)文件行數(shù)的命令wc。
當(dāng)通過輸出重定向功能把ls的結(jié)果輸出到一個(gè)文件中后,在存儲的時(shí)候每個(gè)文件夾文件將會是獨(dú)立的一行。也就是說,如果能夠通過相關(guān)的命令統(tǒng)計(jì)出這個(gè)文件的行數(shù)字的話,那么這個(gè)行數(shù)就是文件或者文件夾總的個(gè)數(shù)。為了達(dá)到這個(gè)目的,系統(tǒng)工程師就可以通過wc total命令來統(tǒng)計(jì)這個(gè)文件中的行數(shù)。執(zhí)行這個(gè)命令后,系統(tǒng)會顯示如下一行內(nèi)容。
- $ wc tota 85 85 356 total
可惜的是,Unix操作系統(tǒng)的界面不怎么友好。在顯示的結(jié)果中,沒有標(biāo)明各個(gè)字段所代表的含義,在輸出的結(jié)果中僅僅顯示文件的統(tǒng)計(jì)數(shù)字以及文件名字。這就考驗(yàn)系統(tǒng)工程師的能力了。
有一定經(jīng)驗(yàn)的系統(tǒng)工程,看到這些數(shù)字就知道其代表的含義了。具體來說,這三個(gè)數(shù)字從坐到右分別表示這個(gè)total文件有85行、85個(gè)單詞以及356個(gè)字符。可見,這個(gè)share文件夾下總共有85個(gè)文件或者文件夾。為此不用系統(tǒng)工程師一個(gè)個(gè)去數(shù),只需要憑借一個(gè)簡單的wc統(tǒng)計(jì)命令,就可以統(tǒng)計(jì)出行數(shù),并由此判斷出特定文件夾下的文件總和。
但是,有人會提出疑問,若要統(tǒng)計(jì)一個(gè)文件夾下面文件以及文件夾的個(gè)數(shù),如此勞師動眾要執(zhí)行三個(gè)命令,那是否值得呢?確實(shí),這雖然比一個(gè)個(gè)的去數(shù)要方便、準(zhǔn)確一點(diǎn),但是分別執(zhí)行三個(gè)命令畢竟麻煩,而且還會產(chǎn)生中間文件(total)這個(gè)垃圾文件。得到結(jié)果后還要把這個(gè)文件刪除,可見確實(shí)蠻麻煩的。那么能否采取比較方面的策略呢?
這就要回到本篇文章的主題,即通過命令導(dǎo)向功能組合系統(tǒng)的相關(guān)命令,讓各個(gè)命令能夠一氣呵成,直接達(dá)到系統(tǒng)工程師的目的。如本文一開始顯示的那張圖中,可以通過命令導(dǎo)向符號“|”把相關(guān)的命令連接起來。如要達(dá)到上面這個(gè)目的,系統(tǒng)工程師可以先定位到share文件夾下,然后通過ls | wc命令來統(tǒng)計(jì)結(jié)果。具體的輸出如下:
- $ ls | wc 85 85 356 No filename;&
可見,通過這個(gè)命令其達(dá)到的效果就是上面三個(gè)命令總和。在上面的例子中,筆者先利用文件列表命令ls列出share目錄下的文件信息;然后通過輸出重定向符號>把輸出結(jié)果保存到一個(gè)文件中;***通過wc命令統(tǒng)計(jì)這個(gè)文件中的行數(shù)以得到share文件夾下的文件或者文件夾個(gè)數(shù)。而現(xiàn)在筆者則通過靈活的組合方式,直接求出某個(gè)特定文件夾下的文件個(gè)數(shù),根本不需要通過中間文件。
在上面的輸出結(jié)果中,也可以看出這個(gè)這個(gè)命令執(zhí)行過程中根本沒有產(chǎn)生不必要的垃圾文件。那么系統(tǒng)是如何實(shí)現(xiàn)這個(gè)目的呢?
雖然以上的顯示結(jié)果跟利用三個(gè)命令的顯示結(jié)果具有同樣的效果。但是他們的內(nèi)部處理還是有一點(diǎn)差異。利用$ ls | wc命令后,系統(tǒng)并沒有把ls命令顯示的結(jié)果輸出到一個(gè)臨時(shí)文件中。而是直接把命令執(zhí)行的結(jié)果導(dǎo)向到wc命令的輸入。故在這個(gè)過程中就不會產(chǎn)生任何的中間文件。事后也不需要花時(shí)間去刪除它。
在這個(gè)命令中使用了“|”符號,用這個(gè)符號來連接兩個(gè)不同的命令,實(shí)現(xiàn)把一個(gè)命令的輸出通過管道導(dǎo)向另一個(gè)命令的輸入。故我們也把這個(gè)特殊的性能叫做命令的導(dǎo)向功能。利用“|” 導(dǎo)向符號可以把多個(gè)Unix操作系統(tǒng)命令組合起來,來實(shí)現(xiàn)一些復(fù)雜的管理任務(wù)。如果利用的好的話,其作用就不只是簡單的統(tǒng)計(jì)文件夾個(gè)數(shù)那么簡單。
好了,關(guān)于Unix操作系統(tǒng)命令的知識我們就為大家介紹到這吧,希望大家可以好好學(xué)習(xí)。
【編輯推薦】

















