今天是 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
,大家可以期待一下