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.
