Este es el código que deseo descifrar:

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

Respuesta

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

El comando w muestra los usuarios que han iniciado sesión junto con alguna información adicional:

$ 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 

El comando cut -d " " -f 1 - extrae la primera columna separada por espacios de este (el - al final se puede eliminar):

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

grep -v USER elimina todas las líneas que contienen la cadena USER:

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

sort -u ordena su entrada de manera lexicográfica y elimina las líneas duplicadas:

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

Supongo que intenta enumerar los nombres de usuario de los usuarios que están conectados actualmente , como una lista ordenada.

Una forma más sencilla de hacerlo es simplemente usando el comando users. users generará todos los usuarios registrados en una línea, pero puede canalizarlos a través de tr " " "\n" y sort -u para obtener un usuario por línea:

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

Esto, además, no depende del formato producido por w (la hora en la primera línea de la salida w puede o no ser parte de la salida de su canalización dependiendo de si la hora actual del día es de uno o dos dígitos, según sobre qué implementación de w estás usando).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *