Eu estive pesquisando sobre isso, mas, talvez devido à minha versão em espanhol do CygWin / Windows, não consegui encontrar uma solução.
Eu tenho mais recente (dezembro de 2014) CygWin 32 bits instalado, e parece que há algum problema com o seu comando grep
.
Como você sabe, o CygWin shell pode executar comandos do Windows e do Linux, portanto, estou tentando filtrar o comando resultados de meus serviços list, com os seguintes resultados:
$ sc query state= all | grep "stopped" -i
Coincidencia en el fichero binario (entrada estándar)
Acho que esta mensagem se traduz em: Binary file match (standard input)
.
Se eu tentar de um shell do Windows (usando apenas comandos do Windows):
C:\Users\Luis-> sc query state= all | find "stopped" /i
ESTADO : 1 STOPPED
ESTADO : 1 STOPPED
ESTADO : 1 STOPPED
ESTADO : 1 STOPPED
ESTADO : 1 STOPPED
... obtenho os resultados corretos.
Esta é a versão grep incorporada do CygWin:
$ grep -V
grep (GNU grep) 2.21
Copyright (C) 2014 Free Software Foundation, Inc.
Licencia GPLv3+: GPL de GNU versión 3 o posterior
Eu encontrei algum tipo de solução alternativa baixando UnxUtils e usando sua versão grep 32bit-Windows:
$ PathToUNXUtils="/cygdrive/d/Utilidades/UnxUtils/"
$ "$PathToUNXUtils"grep -V
grep (GNU grep) 2.5.1
Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.
$ sc query state= all | "$PathToUNXUtils"grep "stopped" -i | more.com
ESTADO : 1 STOPPED
ESTADO : 1 STOPPED
ESTADO : 1 STOPPED
ESTADO : 1 STOPPED
ESTADO : 1 STOPPED
ESTADO : 1 STOPPED
Mas, bem ... eu acho que a maneira apropriada de resolver isso seria fazer a versão grep original do CygWin funcionar como deveria.
O que está acontecendo aqui? Devo baixar e compilar a última versão do grep como última esperança?