GNU/Linux >> Znalost Linux >  >> Linux

Jak přesunu relativní symbolický odkaz?

Relativní cesty můžete změnit na úplné cesty pomocí readlink -f foo . Takže byste udělali něco jako:

ln -s $(readlink -f $origlink) $newlink
rm $origlink

EDIT:

Všiml jsem si, že si přejete zachovat relativní cesty. V tomto případě můžete po přesunutí odkazu použít symlinks -c převést absolutní cesty zpět na relativní cesty.


Toto je perl řešení, které zachovává relativní cesty:

use strictures;
use File::Copy qw(mv);
use Getopt::Long qw(GetOptions);
use Path::Class qw(file);
use autodie qw(:all GetOptions mv);

my $target;
GetOptions('target-directory=s' => \$target);
die "$0 -t target_dir symlink1 symlink2 symlink3\n" unless $target && -d $target;

for (@ARGV) {
    unless (-l $_) {
        warn "$_ is not a symlink\n";
        next;
    }
    my $newlink = file(readlink $_)->relative($target)->stringify;
    unlink $_;
    symlink $newlink, $_;
    mv $_, $target;
}

Linux
  1. Absolutní / Kanonické / Relativní cesty?

  2. Jak komprimovat symbolický odkaz?

  3. Jak vytvořit odkaz na adresář

  1. Jak obnovit po smazání symbolického odkazu libc.so.6?

  2. Jak odstranit symbolický odkaz na adresář?

  3. Jak přesunout oddíl v GNU/Linuxu?

  1. Jak vytvořit pevné a symbolické odkazy v Linuxu

  2. Jak mohu vynutit pouze relativní cesty ve výstupu hledání?

  3. Jak zkopírovat symbolické odkazy?