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

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

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

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

Несколько вариантов дополнения

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

На этом этапе вы реализуете дополнение по Tab для нескольких исполняемых файлов с общим префиксом.

Обработка нескольких совпадений

Когда пользователь вводит префикс команды и нажимает <TAB>, оболочка должна найти все исполняемые файлы в PATH с этим префиксом и выполнить следующее:

  1. При первом нажатии <TAB> подать звуковой сигнал (с помощью \x07).
  2. При втором нажатии <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_

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

  1. Первое нажатие Tab вызывает звуковой сигнал.
  2. Второе нажатие Tab показывает все совпавшие исполняемые файлы в алфавитном порядке.
    • Совпадения разделены хотя бы одним пробелом.
    • Совпадения отображаются на новой строке.
  3. Приглашение появляется снова с сохранённым исходным вводом.

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

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

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

go / ЛОКАЛЬНО

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

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

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

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