Глава 1. Основы Linux
1. Цель занятия и обзор плана занятия
Цель данного занятия — познакомить обучающихся с основами работы в операционной системе Linux Ubuntu 24.04 LTS и сформировать практические навыки, необходимые для дальнейшего освоения инструментов робототехники и систем технического зрения.
После завершения занятия обучаемый должен уметь:
-
установить операционную систему Linux Ubuntu 24.04 LTS на компьютер или виртуальную машину;
-
выполнять базовые команды в терминале;
-
создавать и редактировать файлы и каталоги;
-
осуществлять подключение к удалённым устройствам с использованием протокола SSH.
Овладение этими навыками создаёт фундамент для всех последующих тем курса, поскольку среда Linux является основной рабочей платформой для систем ROS (Robot Operating System) и других инструментов, применяемых при разработке робототехнических комплексов.
1.1. Обзор плана занятия
В ходе занятия рассматриваются следующие этапы:
-
Теоретические сведения - будут изучены основные сведения об операционных системах, об операционной системе Linux и конкретно об Linux Ubuntu.
-
Установка Ubuntu Linux 24.04 LTS Подготовка установочного носителя, выбор режима установки (основная система или dual boot), первичная настройка и проверка работы окружения.
-
Основы работы в терминале Ознакомление с интерфейсом командной строки, выполнение базовых команд (
ls,cd,pwd,mkdir,rm,cp,mv,cat,nano,echoи др.). -
Работа с файлами и каталогами Создание и удаление файлов и папок, перемещение и копирование данных, навигация по файловой системе.
-
Редактирование текстовых файлов Использование базовых консольных редакторов, таких как
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
-
Перейдите на официальный сайт Ubuntu: https://ubuntu.com/download/desktop
-
Найдите версию Ubuntu 24.04 LTS и нажмите кнопку "Download"
-
Файл с именем
ubuntu-24.04.x-desktop-amd64.isoбудет загружен на ваш компьютер. Запомните, куда он сохранился (обычно в папку "Загрузки")
Установка VirtualBox
-
Перейдите на официальный сайт VirtualBox: https://www.virtualbox.org/wiki/Downloads
-
Нажмите на ссылку для "Windows hosts", если у вас ОС Windows. Для macOS "OS X hosts"
-
Запустите загруженный установочный файл и следуйте инструкциям мастера установки. Можно оставлять все настройки по умолчанию и нажимать "Next", "Yes", "Install"
Настройка VirtualBox и установка Ubuntu
Создание виртуальной машины
-
Нажмите на синюю кнопку "Создать" (или "New")
-
В открывшемся окне:
-
Имя:
ubuntu -
Образ ISO: путь до iso файла скачанного ранее
-
Настройка виртуального оборудования
-
Установите виртуальное оборудование основную память и число ЦПУ в рекомендованном пределе (в зеленой зоне)
-
Для Ubuntu 24.04 рекомендуется не менее 4096 МБ (4 ГБ)
Настройка Ubuntu
Выбор типа установки
-
Вам будет предложено выбрать между Интерактивной установкой ("Interactive installation") и Автоматической установкой ("Automated Installation")
-
Выберите Интерактивный вариант (стандартный)
Выбор параметров установки
-
Вам будет предложено выбрать между параметрами Выбор по умолчанию ("Default selection") и Расширенный выбор ("Extended selection")
-
Выберите "Выбор по умолчанию" - включает в себя основные элементы для начала работы
Настройка диска
-
На ВМ Ubuntu будет единственной операционной системой
-
Выберите "Стереть диск и установите Ubuntu" ("Erase disk and install Ubuntu")
Обновление системы
-
Нажмите CTRL+ALT+T, чтобы открыть окно терминала (или щелкните значок терминала на боковой панели)
-
Введите:
sudo apt update(при необходимости введите пароль)
-
Чтобы применить обновления, введите:
sudo apt upgrade(при необходимости введите пароль)
-
Введите
Y, затем нажмитеENTERдля подтверждения завершения процесса обновления
Дополнительно: Установка Guest Additions
-
В верхней панели VirtualBox выберите пункт "Устройства"
-
Выберите "Подключить образ Дополнительной гостевой ОС…"
-
В панели задач появится диск, выберете его
-
Нажмите CTRL+ALT+T, чтобы открыть окно терминала
-
Введите:
sudo apt install bzip2 tar(при необходимости введите пароль)
-
Закройте терминал
-
Запустите программу ("Run Software")
Дождитесь завершения программы и завершите работу ubuntu
Перезапустите виртуальную машину.
Настойка соединения между ОС
-
Нажмите правой кнопкой мыши по образу ubuntu и выберете "Настроить…"
-
Перейдите в раздел "Сеть"
-
Добавьте новый адаптер. Перейдите в пункт "Адаптер 2" → "Тип подключения" → "Виртуальный адаптер". "Неразборчивый режим" переключите с "Запретить" на "Разрешить всё".
-
Созраните изменения нажав на "ОК"
Проверьте, что настройки адаптера автоматические и включен DHCP сервер.
Далее запускаем виртуальную машину и проверяем наличия виртального ethernet адаптера.
На Linux:
$ ifconfig # (нужно установить net-tools) sudo apt install net-tools
# либо
$ ip a # Советую исппользовать первый вариант. Более наглядный вид всех доступных интерфейсов
На 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 существует несколько способов запустить терминал:
-
С помощью комбинации
Ctrl + Alt + T -
Через главное меню (аналог «Пуска»):
-
Нажмите клавишу Super (на большинстве клавиатур она обозначена логотипом Windows).
-
В появившемся поисковом поле начните вводить слово
TerminalилиТерминал. -
В результатах поиска выберите приложение Терминал (обычно сопровождается значком чёрного экрана с курсором).
-
-
Через контекстное меню рабочего стола: щёлкните правой кнопкой мыши на свободной области рабочего стола и выберите пункт Открыть в терминале (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
После запуска экран терминала начнёт заполняться движущимися зелёными символами. Программа будет работать до тех пор, пока вы её не остановите вручную.
Рисунок 1. Запущенный 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 <имя_команды> ----
Практическое задание:
-
Запустите
cmatrixи остановите программу с помощьюCtrl + C. -
Измените цвет символов с помощью параметра
-C. -
Откройте справку через
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
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
Теперь в проводнике вы увидите разветвлённую структуру каталогов.
Рисунок 3. Папки project/src, docs, data в файловом менеджере
|
Рисунок 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
Рисунок 5. Вывод tree показывает структуру 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.
Итог
В этом разделе вы научились:
-
создавать каталоги и файлы;
-
перемещаться между ними;
-
использовать абсолютные и относительные пути;
-
удалять и просматривать содержимое;
-
записывать данные и комбинировать команды.
Практическое задание для закрепления:
-
Создайте структуру каталогов с несколькими файлами.
-
Просмотрите её через
tree -L 2. -
Сохраните вывод в файл
structure.txt. -
Добавьте в файл текущую дату.
-
Просмотрите результат командой
cat structure.txt. -
Попробуйте объединить эти шаги в одну команду с использованием
|и>.
3.8. Работа с текстовым редактором 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— поиск текста по файлу.
Пример работы
-
Создайте новый файл:
$ nano hello.txt
-
Введите в нём несколько строк текста.
-
Нажмите
Ctrl + O, затемEnter, чтобы сохранить. -
Нажмите
Ctrl + X, чтобы выйти. -
Убедитесь, что файл создан:
$ cat hello.txt
Для самостоятельной работы
-
Создайте файл
about.txtи запишите в него несколько строк о себе. -
Сохраните файл и выйдите из редактора.
-
Проверьте содержимое через
cat about.txt. -
Попробуйте найти слово в тексте с помощью
Ctrl + W.
Редактор nano пригодится в дальнейшем при работе с конфигурационными файлами ROS, системными настройками Linux и простыми текстовыми заметками.
4. Работа с катамараном
4.1. Подключение к катамарану
Подключение по ethernet-кабелю
Физическое подключение
Для того, чтобы начать работу с катамараном необходимо открыть крышку корпуса. Она держиться на четрырех зажимах.
|
|
Далее необходимо открутить все разъемы, кроме выключателя(разъем подписан).
|
|
|
Для удобства можно вытащить коробку из аппарата. После этого следует открутить прозрачную крышку, чтобы получить доступ к Ethernet разъему. После чего сдедует включить катамаран.
Рисунок 8. Ethernet разъем
|
Рисунок 9. Кнопка отжата (катамаран включен)
|
Рисунок 10. Кнопка нажата (катамаран выключен)
|
Дождаться загрузки микрокомпьютера (примерно 30 секунд)
Настройка вашего компьютера
Настройки ip-адреса Linux
-
Нажмите на значок сети в правом верхнем углу (панель задач)
-
Выберите "Настройки сети" (Network Settings) или "Параметры сети" (Wired/Wireless Settings)
-
В левой панели выберите "Проводная" (Wired)
-
Нажмите на значок ⚙️ (шестеренка) рядом с активным соединением или добавьте новое, нажав на
+ -
Во вкладке "IPv4" выберите "Вручную" (Manual)
-
Адрес (Address):
192.168.10.1 -
Маска сети (Netmask): обычно
255.255.255.0или24
-
-
Далее перезапустите соединение
Также можно создать соединение при помощи команды
sudo ip addr add 192.168.10.1/24 dev enx98fc84e11988(ваш физический порт)
Настройки ip-адреса Windows
Откройте «Сетевые подключения» (ncpa.cpl) и перейдите в «Свойства» подключения по Ethernet (или другого соединения, которое соответствует вашему аппарату).
|
|
|
|
-
В списке компонентов выберите «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.
-
Откройте файловый менеджер Nautilus
-
Перейдите в вкладку "Другие места" ("Other Locations")
-
В нижней части проводника можно увидеть поле для ввода адреса сервера
-
Чтобы передавать файлы, введите:
sftp://[имя_пользователя]@[IP-адрес]
После подключения вы сможете работать с файлами на удаленном компьютере через графический интерфейс.
Работа с SCP (Secure Copy Protocol)
Загрузка файлов по SCP осуществляется с помощью команды scp в терминале, которая использует SSH для безопасного копирования.
Подключение по 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 отобразит список доступных сетевых соединений.
После чего остается ввести пароль от WiFi.
Чтобы подключиться к катамарану по SSH, используйте команду:
ssh orangepi@<IP-адрес_катамарана_в_сети>
Определение IP-адреса катамарана
Для поиска IP-адреса катамарана в сети используйте команду:
nmap -sn <IP-адрес_сети>/24
Пример:
nmap -sn 192.168.1.0/24
Альтернативный способ поиска (GUI)
Также существует GUI-версия поиска активных пользователей в сети - Angry IP Scanner:
Скачать можно по ссылке: https://github.com/angryip/ipscan/releases/tag/3.9.2
4.2. Как раздать интернет с основного компьютера на удаленный компьютер по кабелю из ОС Windows
Для ручной настройки IP-адреса выполните следующие действия:
-
Нажмите клавиши
Win + R, введитеncpa.cplи нажмитеEnter.
-
Откроется окно «Сетевые подключения» со списком всех соединений.
-
Найдите Wi-Fi-подключение, которое вы хотите использовать на аппарате, и перейдите в его «Свойства».
-
Перейдите во вкладку «Доступ». Установите флажок «Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера» и в выпадающем списке выберите имя сетевого подключения вашего аппарата.
-
После применения настроек системой будет показано уведомление о том, что IP-адрес будет изменен на
192.168.137.1. Согласитесь с этим изменением (на следующем шаге мы его исправим).
Этот адрес не подходит для нашей сети, поэтому мы зададим корректный.
-
Снова откройте «Сетевые подключения» (
ncpa.cpl) и перейдите в «Свойства» подключения по Ethernet (или другого соединения, которое соответствует вашему аппарату).
-
В списке компонентов выберите «IP версии 4 (TCP/IPv4)» и нажмите кнопку «Свойства».
-
В открывшемся окне установите переключатель в положение «Использовать следующий IP-адрес» и введите нужное значение, например,
192.168.10.1.
-
Сохраните изменения, нажав «ОК» во всех открытых окнах.
-
Убедитесь, что соединение установлено.
5. Домашнее задание
Для того, чтобы закрепить навыки и попасть в группу по работе над курсом вам нужно:
-
Запустить компьютер с Linux и убедиться, что компьютер имеет доступ к интернет
-
В терминале Linux создать папку (например SMTU)
-
Перейти в неё и выполнить команду (о том что это за команда мы узнаем на следующем занятии):
$ git clone http://sdb.smtu.ru/gitlab/marinerobotics/lesson-01.git -
Ожидаемый результат работы команды:
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. -
В результате вы должны будете получить к себе на компьютер папку "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 |