Skip to content

Лекція 17. Що таке файл

Рівень 4: Хранитель файлів

Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.

Що ми сьогодні розкриємо

Section titled “Що ми сьогодні розкриємо”
  • перестати сприймати файл лише як іконку
  • зрозуміти файл як дані плюс метадані та місце у файловій системі
  • дослідити типи файлів командою file

Зв’язок з попередніми лекціями

Section titled “Зв’язок з попередніми лекціями”

У цій лекції ми використаємо знання про байти з лекції 3 та про збереження даних із лекції 11, щоб зрозуміти, що таке файл.

Файл — контейнер байтів

Section titled “Файл — контейнер байтів”

Коли ти бачиш photo.jpg у файловому менеджері, інтерфейс показує красиву іконку. Але для системи файл — передусім послідовність байтів, яку можна прочитати за певними правилами.

До файлу також прив’язані метадані: ім’я, розмір, час зміни, права доступу та інша службова інформація. Тобто «файл» — це не лише його вміст.

Ім’я допомагає людині, вміст — програмі

Section titled “Ім’я допомагає людині, вміст — програмі”

Ім’я homework.txt зручне для нас, але програма не повинна довіряти лише назві. Вміст може не відповідати розширенню. Саме тому Linux має інструмент file, який намагається визначити тип за вмістом та сигнатурами.

Файл живе у файловій системі

Section titled “Файл живе у файловій системі”

Щоб знайти файл, система використовує шлях. Поки що достатньо пам’ятати: файл має місце у структурі папок. У лекції 19 ми побудуємо повну карту Linux-шляхів.

Текстовий файл може містити байти UTF‑8, які ми вже вчили. Картинка — байти формату PNG/JPEG. Python-файл — теж текстові байти, але ми тлумачимо їх як код.

Два файли можуть мати однаковий розмір, але зовсім різний зміст — наприклад текст і невелике зображення.

Команда file lecture-17.md зазвичай скаже, що це текстовий файл, а file image.png — що це PNG-зображення.

Linux-лабораторія: подивимося на файли без магії

Section titled “Linux-лабораторія: подивимося на файли без магії”

Створи навчальну папку й кілька безпечних файлів:

Terminal window
mkdir -p ~/marko-lab/files
cd ~/marko-lab/files
printf 'Hello, Marko!
' > hello.txt
printf 'print("hi")
' > program.py
file hello.txt
file program.py
ls -l

ls -l покаже метадані, а file спробує описати вміст.

Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.

  1. виконай лабораторію у ~/marko-lab/files
  2. додай файл number.txt із числом 1010 і перевір його через file
  3. порівняй розміри трьох файлів через ls -l
  4. поясни, чому Python-файл є одночасно текстовим файлом і програмним кодом
  5. назви щонайменше три метадані файлу, крім його вмісту
  • Що фізично зберігається всередині файлу?
  • Чи є ім’я файлу частиною його байтового вмісту?
  • Що робить команда file?
  • Які метадані може мати файл?
  • Чому іконка у файловому менеджері — лише представлення?
  • Файл — контейнер байтів, у якого є вміст, ім’я та метадані.
  • Метадані — дані про дані: ім’я, розмір, час зміни, права доступу.
  • Розширення — частина імені після крапки (.txt, .py); підказка, а не гарантія формату.
  • Шлях — маршрут до файлу в дереві папок.
  • Файлова система — структура, яка організовує файли та каталоги.
  • file — команда, що намагається визначити тип файлу за його вмістом.

Чек-лист перед наступною лекцією

Section titled “Чек-лист перед наступною лекцією”
  • Чи можеш ти пояснити, що таке метадані файлу?
  • Чи знаєш ти, що таке розширення файлів та команда file?
  • Чи розумієш ти, навіщо розрізняти типи файлів?

Що потрібно винести з лекції

Section titled “Що потрібно винести з лекції”
  • файл містить байти, але має також ім’я та метадані
  • розширення корисне, але не є гарантією реального формату
  • Linux дозволяє досліджувати файли інструментами file і ls

Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.