Урок 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
Безопасная отмена коммита через создание нового коммита-отката. Не меняет историю. Подходит для публичных веток.