This may be a *nix thing, I'm not sure.
2 Answers
An extra byte is for the line end at the end of the file, it's quite common for Linux text editors to add this line end after the last line.
-
1The gcc compiler even complains if this blank line is not there. Sep 1, 2011 at 20:23
-
@Dana the Sane, yeah and shell interpreters (at least old ones) won't interpret the last line of a shell script if it's not terminated with a line end.– AlexSep 1, 2011 at 20:31
-
1Some text editors (e.g.
vim
) will also warn you if you don't have the EOL.– AndrewSep 1, 2011 at 23:12
Probably a trailing new-line character. For example, a file created in a text editor containing only an 'a' may actually contain 2 bytes:
$ cat /tmp/test_text | hexdump -C
00000000 61 0a |a.|
00000002
However, using echo -n
(no new line) gives us a size of 1 byte:
$ echo -n 'a' > /tmp/test_text
$ ls -l /tmp/test_text
-rw-r--r-- 1 redacted redacted 1 1 Sep 21:09 /tmp/test_text
$ cat /tmp/test_text | hexdump -C
00000000 61 |a|
00000001