Toto je kód, který chci dešifrovat:

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

Odpověď

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

Příkaz w zobrazuje uživatele, kteří jsou přihlášeni spolu s několik dalších informací:

$ 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 

Příkaz cut -d " " -f 1 - extrahuje první sloupec oddělený mezerou (- na konci lze odstranit):

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

grep -v USER odebere všechny řádky, které obsahují řetězec USER:

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

sort -u třídí svůj vstup lexikograficky a odstraňuje duplicitní řádky:

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

Myslím, že se pokusí vypsat uživatelská jména uživatelů, kteří jsou aktuálně přihlášeni , jako seřazený seznam.

Jednodušší způsob, jak toho dosáhnout, je použití příkazu users. users vypíše všechny přihlášené uživatele do jednoho řádku, ale můžete to propojit pomocí tr " " "\n" a sort -u získat jednoho uživatele na řádek:

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

Toto navíc nezávisí na formátu vytvořeném programem w (čas na prvním řádku w výstupu může nebo nemusí být součástí výstupu vašeho potrubí v závislosti na tom, zda je aktuální čas dne jedna nebo dvě číslice, v závislosti na o tom, jakou implementaci w používáte).

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *