How-To get root directory of given path in bash? How-To get root directory of given path in bash? bash bash

How-To get root directory of given path in bash?


I've found a solution:

    #/usr/bin/env bash    DIRECTORY="/home/user/example/foo/bar"    BASE_DIRECTORY=$(echo "$DIRECTORY" | cut -d "/" -f2)    echo "#$BASE_DIRECTORY#";

This returns always the first directory. In this example it would return following:

    #home#

Thanks to @condorwasabi for his idea with awk! :)


If PATH always has an absolute form you can do tricks like

ROOT=${PATH#/} ROOT=/${ROOT%%/*}

Or

IFS=/ read -ra T <<< "$PATH"ROOT=/${T[1]}

However I should also add to that that it's better to use other variables and not to use PATH as it would alter your search directories for binary files, unless you really intend to.

Also you can opt to convert your path to absolute form through readlink -f or readlink -m:

ABS=$(readlink -m "$PATH")

You can also refer to my function getabspath.


You can try this awk command:

 basedirectory=$(echo "$PATH" | awk -F "/" '{print $2}')

At this point basedirectory will be the string homeThen you write:

rm -rf ./"$basedirectory"/