Para essa tarefa específica, você pode usar sed em vez de head
- ou você pode usar awk em vez de head :
some_command | awk '{print} /search_term/{exit}'
Imprima linhas, mas, quando encontrar uma que corresponda ao termo de pesquisa, saia (e não processe mais linhas depois disso).
Uma solução mais geral para o problema que você descreve é
some_command | tee >(command2) | command3
ou
some_command | tee >(command2) >(command3)
Estes funcionarão em bash , mas provavelmente não em muitos outros shells (incluindo sh ).
>(command) fornece um identificador de arquivo para um canal para um processo executando command .
Como você provavelmente sabe, tee permite pegar um fluxo de dados e gravá-lo em vários lugares.
Mas o seu problema é mais delicado do que o que você disse. Você não está tentando fazer

vocêestátentandofazer
em que o comando head (corresponde a C no diagrama)
recebe entrada de " some_command " ( A )
mas também tem um argumento de linha de comando definido a partir da saída de awk ( B ).
Eu suspeito que uma solução geral para isso seria muito mais difícil.