91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux下普通文件和目錄文件區別有哪些

發布時間:2021-07-14 13:57:06 來源:億速云 閱讀:126 作者:小新 欄目:系統運維

這篇文章給大家分享的是有關linux下普通文件和目錄文件區別有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

文件權限一般可認為是0 123 456 789,一共十位:

0:表示該文件的文件類型。Windows里面是使用了一種文件關聯的技術,通過擴展名來關聯相應的應用程序,使得雙擊某個文件,就能達到調用相應的應用程序來打開它的目的,這樣簡單快捷。然而對于用戶來說,好處是方便,壞處是隱藏了一個實質性的東西:文件的真正的類型,與其擴展名實際上是毫無關聯的。

舉例來說:一個純粹的文本文件,我可以給它命名“我的歌聲里.mp3”,然后在win下雙擊,會調用相應的音樂播放器來打開,結果顯而易見,肯定是錯誤的。那反過來,一個真正的MP3文件我也可以給它命名“花名冊.txt”,在win下雙擊,一般會調用相應的文本編輯器來打開,不過我說你也知道,顯示的一定是亂碼。

上面兩個例子是為了說明一個觀點,某個文件真正的類型與其擴展名沒一毛錢關系。

那么在不知道文件擴展名的情況下,如何知道文件的類型呢?在Linux是這樣的。

Linux中文件類型只有以下這幾種:

1.-,普通文件。

2.d,目錄文件,d是directory的簡寫。

3.l,軟連接文件,亦稱符號鏈接文件,s是soft或者symbolic的簡寫。

4.b,塊文件,是設備文件的一種(還有另一種),b是block的簡寫。

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

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

那么你會有疑問,

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

2.二進制文件是哪種?答案:普通文件。

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

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

為什么上面要說這么多呢?目的是為下文做知識鋪墊。

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

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

我們應該如何去記憶這兩者之間的區別呢??難道死記硬背?NO。

我們應該知其然還得知其所以然,下面我試圖從這查詢文件以及內容的本質出發,來闡述rwx權限在這兩者身上為何有不同的意義!

理解下面的所說的,需要關于Linux的文件系統的知識做鋪墊。如果不知道inode這個概念,基本上就會很吃虧了。

再次強調,文件的內容和該文件當時所用的文件名毫無關聯;該文件的類型,也與該文件當時的文件名,毫無關系。

查看一個文件的內容,實際上是這樣的一個過程:

舉例來說,你用了這個命令:cat /tmp/abc.txt

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

2.記住一個規律,某文件的父目錄會(記錄)知道該文件的inode號!(此刻我想你是不是悟出一點什么了,不用急,接著往下看)

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

文件名 inode號

bin 18

var 19

tmp 20

... ...

好了,我們從“/”,這個目錄文件中找到了“/tmp”文件名對應的inode號,就是20。(假設啊)

4.然后我們通過inode號20,去inode-table里面找尋20對應的數據域,然后從數據域中,我們又會找到一張表:(為什么又是表呢?因為“/”是一個目錄,“/tmp”也是一個目錄,那當然數據域里面存的還是表啦)

文件名 inode號

abc.txt 8899

bbb.mp3 10088

kkk.jpg 20000

... ...

好了,我們找到了/tmp/abc.txt的inode號了,就是8899。根據上面的規律,我們是不是又得去inode-table里面找8899號對應的數據域了?對,就是這樣。

5.我們找到inode號8899對應的數據域,于是我們會發現如下一些內容:

“abcdefg”(假設文件內容就是這樣)

...

又有疑問了,為毛這次不是表了?

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

體現在本質上:

普通文件:存儲普通數據,一般就是字符串。

目錄文件:存儲了一張表,該表就是該目錄文件下,所有文件名和inode的映射關系。

從父目錄中獲得本文件的inode號---->找到inode-table表中找到這個inode號對應的數據域中的起點以及其他信息---->去這個數據域中讀取該文件的內容(普通文件的內容一般是字符串,目錄文件的內容是一張表)

如果你真心看懂上面我說的了,那么接下來就變得簡單多了。

關鍵就是訪問任何一個文件,要看是否能搞到inode號,搞不到就沒轍了。搞到inode就好說了,拿著inode號去inode表中查找即可,最后找到數據域,那么就可以找到文件的內容了

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

體現在命令上:(話說這才是最實際的表象)

======

對于普通文件來說,rwx的意義是:

r:可以獲得這個普通文件的名字和內容。

w:可以修改這個文件的內容和文件名。可以刪除該文件,但是用戶會得到是否刪除寫保護文件的prompt。

x:該文件是否具有被執行的權限。

======

對于目錄文件來說,rwx的意義是:

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

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

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

rw-:不能進入cd該目錄,用ls僅僅可以獲得文件名和目錄名,因為獲取不到這些文件的inode號,當然也不能獲得該目錄下的文件的內容。不能往該目錄下添加、修改、刪除文件。

======

最后總結一下吧:

1.目錄文件雖然是文件(唉,誰叫Linux的核心理念就是Everything is file),但是存儲內容的只是一張表而已,關于文件名和inode號的映射關系。

2.文件的擴展名和文件類型之間,沒一毛錢關系。

3.文件的文件名和文件實際存儲內容之間,沒一毛錢關系。

4.要知道如何查找到一個文件內容的過程。

5.為什么同一個文件系統移動文件要比跨文件系統快?

答:因為只需要修改某個目錄中路徑和inode對應關系即可,不需要重新寫一遍數據域。

6.什么是買來的500G的硬盤,格式化完后總是少了達不到500G?

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

感謝各位的閱讀!關于“linux下普通文件和目錄文件區別有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汉寿县| 腾冲县| 冀州市| 许昌市| 迭部县| 咸阳市| 巧家县| 新蔡县| 汤原县| 岱山县| 宿州市| 保亭| 青田县| 香格里拉县| 城固县| 泰兴市| 榆中县| 阳春市| 师宗县| 肃宁县| 荆州市| 汕头市| 安宁市| 筠连县| 通道| 花莲市| 都兰县| 呼图壁县| 葵青区| 达日县| 宝兴县| 永新县| 新建县| 奇台县| 耒阳市| 巴彦县| 中阳县| 龙门县| 怀来县| 泌阳县| 中宁县|