私は次の目標を達成しようとしています。 /etc/passwdにbin / bashが設定されているLinuxユーザーを一覧表示し、各ユーザーの情報を次のid [username]
印刷ステートメントに追加します。
cat /etc/passwd | grep bin/bash | awk -F\: '{print $1";"$(id $1)}'
(これは明らかに動作しません;))
かなり近づいたような気がします。私が何を逃しているのだろうか?
出力は次のようになります(DavDavの説明を参照)。
User1;uid=1000(User1) gid=1000(User1) groups=1000(User1)
User2;uid=1001(User2) gid=1001(User2) groups=1001(User2)
User3;uid=1002(User3) gid=1002(User3) groups=1002(User3)
答え1
どうですか?
</etc/passwd grep bin/bash | cut -d: -f1 | xargs -n1 id
答え2
この試み、
awk -F ':' '/bin\/bash/ {printf ($1";"); system("id "$1)}' /etc/passwd
system
コマンドを実行して値を返します。アッ
答え3
別のオプションは次のとおりです。
for i in $(grep /bin/bash /etc/passwd | awk -F: '{ print $1 }'); do
echo "${i};$(id ${i})"
done
grep ... awk ...
含まれている行に対応するユーザー名のリストが生成されます。ループが繰り返されるたびに、これらのユーザー名の1つが生成されます。次に、ユーザー名、セミコロン、そのユーザー名の出力を印刷します。/etc/passwd
/bin/bash
for
i
echo
id