Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

This may be a *nix thing, I'm not sure.

share|improve this question
up vote 16 down vote accepted

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.

share|improve this answer
What a simple explanation. Thanks Alex. – Kevin Rood Sep 1 '11 at 20:13
The gcc compiler even complains if this blank line is not there. – Dana the Sane Sep 1 '11 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. – Alex Sep 1 '11 at 20:31
Some text editors (e.g. vim) will also warn you if you don't have the EOL. – Andrew Sep 1 '11 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.|

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|
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.