У меня есть несколько мягких символических ссылок, которые потеряли свой статус ссылок и стали обычными файлами, содержащими
ссылка TARGET_FILE_LOCATION
Я много искал, чтобы найти способ восстановить их статус ссылки, но не смог его найти.
У меня есть несколько мягких символических ссылок, которые потеряли свой статус ссылок и стали обычными файлами, содержащими
ссылка TARGET_FILE_LOCATION
Я много искал, чтобы найти способ восстановить их статус ссылки, но не смог его найти.
Вы можете исправить это с помощью тривиального скрипта 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
, и он прочитает цель из файла, а затем заменит файл символической ссылкой на эту цель.
Конечно, это никак не влияет на то, что действительно вызывает проблему, но, по крайней мере, должно облегчить жизнь, пока вы не сможете выяснить причину и исправить ее.