¿Por qué grep me muestra un resultado que no contiene la palabra de búsqueda?

¿Por qué grep me muestra un resultado que no contiene la palabra de búsqueda?

Quiero comprobar si el servicio sensu está instalado. Ejecuté este comando service --status-all| grep sensuy aquí está el resultado.

vagrant@vagrant-ubuntu-trusty-64:~$ service --status-all| grep sensu
 [ ? ]  apport
 [ ? ]  console-setup
 [ ? ]  cryptdisks
 [ ? ]  cryptdisks-early
 [ ? ]  dns-clean
 [ ? ]  irqbalance
 [ ? ]  killprocs
 [ ? ]  kmod
 [ ? ]  networking
 [ ? ]  ondemand
 [ ? ]  open-vm-tools
 [ ? ]  pppd-dns
 [ ? ]  rc.local
 [ ? ]  screen-cleanup
 [ ? ]  sendsigs
 [ ? ]  umountfs
 [ ? ]  umountnfs.sh
 [ ? ]  umountroot
 [ ? ]  virtualbox-guest-x11

Me parece muy extraño que grepno filtre todas las líneas anteriores porque ninguna de ellas contiene la palabra de búsqueda 'sensu'

La pregunta es: ¿Por qué?

Respuesta1

Parece que algunos servicios informan su estado a stderr:

$ service --status-all 2>&1 | wc -l
43
$ service --status-all 2>/dev/null | wc -l
28
$ service --status-all 2>&1 1>/dev/null | wc -l
15

28 a salida estándar, 15 a stderr. Estás viendo los que informan a stderr porque la tubería solo maneja stdout. Haz esto en su lugar:

service --status-all 2>&1| grep sensu

información relacionada