Введение

Давайте не будем вдаваться в элементарные подробности терминологии - что такое файловая система и тому подобное. Скажу лишь, что статья подготовлена для новичков и специалистов, желающих обновить свои знания. Я постарался написать коротко и по сути. Всего частей будет 11.

  1. ? Файлы, навигация и поиск

  2. ? Пользователи и группы

  3. ? Права доступа

  4. ⚙️ Процессы и система

  5. ? Сеть

  6. ? Логи и мониторинг

  7. ?️ Hardening и безопасность

  8. ? Пакеты и обновления

  9. ? Скриптинг и автоматизация

  10. ? Криптография и сертификаты

  11. ? Контейнеры (Linux-уровень)


Структура файловой системы

/
├── etc        # конфигурации системы и приложений
├── var        # переменные данные: логи, кэш, очереди
├── proc       # состояние ядра и процессов
├── sys        # устройства и драйверы
├── tmp        # временные файлы
├── home       # домашние директории пользователей
├── root       # домашняя директория суперпользователя
├── dev        # файлы устройств
├── usr        # программы и библиотеки
├── bin        # базовые утилиты (symlink на /usr/bin)
├── sbin       # команды администрирования (symlink на /usr/sbin)
├── opt        # сторонний софт
├── run        # runtime-данные процессов
├── mnt        # точки ручного монтирования
└── boot       # файлы загрузчика и ядро

Корневой каталог / - вершина всей иерархии. Всё остальное монтируется внутрь него. Рассмотрим ключевые каталоги подробнее.

/etc

От et cetera или Editable Text Configuration - здесь хранятся конфигурационные файлы всей системы. Настройки служб, сетевых параметров, пользователей - всё сюда. Важные файлы: /etc/passwd (пользователи), /etc/fstab (монтирование файловых систем), /etc/hosts (локальный DNS), /etc/ssh/sshd_config (настройки SSH-сервера).

/var

От variable - данные, которые постоянно меняются в процессе работы: логи (/var/log), почтовые очереди (/var/mail), спулеры (/var/spool), данные веб-серверов (/var/www). Именно сюда смотреть в первую очередь при диагностике проблем.

/proc

Виртуальная файловая система - файлы здесь не хранятся на диске, а генерируются ядром в реальном времени. Предоставляет информацию о запущенных процессах и состоянии ядра. Примеры: /proc/cpuinfo - информация о процессоре, /proc/meminfo - память, /proc/1/ - данные процесса с PID 1.

/sys

Ещё одна виртуальная ФС - интерфейс к устройствам и драйверам ядра. Позволяет читать и изменять параметры ядра и оборудования на лету. Широко используется при работе с сетевыми интерфейсами, дисками и другим железом.

/tmp

Временные файлы. Любой пользователь может создавать файлы здесь. Содержимое обычно очищается при перезагрузке или по таймеру (через systemd-tmpfiles). Не храните здесь ничего важного.

/home

Домашние каталоги обычных пользователей. Каждый пользователь получает свой подкаталог - /home/username. Здесь хранятся личные файлы, конфиги программ (скрытые папки вида .config, .ssh), документы.

/root

Домашний каталог суперпользователя. Намеренно вынесен отдельно от /home - для безопасности и доступности даже при проблемах с монтированием /home.

/dev

Файлы устройств - интерфейсы к аппаратному обеспечению. /dev/sda - первый жёсткий диск, /dev/sda1 - его первый раздел, /dev/null - «чёрная дыра» для ненужного вывода, /dev/zero - источник нулевых байт, /dev/random и /dev/urandom - генераторы случайных данных.


Навигация по файловой системе

ls - просмотр содержимого каталога

ls (от list) выводит список файлов и подкаталогов. Без аргументов показывает текущий каталог.

ls                    # Содержимое текущего каталога
ls /etc               # Содержимое /etc
ls -l                 # Подробный список: права, владелец, размер, дата
ls -a                 # Все файлы, включая скрытые (начинающиеся с точки)
ls -lh                # Подробный список с читаемым размером (KB, MB, GB)
ls -lt                # Сортировка по времени изменения (новые сверху)
ls -lS                # Сортировка по размеру (большие сверху)
ls -R                 # Рекурсивный вывод всех вложенных каталогов
ls -ld /etc           # Информация о самом каталоге, а не его содержимом

Флаги можно комбинировать. ls -lah - пожалуй, самая частая комбинация в работе: подробный список, скрытые файлы, читаемые размеры.

cd - смена текущего каталога

cd (от change directory) - основа навигации.

cd /etc               # Перейти в /etc (абсолютный путь)
cd logs               # Перейти в подкаталог logs (относительный путь)
cd ..                 # На уровень вверх
cd ../..              # На два уровня вверх
cd ~                  # В домашний каталог текущего пользователя
cd                    # То же самое, что cd ~
cd -                  # В предыдущий каталог (удобно для переключения между двумя)
cd /var/log           # Абсолютный путь от корня

cd - - очень удобная команда когда нужно быстро переключаться между двумя каталогами.

pwd - текущий рабочий каталог

pwd (от print working directory) выводит абсолютный путь к тому месту, где вы сейчас находитесь.

pwd
# Вывод: /home/username/projects
pwd -P    # Показать реальный путь без symlink'ов
pwd -L    # Показать логический путь (по умолчанию)

find - поиск файлов и каталогов

find - мощный инструмент для поиска по имени, типу, размеру, правам, времени изменения и многому другому. Ищет рекурсивно в указанной директории.

# Поиск по имени
find . -name "*.log"              # Все .log файлы в текущем каталоге
find /etc -name "hosts"           # Файл hosts в /etc
find / -name "*.conf" 2>/dev/null # Все .conf файлы на всей системе, без ошибок

# Поиск по типу
find /var -type f                 # Только файлы (не каталоги)
find /etc -type d                 # Только каталоги
find /dev -type l                 # Только символические ссылки

# Поиск по размеру
find / -size +100M                # Файлы больше 100 MB
find /tmp -size -1k               # Файлы меньше 1 KB

# Поиск по времени
find /var/log -mtime -1           # Изменялись за последние 24 часа
find /tmp -atime +7               # Не открывались более 7 дней

# Поиск по правам и владельцу
find / -perm 777                  # Файлы с правами 777
find /home -user username         # Файлы конкретного пользователя

# Поиск + действие
find /tmp -name "*.tmp" -delete          # Найти и удалить
find /var/log -name "*.log" -exec ls -lh {} \;  # Найти и выполнить команду

locate - быстрый поиск по базе данных

locate ищет не на диске в реальном времени, а по заранее собранной базе данных - поэтому работает значительно быстрее find. Минус: база не знает о файлах, созданных после последнего обновления.

locate passwd                  # Найти все пути, содержащие "passwd"
locate -i readme               # Поиск без учёта регистра
locate -c "*.conf"             # Подсчитать количество совпадений
locate -l 10 "*.log"           # Вывести максимум 10 результатов

sudo updatedb                  # Обновить базу данных вручную

В Ubuntu/Debian locate устанавливается отдельно. Начиная с Ubuntu 22.04 рекомендуется plocate вместо устаревшего mlocate — он быстрее за счёт более эффективного формата индекса: sudo apt install plocate. Команда locate при этом остаётся той же. База обновляется автоматически через cron/systemd-timer, обычно раз в сутки.

tree - дерево каталогов

tree визуализирует структуру каталогов в виде дерева - удобно для быстрого обзора проекта или системной директории.

tree                      # Дерево текущего каталога
tree /etc                 # Дерево /etc
tree -L 2                 # Ограничить глубину 2 уровнями
tree -L 3 /var            # /var на 3 уровня вглубь
tree -a                   # Включая скрытые файлы
tree -d                   # Только каталоги, без файлов
tree -f                   # Показывать полные пути
tree -h                   # Показывать размер файлов
tree -I "node_modules"    # Исключить каталог из вывода

Установка: sudo apt install tree


Работа с файлами и каталогами

cp - копирование

cp (от copy) копирует файлы и каталоги.

cp file.txt copy.txt              # Копировать файл
cp file.txt /tmp/                 # Скопировать в другой каталог
cp file1.txt file2.txt /tmp/      # Скопировать несколько файлов
cp -r dir1 dir2                   # Копировать каталог рекурсивно
cp -r dir1/ /backup/              # Копировать содержимое dir1 в /backup
cp -p file.txt copy.txt           # Сохранить права, владельца и временные метки
cp -u source.txt dest.txt         # Копировать только если source новее dest
cp -v file.txt /tmp/              # Подробный вывод (verbose)
cp -i file.txt existing.txt       # Спросить перед перезаписью

mv - перемещение и переименование

mv (от move) - и перемещение, и переименование делается одной командой.

mv old.txt new.txt                # Переименовать файл
mv file.txt /tmp/                 # Переместить файл в /tmp
mv file.txt /tmp/newname.txt      # Переместить и переименовать одновременно
mv dir1 dir2                      # Переименовать каталог
mv *.log /var/archive/            # Переместить все .log файлы
mv -i file.txt existing.txt       # Спросить перед перезаписью
mv -u source.txt dest.txt         # Переместить только если source новее
mv -v file.txt /tmp/              # Verbose-режим

rm - удаление

rm (от remove) удаляет файлы и каталоги.

Удалённые через rm файлы не попадают в корзину. Восстановление возможно, но сложно и не гарантировано. rm -rf - особо опасная команда, требует максимального внимания.

rm file.txt                   # Удалить файл
rm file1.txt file2.txt        # Удалить несколько файлов
rm *.tmp                      # Удалить все .tmp файлы
rm -i file.txt                # Запросить подтверждение
rm -r directory/              # Удалить каталог рекурсивно
rm -rf directory/             # Принудительное рекурсивное удаление без запроса
rm -v file.txt                # Verbose-режим - показывать что удаляется

mkdir - создание каталогов

mkdir (от make directory) создаёт новые каталоги.

mkdir new_dir                        # Создать каталог
mkdir dir1 dir2 dir3                 # Создать несколько каталогов
mkdir -p parent/child/grandchild     # Создать всю цепочку, если не существует
mkdir -m 755 secure_dir              # Создать с указанными правами
mkdir -v new_dir                     # Verbose-режим

mkdir -p незаменим в скриптах: без него команда упадёт с ошибкой при повторном запуске, если каталог уже существует. Флаг решает обе задачи сразу — «если каталог уже есть, всё в порядке; иначе создай его и все промежуточные».

touch - создание файлов и обновление временных меток

touch создаёт пустой файл, если он не существует, или обновляет временные метки у существующего.

touch file.txt                    # Создать пустой файл
touch file1.txt file2.txt         # Создать несколько файлов
touch -m file.txt                 # Обновить только время модификации
touch -a file.txt                 # Обновить только время доступа
touch -t 202501011200 file.txt    # Установить конкретное время (YYYYMMDDhhmm)

ln - создание ссылок

ln (от link) создаёт жёсткие или символические ссылки.

Жёсткая ссылка (hard link) указывает на тот же inode, что и оригинал. Удаление исходного файла не уничтожает данные - они доступны через ссылку. Не работает между разными файловыми системами и не может ссылаться на каталоги.

Символическая ссылка (symlink) - указатель на путь к файлу или каталогу. Аналог ярлыка в Windows. Работает между ФС и с каталогами. При удалении оригинала ссылка становится битой.

ln file.txt hardlink.txt              # Жёсткая ссылка
ln -s file.txt symlink.txt            # Символическая ссылка на файл
ln -s /etc/nginx/nginx.conf ~/nginx.conf  # Symlink с абсолютным путём
ln -s /var/www /srv/web               # Символическая ссылка на каталог
ln -sf new_target.txt existing_link.txt   # Перезаписать существующий symlink

ls -la symlink.txt                    # Видно что это ссылка и куда ведёт

stat - подробная информация о файле

stat выводит полную информацию о файле: размер, тип, inode, права доступа, владелец, три временные метки.

stat file.txt
# Вывод:
#   File: file.txt
#   Size: 1024       Blocks: 8    IO Block: 4096  regular file
#   Device: 8,1      Inode: 131074    Links: 1
#   Access: (0644/-rw-r--r--)  Uid: (1000/username)   Gid: (1000/username)
#   Access: 2026-02-25 10:00:00
#   Modify: 2026-02-24 15:30:00
#   Change: 2026-02-24 15:30:00

stat /etc                        # Информация о каталоге
stat -f file.txt                 # Информация о файловой системе, на которой лежит файл
stat --format="%n %s %U"        # Форматированный вывод: имя, размер, владелец

Три временные метки:

  • Access - последнее чтение файла

  • Modify - последнее изменение содержимого

  • Change - последнее изменение метаданных (права, владелец)

file - определение типа файла

file анализирует содержимое файла и определяет его тип - независимо от расширения.

file document.pdf          # Выведет: PDF document, version 1.6
file /bin/bash             # Выведет: ELF 64-bit LSB executable...
file archive.tar.gz        # Выведет: gzip compressed data...
file image.png             # Выведет: PNG image data, 1920 x 1080...
file script.sh             # Выведет: Bourne-Again shell script...
file unknown_file          # Полезно когда расширение неизвестно или отсутствует

file *                     # Определить тип всех файлов в текущем каталоге
file -i document.pdf       # MIME-тип вместо текстового описания

Просмотр содержимого файлов

cat - вывод содержимого файла

cat (от concatenate) выводит содержимое одного или нескольких файлов. Лучше всего подходит для коротких файлов.

cat file.txt                      # Вывести содержимое файла
cat file1.txt file2.txt           # Объединить и вывести два файла
cat -n file.txt                   # С номерами строк
cat -A file.txt                   # Показать спецсимволы ($ в конце строк, ^I для табуляции)
cat -s file.txt                   # Сжать несколько пустых строк в одну
cat /dev/null > file.txt          # Очистить файл (обнулить)
cat > newfile.txt                 # Создать файл и писать в него вручную (Ctrl+D для завершения)

less - постраничный просмотр

less - интерактивный просмотрщик для больших файлов. Не загружает весь файл в память, поэтому отлично работает с гигантскими логами.

less /var/log/syslog
less +F /var/log/syslog          # Открыть в режиме отслеживания (как tail -f)
less -N file.txt                 # С номерами строк
less -S file.txt                 # Без переноса длинных строк

Управление внутри less:

Клавиша

Действие

Space / f

Следующая страница

b

Предыдущая страница

g

Начало файла

G

Конец файла

/текст

Поиск вперёд

?текст

Поиск назад

n

Следующее совпадение

N

Предыдущее совпадение

q

Выход

more - упрощённый постраничный просмотр

more - предшественник less, умеет только прокручивать вперёд. Использовать less предпочтительнее, но more гарантированно есть на любой POSIX-совместимой системе.

more /etc/passwd
more -5 file.txt         # Показывать по 5 строк

head - первые строки файла

head по умолчанию выводит первые 10 строк файла.

head file.txt                # Первые 10 строк
head -n 20 file.txt          # Первые 20 строк
head -n -5 file.txt          # Все строки, кроме последних 5
head -c 100 file.txt         # Первые 100 байт
head -q file1.txt file2.txt  # Несколько файлов без заголовков

tail - последние строки файла

tail по умолчанию выводит последние 10 строк.

tail file.txt                # Последние 10 строк
tail -n 20 file.txt          # Последние 20 строк
tail -n +5 file.txt          # Все строки, начиная с 5-й
tail -c 200 file.txt         # Последние 200 байт

tail -f - отслеживание файла в реальном времени

Флаг -f (от follow) держит файл открытым и выводит новые строки по мере их появления. Незаменим для мониторинга логов.

tail -f /var/log/syslog                  # Следить за системным логом
tail -f /var/log/nginx/access.log        # Следить за логом nginx
tail -fn 50 /var/log/auth.log            # Последние 50 строк + слежение
tail -f file1.log file2.log              # Следить за несколькими файлами

Ctrl+C для выхода из режима слежения. Если хотите следить за файлом даже после его ротации (пересоздания) - используйте tail -F (заглавная F).


Поиск внутри файлов

grep - поиск текста по шаблону

grep (от global regular expression print) ищет строки по шаблону в файлах или потоке данных. Одна из самых используемых команд в Linux.

grep "error" /var/log/syslog             # Строки содержащие "error"
grep -i "warning" file.txt               # Без учёта регистра
grep -n "root" /etc/passwd               # С номерами строк
grep -c "error" /var/log/syslog          # Подсчитать количество совпадений
grep -v "debug" app.log                  # Инвертировать: строки БЕЗ "debug"
grep -l "TODO" *.py                      # Только имена файлов с совпадениями
grep -w "root" /etc/passwd               # Только целые слова (не "rootdir")
grep -A 3 "error" file.log               # 3 строки после совпадения (After)
grep -B 2 "error" file.log               # 2 строки до совпадения (Before)
grep -C 2 "error" file.log               # По 2 строки до и после (Context)

grep -r - рекурсивный поиск

grep -r "function_name" .               # Во всех файлах текущего каталога
grep -r "TODO" /home/user/project       # В конкретном проекте
grep -rl "api_key" .                    # Только имена файлов рекурсивно
grep -r --include="*.py" "import" .    # Только в .py файлах
grep -r --exclude="*.log" "error" .    # Исключить .log файлы
grep -r --exclude-dir=".git" "fix" .   # Исключить каталог

grep -E - расширенные регулярные выражения

-E (или egrep) включает поддержку расширенного синтаксиса регулярных выражений.

grep -E "(error|fail|critical)" /var/log/syslog   # ИЛИ
grep -E "^root" /etc/passwd                        # Строки, начинающиеся с "root"
grep -E "bash$" /etc/passwd                        # Строки, заканчивающиеся на "bash"
grep -E "[0-9]{1,3}\.[0-9]{1,3}" file.txt         # IP-адреса (упрощённо)
grep -E "^$" file.txt                              # Пустые строки
grep -E "https?://" file.txt                       # http или https ссылки

awk - обработка и извлечение полей

awk - язык для построчной обработки текста. Особенно силён при работе с табличными данными, логами и файлами с разделителями.

Базовая модель: awk 'условие { действие }' файл. По умолчанию разделитель - пробел/tab, поля: $1, $2, ..., $NF (последнее поле), $0 - вся строка.

# /etc/passwd: user:x:uid:gid:info:home:shell
awk -F: '{print $1}' /etc/passwd                     # Имена всех пользователей
awk -F: '{print $1, $3}' /etc/passwd                 # Имя и UID
awk -F: '$3 >= 1000 {print $1}' /etc/passwd          # Только обычные пользователи (UID ≥ 1000)
awk -F: '{print $1": "$7}' /etc/passwd               # Форматированный вывод

# Работа с пробельным разделителем
awk '{print $1}' access.log                          # Первое поле (напр. IP в логе nginx)
awk 'NR==5' file.txt                                 # Вывести только 5-ю строку
awk 'NR>=5 && NR<=10' file.txt                       # Строки с 5 по 10

# Встроенные переменные
awk '{print NR": "$0}' file.txt                      # Добавить номера строк
awk 'END{print NR}' file.txt                         # Подсчитать количество строк
awk '{sum += $1} END {print "Сумма:", sum}' numbers.txt  # Сложить числа из первого столбца

# BEGIN и END блоки
awk 'BEGIN{print "=== Пользователи ==="} -F: {print $1} END{print "=== Конец ==="}' /etc/passwd

sed - потоковый редактор

sed (от stream editor) обрабатывает текст построчно - заменяет, удаляет, вставляет, фильтрует. По умолчанию не изменяет исходный файл, а выводит результат в stdout.

# Замена
sed 's/old/new/' file.txt              # Заменить первое вхождение в каждой строке
sed 's/old/new/g' file.txt             # Заменить все вхождения (global)
sed 's/old/new/gi' file.txt            # Без учёта регистра
sed 's/root/admin/g' /etc/passwd       # Пример с реальным файлом

# Редактирование файла "на месте"
sed -i 's/old/new/g' file.txt          # Изменить файл (осторожно!)
sed -i.bak 's/old/new/g' file.txt      # Изменить файл, сохранив backup .bak

# Удаление строк
sed '/^#/d' config.txt                 # Удалить все комментарии (строки с #)
sed '/^$/d' file.txt                   # Удалить пустые строки
sed '5d' file.txt                      # Удалить 5-ю строку
sed '2,4d' file.txt                    # Удалить строки 2-4

# Вывод конкретных строк
sed -n '5p' file.txt                   # Вывести только 5-ю строку
sed -n '5,10p' file.txt                # Строки 5-10
sed -n '/error/p' file.txt             # Строки содержащие "error"

# Добавление строк
sed '3a\Новая строка после 3-й' file.txt    # Добавить после строки 3
sed '1i\Заголовок' file.txt                 # Добавить перед строкой 1

В следующей части - пользователи и группы: создание, управление, /etc/passwd, /etc/shadow, sudo и всё что с этим связано. а пока держите Linux Cheatsheet — Файловая система

Навигация

Команда

Описание

pwd

Показать текущий каталог

cd /path

Перейти в каталог

cd ..

На уровень вверх

cd ~

В домашний каталог

cd -

В предыдущий каталог

ls

Содержимое текущего каталога

ls -l

Подробный список (права, владелец, размер)

ls -a

Включая скрытые файлы

ls -lah

Подробно + скрытые + читаемый размер

ls -lt

Сортировка по времени изменения

ls -lS

Сортировка по размеру

ls -R

Рекурсивный вывод

tree

Дерево каталогов

tree -L 2

Дерево на 2 уровня вглубь

tree -d

Только каталоги

tree -a

Включая скрытые

Поиск файлов

Команда

Описание

find . -name "*.log"

Поиск по имени

find /etc -type f

Только файлы

find /etc -type d

Только каталоги

find /etc -type l

Только символические ссылки

find / -size +100M

Файлы больше 100 MB

find /tmp -mtime +7

Не изменялись более 7 дней

find / -mmin -60

Изменялись за последний час

find / -perm 777

Файлы с правами 777

find /home -user username

Файлы конкретного пользователя

find /tmp -name "*.tmp" -delete

Найти и удалить

locate filename

Быстрый поиск по базе данных

locate -i filename

Поиск без учёта регистра

sudo updatedb

Обновить базу данных locate

Работа с файлами и каталогами

Команда

Описание

touch file.txt

Создать пустой файл

mkdir dir

Создать каталог

mkdir -p a/b/c

Создать вложенные каталоги

cp file.txt copy.txt

Копировать файл

cp -r dir1 dir2

Копировать каталог рекурсивно

cp -p file.txt copy.txt

Копировать с сохранением метаданных

mv old.txt new.txt

Переименовать файл

mv file.txt /tmp/

Переместить файл

rm file.txt

Удалить файл

rm -r dir/

Удалить каталог рекурсивно

rm -rf dir/

Принудительное удаление без подтверждения

ln file.txt hardlink.txt

Создать жёсткую ссылку

ln -s file.txt symlink.txt

Создать символическую ссылку

stat file.txt

Подробная информация о файле

file file.txt

Определить тип файла

Просмотр содержимого

Команда

Описание

cat file.txt

Вывести содержимое файла

cat -n file.txt

С номерами строк

less file.txt

Постраничный просмотр (интерактивный)

less -N file.txt

С номерами строк

more file.txt

Постраничный просмотр (упрощённый)

head file.txt

Первые 10 строк

head -n 20 file.txt

Первые 20 строк

tail file.txt

Последние 10 строк

tail -n 20 file.txt

Последние 20 строк

tail -f file.txt

Слежение за файлом в реальном времени

tail -F file.txt

Слежение с учётом ротации файла

Поиск внутри файлов

Команда

Описание

grep "text" file.txt

Поиск строк по шаблону

grep -i "text" file.txt

Без учёта регистра

grep -n "text" file.txt

С номерами строк

grep -c "text" file.txt

Подсчитать совпадения

grep -v "text" file.txt

Инвертировать (строки БЕЗ шаблона)

grep -l "text" *.txt

Только имена файлов с совпадениями

grep -w "word" file.txt

Только целые слова

grep -A 3 "text" file.txt

3 строки после совпадения

grep -B 2 "text" file.txt

2 строки до совпадения

grep -C 2 "text" file.txt

По 2 строки до и после

grep -r "text" .

Рекурсивный поиск

grep -rl "text" .

Рекурсивно, только имена файлов

grep -E "(err|warn)" file

Расширенные регулярные выражения

grep -E "^root" file

Строки начинающиеся с "root"

grep -E "bash$" file

Строки заканчивающиеся на "bash"

awk '{print $1}' file

Вывести первый столбец

awk -F: '{print $1}' file

Разделитель двоеточие

awk 'NR==5' file

Вывести только 5-ю строку

awk 'END{print NR}' file

Подсчитать строки

sed 's/old/new/g' file

Заменить все вхождения

sed -i 's/old/new/g' file

Заменить в самом файле

sed -i.bak 's/old/new/g' file

Заменить с созданием backup

sed '/^$/d' file

Удалить пустые строки

sed '/^#/d' file

Удалить строки с комментариями

sed -n '5,10p' file

Вывести строки 5-10

Базовые команды терминала

Команда

Описание

clear

Очистить терминал

history

История команд

history | grep "cmd"

Поиск по истории

!!

Повторить последнюю команду

!5

Выполнить команду №5 из истории

Ctrl + C

Прервать текущую команду

Ctrl + Z

Приостановить процесс

Ctrl + L

Очистить терминал (как clear)

Ctrl + R

Поиск по истории команд

Ctrl + A

Перейти в начало строки

Ctrl + E

Перейти в конец строки

Ctrl + U

Удалить строку до курсора

Tab

Автодополнение

man command

Документация по команде

command --help

Краткая справка

which command

Путь к исполняемому файлу

echo "text"

Вывести текст

exit

Выйти из терминала / сессии

Статья доступна на Хабе opensophy: https://hub.opensophy.com/docs/linux-filesystem/
Статьи, блоги и документации в первую очередь выходят и обновляются на Хабе с указанием автора и соавторов.

Комментарии (25)


  1. economist75
    25.02.2026 15:29

    Классика вечна, знать надо. Но удобнее:

    sudo apt install far2l

    Сейчас это ещё и полноценный терминал, буфер обмена, и почти что ни возьми в нем - мощнее, даже файловая возня: поиск файлов + врем панели + сортировка + пометка по маске = любая задача с файлами. Тут вам и цвет, и поддержка всех кодировок, и нормальный редактор. А если вспомнить NetRock и работу с архивами - то и подавно.


    1. AlexanderS
      25.02.2026 15:29

      Это не классика, а база. Классика - это mc )


      1. id_Alex
        25.02.2026 15:29

        vi жеж классика ))!


        1. AlexanderS
          25.02.2026 15:29

          Для новичка это вообще ловушка, выходить из которой придётся путём жёсткой перезагрузки или хардовым отключением питания компа. Зато после этого можно узнать про nano)


          1. id_Alex
            25.02.2026 15:29

            Я согласен что mc и nano удобнее в юзабилити, но по дефолту их во многих сборках нет, а vi есть в каждой наверное...и да vi появился в конце 70х годов прошлого века, а mc и nano в 90х.


            1. economist75
              25.02.2026 15:29

              Немного реализма без пруфов: у 90% пользователей терминалов и консолей (админы и девопсы тоже тут) - основная рабочая ось - Windows. А значит не mc, не vi и тем более не нано. А поставят они себе что угодно. Хотелось бы посмотреть на живого, кто использовал touch по собственной воле.


              1. YuSV
                25.02.2026 15:29

                Я). Как-то зашла сразу как узнал про нее в мире Linux... Хотя я еще застал Unix в ЦОД)) И шлюзы на DOS.


    1. DGG
      25.02.2026 15:29

      Если чисто текстовые конфиги немного поправить, можно ещё:

      sudo snap install msedit


      1. werter_l
        25.02.2026 15:29

        mcedit

        Зы. Snap тянуть ради одного пакета - такое себе.


        1. DGG
          25.02.2026 15:29

          Не, я именно про реинкарнацию edit.com от microsoft

          Но его и без Snap поставить можно - просто скопировав исполняемый файл (майки в своём духе).

          Впрочем местами оно и нормальным образом в репозитории уже попало.


        1. Tony-Sol
          25.02.2026 15:29

          ИМХО, вообще лучше snap не пользоваться когда есть flatpak


  1. maisvendoo
    25.02.2026 15:29

    /tmp чистится автоматически после перезагрузки ровно потому, что в большинстве дистрибутивов монтируется в озу, по-умолчанию. Это полезно знать


    1. max9
      25.02.2026 15:29

      не совсем так. в системд есть юнит чистящий по таймеру. неприятная вещь на самом деле


  1. Overphase
    25.02.2026 15:29

    Стоит уточнить про mkdir -p

    Это не только создание вложенных каталогов.

    Без этого флага mkdir вернет ошибку, если требуемый каталог уже существует или не существует промежуточных каталогов. Аmkdir -pполезен не только для создания вложенных каталогов, но и просто для создания каталога с игнорированием ошибки существующего каталога.

    «Если каталог уже есть, всё в порядке, иначе создай его и все промежуточные»


    1. opensophy Автор
      25.02.2026 15:29

      Добавил информацию! Благодарю за уточнение.


  1. ilya-grigoriev
    25.02.2026 15:29

    Вместо locate лучше использовать plocate, т.к. он более быстрый.


    1. opensophy Автор
      25.02.2026 15:29

      Добавил информацию про это! Спасибо за уточнение.


  1. domix32
    25.02.2026 15:29

    То есть ни про шифрование, ни про разницу ext32 vs btrs vs xfs vs ramfs вы решили не рассказывать. Про виды разделов тоже. Статья имеет такое же отношение к файловым системам как "Война и мир" к книгопечатанию.

    но more гарантированно есть на любой Unix-системе.

    отдельно стоит заметить вот это. Linux это не Unix, но оба следуют стандарту POSIX. Для чего эта ремарка про Unix?


    1. opensophy Автор
      25.02.2026 15:29

      Спасибо за замечание. Про ext4/btrfs/xfs, шифрование и виды разделов – это сознательно за рамками данной серии, она ориентирована на работу в терминале, а не на глубокое погружение в устройство файловых систем(Вообщем это уже исправили поскольку замечание такое же было. Название у статьи сделали точнее). Если тема вызовет интерес — рассмотрю в отдельном материале. По поводу more и Unix — Поправлю. Спасибо большое что делаете статью лучше!


  1. fortidet
    25.02.2026 15:29

    Зашёл почитать про файловые системы Linux, почему нельзя (и как можно) сделать undelete, а тут совсем не то. Заголовок бы поменять на "Утилиты для работы с файлами, filetools" или что-то в этом роде.


    1. opensophy Автор
      25.02.2026 15:29

      Спасибо за замечание. Статья будет переименована в «Учим Linux: Файлы, навигация и поиск».


  1. harriedgemusic
    25.02.2026 15:29

    Для редактирования конфигов с низким порогом вхождения может подойти micro.

    Ctrl+C, Ctrl+V, X и прочие стандартные привычные буквы.

    Плюс подсветка кода и все такое.


  1. altman
    25.02.2026 15:29

    Надо же, про Editable Text Configuration слышу впервые, все время удивлялся, почему так, потому что etc это общепринятое et cetera. Понятно, что уже не исправить, но прямо просится замена etc на cfg или conf. А var и usr это вообще одна большая помойка, в зависимости от дистрибутивов и сборок там можно найти всё, что угодно, начиная от контейнеров docker, html nginx и например медиафайлов asterisk. Данные контейнеров docker совсем не вписываются в variable, а /usr допустим ок, но продолжение в виде /usr/lib, что вроде подразумевает какие-то бинарники меня путает. В целом, эту иерархию скорее всего уже не исправить, также как не исправить русский и английский язык, полные противоречий и исключений, остается только запоминать или гуглить. Ну, хорошо что хотя бы с остальными каталогами более-менее все логично и ясно-понятно


    1. opensophy Автор
      25.02.2026 15:29

      Общепринятой(хотя даже официальной) расшифровкой является et cetera, но про бэкронимы тоже стоит знать чтобы не столкнуться с недопониманиями(как пример видел вопрос в одном форуме про линукс и там первоначально не поняли о чём речь поскольку назвали etc как Editable Text Configuration(не буквально так но суть понятна), и чаще замечал именно этот бэкроним в обсуждении)


  1. voidstrx
    25.02.2026 15:29

    Ещё для навигации можно добавить pushd и popd

    если скрипт редачили на винде часто выручает sed -i 's/\r$//' script.sh