導航:首頁 > 文件類型 > linux怎樣打開鏈接文件

linux怎樣打開鏈接文件

發布時間:2024-12-30 01:30:56

1. linux軟鏈接要怎麼看內容

有可能是你來的軟鏈接指向了源一個無效的地址。正常情況下是可以直接打開或查看的。


請使用以下命令查看軟連接的指向:

➜~ls-l
total2784
lrwxr-xr-x1adminstaff571315:05file1.lnk->file1


然後直接打開原來的文件,試試能不能打開。

2. 【技術分享】Linux實體鏈接與符號鏈接

在 Linux 系統中,鏈接文件主要有兩種:一種是類似於 Windows 系統中的快捷方式,可以快速鏈接到目標文件(或目錄);另一種是通過文件系統的 inode 鏈接來產生新文件名,而不是創建新文件,這種稱為實體鏈接(hard link)。

· Hard Link(實體鏈接,硬式鏈接或實際鏈接):

每個文件都會佔用一個 inode,文件內容由 inode 的記錄來指向。想要讀取該文件,必須要經過目錄記錄的文件名來指向到正確的 inode 號碼才能讀取。

也就是說,文件名只與目錄有關,而文件內容則與 inode 有關。那麼,有沒有可能有多個文件名對應到同一個 inode 號碼呢?有的!這就是 hard link 的由來。簡單地講,hard link 只是在某個目錄下新增一筆文件名鏈接到某個 inode 號碼的關聯記錄而已。

舉個例子來說,假設系統中有 /root/crontab 是 /etc/crontab 的實體鏈接,也就是說這兩個文件名鏈接到同一個 inode,自然這兩個文件名的所有相關信息都會一模一樣(除了文件名之外)。

你可以發現兩個文件名都鏈接到 34474855 這個 inode 號碼,所以是否文件的許可權/屬性完全一樣呢?因為這兩個「文件名」其實是一模一樣的「文件」啦!而且你也會發現第二個欄位由原本的 1 變成 2 了!那個欄位稱為「鏈接」,這個欄位的意義為:「有多少個文件名鏈接到這個 inode 號碼」的意思。如果將讀取到正確數據的方式畫成示意圖,就類似如下畫面:

上圖的意思是,你可以通過 1 或 2 的目錄之 inode 指定的 block 找到兩個不同的文件名,而不管使用哪個文件名都可以指到 real 那個 inode 去讀取到最終數據!那這樣有什麼好處呢?最大的好處就是「安全」!如同上圖中,如果你將任何一個「文件名」刪除,其實 inode 與 block 都還是存在的!此時你可以通過另一個「文件名」來讀取到正確的文件數據喔!此外,不論你使用哪個「文件名」來編輯,最終的結果都會寫入到相同的 inode 與 block 中,因此均能進行數據的修改。

一般來說,使用 hard link 設置鏈接文件時,磁碟的空間與 inode 的數目都不會改變!我們還是由圖 7.2.1 來看,由圖中可以知道,hard link 只是在某個目錄下的 block 多寫入一個關聯數據而已,既不會增加 inode 也不會耗用 block 數量。

Tips hard link 的製作中,其實還是可能會改變系統的 block 的,那就是當你新增這筆數據卻剛好將目錄的 block 填滿時,就可能會新加一個 block 來記錄文件名關聯性,而導致磁碟空間的變化!不過,一般 hard link 所用掉的關聯數據量很小,所以通常不會改變 inode 與磁碟空間的大小。

其實我們也能夠知道,事實上 hard link 應該僅能在單一文件系統中進行的,應該是不能跨文件系統才對!因為就是在同一個 filesystem 上嘛!所以 hard link 是有限制的:

· 不能跨 Filesystem;

· 不能 link 目錄。

不能跨 Filesystem 還好理解,那不能 hard link 到目錄又是怎麼回事呢?這是因為如果使用 hard link 鏈接到目錄時,鏈接的數據需要連同被鏈接目錄下面的所有數據都創建鏈接,舉例來說,如果你要將 /etc 使用實體鏈接創建一個 /etc_hd 的目錄時,那麼在 /etc_hd 下面的所有文件名同時都與 /etc 下面的文件名要創建 hard link 的,而不是僅鏈接到 /etc_hd 與 /etc 而已。並且,未來如果需要在 /etc_hd 下面創建新文件時,連帶的,/etc 下面的數據又得要創建一次 hard link ,因此造成環境相當大的復雜度。所以啰,目前 hard link 對於目錄暫時還是不支持的啊!

· Symbolic Link(符號鏈接,亦即是捷徑)

相對於 hard link,Symbolic link 就好理解多了,基本上,Symbolic link 就是在創建一個獨立的文件,而這個文件會讓數據的讀取指向它 link 的那個文件的文件名!由於只是利用文件來做為指向的動作,所以,當來源文件被刪除之後,symbolic link 的文件會「開不了」,會一直說「無法打開某文件!」。實際上就是找不到原始「文件名」而已啦!

舉例來說,我們先創建一個符號鏈接文件鏈接到 /etc/crontab 去看看:

由上表的結果我們可以知道兩個文件指向不同的 inode 號碼,當然就是兩個獨立的文件存在!而且鏈接文件的重要內容就是它會寫上目標文件的「文件名」,你可以發現為什麼上表中鏈接文件的大小為 12 Bytes 呢?因為箭頭(-->)右邊的文件名「/etc/crontab」總共有 12 個英文,每個英文佔用 1 個 Bytes ,所以文件大小就是 12Bytes了!

關於上述的說明,我們以如下圖示來解釋:

由 1 號 inode 讀取到鏈接文件的內容僅有文件名,根據文件名鏈接到正確的目錄去取得目標文件的 inode,最終就能夠讀取到正確的數據了。你可以發現的是,如果目標文件(/etc/crontab)被刪除了,那麼整個環節就會無法繼續進行下去,所以就會發生無法通過鏈接文件讀取的問題了!

這里還是得特別留意,這個 Symbolic Link 與 Windows 的捷徑可以給它劃上等號,由 Symbolic link 所創建的文件為一個獨立的新的文件,所以會佔用掉 inode 與 block。

閱讀全文

與linux怎樣打開鏈接文件相關的資料

熱點內容
如何修改數據表的數據 瀏覽:476
找出取走了哪個數據 瀏覽:229
做app除了app還有哪些消費 瀏覽:276
哪個網站能查外國賽鴿腳環 瀏覽:134
win10更新後原來的系統文件 瀏覽:852
win10開機代碼錯誤怎麼解決 瀏覽:931
js控制hr標簽長度 瀏覽:551
win10刪除設置里的游戲嗎 瀏覽:893
win10無法視頻播放器 瀏覽:989
未來寬頻初始密碼 瀏覽:517
化妝品宣傳單是word做的嗎 瀏覽:237
gaussian文件 瀏覽:19
u盤里文件怎樣存入d盤 瀏覽:840
我國文娛行業數據怎麼收集 瀏覽:419
福建短租房app哪個好 瀏覽:429
出租葯師證書去哪個網站 瀏覽:148
怎麼打開py配置文件並修改 瀏覽:530
pdf格式的文件如何拷貝出某一頁 瀏覽:495
手機qq郵箱再添加一個文件夾 瀏覽:650
wp桌面文件夾刪除 瀏覽:80

友情鏈接