¿Qué es lsof -i | grep -E "(ESCUCHAR | ESTABLECIDO)" compuesto por?

Recibí consejos para verificar si una aplicación de iTunes envía datos a la nube usando esta línea de command

lsof -i | grep -E "(LISTEN|ESTABLISHED)" 

¿Alguien puede explicar cómo funciona esto? ¿Cómo funciona la tubería aquí?

Primero lsof se ejecuta:

 lsof - list open files 

con la opción -i:

-i [i] selecciona la list de files cuya dirección de Internet coincide con la dirección especificada en i. Si no se especifica ninguna dirección, esta opción selecciona la list de todos los files de networking de Internet y x.25 (HP-UX).

Entonces obtienes una list similar a esto:

 Safari 252 pfitz 33u IPv4 0x1052718d4b4f54ef 0t0 TCP localhost:49289->localhost:6263 (ESTABLISHED) Safari 252 pfitz 36u IPv4 0x1052718d4b4f54ef 0t0 TCP localhost:49289->localhost:6263 (ESTABLISHED) iTunes 254 pfitz 28u IPv4 0x1052718d460f9d07 0t0 TCP *:49196 (LISTEN) iTunes 254 pfitz 30u IPv4 0x1052718d460fb4ef 0t0 TCP *:daap (LISTEN) iTunes 254 pfitz 31u IPv6 0x1052718d37b6b627 0t0 TCP *:daap (LISTEN) 

con muchas más inputs. Para filtrar las inputs, uno usa grep :

La utilidad grep busca cualquier file de input dado, seleccionando líneas que coinciden con uno o más patrones. De forma pnetworkingeterminada, un patrón coincide con una línea de input si la expresión regular (RE) en el patrón coincide con la línea de input sin su nueva línea final. Una expresión vacía coincide con cada línea. Cada línea de input que coincide con al less uno de los patrones se escribe en la salida estándar.

grep se usa para patrones simples y expresiones regulares básicas (BRE); egrep puede manejar expresiones regulares extendidas (ERE). Ver re_format (7) para más información sobre expresiones regulares. fgrep es más rápido que grep y egrep, pero solo puede manejar patrones fijos (es decir, no interpreta expresiones regulares). Los patrones pueden consistir en una o más líneas, lo que permite que cualquiera de las líneas de patrón coincida con una parte de la input.

y la opción -E hace lo siguiente:

-E, –extended-regexp

Interpreta el patrón como una expresión regular extendida (es decir, fuerza grep para comportarse como egrep).

La expresión regular en este caso es "(LISTEN|ESTABLISHED)" que significa que simplemente imprime las líneas con escuchar o establecer.

Conclusión

  1. lsof crea una list con todas las conexiones a Internet.
  2. Para ser útil, debe filtrarse con grep
  3. Entonces se filtra con la expresión regular que está buscando ESCUCHAR o ESTABLECER