Menu
Coddy logo textTech

Стандартная ошибка

Часть раздела Основы путешествия по Terminal на Coddy — урок 41 из 82.

Третий и последний поток данных — это стандартный поток ошибок, сокращённо stderr. Этот поток специально предназначен для сообщений об ошибках и предупреждений, отделяя их от обычного вывода.

Когда команда завершается с ошибкой, сообщение об ошибке выводится в стандартный поток ошибок, а не в стандартный вывод:

ls nonexistent_folder

Сообщение об ошибке, которое вы видите, приходит через stderr. Это разделение важно, потому что вы можете перенаправлять ошибки независимо от обычного вывода.

Чтобы перенаправить стандартный поток ошибок, используйте 2> вместо >:

ls nonexistent_folder 2> errors.txt

Число 2 относится к номеру дескриптора файла stderr (stdout — это 1, stderr — это 2). Эта команда захватывает сообщение об ошибке в errors.txt, сохраняя ваш терминал чистым.

Вы можете перенаправить оба потока в разные файлы:

ls existing_folder nonexistent_folder > output.txt 2> errors.txt

Успешный вывод направляется в output.txt, а любые ошибки — в errors.txt. Чтобы отправить оба потока в один и тот же файл, используйте 2>&1:

ls existing_folder nonexistent_folder > all_output.txt 2>&1

Это перенаправляет stderr туда, куда направляется stdout, объединяя весь вывод в один файл.

challenge icon

Задание

Легко

Используйте оператор 2> для перенаправления сообщения об ошибке в файл. Выполните эти две команды по порядку:

  1. Попробуйте вывести список папки с именем missing_folder с помощью ls и перенаправьте сообщение об ошибке в файл с именем errors.txt
  2. Используйте cat для отображения содержимого errors.txt

Подсказка: Формат: ls foldername 2> filename. Сообщение об ошибке попадает в файл вместо появления на экране. Используйте cat, чтобы проверить, что оно было захвачено.

Шпаргалка

Поток стандартной ошибки (stderr) используется для сообщений об ошибках и предупреждений, отделяя их от обычного вывода.

Чтобы перенаправить стандартную ошибку, используйте 2>:

ls nonexistent_folder 2> errors.txt

2 относится к номеру дескриптора файла stderr (stdout — это 1, stderr — 2).

Вы можете перенаправить как stdout, так и stderr в разные файлы:

ls existing_folder nonexistent_folder > output.txt 2> errors.txt

Чтобы отправить оба потока в один файл, используйте 2>&1:

ls existing_folder nonexistent_folder > all_output.txt 2>&1

Попробуйте сами

Терминал
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы