国产精品国产三级国产试看,香蕉人精品视频多人免费永久视频,宅男噜噜噜66一区二区,天天插天天射,女人体(1963)菠萝蜜视频,97在线视频人妻无码一区,精品久久久久精品色婷婷综合

網(wǎng)站首頁
手機(jī)版

linux下普通文件和目錄文件有什么區(qū)別 linux中文件和目錄的區(qū)別

更新時間:2023-07-11 00:10:02作者:未知

linux下普通文件和目錄文件有什么區(qū)別 linux中文件和目錄的區(qū)別

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

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

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

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

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

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

  1.-,普通文件。

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

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

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

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

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

  那么你會有疑問,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  文件名 inode號

  bin 18

  var 19

  tmp 20

  ... ...

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

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

  文件名 inode號

  abc.txt 8899

  bbb.mp3 10088

  kkk.jpg 20000

  ... ...

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

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

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

  ...

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

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

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

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

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

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

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

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

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

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

  ======

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

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

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

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

  ======

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

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

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

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

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

  ======

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

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

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

  3.文件的文件名和文件實際存儲內(nèi)容之間,沒一毛錢關(guān)系。

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

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

  答:因為只需要修改某個目錄中路徑和inode對應(yīng)關(guān)系即可,不需要重新寫一遍數(shù)據(jù)域。

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

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

本文標(biāo)簽: 文件  目錄  內(nèi)容  

為您推薦

linux下普通文件和目錄文件有什么區(qū)別 linux中文件和目錄的區(qū)別

linux下普通文件和目錄文件有什么區(qū)別 文件權(quán)限一般可認(rèn)為是0 123 456 789,一共十位: 0:表示該文件的文件類型.Windows里面是使用了一種文

2023-07-11 00:10

vmware下ubuntu

vmware下ubuntu(linux)與主機(jī)文件共享如何設(shè)置 通常情況虛擬機(jī)vmware下安裝Linux(ubuntu)系統(tǒng)中的文件與主機(jī)之間共享對大多數(shù)電腦

2023-07-11 00:10

Linux下的粘滯位是什么 linux 粘著位

Linux下的粘滯位是什么 Linux下的粘滯位詳解 1.產(chǎn)生粘滯位的原因: Linux下有一個用于存放臨時文件的目錄 /temp,每一個用戶產(chǎn)生的臨時文件都存

2023-07-11 00:10

如何備份及恢復(fù)Linux文件權(quán)限 如何備份及恢復(fù)linux文件權(quán)限命令

如何備份及恢復(fù)Linux文件權(quán)限 你可能聽說或碰到過這樣的事情:一個系統(tǒng)管理員菜鳥不小心輸入"chmod -R 777 /"從而導(dǎo)致了巨大的悲劇,使得整個系統(tǒng)遭

2023-07-11 00:08

Linux系統(tǒng)Centos沒有網(wǎng)卡eth0配置文件如何解決

Linux系統(tǒng)Centos沒有網(wǎng)卡eth0配置文件如何解決 大家都知道linux系統(tǒng)一般作為服務(wù)器來用,而且很多情況的設(shè)置都是需要通過字符界面修改配置文件來設(shè)置

2023-07-11 00:08

linux如何修改分區(qū)id 怎么修改分區(qū)

linux如何修改分區(qū)id 1.輸入fdisk /dev/dhb fdisk后面接上設(shè)備名稱(IDE硬盤是HD SICI\STA硬盤是 SD) 可以先用fldi

2023-07-11 00:08