Семинар 7 сентября: терминал, компиляция и CMake
Навигация и работа с файлами в терминале, флаги команд, конвейеры и перенаправление вывода, установка пакетов через apt, компиляция clang++ и сборка проекта через CMake.
Неофициальный онлайн-семинар для тех, кто впервые работает в терминале. Цель — к первой лабе уверенно ходить по файловой системе, компилировать программу вручную и собирать проект через CMake, потому что именно так устроены заготовки лаб в GitHub Classroom.
Команда состоит из имени, флагов и аргументов: ls -a /home. Короткие флаги пишутся через один дефис (-a), длинные — через два (--all). Полный список флагов любой команды даёт man <команда>, выход из справки — клавиша q.
1. Навигация и просмотр
| Команда | Что делает |
|---|---|
pwd | показать путь к текущей директории |
ls | содержимое текущей директории |
ls -a | то же, включая скрытые файлы (имена начинаются с точки) |
cd <путь> | перейти в другую директорию |
cd .. | вернуться на уровень выше |
cat <файл> | показать содержимое файла |
clear | очистить терминал |
man <команда> | справка по команде и её флагам |
2. Файлы и директории
| Команда | Что делает |
|---|---|
touch <файл> | создать пустой файл |
mkdir <имя> | создать директорию |
cp <файл> <папка> | скопировать файл в папку |
mv <файл> <папка> | переместить файл в папку |
mv <файл> <новое имя> | переименовать |
rm <файл> | удалить файл |
rm -r <директория> | удалить директорию со всем содержимым |
echo <текст> > <файл> | записать текст в файл |
rm и rm -r удаляют сразу и навсегда, подтверждения нет. Перед rm -r проверьте через pwd и ls, где вы находитесь и что собираетесь удалять.
3. Конвейеры и перенаправление
Символ | передаёт вывод одной команды на вход другой, а > записывает вывод в файл вместо экрана:
cat student.txt | sort | head -n 3 > students-processed.txtОткрыть student.txt, отсортировать строки, взять первые три и записать результат в students-processed.txt. Файл создаётся или перезаписывается целиком.
cat student.txt | grep aВывести только те строки файла, которые содержат букву a.
Так из маленьких команд собираются обработчики данных: каждая делает одно действие, а конвейер соединяет их в цепочку.
4. Пакеты и права
| Команда | Что делает |
|---|---|
sudo <команда> | выполнить команду от суперпользователя |
sudo apt update | обновить список доступных пакетов |
sudo apt install <пакеты> | установить пакеты |
Установка чего-либо в систему требует прав администратора, поэтому apt запускается через sudo. Перед первой установкой обновите список пакетов.
5. Компиляция и сборка
Скомпилировать один файл и запустить результат:
clang++ main.cpp # результат — файл a.out в текущей директории
./a.out # запустить: ./ означает «из текущей директории»
clang++ -o hello main.cpp # назвать исполняемый файл hello
./helloПроект из нескольких файлов собирается через CMake, который по описанию проекта сам вызывает компилятор в нужном порядке:
cmake -B build # подготовить сборку в папке build
cmake --build build # собратьПервая команда читает CMakeLists.txt и создаёт папку build с файлами сборки, вторая компилирует и линкует программу. После правок в коде достаточно повторять только вторую команду.
Частые ошибки
- Запуск программы по имени без
./. Терминал ищет команды в системных папках, а не в текущей; для локального файла нужен явный путь. cdв несуществующую или неправильно написанную папку. Проверяйтеlsперед переходом; регистр букв в именах важен.>вместо|. Стрелка пишет в файл и перезаписывает его, вертикальная черта передаёт вывод следующей команде.apt installбезsudo. Без прав администратора установка не сработает.- Правка кода и запуск старого исполняемого файла. После изменений нужно пересобрать:
clang++заново илиcmake --build build.
Мини-тренажёр
- Что выведет
pwdсразу послеcd .., если вы были в/home/user/lab1? - Как создать папку
src, а в ней пустой файлmain.cpp, двумя командами? - Что делает
cat names.txt | sort | head -n 5? - Чем отличаются
clang++ main.cppиclang++ -o app main.cpp? - Какие две команды собирают проект с
CMakeLists.txtс нуля?
Ответы
/home/user.mkdir srcиtouch src/main.cpp.- Читает файл, сортирует строки и печатает первые пять.
- Первая создаёт исполняемый файл
a.out, вторая — с именемapp. cmake -B build, затемcmake --build build.
Шпаргалка
| Задача | Команда |
|---|---|
| Где я | pwd |
| Что здесь лежит | ls, ls -a |
| Перейти | cd <путь>, cd .. |
| Создать | touch <файл>, mkdir <папка> |
| Скопировать, переместить, переименовать | cp, mv |
| Удалить | rm <файл>, rm -r <папка> |
| Показать файл | cat <файл> |
| Конвейер и запись в файл | cmd1 | cmd2, cmd > файл |
| Фильтр и сортировка | grep <текст>, sort, head -n N |
| Установить пакет | sudo apt update, sudo apt install <пакет> |
| Скомпилировать | clang++ -o hello main.cpp, запуск ./hello |
| Собрать через CMake | cmake -B build, cmake --build build |
Актуальная версия: https://m3105.ru/notes/osnovy-programmirovaniya/seminar-7-sentyabrya-terminal-kompilyatsiya-i-cmake
Проверь себя
8 вопросов по материалу лекции. Результаты хранятся только в вашем браузере.
8 вопросов о командах терминала, конвейерах, компиляции clang++ и сборке через CMake.
- 8 вопросов
- Результат виден сразу после каждого ответа
- Порядок вопросов случайный

Комментарии0
Пока никто ничего не написал.
Войдите, чтобы оставить комментарий