Tämä on koodi, jonka haluan tulkita:

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

Vastaus

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

Komennossa w näytetään käyttäjät, jotka ovat kirjautuneet sisään joitain lisätietoja:

$ 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 

Komento cut -d " " -f 1 - poimii tämän ensimmäisen välilyönnillä erotetun sarakkeen (- lopussa voidaan poistaa):

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

grep -v USER poistaa kaikki rivit, jotka sisältävät merkkijonon USER:

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

sort -u lajittelee syötteen leksikografisesti ja poistaa päällekkäiset rivit:

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

Oletan, että se yrittää luetella sisäänkirjautuneiden käyttäjien käyttäjätunnukset , lajiteltuna luettelona.

Yksinkertainen tapa tehdä se on vain käyttämällä users -komentoa. users tuottaa kaikki kirjautuneet käyttäjät yhdellä rivillä, mutta voit lähettää sen tr " " "\n" ja sort -u saada yksi käyttäjä riviä kohden:

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

Tämä ei myöskään riipu muodosta, jonka w (w -lähdön ensimmäisen rivin aika voi olla tai ei olla osa putkistosi lähtöä riippuen siitä, onko nykyinen kellonaika yksi vai kaksi numeroa, riippuen w -sovelluksen käyttöönotosta).

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *