首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“跟踪”版本的readlink(1)

“跟踪”版本的readlink(1)
EN

Stack Overflow用户
提问于 2011-01-08 06:29:35
回答 3查看 155关注 0票数 2

我想要一个版本的"readlink -f“,它提供了每一个单独的符号链接解析它执行的跟踪。类似于:

代码语言:javascript
复制
$ linktrace /usr/lib64/sendmail
/usr/lib64 -> lib
/usr/lib/sendmail -> ../sbin/sendmail
/usr/sbin/sendmail
$ 

我知道我以前在linux上使用过这个工具,还记得当时我想“这个工具的名字完全不直观,我会忘记它的”。好吧,这一天已经到来了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-20 10:07:19

没有人是赢家。正确的答案是"namei“。

票数 1
EN

Stack Overflow用户

发布于 2011-01-08 06:46:13

This Serverfault answer (在Bash中)可能是有帮助的(尽管它并不声称可以处理所有边缘情况)。

票数 0
EN

Stack Overflow用户

发布于 2011-01-08 06:49:20

有没有人知道高尔夫代码?

代码语言:javascript
复制
#!/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";

好的,这样如何:

代码语言:javascript
复制
#!/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替换!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4630880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档