Cygwin não parece terminar com o comando grep

1

Eu costumava usar o grep no cygwin no windows XP com sucesso. De repente, agora, quando corro no grep, parece que nunca acaba.

miname@mycomputer /cygdrive/c/emacs
$ grep "lkjlkjlkjlkjlkjlkjlkjlkjlkjlkjlkj"

Eu pesquisei no google, mas não encontrei nada relacionado a isso. Eu reiniciei o meu computador. Eu também verifiquei logs, mas parece haver apenas o log de instalação (em var / log). Eu pareço lembrar que tive dificuldade em instalar o cygwin (eu tenho um computador de trabalho bastante trancado), então prefiro não reinstalar (se de fato isso iria consertar isso).

O que posso fazer para corrigir ou investigar meu problema?

EDIT: Depois de ler a resposta, percebi que o que eu achava que foi bem sucedido foi realmente grep "asdfasdf" . - anote o ponto! Eu não estava fazendo a mesma coisa.

    
por cammil 13.11.2013 / 18:09

1 resposta

3

Não há problema real. O que está acontecendo aqui é que, como você não especificou nenhum arquivo para grep para pesquisar, ele está escutando STDIN para que o texto seja pesquisado. É assim que os pipelines como tail -f /var/log/messages | grep "error" funcionam: o comando tail envia sua saída para a entrada padrão de grep e grep imprime somente as linhas que correspondem à string de pesquisa fornecida (neste exemplo, "error") .

Se você invocar grep sem arquivos e sem canalizar nada para ele, ele herdará o fluxo de entrada padrão de seu terminal e escutará seu teclado. (Experimente! Digite alguma coisa e pressione Return, e você verá o eco correspondente se corresponder à string de pesquisa que você forneceu ao grep.) Para finalizar o processo do grep, pressione Control-C. Para obter resultados úteis, passe um ou mais arquivos como argumentos de linha de comando seguindo a string de pesquisa, por exemplo. grep "something" file.c file.h , ou insira algo como no exemplo tail acima.

É assim que o Unix grep funciona e como sempre funcionou. Se você costumava invocar o grep dessa maneira, e ele se comportava de maneira diferente, então o que você estava invocando não era o grep do Cygwin, mas algum outro utilitário, que por acaso tinha o mesmo nome e morava em um diretório anterior ao /bin do Cygwin. $PATH .

    
por 13.11.2013 / 18:28