解決策 1:
すべてのユーザー:
$ getent passwd
すべてのグループ:
$ getent group
特定のユーザーがいるすべてのグループ:
$ getent group | grep username
解決策 2:
ユーザーとそのグループを一覧表示:
for user in $(awk -F: '{print $1}' /etc/passwd); do groups $user; done
グループとそのユーザーを一覧表示:
cat /etc/group | awk -F: '{print $1, $3, $4}' | while read group gid members; do
members=$members,$(awk -F: "\$4 == $gid {print \",\" \$1}" /etc/passwd);
echo "$group: $members" | sed 's/,,*/ /g';
done
解決策 3:
LDAP や NIS などのリモート ユーザーを気にしない場合、ユーザーとそれに関連するグループを簡単な方法で一覧表示するには:
cut -d: -f1 /etc/passwd | xargs groups
出力;
root : root myuser : root www-data fuse anotheruser : anotheruser cdrom floppy audio dip video plugdev scanner bluetooth netdev
解決策 4:
すべてのユーザーを一覧表示
cut -d':' -f 1 /etc/passwd
または
awk -F ':' '{print $1}' /etc/passwd
cat /etc/passwd の間 cut -d ':' -f 1 すべてのユーザー (および他の多くのもの) を表示します 区切り文字として「:」を使用して各行を分割し、最初のフィールド (users) だけを抽出する簡単な方法です。 awk バージョンとほとんど同じです。
すべてのグループを一覧表示
cut -d':' -f 1 /etc/group
または
awk -F ':' '{print $1}' /etc/group
ユーザーをリストするのと非常によく似ています。 /etc/group を解析するだけです
おそらくOPが望んでいたものに近い別の興味深い方法は、 compgen です .ただし、互換性の問題については不明です。
compgen -u
compgen -g