stdin in Datei schreiben und gleichzeitig nach stdout weiterleiten

Registriert
Dez. 2007
Beiträge
147
Ich suche einen Linux/Bash-Befehl, der sinngemäß folgendes macht: Er liest von stdin, gibt diese Information unverändert nach stdout weiter, schreibt sie aber gleichzeitig in eine Datei.
Zur Veranschaulichung ein Beispiel:
$> echo MEINTEXT | gesuchterbefehl file.txt | nc localhost 85
sollte bewirken, dass in der file.txt MEINTEXT drinsteht und netcat diesen String übers Netz schickt.

Kann mir jemand einen Tipp geben, wie ich mithilfe der Standard-Linux-Utilities so etwas bewerkstelligen kann?

Danke im Voraus
Alexander
 
Ich bin kein Bash Experte, aber es geht vielleicht so:
Code:
echo TEXT > file | commando `cat file`

Bsp.:
echo /usr > test.txt | ls -la `cat test.txt`
Das ist nicht ganz die gewünschte Funktionsweise, sollte aber auch gehen.
 
Zuletzt bearbeitet:
echo "MEINTEXT" > file.txt | cat file.txt | nc localhost 85

naja, ich weiß nicht, irgendwie scheint da noch was zu fehlen :D

es gibt sicher noch was anderes, aber auf die schnelle (muss gleich weg) fällt mir nix besseres ein :rolleyes:
 
Da mich das auch interessiert hat, habe ich ein wenig nachgeforscht ;).
"tee" scheint der gesuchte Befehl zu sein. Zitat aus der man page:
DESCRIPTION
Copy standard input to each FILE, and also to standard output.
Code:
Bsp.:
ls -la `echo /usr | tee test.txt`
 
Zuletzt bearbeitet:
Nur um dir das zu bestätigen:
tee "scheint" nicht nur der richtige Befehl zu sein.
tee ist der absolut richtige Befehl für diesen Fall :).
 
Danke für die schnellen Antworten - tee ist genau das was ich gesucht habe. (Nun würde mich nur noch interessieren wie zum Henker man auf diesen Namen gekommen ist).

@magus16:
So wie du es vorgeschlagen hast wäre es mir auch in den Sinn gekommen, das geht aber in meinem Fall nicht, weil das ganze in meinem Fall asynchron über stdin und stdout arbeiten muss. Netcat nimmt z.B. die Daten gar nicht über die Befehlszeile sondern nur über stdin.

Mit
echo "MEINTEXT" > file.txt | cat file.txt | nc localhost 89 funktionierts allerdings ebenfalls :)

LG
Alexander
 
tee: http://de.wikipedia.org/wiki/Tee_(Unix)

Ein Kollege hat ein ähnliches Programm geschrieben, das das gleiche wie tee nur mit mehr Optionen kann. Er nannte sein Programm "coffee".
Als ich fragte, wie er auf den Namen kommt meinte er nur: "Kaffee ist besser als Tee!"
 
Zurück
Oben