修复丢失的符号链接状态

修复丢失的符号链接状态

我有几个软符号链接已经失去了链接状态,变成了包含以下内容的普通文件:

目标文件位置

我搜索了很长时间,想找到恢复其链接状态的方法,但没有找到。

答案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,它将从文件中读取目标,然后用指向该目标的符号链接替换该文件。

当然,这并不能解决实际导致问题的原因,但至少可以让生活变得更简单,直到你能够找出原因并纠正它。

相关内容