Проектная лаборатория
Собственный Shell
Этап 29 · Дополнение имён файлов
Дополнение файлов
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы добавите поддержку дополнения имён файлов.
Дополнение имён файлов
Дополнение имён файлов — возможность оболочки, помогающая пользователям дополнять аргументы имён файлов нажатием клавиши <TAB>.
Например:
$ cat re<TAB>
$ cat readme.txt
# ^ note the trailing spaceКогда пользователь нажимает <TAB> при вводе аргумента:
- Извлеките текст после последнего пробела во вводе (например,
"re"в"cat re"). - Найдите в текущем каталоге файлы, начинающиеся с этого префикса.
- Если файл совпал, дополните имя и добавьте пробел в конце.
Завершающий пробел позволяет пользователю сразу начать ввод следующего аргумента, не добавляя пробел вручную.
Проверки
Тестирующая система создаст файл в текущем каталоге (например, readme.txt) и запустит вашу программу следующим образом:
$ ./your_program.shЗатем она имитирует пользовательский ввод с неполным именем файла:
$ cat re<TAB>
$ cat readme.txt
$ cat hello<TAB>
$ cat hello_world.py Тестирующая система проверит, что:
- Нажатие Tab дополняет неполное имя файла до полного.
- После имени файла добавляется пробел.
Примечания
- На этом этапе достаточно сопоставлять префикс с файлами текущего рабочего каталога. Дополнение во вложенных каталогах мы реализуем на следующих этапах.
- На этом этапе достаточно обрабатывать случаи с одним совпавшим именем файла. Дополнение каталогов и несколько вариантов дополнения мы реализуем на следующих этапах.
- Дополнение работает для любой команды, а не только
cat. Например, даже для несуществующей командыxyzнажатие Tab должно дополнить аргумент:xyz read<TAB>превращается вxyz readme.txt.
Проверка в вашей 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 zv2Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.