Je suis à la recherche d'un petit script shell qui va prendre tout ce qui y passe et le vider dans un fichier ... pour le débogage des emails. Des idées?Quelle est une méthode simple pour vider l'entrée pipe à un fichier? (Linux)
Répondre
Le tee de commande unix fait cela.
man tee
Utilisez Procmail. Procmail est votre ami. Procmail est fait pour ce genre de chose.
cat > FILENAME
Le tee outil unix norme peut le faire. Il copie l'entrée à la sortie, tout en l'enregistrant dans un fichier.
Vous n'êtes pas seul à avoir besoin quelque chose de similaire .. en fait, quelqu'un a voulu il y a des décennies et i développé tee :-)
Bien sûr, vous pouvez rediriger stdout directement vers un fichier dans un shell en utilisant la> caractère:
echo "hello, world!" > the-file.txt
Huh? Je suppose, je ne comprends pas la question?
Ne peut pas vous mettre fin à votre juste un tuyau dans >> ~file
Par exemple
echo "Foobar" >> /home/mo/dumpfile
ajoutera Foobar au dumpfile (et créer dumpfile si nécessaire). Pas besoin de script shell ... C'est ce que tu cherchais?
Si vous souhaitez analyser dans le script:
while /bin/true; do
read LINE
echo $LINE > $OUTPUT
done
Mais vous pouvez simplement utiliser le chat. Si le chat obtient quelque chose sur le stdin, il le fera écho à la sortie standard, donc vous devrez le rediriger vers cat> $ OUTPUT. Ceux-ci feront de même. La seconde fonctionne également pour les données binaires.
si vous ne se soucient pas de sortir le résultat
cat - > filename
ou
cat > filename
Si vous voulez un script shell, essayez ceci:
#!/bin/sh
exec cat >/path/to/file
Si Exim ou sendmail est ce qui écrit dans le tuyau, alors procmail est une bonne réponse car elle vous donnera le verrouillage/sérialisation de fichier et vous un mettre tout dans le même fichier.
Si vous voulez juste d'écrire dans un fichier, puis - T> /tmp/log.$$ ou - chat> /tmp/log.$$ pourrait être assez bon.
< < commande >> | tee < fichier >>
Cela affichera également la sortie.
Si cela ne tenait qu'à moi, en emphasant, j'accepterais cette réponse –