Dette er koden jeg ønsker å tyde:

w | cut -d " " -f 1 - | grep -v USER | sort -u 

Svar

w | cut -d " " -f 1 - | grep -v USER | sort -u 

Kommandoen w viser brukere som er pålogget sammen med litt tilleggsinformasjon:

$ 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 

cut -d " " -f 1 - kommandoen trekker ut den første mellomromsseparerte kolonnen i denne (- på slutten kan fjernes):

$ w | cut -d " " -f 1 USER bill bill dave dave 

grep -v USER fjerner alle linjene som inneholder strengen USER:

$ w | cut -d " " -f 1 | grep -v USER bill bill dave dave 

sort -u sorterer inngangen leksikografisk, og fjerner dupliserte linjer:

$ w | cut -d " " -f 1 | grep -v USER | sort -u bill dave 

Jeg antar at den prøver å liste opp brukernavnene til brukerne som for øyeblikket er pålogget , som en sortert liste.

En enklere måte å gjøre det på er å bare bruke kommandoen users. users sender ut alle påloggede brukere på en linje, men du kan pipe det gjennom tr " " "\n" og sort -u for å få en bruker per linje:

users | tr " " "\n" | sort -u 

Dette avhenger i tillegg ikke av formatet produsert av w (tiden på første linje i w -utgangen kan eller ikke være en del av utgangen på rørledningen, avhengig av om dagens tid på dagen er ett eller to sifre, avhengig av på hvilken implementering av w du bruker).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *