Appearance
Терминал без магии
Эта страница — минимальный маршрут перед ПР01. Здесь не требуется помнить все команды: важно научиться понимать, где выполняется команда, какой процесс она запускает и по какому наблюдению решать, что всё сработало.
Терминал, оболочка, команда и процесс
| Понятие | Что это | Пример |
|---|---|---|
| Терминал | окно, которое показывает ввод и вывод | GNOME Terminal, встроенный терминал VS Code |
| Оболочка | программа, разбирающая введённую строку | Bash, fish |
| Команда | имя программы и её аргументы | ros2 node list |
| Процесс | уже запущенный экземпляр программы | работающая ROS-нода |
Приглашение вида student@robot:~/robotics_ws$ печатает оболочка. Символ $ показывает место ввода; его не нужно копировать из документации.
text
student@robot:~/robotics_ws$ ros2 node list
│ │ │ └─ аргументы команды
│ │ └─ текущий каталог
│ └─ имя компьютера
└─ пользовательСначала ответьте на три вопроса
bash
whoami # от имени какого пользователя работаем?
pwd # в каком каталоге находимся?
printf '%s\n' "$SHELL" # какая оболочка назначена пользователю?pwd особенно важна перед colcon build, git status, удалением или перемещением файлов. Одна и та же команда в разных каталогах может сделать разное.
Пути: абсолютные и относительные
text
/
└── home
└── student
└── robotics_ws ← ~/robotics_ws
├── src ← ./src, если мы в robotics_ws
├── build
├── install
└── log/home/student/robotics_ws— абсолютный путь от корня/;src/my_package— относительный путь от текущего каталога;.— текущий каталог,..— родительский;~— домашний каталог текущего пользователя;- имена чувствительны к регистру:
Robotиrobotразличаются.
bash
cd ~/robotics_ws
ls
ls -la src
cd src
cd ..Нажимайте Tab для дополнения пути. Если в имени есть пробелы, заключайте путь в кавычки: cd "каталог с пробелами".
Читать и искать, не изменяя
bash
ls -la
find src -maxdepth 2 -type f
file src/my_package/package.xml
sed -n '1,80p' src/my_package/package.xml
grep -Rni --include='*.py' 'create_publisher' srcПеред неизвестной командой откройте краткую или полную справку:
bash
ros2 topic --help
man findДля выхода из man нажмите q. Стрелка вверх возвращает предыдущую команду; Ctrl+R ищет её в истории.
Поток данных: stdin, stdout, stderr
У процесса обычно есть стандартный ввод, обычный вывод и поток ошибок. Конвейер | передаёт обычный вывод одной программы на вход следующей.
bash
ros2 topic list -t | grep sensor_msgs
ros2 doctor --report > doctor.txt
ros2 doctor --report 2> doctor-errors.txt> перезаписывает файл, >> дописывает в конец. Перед перенаправлением проверьте путь через pwd и существование файла через ls.
Код завершения — первый автоматический тест
bash
ros2 pkg prefix turtlesim
printf 'exit=%s\n' "$?"Код 0 обычно означает успешное завершение, ненулевой код — ошибку или отрицательный результат проверки. Текст «похож на успех» не заменяет проверку кода завершения.
Для связанных шагов используйте &&: следующая команда запустится только после успешной предыдущей.
bash
colcon build --symlink-install && source install/setup.bashПроцессы и остановка
bash
ps -ef | grep '[t]urtlesim'
jobsCtrl+Cпросит текущий процесс завершиться;Ctrl+Zприостанавливает его, но не завершает;jobs,fgиbgуправляют задачами текущей оболочки;- перед
kill -9сначала выясните PID и попробуйте обычное завершение.
Для первой ROS-демонстрации удобнее открыть три терминала: один процесс в каждом и третий терминал для наблюдения графа.
Права: не лечите всё через sudo
sudo запускает команду с повышенными правами. Оно нужно для установки системных пакетов, но не для colcon build, запуска ROS-нод и редактирования файлов в ~/robotics_ws.
bash
ls -ld ~/robotics_ws
idЕсли обычная сборка требует sudo, сначала проверьте владельца файлов. Не используйте рекурсивные chmod 777 и chown без точного понимания цели.
Bash — общий язык курса, fish — удобный интерфейс
Все команды в практиках и CI проверяются в Bash. Это делает скрипты одинаковыми на машине студента и в контейнере. Fish можно запускать как интерактивную оболочку ради подсветки, автодополнения и подсказок, но его синтаксис отличается от Bash.
Файл ROS setup.bash нельзя напрямую исполнять в fish. Для учебной работы откройте Bash и только затем подключите окружение:
bash
bash
source /opt/ros/lyrical/setup.bashНе меняйте login-shell в первую неделю: сначала убедитесь, что Bash-маршрут полностью работает. Настройка fish приведена на странице «Рабочее место разработчика».
Пятиминутная самопроверка
- Создайте
~/terminal-lab, перейдите в него и докажите это черезpwd. - Создайте подкаталог
evidenceкомандойmkdir -p. - Сохраните первые строки
/etc/os-releaseвevidence/os.txt. - Найдите слово
Ubuntuчерез конвейер сgrep. - Покажите код завершения успешного и неуспешного поиска.
- Объясните, какие команды только читали данные, а какие изменили файловую систему.
После этого переходите к установке ROS 2 и ПР01.