Qual é um método simples para despejar a entrada do pipe em um arquivo?(Linux)

StackOverflow https://stackoverflow.com/questions/76700

  •  09-06-2019
  •  | 
  •  

Pergunta

Estou procurando um pequeno script de shell que pegue qualquer coisa canalizada e despeje em um arquivo.para fins de depuração de e-mail.Alguma ideia?

Foi útil?

Solução

O comando unix tee faz isso.

man tee

Outras dicas

cat > FILENAME

Você não está sozinho em precisar de algo semelhante...na verdade, alguém queria essa funcionalidade há décadas e desenvolveu camiseta :-)

Claro, você pode redirecionar stdout diretamente para um arquivo em qualquer shell usando o caractere >:

echo "hello, world!" > the-file.txt

O tee de ferramenta unix padrão pode fazer isso.Ele copia a entrada para a saída, ao mesmo tempo que a registra em um arquivo.

Utilize o Procmail.Procmail é seu amigo.O Procmail é feito para esse tipo de coisa.

Se você quiser analisar no script:

while /bin/true; do
    read LINE
    echo $LINE > $OUTPUT
done

Mas você pode simplesmente usar cat.Se cat obtiver algo no stdin, ele irá ecoar para o stdout, então você terá que canalizá-lo para cat >$OUTPUT.Estes farão o mesmo.O segundo também funciona para dados binários.

Se você quiser um script de shell, tente isto:

#!/bin/sh
exec cat >/path/to/file

Se exim ou sendmail é o que está escrito no canal, então procmail é uma boa resposta porque fornecerá bloqueio/serialização de arquivos e você poderá colocar tudo no mesmo arquivo.

Se você deseja apenas gravar um arquivo, então - tee> /tmp/log.$$ ou - cat> /tmp/log.$$ pode ser bom o suficiente.

Usar <<command>> | tee <<file>> para canalizar um comando <<command>> em um arquivo <<file>>.

Isso também mostrará a saída.

Huh?Acho que não entendi a pergunta?

Você não pode simplesmente terminar seu cachimbo em um >> ~file

Por exemplo

echo "Foobar" >> /home/mo/dumpfile

anexará Foobar ao dumpfile (e criará dumpfile se necessário).Não há necessidade de um script de shell ...É isso que você estava procurando?

se você não se importa em gerar o resultado

cat - > filename

ou

cat > filename
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top