Wie folgt man einer Binärdatei von Anfang an (a la “tail -f”)?

10

Ist es möglich, einer Binärdatei von Anfang an zu folgen, a la tail -f?

Dies ist in einigen Fällen nützlich, z. B. wenn ich scpeine Datei an einen Remote-Server weitergebe und sie gleichzeitig einem anderen Prozess zuführen möchte (ja, ich weiß, dass ich ssh+ catTricks verwenden kann).

Soweit ich aus dem FM lese, tailist geschrieben mit Textdateien im Auge.

Gibt es eine einfache Möglichkeit, solche Operationen mit Standard-Posix-Tools durchzuführen?

Marcus
quelle
Wo steht, dass tailnur mit Textdateien verwendet werden kann?
Rozcietrzewiacz
@rozcietrzewiacz Auf älteren Unices haben textorientierte Dienstprogramme wie z. B. tailBinärdateien nicht immer verarbeitet: Sie können Nullbytes ersticken oder Streubytes nach dem letzten Zeilenumbruch in den Eingabedateien weglassen. Moderne Systeme kommen zurecht.
Gilles 'SO - hör auf böse zu sein'

Antworten:

12

tailfunktioniert mit binären Daten genauso gut wie mit Text. Wenn Sie ganz am Anfang der Datei beginnen möchten, können Sie verwenden tail -c +1 -f.

rozcietrzewiacz
quelle
Funktioniert das bei niemandem? Ich habe eine Binärdatei mit 16 Vorkommen einer Zeichenfolge, die ich bei der Verwendung sehe cat bin_file | strings - -o | grep match_string, aber wenn ich dies tue tail -c +1 -f bin_file | strings - -o | grep match_string, erhalte ich nach der 9. Übereinstimmung nichts mehr. Ich habe auch festgestellt, dass die Zeilennummern von -oim Vergleich zur Katzenausgabe alle 1 weniger sind. Wenn ich den Grep weglasse, bekomme ich alle 16 Übereinstimmungen (gemischt mit allem anderen), also dachte ich, das Problem sei Grep, aber ich habe einen Perl-
Einzeiler