Hallo Klaus.
wie teile ich eine Ausgabe, um sie auf der Standardausgabe
anzuzeigen UND weiter zu verarbeiten?
Also soetwas wie „tee“ das aber nicht in eine Datei schreibt
sondern per Pipe an den nächsten Befehl gibt.
Dafür gibt es die Prozesssubstitution >( empfangsprozess ).
Diese kann überall dort stehen, wo eigentlich eine Datei erwartet
wird, nur dass der Empfänger eben der beliebig komplexe „empfangsprozess“ ist.
Bsp.
netstat -utanp | grep VERBUNDEN | tee
/home/irgendwer/irgendwo/datei.txt
soll werden:
netstat -utanp | grep VERBUNDEN | ??Ergebnis ausgeben und weiterleiten?? | wc -l
Da tee seine Eingabe auf N Dateien und die Standardausgabe vervielfacht, mogeln wir ihm also statt der Datei einen Prozess unter:
$ netstat -utanp | grep VERBUNDEN | tee \>(sort \> sortiert.txt) unsortiert.txt
# Standardausgabe:
tcp 0 0 127.0.0.1:28558 127.0.0.1:22 VERBUNDEN 4481/ssh
tcp 0 0 127.0.0.1:22 127.0.0.1:28558 VERBUNDEN 4482/4
# plus 2 Ergebnisdateien:
$ ls -l \*sortiert\*
-rw-r--r-- 1 root root 202 2007-11-04 11:58 sortiert.txt
-rw-r--r-- 1 root root 202 2007-11-04 11:58 unsortiert.txt
# hier mit 3 Ergebnisdateien:
$ netstat -utanp | grep VERBUNDEN | tee \>(sort \> sortiert.txt) \>(wc -l \> anzahl.txt) unsortiert.txt
tcp 0 0 127.0.0.1:28558 127.0.0.1:22 VERBUNDEN 4481/ssh
tcp 0 0 127.0.0.1:22 127.0.0.1:28558 VERBUNDEN 4482/4
Gruß,
-Andreas.