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 — медленнее, но всегда актуально (сканирует диск прямо сейчас).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.