linux的ln重要命令詳解

2021-07-05 04:03:37 字數 4575 閱讀 7669

linux下面編譯配置一些東西經常會找不到這個那個檔案的,很煩,今天簡單學習一下怎麼鏈結。

當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每乙個需要的目錄下都放乙個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後在其它的目錄下用ln命令鏈結(link)它就可以,不必重複的占用磁碟空間。例如:ln –s /bin/less /usr/local/bin/less

-s 是代號(symbolic)的意思。

這裡有兩點要注意:

第一,ln命令會保持每一處鏈結檔案的同步性,也就是說,不論你改動了哪一處,其它的檔案都會發生相同的變化;

第二,ln的鏈結又 軟鏈結和硬鏈結兩種,軟鏈結就是ln –s ** **,它只會在你選定的位置上生成乙個檔案的映象,不會占用磁碟空間,硬鏈結ln ** **,沒有引數-s, 它會在你選定的位置上生成乙個和原始檔大小相同的檔案,無論是軟鏈結還是硬鏈結,檔案都保持同步變化。

如果用ls看乙個目錄時,發現有的檔案後面有乙個@的符號且檔案或資料夾的顏色和別的不一樣,那就是乙個用ln命令生成的檔案,用ls –l命令去察看,就可以看到顯示的link的路徑了。

用途:鏈結檔案。

語法:將某個檔案鏈結到乙個檔案上

ln [ -f | -n] [ -s ] sourcefile [ targetfile ]

將乙個或多個檔案鏈結到乙個目錄上

ln [ -f | -n] [ -s ] sourcefile ... targetdirectory

描述ln 命令將在 sourcefile 引數中指定的檔案鏈結到在 targetfile 引數中指定的檔案,或將其鏈結到targetdirectory 引數中指定的另乙個目錄中的檔案。在預設情況下,ln 命令會建立硬鏈結。如果需要使用 ln 命令來建立符號鏈結,請指明 -s 標誌。

符號鏈結是指向檔案的乙個間接指標;它的目錄項中包含了它所鏈結的檔名。符號鏈結可能會跨越檔案系統,可能指向目錄。

如果正在將某個檔案鏈結到新的名字,那麼只能列出乙個檔案。如果鏈結到乙個目錄,那麼可以列出多個檔案。

targetfile 引數是可選的。如果不指定目標檔案,ln 命令會在當前的目錄中建立乙個新的檔案。新的檔案繼承了指定在 sourcefile 引數中的檔名。請參閱示例 5。

注意:

如果不使用 -s 標誌,就不能在檔案系統之間鏈結檔案。

如果 targetdirectory 已經是鏈結到目錄上的乙個符號鏈結,那麼 ln 命令將現有的目標視為檔案。這意味著,類似於 ln -fs somepath/lname symdir 的命令不會遵循現有的 symdir 符號鏈結,作為代替,它會建立乙個從 somepath/lname 到 symdir 的新的符號鏈結。

標誌:-f 促使 ln 命令替換掉任何已經存在的目的路徑。如果目的路徑已經存在,而沒有指定 -f 標誌,ln 命令不會建立新的鏈結,而是向標準錯誤寫一條診斷訊息並繼續鏈結剩下的 sourcefiles。

-n 指定,如果鏈結是乙個現有的檔案,那麼不要覆蓋檔案的內容。 -f 標誌重設了這個標誌。這是預設的行為。

-s 促使 ln 命令建立符號鏈結。符號鏈結中包含了它所鏈結的檔案的名字。當對鏈結執行開啟操作的時候,會使用到引用檔案。對符號鏈結的 stat 呼叫會返回鏈結的目標檔案;必須完成lstat 呼叫來獲取鏈結的資訊。可以使用 readlink 呼叫來讀取符號鏈結的內容。符號鏈結可能跨越檔案系統,指向目錄。

注意:當為 -s 標誌指定 sourcefile 引數的時候,必須使用絕對路徑。如果沒有指明絕對路徑,那麼當 sourcefile 和 targetfile 引數位於不同的目錄中的時候,可能會發生意外的結果。在建立符號鏈結之前,不需要存在原始檔。

退出狀態:

此命令返回以下的退出值:

0 所有指定的檔案都成功鏈結上了。

>0 出現一次錯誤。

說明 : linux/unix 檔案系統中,有所謂的鏈結(link),我們可以將其視為檔案的別名,而鏈結又可分為兩種 : 硬鏈結(hard link)與軟鏈結(symbolic link),硬鏈結的意思是乙個檔案可以有多個名稱,而軟鏈結的方式則是產生乙個特殊的檔案,該檔案的內容是指向另乙個檔案的位置。硬鏈結是存在同乙個檔 案系統中,而軟鏈結卻可以跨越不同的檔案系統。

1.軟鏈結,以路徑的形式存在。類似於windows作業系統中的快捷方式

2.軟鏈結可以 跨檔案系統 ,硬鏈結不可以

3.軟鏈結可以對乙個不存在的檔名進行鏈結

4.軟鏈結可以對目錄進行鏈結

1.硬鏈結,以檔案副本的形式存在。但不占用實際空間。

2.不允許給目錄建立硬鏈結

3.硬鏈結只有在同乙個檔案系統中才能建立

ln source dist 是產生乙個鏈結(dist)到 source,至於使用硬鏈結或軟鏈結則由引數決定。

不論是硬鏈結或軟鏈結都不會將原本的檔案複製乙份,只會占用非常少量的磁碟空間。

-f : 鏈結時先將與 dist 同檔名的檔案刪除

-d : 允許系統管理者硬鏈結自己的目錄

-i : 在刪除與 dist 同檔名的檔案時先進行詢問

-n : 在進行軟鏈結時,將 dist 視為一般的檔案

-s : 進行軟鏈結(symbolic link)

-v : 在鏈結之前顯示其檔名

-b : 將在鏈結時會被覆寫或刪除的檔案進行備份

-s suffix : 將備份的檔案都加上 suffix 的字尾

-v method : 指定備份的方式

--help : 顯示輔助說明

--version : 顯示版本

命令:

ln -s log2013.log link2013

(為log2013.log檔案建立軟鏈結link2013,如果log2013.log丟失,link2013將失效)

命令:

ln log2013.log ln2013

(為log2013.log建立硬鏈結ln2013,log2013.log與ln2013的各項屬性相同)

當原始檔被刪除後,並沒有影響硬鏈結檔案;軟鏈結檔案在centos系統下不斷的閃爍,提示原始檔已經不存在;當重建原始檔後,軟鏈結不在閃爍提示,說明已經鏈結成功,找到了鏈結檔案系統;重建後,硬鏈結檔案並沒有受到原始檔影響,硬鏈結檔案的內容還是保留了刪除前原始檔的內容,說明硬鏈結已經失效。

命令:

ln log2013.log test3

(在test3目錄中建立了log2013.log的硬鏈結,修改test3目錄中的log2013.log檔案,同時也會同步到原始檔)

命令:

ln -sv /opt/soft/test/test3 /opt/soft/test/test5

[root@localhost test]# ll

drwxr-xr-x 2 root root 4096 12-07 16:36 test3

drwxr-xr-x 2 root root 4096 12-07 16:57 test5

[root@localhost test]# cd test5

[root@localhost test5]# ll

lrwxrwxrwx 1 root root 5 12-07 16:57 test3 -> test3

[root@localhost test5]# cd test3

-bash: cd: test3: 符號連線的層數過多

[root@localhost test5]#

[root@localhost test5]#

[root@localhost test5]# ll

lrwxrwxrwx 1 root root 5 12-07 16:57 test3 -> test3

[root@localhost test5]# rm -rf test3

[root@localhost test5]# ll

[root@localhost test5]# ln -sv /opt/soft/test/test3 /opt/soft/test/test5

建立指向「/opt/soft/test/test3」的符號鏈結「/opt/soft/test/test5/test3」

[root@localhost test5]# ll

lrwxrwxrwx 1 root root 20 12-07 16:59 test3 -> /opt/soft/test/test3

[root@localhost test5]#

[root@localhost test5]# cd test3

[root@localhost test3]# ll

總計 4

-rw-r--r-- 2 root root 80 12-07 16:36 log2013.log

[root@localhost test3]# touch log2014.log

[root@localhost test3]# ll

總計 4

-rw-r--r-- 2 root root 80 12-07 16:36 log2013.log

-rw-r--r-- 1 root root 0 12-07 17:05 log2014.log

[root@localhost test3]# cd ..

[root@localhost test5]# cd ..



linux重要命令

釋義 命令引數 示例 列目錄ls a 包括隱藏檔案 l 看詳細資訊 f 在檔案後面顯示表示檔案型別的符號 重定向 ls xx.txt管道 cmd1 cmd2 左面的輸出會作為右邊的輸入 許可權chmod chomd 777 file 切目錄cd 注意大小寫敏感 增 刪目錄 mkdir rmdir r...

linux 重要命令

檢視當前程序運 況 ps aux grep php very good ps aux grep nginx 刪除軟體命令 sudo apt get remove purge nginx 刪除nginx purge表示連配置檔案一起刪除 sudo apt get autoremove purge ng...

Linux 基礎重要命令

1.建立乙個目錄 data mkdir data 命令總結 1 mkdir 建立目錄的命令,mkdir directorys 2 ls ld directory 顯示目錄或者檔案 ls的全稱是list 3 cd 切換目錄層次 change directory 4 pwd 列印當前工作目錄 pwd的全...