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