📖 Повторение: занятия 15 и 16

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

⚡ Ключевые концепции

  • find — поиск в реальной ФС, рекурсивно; locate — по базе данных, быстро.
  • Обновить БД locate: sudo updatedb.
  • Цикл for: for i in {1..5}; do echo $i; done.
  • Цикл while: while [ $COUNT -le 5 ]; do ...; ((COUNT++)); done.
  • Ветка Git = набор коммитов. Создать+переключиться: git checkout -b feature.
  • .gitignore — шаблоны файлов, которые Git не отслеживает.
  • git stash — временно убрать незакоммиченные изменения.

Lecture 9 — find, locate и bash-скрипты с циклами

Полный материал: → Занятие 15: Теория

Команда find

Поиск файлов и каталогов в реальной файловой системе. Работает рекурсивно, результат всегда актуален.

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

# Найти директории
find /home -type d -name "backup"

# Найти файлы больше 1MB
find / -size +1M -type f

# Найти файлы, изменённые за последние 5 дней
find /var/log -mtime -5

# Выполнить действие с каждым найденным файлом
find /opt -type f -name "*.txt" -exec cat {} \;

Команда locate

Поиск по заранее построенной базе данных. Работает очень быстро, но база может быть устаревшей.

# Найти файл по имени
locate os-release

# Поиск по расширению
locate "*.jpg"

# Обновить базу данных (требует sudo)
sudo updatedb
find vs locate
find — медленнее, но всегда актуально (сканирует диск прямо сейчас).
locate — очень быстро, но результат соответствует состоянию на момент последнего updatedb. Если файл создан только что — locate его не найдёт.

Bash-скрипты: циклы

Циклы позволяют автоматически повторять блок команд.

Цикл for (диапазон):

#!/bin/bash
for i in {1..5}
do
    echo "Iteration $i"
done

Цикл for (C-стиль):

#!/bin/bash
for ((i = 1; i <= 10; i++)); do
    echo $i
done

Цикл while:

#!/bin/bash
COUNT=1
while [ $COUNT -le 5 ]
do
    echo "Count: $COUNT"
    ((COUNT++))
done

Lecture 10 — Ветки в Git

Полный материал: → Занятие 16: Теория

Что такое ветки

Ветка в Git — это набор коммитов в хронологическом порядке. По умолчанию создаётся ветка main (или master). Ветки используются для изоляции изменений, коллаборации и управления версиями.

Основные операции с ветками

# Список веток (звёздочка — текущая)
git branch

# Создать новую ветку
git branch feature-login

# Создать и сразу переключиться
git checkout -b feature-login

# Переключиться на ветку
git checkout feature-login

# Удалить ветку (безопасно — только если влита)
git branch -d feature-login

# Переименовать ветку
git branch -m old-name new-name

# Показать все ветки, включая удалённые
git branch -a
⚠️ Принудительное удаление
git branch -D feature-login удаляет ветку принудительно, даже если в ней есть незлитые коммиты. Используйте с осторожностью — коммиты могут быть потеряны.

Переключение на удалённую ветку

# Получить список всех удалённых веток
git fetch --all

# Переключиться на удалённую ветку
git checkout -b feature origin/feature

Detached HEAD

Если переключиться на конкретный коммит (по хэшу), Git переходит в состояние «detached HEAD». Новые коммиты в этом состоянии будут потеряны, если не создать ветку.

Файл .gitignore

Список шаблонов файлов и директорий, которые Git не должен отслеживать.

# Игнорировать все .log файлы
*.log

# Игнорировать конкретную директорию
node_modules/

# Игнорировать конкретный файл
.env

# НЕ игнорировать, несмотря на шаблон выше
!important.log

git stash

Временно сохраняет незакоммиченные изменения в «стек». Полезно при срочном переключении ветки.

# Сохранить изменения в стек
git stash

# Посмотреть стек
git stash list

# Восстановить последние сохранённые изменения
git stash pop

# Сбросить изменения без восстановления
git stash drop

git clone vs git fork

git clone — создаёт локальную копию репозитория. Изменения можно пушить только если есть права.
fork — создаёт копию репозитория на GitHub под вашим аккаунтом. Вы можете пушить свободно и предлагать изменения через Pull Request.