🐛 Типичные ошибки

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

⚡ Частые ошибки

  • cron: crontab -r удаляет ВСЕ задания — нельзя отменить. Для удаления одного — crontab -e, закомментировать или удалить строку.
  • tar: забыть флаг -f или поставить его не последним; перепутать -c и -x.
  • PR: направление PR не туда; коммитить прямо в main вместо ветки.

Ошибки из ДЗ занятия 21 (cron + tar)

Ошибки ниже зафиксированы из реальных работ студентов — это не теоретические примеры, а типичные грабли.

Ошибка 1: Неправильный синтаксис диапазона {1..10}

# НЕПРАВИЛЬНО — использование других обозначений:
for run in [1..10]; do ...   # квадратные скобки — не то
for run in (1..10); do ...   # круглые скобки — не то
for run in 1 to 10; do ...   # слово "to" — не синтаксис bash

# ПРАВИЛЬНО:
for run in {1..10}; do ...

Фигурные скобки {1..10} — это bash brace expansion. Синтаксис строго такой.

Ошибка 2: Забыть $ перед переменной run

# НЕПРАВИЛЬНО — переменная не подставится:
echo run          # выведет буквально "run"
touch run'_'$DATE # имена файлов будут "run_20.04.23"

# ПРАВИЛЬНО:
echo $run
touch $run'_'$DATE

Переменная run без знака доллара интерпретируется как литерал — буквальная строка «run».

Ошибка 3: Лишние символы в touch — файлы не создаются

# НЕПРАВИЛЬНО — пробелы или другие символы нарушают имя:
touch $run _ $DATE   # создаст ТРИ разных файла: $run, _, $DATE
touch "$run_$DATE"   # $run_ — неопределённая переменная (run_ не объявлена)

# ПРАВИЛЬНО:
touch $run'_'$DATE   # одинарные кавычки — буквальный символ _

Ошибка 4: Что выполняется в цикле — граница do...done

# Повторяется только то, что ВНУТРИ do...done:
for run in {1..10}
do
  DATE=$(date +"%d.%m.%y")   # ВНУТРИ цикла — выполняется 10 раз
  touch $run'_'$DATE          # ВНУТРИ цикла
done
echo "Готово"                 # ВНЕ цикла — выполняется 1 раз

Частая ошибка: поставить done раньше, чем нужно, — тогда часть команд выполнится один раз вместо десяти.

Ошибка 5: crontab -r вместо crontab -e

# ОПАСНО — удаляет ВСЕ задания пользователя без подтверждения:
crontab -r

# БЕЗОПАСНО — открыть редактор для правки:
crontab -e   # закомментировать/удалить нужную строку
Будьте внимательны: -r и -e различаются одной буквой, но действие кардинально разное. crontab -r не спрашивает подтверждения.

Ошибки из ДЗ занятия 22 (Git fork + PR)

Ошибка 6: Неправильное направление PR

# НЕПРАВИЛЬНО — PR из оригинала в форк:
Base repository: your-username/learning_git  <- head: it-career-hub/learning_git

# ПРАВИЛЬНО — PR из вашего форка в оригинал:
Base repository: it-career-hub/learning_git  <- head: your-username/learning_git

Проверяйте направление перед нажатием «Create pull request». Base — куда сливаем, Head — откуда берём изменения.

Ошибка 7: Push прямо в main без ветки

# Допустимо в учебном контексте, но плохая практика:
git push origin main    # коммитим прямо в main форка

# Лучше создать ветку для изменений:
git checkout -b add-my-name
git add ...
git commit -m "Add my name"
git push origin add-my-name
# Затем открыть PR из ветки add-my-name → main

В реальных проектах прямые коммиты в main запрещены правилами branch protection. Привыкайте работать через ветки.

Ошибка 8: Неправильные ключи tar при создании архива

# НЕПРАВИЛЬНО — флаг -f должен идти перед именем файла:
tar -czf archive.tar.gz -f backup/   # -f встречается дважды — ошибка

# НЕПРАВИЛЬНО — перепутаны -c и -x:
tar -xzf archive.tar.gz /etc   # -x = извлечь, а не создать!

# ПРАВИЛЬНО:
tar -czf archive.tar.gz /etc   # -c создать, -z gzip, -f имя_файла