Não está claro a partir de sua pergunta qual texto você realmente espera que acabe no arquivo.
No shell, você poderia fazer
echo 'ab' | sudo tee myLog.txt
para ter "ab" gravado em myLog.txt
e também exibido na saída padrão. O motivo para usar tee
é geralmente seu efeito colateral, para que você não precise executar um shell como um usuário privilegiado, e a saída para a saída padrão não é realmente desejada; então você pode adicionar um redirecionamento para suprimir isso.
echo 'ab' | sudo tee myLog.txt >/dev/null
Em um sistema (3) chamada em código C, você pode simplesmente colocar isso em uma string:
system("echo 'ab' | sudo tee myLog.txt >/dev/null");
O que segue é basicamente indefinido:
echo 'ab' | echo 'Logging enabled'
mas normalmente descartará "ab" porque o segundo echo
não faz nada com ele e, em vez disso, produz sua própria saída. Se você quiser combinar duas partes do texto, tente algo como
printf "%s\nLogging enabled\n" "$(echo ab)"
mas, novamente, não está claro o que e como você deseja fazer com as duas declarações echo
separadas.
(Para reiterar o óbvio, a | b
conecta a saída padrão de a
à entrada padrão de b
e executa os dois processos em paralelo, com a entrada padrão ainda conectada à entrada padrão de a
e saída padrão proveniente de b
.)