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

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

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

Этап 57 · Конвейеры

Конвейеры из нескольких команд

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

На этом этапе вы реализуете поддержку конвейеров, включающих более двух команд.

Конвейеры могут связывать несколько команд, соединяя вывод каждой команды со вводом следующей.

Проверки

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

./your_program.sh

Затем система отправит команды с конвейерами из трёх или более звеньев:

$ cat /tmp/foo/file | head -n 3 | wc
       3       3      10
$ ls -la /tmp/foo | tail -n 5 | head -n 3 | grep "file"
-rw-r--r-- 1 user user     5 Apr 29 10:06 file
$

Тестирующая система проверит, соответствует ли итоговый вывод ожидаемому результату выполнения многоступенчатого конвейера.

Примечания

  • Для этого потребуется управлять несколькими каналами и процессами.
  • Обеспечьте правильную настройку stdin/stdout для каждой команды в цепочке (кроме stdin первой команды и stdout последней, которые обычно подключены к терминалу или файловым перенаправлениям).
  • Правильная очистка процессов и ожидание их завершения крайне важны.

Проверка в вашей 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 xk3

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

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

go / ЛОКАЛЬНО

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

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

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

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