Проектная лаборатория
Собственный Shell
Этап 36 · Программируемое дополнение
Регистрация встроенной команды complete
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы зарегистрируете complete как встроенную команду оболочки.
Встроенная команда complete
Встроенная команда complete позволяет пользователям регистрировать программируемое дополнение для команд.
Например, можно зарегистрировать скрипт дополнения для git:
$ complete -C /path/to/completer_script gitПосле регистрации оболочка будет вызывать скрипт при нажатии TAB после git, чтобы получить варианты:
$ git clo<TAB>
$ git clone На этом этапе достаточно зарегистрировать complete как встроенную команду, чтобы её распознавала команда type. Само поведение мы реализуем на следующих этапах.
Проверки
Тестирующая система запустит вашу программу следующим образом:
$ ./your_program.shЗатем система проверит, что complete распознаётся как встроенная команда:
$ type complete
complete is a shell builtinПримечания
- На этом этапе не нужно реализовывать логику дополнения. Просто зарегистрируйте
complete, чтобы она определялась как встроенная команда. - Если оболочка уже использует список или словарь встроенных команд (например,
echo,cd,pwd), добавьтеcompleteв ту же структуру.
Проверка в вашей 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 ne7Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.