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

🐛 Типичные ошибки — Занятие 04

Ошибки, которые чаще всего допускают при работе с потоками и перенаправлениями.

⚡ Топ-3 ошибки

  • > вместо >> — перезапишет файл, потеряете данные!
  • echo Start без кавычек — работает, но если текст со спецсимволами — проблемы
  • wc -1 (единица) вместо wc -l (строчная L) — ошибка флага

Ошибка 1 (КРИТИЧЕСКАЯ): > вместо >> — потеря данных!

Написали:

echo "Start" > /home/user/start/1.txt
date > /home/user/start/1.txt

Как должно быть:

echo "Start" > /home/user/start/1.txt
date >> /home/user/start/1.txt

Почему ошибка: вторая команда с > уничтожила первую строку. В итоге файл содержит только дату — слово "Start" потеряно. Всегда думайте: нужно добавить к существующему тексту? → используйте >>.

Ошибка 2: mkdir вместо mkdir -p перед созданием файла

Написали:

mkdir /home/user/start
echo "Start" > /home/user/start/1.txt

Как должно быть:

mkdir -p /home/user/start
echo "Start" > /home/user/start/1.txt

Почему ошибка: если /home/user не существует, mkdir без -p упадёт с ошибкой.

Ошибка 3: echo Start без кавычек

Написали:

echo Start > /home/user/start/1.txt

Лучше:

echo "Start" > /home/user/start/1.txt

Почему ошибка: для одного слова это работает, но кавычки — хорошая привычка. Без кавычек слова со спецсимволами (!, $, пробелы) могут интерпретироваться оболочкой неожиданно.

Ошибка 4: wc -1 (единица) вместо wc -l (строчная L)

Написали:

cat /etc/group | wc -1

Как должно быть:

cat /etc/group | wc -l

Почему ошибка: флаг -l — строчная латинская буква L (от «lines»), а не цифра 1. Визуально похожи, но -1 вызовет ошибку «invalid option».

Ошибка 5: date > вместо date >> при дозаписи

Написали:

date > /home/user/start/1.txt

Как должно быть:

date >> /home/user/start/1.txt

Почему ошибка: в ДЗ 3 пункт 3 говорит «дописать в конец» — значит используем >>. Одиночный > сотрёт слово "Start", которое уже записано.

Ошибка 6: ls / вместо ls -la / при получении скрытых объектов

Написали:

ls / | tail -4

Как должно быть:

ls -la / | tail -4

Почему ошибка: в ДЗ требуется получить последние 4 строки из списка всех (включая скрытые) объектов в /. Ключ -a включает скрытые файлы.