Проектная лаборатория

Собственный Shell

0 / 76этапов пройдено

Этап 20 · Перенаправление

Перенаправление stderr

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе вы реализуете перенаправление стандартного потока ошибок команды в файл.

Оператор 2>

Оператор 2> перенаправляет стандартный поток ошибок команды в файл. В стандартный поток ошибок программы записывают сообщения об ошибках и диагностическую информацию.

В Unix стандартный поток ошибок обозначается числом 2. Записывая 2>, вы явно перенаправляете файловый дескриптор 2 (stderr) в файл.

Например:

$ cat nonexistent 2> errors.txt
$ cat errors.txt
cat: nonexistent: No such file or directory

Здесь сообщение об ошибке записывается в errors.txt, а не появляется в терминале.

Стандартный вывод не перенаправляется

Оператор 2> перенаправляет только стандартный поток ошибок, но не стандартный вывод. Обычный вывод по-прежнему появляется в терминале:

$ cat existing_file nonexistent 2> errors.txt
contents of existing file
$ cat errors.txt
cat: nonexistent: No such file or directory
 
$ echo hello 2> errors.txt
hello
$ cat errors.txt
$

В примере выше содержимое файла появляется в терминале, а любое сообщение об ошибке попадает в errors.txt.

Проверки

Тестирующая система запустит вашу программу следующим образом:

$ ./your_program.sh

Затем система отправит оболочке последовательность команд и попытается перенаправить их стандартный поток ошибок в файл:

$ ls nonexistent 2> /tmp/quz/baz.md
$ cat /tmp/quz/baz.md
ls: nonexistent: No such file or directory
 
$ echo Maria file cannot be found 2> /tmp/quz/foo.md
Maria file cannot be found
$ 
 
$ cat /tmp/bar/pear nonexistent 2> /tmp/quz/quz.md
pear
$ cat /tmp/quz/quz.md
cat: nonexistent: No such file or directory

Тестирующая система проверит, что:

  • Команды с 2> перенаправляют стандартный поток ошибок в указанный файл.
  • Если указанных файлов нет, они создаются.
  • Стандартный вывод по-прежнему появляется в терминале (не перенаправляется).
  • Стандартные ошибки не отображаются в терминале.

Проверка в вашей IDE

Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.

Настройка проекта и IDE

1. Создайте проект один раз

node '/opt/graphlms/tools/project-lab/cli.mjs' init shell ./my-shell --language go

2. Откройте папку в IDE

cd ./my-shell

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage vz4

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста