Frage

Ich bin für einen kleinen Shell-Skript suchen, irgendetwas hinein geleitet nehmen, und Dump in eine Datei .. für E-Mail-Debugging-Zwecke. Irgendwelche Ideen?

War es hilfreich?

Lösung

Der Unix-Befehl tee tut dies.

man tee

Andere Tipps

cat > FILENAME

Du bist nicht allein in etwas ähnlichem ... in der Tat brauchen, jemand, dass die Funktionalität schon vor Jahrzehnten und entwickelte wollte tee : -)

Natürlich können Sie stdout direkt auf eine Datei in einem beliebigen Shell mit dem Zeichen> umleiten:

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

Die Standard-Unix-Tool-T kann dies tun. Er kopiert Eingang zum Ausgang, während auch in eine Datei zu protokollieren.

Mit Procmail. Procmail ist dein Freund. Procmail ist für diese Art der Sache gemacht.

Wenn Sie es im Skript analysieren mögen:

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

Sie können aber einfach Katze verwenden. Wenn Katze etwas auf dem stdin bekommt, wird es an die stdout Echo, so dass Sie auf eine Pipe an cat> $ OUTPUT haben. Diese werden das gleiche tun. Das zweite Werk für binäre Daten auch.

Wenn Sie einen Shell-Skript, versuchen Sie dies:

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

Wenn exim oder sendmail ist das, was in das Rohr schreibt, dann ist procmail eine gute Antwort, weil es gebe Sie Verriegelungs- / Serialisierung-Datei und Sie können sie alle in der gleichen Datei setzen.

Wenn Sie nur in eine Datei schreiben möchten, dann   - T-Shirt> /tmp/log.$$ oder   - cat> /tmp/log.$$ könnte gut genug sein.

Verwenden <<command>> | tee <<file>> einen Befehl <<command>> in eine Datei <<file>> für Rohrleitungen.

Dies wird auch die Ausgabe zeigen.

Hä? Ich denke, ich habe nicht die Frage bekommen?

Sie können nicht nur die Pfeife in eine >> ~file Ende

Zum Beispiel

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

wird anhängen Foobar zum dumpfile (und erstellen dumpfile falls erforderlich). Keine Notwendigkeit für ein Shell-Skript ... Ist das, was Sie suchen?

Wenn Sie kümmern sich nicht um das Ergebnis auszugeben

cat - > filename

oder

cat > filename
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top