📖 Повторение — Summary Session 8

К оглавлению урока

⚡ Краткое резюме

Урок 18: 4 практических задачи с bash-скриптами. Шебанг #!/bin/bash. Циклы for и while. Условие if [ -d "$FILE" ]. Параметры $1, $#, $RANDOM.

Урок 19: git merge = сохраняет историю + merge commit; git rebase = линейная история, но переписывает хэши. Золотое правило: rebase только на личных ветках. git revert = безопасная отмена.

Summary Session 8 — повторение материала Lecture 11 (занятие 18: скрипты) и Lecture 12 (занятие 19: merge/rebase).

Урок 18 — Работа со скриптами

Подробный материал: Занятие 18: Работа со скриптами

Что такое скрипт

Скрипт — небольшая программа; последовательность автоматических действий. Каждый bash-скрипт начинается с шебанга #!/bin/bash.

Задача 1 — скрипт, напоминающий изученные команды

Скрипт script_NAME.sh выводит приветствие, текущую директорию (pwd), процессы (ps -ef), дату, ошибки из лога, OS-release, количество строк (wc -l), последние строки (tail -5), поле из /etc/passwd через awk.

Задача 2 — скрипт создания директорий с for и while

Два варианта скрипта, который создаёт директории и копирует файлы с указанием даты. Переменная DATE=`date '+%d-%m-%y'`, цикл for i in {1..5}, sleep для задержки.

Задача 3 — проверка файл/директория

Скрипт проверяет, является ли объект файлом или директорией: if [ -d "$FILE" ] / else / fi.

Задача 4 — генерация файлов через $1 и $RANDOM

Скрипт принимает количество файлов аргументом $1. Если аргумент не передан — exit 1. Имена файлов генерируются через date + $RANDOM. Содержимое — из /dev/urandom.

ДЗ 18: permission_checker.sh

Скрипт на сервере linux.itcareerhub.de, который получает список файлов в /opt/ВАШАГРУППА и для файлов с расширением .sh добавляет права на исполнение (chmod +x).

Урок 19 — Merge и rebase

Подробный материал: Занятие 19: Merge и rebase

git merge

Объединяет ветки. Создаёт merge commit, сохраняя историю обеих веток.

git checkout main
git merge feature

git rebase

Переносит коммиты текущей ветки поверх другой. История становится линейной, но хэши коммитов переписываются.

git checkout feature
git rebase main

Золотое правило rebase

Никогда не применять rebase к публичным (общедоступным) веткам. Перед rebase: «Кто-нибудь ещё работает с этой веткой?». Если да — используйте merge.

git commit --amend

Изменить последний коммит без создания нового. Опасно, если коммит уже запушен (изменяет хэш).

git reset (--soft / --mixed / --hard)

  • --soft — только перемещает HEAD; изменения в staging
  • --mixed — перемещает HEAD и сбрасывает staging; изменения в рабочем каталоге
  • --hard — всё сбрасывает; изменения удаляются безвозвратно

git checkout

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

git revert

Безопасная отмена коммита через создание нового коммита-отката. Не меняет историю. Подходит для публичных веток.