Search code examples
shellunixbinaryasciibinaryfiles

A hint for end of ASCII data in a binary file


I'm developing a software that stores its data in a binary file format. However, as a courtesy to innocent shell users that might cat to inspect the contents of such a file, I'm thinking of having an ASCII-compatible "magic string" in the start of the file that tells the name and the version of the binary format.

I'm thinking of having at least ten rows (\n) in the message so that head by default settings doesn't hit the binary part.

Now, I wonder if there is any control character or escape code that would hint to the shell that the following content isn't interpretable as printable text, and should be just ignored? I tried 0x00 (the null byte) and 0x04 (ctrl-D) but they seem to be just ignored when catting the file.


Solution

  • Cat regards a file as text. There is no way you can trigger an end-of-file, since EOF is not actually any character.

    The other way around works of course; specifying a format that only start reading binary format from a certain character on.