Ваши цитаты слишком сильны.
Действительно.
'
- это «сильные» кавычки, которые означают, что расширения параметров, расширения подоболочки, расширения истории и т.п. в них не работают.
$ echo '$(echo foo)'
$(echo foo)
$ echo "$(echo foo)"
foo
Ничего из вышеперечисленного.
Размер блока связан с параметрами файловой системы, выбранными во время mkfs, и его можно узнать, выполнив stat()
для файла. Он не имеет отношения к базовому блочному устройству, на котором хранится файловая система (, если таковая имеется ).
Например, с GNUstat
:
$ /usr/bin/stat. | grep IO.Block
Size: 71680 Blocks: 144 IO Block: 2048 directory
Если вы предпочитаете более программный вид, системный вызов stat()
можно сделать в perl
с:
$ perl -e '@x=stat("."); print $x[11]'
2048
В обоих случаях мы получаем "2048" в качестве ответа для этой файловой системы.
Мы можем это проверить:
$ truncate -o -s 1 foo
$ ls -l foo
-rw-r--r-- 1 sweh sweh 2048 Sep 17 10:28 foo
Разные файловые системы могут иметь разные размеры блоков. например, на моей машине я заставил диск /news
использовать меньшие размеры блоков, потому что он хранит в основном файлы меньшего размера
$ perl -e '@x=stat("/"); print $x[11]'
4096
$ perl -e '@x=stat("/news"); print $x[11]'
2048
Для файловых систем Linux extx
это делается с помощью mke2fs
с флагом -b
:
-b block-size
Specify the size of blocks in bytes. Valid block-size values
are 1024, 2048 and 4096 bytes per block. If omitted, block-size
is heuristically determined by the filesystem size and the
expected usage of the filesystem (see the -T option). If block-
size is preceded by a negative sign ('-'), then mke2fs will use
heuristics to determine the appropriate block size, with the
constraint that the block size will be at least block-size
bytes. This is useful for certain hardware devices which
require that the blocksize be a multiple of 2k.