练习 28:sh

原文:Exercise 28: sh

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

你现在将继续你的 TDD 风格流程,但你将添加一个小型的 Hack 会话来起步。使用 TDD 工作的最佳方法,实际上不是首先编写测试,而是以这种方式工作:

  • 花45分钟的时间来研究这个问题。这被称为“spike”,旨在解决你可能遇到的问题或学习你需要知道的事情。
  • 使用 TODO 列表来计划你可能需要实现什么。
  • 将此计划变成 TDD 测试。
  • 运行测试来确保它失败。
  • 编写测试代码,使用你从 spike 学到的东西。
  • 审计并测试你的代码来确认质量。

当 TDD 狂热者遇到从没学过的问题时,这个过程是我看到它们实际使用的东西。快速实现一个黑魔法,让你的思维活跃,并研究问题,然后认真对待工作更加实际。如果有人告诉你这不是 TDD,只是不要告诉他们你实现做了 spike 。他们永远不会知道。

挑战练习

在本练习中,你将实现 Unix sh工具的 shell 部分。你在编码时一直使用sh,因为它在终端内部运行(PowerShell 不一样),并运行其他程序。通常它是bash,但它可能是fishcshzsh

sh工具是一个需要实现的庞大的程序,因为它也支持一个完整的编程语言,来自动化你的系统。我们不会实现编程语言,只是命令行进程运行的那部分。

要完成此任务,你需要以下库:

  • subprocess,启动其他程序。
  • readline,从用户获取输入和支持历史记录。

你不用做一个带管道和所有东西的完整的 Unix sh,但是应该实现除编程语言之外的所有东西。你的实现应该能够执行以下操作:

  • 使用readline,从提示开始,并从用户获取命令来执行。
  • 将命令解析成可执行文件和参数。
  • 使用subprocess执行具有参数的命令,并控制所有的输出。

为了起步,你可以做你的 spike,来学习readlinesubprocess或两者,任何你认为是必要的或不熟悉的东西。一旦你完成了 spike,那么你开始编写测试和实现系统。

研究性学习

你可以实现管道吗?就是你键入history | grep python,并且|history的输出发给grep的输入。

深入学习

如果你打算深入了解 Unix 进程和资源管理,你可以研究我的项目python-lust。它并不是非常大,并且充满了许多小技巧。

笨办法学 Python · 续 练习 28:`sh`相关推荐

  1. 笨办法学 Python · 续 中文版

    笨办法学 Python · 续 中文版 原书:Learn More Python 3 The Hard Way 译者:飞龙 自豪地采用谷歌翻译 在线阅读 PDF格式 EPUB格式 MOBI格式 代码仓 ...

  2. 笨办法学 Python · 续 练习 33:解析器

    练习 33:解析器 原文:Exercise 33: Parsers 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 想象一下,你将获得一个巨大的数字列表,你必须将其输入到电子表格 ...

  3. 笨办法学 Python · 续 练习 0:起步

    练习 0:起步 原文:Exercise 0: The Setup 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你需要设置和配置一些工具来学习此书.有可能你已经有了很多这些东西 ...

  4. 笨办法学 Python · 续 第二部分:简单的黑魔法

    第二部分:简单的黑魔法 原文:Part II: Quick Hacks 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你有最好的想法,你会打动世界!你会成为一个亿万富豪!你的大 ...

  5. 笨办法学 Python · 续 练习 52:`moreweb`

    练习 52:moreweb 原文:Exercise 52: moreweb 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 现在,你已经使用 Python http.server ...

  6. 笨办法学 Python · 续 练习 24:URL 快速路由

    练习 24:URL 快速路由 原文:Exercise 24: Fast URL Search 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 我们将结束数据结构和算法的部分,并将 ...

  7. 笨办法学 Python · 续 练习 32:扫描器

    练习 32:扫描器 原文:Exercise 32: Scanners 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 我的第一本书在练习 48 中非常偶然涉及到了扫描器,但现在我 ...

  8. 笨办法学 Python · 续 练习 29:`diff`和`patch`

    练习 29:diff和patch 原文:Exercise 29: diff and patch 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 为了完成第四部分,你将简单把你所学 ...

  9. python描述器 有限状态机_笨办法学 Python · 续 练习 30:有限状态机

    练习 30:有限状态机 每当你阅读一本关于解析的书,都有一个可怕的章节,关于有限状态机(FSM).他们对"边"和"节点"进行了详细的分析,每个可能的" ...

最新文章

  1. poj3304(线段相交问题)
  2. RabbitMQ安装和运行
  3. 百度和吉利合作造车,数据揭秘百度造车、拆股背后逻辑
  4. 创建android程序时 默认使用布局是,《Android移动应用基础教程》中国铁道出版社课后习题(附答案)...
  5. 复现原文(一):Single-cell RNA sequencing of human kidney(step by step)
  6. CentOS 7下Gitlab安装和迁移
  7. [PHP开发必备] -- 小巧强悍的MYSQL-Front中文版使用教程,附最新版下载地址
  8. Aliyun mysql配置 远程访问 10038
  9. cad计算机快捷键设置,2014年CAD计算机快捷键
  10. 分手快乐,需要一把Pasotti的定制雨伞_奢侈品品味-中国奢侈品网(中奢网)
  11. C语言基础知识复习(1)
  12. 【NLP】情绪分析与酒店评论
  13. linux版360浏览器下载
  14. 移动端H5(JavaScript)识别二维码功能
  15. 什么是FreeMarker
  16. 它们改变了整个世界 盘点50个最伟大的游戏创意
  17. 关于 pandas 解析 json 文件和其他类型文件的结果中日期格式数据类型不一致的问题
  18. 单月抖音涨粉500万,挑战类网红玲爷的另类打法
  19. 在Win10|Win11中安装ArcGIS10.2时遇到缺少.NET Framework 3.5问题的解决办法
  20. 爬取天气数据进行绘制折线图

热门文章

  1. linux服务器用户组和权限管,linux 用户管理,用户权限管理,用户组管理
  2. jquery 逗号分割截取字符串_JS/JQUERY字符串截取分割匹配等处理汇总
  3. case when 子查询_标准SQL——子查询、分组查询、多表联查
  4. Mind+上传模式的第三方Arduino用户库实现 -DHT11温湿度模块
  5. 【ESP8266】安信可8266模组官方文档速查++
  6. 6410的系统时钟设置(上)---6410时钟控制逻辑框架分析
  7. 卡尔曼滤波 -- 从推导到应用(一)
  8. java imageicon 路径_java awt ImageIcon icon 相对路径设置
  9. linux程序ctrl c无法退出原因_「Linux」20节-在后台运行任务
  10. flask 蓝图 使用蓝图,增删改查用户