Dette er den kode, jeg ønsker at dechifrere:

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

Svar

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

Kommandoen w viser brugere, der er logget på sammen med nogle yderligere oplysninger:

$ 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 udtrækker den første mellemrumsadskilte kolonne i denne (- i slutningen kan fjernes):

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

grep -v USER fjerner alle linjer, der indeholder strengen USER:

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

sort -u sorterer dens input leksikografisk og fjerner duplikatlinjer:

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

Mit gæt er, at det forsøger at angive brugernavne på de brugere, der er logget ind , som en sorteret liste.

En enklere måde at gøre det på er ved blot at bruge kommandoen users. users udsender alle loggede brugere på en linje, men du kan røre det gennem tr " " "\n" og sort -u for at få en bruger pr. linje:

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

Dette afhænger desuden ikke af det format, der produceres af w (tidspunktet på første linje i w output kan eller ikke kan være en del af output fra din pipeline afhængigt af om det aktuelle tidspunkt på dagen er et eller to cifre, afhængigt af om hvilken implementering af w du bruger).

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *