今天是 alias 的最後一天,前兩天都寫了超多程式碼,今天的內容來點比較輕鬆的
不知道各位有沒有過這種困擾:如果我先把 ls 設定成 ls -l 的別名了,每次下 ls 時 Shell 都會幫我跑 ls -l,那當我需要真正的 ls 時該怎麼辦?
這時候只要用 \ls 就可以了,在 ls 前面加個 反斜線 \ 代表要使用原始的那個 ls,如下圖第一個 ls 其實是 ls -l,\ls 才是最原本的那個 ls

如果使用者輸入反斜線 \ 開頭的指令譬如說 \ls,那就不要跑昨天寫好的 expandAlias,而是把開頭的反斜線去掉並執行 ls
如果不是 \ 開頭的字串譬如說 ls -h,那就要跑進 expandAlias 裡面做替換變成 ls -l -h,接著再執行

func executeInput(input string) error {
// ...
if strings.HasPrefix(input, `\`) {
// 如果指令是 \ 開頭,那就把第一個字元去掉
// \ls -> ls
input = input[1:]
} else {
// 如果不是 \ 開頭,那就還是跑 expandAlias
input = expandAlias(input)
}
// ...
// execute command
}
可以看出 ls 是 alias 過後的 ls -l,而 \ls 則是原本的 ls

總算是完成 alias 部分的最後一天,這幾天我辛苦了大家也辛苦了,明天要實作的是用來尋找指令位置的 which,大家可以期待一下