Разверните OpenClaw в облаке в один клик
Вход/ Регистрация

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

2289
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

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

    
lib32 libx32

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

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

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

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

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

    
pwd

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

    
/root

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

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

    
cd /usr

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

    
pwd

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

    
/usr

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

    
cd

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

    
pwd

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

    
/root

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

    
cd /sys/devices

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

    
cd ..

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

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

    
cd

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

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

    
cd /usr

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

    
ls

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

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

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

    
cd

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

    
ls -A

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

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

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

    
ls -a

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

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

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

    
ls /var

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

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

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

    
ls /

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

    
ls ..

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

    
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, являются частью обширного списка других системных директорий, расположенных на уровень выше:

    
cd

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

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

    
cd /sys

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

    
cd ..

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

    
ls

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

    
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

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

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

    
mkdir mywork

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

    
ls

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

    
mywork  resize.log  snap

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

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

    
mkdir myjob/inner

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

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

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

    
mkdir myjob/inner -p

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

    
ls

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

    
myjob  mywork  resize.log  snap

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

    
ls ./myjob

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

    
inner

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

    
mkdir mywork

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

    
mkdir: cannot create directory ‘mywork’: File exists

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

    
mkdir mywork -p

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

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

    
sudo nano myfile

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

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

    
My text

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

    
ls

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

    
myfile  myjob  mywork  resize.log  snap

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

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

    
cp myfile myfile2

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

    
ls

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

    
myfile  myfile2  myjob  mywork  resize.log  snap

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

    
sudo nano myfile2

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

    
My text

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

    
cp mywork mywork2

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

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

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

    
cp mywork mywork2 -r

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

    
ls

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

    
myfile  myfile2  myjob  mywork  mywork2  resize.log  snap

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

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

    
rm myfile2

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

    
ls

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

    
myfile  myjob  mywork  mywork2  resize.log  snap

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

    
rm mywork2 -r

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

    
ls

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

    
myfile  myjob  mywork  resize.log  snap

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

    
rmdir mywork2

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

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

    
mv myfile mywork

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

    
ls

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

    
myjob  mywork  resize.log  snap

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

    
ls mywork

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

    
myfile

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

    
mv myjob mywork

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

    
ls mywork

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

    
myfile  myjob

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

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

    
cat mywork/myfile

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

    
My text

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

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

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

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

    
date

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

    
Sun Mar 31 09:27:16 PM MSK 2024

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

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

    
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)

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

    
ps

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

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

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

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

    
ssh root@185.154.195.109

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

    
ssh USER@IP

Разумеется, 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.

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

    
ls

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

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

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

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

    
tar -xvf release-1.25.4.tar.gz

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

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

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

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

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

    
ls

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

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

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

    
rm release-1.25.4.tar.gz

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

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

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

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

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

    
sudo apt update

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

    
sudo apt upgrade

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

    
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] ...

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

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

    
sudo apt install nginx

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

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

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

    
sudo apt install nginx -y

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

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

    
sudo apt remove nginx

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

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

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

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

    
clear

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

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

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

    
man ls

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

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

    
help

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

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

    
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.

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