Qual è un metodo semplice per eseguire il dump dell'input della pipe in un file?(Linux)

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

  •  09-06-2019
  •  | 
  •  

Domanda

Sto cercando un piccolo script di shell che prenda qualsiasi cosa convogliata al suo interno e la scarichi in un file..per scopi di debug della posta elettronica.Qualche idea?

È stato utile?

Soluzione

Il comando unix tee fa questo.

man tee

Altri suggerimenti

cat > FILENAME

Non sei il solo ad aver bisogno di qualcosa di simile...in effetti, qualcuno voleva quella funzionalità decenni fa e la sviluppò tee :-)

Naturalmente, puoi reindirizzare stdout direttamente a un file in qualsiasi shell usando il carattere >:

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

Il tool tee standard di Unix può farlo.Copia l'input nell'output, registrandolo anche in un file.

Utilizzare Procmail.Procmail è tuo amico.Procmail è fatto per questo genere di cose.

Se vuoi analizzarlo nello script:

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

Ma puoi semplicemente usare cat.Se cat riceve qualcosa sullo stdin, lo trasmetterà allo stdout, quindi dovrai collegarlo a cat >$OUTPUT.Questi faranno lo stesso.Il secondo funziona anche per i dati binari.

Se vuoi uno script di shell, prova questo:

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

Se exim o sendmail sono ciò che sta scrivendo nella pipe, allora procmail è una buona risposta perché ti fornirà il blocco/serializzazione dei file e potrai inserirli tutti nello stesso file.

Se vuoi solo scrivere in un file, allora - tee> /tmp/log.$$ o - cat> /tmp/log.$$ potrebbe essere abbastanza buono.

Utilizzo <<command>> | tee <<file>> per trasmettere un comando <<command>> in un file <<file>>.

Questo mostrerà anche l'output.

Eh?Immagino di non aver capito la domanda?

Non puoi semplicemente finire la tua pipa in un... >> ~file

Per esempio

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

aggiungerà Foobar al file dump (e creerà il file dump se necessario).Non è necessario uno script di shell...È quello che stavi cercando?

se non ti interessa produrre il risultato

cat - > filename

O

cat > filename
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top