Проектная лаборатория
Собственный Shell
Этап 06 · Основные этапы
Реализация type
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы реализуете встроенную команду type для своей оболочки.
Встроенная команда type
Встроенная команда type определяет, как интерпретировалась бы команда при её использовании. Она проверяет, является ли команда встроенной, исполняемым файлом или неизвестной.
Например:
$ type echo
echo is a shell builtin
$ type exit
exit is a shell builtin
$ type invalid_command
invalid_command: not foundНа этом этапе нужно обработать два случая:
- Для встроенных команд (например,
echo,exitиtype) выводите<command> is a shell builtin. - Для неизвестных команд, не совпадающих ни с одной встроенной, выводите
<command>: not found.
Исполняемые файлы мы обработаем на следующих этапах.
Проверки
Тестирующая система запустит вашу программу следующим образом:
./your_program.shЗатем система отправит оболочке последовательность команд type:
$ type echo
echo is a shell builtin
$ type exit
exit is a shell builtin
$ type type
type is a shell builtin
$ type invalid_command
invalid_command: not found
$Тестирующая система проверит, что:
- Для встроенных команд выводится:
<command> is a shell builtin. - Для неизвестных команд выводится:
<command>: not found.
Примечания
- На этом этапе тестирующая система проверяет только встроенные и неизвестные команды.
- Сама
type— встроенная команда оболочки, поэтому$ type typeдолжна вывестиtype is a shell builtin.
Проверка в вашей 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 ez5Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.