Глава 1. Основы Linux

1. Цель занятия и обзор плана занятия

Цель данного занятия — познакомить обучающихся с основами работы в операционной системе Linux Ubuntu 24.04 LTS и сформировать практические навыки, необходимые для дальнейшего освоения инструментов робототехники и систем технического зрения.

После завершения занятия обучаемый должен уметь:

  • установить операционную систему Linux Ubuntu 24.04 LTS на компьютер или виртуальную машину;

  • выполнять базовые команды в терминале;

  • создавать и редактировать файлы и каталоги;

  • осуществлять подключение к удалённым устройствам с использованием протокола SSH.

Овладение этими навыками создаёт фундамент для всех последующих тем курса, поскольку среда Linux является основной рабочей платформой для систем ROS (Robot Operating System) и других инструментов, применяемых при разработке робототехнических комплексов.

1.1. Обзор плана занятия

В ходе занятия рассматриваются следующие этапы:

  1. Теоретические сведения - будут изучены основные сведения об операционных системах, об операционной системе Linux и конкретно об Linux Ubuntu.

  2. Установка Ubuntu Linux 24.04 LTS Подготовка установочного носителя, выбор режима установки (основная система или dual boot), первичная настройка и проверка работы окружения.

  3. Основы работы в терминале Ознакомление с интерфейсом командной строки, выполнение базовых команд (ls, cd, pwd, mkdir, rm, cp, mv, cat, nano, echo и др.).

  4. Работа с файлами и каталогами Создание и удаление файлов и папок, перемещение и копирование данных, навигация по файловой системе.

  5. Редактирование текстовых файлов Использование базовых консольных редакторов, таких как nano и vim, редактирование конфигурационных файлов и скриптов.

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

2. Теоретический материал

2.1. Зачем нужны операционные системы

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

Без операционной системы взаимодействие человека (или программы) с вычислительным устройством было бы крайне сложным: пользователю пришлось бы напрямую управлять процессором и памятью, используя машинные коды. ОС берёт на себя множество базовых функций, таких как:

  • распределение процессорного времени между запущенными программами;

  • управление оперативной памятью и файловой системой (скрывает как физически организованы диски - это HDD, SSD, или вообще магнитофон с лентой);

  • стандартизирует обработку запросов к устройствам ввода и вывода (дискам, камерам, сетевым интерфейсам);

  • организация многозадачности — возможности выполнять несколько процессов одновременно;

  • обеспечение безопасности и контроля доступа к ресурсам.

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

Когда операционные системы необходимы, а когда нет

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

Однако не каждое устройство нуждается в полноценной операционной системе. В некоторых случаях программное обеспечение взаимодействует с аппаратурой напрямую — без промежуточного слоя ОС. Такой подход характерен для встроенных систем и микроконтроллеров, выполняющих строго определённый набор функций, и зачастую, не терпящей временных задержек в управлении.

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

Примеры:

  • микроконтроллер, управляющий двигателями или освещением;

  • термостат, регулирующий температуру по показаниям датчика;

  • простейший робот, выполняющий заранее прошитый алгоритм движения.

В таких случаях программа полностью контролирует работу устройства и загружается в память микроконтроллера без участия ОС.

Тем не менее, даже в области встроенных систем иногда применяются реализационные (встраиваемые) операционные системы — например, FreeRTOS, RTEMS, Zephyr. Они предоставляют ограниченный, но управляемый набор функций: многозадачность, управление приоритетами, таймеры и обработку прерываний. Это необходимо, когда устройство должно выполнять несколько действий параллельно — например, опрашивать датчики, управлять моторами и обрабатывать коммуникацию с внешним миром.

Промежуточный вывод

Таким образом, операционная система становится тем более необходимой, когда устройство выходит за пределы узкоспециализированной функции и должно выполнять сложные работы, с большим объемом переиспользования ранее написанного кода (например, использовать готовые драйвера для видеокамер, алгоритмы обработки изображения и т.д.).

Системы с ОС в чем-то подобны головному мозгу: они могут выполнять большие и сложные операции, однако время их реакции может быть достаточно медленным. Системы на микроконтроллерах (без ОС или с относительно простыми ОС) в таком случае подобны спинному мозгу: выполняют относительно простые операции, но очень быстро. Так же, как в организме нужны обе системы, также и в робототехнике соединяют оба подхода.

В контексте данного курса знание принципов работы ОС Linux является обязательным, поскольку подавляющее большинство робототехнических платформ и систем технического зрения функционируют именно на базе Linux. Это позволяет объединять обработку данных с камер, вычисления нейросетей и управление аппаратурой в единую, согласованную систему.

2.2. Linux

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

Операционная система Linux принадлежит к семейству UNIX-подобных систем, развитие которых началось ещё в 1970-е годы. Первая версия ядра Linux была создана в 1991 году финским программистом Линусом Торвальдсом, который разработал её как свободную альтернативу проприетарным UNIX-системам, применявшимся в университетах и на промышленных серверах. Впоследствии проект был опубликован с открытым исходным кодом, что позволило тысячам разработчиков по всему миру участвовать в его развитии. Сегодня Linux — это не одна система, а целое семейство дистрибутивов, объединённых общим ядром и философией открытого программного обеспечения.

Главная идея Linux — открытость и модульность. Любой пользователь может совершенно бесплатно изучать исходный код, изменять и распространять систему, адаптируя её под конкретные задачи — от настольных компьютеров до встраиваемых контроллеров. Благодаря этому Linux стал фундаментом для большинства современных вычислительных платформ.

По состоянию на сегодняшний день более 90 % всех суперкомпьютеров мира работают под управлением Linux, включая системы, используемые в CERN, NASA, национальных лабораториях США и Японии. Также Linux является доминирующей платформой для веб-серверов и облачных приложений: такие службы, как Google, Amazon, Facebook, Wikipedia и многие другие, функционируют на базе Linux-серверов. В научной среде Linux ценится за стабильность, развитую систему инструментов для работы с данными и открытость экосистемы.

Существуют десятки дистрибутивов Linux, каждый из которых представляет собой комбинацию ядра, системных библиотек и набора прикладных программ, ориентированных на определённые цели. Например, Debian известен своей стабильностью, Fedora — экспериментальными возможностями, Arch Linux — гибкостью и минимализмом.

Дистрибутив Ubuntu Linux, используемый в данном курсе, основан на Debian, но имеет более дружественный интерфейс, регулярные обновления и широкую документационную поддержку. Ubuntu оптимально подходит для образовательных целей, работы с фреймворками ROS, а также для обучения системам технического зрения, поскольку сочетает стабильность, простоту настройки и совместимость с современным оборудованием.

Методически выбор Ubuntu Linux позволяет обеспечить единообразие учебной среды и воспроизводимость лабораторных заданий. Это гарантирует, что все участники курса, независимо от уровня подготовки, будут работать в одинаковом окружении, что значительно упрощает процесс обучения и поддержку со стороны преподавателей.

Ядро и дистрибутив Linux

В предыдущем разделе мы многократно упомянули термины ядро и дистрибутив. Давайте попробуем немного разобраться с ними.

Любая операционная система состоит из нескольких уровней, главный из которых — ядро (kernel). Ядро — это центральная часть системы, управляющая всеми ресурсами компьютера: процессором, оперативной памятью, устройствами ввода-вывода и файловой системой. Оно работает напрямую с оборудованием и обеспечивает взаимодействие между «железом» и пользовательскими программами. Когда вы вводите команду в терминале, именно ядро выполняет её на уровне процессора и возвращает результат.

Поверх ядра располагаются системные утилиты и библиотеки, обеспечивающие базовые функции (например, работу с файлами, сетью, пользователями). А ещё выше — прикладные программы: браузеры, текстовые редакторы, интерфейсы и другие инструменты, с которыми работает пользователь.

Linux — это не одна конкретная система, а семейство дистрибутивов (от слова distribution — «распространение»). Дистрибутив — это сборка, включающая ядро Linux, системные утилиты, набор программ и менеджер пакетов, объединённые в определённую конфигурацию и поддерживаемые одной организацией.

Например, Ubuntu, Debian, Fedora, Arch Linux, Mint и другие — это разные дистрибутивы, все основанные на одном и том же ядре, но с различным оформлением, набором предустановленного ПО и целевой аудиторией.

Схематичное представление структуры операционной системы Linux

+-----------------------------------------------------------+
|                      Пользователь                         |
| (графическая среда, терминал, приложения, скрипты)        |
+-----------------------------------------------------------+
|         Системные утилиты и библиотеки (glibc, bash)      |
+-----------------------------------------------------------+
|                 Ядро (Linux Kernel)                       |
|  управление процессами, памятью, устройствами, файлами    |
+-----------------------------------------------------------+
|                   Аппаратное обеспечение                  |
|      процессор, память, диски, устройства ввода-вывода    |
+-----------------------------------------------------------+

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

Терминал Linux

Пример окна терминала

Работа в терминале является одной из ключевых компетенций инженера-робототехника. Терминал — это текстовый интерфейс, через который пользователь взаимодействует с операционной системой напрямую, вводя команды с клавиатуры. Несмотря на отсутствие привычного графического окружения, именно этот способ общения с компьютером является наиболее гибким, надёжным и универсальным, особенно в инженерных и встраиваемых системах.

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

В этих условиях терминал — это один из основных способ взаимодействия с роботом. Он позволяет:

  • передавать команды и получать отклики в виде текста;

  • запускать и останавливать процессы;

  • управлять файлами, логами и конфигурацией;

  • осуществлять диагностику системы в реальном времени;

  • обновлять программное обеспечение.

Текстовый интерфейс особенно ценен тем, что он требует минимального объёма ресурсов и может функционировать через простейшие каналы связи — например, UART, RS-232 или другие низкоскоростные интерфейсы - самое простое, что только можно представить в плане коммуникаций.

3. Практический материал

3.1. Установка Ubuntu Linux 24

Загрузка Ubuntu

  1. Перейдите на официальный сайт Ubuntu: https://ubuntu.com/download/desktop

  2. Найдите версию Ubuntu 24.04 LTS и нажмите кнопку "Download"

  3. Файл с именем ubuntu-24.04.x-desktop-amd64.iso будет загружен на ваш компьютер. Запомните, куда он сохранился (обычно в папку "Загрузки")

Рис. 1: Страница загрузки Ubuntu

Установка VirtualBox

  1. Перейдите на официальный сайт VirtualBox: https://www.virtualbox.org/wiki/Downloads

  2. Нажмите на ссылку для "Windows hosts", если у вас ОС Windows. Для macOS "OS X hosts"

  3. Запустите загруженный установочный файл и следуйте инструкциям мастера установки. Можно оставлять все настройки по умолчанию и нажимать "Next", "Yes", "Install"

Рис. 2: Страница загрузки VirtualBox

Настройка VirtualBox и установка Ubuntu

Создание виртуальной машины
  1. Нажмите на синюю кнопку "Создать" (или "New")

  2. В открывшемся окне:

    • Имя: ubuntu

    • Образ ISO: путь до iso файла скачанного ранее

Рис. 3: Создание виртуальной машины
Настройка автоматической установки
  1. Установите имя пользователя "student", а пароль "123"

Рис. 4: Настройка гостевой ОС
Настройка виртуального оборудования
  1. Установите виртуальное оборудование основную память и число ЦПУ в рекомендованном пределе (в зеленой зоне)

  2. Для Ubuntu 24.04 рекомендуется не менее 4096 МБ (4 ГБ)

Рис. 5: Настройка оборудования
Настройка виртуального жесткого диска
  1. Установите размер диска в районе 30-40 ГБ

Рис. 6: Настройка жесткого диска
Настройка видеопамяти
  1. Нажмите правой кнопкой мыши по появившемуся образу и выберете "Настроить…"

  2. Перейдите в раздел "Дисплей"

  3. Поднимите настройки "Видеопамять" до разрешенного максимума

Рис. 7: Настройка видеопамяти
Запуск виртуальной машины
  1. Запустите ВМ

  2. После этого начнется настройка ОС

Рис. 8: Запуск ВМ

Настройка Ubuntu

Выбор типа установки
  1. Вам будет предложено выбрать между Интерактивной установкой ("Interactive installation") и Автоматической установкой ("Automated Installation")

  2. Выберите Интерактивный вариант (стандартный)

Рис. 9: Выбор типа установки
Выбор параметров установки
  1. Вам будет предложено выбрать между параметрами Выбор по умолчанию ("Default selection") и Расширенный выбор ("Extended selection")

  2. Выберите "Выбор по умолчанию" - включает в себя основные элементы для начала работы

Рис. 10: Выбор типа установки
Настройка диска
  1. На ВМ Ubuntu будет единственной операционной системой

  2. Выберите "Стереть диск и установите Ubuntu" ("Erase disk and install Ubuntu")

Рис. 11: Настройка диска
Создание пользователя
  1. Введите свое имя и название вашего компьютера

  2. Установите имя пользователя "student", а пароль "123"

  3. Чтобы автоматически заходить в систему снимите галочку с "Запрашивать мой пароль для входа в систему" ("Require my password to log in")

Рис. 12: Создание пользователя
Завершение установки
  1. Дождитесь завершения установки Ubuntu в фоновом режиме

Обновление системы

  1. Нажмите CTRL+ALT+T, чтобы открыть окно терминала (или щелкните значок терминала на боковой панели)

  2. Введите:

    sudo apt update

    (при необходимости введите пароль)

  3. Чтобы применить обновления, введите:

    sudo apt upgrade

    (при необходимости введите пароль)

  4. Введите Y, затем нажмите ENTER для подтверждения завершения процесса обновления

Дополнительно: Установка Guest Additions

  1. В верхней панели VirtualBox выберите пункт "Устройства"

  2. Выберите "Подключить образ Дополнительной гостевой ОС…"

Рис. 13: Меню Устройства
  1. В панели задач появится диск, выберете его

Рис. 14: Диск Guest Additions
  1. Нажмите CTRL+ALT+T, чтобы открыть окно терминала

  2. Введите:

    sudo apt install bzip2 tar

    (при необходимости введите пароль)

  3. Закройте терминал

  4. Запустите программу ("Run Software")

Рис. 15: Запуск программы

Дождитесь завершения программы и завершите работу ubuntu

Рис. 16: Завершение работы

Перезапустите виртуальную машину.

Настойка соединения между ОС

net settings
  1. Нажмите правой кнопкой мыши по образу ubuntu и выберете "Настроить…"

  2. Перейдите в раздел "Сеть"

  3. Добавьте новый адаптер. Перейдите в пункт "Адаптер 2" → "Тип подключения" → "Виртуальный адаптер". "Неразборчивый режим" переключите с "Запретить" на "Разрешить всё".

  4. Созраните изменения нажав на "ОК"

Проверьте, что настройки адаптера автоматические и включен DHCP сервер.

virtual nets
dhcp server

Далее запускаем виртуальную машину и проверяем наличия виртального ethernet адаптера.

На Linux:

$ ifconfig # (нужно установить net-tools) sudo apt install net-tools
# либо
$ ip a # Советую исппользовать первый вариант. Более наглядный вид всех доступных интерфейсов
virtual ethernet

На Windows:

$ ipconfig
Адаптер Ethernet Ethernet 4:

   DNS-суффикс подключения . . . . . :
   Локальный IPv6-адрес канала . . . : fe80::9dce:5f4b:714:5f37%14
   IPv4-адрес. . . . . . . . . . . . : 192.168.248.3
   Маска подсети . . . . . . . . . . : 255.255.255.0
   Основной шлюз. . . . . . . . . :

Соединение установлено.

Чтобы проверить его через ssh:

# Если нужно, то установи
$ sudo apt install openssh-server

# Добавить в автозагрузку
$ sudo systemctl enable ssh

# Запустить службу ssh
$ sudo systemctl start ssh

# Проверить службу ssh
$ systemctl status ssh


$ ssh student@192.168.248.1

3.2. Как открыть терминал в Ubuntu 24

В Ubuntu 24.04 LTS существует несколько способов запустить терминал:

  1. С помощью комбинации Ctrl + Alt + T

  2. Через главное меню (аналог «Пуска»):

    • Нажмите клавишу Super (на большинстве клавиатур она обозначена логотипом Windows).

    • В появившемся поисковом поле начните вводить слово Terminal или Терминал.

    • В результатах поиска выберите приложение Терминал (обычно сопровождается значком чёрного экрана с курсором).

  3. Через контекстное меню рабочего стола: щёлкните правой кнопкой мыши на свободной области рабочего стола и выберите пункт Открыть в терминале (Open in Terminal).


Каждый из перечисленных способов приводит к одному и тому же результату — открытию окна терминала, в котором отображается приглашение командной строки (обычно заканчивается символом $ для обычного пользователя или # для администратора).

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

3.3. Установка приложений из репозитория

Начнем с того, что установим несколько пакетов. В дистрибутиве Ubuntu 24.04 LTS для этого используется инструмент APT (Advanced Package Tool). Он автоматически загружает и устанавливает программы из официальных репозиториев — хранилищ, поддерживаемых разработчиками Ubuntu и сообществом пользователей.

Общий принцип установки

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

$ sudo apt install <имя_пакета>

Разберём элементы этой команды:

  • sudo — (сокр. superuser do) — временно предоставляет права администратора, необходимые для изменения системных файлов;

  • apt — инструмент управления пакетами;

  • install — подкоманда, обозначающая установку;

  • <имя_пакета> — имя программы, которую нужно установить.

После ввода команды система может запросить подтверждение установки. Для согласия нажмите клавишу Y, затем Enter.

Примечание: при вводе пароля после sudo символы не отображаются на экране — это нормальное поведение системы безопасности Linux. Просто введите пароль вслепую и нажмите Enter.

Примеры установки программ

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

$ sudo apt install cmatrix
$ sudo apt install cowsay
$ sudo apt install tree
$ sudo apt install git

Описание установленных программ:

  • cmatrix — консольная анимация, имитирующая «цифровой дождь» из фильма «Матрица».

  • cowsay — утилита, выводящая текст в виде «говорящей коровы».

  • tree — программа для отображения структуры каталогов в виде дерева.

  • git — распределённая система контроля версий, применяемая для ведения и синхронизации проектов - тема следующего занятия.

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

$ sudo apt remove <имя_пакета>

3.4. Пример работы с командой: утилита cmatrix

Для освоения принципов работы с командами в терминале рассмотрим наглядный пример — использование программы cmatrix. Эта утилита выводит на экран характерную «зелёную цифровую росу» из фильма «Матрица» и часто применяется в учебных целях для демонстрации работы терминала.

Запуск программы

После установки (см. предыдущий раздел) запустить программу можно командой:

$ cmatrix

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

Запущенный cmatrix
Рисунок 1. Запущенный cmatrix
Справка по cmatrix
Рисунок 2. Справка по cmatrix

Попробуйте: введите команду cmatrix в своём терминале и наблюдайте, как запускается программа. Чтобы остановить её, используйте сочетание клавиш Ctrl + C.

Прерывание выполнения программы

Чтобы прервать выполнение любой команды или приложения, запущенного в терминале, используется сочетание клавиш: Ctrl + C

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

Использование параметров команд

Большинство команд Linux принимают параметры (аргументы), которые изменяют поведение программы. Параметры указываются после имени команды и начинаются с дефиса -.

Например, в cmatrix можно изменить цвет символов с помощью параметра -C. Попробуйте выполнить:

$ cmatrix -C blue

В данном примере параметр -C (Color) сообщает программе, что следует использовать синий цвет вместо стандартного зелёного. Допустимы и другие цвета: red, yellow, white, cyan и т.д.

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

Влияние регистра символов

В Linux регистр символов имеет значение. Это правило распространяется и на команды, и на параметры, и на имена файлов.

Например, параметры -C и -cразные. Команда:

$ cmatrix -c blue

приведёт к ошибке, потому что программа cmatrix не знает параметра -c. Чтобы легче запомнить, используйте фразу: РеГиСтР ВаЖеН.

Получение справки по команде

Если вы не знаете, какие параметры поддерживает команда, воспользуйтесь встроенной справкой. Обычно для этого используются параметры -h или --help:

$ cmatrix -h

или

$ cmatrix --help

После выполнения команды на экран будет выведен список доступных параметров и их описание.

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

Если программа не имеет встроенного вывода --help, используйте системную справку man (manual pages). Это более подробная документация, встроенная в Linux:

$ man cmatrix

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

  • PageUp / PageDown — пролистывание страницы вверх и вниз;

  • стрелки ↑ и ↓ — построчная прокрутка;

  • q — выход из справки (quit).

Попробуйте: откройте справку man cmatrix, пролистайте её PageUp/PageDown и выйдите клавишей q.

Методические комментарии

Работа с параметрами и справочной системой man — фундаментальный элемент владения терминалом. Эти навыки формируют понимание структуры команд и позволяют обучающемуся самостоятельно осваивать новые инструменты.

Типичная структура любой команды в Linux:

$ <имя_команды> [параметры] [аргументы]

где: * <имя_команды> — программа, которую вы запускаете; * [параметры] — ключи, изменяющие поведение; * [аргументы] — дополнительные данные (файлы, каталоги и т.д.).

Запомните

  • Ctrl + C — безопасно прерывает выполнение любой программы.

  • РеГиСтР ВаЖеН — Linux различает прописные и строчные буквы в командах, параметрах и именах файлов.

  • -h или --help — быстрый способ получить краткую справку по команде.

  • man — основной инструмент для чтения документации и примеров использования. Используйте его при знакомстве с любой новой командой: [source,bash] ---- $ man <имя_команды> ----

Практическое задание:

  1. Запустите cmatrix и остановите программу с помощью Ctrl + C.

  2. Измените цвет символов с помощью параметра -C.

  3. Откройте справку через man cmatrix, пролистайте её PageUp/PageDown и выйдите клавишей q.

3.5. Практическая работа: использование команды cowsay

Для закрепления навыков работы в терминале попробуйте поэкспериментировать с программой cowsay. Эта консольная утилита выводит текст, который как будто «произносит» ASCII-коровка. Команда помогает научиться передавать параметры и понимать, как работает вывод в терминале.

Запуск программы

Запустите cowsay с произвольной фразой:

$ cowsay "Привет, Linux!"

Наблюдайте результат. Затем измените текст внутри кавычек и посмотрите, как меняется вывод.

Самостоятельная работа с параметрами

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

$ cowsay -h

Найдите в справке параметр, позволяющий менять изображение (флаг -f), и попробуйте несколько вариантов, например:

$ cowsay -f tux "Привет!"

или любой другой вариант из списка, который выдаёт справка.

3.6. Повышение удобства работы в терминале

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

Повтор команд из истории

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

  • стрелка ↑ — показывает предыдущую введённую команду;

  • стрелка ↓ — возвращает к более поздним командам или пустой строке.

Это особенно удобно, если нужно повторить длинную команду или внести в неё небольшие изменения.

Поиск команд в истории

Если вы хотите найти ранее введённую команду по части её текста, используйте сочетание клавиш:

Ctrl + R

После этого внизу появится приглашение:

(reverse-i-search)`

Начните вводить часть команды (например, cowsa или cmatr), и терминал автоматически найдёт последнее совпадение из истории. Чтобы подтвердить найденную команду и выполнить её, нажмите Enter. Для поиска следующего совпадения снова нажмите Ctrl + R.

Автодополнение команд и имён файлов

Клавиша Tab помогает экономить время и избегать ошибок при вводе.

  • Если вы вводите начало команды и нажимаете Tab, терминал автоматически дополняет её до полного имени. Например:

$ sudo apt ins[TAB]

превратится в:

$ sudo apt install
  • Если доступно несколько вариантов, нажмите Tab дважды — терминал выведет список возможных дополнений.

То же самое работает с путями и именами файлов:

$ cd Doc[TAB]

дополнится до:

$ cd Documents

Для самостоятельного выполнения

  1. Введите несколько разных команд подряд.

  2. Попробуйте вызвать их снова стрелками ↑ и ↓.

  3. Используйте Ctrl + R для поиска нужной команды по ключевому слову.

  4. Попробуйте дополнение с помощью клавиши Tab при вводе команд и имён папок.

3.7. Работа с каталогами и файлами

В этом разделе мы разберём основные принципы организации данных в Linux: создание каталогов и файлов, перемещение между ними, просмотр структуры, удаление и запись информации в файлы.

Для удобства откройте два окна:

  • первое — с терминалом, где вы будете выполнять команды;

  • второе — с файловым менеджером (графическим интерфейсом).

Так вы сможете наблюдать, как команды, введённые в терминале, изменяют структуру папок наглядно.

Понятие «текущий каталог» и команда cd

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

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

$ pwd
/home/student

Для перехода в другой каталог используется команда cd (change directory). Например:

$ cd Документы

После выполнения этой команды «текущий каталог» изменится на /home/student/Документы. От того, где вы сейчас находитесь, зависит результат всех операций с файлами и папками.

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

Команда mkdir (от make directory) создаёт новую папку. Создадим папку project в домашнем каталоге:

$ mkdir project

Теперь в домашней директории появится новая папка. Посмотрите на неё в окне проводника.

Вложенные папки

Перейдите в созданный каталог и создайте несколько вложенных папок:

$ cd project
$ mkdir src docs data

Чтобы сразу создать целую цепочку вложенных каталогов, используйте флаг -p:

$ mkdir -p experiments/test1/results

Теперь в проводнике вы увидите разветвлённую структуру каталогов.

folders gui nested
Рисунок 3. Папки project/src, docs, data в файловом менеджере
folders terminal nested
Рисунок 4. Вывод команд mkdir и ls в терминале

Специальные обозначения каталогов

В Linux приняты сокращённые обозначения для перемещения:

  • . — текущий каталог;

  • .. — родительский каталог (на уровень выше);

  • ~ — домашний каталог пользователя.

Примеры:

$ cd ..         # переход на уровень выше
$ cd ./data     # переход в каталог data в текущей папке
$ cd ~          # переход в домашний каталог

Абсолютные и относительные пути

  • Абсолютный путь начинается от корня файловой системы /. Пример:

$ cd /home/student/project

Такой путь универсален и не зависит от текущего каталога.

  • Относительный путь задаётся относительно текущего каталога. Пример:

$ cd ../project/data

Две точки .. обозначают «выйти на уровень выше».

Практическое задание: Перейдите в каталог project/data как через абсолютный путь, так и через относительный, и обратите внимание, что результат одинаков.

Создание файлов — команда touch

Создайте несколько пустых файлов в разных каталогах:

$ cd ~/project/src
$ touch main.py config.yaml
$ cd ../docs
$ touch readme.txt

Совет: наблюдайте за результатом в файловом менеджере — там сразу появятся новые файлы.

Просмотр структуры каталогов — команда tree

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

$ tree -L 2 ~/project
Вывод tree показывает структуру project
Рисунок 5. Вывод tree показывает структуру project, ограниченную двумя уровнями
Структура каталогов project в графическом интерфейсе.
Рисунок 6. Структура каталогов project в графическом интерфейсе

Удаление файлов и каталогов — команда rm

Команда rm (remove) удаляет файлы и папки. Попробуем удалить файл:

$ rm readme.txt

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

$ rm src
rm: cannot remove 'src': Is a directory

Чтобы удалить каталог вместе с его содержимым, используйте флаг -r (recursive):

$ rm -r src

Практическое задание: создайте временную папку с файлами, попробуйте удалить её без -r, а затем с этим флагом и проанализируйте различие.

Запись данных в файл — команды date, > и >>

Команда date выводит текущие дату и время:

$ date

Чтобы записать этот вывод в файл, используйте перенаправление >:

$ date > log.txt

Теперь в файле log.txt записана строка с текущей датой. Если добавить >>, новые данные будут дописаны в конец файла, а не перезапишут его:

$ date >> log.txt

Практическое задание: 1. Создайте файл notes.txt. 2. Добавьте в него несколько строк командой echo "текст" >> notes.txt. 3. Просмотрите содержимое через cat notes.txt.

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

Команда cat (concatenate) выводит текст файла в терминал:

$ cat log.txt

Практическое задание: откройте созданные файлы notes.txt и log.txt, убедитесь, что данные действительно записаны в них.

Комбинирование команд — операция |

Символ вертикальной черты | (называется пайп, от pipe) позволяет передавать результат одной команды на вход другой. Так можно соединять простые команды в цепочку.

Пример: вывести список файлов в текущей папке, отфильтровать только те, где встречается слово «txt», и сохранить результат в файл:

$ ls | grep txt > text_files.txt

Более сложный пример — создание файла с текущей структурой проекта, датой и фильтрацией по уровню вложенности:

$ echo "Снимок каталога project от:" > report.txt
$ date >> report.txt
$ tree -L 2 ~/project | grep -v "__pycache__" >> report.txt
$ cat report.txt

В одной строке всё это можно объединить с помощью пайпов:

$ (echo "Отчёт от:"; date; tree -L 2 ~/project) | tee report.txt

Эта команда выведет отчёт в терминал и одновременно запишет его в файл report.txt.

Итог

В этом разделе вы научились:

  • создавать каталоги и файлы;

  • перемещаться между ними;

  • использовать абсолютные и относительные пути;

  • удалять и просматривать содержимое;

  • записывать данные и комбинировать команды.

Практическое задание для закрепления:

  1. Создайте структуру каталогов с несколькими файлами.

  2. Просмотрите её через tree -L 2.

  3. Сохраните вывод в файл structure.txt.

  4. Добавьте в файл текущую дату.

  5. Просмотрите результат командой cat structure.txt.

  6. Попробуйте объединить эти шаги в одну команду с использованием | и >.

3.8. Работа с текстовым редактором nano

nano
Рисунок 7. Пример работы текстового редактора nano

Для редактирования текстовых файлов в терминале часто используется редактор nano. Он прост, удобен и подходит для большинства учебных задач.

Открытие и создание файлов

Чтобы открыть существующий файл или создать новый, выполните:

$ nano файл.txt

Если указанного файла нет, nano создаст его автоматически. После открытия вы увидите окно, разделённое на две части: в верхней отображается текст, внизу — список сочетаний клавиш.

Основные сочетания клавиш

В nano используются клавиши управления, обозначаемые символом ^ (Ctrl). Например, ^O означает «Ctrl + O».

  • Ctrl + O — сохранить файл (Write Out). После нажатия нужно подтвердить имя файла клавишей Enter.

  • Ctrl + X — выйти из редактора (Exit). Если в файле есть несохранённые изменения, редактор предложит сохранить их.

  • Ctrl + G — справка по доступным командам.

  • Ctrl + K — вырезать строку.

  • Ctrl + U — вставить ранее вырезанную строку.

  • Ctrl + W — поиск текста по файлу.

Пример работы

  1. Создайте новый файл:

$ nano hello.txt
  1. Введите в нём несколько строк текста.

  2. Нажмите Ctrl + O, затем Enter, чтобы сохранить.

  3. Нажмите Ctrl + X, чтобы выйти.

  4. Убедитесь, что файл создан:

$ cat hello.txt

Для самостоятельной работы

  1. Создайте файл about.txt и запишите в него несколько строк о себе.

  2. Сохраните файл и выйдите из редактора.

  3. Проверьте содержимое через cat about.txt.

  4. Попробуйте найти слово в тексте с помощью Ctrl + W.


Редактор nano пригодится в дальнейшем при работе с конфигурационными файлами ROS, системными настройками Linux и простыми текстовыми заметками.

4. Работа с катамараном

4.1. Подключение к катамарану

Подключение по ethernet-кабелю

Физическое подключение

Для того, чтобы начать работу с катамараном необходимо открыть крышку корпуса. Она держиться на четрырех зажимах.

close
open

Далее необходимо открутить все разъемы, кроме выключателя(разъем подписан).

korobka1
korobka2
korobka3

Для удобства можно вытащить коробку из аппарата. После этого следует открутить прозрачную крышку, чтобы получить доступ к Ethernet разъему. После чего сдедует включить катамаран.

connect to ethernet
Рисунок 8. Ethernet разъем
on
Рисунок 9. Кнопка отжата (катамаран включен)
off
Рисунок 10. Кнопка нажата (катамаран выключен)

Дождаться загрузки микрокомпьютера (примерно 30 секунд)

Настройка вашего компьютера
Настройки ip-адреса Linux
  • Нажмите на значок сети в правом верхнем углу (панель задач)

linux panel
  • Выберите "Настройки сети" (Network Settings) или "Параметры сети" (Wired/Wireless Settings)

wired connections
  • В левой панели выберите "Проводная" (Wired)

  • Нажмите на значок ⚙️ (шестеренка) рядом с активным соединением или добавьте новое, нажав на +

  • Во вкладке "IPv4" выберите "Вручную" (Manual)

    • Адрес (Address): 192.168.10.1

    • Маска сети (Netmask): обычно 255.255.255.0 или 24

manual ip
  • Далее перезапустите соединение

Также можно создать соединение при помощи команды

sudo ip addr add 192.168.10.1/24 dev enx98fc84e11988(ваш физический порт)
Настройки ip-адреса Windows

Откройте «Сетевые подключения» (ncpa.cpl) и перейдите в «Свойства» подключения по Ethernet (или другого соединения, которое соответствует вашему аппарату).

ncpa cpl
ncpa ethernet
ncpa ipv4
ncpa ipv4 set
  • В списке компонентов выберите «IP версии 4 (TCP/IPv4)» и нажмите кнопку «Свойства».

  • В открывшемся окне установите переключатель в положение «Использовать следующий IP-адрес» и введите нужное значение, например, 192.168.10.1.

  • Заполните поля:

    • IP-адрес: например, 192.168.10.1

    • Длина префикса подсети: 255.255.255.0

  • Сохраните изменения, нажав «ОК» во всех открытых окнах.

Подключение по ssh

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

ssh orangepi@192.168.10.10

Пароль: orangepi

После ввода команды введите пароль для аутентификации.

Если подключение не происходит
этот раздел мы дополним по результатам практики
Работа с файловым менеджером Nautilus

Для повышения удобства работы с файловой системой удаленного хоста, в отличие от консольного интерфейса, иногда удобно использовать графический проводник Nautilus, предустановленный в Ubuntu 24.04.

Подключение к удаленному серверу
  1. Откройте файловый менеджер Nautilus

  2. Перейдите в вкладку "Другие места" ("Other Locations")

  3. В нижней части проводника можно увидеть поле для ввода адреса сервера

ssh nautilus
  1. Чтобы передавать файлы, введите:

    sftp://[имя_пользователя]@[IP-адрес]

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

Работа с SCP (Secure Copy Protocol)

Загрузка файлов по SCP осуществляется с помощью команды scp в терминале, которая использует SSH для безопасного копирования.

Синтаксис команды

Синтаксис команды зависит от направления передачи:

Загрузка файла на сервер
scp /путь/к/локальному/файлу имя_пользователя@хост:/путь/на/сервере

Пример:

scp /home/user/document.txt admin@192.168.1.100:/var/www/
Скачивание файла с сервера
scp имя_пользователя@хост:/путь/к/файлу /путь/на/локальном/компьютере

Пример:

scp admin@192.168.1.100:/var/www/index.html /home/user/
Работа с папками

Для загрузки папки после команды scp необходимо указать опцию -r (рекурсивно).

Пример:

scp -r /путь/к/локальной/папке имя_пользователя@хост:/путь/на/сервере

После выполнения команды потребуется ввести пароль пользователя для аутентификации.

Подключение по WiFi

Подготовка

У вас должна быть создана и активна Wi-Fi сеть, к которой будет подключен компьютер.

Например, вы можете раздать интернет с вашего смартфона.

Убедитесь, что ваш компьютер подключен к указанной выше Wi-Fi сети и имеет доступ в Интернет.

Возьмите Ethernet-кабель и подключите один его конец к сетевому порту вашего компьютера, а другой — к соответствующему порту на катамаране.

Присоединитесь по ssh (терминал).

Настройка подключения к WiFi на катамаране

Для начала разберемся с настройкой сетевых соединений с помощью nmtui в Linux. Утилита nmtui (от англ. NetworkManager Text User Interface) — инструмент в ОС Linux, который предоставляет текстовый пользовательский интерфейс для управления сетевыми подключениями. Эта программа запускается в интерактивном режиме и позволяет проводить следующие действия с сетевыми соединениями:

  • удалять;

  • создавать;

  • изменять;

  • активировать и деактивировать.

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

sudo apt install network-manager

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

nmtui

В главном окне инструмента расположено меню с различными вкладками, переходя по которым, Вы можете настраивать параметры сетевых соединений. Основное управление осуществляется с помощью клавиш «Вверх» / «Вниз» / «Влево» / «Вправо» и Enter.

Для подключения катамарана к сети WiFi Вам следует открыть вкладку Activate a connection.

Окно nmtui

После чего утилита nmtui отобразит список доступных сетевых соединений.

Окно nmtui wifi

После чего остается ввести пароль от WiFi.

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

ssh orangepi@<IP-адрес_катамарана_в_сети>
Определение IP-адреса катамарана

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

nmap -sn <IP-адрес_сети>/24

Пример:

nmap -sn 192.168.1.0/24
Установка nmap

Перед использованием установите nmap:

sudo apt install nmap
Альтернативный способ поиска (GUI)

Также существует GUI-версия поиска активных пользователей в сети - Angry IP Scanner:

Скачать можно по ссылке: https://github.com/angryip/ipscan/releases/tag/3.9.2

Открытие терминала/командной строки

Linux и macOS:

Откройте приложение «Терминал» (часто можно найти сочетанием клавиш `Ctrl + Alt + T`)

Windows:

Откройте командную строку (нажмите Win+R, введите cmd и нажмите `Enter`)
Пример подключения по WiFi
ssh orangepi@192.168.0.10

Пароль: orangepi

4.2. Как раздать интернет с основного компьютера на удаленный компьютер по кабелю из ОС Windows

Для ручной настройки IP-адреса выполните следующие действия:

  • Нажмите клавиши Win + R, введите ncpa.cpl и нажмите Enter.

run ncpa cpl networks
  • Откроется окно «Сетевые подключения» со списком всех соединений.

ncpa cpl
  • Найдите Wi-Fi-подключение, которое вы хотите использовать на аппарате, и перейдите в его «Свойства».

ncpa skb wifi
  • Перейдите во вкладку «Доступ». Установите флажок «Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера» и в выпадающем списке выберите имя сетевого подключения вашего аппарата.

  • После применения настроек системой будет показано уведомление о том, что IP-адрес будет изменен на 192.168.137.1. Согласитесь с этим изменением (на следующем шаге мы его исправим).

ncpa notice
Этот адрес не подходит для нашей сети, поэтому мы зададим корректный.
  • Снова откройте «Сетевые подключения» (ncpa.cpl) и перейдите в «Свойства» подключения по Ethernet (или другого соединения, которое соответствует вашему аппарату).

ncpa cpl
ncpa ethernet
  • В списке компонентов выберите «IP версии 4 (TCP/IPv4)» и нажмите кнопку «Свойства».

ncpa ipv4
  • В открывшемся окне установите переключатель в положение «Использовать следующий IP-адрес» и введите нужное значение, например, 192.168.10.1.

ncpa ipv4 set
  • Сохраните изменения, нажав «ОК» во всех открытых окнах.

  • Убедитесь, что соединение установлено.

5. Домашнее задание

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

  1. Запустить компьютер с Linux и убедиться, что компьютер имеет доступ к интернет

  2. В терминале Linux создать папку (например SMTU)

  3. Перейти в неё и выполнить команду (о том что это за команда мы узнаем на следующем занятии):

    $ git clone http://sdb.smtu.ru/gitlab/marinerobotics/lesson-01.git
  4. Ожидаемый результат работы команды:

    student@student:~/SMTU$ git clone http://sdb.smtu.ru/gitlab/marinerobotics/lesson-01.git
    Cloning into 'lesson-01'...
    warning: redirecting to https://sdb.smtu.ru/gitlab/marinerobotics/lesson-01.git/
    remote: Enumerating objects: 12, done.
    remote: Counting objects: 100% (12/12), done.
    remote: Compressing objects: 100% (9/9), done.
    remote: Total 12 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
    Receiving objects: 100% (12/12), 168.64 KiB | 923.00 KiB/s, done.
  5. В результате вы должны будете получить к себе на компьютер папку "lesson-01"

    student@student:~/SMTU$ ls
    lesson-01

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

6. Ссылки на дополнительные материалы

В рамках одного занятия возможно только познакомиться с Linux и изучить только самые основные команды. Если вы планируете в дальнейшем работать с Linux, то настоятельно рекомендуем вам пройти подготовку по курсу LPIC (LPI - Linux Professional Institute).

Замечательный человек - Кирилл Семаев, подготовил для нас курс по подготовке к такой сертификации. И пусть сам сертификат получать не обязательно, однако пройти курс, чтобы начать прилично разбираться в Linux - стоит.

Видеокурс "LPIC 101"

https://www.youtube.com/playlist?list=PLmxB7JSpraiep6kr802UDqiAIU-76nGfc

https://www.youtube.com/playlist?list=PLmxB7JSpraiep6kr802UDqiAIU-76nGfc

Конспекты к курсу

https://github.com/ksemaev

https://github.com/ksemaev