(export LC_ALL=C
getent passwd | cut -d: -f6 | sort -t/ -uk2,2 | grep -c ..)
Conta o número de segundos componentes exclusivos dos diretórios iniciais do usuário.
-
LC_ALL=C
geralmente necessário quando usamosuniq
ousort -u
-
getent passwd
retorna o banco de dados da conta (supondo que ele pode ser enumerado, o que nem sempre é o caso para os que estão em rede) como um csv (separados por dois pontos) -
cut -d: -f6
extrai o sexto campo de cada registro (o diretório inicial) -
sort -t/ -uk2,2
classifica no segundo componente de diretório e com-u
retém apenas um registro para cada chave de classificação exclusiva -
grep -c ..
conta o número de linhas contendo pelo menos dois caracteres, para excluir/
(alternativamente:grep -cvx /
)
O cut
+ sort
+ grep
pode ser substituído por uma chamada para awk
:
getent passwd | awk -F: '{split($6, p, "/")}
p[2] != "" && !seen[p[2]]++ {n++}
END {print n}'