Gymterview
junior

Какие типы файлов существуют в Linux?

В Linux существует 7 типов файлов. Тип файла определяется командой ls -l по первому символу в строке прав доступа.

Символ Тип файла Описание
- Обычный файл (regular file) Текстовые файлы, бинарные файлы, изображения, архивы, JAR-файлы
d Каталог (directory) Специальный файл, содержащий список имён и ссылок на другие файлы
l Символическая ссылка (symbolic link) Указатель на другой файл или каталог (аналог ярлыка). Создаётся командой ln -s
b Блочное устройство (block device) Устройство с блочным доступом (жёсткие диски, SSD): /dev/sda, /dev/nvme0n1
c Символьное устройство (character device) Устройство с посимвольным доступом: /dev/tty, /dev/null, /dev/random
s Сокет (socket) Файл для межпроцессного взаимодействия (IPC). Например, /var/run/docker.sock
p Именованный канал (named pipe / FIFO) Файл для передачи данных между процессами в одном направлении. Создаётся командой mkfifo

Примеры просмотра

Примеры ls -l для каждого типа файла
# Обычный файл
$ ls -l /etc/hosts
-rw-r--r-- 1 root root 221 Apr  1 12:00 /etc/hosts

# Каталог
$ ls -ld /home
drwxr-xr-x 3 root root 4096 Apr  1 12:00 /home

# Символическая ссылка
$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 Apr  1 12:00 /usr/bin/java -> /etc/alternatives/java

# Блочное устройство
$ ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Apr  1 12:00 /dev/sda

# Символьное устройство
$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Apr  1 12:00 /dev/null

# Сокет
$ ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 Apr  1 12:00 /var/run/docker.sock

Для определения типа содержимого файла (MIME-тип) используется команда file:

Пример
$ file application.jar
application.jar: Java archive data (JAR)

$ file /bin/bash
/bin/bash: ELF 64-bit LSB pie executable, x86-64

На собеседовании: ключевое — знать, что в Linux «всё является файлом», включая устройства и сокеты. Частая ошибка — забыть про сокеты и каналы. Упомяните /var/run/docker.sock как практический пример сокета, который Java-разработчик встречает при работе с Docker.