Проектная лаборатория
Собственный Shell
Этап 27 · Дополнение команд
Несколько вариантов дополнения
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы реализуете дополнение по Tab для нескольких исполняемых файлов с общим префиксом.
Обработка нескольких совпадений
Когда пользователь вводит префикс команды и нажимает <TAB>, оболочка должна найти все исполняемые файлы в PATH с этим префиксом и выполнить следующее:
- При первом нажатии
<TAB>подать звуковой сигнал (с помощью\x07). - При втором нажатии
<TAB>:- Вывести все совпавшие исполняемые файлы на новой строке. Перечислить их в алфавитном порядке, разделяя хотя бы одним пробелом (для удобства чтения рекомендуется два).
- Снова показать приглашение на следующей строке, сохранив исходный префикс команды.
Например:
$ xyz_<TAB><TAB>
xyz_bar xyz_baz xyz_quz
$ xyz_Проверки
Тестирующая система запустит вашу программу следующим образом:
./your_program.shЗатем система установит определённый PATH и поместит несколько исполняемых файлов, начинающихся с общего префикса, в разные каталоги из PATH.
Наконец, она введёт общий префикс и дважды нажмёт Tab.
$ xyz_<TAB><TAB>
xyz_bar xyz_baz xyz_quz
$ xyz_Тестирующая система проверит, что:
- Первое нажатие Tab вызывает звуковой сигнал.
- Второе нажатие Tab показывает все совпавшие исполняемые файлы в алфавитном порядке.
- Совпадения разделены хотя бы одним пробелом.
- Совпадения отображаются на новой строке.
- Приглашение появляется снова с сохранённым исходным вводом.
Проверка в вашей 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 wh6Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.