分页: 1 / 1

shell脚本中如何判断一个目录是不是另一个目录的子目录

发表于 : 2012-01-13 18:04
youqika
rt,比如/var/cache目录是/var/././cache/man/zh_CN目录的间接父目录,这种父子关系怎么判断?
第一次写shell,求指教 :em06

Re: shell脚本中如何判断一个目录是不是另一个目录的子目录

发表于 : 2012-01-13 18:25
BigSnake.NET
realpath <-- 试试这玩意

Re: shell脚本中如何判断一个目录是不是另一个目录的子目录

发表于 : 2012-01-13 20:24
youqika
竟然是个c函数 。。。

代码: 全选

$ realpath
bash: realpath: 未找到命令

Re: shell脚本中如何判断一个目录是不是另一个目录的子目录

发表于 : 2012-01-13 20:47
youqika
妈的printf之类的都有啊,realpath算比较常用的吧 :em01

代码: 全选

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <limits.h>

int main(int argc, char* argv[])
{
    int ret = 0;

#ifdef PATH_MAX
    static int const sc_path_max = PATH_MAX;
#else
    static int const sc_path_max = pathconf(path, _PC_PATH_MAX);
    if (sc_path_max <= 0) {
        sc_path_max = 4096;
    }
#endif

    if (1 < argc) {
        char* p_realpath = NULL;

        p_realpath = (char*)malloc(sc_path_max);
        ret = (NULL == realpath(argv[1], p_realpath)) ? (-1) : 0;
        if (-1 == ret) {
            printf("[ERROR] get realpath failed.\n");
        } else {
            printf("%s", p_realpath);
        }
        free(p_realpath);
    } else {
        printf("usage: realpath pathname\n");
    }

    return ret;
}


Re: shell脚本中如何判断一个目录是不是另一个目录的子目录

发表于 : 2012-01-13 21:29
BigSnake.NET
有个工具也叫这名字

Re: shell脚本中如何判断一个目录是不是另一个目录的子目录

发表于 : 2012-01-13 23:55
eexpress
realpath不是应该得到../../xxx 这样的嘛。这怎么判断父子关系呢。

应该都获取绝对路径,然后字符串比较前级。

Re: shell脚本中如何判断一个目录是不是另一个目录的子目录

发表于 : 2012-01-14 1:39
youqika
eexpress 写了:realpath不是应该得到../../xxx 这样的嘛。这怎么判断父子关系呢。

应该都获取绝对路径,然后字符串比较前级。
恩,EE正解,朕就是这么干的 :em06