2012-08-15 45 views
0

我對Perl相當陌生,並且已經想出瞭如何符號鏈接文件。你可以用目錄來做這個嗎?我想在某個目錄和一個或多個其他目錄之間建立一個符號鏈接,所以如果我在原始目錄中編輯一個文件,更改將在符號鏈接的目錄中更新。這可能嗎?你可以在Perl中符號鏈接一個目錄及其所有內容嗎?

編輯:我的Perl代碼用於爲給定目錄中的文件創建符號鏈接如下。

感謝

#!/usr/bin/perl 

$fileDirectory = "/home/Alan/Perl/Files/"; 
$symLinkDirectory = "/home/Alan/Perl/SymFiles/"; 

opendir (DIR, $fileDirectory) || die "Error in opening directory $fileDirectory\n"; 

while(($fileName = readdir(DIR))){ 
    my $filePath = $fileDirectory.$fileName; 
    symlink("$filePath","$symLinkDirectory".$fileName); 
} 

closedir(DIR); 
+0

只要嘗試一下,找出答案。 :) – 2012-08-15 20:22:08

回答

2

是的。在Unix文件系統中,當您操作文件的目錄路徑以前綴實際上是另一個目錄的符號鏈接開頭時,文件操作將自動發生在作爲符號鏈接目標的目錄中。

這包括在「實際上在真實文件上生效」的「符號鏈接路徑」上完成的寫入操作;以及在原始目錄路徑中的文件上執行的操作,這些操作將從符號鏈接的路徑中可見。

這有什麼做用Perl真的,但在Perl明顯的作品,以及:

$ perl5.8 -e 'symlink("/HOME/dir1","/HOME/dir2"); 
       use File::Slurp qw(write_file); 
       write_file("/HOME/dir2/myfile", "File lives in dir1\n"); 
       write_file("/HOME/dir1/myfile2","File visible in dir2 too\n");' 

$ ls -l /HOME/dir1 
total 1 
-rw-rw-r--+ 1 USER users 4 Aug 15 09:56 myfile 
-rw-rw-r--+ 1 USER users 4 Aug 15 09:56 myfile2 

$ ls -l /HOME/dir2 
lrwxrwxrwx 1 USER users 22 Aug 15 09:56 /HOME/dir2 -> /HOME/dir1/ 

$ ls -l /HOME/dir2/myfile2 
-rw-rw-r--+ 1 USER users 4 Aug 15 09:56 /HOME/dir2/myfile2 

$ ls -l /HOME/dir1/myfile 
-rw-rw-r--+ 1 USER users 4 Aug 15 09:56 /HOME/dir1/myfile 
  • 我有一個真正的目錄dir1
  • 我符號鏈接dir2指向dir1
  • dir2創建的文件,但實際上它是在dir1
  • 創建我創建了另一個文件中dir1。也可以通過dir2(符號鏈接)訪問。
+0

謝謝,這非常有幫助。 – 2012-08-16 14:17:10

0

符號鏈接的文件系統有關。在Linux文件系統中,通常你可以有目錄的符號鏈接。符號鏈接不是複製/備份,它們只是一個真實文件/目錄的快捷方式。

+0

好的。那麼我在Linux上。我正在離開Windows :)對不起,我可能應該更好地措詞......而不是必須進入一個目錄,然後將其中的文件符號鏈接到另一個目錄,我可以不只是符號鏈接整個目錄及其所有內容到另一個目錄? – 2012-08-15 13:40:13

+0

是的,這是在創建目錄的符號鏈接時發生的情況。您可以通過此鏈接訪問所有子文件/目錄。 – perreal 2012-08-15 13:43:12

相關問題