Kei
Kei

Reputation: 315

BASH Shellscript get username from folder path

Given a folder path that has /home, I would like to scrape the username from the folder path. (A little home work, trying to compare folder username to actual owner of the folder, which can be determined with a quick stat -c '%U' path

Input1: /home/user1/Music
Output1: user1

Input2: /home/user2
Output2: user2

Input3: /home
Output3: root

I have managed to come up with something that is able to cater to Input1, but I am unable to come up with something to cater to the other two inputs.

owner=$(path | grep -oP '(?<=home/).*(?=/)') This will scrape anything that is between home/ and the next /.

Upvotes: 0

Views: 566

Answers (3)

doca
doca

Reputation: 1548

A bit of a hack

owner=$(cut -d/ -f3 <<< "$path/root")

A more complete answer to deal with input 3 in the form Input3: /home/ or paths like /home//user3

owner=$(tr -s '/' <<< "$path/root" | cut -d/ -f3)

Upvotes: 2

Milan Dufek
Milan Dufek

Reputation: 194

I would recommend to use ls command to get path either owner, then parse it by awk.

ls -lp /home | grep "/$" | tr -d '/' | awk '{print "Input:", $9, "\nOwner:", $3, "\n"}'

Upvotes: 0

Tarique
Tarique

Reputation: 1461

You can trry this:

owner=$(echo $path | tr '/' ' ' | awk '{print $2}')
if [ "$owner" == "" ]
    then echo root
else
    echo $owner
fi

Hope this helps. But I would recommend to use ls -l command and extract owner from there.

Upvotes: 1

Related Questions