В GNU/Linux, как и в других Unix-подобных системах, понимание типа файла не основывается на его расширении, как в Windows. Расширение, заключающееся в нескольких символах после точки, не играет роли.
Unix-подобные операционные системы не контролируют расширения файлов. Это означает, что связь между расширением файла и программой, которой будет обрабатываться файл, устанавливается обычно с помощью стороннего ПО. Приложения сами анализируют структуру файла, игнорируя его расширение.
Именно поэтому среди атрибутов файлов, сохраняемых в системах на базе ядра Linux, нет данных о типах информации в файлах. Там содержатся детали о более значительных различиях, поскольку в Unix-подобных системах все объекты представляются как файлы. Между объектами может быть значительное разнообразие. Поэтому тип файла в Linux обозначает скорее тип объекта, а не данных, как в Windows.
В системе GNU/Linux можно выделить следующие типы файлов: обычные файлы, каталоги, символьные ссылки, блочные устройства, символьные устройства, сокеты, каналы. Каждый из них обозначается уникальным символом, что будет полезно при изучении командной оболочки Bash.
Обычные файлы (-)
В эту категорию попадают файлы, которые сами по себе содержат полезные данные. Linux не различает, является файл текстовым, исполняемым или изображением; в любом случае это будет обычный (regular) файл, обозначаемый знаком минус "-". Остальные типы файлов считаются специальными (special).
Каталоги (d)
В Linux каталог является файлом, который хранит список имен вложенных файлов и других каталогов.
Каталог связывает имена файлов (понятные человеку обозначения) с индексными дескрипторами (именами-числами, используемыми операционной системой).
В Unix-подобных системах один файл может быть доступен под разными именами и/или в различных каталогах, но все они будут связаны с одним индексным дескриптором (что реализуется механизмом жестких ссылок).
Файлы должны быть включены в каталоги, ведь иначе они окажутся недоступны, так как система не будет содержать записи о них.
Символьные ссылки (l)
Символьная ссылка — это файл, содержащий путь к другому файлу по его имени, а не по индексному дескриптору.
При обращении к символьной ссылке осуществляется открытие файла, на который она указывает. Это аналог ярлыков в Windows.
Даже если исходный файл удален, символьная ссылка продолжит существовать, указывая на несуществующий файл.
Символьные ссылки не включают атрибуты файлов, на которые они указывают, они имеют собственные атрибуты.
Символьные (c) и блочные устройства (b)
Файлы устройств служат для взаимодействия с оборудованием компьютера, например, с дисками, принтерами и терминалами. При обращении к файлу устройства запрос передается ядром ОС к драйверу данного устройства.
Символьные устройства обрабатываются последовательно (символ за символом), например, терминал.
Блочные устройства позволяют считывать и записывать данные произвольно, блоками фиксированного размера. Примером служит жесткий диск.
Сокеты (s) и каналы (p)
Чтобы понять, что представляют собой каналы и сокеты, необходимо разобраться с механизмом работы процессов в ОС. Эти оба типа файлов предназначены для организации их взаимодействия; пользователи с ними редко имеют дело.
Основное различие заключается в том, что канал является однонаправленным — в нем один процесс передает данные другому, но не наоборот. Сокеты же позволяют обмениваться данными в обоих направлениях.
Канал представлен в файловой структуре только если имеет имя. Безымянные каналы существуют исключительно внутри ядра Linux.