Dit is de code die ik wil ontcijferen:

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

Antwoord

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

De w -opdracht geeft gebruikers weer die zijn aangemeld samen met wat aanvullende informatie:

$ 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 

Het cut -d " " -f 1 - commando extraheert de eerste door spaties gescheiden kolom hiervan (de - aan het einde kan worden verwijderd):

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

grep -v USER verwijdert alle regels die de tekenreeks USER bevatten:

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

sort -u sorteert zijn invoer lexicografisch, en verwijdert dubbele regels:

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

Ik vermoed dat het probeert de gebruikersnamen te vermelden van de gebruikers die momenteel zijn aangemeld , als een gesorteerde lijst.

Een eenvoudigere manier om dat te doen is door gewoon het users commando te gebruiken. users geeft alle aangemelde gebruikers op één regel weer, maar je kunt dat door tr " " "\n" en sort -u om één gebruiker per regel te krijgen:

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

Dit is bovendien niet afhankelijk van het formaat geproduceerd door w (de tijd op de eerste regel van de w -uitvoer kan wel of niet deel uitmaken van de uitvoer van uw pijplijn, afhankelijk van of de huidige tijd van de dag één of twee cijfers is, op welke implementatie van w u “gebruikt).

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *