1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-lmpythw-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ex28.md 5.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 03:52 f9ec0dd

Упражнение 28: sh

Оригинал: Упражнение 28: sh

Переводчик: Феликс Ли

Лицензия: CC BY-NC-SA 4.0

Гордо использует Google Translate

Вы продолжите свой процесс в стиле TDD, но начнете с небольшой сессии хакинга. Лучший способ работать с TDD заключается не в том, чтобы сначала писать тесты, а в следующем порядке действий:

  • Времени на 45 минут для исследования проблемы. Это называется "спайк", который направлен на решение проблем, с которыми вы можете столкнуться, или обучение тому, что вам нужно знать.
  • Используйте список TODO для планирования того, что вам может потребоваться реализовать.
  • Преобразуйте это плановое представление в тесты TDD.
  • Выполните тесты, чтобы убедиться, что они проваливаются.
  • Напишите тестовый код, используя то, чему вы научились во время спайка.
  • Аудируйте и протестируйте ваш код, чтобы подтвердить его качество.

Когда энтузиасты TDD сталкиваются с новыми для них проблемами, этот процесс является тем, что я видел их использовать на практике. Быстрое создание черной магии, которое активирует ваше мышление, исследование проблемы, а затем серьезное отношение к работе делает её более реальной. Если кто-то скажет вам, что это не TDD, просто не говорите им, что вы сделали спайк. Они никогда не узнают.## Часто задаваемые вопросы

В этом упражнении вы будете реализовывать часть оболочки для Unix sh. Вы использовали sh, когда программируете, потому что он работает внутри терминала (PowerShell отличается) и запускает другие программы. Обычно это bash, но также может быть fish, csh или zsh.

Инструмент sh — это огромная программа, которую требуется реализовать, так как она поддерживает полный язык программирования для автоматизации системы. Мы не будем реализовывать язык программирования, а только ту часть, которая запускает команды командной строки.

Чтобы завершить эту задачу, вам понадобятся следующие библиотеки:

  • subprocess, запускающий другие программы.
  • readline, получение входных данных от пользователя и поддержка истории.

Вы не должны делать полную версию Unix sh со всеми трубами и прочими вещами, но должна быть реализована вся часть, кроме языка программирования. Ваша реализация должна выполнять следующее:

  • Получение команд от пользователя через readline, начиная с приглашения.
  • Разбор команды на исполняемые файлы и параметры.
  • Запуск команд с параметрами с помощью subprocess и управление всем выводом.

Чтобы начать, вы можете сделать свой спайк (spike), чтобы изучить readline или subprocess, или оба, что бы вы ни считали необходимым или незнакомым.После завершения спайка вы можете приступить к написанию тестов и реализации системы.

Исследовательское обучение

Вы можете реализовать трубу? Например, когда вы вводите history | grep python, то символ | передаёт вывод команды history как вход для команды grep.

Глубокое изучение

Если вы планируете углубиться в понимание Unix-процессов и управления ресурсами, вы можете исследовать мой проект python-lust. Он не слишком большой и полон множества маленьких хитростей.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-lmpythw-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-lmpythw-zh.git
oschina-mirror
wizardforcel-lmpythw-zh
wizardforcel-lmpythw-zh
master