基本目录路径

Base directory path

有什么方法可以从完整路径获取基本目录。
例如,我有 /opt/mw/apache/etc
我需要得到 /opt
有什么命令可以做到吗?

谢谢

您可以试试下面的方法。

$ s='/opt/mw/apache/etc'
$ if [[ $s =~ ^(/[^/]*).* ]]; then echo ${BASH_REMATCH[1]}; fi
/opt

使用 awk:

echo '/opt/mw/apache/etc' | awk -F"/" '{print "/"}'

这将用“/”拆分字符串,然后打印“/”与拆分中的第二个标记连接,即 "opt"。

只是为了笑,这是另一种方式:

basedir() {
    dir=
    while [ $(dirname $dir) != "/" ]; do
        dir=$(dirname $dir)
    done
    echo $dir
}

> basedir /opt/mw/apache/etc
> /opt