Проектная лаборатория
Собственный Shell
Этап 19 · Перенаправление
Перенаправление stdout
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы реализуете перенаправление вывода команды в файл.
Оператор >
Оператор > перенаправляет стандартный вывод команды в файл. При использовании > вывод, который обычно появляется в терминале, записывается в указанный файл.
Если файл не существует, он создаётся. Если файл уже существует, он перезаписывается (его старое содержимое заменяется).
Например:
$ echo hello > output.txt
$ cat output.txt
helloОбозначения файловых дескрипторов
В Unix стандартный вывод обозначается числом 1. Для его перенаправления можно явно написать 1>:
$ echo hello 1> file.txtОднако перенаправление стандартного вывода используется настолько часто, что оболочка позволяет опустить 1 и написать просто >:
$ echo hello > file.txtОбе команды делают совершенно одно и то же.
Вывод ошибок не перенаправляется
Оператор > перенаправляет только стандартный вывод, но не стандартный поток ошибок. Если команда создаёт сообщения об ошибках, они по-прежнему появляются в терминале:
$ cat nonexistent > output.txt
cat: nonexistent: No such file or directory
$ cat output.txt
$ Сообщение об ошибке появляется в терминале, а output.txt остаётся пустым (или содержит только обычный вывод, если он был).
Проверки
Тестирующая система запустит вашу программу следующим образом:
$ ./your_program.shЗатем система отправит оболочке последовательность команд и перенаправит их вывод в файл:
$ ls /tmp/baz > /tmp/foo/baz.md
$ cat /tmp/foo/baz.md
apple
blueberry
$ echo Hello James 1> /tmp/foo/foo.md
$ cat /tmp/foo/foo.md
Hello James
$ cat /tmp/baz/blueberry nonexistent 1> /tmp/foo/quz.md
cat: nonexistent: No such file or directory
$ cat /tmp/foo/quz.md
blueberryТестирующая система проверит, что:
- Команды с
>перенаправляют стандартный вывод в указанный файл. - Команды с
1>работают так же, как с>. - Если файлов нет, они создаются.
- Сообщения об ошибках по-прежнему появляются в терминале (не перенаправляются).
- В файл записывается только стандартный вывод.
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init shell ./my-shell --language go2. Откройте папку в IDE
cd ./my-shellРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage jv1Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.