Klassischerweise lautet der Befehl eher „who“ als „users“, aber „who“ gibt Ihnen mehr Informationen. Rückblickend auf die ursprünglichen Unix-Artikel (Mitte der 70er Jahre) wäre das Beispiel gewesen:
who | wc -l
Die Verwendung von 'wc -l' zählt die Ausgabezeilen - es funktioniert mit sowohl 'users' als auch 'wer'. Die Verwendung von '-w' funktioniert nur zuverlässig, wenn es ein Wort pro Benutzer gibt (wie bei 'users', aber nicht bei 'who').
Sie könnten 'grep -c' verwenden, um die Zeilen zu zählen. Da Sie nur an nicht leeren Benutzernamen interessiert sind, könnten Sie Folgendes tun:
who | grep -c .
In jeder Zeile steht immer mindestens ein Zeichen.
Wie in den Kommentaren von John T angemerkt, der users
Befehl unterscheidet sich von who
in mehrfacher hinsicht. Der wichtigste ist, dass statt eines Namens pro Zeile die Namen auf mehrere pro Zeile verteilt werden – ich habe keinen Rechner mit genügend unterschiedlichen angemeldeten Benutzern, um zu testen, was passiert, wenn die Anzahl der Benutzer groß wird. Der andere Unterschied besteht darin, dass „wer“ die verwendeten Terminalverbindungen meldet. Wenn mehrere Terminalfenster geöffnet sind, werden mehrere Zeilen für einen einzelnen Benutzer angezeigt, während „Benutzer“ einen angemeldeten Benutzer nur einmal aufzulisten scheint.
Als Folge dieses Unterschieds wird die 'grep -c .
' Formulierung funktioniert nicht mit dem Befehl 'users'; 'wc -w
' ist erforderlich.
Sie suchen nach der wc
(Wortzahl) Befehl.
Versuchen Sie Folgendes:
users | wc -w
Öffnen Sie eine Shell und geben Sie ein:
who -q
Die letzte Zeile gibt Ihnen eine Zählung.
BEARBEITEN:
(seufz) Ich habe die Frage falsch verstanden. Hier ist ein etwas brachialer Ansatz:
So sehen Sie eindeutige Benutzernamen:
who | awk '{ print $1 }' | sort | uniq
So zeigen Sie die Anzahl der einzelnen Benutzer an:
who | awk '{ print $1 }' | sort | uniq | wc -l