每天一個linux命(ming)令(ling)(35):ln 命(ming)令(ling)
ln是linux中又一(yi)個(ge)(ge)非常重要(yao)(yao)命(ming)令,它(ta)(ta)的(de)功能是為某一(yi)個(ge)(ge)文(wen)件(jian)在(zai)另(ling)外一(yi)個(ge)(ge)位(wei)置建立一(yi)個(ge)(ge)同步的(de)鏈接(jie)(jie).當我(wo)們(men)需要(yao)(yao)在(zai)不(bu)(bu)同的(de)目錄(lu),用(yong)(yong)到相(xiang)同的(de)文(wen)件(jian)時,我(wo)們(men)不(bu)(bu)需要(yao)(yao)在(zai)每一(yi)個(ge)(ge)需要(yao)(yao)的(de)目錄(lu)下都(dou)放一(yi)個(ge)(ge)必須(xu)相(xiang)同的(de)文(wen)件(jian),我(wo)們(men)只要(yao)(yao)在(zai)某個(ge)(ge)固定(ding)的(de)目錄(lu),放上該文(wen)件(jian),然后(hou)在(zai) 其它(ta)(ta)的(de)目錄(lu)下用(yong)(yong)ln命(ming)令鏈接(jie)(jie)(link)它(ta)(ta)就可以(yi),不(bu)(bu)必重復的(de)占用(yong)(yong)磁盤(pan)空間。
1.命令格式:
ln [參(can)數][源文件或目(mu)錄][目(mu)標文件或目(mu)錄]
2.命令(ling)功能:
Linux文件系統中,有(you)所謂的(de)鏈接(link),我們可以將其視為檔案(an)的別名(ming),而(er)鏈(lian)接(jie)又可分(fen)為兩種 : 硬鏈接(hard link)與軟鏈接(symbolic link),硬鏈接的意思是一個檔案可以有多個名稱,而軟鏈(lian)接的方式則是產生(sheng)一個特殊的檔(dang)案,該檔(dang)案的內容是指向另一個檔(dang)案的位(wei)置。硬鏈接是(shi)存在同一個文件(jian)系(xi)統中(zhong),而軟鏈(lian)接卻可(ke)以跨(kua)越(yue)不同的文(wen)件系統。
軟鏈接:
1.軟鏈接,以路徑的形式(shi)存在。類似于Windows操作系統中的快捷方(fang)式(shi)
2.軟鏈(lian)接(jie)可以 跨文件系統(tong) ,硬(ying)鏈接不可以
3.軟鏈接可以對(dui)一個不存(cun)在的(de)文件名進行(xing)鏈接(jie)
4.軟鏈接可以對(dui)目錄(lu)進行鏈接
硬鏈接:
1.硬鏈接,以文件副本的形式存在。但(dan)不占(zhan)用實際(ji)空(kong)間。
2.不允許給目(mu)錄創建(jian)硬鏈接
3.硬鏈接(jie)只有在同一個(ge)文件(jian)系統中(zhong)才能(neng)創建
這里有兩點要注意:
第一(yi),ln命令會(hui)保持每一(yi)處鏈接文(wen)件(jian)的(de)同步性,也就是說,不論你改(gai)動了哪(na)一(yi)處,其它的(de)文(wen)件(jian)都會(hui)發生相同的(de)變化;
第二,ln的(de)鏈(lian)(lian)接(jie)又分軟(ruan)鏈(lian)(lian)接(jie)和硬(ying)鏈(lian)(lian)接(jie)兩種(zhong),軟(ruan)鏈(lian)(lian)接(jie)就是ln –s 源文(wen)(wen)件(jian)(jian)(jian) 目標(biao)文(wen)(wen)件(jian)(jian)(jian),它只會(hui)在你選(xuan)(xuan)定(ding)的(de)位置上生成(cheng)一個文(wen)(wen)件(jian)(jian)(jian)的(de)鏡像,不會(hui)占用(yong)磁(ci)盤空間,硬(ying)鏈(lian)(lian)接(jie) ln 源文(wen)(wen)件(jian)(jian)(jian) 目標(biao)文(wen)(wen)件(jian)(jian)(jian),沒有參數-s, 它會(hui)在你選(xuan)(xuan)定(ding)的(de)位置上生成(cheng)一個和源文(wen)(wen)件(jian)(jian)(jian)大小相同的(de)文(wen)(wen)件(jian)(jian)(jian),無(wu)論(lun)是軟(ruan)鏈(lian)(lian)接(jie)還是硬(ying)鏈(lian)(lian)接(jie),文(wen)(wen)件(jian)(jian)(jian)都保持同步變(bian)化。
ln指(zhi)令用在鏈接文件(jian)或(huo)(huo)目(mu)錄(lu),如同時(shi)指(zhi)定(ding)兩(liang)個以上的(de)文件(jian)或(huo)(huo)目(mu)錄(lu),且(qie)最后的(de)目(mu)的(de)地是(shi)一個已經(jing)存在的(de)目(mu)錄(lu),則會把前面(mian)指(zhi)定(ding)的(de)所有文件(jian)或(huo)(huo)目(mu)錄(lu)復制到該目(mu)錄(lu)中。若同時(shi)指(zhi)定(ding)多個文件(jian)或(huo)(huo)目(mu)錄(lu),且(qie)最后的(de)目(mu)的(de)地并(bing)非是(shi)一個已存在的(de)目(mu)錄(lu),則會出現錯(cuo)誤信(xin)息(xi)。
3.命令參數(shu):
必要參數:
-b 刪(shan)除,覆蓋以前建立的鏈(lian)接(jie)
-d 允(yun)許超級用戶制(zhi)作(zuo)目錄的硬鏈接
-f 強制(zhi)執行
-i 交互模式,文件存(cun)在(zai)則提示用戶是(shi)否覆蓋
-n 把符號鏈接視為(wei)一般目錄
-s 軟鏈(lian)接(符號鏈(lian)接)
-v 顯(xian)示詳細(xi)的處(chu)理過程
選擇參數:
-S “-S<字(zi)尾備份字(zi)符串> ”或 “--suffix=<字(zi)尾備份字(zi)符串>”
-V “-V<備(bei)(bei)份方(fang)式>”或“--version-control=<備(bei)(bei)份方(fang)式>”
--help 顯示幫助信(xin)息(xi)
--version 顯示(shi)版(ban)本信(xin)息
4.使用實(shi)例:
實(shi)例1:給文件創建軟鏈接
命令:
ln -s log2013.log link2013
輸(shu)出:
[root@localhost test]# ll
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln -s log2013.log link2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
說明:
為log2013.log文(wen)件創建(jian)軟鏈接link2013,如果(guo)log2013.log丟失,link2013將失效
實例2:給文件創(chuang)建硬鏈接
命令:
ln log2013.log ln2013
輸出:
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln log2013.log ln2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 2 root bin 61 11-13 06:03 ln2013
-rw-r--r-- 2 root bin 61 11-13 06:03 log2013.log
說(shuo)明:
為log2013.log創建(jian)硬(ying)鏈(lian)接ln2013,log2013.log與ln2013的各(ge)項屬性相同
實例3:接上面兩實例,鏈接完畢后,刪除和(he)重(zhong)建(jian)鏈接原文件
命(ming)令:
輸出:
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 2 root bin 61 11-13 06:03 ln2013
-rw-r--r-- 2 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# rm -rf log2013.log
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 ln2013
[root@localhost test]# touch log2013.log
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 ln2013
---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root root 0 12-07 16:19 log2013.log
[root@localhost test]# vi log2013.log
2013-01
2013-02
2013-03
2013-04
2013-05
2013-06
2013-07
2013-08
2013-09
2013-10
2013-11
2013-12[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 ln2013
-rw-r--r-- 1 root root 96 12-07 16:21 log2013.log
[root@localhost test]# cat link2013
2013-01
2013-02
2013-03
2013-04
2013-05
2013-06
2013-07
2013-08
2013-09
2013-10
2013-11
2013-12
[root@localhost test]# cat ln2013
hostnamebaidu=baidu.com
hostnamesina=sina.com
hostnames=true
說(shuo)明:
1.源文(wen)件(jian)被刪除后,并沒有影響硬鏈接(jie)文(wen)件(jian);軟鏈接(jie)文(wen)件(jian)在centos系統下不斷(duan)的閃爍,提示源文(wen)件(jian)已經不存在
2.重建源(yuan)文件(jian)后(hou),軟鏈(lian)接(jie)(jie)不在(zai)閃爍提示,說(shuo)明已(yi)經(jing)(jing)鏈(lian)接(jie)(jie)成(cheng)功,找到了鏈(lian)接(jie)(jie)文件(jian)系統(tong);重建后(hou),硬鏈(lian)接(jie)(jie)文件(jian)并沒(mei)有受到源(yuan)文件(jian)影響,硬鏈(lian)接(jie)(jie)文件(jian)的內(nei)容(rong)還是保留了刪除前源(yuan)文件(jian)的內(nei)容(rong),說(shuo)明硬鏈(lian)接(jie)(jie)已(yi)經(jing)(jing)失效(xiao)
實例4:將文件鏈接為另一個目錄中的相同(tong)名字(zi)
命令:
ln log2013.log test3
輸出:
[root@localhost test]# ln log2013.log test3
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 ln2013
-rw-r--r-- 2 root root 96 12-07 16:21 log2013.log
[root@localhost test]# cd test3
[root@localhost test3]# ll
-rw-r--r-- 2 root root 96 12-07 16:21 log2013.log
[root@localhost test3]# vi log2013.log
2013-01
2013-02
2013-03
2013-04
2013-05
2013-06
2013-07
2013-08
2013-09
2013-10[root@localhost test3]# ll
-rw-r--r-- 2 root root 80 12-07 16:36 log2013.log
[root@localhost test3]# cd ..
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 ln2013
-rw-r--r-- 2 root root 80 12-07 16:36 log2013.log
[root@localhost test]#
說明:
在test3目錄中(zhong)創建了log2013.log的硬鏈接,修改test3目錄中(zhong)的log2013.log文件,同(tong)時也會同(tong)步到源文件
實例5:給(gei)目錄創建軟鏈接
命令:
ln -sv /opt/soft/test/test3 /opt/soft/test/test5
輸出(chu):
[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: 符號連接(jie)的層數(shu)過多(duo)
[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
總計(ji) 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 ..
說明:
1.目錄只(zhi)能創建(jian)軟鏈(lian)接
2.目(mu)錄創(chuang)建鏈接必須用絕對路(lu)徑,相對路(lu)徑創(chuang)建會不成功,會提示:符號連接(jie)的層數過(guo)多(duo) 這樣的錯誤(wu)
3.在(zai)鏈接目(mu)標目(mu)錄中修改文件都會在(zai)源(yuan)文件目(mu)錄中同(tong)步變化
關注 熵減黑客 ,一起學習成長
