✅ Решения заданий

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

⚡ Ключевые ответы

# Задание 1
find /opt -type f -name "*.txt"
locate os-release
#!/bin/bash
for i in {1..10}; do echo $i; done

# Задание 2
git checkout -b new-branch
git push origin new-branch
git add deleted-file
git commit -m "Remove file"
git push origin new-branch
# Добавить имя файла в .gitignore → git status покажет что не отслеживается

Ответы на экспресс-опрос

Lecture 9

  1. Команда для поиска файлов: find — ищет в реальной файловой системе рекурсивно.
  2. Параметры find: -name "pattern" (по имени), -type f/d/l (по типу), -size +1M (по размеру), -mtime -5 (по дате изменения), -exec CMD {} \; (выполнить команду).
  3. Быстрый поиск по базе: locate.
  4. locate vs find: locate ищет по базе данных (быстро, но может быть устаревшим); find сканирует диск прямо сейчас (медленнее, всегда актуально).
  5. Обновить базу locate: sudo updatedb.
  6. Цикл for: for i in {1..5}; do echo $i; done
  7. Цикл while: COUNT=1; while [ $COUNT -le 5 ]; do echo $COUNT; ((COUNT++)); done

Lecture 10

  1. Ветви в Git: набор коммитов в хронологическом порядке; позволяют изолировать изменения и работать параллельно.
  2. Операции с ветками: создать (git branch name), переключиться (git checkout name), создать и переключиться (git checkout -b name), удалить (git branch -d name), переименовать (git branch -m old new).
  3. Переключиться на ветку: git checkout branch-name или git switch branch-name (современный синтаксис).
  4. .gitignore: файл со списком шаблонов, которые Git игнорирует. Шаблоны: *.log — все .log; node_modules/ — директория; !important.log — исключение из правила.
  5. clone vs fork: clone — локальная копия репозитория, нужны права для push; fork — копия на GitHub, можно пушить и отправлять Pull Request в оригинал.
  6. Объединить ветки: git merge branch-name (из основной ветки) или git rebase main (линейная история).

Решение задания 1

# 1. Найти все .txt файлы в /opt
find /opt -type f -name "*.txt"

# 2. Найти путь к файлу os-release
locate os-release

# 3. Bash-скрипт с циклом for (вариант 1)
#!/bin/bash
for i in {1..10}; do
    echo $i
done

# Вариант 2 (C-стиль)
#!/bin/bash
for ((i = 1; i <= 10; i++)); do
    echo $i
done

Решение задания 2

# 1. Создать новую ветку и переключиться на неё
git checkout -b my-feature

# 2. Отправить новую ветку в удалённый репозиторий
git push origin my-feature

# 3. Удалить файл и зафиксировать изменения
rm unwanted-file.txt
git add unwanted-file.txt    # или: git rm unwanted-file.txt
git commit -m "Remove unwanted file"

# 4. Отправить ветку с изменениями
git push origin my-feature
# В коммите на GitHub увидите: "Remove unwanted file" с пометкой удаления

# 5. Добавить файл в .gitignore
echo "secret.env" >> .gitignore
touch secret.env
git status
# => secret.env показан как "ignored" (не отслеживается)