Как включить файловые системы в / proc / filesystems?

и не показывать содержимое при размещении файла в каталоге.

Отсутствие вывода cat для файла не означает, что файл пуст, как показывает следующий эксперимент:

$ truncate -s 1M foo    
$ ll foo
-rw-r----- 1 user users 1048576 Nov 15 19:28 foo
$ file foo
foo: data
$ cat foo
$ 

cat действительно выводит NUL-символов на 1 МБ, но эти символы случаются быть невидимым в терминале.

Ваш вопрос о пустых файлах несколько неоднозначен. Подходит ли foo выше? Если «пустой» означает нулевую длину, тогда find может вам помочь:

find dir -type f -empty

перечисляет все файлы нулевой длины в dir . Если ваш find не поддерживает -empty , вы можете использовать вместо него -size 0 .

В сценариях оболочки вы можете использовать выражение -s file , которое истинно, если файл существует и не является пустым. Чтобы проверить, является ли файл пустым (при условии, что он существует), используйте что-то вроде

if [ \! -s file ] ; then ... ; fi

. В качестве альтернативы вы можете использовать stat (1) . Здесь с вариантом GNU:

$ stat --format=%s foo
1048576

, который вы можете использовать в дальнейшем для сравнений.

2
16.02.2017, 00:52
1 ответ

Как и драйверы оборудования, файловые системы доступны в виде модулей ядра. И так же, как драйверы оборудования, они могут автоматически загружаться по запросу. Когда вы пытались монтировать модуль, он загружался автоматически, поэтому вам не нужно было modprobe его вручную.

Если вы запустите lsmod , вы найдете там драйвер ext4. Если вы размонтируете файловую систему, вы можете rmmod модуль, lsmod снова, чтобы увидеть, что он исчез, затем смонтируйте и lsmod , и он вернется. И всякий раз, когда этот модуль загружается, он вносит свой вклад в содержимое / proc / filesystems .

4
27.01.2020, 21:59

Теги

Похожие вопросы