我想要一个版本的"readlink -f“,它提供了每一个单独的符号链接解析它执行的跟踪。类似于:
$ linktrace /usr/lib64/sendmail
/usr/lib64 -> lib
/usr/lib/sendmail -> ../sbin/sendmail
/usr/sbin/sendmail
$ 我知道我以前在linux上使用过这个工具,还记得当时我想“这个工具的名字完全不直观,我会忘记它的”。好吧,这一天已经到来了。
发布于 2013-02-20 10:07:19
没有人是赢家。正确的答案是"namei“。
发布于 2011-01-08 06:46:13
This Serverfault answer (在Bash中)可能是有帮助的(尽管它并不声称可以处理所有边缘情况)。
发布于 2011-01-08 06:49:20
有没有人知道高尔夫代码?
#!/usr/bin/perl
use File::Spec;
my $g;
my $f = shift;
while (1) {
print $f;
$g = readlink($f);
last unless defined $g;
printf " -> %s\n", $g;
$f =~ s,/[^/]*$,,;
$f = File::Spec->rel2abs($g, $f);
}
print "\n";好的,这样如何:
#!/usr/bin/perl
use File::Spec;
sub r {
my ($p, $s) = @_;
my $l = readlink $p;
if ($l) {
printf "%s -> %s\n", $p, $l;
$p =~ s,/[^/]*$,,;
r("",File::Spec->rel2abs($l,$p) . $s)
} else {
$s =~ s!^(/?[^/]+)(.*)! r($p.$1, $2) !e;
}
}
r("",shift);输出并不完全像描述的那样,但它是可以理解的。然后挖掘那个疯狂的递归可执行的regexp替换!
https://stackoverflow.com/questions/4630880
复制相似问题