BASH Shellscript 从文件夹路径获取用户名

BASH Shellscript get username from folder path

给定包含 /home 的文件夹路径,我想从文件夹路径中抓取用户名。 (一点家庭作业,尝试将文件夹用户名与文件夹的实际所有者进行比较,这可以通过 stat -c '%U' path

快速确定
Input1: /home/user1/Music
Output1: user1

Input2: /home/user2
Output2: user2

Input3: /home
Output3: root

我已经想出了一些能够迎合输入 1 的东西,但是我无法想出一些东西来迎合其他两个输入。

owner=$(path | grep -oP '(?<=home/).*(?=/)') 这将抓取 home/ 和下一个 / 之间的所有内容。

你可以试试这个:

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

希望这对您有所帮助。但我建议使用 ls -l 命令并从那里提取所有者。

我建议使用 ls 命令获取路径所有者,然后通过 awk 解析它。

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

一点技巧

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

Input3: /home//home//user3

形式处理输入 3 的更完整答案
owner=$(tr -s '/' <<< "$path/root" | cut -d/ -f3)