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  -  <[EMAIL PROTECTED]>  -  http://www.f-hauri.ch


_______________________________________________
gull mailing list
[EMAIL PROTECTED]
http://lists.alphanet.ch/mailman/listinfo/gull

Répondre à