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

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
youqika
帖子: 720
注册时间: 2008-09-25 20:56

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

#1

帖子 youqika » 2012-01-13 18:04

rt,比如/var/cache目录是/var/././cache/man/zh_CN目录的间接父目录,这种父子关系怎么判断?
第一次写shell,求指教 :em06
UCHIHA
运气是为白痴准备的
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

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

#2

帖子 BigSnake.NET » 2012-01-13 18:25

realpath <-- 试试这玩意
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
youqika
帖子: 720
注册时间: 2008-09-25 20:56

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

#3

帖子 youqika » 2012-01-13 20:24

竟然是个c函数 。。。

代码: 全选

$ realpath
bash: realpath: 未找到命令
UCHIHA
运气是为白痴准备的
头像
youqika
帖子: 720
注册时间: 2008-09-25 20:56

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

#4

帖子 youqika » 2012-01-13 20:47

妈的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;
}

UCHIHA
运气是为白痴准备的
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

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

#5

帖子 BigSnake.NET » 2012-01-13 21:29

有个工具也叫这名字
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

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

#6

帖子 eexpress » 2012-01-13 23:55

realpath不是应该得到../../xxx 这样的嘛。这怎么判断父子关系呢。

应该都获取绝对路径,然后字符串比较前级。
● 鸣学
头像
youqika
帖子: 720
注册时间: 2008-09-25 20:56

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

#7

帖子 youqika » 2012-01-14 1:39

eexpress 写了:realpath不是应该得到../../xxx 这样的嘛。这怎么判断父子关系呢。

应该都获取绝对路径,然后字符串比较前级。
恩,EE正解,朕就是这么干的 :em06
UCHIHA
运气是为白痴准备的
回复