Eu acho que você tem aquela letra no arquivo com echo a > file ou vim file , o que significa que você terá essa letra e uma nova linha adicional (dois caracteres, portanto, dois bytes). ls -l mostra o tamanho do arquivo em bytes, não blocos (para ser mais específico: arquivo comprimento ):
$ echo a > testfile
$ ls -l testfile
-rw-r--r-- 1 user user 2 Apr 28 22:08 testfile
$ cat -A testfile
a$
(observe que cat -A exibe novas linhas como $ character)
Em contraste com ls -l , du mostrará o tamanho real ocupado no disco:
$ du testfile
4
(na verdade, du mostra o tamanho em unidades de 1kiB, então aqui o tamanho é 4 × 1024 bytes = 4096 bytes = 4 kiB, que é o tamanho do bloco neste sistema de arquivos)
Para que ls mostre isso, você terá que usar a opção -s em vez de / além de -l :
$ ls -ls testfile
4 -rw-r--r-- 1 user user 2 Apr 28 22:08 testfile
A primeira coluna é o tamanho alocado, novamente em unidades de 1kiB. A última pode ser alterada especificando --block-size , por exemplo,
$ ls -ls --block-size=1 testfile
4096 -rw-r--r-- 1 aw aw 2 Apr 28 22:08 testfile