Isso é tee
que você está pesquisando.
ls -l | tee outfile
imprime a saída de ls -l
para stdout (ou seja, o terminal) e salva no arquivo outfile
ao mesmo tempo. Mas : Não escreve o nome do comando nem para stdout nem para o arquivo. Para isso, apenas echo
do nome do comando antes de executar o comando e canalizar ambas as saídas para tee
:
( echo "ls -l" && ls -l ) | tee outfile
É complicado digitar, então por que não definir uma função?
both(){ ( echo "" && ) | tee outfile ;}
Depois disso, você pode simplesmente executar
both "ls -l"
para obter o resultado desejado. Coloque a função em seu ~/.bashrc
para defini-la em cada novo terminal. Substitua outfile
por para poder especificar o arquivo de saída com, por exemplo,
both "ls -l" output
em vez de gravar em outfile
todas as vezes. Se você não quiser que o arquivo de saída seja sobrescrito, mas sim anexá-lo, adicione a opção -a
a tee
.