Der who
Befehl kann verwendet werden, um angemeldete Benutzer zu finden, druckt jedoch doppelte Werte, wenn mehrere Shells ausgeführt werden. Wie erhalte ich eine Liste der aktuell angemeldeten Benutzer ohne Duplikate?
Der who
Befehl kann verwendet werden, um angemeldete Benutzer zu finden, druckt jedoch doppelte Werte, wenn mehrere Shells ausgeführt werden. Wie erhalte ich eine Liste der aktuell angemeldeten Benutzer ohne Duplikate?
Antworten:
Wir können die Ausgabe von who
to awk
weiterleiten, um nur die erste Zelle jedes Datensatzes (Zeile) zu drucken, und sie dann an den Befehl sort
weiterleiten, der die Werte alphabetisch sortiert und nur die eindeutigen -u
Einträge ausgibt :
who | awk '{print $1}' | sort -u
Oder wir können nur verwenden awk
in dieser Art und Weise :
who | awk '!seen[$1]++ {print $1}'
Eine POSIX-kompatible Lösung von @dessert, bei cut
der die Leerzeichen als Trennzeichen verwendet werden -d' '
und nur das erste Feld jedes Datensatzes gedruckt wird -f1
:
who | cut -d' ' -f1 | sort -u
Dank @DavidFoerster gibt es hier eine viel kürzere Syntax, bei der die Informationen aller anderen Spalten nicht verloren gehen:
who | sort -u -k 1,1
Für die gleichen Zwecke könnten wir den Befehl w
mit der Option -h
(Header ignorieren) verwenden, zum Beispiel:
w -h | awk '!seen[$1]++ {print $1}'
Wir könnten auch den Befehl in users
Kombination mit dem Befehl rs
(Daten umformen) mit der Transponierungsoption verwenden -T
und dann noch einmal sort -u
:
users | rs -T | sort -u
Wir könnten und who -q
mit Transposition folgendermaßen verwenden - wobei der Befehl head -1
nur die erste Zeile der Ausgabe des vorherigen Befehls zuschneidet:
who -q | head -1 | rs -T | sort -u
Siehe auch:
w
und who
ist nicht alphabetisch sortiert, daher habe ich absichtlich sort -u
in der ersten Lösung verwendet. Auch die Ausgabe von who -q
sollte transponiert werden (wie im letzten Beispiel), sonst ist das Ergebnis nicht korrekt.
who -q
Möglicherweise suchen Sie jedoch nach einem System, auf dem mehrere Benutzer gleichzeitig gehostet werden, sind sich jedoch nicht sicher.