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)
给定包含 /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
owner=$(tr -s '/' <<< "$path/root" | cut -d/ -f3)