✅ Решения и ответы
⚡ Ключевые ответы
>>— дописывает в конец файла (не перезаписывает)tar -czvf— создать (-c), gzip (-z), verbose (-v), файл (-f)- merge conflict — несовместимые изменения одного файла в разных ветках
- monorepo — несколько проектов в одном репозитории
Ответы: Lecture 17 (урок 27)
Вопрос 1. Переменные в testscript.sh
EXTPATH=/opt/newfolder/— путь для распаковки архиваARCHIVE=/tmp/Arh/Arh-$(date '+%d-%m-%y').tar.gz— имя файла архива с датойi— внешний цикл (директории Dir1..Dir5)j— внутренний цикл (файлы File1..File5 в каждой директории)
Вопрос 2. Что делает внутренний цикл for j in {1..5}?
Внутренний цикл выполняется 5 раз для каждой директории Diri. На каждой итерации создаётся файл File$j с именем, содержащим текущее время (через date +'%H-%M-%S'), и скрипт ждёт 5 секунд (sleep 5). Итого создаётся 5 файлов в каждой из 5 директорий = 25 файлов.
Вопрос 3. Как создаётся имя архива в $ARCHIVE?
Имя формируется через подстановку команды: ARCHIVE=/tmp/Arh/Arh-$(date '+%d-%m-%y').tar.gz. Часть $(date '+%d-%m-%y') заменяется текущей датой в формате день-месяц-год, например Arh-20-04-23.tar.gz.
Вопрос 4. Почему используется >> в команде tar?
Оператор >> дописывает (appends) вывод в конец файла ArhList.txt, не перезаписывая его. Это позволяет накапливать историю архивирований. В отличие от >, который создаёт файл заново каждый раз.
Вопрос 5. Что делает tar -czvf?
-c— create (создать архив)-z— сжать через gzip-v— verbose (показывать список добавляемых файлов)-f— указать имя файла архива (следующий аргумент)
Вопрос 6. Какие файлы архивируются и распаковываются?
Архивируются содержимое директорий Dir1..Dir5 из /home (25 файлов с временными метками). Архив создаётся в /tmp/Arh/. Распаковывается тот же архив в директорию /opt/newfolder/ с сохранением структуры (tar -xzf ... -C $EXTPATH).
Ответы: Lecture 18 (урок 28)
Вопрос 7. Что такое merge conflict?
Merge conflict — ситуация при слиянии веток, когда Git не может автоматически объединить изменения, потому что обе ветки изменили одну и ту же часть файла несовместимым образом. Git помечает конфликтующие участки маркерами <<<<<<<, =======, >>>>>>>.
Вопрос 8. Виды merge conflict
- Конфликты файлов — несовместимые изменения одного файла в разных ветках
- Конфликты слияния директорий — изменения в структуре директорий (переименование, перемещение)
Вопрос 9. Как разрешить merge conflict?
git status— найти конфликтующие файлыgit log --merge— просмотреть коммиты, участвующие в конфликтеgit diff— увидеть различия- Открыть файл, вручную выбрать нужную версию (удалить маркеры)
- Или:
git mergetool— открыть визуальный инструмент git add <файл>— пометить конфликт разрешённымgit merge --continue— завершить слияние
Вопрос 10. Как избежать merge conflict в команде?
- Чаще делать
git pullс основной ветки - Небольшие, частые коммиты
- Разделение зон ответственности
- Обсуждение изменений в общих файлах перед реализацией
Вопрос 11. Что такое monorepo?
Monorepo — подход к управлению кодом, при котором несколько проектов или компонентов хранятся в одном репозитории вместо множества отдельных репозиториев.
Вопрос 12. Преимущества monorepo
- Упрощённая коллаборация — все изменения видны централизованно
- Единый поиск по всему коду
- Логическая группировка связанных компонентов
Вопрос 13. Недостатки monorepo
- Большой размер репозитория
- Длительное время клонирования
- Выше вероятность конфликтов при работе большой команды
Решение задания: мониторинг дискового пространства
#!/bin/bash
MY_DIRECTORIES="/home /var/log"
echo "Top Ten Disk Space Usage"
for DIR in $MY_DIRECTORIES
do
echo "The $DIR Directory:"
du -S $DIR 2>/dev/null |
sort -rn
done
exit
Пояснение:
MY_DIRECTORIES="/home /var/log"— список директорий через пробелfor DIR in $MY_DIRECTORIES— итерация по словам в строкеdu -S $DIR— показать размер$DIRи её поддиректорий2>/dev/null— скрыть ошибки (нет доступа к некоторым поддиректориям)sort -rn— числовая сортировка от большего к меньшему