Перейти к основному контенту

Работа с файлами и папками в Linux

Общие сведения

Данное руководство содержит описание базовых команд управления файловой системой в операционной системе Linux.
Команды приведены с краткими пояснениями, синтаксисом и типовыми параметрами.

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

pwd — определение текущего каталога

Команда выводит абсолютный путь к рабочей директории. Используется для ориентации в дереве каталогов.

$ pwd
/home/user/documents

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

Отображает список файлов и поддиректорий. Основные варианты:

ls - Краткий список имён

image.png

ls -l - Детальный список (права, владелец, размер, дата)

image.png

ls -a - Включение скрытых файлов (начинающихся с точки)

image.png

ls -la - Комбинированный вывод всех элементов с деталями

image.png

ls -lh - Детальный список с человеко-читаемым размером (K, M, G)

image.png

ls -lt - Сортировка по времени изменения (новые сверху)

image.png

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

cd /абсолютный/путь - переход по абсолютному пути

image.png

cd относительный/путь - переход относительно текущей позиции

image.png

cd /   - переход в корневой каталог

cd ..  - переход на уровень выше

image.png

cd ~  - переход в домашний каталог пользователя

cd -   - переход в предыдущий каталог

image.png

Вспомогательные средства: tree и mc

tree — отображение структуры каталогов

Утилита tree предназначена для рекурсивного отображения содержимого каталогов в виде древовидной структуры. В отличие от стандартных команд ls, которые выводят список файлов линейно, tree визуализирует иерархию вложенности, что незаменимо при быстром анализе структуры проектов или знакомстве с файловой системой незнакомого сервера. Команда tree не входит в базовую поставку большинства дистрибутивов и требует отдельной установки.

Установка:

Debian / Ubuntu:

sudo apt update && sudo apt install tree

CentOS / RHEL / Fedora:

sudo yum install tree

Основные параметры:

tree -a - Показывать все файлы, включая скрытые (начинающиеся с точки)

image.png

tree -d - Выводить только каталоги, игнорируя файлы.

image.png

tree -L 2 - Ограничить глубину рекурсии (-L уровень). Значение 1 покажет только текущий каталог.

image.png

tree -P "*.sh" - Показывать только файлы (-P шаблон), соответствующие указанному шаблону (поддерживаются wildcard).

image.png

tree -I "node_modules" - Исключить файлы, соответствующие шаблону (-I шаблон).

image.png

tree --filelimit 10 - Не обрабатывать каталоги, содержащие более # файлов (--filelimit #).

image.png

tree -h - Отображать размер файлов в человеко-читаемом формате (K, M, G)

image.png

Просмотр структуры текущего каталога: tree. Без аргументов показывает иерархию, начиная с текущей директории.

Игнорирование определённых каталогов: tree -I "build|dist". Исключает из вывода каталоги build и dist.

Комбинированный вывод: tree -ah --du. Отображает все файлы (включая скрытые), их размеры в удобном формате и итоговый размер каждого каталога.

mc (Midnight Commander) — консольный двухпанельный файловый менеджер.

Midnight Commander (или просто mc) — это мощный консольный файловый менеджер с двухпанельным интерфейсом, созданный как свободный аналог классического Norton Commander под UNIX-подобные системы. mc позволяет выполнять все основные файловые операции, работать с архивами как с обычными каталогами, подключаться к удалённым серверам по FTP/SFTP и даже редактировать файлы с помощью встроенного редактора, не покидая сессии терминала.

Установка и запуск:

Debian / Ubuntu:

sudo apt install mc

CentOS / RHEL / Fedora:

sudo yum install mc

Запуск: Введите в терминале mc. Программа запустится в текущем окне терминала. Во время запуска можно указать каталоги для отображения в левой и правой панелях: mc /var/log /home/user.

image.png

Интерфейс и управление

Основу интерфейса составляют две вертикальные панели, которые могут отображать содержимое каталогов, дерево каталогов, информацию о файле или предварительный просмотр текста. Под панелями располагается командная строка, в которой можно исполнять обычные команды оболочки, не выходя из файлового менеджера.

Управление осуществляется как с помощью клавиатуры, так и с помощью мыши (работает даже через SSH в совместимых терминалах). Активная панель (та, с которой выполняются действия) выделяется подсветкой.

Основные «горячие клавиши»

Клавиша Назначение
Tab Переключение между левой и правой панелями.
Стрелки, Enter Навигация по файловой системе.
F1 Вызов контекстно-зависимой справки.
F2 Вызов пользовательского меню для быстрого доступа к часто используемым командам.
F3 Просмотр содержимого выделенного файла (встроенный просмотрщик).
F4 Редактирование выделенного файла (открывает встроенный редактор mcedit).
F5 Копирование выделенного файла или каталога из активной панели в пассивную.
F6 Перемещение (или переименование) выделенного объекта.
F7 Создание нового каталога.
F8 Удаление выделенного файла или каталога.
F9 Активация верхнего меню (Left, File, Command, Options, Right) для доступа ко всем функциям.
F10 Выход из Midnight Commander.

Дополнительные возможности

  • Работа с архивами: Midnight Commander позволяет просматривать и копировать файлы из архивов (tar, zip, rar, arj и др.) так, будто они являются обычными каталогами. Для перемещения файла в архив достаточно скопировать его в файл с соответствующим расширением.
  • Удалённый доступ: Поддерживаются встроенные возможности подключения по протоколам FTP, SFTP и SMB (Windows-шары). Для подключения к удалённому серверу по SFTP можно использовать командную строку внутри mc: cd sh://user@host/путь, или активировать меню через F9 -> Left -> FTP link и ввести URI в формате sftp://user@remote-host.

Создание объектов файловой системы

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

mkdir папка                     # создать подкаталог в текущей директории
mkdir /home/user/папка          # создать по абсолютному пути
mkdir папка1 папка2             # создать несколько каталогов
mkdir -p путь/к/вложенной/папке # создать всю цепочку каталогов (включая промежуточные)

Параметр -p (parents) необходим для создания вложенных структур, когда родительские каталоги отсутствуют.

touch — создание пустых файлов

Команда обновляет временные метки файла. При отсутствии файла создаёт его нулевого размера.

touch file.txt
touch file1.txt file2.txt file3.txt

echo — запись строки в файл

echo "текст" > file.txt   # перезапись файла
echo "текст" >> file.txt  # добавление в конец файла

nano — текстовый редактор

nano — консольный текстовый редактор, входящий в состав большинства дистрибутивов Linux по умолчанию. Отличительной особенностью редактора является его простота и наглядность. В отличие от редакторов vim или emacs, nano имеет немодальный интерфейс: после открытия файла пользователь сразу может приступать к набору и редактированию текста, без переключения между режимами. В нижней части окна постоянно отображается список основных «горячих клавиш», что делает его идеальным инструментом для начинающих пользователей и для выполнения быстрых правок конфигурационных файлов.

image.png

Возможности и синтаксис
  • Запуск и создание файлов:

    • nano имя_файла — открыть существующий или создать новый файл для редактирования.

    • nano — запустить редактор с пустым буфером; при сохранении будет предложено указать имя файла.
  • Синтаксис команд:
    • все команды ввода осуществляются с помощью комбинаций клавиш.
    • Символ ^ обозначает клавишу Ctrl, а символ M обозначает клавишу Alt (Meta). Например, запись ^X означает нажатие Ctrl+X, а M-U — нажатие Alt+U.

Основные комбинации клавиш:

Комбинация Назначение Примечание
Ctrl+G Вызов справки Отображает полный список всех доступных команд.
Ctrl+X Выход из редактора При наличии несохранённых изменений будет запрошено подтверждение.
Ctrl+O Сохранить файл (WriteOut) Перед сохранением запрашивает подтверждение имени файла.
Ctrl+W Поиск текста Позволяет найти строку или регулярное выражение.
Ctrl+\ Поиск и замена Выполняет замену найденного текста в документе.
Ctrl+K Вырезать строку Удаляет текущую строку и помещает её в буфер обмена.
Ctrl+U Вставить из буфера Вставляет содержимое буфера в текущей позиции курсора.
Alt+6 Копировать выделенный текст Копирует выделенный фрагмент в буфер без удаления.
Alt+U Отменить последнее действие (Undo) Позволяет откатить изменения.
Alt+E Повторить отменённое действие (Redo) Повторяет действие, отменённое через Alt+U.
Alt+A Начать выделение текста Позволяет выделить блок текста с помощью стрелок для последующего копирования/вырезания.

Навигация по тексту

  • Ctrl+A / Ctrl+E — перейти в начало / конец текущей строки.
  • Ctrl+Y / Ctrl+V — перейти на страницу вверх / вниз.
  • Ctrl+_ — перейти к указанной строке и столбцу.
  • Ctrl+T / Ctrl+F — перейти к предыдущему / следующему слову в строке.

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

cat file.txt - Вывод всего содержимого файла (для небольших объёмов)

image.png

head file.txt  - Вывод первых 10 строк

image.png

head -n 20 file.txt - Вывод первых 20 строк

image.png

tail file.txt - Вывод последних 10 строк

image.png

tail -n 5 file.txt - Вывод последних 5 строк

image.png

tail -f file.log - Отслеживание новых строк в реальном времени (для логов)

image.png

less file.txt - Постраничный просмотр с возможностью поиска (/слово), выхода (q)

Копирование, перемещение и удаление

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

cp исходный_файл целевой_файл              # копирование в текущем каталоге
cp файл /путь/к/папке/                     # копирование в другой каталог
cp -r исходная_папка целевая_папка         # рекурсивное копирование каталогов
cp -i файл файл2                          # запрос подтверждения перед перезаписью
cp -v файл файл2                          # вывод деталей операции

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

mv старое_имя новое_имя                   # переименование
mv файл /путь/к/папке/                    # перемещение
mv -i файл /путь/                         # запрос при перезаписи
mv -v файл /путь/                         # вывод подробностей

rm — удаление

rm file.txt                    # удаление файла
rm -r каталог                  # рекурсивное удаление каталога
rm -rf каталог                 # принудительное удаление без запросов
rm *                           # удаление всех файлов в текущем каталоге
rm -i file.txt                 # запрос подтверждения для каждого файла

Передача файлов по сети

wget — загрузка по HTTP/HTTPS/FTP

wget https://example.com/file.zip
wget -O имя_файла.zip http://example.com/file.zip   # сохранение с новым именем
wget -r https://example.com/каталог/                # рекурсивная загрузка

curl — универсальная передача данных

curl -O https://example.com/file.zip                # сохранение с оригинальным именем
curl -o имя.zip https://example.com/file.zip        # сохранение с указанным именем
curl -I https://example.com                         # получение только HTTP-заголовков

scp — защищённое копирование по SSH

scp file.txt user@192.168.1.10:/home/user/          # копирование на удалённый хост
scp user@192.168.1.10:/home/user/file.txt ./        # копирование с удалённого хоста
scp -r каталог/ user@192.168.1.10:/home/user/       # рекурсивное копирование каталога

Управление правами и выполнение скриптов

chmod — изменение прав доступа

Права доступа задаются для трёх категорий: владелец, группа, остальные. Символы прав: r (чтение), w (запись), x (выполнение).

chmod +x script.sh          # добавление права на выполнение для всех
chmod 755 script.sh         # установка прав: rwxr-xr-x
chmod -R 750 каталог/       # рекурсивное изменение прав для каталога

Запуск скриптов

Для файла например script.sh возможны следующие способы выполнения:

Способ Требование
sh script.sh Не требуется право x, используется интерпретатор sh
bash script.sh Не требуется право x, используется интерпретатор bash
./script.sh Требуется право x и корректный shebang (#!/bin/bash)

Дополнительные команды

Команда Назначение
find /путь -name "*.txt" Поиск файлов по имени в указанной директории
grep "строка" файл.log Поиск строки в файле
df -h Просмотр использования дискового пространства
du -sh каталог/ Определение размера каталога
ln -s /реальный/путь имя_ссылки Создание символической ссылки
history Отображение истории выполненных команд
clear Очистка экрана терминала

Примечания по использованию

  • Для получения полной документации по любой команде используйте man команда или команда --help.
  • Символ ~ (тильда) всегда интерпретируется как путь к домашнему каталогу текущего пользователя.
  • Символ . (точка) обозначает текущий каталог, .. (две точки) — родительский.
  • При работе с критически важными данными рекомендуется перед выполнением rm использовать параметр -i.