1

У меня есть несколько мягких символических ссылок, которые потеряли свой статус ссылок и стали обычными файлами, содержащими

ссылка TARGET_FILE_LOCATION

Я много искал, чтобы найти способ восстановить их статус ссылки, но не смог его найти.

1 ответ1

0

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

Конечно, это никак не влияет на то, что действительно вызывает проблему, но, по крайней мере, должно облегчить жизнь, пока вы не сможете выяснить причину и исправить ее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .