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.