No Linux, por que um file vazio tem um tamanho de 0, mas um file de text com qualquer conteúdo tem um tamanho do comprimento do conteúdo + 1?

Isso pode ser uma coisa do * nix, não tenho certeza.

Um byte extra é paira o final da linha no final do file, é bastante comum paira os editores de text do Linux adicionair este fim de linha após a última linha.

Provavelmente um personagem de nova linha. Por exemplo, um file criado em um editor de text contendo apenas um 'a' pode realmente conter 2 bytes:

 $ cat /tmp/test_text | hexdump -C 00000000 61 0a |a.| 00000002 

No entanto, usando echo -n (nenhuma nova linha) nos dá um tamanho de 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