Classiquement, la commande est 'qui' plutôt que 'utilisateurs', mais 'qui' vous donne plus d'informations. En regardant les articles Unix originaux (milieu des années 70), l'exemple aurait été :
who | wc -l
L'utilisation de 'wc -l' compte les lignes de sortie - cela fonctionne avec les deux 'utilisateurs' et 'qui'. L'utilisation de '-w' ne fonctionne de manière fiable que lorsqu'il y a un mot par utilisateur (comme avec 'users' mais pas avec 'who').
Vous pouvez utiliser 'grep -c' pour compter les lignes. Étant donné que seuls les noms d'utilisateur non vides vous intéressent, vous pouvez :
who | grep -c .
Il y a toujours au moins un caractère sur chaque ligne.
Comme indiqué dans les commentaires de John T, le users
la commande diffère de who
à plusieurs égards. Le plus important est qu'au lieu de donner un nom par ligne, il répartit les noms plusieurs par ligne - je n'ai pas de machine avec suffisamment d'utilisateurs différents connectés pour tester ce qui se passe lorsque le nombre d'utilisateurs devient important. L'autre différence est que « qui » rend compte des connexions de terminal en cours d'utilisation. Avec plusieurs fenêtres de terminal ouvertes, il affichera plusieurs lignes pour un seul utilisateur, alors que 'users' semble répertorier un utilisateur connecté une seule fois.
En conséquence de cette différence, le 'grep -c .
' la formulation ne fonctionnera pas avec la commande 'users' ; 'wc -w
' est nécessaire.
Vous recherchez le wc
(nombre de mots).
Essayez ceci :
users | wc -w
Ouvrez un shell et tapez :
who -q
La dernière ligne vous donnera un décompte.
MODIFIER :
(soupir) J'ai mal compris la question. Voici une approche quelque peu brutale :
Pour voir les noms d'utilisateur uniques :
who | awk '{ print $1 }' | sort | uniq
Pour voir le nombre d'utilisateurs uniques :
who | awk '{ print $1 }' | sort | uniq | wc -l