Проектная лаборатория
Собственный Shell
Этап 28 · Дополнение команд
Частичное дополнение
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы расширите автодополнение для частичного дополнения с помощью наибольшего общего префикса (LCP).
Дополнение до наибольшего общего префикса
Если пользовательскому вводу соответствуют несколько исполняемых файлов и некоторые имена являются префиксами других, оболочка должна дополнить ввод до наибольшего общего префикса всех совпадений.
Например, если в PATH есть такие исполняемые файлы:
xyz_fooxyz_foo_barxyz_foo_bar_baz
Когда пользователь вводит xyz_ и нажимает Tab, оболочка дополняет ввод до xyz_foo, потому что это самый длинный префикс, общий для всех трёх исполняемых файлов.
После ввода следующего символа-разделителя нажатие Tab дополняет ввод до следующего общего префикса оставшихся совпадений:
# Note: The prompt lines below are displayed on the same line
$ xyz_<TAB>
$ xyz_foo_<TAB>
$ xyz_foo_bar_<TAB>
$ xyz_foo_bar_baz Если после дополнения остаётся только одно совпадение, оболочка должна дополнить имя команды, как на предыдущих этапах (с пробелом в конце).
Проверки
Тестирующая система запустит вашу программу следующим образом:
./your_program.shЗатем система проверит последовательное дополнение по Tab:
# Note: The prompt lines below are displayed on the same line
$ xyz_<TAB>
$ xyz_foo_<TAB>
$ xyz_foo_bar_<TAB>
$ xyz_foo_bar_baz Тестирующая система проверит, что:
- После
xyz_дополнение показываетxyz_foo. - После ввода
_и нажатия Tab дополнение показываетxyz_foo_bar. - После ввода
_и повторного нажатия Tab дополнение показываетxyz_foo_bar_bazс пробелом в конце. - Завершающий пробел появляется только при единственном оставшемся совпадении.
Проверка в вашей 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 wt6Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.