ln命令解析 學習筆記

2021-09-20 23:17:26 字數 4753 閱讀 2584

參考:man,info,magedu講義

宣告:以下英文純屬個人翻譯,英文b級,歡迎糾正,盜版不糾,才能有限,希望不誤人子弟為好。

1、使用目的與場景

2、官方說明

make links between files

3、寫在前面

不管是說cp,mv.rm,還有檔案的許可權管理來說,都離不開對資料的元資料和資料基本的inode的操作,我們要先了解檔案存放在磁碟空間的形式是inode表與資料存放塊的表,目錄也是檔案,只不過它的date裡存放的是檔名與子目錄對應的inode號而已。關於link和symlink,硬鏈結和軟鏈結的概念可以自行 man 2 link 和man 2 symlink 檢視。

4、修改檔案及涉及的環境變數

5、用法 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

提要:

ln[option]... [-t] target link_name    (1st form)

ln[option]... target            (2nd form)

ln[option]... target... directory     (3rd form)

ln[option]... -t directory target...   (4th form)

引數描述:

--backup[=control]  為每乙個存在的目標檔案生成乙個備份

-b  類似--backup 但是不接收引數

-d, -f, --directory 允許超級使用者嘗試硬鏈結目錄

(注意: 由於系統制約, 可能會失敗即使是超級使用者)

-f, --force       移除存在的目標檔案?

-i, --interactive   提示是否移除目標

-l, --logical    對符號鏈結的原始檔生成乙個硬鏈結

-n, --no-dereference

-p, --physical    生成乙個符號鏈結的硬鏈結,相當於備份一下符號鏈結

-s, --suffix=suffix  重寫通常的備份字尾名

-t, --target-directory=directory 指定要在其中建立硬鏈結的目錄

-t, --no-target-directory     將 link_name 作為普通檔案處理

-v, 顯示建立的鏈結的過程

注意:

備份預設字尾是"^",除非指定-s --suffix=suffix或者--backup[=control]

使用-s建立軟鏈結時-lp是無效的,沒有-s時,看lp誰在後誰生效。

6、命令背後的哪些事(原理解析)

此處應該插入的更直觀,我還沒想好用什麼工具怎麼畫,以後再搞。

ln 是針對inode表的乙個操作,所以無法跨分割槽的磁碟的,因為inode是針對分割槽而言唯一的,

ln 建立乙個硬鏈結的過程就是在這個link_name檔案的父目錄的inode表中新增一項內容link_name↘target檔案的inode號。

ln -s 建立乙個符號鏈結的過程呢就是在symbolic_link_name的父目錄下建立一項內容symbolic_link_name↘symbolic_link_name_inode,而symbolic_link_name_inode的內容寫的是target pathname,這裡的pathname可以相對路徑(target file相對symbolic_link_name的相對路徑)也可以是絕對路徑。

總而言之,link改變的是磁碟空間,symbolic link 改變的是磁碟空間和inode數量。

7、cp,rm,mv和軟硬連線的哪些事

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

cp:

cp[option]... [-t] source dest

cp[option]... source... directory

cp[option]... -t directory source...

-l   --link          生成乙個硬鏈結而不是目錄的副本,

-s  --sysmbolic-link 生成乙個軟鏈結而不是目錄的副本,source從/開始,寫絕對路徑

#    -l -s 後面都不能加目錄,跟上目錄都是複製的效果,相當於sl的功能是失效的。

-d   複製符號鏈結而不是鏈結的原始檔

-p   後面接的是source是符號鏈結,複製鏈結符號本身而不是鏈結檔案

-h   當cp指定的引數是乙個symbolic-link的時候,複製的是symbolic-link的原始檔而不是

symbolic-link 目錄裡面的sl不會做操作,只對第一層進行操作

-l   和-h有啥區別?-l在源裡面的sl檔案複製到目標檔案裡是真實的檔案內容,但是名字不變

還是sl的名字,-l操作的檔案裡沒有符號鏈結檔案了。dest也是乙個檔案而不是sl檔案。

遞迴進行操作。

#ps. 此處應該插入測試更直觀。

Linux學習筆記 5 鏈結命令ln

把原檔案生成乙個鏈結的目標檔案,分為軟連線和硬鏈結。具有相同的i節點和儲存block塊。當使用者去搜尋乙個檔案時,會先去查檔案索引表,找到儲存位置,然後再去硬碟裡這些位置的block塊拿出資料塊返回給使用者。硬鏈結的檔案具有相同的i節點號,那麼在檔案索引表中找到的就是同一行,記錄的儲存位置也必然是一...

linux 下ln命令 筆記

linux 下ln命令 ln命令用來為檔案建立連線,連線型別分為硬連線和符號連線兩種,預設的連線型別是硬連線。如果要建立符號連線必須使用 s 選項。注意 符號鏈結檔案不是乙個獨立的檔案,它的許多屬性依賴於原始檔,所以給符號鏈結檔案設定訪問許可權是沒有意義的。ln sf a b 建立軟連線,b指向a ...

linux下ln命令學習

這是linux中乙個非常重要命令,請大家一定要熟悉。它的功能是為某乙個檔案或目錄在另外乙個位置建立乙個同步的鏈結,類似windows下的超級鏈結。這個命令最常用的引數是 s,具體用法是 sudo ln s 原始檔 目標檔案 舉例 當前目錄是 local,而我經常要訪問 usr local linux...