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

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

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

Этап 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 go

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

cd ./my-shell

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

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

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

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

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

go / ЛОКАЛЬНО

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

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

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

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