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

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

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

Этап 29 · Дополнение имён файлов

Дополнение файлов

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

На этом этапе вы добавите поддержку дополнения имён файлов.

Дополнение имён файлов

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

Например:

$ cat re<TAB>
$ cat readme.txt 
#                ^ note the trailing space

Когда пользователь нажимает <TAB> при вводе аргумента:

  1. Извлеките текст после последнего пробела во вводе (например, "re" в "cat re").
  2. Найдите в текущем каталоге файлы, начинающиеся с этого префикса.
  3. Если файл совпал, дополните имя и добавьте пробел в конце.

Завершающий пробел позволяет пользователю сразу начать ввод следующего аргумента, не добавляя пробел вручную.

Проверки

Тестирующая система создаст файл в текущем каталоге (например, 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 go

2. Откройте папку в IDE

cd ./my-shell

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage zv2

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

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

go / ЛОКАЛЬНО

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

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

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

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