core code helper

Файлова система Linux: структура, файли, PATH

Що лежить у /etc, /var, /usr; базові команди для файлів; три мітки часу; як правильно додати каталог у PATH.

0 імпортували Імпортувати собі

Структура каталогів

У Linux усе росте з одного кореня /. Головні каталоги, які треба знати напам'ять:

Каталог Що там Запам'ятати як
/home домашні каталоги користувачів «мій дім»
/root домашній каталог root дім адміна
/etc конфіги системи й сервісів «et cetera» — налаштування
/var змінні дані: логи (/var/log), бази, кеш variable
/usr програми й бібліотеки (/usr/bin, /usr/lib) user programs
/opt сторонні програми «одним пакетом» optional
/tmp тимчасові файли (чиститься при перезавантаженні) temporary
/dev пристрої: диски /dev/sda, /dev/null devices
/proc віртуальні файли з інфо про процеси та ядро processes
/mnt, /media точки монтування дисків і флешок mount
/boot ядро й завантажувач boot
/sys — це віртуальна файлова система sysfs, яка показує інформацію про ядро Linux, пристрої та драйвери. sysfs
Порада

Шукаєш конфіг — дивись у /etc. Шукаєш, чому щось впало — у /var/log.

Робота з файлами

touch — створити файл або оновити час

touch index.php
  • Створює порожній файл, якщо його не існує.
  • Якщо файл вже є — оновлює мітку часу, вміст не змінюється.
Параметр Що робить
-a оновити лише час доступу (atime)
-m оновити лише час зміни (mtime)
-c не створювати файл, якщо його немає
-r інший_файл скопіювати atime/mtime з іншого файлу
-t 202601011200 встановити свою мітку часу (ctime все одно стане «зараз»)

stat — подивитись мітки часу

stat index.php

У кожного файлу три мітки часу:

Мітка Коли змінюється
atime (access) файл прочитали
mtime (modify) змінили вміст
ctime (change) змінили метадані: права, власника, ім'я (і вміст теж)
Примітка

ctime неможливо виставити вручну — він завжди стає «зараз» при будь-якій зміні. Тому його використовують у розслідуваннях: «коли востаннє чіпали цей файл».

mkdir, cp, mv, rm

mkdir dir1                  # створити каталог
mkdir -p app/logs/2026      # створити весь шлях одразу

cp file.txt backup.txt      # копіювати файл
cp -r src/ src_backup/      # копіювати каталог
cp -a src/ dst/             # копіювати зі збереженням прав, власника, часу

mv ./from_file ./to_file    # перемістити або перейменувати
rm file.txt                 # видалити файл
rm -r folder/               # видалити каталог з вмістом
Обережно

rm -rf видаляє без кошика і без питань. Перед запуском перевір шлях через ls. Особливо небезпечно зі змінними: якщо $DIR порожня, rm -rf $DIR/ перетвориться на rm -rf /.

PATH — де shell шукає команди

Коли пишеш nginx, shell шукає файл nginx по черзі в каталогах зі змінної PATH:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

which nginx      # де саме знайдено команду

Додати каталог у PATH

Для кого Куди писати
лише поточна сесія export PATH="$PATH:/opt/myapp/bin" у терміналі
для себе назавжди рядок export ... у ~/.bashrc
для всіх користувачів окремий файл у /etc/profile.d/ ✅

Якщо треба додати каталог у PATH глобально, найкраще не змінювати /etc/profile напряму, а створити окремий файл у /etc/profile.d/. Наприклад, хочемо додати /opt/myapp/bin:

sudo nano /etc/profile.d/myapp.sh

Вміст файлу:

export PATH="$PATH:/opt/myapp/bin"

Зробити файл читабельним для всіх:

sudo chmod 644 /etc/profile.d/myapp.sh
Чому profile.d, а не /etc/profile

Свій файл легко знайти, змінити й видалити, а оновлення системи не перезапише твої зміни. Файли з /etc/profile.d/*.sh читаються при вході — перелогінься або виконай source /etc/profile.d/myapp.sh.

Перевір себе

Де шукати конфіг nginx і його логи?

Конфіг — /etc/nginx/, логи — /var/log/nginx/.

Змінили права файлу через chmod. Яка мітка часу оновилась?

ctime — змінились метадані. mtime лишився, бо вміст не змінювався.

Збережіть статтю собі

Увійдіть, щоб імпортувати її у власні нотатки, відмічати вивчене, ставити лайки й питати спільноту. Реєстрація безкоштовна: вхід через Google займає кілька секунд.

Увійти через Google Інші способи входу