首页 > 解决方案 > 符号链接函数创建死链接

问题描述

use strict;
use warnings;

print "Enter link name\n";
chomp(my $link = <STDIN>);

my $link1;
$link1 = readlink '/home/test/abc_test/xyz';

symlink("$link1", "/home/test/test_scripts/$link");

/home/test/abc_test/xyz 指向如下目录:

cd /home/test/abc_test
ls -lrt
xyz -> dir

例如$link,我从用户那里获取符号链接名称的值"abc"

在上面的脚本中,我试图在/home/test/test_scripts路径中创建一个符号链接,该符号链接应该指向xyz所指向的目录。我想要创建的最终结果/home/test/test_scripts

abc -> dir

上面的代码产生了相同的结果,但在路径中创建了一个死链接。

有人可以让我知道我做错了什么吗?

标签: perl

解决方案


问题是readlink它只返回目录名称,dir而不是完整路径dir

我假设您不在包含dir. 在这种情况下,您需要提供symlink的两个参数的完整路径:

use strict;
use warnings;

my $link = 'abc';
my $link1 = readlink '/home/test/abc_test/xyz';
my $x = symlink "/home/test/abc_test/$link1", "/home/test/test_scripts/$link";
print "$x\n";

我还展示了您可以检查 的返回值symlink以查看它是否成功 (1) 或不成功 (0)。


推荐阅读