#compdef id gid local args choices if _pick_variant gnu=GNU $OSTYPE --version; then choices='--help --version -Z --context -g --group -G --groups -u --user' _arguments \ "($choices)"{-Z,--context}'[print only security context]' \ "($choices)"{-g,--group}'[print only EGID]' \ "($choices -r --real)"{-G,--groups}'[print all GIDs]' \ '(-n --name --help --version)'{-n,--name}'[show name instead of number]' \ '(-r --real -g --groups --help --version)'{-r,--real}'[show real ID instead of effective]' \ "($choices)"{-u,--user}'[print only EUID]' \ '(-z --zero --help --version)'{-z,--zero}'[delimit entries with NUL characters]' \ '(- :)--help[display help information]' \ '(- :)--version[display version]' \ ':user:_users' else choices="-A -a -c -G -g -M -p -P -R -u" args=( "($choices)-g[print only EGID]" "($choices -r)-G[print all GIDs]" "($choices)-u[print only EUID]" '(-A -c -M -P)-n[show name instead of number]' '(-A -c -M -P)-r[show real ID instead of effective]' ) case $OSTYPE in solaris*) args+=( '(-g -G -u -n -r)-a[show user name, user ID and all the groups]' '(-g -G -u -n -r)-p[show project membership]' ) ;; openbsd*) args+=( '(-)-c[display the login class]' '(-)-p[make the output human readable]' '(-)-R[display the routing table of the current process]' ) ;; darwin*|dragonfly*|freebsd*) args+=( '(-)-P[print id in the form of a password file entry]' ) ;| darwin*|freebsd*) args+=( '(-)-A[print process audit user ID]' '(-)-M[print MAC label of the current process]' ) ;| freebsd*) args+=( '(-)-c[print current login class]' ) ;| darwin*|dragonfly*|freebsd*|netbsd*|openbsd*) args+=( '(-)-p[human readable output]' ) ;; esac _arguments -s $args ':user:_users' fi