[gull] truc et astuce: Récupérer le nom complet d'un utilisateur
Félix Hauri
felix at f-hauri.ch
Mon Jun 23 15:29:08 CEST 2003
Cela faisait longtemps que je n'avais pas ``joué'' avec mon shell (bash)
Le but est de récupérer le nom complet de l'utilisateur ($USER) qui se
trouve confiné au début du cinquième champs dans /etc/passwd:
$ UNAME=$(grep ^$USER: /etc/passwd |cut -d: -f 5|cut -d, -f1)
$ echo $UNAME
( simple et efficace ;)
mais aussi:
$ UNAME=(awk -F: /$USER/' {print $5}'</etc/passwd|sed -e s/,.*$//)
$ echo $UNAME
( bof ;)
voire:
$ UNAME=$(sed </etc/passwd \
-e "s/^\(${USER}:[^:]*:[0-9]*:[0-9]*:\([^,]*\),.*\|^.*\)$/\2/")
$ echo $UNAME
( sans commentaires ;)
ou encore:
$ UNAME=$(perl -pe /^$USER':[^:]:\d+:\d+:([^,]*),/ && do {
print $1 ; exit 0;};undef $_' </etc/passwd)
$ echo $UNAME
( J'aime bien, en perl, l'idée du masque permettant de mettre en évidence
ce que l'on cherche. ;)
ou alors, sans quitter bash:
$ UNAME=$(IFS=',:'; while read l;do set -- $l;
[ "$1" == "$USER" ] && echo $5 && exit 0
done </etc/passwd;)
$ echo $UNAME
( J'aime bien la possibilité de récupérer les champs avec $1, $2, $3...
en l'occurence ``$1 == $USER'' ne laisse pas d'ambiguité ;)
--
Félix Hauri - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list