<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 練習 28:`sh` > 原文:[Exercise 28: sh](https://learncodethehardway.org/more-python-book/ex28.html) > 譯者:[飛龍](https://github.com/wizardforcel) > 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) > 自豪地采用[谷歌翻譯](https://translate.google.cn/) 你現在將繼續你的 TDD 風格流程,但你將添加一個小型的 Hack 會話來起步。使用 TDD 工作的最佳方法,實際上不是首先編寫測試,而是以這種方式工作: + 花45分鐘的時間來研究這個問題。這被稱為“spike”,旨在解決你可能遇到的問題或學習你需要知道的事情。 + 使用 TODO 列表來計劃你可能需要實現什么。 + 將此計劃變成 TDD 測試。 + 運行測試來確保它失敗。 + 編寫測試代碼,使用你從 spike 學到的東西。 + 審計并測試你的代碼來確認質量。 當 TDD 狂熱者遇到從沒學過的問題時,這個過程是我看到它們實際使用的東西。快速實現一個黑魔法,讓你的思維活躍,并研究問題,然后認真對待工作更加實際。如果有人告訴你這不是 TDD,只是不要告訴他們你實現做了 spike 。他們永遠不會知道。 ## 挑戰練習 在本練習中,你將實現 Unix `sh`工具的 shell 部分。你在編碼時一直使用`sh`,因為它在終端內部運行(PowerShell 不一樣),并運行其他程序。通常它是`bash`,但它可能是`fish`,`csh`或`zsh`。 `sh`工具是一個需要實現的龐大的程序,因為它也支持一個完整的編程語言,來自動化你的系統。我們不會實現編程語言,只是命令行進程運行的那部分。 要完成此任務,你需要以下庫: + [`subprocess`](https://docs.python.org/2/library/subprocess.html),啟動其他程序。 + [`readline`](https://docs.python.org/2/library/readline.html),從用戶獲取輸入和支持歷史記錄。 你不用做一個帶管道和所有東西的完整的 Unix `sh`,但是應該實現除編程語言之外的所有東西。你的實現應該能夠執行以下操作: + 使用`readline`,從提示開始,并從用戶獲取命令來執行。 + 將命令解析成可執行文件和參數。 + 使用`subprocess`執行具有參數的命令,并控制所有的輸出。 為了起步,你可以做你的 spike,來學習`readline`或`subprocess `或兩者,任何你認為是必要的或不熟悉的東西。一旦你完成了 spike,那么你開始編寫測試和實現系統。 ## 研究性學習 你可以實現管道嗎?就是你鍵入`history | grep python`,并且`|`將`history `的輸出發給`grep`的輸入。 ## 深入學習 如果你打算深入了解 Unix 進程和資源管理,你可以研究我的項目[`python-lust`](https://github.com/zedshaw/python-lust)。它并不是非常大,并且充滿了許多小技巧。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看