linux下普通文件和目錄文件區(qū)別有哪些

這篇文章給大家分享的是有關(guān)linux下普通文件和目錄文件區(qū)別有哪些的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到銅官網(wǎng)站設(shè)計(jì)與銅官網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋銅官地區(qū)。

文件權(quán)限一般可認(rèn)為是0 123 456 789,一共十位:

0:表示該文件的文件類(lèi)型。Windows里面是使用了一種文件關(guān)聯(lián)的技術(shù),通過(guò)擴(kuò)展名來(lái)關(guān)聯(lián)相應(yīng)的應(yīng)用程序,使得雙擊某個(gè)文件,就能達(dá)到調(diào)用相應(yīng)的應(yīng)用程序來(lái)打開(kāi)它的目的,這樣簡(jiǎn)單快捷。然而對(duì)于用戶(hù)來(lái)說(shuō),好處是方便,壞處是隱藏了一個(gè)實(shí)質(zhì)性的東西:文件的真正的類(lèi)型,與其擴(kuò)展名實(shí)際上是毫無(wú)關(guān)聯(lián)的。

舉例來(lái)說(shuō):一個(gè)純粹的文本文件,我可以給它命名“我的歌聲里.mp3”,然后在win下雙擊,會(huì)調(diào)用相應(yīng)的音樂(lè)播放器來(lái)打開(kāi),結(jié)果顯而易見(jiàn),肯定是錯(cuò)誤的。那反過(guò)來(lái),一個(gè)真正的MP3文件我也可以給它命名“花名冊(cè).txt”,在win下雙擊,一般會(huì)調(diào)用相應(yīng)的文本編輯器來(lái)打開(kāi),不過(guò)我說(shuō)你也知道,顯示的一定是亂碼。

上面兩個(gè)例子是為了說(shuō)明一個(gè)觀點(diǎn),某個(gè)文件真正的類(lèi)型與其擴(kuò)展名沒(méi)一毛錢(qián)關(guān)系。

那么在不知道文件擴(kuò)展名的情況下,如何知道文件的類(lèi)型呢?在Linux是這樣的。

Linux中文件類(lèi)型只有以下這幾種:

1.-,普通文件。

2.d,目錄文件,d是directory的簡(jiǎn)寫(xiě)。

3.l,軟連接文件,亦稱(chēng)符號(hào)鏈接文件,s是soft或者symbolic的簡(jiǎn)寫(xiě)。

4.b,塊文件,是設(shè)備文件的一種(還有另一種),b是block的簡(jiǎn)寫(xiě)。

5.c,字符文件,也是設(shè)備文件的一種(這就是第二種),c是character的文件。

Linux系統(tǒng)最原始的也只有這五種,所以第0位,只能是以上五者之一。

那么你會(huì)有疑問(wèn),

1.MP3文件是是哪種?答案:普通文件。

2.二進(jìn)制文件是哪種?答案:普通文件。

3.文本文件是哪種?答案:普通文件。

4.為什么硬連接沒(méi)有類(lèi)型表示?答案:硬連接和軟連接,名字上雖然只差一個(gè)字,本質(zhì)完全不同,硬連接也是文件。其類(lèi)型是普通文件。

為什么上面要說(shuō)這么多呢?目的是為下文做知識(shí)鋪墊。

那么 123-456-789 都好說(shuō),了解這塊兒的人都知道,他們只是 用戶(hù)-屬組-其他 這三組之間的區(qū)別,我們拿其中任意一組作為例子來(lái)講解rwx皆可。

r:read,w:write,x:execute。

我們應(yīng)該如何去記憶這兩者之間的區(qū)別呢??難道死記硬背?NO。

我們應(yīng)該知其然還得知其所以然,下面我試圖從這查詢(xún)文件以及內(nèi)容的本質(zhì)出發(fā),來(lái)闡述rwx權(quán)限在這兩者身上為何有不同的意義!

理解下面的所說(shuō)的,需要關(guān)于Linux的文件系統(tǒng)的知識(shí)做鋪墊。如果不知道inode這個(gè)概念,基本上就會(huì)很吃虧了。

再次強(qiáng)調(diào),文件的內(nèi)容和該文件當(dāng)時(shí)所用的文件名毫無(wú)關(guān)聯(lián);該文件的類(lèi)型,也與該文件當(dāng)時(shí)的文件名,毫無(wú)關(guān)系。

查看一個(gè)文件的內(nèi)容,實(shí)際上是這樣的一個(gè)過(guò)程:

舉例來(lái)說(shuō),你用了這個(gè)命令:cat /tmp/abc.txt

1.你只傳遞了一個(gè)絕對(duì)路徑,/tmp/abc.txt,系統(tǒng)首先要知道/tmp/abc.txt文件的inode是多少才行,如何得知呢?

2.記住一個(gè)規(guī)律,某文件的父目錄會(huì)(記錄)知道該文件的inode號(hào)!(此刻我想你是不是悟出一點(diǎn)什么了,不用急,接著往下看)

3.那么我得到“/tmp/abc.txt”這個(gè)文件名,我得先知道/tmp目錄的情況,要知道/tmp目錄的情況,我得先知道/目錄的情況,所以我就可以從/目錄開(kāi)始(假設(shè)/目錄的inode號(hào)是0,并且這是寫(xiě)死的),然后再去一張叫做inode-table的表中查找inode號(hào)0所指向的數(shù)據(jù)域,然后從數(shù)據(jù)域里面可以找到一些類(lèi)似于下面的內(nèi)容:(看起來(lái)像一張表,不是么?其實(shí)可以想象到,目錄文件就是一張表,存儲(chǔ)了它內(nèi)部有哪些文件名,以及該文件名對(duì)應(yīng)的inode號(hào))

文件名 inode號(hào)

bin 18

var 19

tmp 20

... ...

好了,我們從“/”,這個(gè)目錄文件中找到了“/tmp”文件名對(duì)應(yīng)的inode號(hào),就是20。(假設(shè)?。?/p>

4.然后我們通過(guò)inode號(hào)20,去inode-table里面找尋20對(duì)應(yīng)的數(shù)據(jù)域,然后從數(shù)據(jù)域中,我們又會(huì)找到一張表:(為什么又是表呢?因?yàn)椤?”是一個(gè)目錄,“/tmp”也是一個(gè)目錄,那當(dāng)然數(shù)據(jù)域里面存的還是表啦)

文件名 inode號(hào)

abc.txt 8899

bbb.mp3 10088

kkk.jpg 20000

... ...

好了,我們找到了/tmp/abc.txt的inode號(hào)了,就是8899。根據(jù)上面的規(guī)律,我們是不是又得去inode-table里面找8899號(hào)對(duì)應(yīng)的數(shù)據(jù)域了?對(duì),就是這樣。

5.我們找到inode號(hào)8899對(duì)應(yīng)的數(shù)據(jù)域,于是我們會(huì)發(fā)現(xiàn)如下一些內(nèi)容:

“abcdefg”(假設(shè)文件內(nèi)容就是這樣)

...

又有疑問(wèn)了,為毛這次不是表了?

答案:/tmp/abc.txt文件不是目錄文件了,它是一個(gè)普通文件,他存儲(chǔ)的一般都是一些字符串。

體現(xiàn)在本質(zhì)上:

普通文件:存儲(chǔ)普通數(shù)據(jù),一般就是字符串。

目錄文件:存儲(chǔ)了一張表,該表就是該目錄文件下,所有文件名和inode的映射關(guān)系。

從父目錄中獲得本文件的inode號(hào)---->找到inode-table表中找到這個(gè)inode號(hào)對(duì)應(yīng)的數(shù)據(jù)域中的起點(diǎn)以及其他信息---->去這個(gè)數(shù)據(jù)域中讀取該文件的內(nèi)容(普通文件的內(nèi)容一般是字符串,目錄文件的內(nèi)容是一張表)

如果你真心看懂上面我說(shuō)的了,那么接下來(lái)就變得簡(jiǎn)單多了。

關(guān)鍵就是訪(fǎng)問(wèn)任何一個(gè)文件,要看是否能搞到inode號(hào),搞不到就沒(méi)轍了。搞到inode就好說(shuō)了,拿著inode號(hào)去inode表中查找即可,最后找到數(shù)據(jù)域,那么就可以找到文件的內(nèi)容了

然后整個(gè)過(guò)程這不僅僅跟本文件權(quán)限有關(guān),還跟它的父目錄(還有父目錄的父目錄...)權(quán)限有關(guān)(是否能搞到本文件的inode)

體現(xiàn)在命令上:(話(huà)說(shuō)這才是最實(shí)際的表象)

======

對(duì)于普通文件來(lái)說(shuō),rwx的意義是:

r:可以獲得這個(gè)普通文件的名字和內(nèi)容。

w:可以修改這個(gè)文件的內(nèi)容和文件名??梢詣h除該文件,但是用戶(hù)會(huì)得到是否刪除寫(xiě)保護(hù)文件的prompt。

x:該文件是否具有被執(zhí)行的權(quán)限。

======

對(duì)于目錄文件來(lái)說(shuō),rwx的意義是:

r-x:可以進(jìn)入cd該目錄,可以獲得該目錄下存儲(chǔ)情況,但是不能修改這個(gè)目錄內(nèi)部存儲(chǔ)的文件(目錄)的名字,也不能在該目錄下新建文件和目錄

-wx:可以進(jìn)入cd該目錄,但是看不到該目錄下的存儲(chǔ)情況(ls不可用),可以往該目錄下添加、修改、刪除文件。可以通過(guò)cat來(lái)讀取該目錄下的文件or目錄的內(nèi)容,由于得不到該目錄下存儲(chǔ)了那些文件,在不知情的情況下只能通過(guò)猜,cat + 文件名獲得文件內(nèi)容,所以這樣依然不保密。

--x:可以進(jìn)入cd該目錄,看不到存儲(chǔ)情況,也不能往該目錄下添加、修改、刪除文件。但是依然可以通過(guò)cat + xx(猜)來(lái)獲得該目錄下的文件的內(nèi)容。

rw-:不能進(jìn)入cd該目錄,用ls僅僅可以獲得文件名和目錄名,因?yàn)楂@取不到這些文件的inode號(hào),當(dāng)然也不能獲得該目錄下的文件的內(nèi)容。不能往該目錄下添加、修改、刪除文件。

======

最后總結(jié)一下吧:

1.目錄文件雖然是文件(唉,誰(shuí)叫Linux的核心理念就是Everything is file),但是存儲(chǔ)內(nèi)容的只是一張表而已,關(guān)于文件名和inode號(hào)的映射關(guān)系。

2.文件的擴(kuò)展名和文件類(lèi)型之間,沒(méi)一毛錢(qián)關(guān)系。

3.文件的文件名和文件實(shí)際存儲(chǔ)內(nèi)容之間,沒(méi)一毛錢(qián)關(guān)系。

4.要知道如何查找到一個(gè)文件內(nèi)容的過(guò)程。

5.為什么同一個(gè)文件系統(tǒng)移動(dòng)文件要比跨文件系統(tǒng)快?

答:因?yàn)橹恍枰薷哪硞€(gè)目錄中路徑和inode對(duì)應(yīng)關(guān)系即可,不需要重新寫(xiě)一遍數(shù)據(jù)域。

6.什么是買(mǎi)來(lái)的500G的硬盤(pán),格式化完后總是少了達(dá)不到500G?

答:從本文可知,inode-table也是需要占用存儲(chǔ)空間的,所以缺少的一部分中inode-table占用了不少。

感謝各位的閱讀!關(guān)于“l(fā)inux下普通文件和目錄文件區(qū)別有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

新聞標(biāo)題:linux下普通文件和目錄文件區(qū)別有哪些
當(dāng)前鏈接:http://muchs.cn/article2/pppjoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)靜態(tài)網(wǎng)站、軟件開(kāi)發(fā)、定制網(wǎng)站、做網(wǎng)站移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站