Heiko Schlittermann <[email protected]> (Do 12 Jul 2018 14:50:20 CEST): > Jochen Topf <[email protected]> (Do 12 Jul 2018 09:09:49 CEST): > > Die Lösung ist relativ einfach mit einem externen Programm zu erledigen, > > das quasi wie "cat" funktioniert, also Daten einfach durchleitet, aber > > die Ausgabedatei selbst aufmacht und zwar erst dann, wenn zum ersten Mal > > Daten ankommen. Ich weiß von keinem Programm, dass das macht, aber es > > ist auch nicht schwierig, sowas zu schreiben. > > #!/bin/bash > read || exit > test $# = 1 && exec 1>"$1" > printf '%s\n' "$REPLY" > exec cat
Hier noch einer mit Perl:
perl -e 'sysread(STDIN, $_, 1) or exit 0; open(STDOUT, ">", shift); print;
exec "cat"'
Oder als Script etwas leserlicher:
#!/usr/bin/perl
sysread(STDIN, $_, 1) or exit 0;
open(STDOUT, '>', shift // die "$0: Need a file name");
print;
exec 'cat';
Oder Pure Perl, aber das hatte Thomas schon, mit Fehlerbehandlung left
as an excercise to the reader ;)
#!/usr/bin/perl
die "Usage: $0 FILE\n" unless @ARGV == 1;
$/ = \4096; # use 4k chunks, not line by line
defined($_ = <STDIN>)
and open(STDOUT, '>', shift)
and print
and print while <STDIN>;
--
Heiko
signature.asc
Description: PGP signature
