Classicamente, o comando é 'quem' em vez de 'usuários', mas 'quem' fornece mais informações. Olhando para os artigos originais do Unix (meados dos anos 70), o exemplo teria sido:
who | wc -l
O uso de 'wc -l' conta as linhas de saída - ele funciona com 'users' e 'who'. O uso de '-w' só funciona de maneira confiável quando há uma palavra por usuário (como em 'users', mas não em 'who').
Você pode usar 'grep -c' para contar as linhas. Como você está interessado apenas em nomes de usuário não em branco, você pode:
who | grep -c .
Sempre há pelo menos um caractere em cada linha.
Conforme observado nos comentários de John T , o userscomando difere de whovários aspectos. O mais importante é que, em vez de dar um nome por linha, ele espalha os nomes vários por linha - não tenho uma máquina com usuários diferentes o suficiente conectados para testar o que acontece quando o número de usuários se torna grande. A outra diferença é que 'quem' relata as conexões do terminal em uso. Com várias janelas de terminal abertas, ele mostrará várias linhas para um único usuário, enquanto 'users' parece listar um usuário conectado apenas uma vez.
Como conseqüência dessa diferença, a grep -c .formulação ' ' não funcionará com o comando 'users'; ' wc -w' é necessário.