iT邦幫忙

鐵人檔案

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

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

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

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

Day01-系列文介紹、規劃

前言 哈囉大家好我是 Larry,這是我第二次參加鐵人賽了,我去年的主題是用 Go 寫一個通用的釣魚網站,比較偏 Go(Golang) 在網路方面的應用;今年則...

DAY 2

Day02-Shell 是什麼?

直譯式語言 在說明 Shell 是什麼之前,我們先來談談什麼是直譯式語言,懂了之後會更容易理解 Shell 所扮演的角色 程式語言大致上可以分為 編譯式 跟 直...

DAY 3

Day03-開工囉

前言 今天是鐵人賽的第三天,總算是要開始寫扣囉~因為今年打算更專注在實作 Shell,而且 Go 很好學,所以不會像去年一樣再把 Go 語法講過一次,如果你對...

DAY 4

Day04-Process & Standard IO

前言 昨天已經完成逐行讀取並且 echo,接下來原本應該要講執行指令,但因為需要一些先備知識,所以今天先來說說 Linux 中 Process 跟 Standa...

DAY 5

Day05-執行指令(一)

今日目標 昨天講了 Process 跟 Standard IO 的基本概念,今天要用他們做到下 ls 指令時真的可以跑出 ls 的結果 Shell 執行指令的流...

DAY 6

Day06-執行指令(二)

今日目標 昨天看似已經完成執行指令,其實不然,昨天下的指令 ls、ps、vim 都是沒有參數的,如果加上參數就會發生錯誤,到底為什麼會這樣呢??? 分析原因...

DAY 7

Day07-Prompt 大改造(一)

前言 如昨天所說,目前 Gosh 的 prompt 真的太醜了,就只有一個簡單的 >,連路徑都沒有顯示,根本不知道怎麼用 看看隔壁棚的 zsh,不僅該有的...

DAY 8

Day08-Prompt 大改造(二)

今日目標 昨天已經幫 Prompt 加上了 username 跟 hostname 等等資訊,但還是不夠漂亮,所以今天要來幫 Shell 加上一點顏色 跳脫序列...

DAY 9

Day09-內建指令

前言 原本以為已經差不多有 Shell 的樣子了,結果剛剛試了一下竟然不能 cd,這 Shell 真是爛得徹底,竟然連 cd 都不行,這樣也能叫做 Shell...

DAY 10

Day10-存取環境變數(一)

前言 不知不覺就來到第十天了,今明兩天要來談談怎麼在 Shell 中存取(set and get)環境變數,之前只有簡單帶過,今天來認真介紹一下 環境變數 在...