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).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.