【问题标题】:BASH Shellscript get username from folder pathBASH Shellscript 从文件夹路径获取用户名
【发布时间】:2020-02-29 18:52:15
【问题描述】:

给定一个包含/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/ 和下一个/ 之间的任何内容。

【问题讨论】:

    标签: linux bash shell debian


    【解决方案1】:

    有点小技巧

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

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

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

    【讨论】:

    • 非常好!但是,是否没有其他方法可以确保如果输入像/home/Anotherfolder 没有定义用户名,则默认为root? (输入 3)我可以让用户知道用 '/' 结束字符串,如果这是我能做的 编辑:愚蠢的我,你只需强制后面的 /root 来模拟根路径。太棒了!
    【解决方案2】:

    你可以试试这个:

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

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

    【讨论】:

      【解决方案3】:

      我建议使用ls 命令获取路径任一所有者,然后通过awk 对其进行解析。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-25
        • 2013-07-21
        • 2011-04-13
        • 1970-01-01
        • 1970-01-01
        • 2011-07-10
        • 2017-11-03
        相关资源
        最近更新 更多