iT邦幫忙

鐵人檔案

第 11 屆 iThome 鐵人賽
回列表
Software Development

Gosh!原來用 Go 寫一個 Unix Shell 這麼簡單 系列

雖然大家都說不要重複造輪子,但這一系列偏偏要反其道而行!希望大家在從無到有實作出 Shell 的過程中,理解作業系統 Process、Standard IO、Signal 等等概念,同時也更了解 Go 語言能做到哪些事。不管你是想了解 Shell 原理、想更了解 Linux、還是想學 Go 都歡迎來看看這系列~

鐵人鍊成 | 共 30 篇文章 | 34 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day21-Redirect Stdin(一)

前言 各位還記得之前在 Day04 有講過 Standard IO 的 Redirect 嗎,接下來兩天我們要開始實作 Redirect Stdin,至於 St...

DAY 22

Day22-Redirect Stdin(二)

前言 我們在昨天已經想好一套實作 Redirect Stdin 的方法,大致上可以分成這幾個步驟: 嘗試開啟 data 檔案 若檔案 不存在 就噴錯,程式到此...

DAY 23

Day23-Signal 訊號(一)

前言 接下來一連好幾天都要講 Shell 該怎麼處理 Signal,各位還記得之前在 Day04 有講過基本的 Process 觀念嗎,而 Process 之間...

DAY 24

Day24-Signal 訊號(二)

前言 今天會用到 Go 裡面 Goroutine 跟 Channel 的語法,如果不太熟悉的話建議先看看我去年寫的 Go 語法 III 還記得昨天有提到 S...

DAY 25

Day25-Signal 訊號(三)

前言 昨天已經成功讓 Shell 接到 Signal 而且不被打死,今天要來看看怎麼把 Signal 送給正在執行的 Process 程式流程 因為使用者按下...

DAY 26

Day26-& 背景執行

前言 不知不覺竟然來到第 26 天了,因為還有一點時間,今天就來實作之前想做、但不知道放在哪裡的功能: 在背景執行程式 some command & 在...

DAY 27

Day27-timeout 限時指令

前言 一轉眼就來到第 27 天、也是實作功能的最後一天了,在過去幾個禮拜 Gosh 一直嘗試做到 zsh 能做的事(雖然還差很多XD) 但今天要來點不一樣的,我...

DAY 28

Day28-那些來不及做的功能

前言 這一系列原本有很多想做的功能,但因為只有三十天的時間,所以真正實作的幾乎都是比較基本的 Shell 功能,而比較進階的功能就少有著墨 雖然沒時間做,不過我...

DAY 29

Day29-發佈到 Homebrew

Homebrew 是什麼 在把 Gosh 發佈到 Homebrew 之前先介紹一下 Homebrew 是什麼,根據官方的介紹他是 The missing pac...

DAY 30

Day30-結語

參賽心得 (崩潰抱怨文) 很感動終於到了最後一天,從大概兩個月前開始想題目、訂大綱,到最近這一個月每天都是在做專案、解 Bug、寫文章,充實歸充實,但我感覺我的...