给定一个具有/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"}'