Dies ist der Code, den ich entschlüsseln möchte:
w | cut -d " " -f 1 - | grep -v USER | sort -u
Antwort
w | cut -d " " -f 1 - | grep -v USER | sort -u
Der Befehl w
zeigt Benutzer an, die zusammen mit angemeldet sind Einige zusätzliche Informationen:
$ w 12:59:25 up 50 days, 21:45, 4 users, load average: 1.02, 1.03, 1.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT bill pts/12 xxx.xxx.xxx.xxx 12:55 0.00s 0.03s 0.03s tmux bill pts/14 tmux(64415).%0 12:55 0.00s 0.05s 0.03s w dave pts/18 yyy.yyy.yyy.yyy Wed09 23:52m 1:15 1:07 vim clear_snapshots.pl dave pts/2 yyy.yyy.yyy.yyy Tue14 23:48m 3.65s 3.65s -bash
Der Befehl cut -d " " -f 1 -
extrahiert die erste durch Leerzeichen getrennte Spalte davon (die -
am Ende kann entfernt werden):
$ w | cut -d " " -f 1 USER bill bill dave dave
grep -v USER
entfernt Alle Zeilen, die die Zeichenfolge USER
enthalten:
$ w | cut -d " " -f 1 | grep -v USER bill bill dave dave
sort -u
sortiert die Eingabe lexikografisch und entfernt doppelte Zeilen:
$ w | cut -d " " -f 1 | grep -v USER | sort -u bill dave
Ich vermute, dass versucht wird, die Benutzernamen der aktuell angemeldeten Benutzer aufzulisten als sortierte Liste.
Eine einfachere Möglichkeit besteht darin, einfach den Befehl users
zu verwenden. users
gibt alle angemeldeten Benutzer in einer Zeile aus, aber Sie können dies über tr " " "\n"
und sort -u
, um einen Benutzer pro Zeile zu erhalten:
users | tr " " "\n" | sort -u
Dies hängt außerdem nicht vom Format ab, das von w
(Die Zeit in der ersten Zeile der Ausgabe w
kann Teil der Ausgabe Ihrer Pipeline sein oder nicht, je nachdem, ob die aktuelle Tageszeit ein- oder zweistellig ist Auf welcher Implementierung von w
verwenden Sie).