Linux 之檔案編程(三)

來源:互聯網
上載者:User

Linux之檔案編程中軟連結和永久連結的用法和區別

前言:在Linux中使用什麼來識別一個檔案呢?

我們先在終端上輸入命令: ls -i 看看會有什麼資訊出現。

think@ubuntu:~$ ls -i

顯示的資訊

1048577    bin        523 initrd.img       524289 mnt            1 sys
1179649   boot        13 initrd.img.old   655361 opt       793170

可以看到每個檔案前都有一個編號,在Linux中就是靠這個編號來識別一個檔案的。

那麼這些編號叫啥名字呢----》索引節點號

Tiger-John總結;

可以通過命令:  ls -i來查看一個檔案的索引號。

那什麼叫索引節點,它有什麼作用呢。

一.索引節點
Linux 檔案系統使用索引節點來記錄檔案資訊,索引節點是一個資料結構,它包含檔案的長度、建立時間、修改時間、許可權、所屬關係、磁碟中的位置等資訊。每個檔案或目錄都對應一個索引節點,檔案系統把所有的索引節點形成一個數組,系統給每個索引節點分配了一個號碼,也就是該節點在數組中的索引號,稱為索引節點號。檔案系統正是靠這個索引節點號來識別一個檔案。

我們上面提到了有一種檔案是連結檔案,它是幹麼的呢,有什麼作用?

1.連結

1>什麼叫連結:

對一個已經存在的檔案再建立一個新的連結,而不複製檔案的內容得使用者無論使用哪一個檔案名稱
都可以訪問到同一檔案,提高了檔案的共用。

2>在Linux中有永久連結和軟連結(就是我們所說的符號連結)之分。

3>永久連結(hard link)就是讓一個檔案對應一個或多個檔案名稱,或者說把我們使用的檔案名稱和檔案系統使用的節點號連結起來,這些檔案名稱可以在同一目錄或不同目錄。一個檔案有幾個檔案名稱,我們就說該檔案的連結數為幾。

(永久連結就好比給檔案令起了一個別名而已)

缺點:

一是不允許給目錄建立永久連結。

二是只有在同一檔案系統中的檔案之間才能建立連結。

人們始終是在不斷的追求完美,因此為了克服永久連結的缺點,----->就出現了符號連結。

4>符號連結實際上是一種特殊的檔案,這種檔案包含了另一個檔案的任意一個路徑名。這個路徑名指向位於任意一個檔案系統的任意檔案,甚至可以指向一個不存在的檔案。系統會自動把對符號連結的大部分操作(如讀、寫等)變為對源檔案的操作,但某些操作(如刪除等)就會直接在符號連結上完成。

因為符號連結實際上的存放的是一個檔案的路徑名,因此它可以跨目錄,跨檔案系統。但是這一切的優點,都是要付出巨大代價的----->軟連結要建立立一個索引節點。

-----------------------------------------------------------------------------------------------------------

說了這麼多我們來體驗下如何用shell命令來對一個已經存在的檔案建立一個連結呢?

二如何給一個檔案建立一個連結

1.給一個檔案建立一個永久連結

首先在終端輸入命令: ln  tiger.c  myhlink.c

就實現了個已經存在的檔案tiger.c 建立一個永久連結 myhlink.c。它們之間有什麼關係呢?

(永久連結都是指向同一個檔案,所以它們的索引節點號應該是相同的)

我們用命令來驗證下  : ls -i 可以看看是否到底他們的索引號相同。

過程執行個體:

think@ubuntu:~/test$ ln tiger.c myhlink.c
think@ubuntu:~/test$ ls -i
931356 myhlink.c  931356 tiger.c

通過上面所顯示的資訊可以看到它們的索引號是相同的。

2.給一個檔案建立一個符號連結

首先:在終端輸入命令: ln -s tiger.c myslink.c

然後:輸入名令:  ls -i

來看看它們之間的索引號是否相同?

(因為軟連結並沒有指向這個檔案,只是在這個檔案中存了原有檔案的地址,所以它們的索引號是不同的)

過程執行個體:

think@ubuntu:~/test$ ln -s tiger.c myslink.c
think@ubuntu:~/test$ ls -i
931346 myslink.c  931331 tiger.c

通過上面的結果可以看出它們兩者的索引編號不一樣。

Tiger-John總結:

1>用 shell 命令: ln  filename1  filename2 可以實現給filename1 建立一個永久連結filename2。

2> 用 shell 命令:ln -s filename1  filename2 可以實現給filename1 建立一個軟連結filename2。

3> 用 shell 命令: ls -i 可以查看檔案的索引號

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.