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



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

Input1: /home/user1/Music
Output1: user1
Input2: /home/user2
Output2: user2
Input3: /home
Output3: root

我已经设法想出了能够满足Input1的东西,但我无法想出能够满足其他两个输入的东西。

owner=$(path | grep -oP '(?<=home/).*(?=/)')这将刮除home/和下一个/之间的任何内容。

一点破解

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

处理形式为Input3: /home/或类似/home//user3的路径的输入3的更完整答案

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

您可以使用

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

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

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

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

最新更新