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='