Я предполагаю, что вы поместили одну букву в файл с echo a > fileили vim file, что означает, что у вас будет эта буква и дополнительный символ новой строки (два символа, то есть два байта). ls -lпоказывает размер файла в байтах, а не в блоках (точнее, длину файла ):
$ echo a > testfile
$ ls -l testfile
-rw-r--r-- 1 user user 2 Apr 28 22:08 testfile
$ cat -A testfile
a$
(обратите внимание, что cat -Aновые строки отображаются в виде $символов)
В отличие от ls -l, duпокажет реальный размер занимаемого на диске:
$ du testfile
4
(фактически, du показывает размер в единицах 1 кБ, поэтому здесь размер равен 4 × 1024 байт = 4096 байт = 4 кБ, что является размером блока в этой файловой системе)
Чтобы lsпоказать это, вы должны будете использовать -sопцию вместо / в дополнение к-l :
$ ls -ls testfile
4 -rw-r--r-- 1 user user 2 Apr 28 22:08 testfile
Первый столбец - это выделенный размер, опять же в единицах 1 кБ. Последний можно изменить, указав --block-size, например,
$ ls -ls --block-size=1 testfile
4096 -rw-r--r-- 1 aw aw 2 Apr 28 22:08 testfile