java ls_linux ls 命令
ls 命令是 Linux 下最常用的命令之一,用來(lái)查詢目錄下的內(nèi)容(list directory contents)。本文將介紹其基本的用法和一些典型的用例。筆者使用的測(cè)試環(huán)境為 ubuntu 16.04。
基本輸出
直接在命令行中輸入 ls 并回車(chē)。這是最精簡(jiǎn)的用法,因?yàn)槲覀兪÷粤怂械倪x項(xiàng)和參數(shù),輸出的結(jié)果是當(dāng)前目錄下的文件名和目錄名:
文件名和目錄名稱被按照字母序混排在一起,以列為單位從左到右排列。需要注意的是此時(shí)的輸出并不包含隱藏文件和隱藏的目錄。
如果想要調(diào)整輸出結(jié)果的排序方式,可以使用 -r 選項(xiàng)來(lái)逆序輸出的順序:
$ ls -r
此時(shí)以 w 開(kāi)頭的名稱排在了第一個(gè)位置。-r 選項(xiàng)的含義為把排序方式顛倒,所以在使用其它方式排序后也可以使用這個(gè)選項(xiàng)來(lái)顛倒排序的結(jié)果。
顯示隱藏文件
在 Linux 中以 . 號(hào)(dot)開(kāi)頭的目錄和文件被理解為隱藏文件。ls 命令默認(rèn)不會(huì)列出這些文件,除非你指定了 -a 選項(xiàng)。-a 選項(xiàng)其實(shí)是顯示所有的文件,包含隱藏的文件和目錄。在用戶的家目錄下試試 ls -a 命令,你會(huì)發(fā)現(xiàn)有不少的隱藏目錄和隱藏文件呢!
上圖中以 . 開(kāi)頭的都是隱藏目錄或文件。
使用長(zhǎng)格式顯示更多信息
長(zhǎng)格式能夠提供更多的信息,比如文件和目錄的大小,最后更新的時(shí)間,所有者及其權(quán)限。使用 -l (小寫(xiě)的字母L) 選項(xiàng)可以輸出長(zhǎng)格式的信息:
此時(shí)每行顯示一個(gè)文件或者目錄的信息。第一個(gè)字母描述文件類(lèi)型:- 為一般文件,d 為目錄,l 為符號(hào)鏈接。接下來(lái)的 9 個(gè)字符說(shuō)明文件權(quán)限的信息:針對(duì)每個(gè)用戶、組以及除此以外的其它人。r 表示讀取,w 表示寫(xiě)入,x 表示執(zhí)行,如果未提供權(quán)限則是 -。
第二欄包含鏈接計(jì)數(shù)。第三欄和第四欄分別顯示所有者與所屬組。
第五欄則是以字節(jié)為單位顯示的文件大小。在 Linux 命令中,涉及到文件大小的地方,一般默認(rèn)是以字節(jié)為單位顯示的。這樣可讀性就不是很好。所以有了 -h 選項(xiàng)!這個(gè)選項(xiàng)的全稱是 –human-readable(給人讀的)。也就是以 K, M, G 等單位來(lái)顯示文件的大小:
在應(yīng)用 l 選項(xiàng)的同時(shí)應(yīng)用 h 選項(xiàng),會(huì)以合適的單位顯示文件大小,比如上圖中已經(jīng)變成以 K 為單位顯示了。
接下來(lái)的三欄是最后修改時(shí)的時(shí)間戳。顯示的順序?yàn)樵?#xff0c;日,年。但是仔細(xì)觀察你會(huì)發(fā)現(xiàn)只有一些行在年的位置顯示了年份(2017),其它的行在這個(gè)位置顯示的都是一個(gè)時(shí)間。這里有一個(gè)規(guī)則:最后修改時(shí)間如果超過(guò)六個(gè)月才顯示為年份,六個(gè)月以內(nèi)的則顯示為時(shí)間。如果你想要得到更精確的時(shí)間,可以同時(shí)使用 –full-time 選項(xiàng):
此時(shí)顯示的時(shí)間精度為百萬(wàn)分之一秒,并且會(huì)顯示出時(shí)區(qū)的信息。
關(guān)于時(shí)間戳我們還需要知道另外一點(diǎn),默認(rèn)在這里顯示的時(shí)間是 mtime。如果我們需要顯示 atime 或者是 ctime 該怎么辦?此時(shí)就要用到 –time 選項(xiàng)來(lái)設(shè)置時(shí)間戳顯示的時(shí)間類(lèi)型:
對(duì)比前面的圖片,設(shè)置為 atime 后,顯示的時(shí)間信息發(fā)生了明顯的變化。
通配符
在 ls 命令中使用通配符有時(shí)會(huì)產(chǎn)生一些比較奇怪的結(jié)果,接下來(lái)筆者將嘗試解釋通配符在 ls 命令中的使用方式。
在 ls 命令中使用 * 和 ?等通配符時(shí)首先發(fā)生的是 shell 的展開(kāi)!
Bash 會(huì)掃描命令行中的每一個(gè)單詞,如果在其中發(fā)現(xiàn)了 *, ? 或者是 [,那么這個(gè)單詞就被認(rèn)為是一個(gè)模式。然后用匹配的以字母序排列的文件名稱列表替換這個(gè)模式。說(shuō)簡(jiǎn)單點(diǎn),在 ls 命令執(zhí)行前,Bash 會(huì)進(jìn)行模式匹配并進(jìn)行替換。然后 ls 使用替換后的參數(shù)執(zhí)行命令。舉個(gè)例子:
$ ls test*
如果當(dāng)前目錄中有一個(gè)名為 test 的目錄和一個(gè)名為 testsql 的目錄,那么 Bash 替換完成后命令是這個(gè)樣子:
$ ls test testsql
所以上面的命令會(huì)列出這兩個(gè)目錄下的所有文件:
再來(lái)個(gè)例子,在用戶的家目錄下執(zhí)行下面的命令:
$ ls D*
用戶家目錄下一般會(huì)存在 Desktop,Documents 和 Downloads 目錄,所以 D* 會(huì)被展開(kāi)為 “Desktop Documents Downloads”,最終 ls 執(zhí)行的命令變成了:
$ ls Desktop Documents Downloads
這些目錄下的文件都會(huì)被添加到命令的輸出中。
好了,當(dāng)你理解了 Bash 展開(kāi)的過(guò)程后,我想你就可以解釋那些乍一看讓人摸不著頭腦的輸出結(jié)果了!
關(guān)于通配符,還有一點(diǎn)需要注意:默認(rèn)不會(huì)匹配到隱藏的文件,即便指定 a 選項(xiàng)也不行:
如果要匹配隱藏文件,需要顯式的指定 . 號(hào),比如:
$ ls -d .*
這里的 d 選項(xiàng)本身與隱藏文件無(wú)關(guān),我們會(huì)在接下來(lái)詳細(xì)介紹。
d 選項(xiàng)詳解
d 選項(xiàng)的描述為:顯示目錄自身,而不顯示其內(nèi)容。所以使用 d 選項(xiàng)可以輕松的查看當(dāng)前目錄或是指定目錄的信息:
如果去掉 d 選項(xiàng)則會(huì)輸出這些目錄下的內(nèi)容。
d 選項(xiàng)還能夠在使用通配符過(guò)濾時(shí)保證子目錄的內(nèi)容不會(huì)被輸出:
這是一種比較常見(jiàn)的使用方式,加上 d 選項(xiàng)能保證結(jié)果符合我們的預(yù)期。
我們還可以通過(guò) d 選項(xiàng)過(guò)濾出當(dāng)前目錄下的所有子目錄:
$ ls –d */
看上去很神奇,其實(shí)這與我們前面執(zhí)行的 ls -d my* 命令是一樣的,只不過(guò)這次 Bash 過(guò)濾了以 / 號(hào)結(jié)尾的名稱,而以 / 號(hào)結(jié)尾的名稱都是目錄的名稱!
排序
ls 命令的輸出默認(rèn)是以字母序排列的,只是隱藏文件的 . 號(hào)沒(méi)有參與排序規(guī)則。除了字母序,我們還能以文件的大小或最后修改時(shí)間為排序條件。
S 選項(xiàng)會(huì)以文件的大小為條件排列輸出的結(jié)果:
默認(rèn)的順序?yàn)閺拇蟮叫∨帕?#xff0c;你可以使用 r 選項(xiàng)來(lái)反轉(zhuǎn)這個(gè)順序。需要注意的是,所有目錄的大小都是一樣的,總為 4096 字節(jié)。
t 選項(xiàng)默認(rèn)則以文件的最后修改時(shí)間(mtime)為條件排列輸出的結(jié)果:
默認(rèn)的順序?yàn)樽钚滦薷牡奈募谧铐敹?#xff0c;你可以使用 r 選項(xiàng)來(lái)反轉(zhuǎn)這個(gè)順序。這里你還可以通過(guò) –time 選項(xiàng)改變長(zhǎng)格式輸出的時(shí)間類(lèi)型(比如 atime 或 ctime),t 選項(xiàng)會(huì)以你指定的時(shí)間類(lèi)型進(jìn)行排序。
區(qū)分文件與目錄
F 選項(xiàng)可以用來(lái)區(qū)分目錄與文件。默認(rèn)情況下 p 與 F 選項(xiàng)的表現(xiàn)是相同的。都是在目錄的結(jié)尾添加斜線(/):
因此在命令中我們可以通過(guò)結(jié)尾處的斜線(/)過(guò)濾出文件:
$ ls -F |grep -v /
$ ls -p |grep -v /
或過(guò)濾出目錄:
$ ls -F |grep /$
$ ls -p |grep /$
總結(jié)
除了本文介紹的基本用法和常用的選項(xiàng),ls 命令還有很多的選項(xiàng)可以提供更多的功能。比如 i 選項(xiàng)可以顯示文件的 inode 信息等等。所以 ls 是一個(gè)看似簡(jiǎn)單實(shí)則功能強(qiáng)大的命令。
https://www.cnblogs.com/sparkdev/tag/Linux/default.html
總結(jié)
以上是生活随笔為你收集整理的java ls_linux ls 命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工作不满一年有13薪吗 要看公司的规定是
- 下一篇: linux怎么命令设置网络连接,Linu