我有几个软符号链接已经失去了链接状态,变成了包含以下内容的普通文件:
目标文件位置
我搜索了很长时间,想找到恢复其链接状态的方法,但没有找到。
答案1
你可以用一个简单的 Perl 脚本来修复这个问题:
#!/usr/bin/perl
use strict;
my $progname = $0; $progname =~ s@^.*/@@;
# accept path of bogued "link" file on command line
my $file = shift()
or die "$progname: usage: $progname <file>\n";
my $content = '';
my $target = '';
# read the bogued file to find out where the symlink should point
open my $fh, '<', $file
or die "$progname: unable to open $file: $!\n";
# parse the target path out of the file content
$content = <$fh>;
die "$progname: $file content in bogus format\n"
unless $content =~ m@^link (.*)\r?\n$@;
$target = $1;
close $fh;
# delete the bogued file
unlink $file
or die "$progname: unable to unlink $file: $!\n";
# replace it with the correct symlink
system('ln', '-s', $target, $file);
将脚本放入文件(例如 fixlink.pl)中,然后以 方式调用它perl fixlink.pl /path/to/bogued/symlink
,它将从文件中读取目标,然后用指向该目标的符号链接替换该文件。
当然,这并不能解决实际导致问题的原因,但至少可以让生活变得更简单,直到你能够找出原因并纠正它。