Quelle est une méthode simple pour vider une entrée de canal dans un fichier? (Linux)

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

  •  09-06-2019
  •  | 
  •  

Question

Je cherche un petit script shell qui prend tout ce qui y est canalisé et le vide dans un fichier .. à des fins de débogage de courrier électronique. Des idées?

Était-ce utile?

La solution

La commande unix tee fait cela.

man tee

Autres conseils

cat > FILENAME

Vous n'êtes pas le seul à avoir besoin de quelque chose de similaire ... en fait, quelqu'un voulait cette fonctionnalité il y a plusieurs décennies et a développé tee : -)

Bien sûr, vous pouvez rediriger stdout directement vers un fichier dans n’importe quel shell en utilisant le > caractère:

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

Le t-shirt unix standard peut le faire. Il copie les entrées dans les sorties, tout en les enregistrant dans un fichier.

Utilisez Procmail. Procmail est votre ami. Procmail est fait pour ce genre de chose.

Si vous souhaitez l'analyser dans le script:

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

Mais vous pouvez simplement utiliser un chat. Si chat obtient quelque chose sur le stdin, il sera répercuté sur la sortie standard. Vous devrez donc le diriger vers le chat & Gt; $ OUTPUT. Ceux-ci feront la même chose. Le second fonctionne également pour les données binaires.

Si vous voulez un script shell, essayez ceci:

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

Si exim ou sendmail est ce qui est écrit dans le tube, procmail est une bonne réponse car il vous donnera le verrouillage / la sérialisation des fichiers et vous pouvez tout mettre dans le même fichier.

Si vous voulez juste écrire dans un fichier, alors   - tee > /tmp/log.$$ ou   - chat > /tmp/log.$$ pourrait être assez bon.

Utilisez <<command>> | tee <<file>> pour canaliser une commande <<command>> dans un fichier <<file>>.

Ceci affichera également le résultat.

Hein? Je suppose que je ne comprends pas la question?

Ne pouvez-vous pas terminer votre pipe dans un >> ~file

Par exemple

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

ajoutera Foobar au fichier de dump (et créera un fichier de dump si nécessaire). Pas besoin d'un script shell ... Est-ce ce que vous recherchiez?

si vous ne vous souciez pas de la sortie du résultat

cat - > filename

ou

cat > filename
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top