1

私はPerlを初めて使用し、ファイルをシンボリックリンクする方法を理解しました。ディレクトリでもこれを行うことができますか?特定のディレクトリと 1 つ以上の他のディレクトリとの間にシンボリック リンクを作成したいので、元のディレクトリのファイルを編集すると、シンボリック リンクされたディレクトリで変更が更新されます。これは可能ですか?

編集: 特定のディレクトリ内のファイルのシンボリック リンクを作成するための私の 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); 
4

2 に答える 2

3

はい。Unix ファイルシステムでは、ディレクトリ パスが実際には別のディレクトリへのシンボリック リンクであるプレフィックスで始まるファイルを操作すると、ファイル操作はシンボリック リンクのターゲットであるディレクトリ内で自動的に行われます。

これには、実際のファイルで実際に有効になる「symlink パスで」実行される書き込み操作が含まれます。シンボリックリンクされたパスから見える元のディレクトリパスのファイルに対して行われる書き込み操作と同様に。

これは実際には 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
  • で別のファイルを作成しましたdir1dir2(シンボリックリンク)からもアクセスできました。
于 2012-08-15T13:54:58.630 に答える
0

シンボリック リンクはファイル システムに依存します。Linux ファイル システムでは、通常、ディレクトリのシンボリック リンクを使用できます。シンボリック リンクはコピー/バックアップではなく、1 つの実際のファイル/ディレクトリへのショートカットにすぎません。

于 2012-08-15T13:38:01.173 に答える