Именованная область внешней памяти — это файл. Так его определяют в школьном курсе информатики: данные лежат на диске, флешке или SSD (внешняя, то есть долговременная память), и к ним обращаются по имени. В тестах вопрос встречается в разных формулировках: «Именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные» или «Логически связанная совокупность данных или программ, для размещения которой во внешней памяти выделяется именованная область» (варианты: файл, каталог, директория). Правильный ответ в обоих случаях — файл.
Содержание
- Четыре термина, которые путают
- Виды объектов: сводная таблица
- Проверяем на практике: файл, каталог, две ссылки
- Жесткая и символическая ссылка: в чем разница
- Специальные файлы устройств
- Имена объектов и их ограничения
- Атрибуты: что система знает об объекте
- Выводы
- Где применяется / связь с практикой
- FAQ
Определение учебное и упрощенное: оно описывает обычный файл с данными. Кроме него в файловой системе есть каталоги, ссылки и специальные файлы устройств, и у каждого объекта есть имя и атрибуты. Ниже — чем эти объекты отличаются и как увидеть разницу своими глазами. Примеры проверены в Ubuntu 24.04 (bash 5.2, GNU coreutils 9.4) 30 сентября 2026 года.
Четыре термина, которые путают
- Файл — данные плюс служебная запись о них (размер, права, время, где лежат блоки).
- Имя — строка в каталоге, которая указывает на файл. В Linux имя хранится не в самом файле, а в каталоге.
- Каталог (папка) — объект, который хранит список «имя -> объект». «Папка» — то же самое в графическом интерфейсе.
- Ссылка — еще одно имя того же файла (жесткая) или отдельный маленький объект с путем к другому объекту (символическая).
Отсюда граница школьного определения. В Linux у одного файла может быть несколько имен, а файл устройства вообще не занимает «область» на диске под данные. Для обычных документов, картинок и программ определение работает точно.
Виды объектов: сводная таблица
В Linux тип объекта виден первым символом в выводе ls -l.
| Объект | Символ в ls -l |
Что это | Пример |
|---|---|---|---|
| Обычный файл | - |
Данные: текст, картинка, программа | note.txt |
| Каталог | d |
Список имен и объектов, на которые они указывают | /home |
| Символическая ссылка | l |
Объект, внутри которого записан путь к другому объекту | soft.txt -> note.txt |
| Символьное устройство | c |
Вход в драйвер, обмен по байтам | /dev/null, /dev/tty |
| Блочное устройство | b |
Вход в драйвер, обмен блоками | диск, например /dev/sda |
| Именованный канал (FIFO) | p |
Труба между процессами | создается mkfifo |
| Сокет | s |
Точка обмена между процессами | сокеты служб в /run |
Жесткой ссылки в таблице нет намеренно: это не отдельный тип, а второе имя обычного файла. В Windows набор скромнее: файлы, каталоги и ссылки на NTFS, а устройства через проводник как файлы не показываются.
Проверяем на практике: файл, каталог, две ссылки
Команды ниже работают во временном каталоге, который создает mktemp, и не трогают ваши данные. Выполняйте блоки по порядку в одном окне терминала.
box=$(mktemp -d /tmp/fsobj.XXXXXX)
cd "$box"
printf 'privet\n' > note.txt
mkdir docs
ln note.txt hard.txt
ln -s note.txt soft.txt
mkfifo pipe
ls -li
В консоли появится список из пяти объектов (номера в первой колонке, владелец и время у вас будут свои):
total 12
680616 drwxr-xr-x 2 root root 4096 Sep 30 11:44 docs
680615 -rw-r--r-- 2 root root 7 Sep 30 11:44 hard.txt
680615 -rw-r--r-- 2 root root 7 Sep 30 11:44 note.txt
680646 prw-r--r-- 1 root root 0 Sep 30 11:44 pipe
680619 lrwxrwxrwx 1 root root 8 Sep 30 11:44 soft.txt -> note.txt
Что здесь видно:
- Первая колонка — номер индексного дескриптора (inode), то есть той самой служебной записи о файле. У
note.txtиhard.txtон одинаковый: это один файл с двумя именами. - Число после прав — счетчик жестких ссылок. У файла с двумя именами он равен 2.
- У
soft.txtсвой inode и размер 8 байт: внутри записан путьnote.txt, в нем ровно восемь символов. - У каталога
docsсчетчик 2: одно имя в родительском каталоге и запись.внутри самого каталога. Так считает ext4; в некоторых файловых системах (например, Btrfs) у каталога всегда 1.
Тот же результат словами выдает stat:
stat -c '%n: %F, inode %i, ссылок %h' note.txt hard.txt soft.txt docs pipe /dev/null
note.txt: regular file, inode 680615, ссылок 2
hard.txt: regular file, inode 680615, ссылок 2
soft.txt: symbolic link, inode 680619, ссылок 1
docs: directory, inode 680616, ссылок 2
pipe: fifo, inode 680646, ссылок 1
/dev/null: character special file, inode 5, ссылок 1
Жесткая и символическая ссылка: в чем разница
Разницу проще всего увидеть, удалив исходное имя.
rm note.txt
cat hard.txt
cat soft.txt
privet
cat: soft.txt: No such file or directory
Жесткая ссылка продолжает работать: rm удалил одно имя, счетчик упал с 2 до 1, данные остались. Символическая ссылка «повисла»: она хранит путь, а объекта по этому пути больше нет. Исправление — направить ее на существующее имя:
ln -sf hard.txt soft.txt
cat soft.txt
privet
| Свойство | Жесткая ссылка | Символическая ссылка |
|---|---|---|
| Что это | Еще одно имя того же файла | Отдельный объект с путем внутри |
| Свой inode | Нет, общий с файлом | Да |
| После удаления исходного имени | Данные доступны | Ссылка не работает |
| На другой раздел (файловую систему) | Нельзя | Можно |
| На каталог | В Linux обычно запрещено | Можно |
Запрет из последней строки легко проверить:
ln docs docs2
ln: docs: hard link not allowed for directory
Данные файла освобождаются, когда счетчик ссылок доходит до нуля и файл не открыт ни одним процессом. Поэтому удаленный, но все еще открытый журнал продолжает занимать место на диске.
В Windows на NTFS есть те же два вида ссылок (команда mklink в cmd, ключ /H для жесткой), плюс точки соединения для каталогов. Жесткую ссылку и точку соединения обычный пользователь создает без повышения прав, а для символической ссылки нужна командная строка от имени администратора или включенный режим разработчика (Windows 10 версии 1703 и новее, Windows 11). Ярлык .lnk к ссылкам файловой системы не относится: это обычный файл, который умеет читать проводник, а программа, открывающая его напрямую, увидит содержимое самого ярлыка.
Специальные файлы устройств
В Linux устройства представлены файлами в каталоге /dev, чтобы с ними работали те же операции чтения и записи.
ls -l /dev/null /dev/tty
crw-rw-rw- 1 root root 1, 3 Sep 30 11:44 /dev/null
crw-rw-rw- 1 root root 5, 0 Sep 30 11:44 /dev/tty
На месте размера стоят два числа — старший и младший номер устройства: по ним ядро находит драйвер. Данных на диске у такого файла нет. Символьные устройства (c) передают поток байтов: терминал, /dev/null. Блочные (b) читаются блоками с произвольным доступом — это диски и разделы.
Осторожность нужна именно с блочными устройствами: запись в файл диска идет мимо файловой системы и портит данные на нем. Обычному пользователю права на это не даны, и работать под root без необходимости не стоит.
Имена объектов и их ограничения
Правила имен зависят от операционной системы и файловой системы, универсального списка нет.
| Параметр | Linux (ext4) | Windows (NTFS) |
|---|---|---|
| Запрещено в имени | / и нулевой байт |
\ / : * ? " < >, вертикальная черта, символы с кодами 0-31 |
| Длина одного имени | 255 байт | 255 символов (кодовых единиц UTF-16) |
| Регистр букв | a.txt и A.txt — разные имена |
по умолчанию не различается, но сохраняется в имени |
| Зарезервированные имена | . и .. |
CON, PRN, AUX, NUL, COM1, LPT1 и подобные |
| Разделитель в пути | / |
\ |
Обратите внимание на единицы. В Linux лимит считается в байтах, а русская буква в UTF-8 занимает два байта, поэтому кириллическое имя короче 255 букв:
touch "$(printf 'я%.0s' $(seq 1 127))"; echo "127 букв: код $?"
touch "$(printf 'я%.0s' $(seq 1 128))" 2>/dev/null; echo "128 букв: код $?"
127 букв: код 0
128 букв: код 1
Во втором случае touch отказывает с ошибкой File name too long: 128 букв — это 256 байт.
Расширение (.txt, .jpg) — часть имени после последней точки, а не отдельное свойство. Windows по нему выбирает программу для открытия. В Linux расширение — соглашение для человека и приложений: исполняемость определяется правами, а не окончанием .exe.
Атрибуты: что система знает об объекте
Атрибуты — служебные сведения об объекте, которые хранятся отдельно от его данных. От расширения они не зависят, набор определяет файловая система.
- В Linux в inode записаны тип, размер, владелец и группа, права доступа, счетчик ссылок и отметки времени: последнего доступа, изменения данных и изменения самого inode. Имени там нет — оно в каталоге.
- В Windows у файла есть классические флаги «только чтение», «скрытый», «системный», «архивный», отметки времени, а на NTFS — еще и списки прав доступа.
Частая путаница: время ctime в Linux — это изменение атрибутов, а не создание файла. Время создания есть не во всех файловых системах и показывается не всеми утилитами.
После экспериментов уберите песочницу. Запись ${box:?} остановит команду, если переменная пуста:
cd / && rm -r -- "${box:?}"
Выводы
- Именованная область внешней памяти — это файл; определение точно для обычных файлов с данными.
- Объектов в файловой системе больше: каталоги, символические ссылки, а в Linux еще файлы устройств, каналы и сокеты.
- Имя и файл — разные вещи: в Linux имя живет в каталоге, и у одного файла имен может быть несколько.
- Жесткая ссылка — второе имя того же файла, символическая — отдельный объект с путем; после удаления исходного имени работает только первая.
- Ограничения имен и набор атрибутов зависят от системы: 255 байт в ext4 и 255 кодовых единиц UTF-16 в NTFS — не одно и то же.
Где применяется / связь с практикой
Типы объектов — ежедневная работа администратора. По первому символу в ls -l понимают, с чем имеют дело; символическими ссылками переключают версии программ и конфигураций; счетчик ссылок объясняет, почему место на диске не освободилось после удаления; файлы в /dev нужны при разметке дисков и монтировании.
Освойте тему на практике
Системно эти темы разбирают на курсе «Администратор Linux. Базовый уровень». Познакомиться с форматом занятий можно на открытых уроках Otus.
Смежные темы: файловые системы, файлы и пути к ним.
FAQ
Чем каталог отличается от файла, если «в Linux все есть файл»?
Каталог тоже объект с inode, но его содержимое — список имен, и менять его напрямую записью байтов нельзя: только через создание, переименование и удаление объектов внутри.
Можно ли сделать жесткую ссылку на файл с другого диска?
Нет. Жесткая ссылка указывает на inode, а нумерация inode у каждой файловой системы своя. Между разделами используют символическую ссылку.
Что будет, если скопировать символическую ссылку на флешку?
Зависит от программы и файловой системы флешки: FAT32 и exFAT символических ссылок не хранят, поэтому копируется либо содержимое целевого файла, либо выдается ошибка.



