и не показывать содержимое при размещении файла в каталоге.
Отсутствие вывода 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
, который вы можете использовать в дальнейшем для сравнений.
Как и драйверы оборудования, файловые системы доступны в виде модулей ядра. И так же, как драйверы оборудования, они могут автоматически загружаться по запросу. Когда вы пытались монтировать модуль, он загружался автоматически, поэтому вам не нужно было modprobe
его вручную.
Если вы запустите lsmod
, вы найдете там драйвер ext4. Если вы размонтируете файловую систему, вы можете rmmod
модуль, lsmod
снова, чтобы увидеть, что он исчез, затем смонтируйте и lsmod
, и он вернется. И всякий раз, когда этот модуль загружается, он вносит свой вклад в содержимое / proc / filesystems
.