Bash: "id" 출력을 print 문에 삽입합니다.

Bash: "id" 출력을 print 문에 삽입합니다.

저는 다음 목표를 달성하려고 합니다. /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 ...포함된 행에 해당하는 사용자 이름 목록이 생성됩니다 . 루프가 반복될 때마다 이러한 사용자 이름 중 하나가 생성됩니다. 그런 다음 사용자 이름, 세미콜론, 해당 사용자 이름에 대한 출력을 인쇄합니다./etc/passwd/bin/bashforiechoid

관련 정보