Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

Основные команды Linux

2038
13 минут чтения
Средний рейтинг статьи: 5

Linux — это операционная система (набор дистрибутивов), подобная Windows или MacOS, но с открытым исходным кодом. При этом Linux, как правило, используется в серверных решениях, где требуется высокая надежность, отказоустойчивость и гибкость настройки.

Взаимодействие с ОС на базе Linux осуществляется посредством выполнения команд в консольном терминале. Особенно это касается управления удаленными хостами — например, облачными серверами, которые предоставляет Timeweb Cloud.

В этом руководстве будут рассмотрены самые основные команды консольного терминала, необходимые для работы с большинством известных дистрибутивов Linux:

  • Alt Linux

  • Astra Linux

  • Kali Linux

  • Debian

  • Ubuntu

Конкретно в этом руководстве использовался дистрибутив Ubuntu 22.04, размещенный на облачном сервере Timeweb Cloud.

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

  • Управление файлами и каталогами. Вы можете создавать, удалять, перемещать, копировать и изменять права доступа к файлам и каталогам.

  • Администрирование системы. Вы можете управлять процессами, устанавливать и удалять программы.

  • Работа с сетью. Вы можете управлять сетевыми соединениями, проверять состояние сети и настраивать сетевые интерфейсы.

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

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

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

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

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

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

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

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

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

    

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

    

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

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

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

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

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

    

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

    

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

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

    

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

    

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

    

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

    

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

    

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

    

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

    

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

    

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

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

    

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

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

    

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

    

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

    

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

    

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

    

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

    

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

    

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

    

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

    

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

    

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

    

Либо идентичная запись:

    

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

    

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

    

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

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

    

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

    

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

    

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

    

Вернемся в root:

    

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

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

    

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

    

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

    

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

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

    

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

    

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

    

Проверим это:

    

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

    

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

    

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

    

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

    

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

    

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

    

Создание файла (nano)

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

    

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

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

    

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

    

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

    

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

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

    

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

    

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

    

Проверим его содержимое:

    

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

    

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

    

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

    

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

    

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

    

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

    

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

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

    

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

    

Файл был успешно удален:

    

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

    

Проверим файлы:

    

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

    

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

    

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

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

    

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

    

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

    

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

    

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

    

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

    

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

    

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

    

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

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

    

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

    

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

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

Системные часы (date)

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

    

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

    

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

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

    

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

    

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

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

    

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

    

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

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

    

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

    

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

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

    

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

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

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

    

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

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

    

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

    

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

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

    

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

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

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

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

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

    

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

    

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

    

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

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

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

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

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

    

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

    

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

    

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

    

Установка пакета

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

    

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

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

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

    

Удаление пакета

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

    

Управление консолью

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

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

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

    

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

Справка по команде (man)

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

    

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

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

    

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

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

    

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

    

Заключение

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

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

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

2038
13 минут чтения
Средний рейтинг статьи: 5
Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server