В unix, как я могу направить вывод who в команду groups?

Я пытаюсь сделать что-то вроде этого:

Скажем, есть 4 пользователя, зарегистрированных на машине UNIX, a, b, c и d.

Теперь, чтобы получить группы, к которым принадлежат эти ребята, я должен ввести:

groups a b c d.

Что мне интересно, так это то, есть ли способ сделать что-то вроде who | groups, где я могу направить пользователей, которые в настоящее время вошли в систему, в команду групп, которая затем распечатает всех пользователей, указанных вместе с их информацией о группе. Однако это, похоже, не работает должным образом — скорее, приведенная выше команда просто дает группу, к которой принадлежит первый пользователь.


person waffles    schedule 07.10.2010    source источник


Ответы (3)


В bash, zsh и других:

groups $(who | cut -d' ' -f 1)
person Ignacio Vazquez-Abrams    schedule 07.10.2010

Хотя я не проверял это:

who -q | xargs -o groups

Но вы должны иметь возможность использовать xargs для этого

person pyfunc    schedule 07.10.2010
comment
Я люблю ксаргов! Лучшая часть этого решения (по сравнению с обратными кавычками или командой $()) заключается в том, что оно позволяет логическому потоку команды оставаться слева направо. - person shmuelp; 07.10.2010

who | while read -r user line; do echo "$user $line" -- `groups $user`; done

Это выведет команду «кто» с группами на стороне

person Nicolas Viennot    schedule 07.10.2010