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

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

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

Этап 23 · Дополнение команд

Дополнение встроенных команд

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

На этом этапе вы реализуете автодополнение встроенных команд.

Автодополнение по Tab

Дополнение по Tab — возможность оболочки, помогающая пользователям дополнять команды нажатием клавиши <TAB>.

На этом этапе вы реализуете автодополнение для двух встроенных команд: echo и exit.

Когда пользователь вводит часть команды и нажимает <TAB>, оболочка должна:

  1. Проверить, совпадает ли введённый текст с началом встроенной команды (а именно echo или exit).
  2. При наличии совпадения дополнить слово.
  3. Добавить пробел в конце, чтобы пользователь мог сразу вводить аргументы.

Например, если пользователь вводит ech и нажимает Tab, оболочка должна дополнить его до echo (с пробелом в конце).

Проверки

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

./your_program.sh

Затем система имитирует пользовательский ввод и нажатия Tab:

$ ech<TAB>
$ echo 
 
$ exi<TAB>
$ exit 

Тестирующая система проверит, что:

  • Нажатие Tab после ech дополняет ввод до echo .
  • Нажатие Tab после exi дополняет ввод до exit .

Примечания

  • Для реализации рекомендуем библиотеку наподобие readline. Большинство современных оболочек и REPL (например, Python REPL) используют GNU readline внутри. Хотя некоторые стандартные поведения, возможно, придётся переопределить, обычно это требует меньше работы, чем реализация с нуля.

  • Разные оболочки обрабатывают автодополнение по-разному. Для единообразия рекомендуем использовать Bash при разработке и тестировании.

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

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

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

go / ЛОКАЛЬНО

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

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

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

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