Aqui, o comando à esquerda é grep tool
. Como você está passando um único argumento para grep
, ele está pesquisando em sua entrada padrão. Como você não redirecionou a entrada padrão, grep
está lendo no terminal: está aguardando que você digite.
Para pesquisar em um arquivo, use
grep tool path/to/file | …
Para pesquisar em um diretório recursivamente, use
grep -r tool path/to/directory | …
Você pode filtrar os resultados para listar somente as linhas que contêm embed=
. Elimine as opções -l
e -r
, elas não fazem sentido quando a entrada é proveniente da entrada padrão.
grep -r tool path/to/directory | grep 'embed='
Isso lista linhas contendo tool
e embed=
(em qualquer ordem). Um método alternativo com encanamento mais simples seria fazer uma única pesquisa com um ou padrão; isso é sempre possível, mas se os padrões puderem se sobrepor (não é o caso aqui), o padrão pode ficar muito complicado.
grep -E -r 'tool.*embed=|embed=.*tool' path/to/directory
Se você quisesse listar arquivos contendo tool
e embed=
, você precisaria de uma estrutura de comando diferente, com os primeiros grep
listando nomes de arquivos ( -l
) e o segundo recebendo esses nomes de arquivos como argumentos , não como entrada. Convertendo entradas padrão em argumentos de linha de comando para o comando xargs
.
grep -lZ -r tool path/to/directory | xargs -0 grep -l 'embed='