Исправление утерянного статуса символической ссылки

448
James Mann

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

ссылка TARGET_FILE_LOCATION

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

1

1 ответ на вопрос

0
Aaron Miller

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

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

Похожие вопросы