getent passwd | awk -F: '($3>=1000)||($7~/(\/bash|\/sh|\/zsh|\/ksh|\/fish|\/tcsh)$/){print $1":"$6":"$7}' \ | while IFS=: read user home shell; do groups=$(id -nG "$user" 2>/dev/null | tr ' ' ','); printf "%-20s %-30s %-20s %s\n" "$user" "$home" "$shell" "$groups"; done