Основные команды Linux для управления файлами и системой

    Команда Simple-Server
    03.06.2026
    13 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Потоки ввода и вывода команд

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

    Каждый процесс (программа) в Linux имеет 3 стандартных потока данных:

    • stdin (номер 0). Поток ввода.

    • stdout (номер 1). Поток вывода.

    • stderr (номер 2). Поток ошибок.

    stdin (номер 0). Поток ввода.

    stdout (номер 1). Поток вывода.

    stderr (номер 2). Поток ошибок.

    Самые основные — это stdin и stdout.

    С помощью стандартных потоков данных Linux позволяет строить пайплайны (pipelines) обработки данных. Иными словами, вместо вывода результата работы приложения (запущенного командой) в консоль, данные можно передать в качестве входных другому приложению и так далее.

    Например, вот так может выглядеть тривиальный пайплайн:

    После выполнения этой команды в консоли появится следующий вывод:

    Сначала мы выполняем команду ls, которая выводит список всех системных файлов и папок, после чего передаем результат ее вывода команде grep, которая выполняет поиск тех каталогов, в названии которых фигурирует 32.**
    **

    Окружение, директории и управление файлами

    В этом разделе рассмотрим основные команды для навигации по каталогам и управления файлами.

    Адрес текущей директории (pwd)

    Иногда полезно наглядно увидеть, в какой директории находится пользователь в данный момент:

    Например, если пользователь находится в корневой директории, то в консоли появится соответствующий вывод:

    Переход в конкретную директорию (cd)

    Вместо указания абсолютных путей при выполнении команд в некоторых случаях удобно вручную перемещаться между директориями:

    Конкретно в этом примере мы оказались в системном каталоге usr. В этом можно убедиться, явно запросив текущую директорию:

    В консоли появится следующий вывод:

    Чтобы вернуться в корневой каталог, достаточно выполнить команду перехода без явного указания адреса:

    Снова запросим текущий каталог:

    В консоли появится адрес корневого каталога:

    Давайте перейдем в другую системную директорию на два уровня ниже:

    Чтобы подняться на уровень выше, нужно указать две точки (..):

    Теперь мы оказались в системном каталоге sys.

    Снова вернемся в корневой каталог:

    Список файлов и каталогов текущей директории (ls)

    Сперва перейдем в системную директорию пользователя:

    Для исследования содержимого файловой системы можно запросить список файлов и каталогов в текущей директории:

    В консоли появится следующий вывод:

    bin  games  include  lib  lib32  lib64  libexec  libx32  local  sbin  share  src

    Вернемся в корневую директорию:

    Для того, чтобы видеть скрытые файлы и каталоги, необходимо добавить флаг -A:

    В консоли появится примерно такой вывод:

    .ansible  .bash_history  .bashrc  .cache  .lesshst  .profile  resize.log  snap  .ssh

    Есть похожая команда, которая дает немного больше информации о содержимом файловой системы, добавляя указатели на текущий и более высший уровни:

    В этом случае вывод будет таким:

    .  ..  .ansible  .bash_history  .bashrc  .cache  .lesshst  .profile  resize.log  snap  .ssh

    Тем не менее, можно узнать содержимое каталога, не переходя в него:

    Консольный вывод будет содержать список файлов и директорий указанного каталога, а не текущего местонахождения пользователя:

    backups  cache  crash  lib  local  lock  log  mail  opt  run  snap  spool  tmp

    Чтобы запросить список всех системных файлов и директорий, нужно добавить слэш (/) или две точки (..):

    В консоли появится следующий вывод:

    bin   dev  home  lib32  libx32      media  opt   root  sbin  srv       sys  usr boot  etc  lib   lib64  lost+found  mnt    proc  run   snap  swap.img  tmp  var

    Как можно увидеть, корневая директория root, к которой всегда возвращает команда cd, являются частью обширного списка других системных директорий, расположенных на уровень выше:

    Теперь мы находимся в root.

    Из корневого каталога мы можем сразу перейти в любую другую системную директорию, находящуюся на одном уровне с root, — нам не придется вручную подниматься на уровень выше:

    Однако если подняться из системной директории на уровень выше, то мы окажемся над корневым каталогом root:

    Проверим файловую систему:

    Как видно, теперь мы находимся на самом верхнем уровне:

    bin   dev  home  lib32  libx32      media  opt   root  sbin  srv       sys  usr boot  etc  lib   lib64  lost+found  mnt    proc  run   snap  swap.img  tmp  var

    Создание директории (mkdir)

    При создании директории указывается ее имя:

    Убедиться в том, что каталог действительно был создан, можно, запросив состояние файловой системы:

    Среди консольного вывода можно наблюдать название созданной директории:

    Директории можно сразу создавать рекурсивно одну в другой с помощью флага -p.

    Например, попробуем создать вложенные директории обычным способом:

    В консоли появится сообщение об ошибке:

    mkdir: cannot create directory ‘myjob/inner’: No such file or directory

    Однако с флагом этот каталог будет создан:

    Консольный вывод станет таким:

    myjob  mywork  resize.log  snap

    Проверим наличие вложенного каталога:

    Как видно, он действительно существует:

    Флаг -p также предотвращает ошибку при создании уже существующего каталога. Например, повторно создадим директорию обычным способом:

    В консоли выведется ошибка:

    mkdir: cannot create directory ‘mywork’: File exists

    Однако с флагом ее не будет:

    Создание файла и наполнение его содержимым осуществляется через консольный текстовый редактор nano:

    После терминал консоли перейдет в режим редактирования текста. По завершению работы с файлом нужно нажать Ctrl + S для его сохранения и Ctrl + X для его закрытия.

    Пусть содержимое созданного файла будет следующим:

    Проверим наличие файла в текущей директории:

    Как видим, созданный файл находится рядом с ранее созданными каталогами:

    myfile  myjob  mywork  resize.log  snap

    Копирование файла или директории (cp)

    Копирование создает точную копию файла или каталога по указанному адресу:

    Проверим файловую систему:

    Видим, что появился новый файл:

    myfile  myfile2  myjob  mywork  resize.log  snap

    Оно полностью идентично содержимому оригинального файла:

    Попробуем проделать то же самое с каталогом:

    В консоли появится ошибка:

    cp: -r not specified; omitting directory 'mywork'

    Дело в том, что копирование каталогов требует явного указания флага рекурсивного выполнения команды -r:

    Проверим текущую директорию:

    Каталог был успешно скопирован:

    myfile  myfile2  myjob  mywork  mywork2  resize.log  snap

    Удаление файла или директории (rm)

    Давайте удалим ранее созданный файл:

    myfile  myjob  mywork  mywork2  resize.log  snap

    Для удаления каталогов требуется аналогичное указание флага -r:

    Каталог был успешно удален:

    myfile  myjob  mywork  resize.log  snap

    Кстати, можно также использовать специальную команду для удаления директории:

    Перемещение файла или директории (mv)

    Перемещение файла аналогично его копированию, но при этом оригинальный файл удаляется:

    Проверим текущую директорию:

    Можно заметить, что оригинальный файл отсутствует:

    myjob  mywork  resize.log  snap

    При этом он будет находиться в указанной директории:

    Ее содержимое теперь будет таким:

    Копирование каталогов ничем не отличается от копирования файлов:

    Проверим указанную директорию

    Как видно, каталог был целиком перемещен:

    Быстрый просмотр содержимого файла (cat)

    Вместо редактора nano для просмотра файла можно сразу вывести его содержимое в консоль:

    В консоли появится соответствующий вывод:

    Информация о системе и сети

    Базовые команды для вывода данных о системе.

    Через консольный терминал можно запросить системные дату и время:

    Формат вывода выглядит следующим образом:

    Sun Mar 31 09:27:16 PM MSK 2024

    Список активных пользователей (w)

    Можно запросить список всех пользователей, вошедших на данный момент в систему:

    Вывод в консоли будет примерно таким:

    21:31:18 up 40 min,  1 user,  load average: 0.02, 0.01, 0.00 USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT root     pts/0    109.225.55.152   20:51    1.00s  0.09s  0.00s w

    Список активных процессов (ps)

    Можно запросить список запущенных процессов:

    В этом случае консольный вывод будет примерно следующим:

    PID TTY          TIME CMD 11643 pts/1    00:00:00 bash 11671 pts/1    00:00:00 ps

    Подключение к удаленному серверу по SSH (ssh)

    Часто используемая команда для управления удаленными хостами через SSH-соединение:

    Команда выше имеет следующую схему:

    Разумеется, USER нужно заменить на имя удаленного пользователя, а IP на IP-адрес удаленного хоста.

    После этого консольный терминал попросит ввести root-пароль:

    root@185.154.195.109's password:

    Обратите внимание, что в момент ввода пароль визуально не отображается. Поэтому будьте внимательны и следите за тем, какая выбрана раскладка клавиатуры и не включен ли CAPSLOCK. При этом пароль можно просто скопировать и нажать Enter.

    Загрузка файлов по URL (wget)

    Зачастую некоторые программы (в виде архива или скрипта) загружаются вручную из удаленных репозиториев как обычные файлы:

    wget https://github.com/nginx/nginx/archive/refs/tags/release-1.25.4.tar.gz

    В этом примере выполняется загрузка архива с веб-сервером Nginx с официального репозитория GitHub.

    После этого можно проверить состояние текущей директории:

    Можно заметить, что среди прочих каталогов появился загруженный архив:

    mywork  release-1.25.4.tar.gz  resize.log  snap  temp

    Распаковка архивов (wget)

    Загруженные с удаленных серверов архивы перед использованием необходимо распаковать:

    tar -xvf release-1.25.4.tar.gz

    При этом флаги указывают то, как следует выполнять извлечение:

    • -x сообщает об извлечении сжатых файлов их архива;

    • -v сообщает о необходимости выведения в консоль подробной информации о процессе извлечения;

    • -f сообщает, что переданные в команду параметры являются именами файлов архивов.

    -x сообщает об извлечении сжатых файлов их архива;

    -v сообщает о необходимости выведения в консоль подробной информации о процессе извлечения;

    -f сообщает, что переданные в команду параметры являются именами файлов архивов.

    После извлечения проверим текущую директорию:

    Как и следовало ожидать, появилась новая папка с названием распакованного архива:

    mywork  nginx-release-1.25.4  release-1.25.4.tar.gz  resize.log  snap  temp

    Кстати, после распаковки архив можно удалить за ненадобностью:

    Установка и удаление пакетов

    Команды для управление пакетами Linux.

    Обновление списка репозиториев

    В дистрибутивах Linux есть стандартный пакетный менеджер APT. Он используется по умолчанию в дистрибутивах Debian, Ubuntu и AstraLinux.

    Как правило, перед использованием выполняют обновление списка доступных для загрузки репозиториев:

    Также имеет смысл выполнять обновление уже установленных в систему пакетов:

    Можно также просмотреть список уже установленных в системе пакетов:

    sudo apt list --installed

    В этом случае в консоли появится примерно такой вывод:

    Listing... Done adduser/jammy,now 3.118ubuntu5 all [installed,automatic] amd64-microcode/jammy-updates,jammy-security,now 3.20191218.1ubuntu2.2 amd64 [installed,automatic] apparmor/jammy-updates,now 3.0.4-2ubuntu2.3 amd64 [installed,automatic] apport-symptoms/jammy,now 0.24 all [installed,automatic] ...

    Пакеты устанавливаются следующим образом:

    Например, таким образом мы установили веб-сервер Nginx.

    Очень часто при установке пакетный менеджер задает дополнительные вопросы, на которые можно ответить yes или no с помощью консольных вводов y и n.

    Чтобы APT автоматически отвечал yes на все возникающие во время установки вопросы, необходимо добавить флаг -y:

    sudo apt install nginx -y

    Удалить пакет Linux можно следующим образом:

    Команды для работы с самим консольным терминалом.

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

    Чтобы не запутаться среди ранее выведенных в консоли сообщений, рекомендуется периодически очищать терминал:

    После этого командная строка вернется в исходное (чистое) состояние.

    Вы всегда можете получить справку о любой команде Linux:

    После этого в консоли появится информация о структуре команды, ее возможных флагах и параметрах.

    Более короткая, но менее понятная справка по командам может быть получена так:

    История использованных команд (history)

    Можно просмотреть историю введенных в консольный терминал команд:

    Вывод будет примерно таким:

    ... 125  cd .. 126  cd . 127  cd .. 128  ls 129  cd 130  cd /sys 131  ls 132  cd .. 133  ls 134  cd 135  clear 136  cd ...

    Рассмотренные в этом руководстве команды используется в Linux чаще всего. Это самые базовые вещи, которые необходимо знать любому разработчику во время работы с ОС.

    Для решения более сложных задач, связанных с DevOps, построением облачных инфраструктур или проектированием микросервисных приложений, необходимы специализированные и более сложные команды (и пакеты, их предоставляющие), флаги и параметры.

    Вы можете найти полный список команд и официальную документацию (включая руководства по командам, инструкции по установке и настройке) на официальном сайте проекта ядра Linux.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны