детка, именно ИМЕНА ФАЙЛОВ хранятся в специальных файлах, которые называются "каталоги".
Если ты мне не веришь, попробуй создать пару каталогов, в одном из которых Over9000 имён в 10 байт, а в другом Over9000 имён в 100 байт. И сравни их вес. Увидишь сам, что первый примерно в 10 раз легче второго.
дай пожалуйста корректное определение слову "файл", "имя" и "имя файла"
файл -- хранилище информации.
имя файла -- символьная строка длинной 0..255 байт, оканчивающаяся символом \0, и не содержащая символов "/" и "\0". Обычно имя файла используется для доступа к какому-то конкретному файлу, как указатель на этот файл(чем собственно и является). У файла может быть любое число имён, в т.ч. и не быть вовсе. Имена фалов хранятся в специальных файлах, которые называются "каталоги".
1. файлы (в GNU/Linux) это очень общее понятие, здесь всё — файлы. Т.е. определение дать сложно, это как "время", или "пространство". Ну в общем, файл это сущность, в которой может хранится информация. Важно отличать файлы от сред передач. Например интернет это не файл. И сетевой интерфейс (e.g eth0) тоже не файл. Хотя например клавиатура — это файл. В некотором смысле конечно.
2. Каталог — специальный файл используемый для хранения имён файлов. В первом приближении каталог можно представить как таблицу из множества строк и двух столбцов. В первом столбце лежит имя файла, во втором его номер (inode. Это действительно номер, целое число без знака). Конечно в реализации, кроме самих строк есть и индекс, позволяющий быстро искать имена в каталоге. Также в каталогах может быть и другая информация.
Для GNU/Linux можно почитать man pages, например readdir(3)
DESCRIPTION
The readdir() function returns a pointer to a dirent structure representing the next directory
entry in the directory stream pointed to by dirp. It returns NULL on reaching the end of the
directory stream or if an error occurred.
On Linux, the dirent structure is defined as follows:
text
struct dirent {
ino_t d_ino; /* inode number */
off_t d_off; /* not an offset; see NOTES */
unsigned short d_reclen; /* length of this record */
unsigned char d_type; /* type of file; not supported
by all filesystem types */
char d_name[256]; /* filename */
};
The only fields in the dirent structure that are mandated by POSIX.1 are: d_name[], of unspec‐
ified size, with at most NAME_MAX characters preceding the terminating null byte ('\0'); and
(as an XSI extension) d_ino. The other fields are unstandardized, and not present on all sys‐
tems; see NOTES below for some further details.
как видите, предусмотрен также и тип файла. Хотя в примечании сказано, что не везде он поддерживается.