linuxlink文件
① linux命令:搜索系統中的所有鏈接文件,並復制到主目錄中的link目錄中。
find
/
-type
l
-print
>>out.txt這是查看所有的鏈接文件的,運行上面的命令後,可以查看#cat
out.txt,就知道那些是鏈接文件了,也可以用#ls
-l
加out.txt鏈接名來測試一下,至於如何復制到主目錄中的link目錄中,我就不太清楚了,不過你可以試試這個#find
/
-type
l
-print
-ok
cp
{}
\;
/link
我回去試試看,再說!!
② link的linux中link函數
頭文件
#include <unistd.h>
函數原型
int link (const char * oldpath,const char * newpath);
說明
link()以參數newpath指定的名稱來建立一個新的連接(硬連接)到參數oldpath所指定的已存在文件。如果參數newpath指定的名稱為一已存在的文件則不會建立連接。函數在執行成功時則返回0,失敗時則返回-1,錯誤原因存於errno。 link()所建立的硬連接無法跨越不同文件系統,如果需要請改用symlink()。
errno錯誤代碼:
EXDEV 參數oldpath與newpath不是建立在同一文件系統。
EPERM 參數oldpath與newpath所指的文件系統不支持硬連接
EROFS 文件存在於只讀文件系統內
EFAULT 參數oldpath或newpath 指針超出可存取內存空間。
ENAMETOLLONG 參數oldpath或newpath太長
ENOMEM 核心內存不足
EEXIST 參數newpath所指的文件名已存在。
EMLINK 參數oldpath所指的文件已達最大連接數目。
ELOOP 參數pathname有過多符號連接問題
ENOSPC 文件系統的剩餘空間不足。
EIO I/O 存取錯誤。
範例
/* 建立/etc/passwd 的硬連接為pass */ #include<unistd.h>main(){link(/etc/passwd,pass);}
③ linux怎麼將一個文件夾鏈接到另一個文件夾上
ln -s bbb的文件目錄 ccc的文件目錄
In的功能是為某一個文件在另外一個位置建立一個同步的鏈接,命令最常用的參數是-s,具體用法是:
ln -s 源文件 目標文件
-s 是 symbolic的意思。
ln的鏈接有軟鏈接和硬鏈接兩種。
軟鏈接就是ln -s ** **,只會在選定的位置上生成一個文件的鏡像,不會佔用磁碟空間。
硬鏈接ln
** **,沒有參數-s,在選定的位置上生成一個和源文件大小相同的文件。
無論是軟鏈接還是硬鏈接,文件都保持同步變化。軟鏈接是可以跨分區的,但是硬鏈接只能在同一分區內。
(3)linuxlink文件擴展閱讀:
1、目錄不能建立硬鏈接,但可以建立軟鏈接。
ln-s
test_chk test_chk_ln
2、正確的刪除方式(刪除軟鏈接,但不刪除實際數據):
rm -rf ./test_chk_ln
3、錯誤的刪除方式:
rm -rf ./test_chk_ln/ (這樣就會把原來test_chk下的內容刪除)
4、用ls查看一個目錄時,發現有的文件後面有一個@的符號,那就是一個用ln命令生成的文件。用ls
-l命令去查看,就可以看到顯示的link的路徑。
④ linux的rm命令詳解
Linux rm,英文全拼:remove,該命令用於刪除一個文件或者目錄。
Linux
rm命令是一個非常強大的刪除命令,它可以永久性地刪除文件系統中指定的文件或目錄。在使用rm命令刪除文件或目錄時,系統不會產生任何提示信息。
語法
rm [options] name...
參數
-i 刪除前逐一詢問確認
-f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認
-r 將目錄及以下之檔案亦逐一刪除
注意:rm命令是一個具有破壞性的命令,因為rm命令會永久性刪除文件或目錄,這就意味著,如果沒有對文件或目錄進行備份,一旦使用rm命令將其刪除,將無法恢復。因此,尤其在使用rm命令刪除目錄時,要非常非常謹慎。
⑤ linux 鏈接文件有幾種那些用戶能建立
連接文件分兩種:
1、硬連接:ln file link-file
2、軟連接(符號連接):ln -s file link-file
⑥ Linux裡面怎麼查看link文件的全路徑
傳給函數的路徑是/root/file,如果這是函數的第一個參數,那麼函數中可以用 $1 獲齲 得到文件名file1和file2後,echo "$1/file1" 就輸出/root/file/file1,echo "$1/file2" 輸出/root/file/file2。
⑦ linux ln 連接命令怎麼用
1、首先有一個目錄dir, 執行ln -s dir dir_link 創建目錄的軟鏈接。
⑧ linux下,如何自動link目錄
#!/bin/bash
#new一開始就是個symboliclink,不能是空目錄
#這個腳本在「同文件夾」下執行,可以放在後台執行
#符號鏈接名:new
target=new
whiletrue
do
#每秒鍾檢查一次
sleep1
#如果符號鏈接不存在,就什麼都不做
[!-h$target]&&continue
#找一個最新目錄
newdir=$(find.-typed-newer$target|tail-1)
#如果找到,更新符號鏈接
[-d"$newdir"]&&ln-nsf$newdir$target
done
⑨ LINUX 怎麼刪除 文件link
每一個文件,都可以通過一個struct stat的結構體來獲得文件信息,其中一個成員st_nlink代表文件的鏈接數。
當通過shell的touch命令或者在程序中open一個帶有O_CREAT的不存在的文件時,文件的鏈接數為1。
通常open一個已存在的文件不會影響文件的鏈接數。open的作用只是使調用進程與文件之間建立一種訪問關系,即open之後返回fd,調用進程可以通過fd來read 、write 、 ftruncate等等一系列對文件的操作。
close()就是消除這種調用進程與文件之間的訪問關系。自然,不會影響文件的鏈接數。在調用close時,內核會檢查打開該文件的進程數,如果此數為0,進一步檢查文件的鏈接數,如果這個數也為0,那麼就刪除文件內容。
link函數創建一個新目錄項,並且增加一個鏈接數。
unlink函數刪除目錄項,並且減少一個鏈接數。如果鏈接數達到0並且沒有任何進程打開該文件,該文件內容才被真正刪除。如果在unlilnk之前沒有close,那麼依舊可以訪問文件內容。
綜上所訴,真正影響鏈接數的操作是link、unlink以及open的創建。
刪除文件內容的真正含義是文件的鏈接數為0,而這個操作的本質完成者是unlink。close能夠實施刪除文件內容的操作,必定是因為在close之前有一個unlink操作。
舉個例子簡單說明:通過shell touch test.txt
1、stat("test.txt",&buf);
printf("1.link=%d\n",buf.st_nlink);//未打開文件之前測試鏈接數
2、fd=open("test.txt",O_RDONLY);//打開已存在文件test.txt
stat("test.txt",&buf);
printf("2.link=%d\n",buf.st_nlink);//測試鏈接數
3、close(fd);//關閉文件test.txt
stat("test.txt",&buf);
printf("3.link=%d\n",buf.st_nlink);//測試鏈接數
4、link("test.txt","test2.txt");//創建硬鏈接test2.txt
stat("test.txt",&buf);
printf("4.link=%d\n",buf.st_nlink);//測試鏈接數
5、unlink("test2.txt");//刪除test2.txt
stat("test.txt",&buf);
printf("5.link=%d\n",buf.st_nlink);//測試鏈接數
6、重復步驟2 //重新打開test.txt
7、unlink("test.txt");//刪除test.txt
fstat(fd,&buf);
printf("7.link=%d\n",buf.st_nlink);//測試鏈接數
8、close(fd);//此步驟可以不顯示寫出,因為進程結束時,打開的文件自動被關閉。
順次執行以上8個步驟,結果如下:
1.link=1
2.link=1 //open不影響鏈接數
3.link=1 //close不影響鏈接數
4.link=2 //link之後鏈接數加1
5.link=1 //unlink後鏈接數減1
2.link=1 //重新打開 鏈接數不變
7.link=0 //unlink之後再減1,此處我們改用fstat函數而非stat,因為unlilnk已經刪除文件名,所以不可以通過 文件名訪問,但是fd仍然是打開著的,文件內容還沒有被真正刪除,依舊可以使用fd獲得文件信息。
執行步驟8,文件內容被刪除。。。。
⑩ linux系統中鏈接文件什麼意思
鏈接:一種在共享文件和訪問它的用戶的若干目錄項之間建立聯系的一種方法。
Linux中包括兩種鏈接:硬鏈接(Hard
Link)和軟鏈接(Soft
Link),軟鏈接又稱為符號鏈接(Symbolic
link)。
我們首先來了解一下幾個名詞:
索引節點(inode)
要了解鏈接,我們首先得了解一個概念,叫索引節點(inode)。在Linux系統中,內核為每一個新創建的文件分配一個Inode(索引結點),每個文件都有一個惟一的inode號,我們可以將inode簡單理解成一個指針,它永遠指向本文件的具體存儲位置。文件屬性保存在索引結點里,在訪問文件時,索引結點被復制到內存在,從而實現文件的快速訪問。系統是通過索引節點(而不是文件名)來定位每一個文件。
硬鏈接(Hard
Link)
硬鏈接說白了是一個指針,指向文件索引節點,系統並不為它重新分配inode。可以用:ln命令來建立硬鏈接。
引用
ln
[options]
existingfile
newfile
ln
[options]
existingfile-list
directory
用法:
第一種為」existingfile」創建硬鏈接,文件名為」newfile」。
第二種在」directory」目錄中,為」
existingfile-list」中包含的所有文件創建一個同名的硬鏈接。
常用可選[options]:-f
無論」newfile」存在與否,都創建鏈接。-n
如果」newfile」已存在,就不創建鏈接。
軟鏈接(Soft
Link)
軟鏈接又叫符號鏈接,這個文件包含了另一個文件的路徑名。可以是任意文件或目錄,可以鏈接不同文件系統的文件。和win下的快捷方式差不多。
可以用:ln
-s
命令來建立軟鏈接。
引用
ln
-s
existingfile
newfile
ln
-s
existingfile-list
directory
下面我們用一個實例來說明硬鏈接和軟鏈接。
現在目錄下有兩個文件,一個名為file1,一個名為file2。
引用
$
ls
–il
1052671
-rw-r--r--
1
Leanx
Leanx
0
2010-03-29
13:46
file1
1052670
-rw-r--r--
1
Leanx
Leanx
0
2007-03-29
13:46
file2
首先先做一個file1的硬鏈接。
引用
$
ln
file1
file1hard
$ls
–il
1052671
-rw-r--r--
2
Leanx
Leanx
0
2010-03-29
13:46
file1
1052670
-rw-r--r--
1
Leanx
Leanx
0
2010-03-29
13:46
file12
1052671
-rw-r--r--
2
Leanx
Leanx
0
2010-03-29
13:46
file1hard
這里我們注意在創建鏈接前,file1顯示的鏈接數目為1,創建鏈接後
1.file1和file1hard的鏈接數目都變為2。
2.file1和file1的inode號是一樣的,都是1052671。
3.file1和file1hard顯示的文件大小也是一樣,都是0B。
可見進行了ln命令的操作結果:file1和file1hard是同一個文件的兩個名字,它們具有同樣的索引節點號和文件屬性,建立文件file1的硬鏈接,就是為
file1的文件索引節點在當前目錄上建立一個新指針。你可以刪除其中任何一個,如rm
file1,每次只會刪除一個指針,鏈接數同時減一,只有將所有指向文件內容的指針,也即鏈接數減為0時,內核才會把文件內容從磁碟上刪除。
盡管硬鏈接節省空間,也是Linux系統整合文件系統的傳統方式,但是存在一些不足之處:
1.不允許給目錄創建硬鏈接。
2.不可以在不同文件系統的文件間建立鏈接。
接著我們做一個指向file2的軟鏈接,軟鏈接克服了硬鏈接的不足,沒有任何文件系統的限制,任何用戶可以創建指向目錄的符號鏈接。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對文件進行鏈接。
引用
$
ln
-s
file2
file2soft
$
ls
–il
總用量
0
1052671
-rw-r--r--
2
Leanx
Leanx
0
2010-03-29
13:34
file1
1052670
-rw-r--r--
1
Leanx
Leanx
0
2010-03-29
13:35
file2
1053313
lrwxrwxrwx
1
Leanx
Leanx
5
2010-03-29
13:45
file2soft
->
file2
1052671
-rw-r--r--
2
Leanx
Leanx
0
2010-03-29
13:34
file1hard
從上面鏈接後的結果可以看出來軟鏈接與硬鏈接,區別不僅僅是在概念上,在實現上也是完全不同的。
區別:
1.硬鏈接原文件/鏈接文件公用一個inode號,說明他們是同一個文件,而軟鏈接原文件/鏈接文件擁有不同的inode號,表明他們是兩個不同的文件;
2.在文件屬性上軟鏈接明確寫出了是鏈接文件,而硬鏈接沒有寫出來,因為在本質上硬鏈接文件和原文件是完全平等關系;
3.鏈接數目是不一樣的,軟鏈接的鏈接數目不會增加;
4.文件大小是不一樣的,硬鏈接文件顯示的大小是跟原文件是一樣的。而這里軟鏈接顯示的大小與原文件就不同了,file2大小是0B,而file2soft是5B。
總之,建立軟鏈接就是建立了一個新文件。當訪問鏈接文件時,系統就會發現他是個鏈接文件,它讀取鏈接文件找到真正要訪問的文件。
當然軟鏈接也有硬鏈接沒有的缺點,因為鏈接文件包含有原文件的路徑信息,所以當原文件從一個目錄下移到其他目錄中,再訪問鏈接文件,系統就找不到了,而硬鏈接就沒有這個缺陷,你想怎麼移就怎麼移;還有它要系統分配額外的空間用於建立新的索引節點和保存原文件的路徑。