В Linux всё является файлом!
Символьные файлы (Character Devices):
Символьные файлы представляют собой устройства, которые передают или принимают поток символов (байт) в последовательном порядке. Такие устройства, как терминалы, порты последовательной связи (COM-порты), звуковые карты, являются символьными устройствами.
Пример:
/dev/ttyS0
- символьное устройство для первого последовательного порта.
Блочные файлы (Block Devices):
Блочные файлы представляют собой устройства, которые передают или принимают блоки данных, обычно размером несколько килобайт или более. Жесткие диски, SSD, USB-накопители - это примеры блочных устройств.
Пример:
/dev/sda
- блочное устройство для первого жесткого диска.
Ссылки (Links):
Жёсткие (Hard Links):
Жёсткие ссылки представляют собой дополнительные имена (пути) для существующего файла. Удаляя одну ссылку, файл остается до тех пор, пока существует хотя бы одна ссылка на него.
Пример:
ln /path/to/originalfile /path/to/hardlink
Мягкие (Symbolic Links):
Мягкие ссылки (символические) представляют собой специальный файл, который содержит путь к другому файлу. Если цель удалена, мягкая ссылка становится битой.
Пример:
ln -s /path/to/targetfile /path/to/symlink
Сокет-файлы (Sockets):
Сокет-файлы предоставляют механизм для обмена данными между процессами через сеть или локально в рамках одной системы. Сокеты используются для межпроцессного взаимодействия (IPC).
Пример:
/var/run/docker.sock
- сокет Docker, используемый для взаимодействия с Docker демоном.
Именованные каналы (Named Pipes):
Именованные каналы (FIFO) представляют собой специальный тип файла, который используется для установления однонаправленного или двунаправленного канала связи между процессами.
Пример:
Создание именованного канала: mkfifo /path/to/myfifo
Дверь (Door):
Дверь (door) представляет собой механизм межпроцессного взаимодействия, предоставляющий более сложные возможности, чем именованные каналы. Однако, дверь не так широко используется, и её использование часто ограничено определенными сценариями.
Пример:
Двери редко используются в современных системах, их применение часто специфично для конкретных приложений или сценариев. Примеры довольно редки.
Команда file
в Linux используется для определения типа файла. Она позволяет узнать, к какой категории относится файл, например, текстовый файл, исполняемый файл, изображение и т.д.
Используя команду ls -l
(или ll
) также можно получить информацию о типе файла:
d
: Directory (Директория).-
: Regular File (Обычный файл).c
: Character Device (Символьное устройство).b
: Block Device (Блочное устройство).l
: Symbolic Link (Символическая ссылка).s
: Socket (Сокет).p
: Named Pipe (FIFO) (Именованный канал).D
: Door (Дверь).