Este one-liner (um pouco longo demais) usa python grp
module:
python -c 'import grp,sys; gname=sys.stdin.readline().strip(); [gid]=[g.gr_gid for g in grp.getgrall() if g.gr_name==gname][:1]; print(gid)' <<< $GROUPNAME
Existem algumas coisas aqui.
Primeiro, é escrito para funcionar em python2 e python3 .
Segundo: ele não usa grp.getgrnam()
, mas busca todos os grupos e faz sua própria filtragem. Por quê? Porque getgrnam()
não funcionou em pelo menos um Mac que testei.
Terceiro: trunca vários resultados . Por quê? Porque grp.getgrall()
retornou duplicatas em pelo menos um Gentoo que testei.
Finalmente: sim, haverá uma exceção para o grupo inexistente. Ajuste suas próprias necessidades.
N.B. Esta pergunta SO oferece alguns bits, mas ele foi fechado, não aceita novas respostas e não pode ser migrado. Então aqui você tem uma auto-resposta.