BASH Shellscript получить имя пользователя из пути к папке - PullRequest
0 голосов
/ 29 февраля 2020

Учитывая путь к папке, который имеет /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/ и следующим /.

Ответы [ 3 ]

2 голосов
/ 29 февраля 2020

Немного взлома

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

Более полный ответ для ввода 3 в форме Input3: /home/ или путей типа /home//user3

owner=$(tr -s '/' <<< "$path/root" | cut -d/ -f3)
1 голос
/ 29 февраля 2020

Вы можете попробовать это:

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

Надеюсь, это поможет. Но я бы порекомендовал использовать команду ls -l и извлечь оттуда владельца.

0 голосов
/ 29 февраля 2020

Я бы порекомендовал использовать команду ls для получения пути любого владельца, а затем проанализировать его по awk.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...