Я предполагаю, что вы поместили одну букву в файл с 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