一 、 shell命令解析以及識別通配符
Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內核去執行 。
實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令并且把它們送到內核。不僅如此,Shell有自己的編程語言用于對命令的編輯,它允許用戶編寫由shell命令組成的程序。Shell編程語言具有普通編程語言的很多特點,比如它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其他應用程序具有同樣的效果。
shell是一個抽象概念,shell的一切操作都在計算機內部,負責處理人機交互,執行腳本等,是操作系統能正常運行的重要組 成部分
shell在解釋命令的過程中類似于編譯器的預編譯過程。shell對于輸入的命令優先解釋所有的特殊字符,再對轉換完成的新命令行進行內核的系統調用。在輸入命令的過程中,輸入完命令直到按下enter的時候,然后shell才會以進程方式執行你所提交的命令,輸入的命令的每一個charactor(字符)分為如下兩種:
*literal(文字):也就是普通純文字,對shell來說沒有特殊功能。
*meta(元字符):對shell來說,具有特定功能的保留字。
解釋過程: 分割管道(將指令切成個別的命令,以哥哥命令進行以下解析)------》取出token(使用分割字符-----空格、tab或者eter將命令分割成token)---》替換別名(檢查命令的第一個token是不是別名,若是則把別名替換成真正的命令)---》括號擴展
(如ltouch a{a,b}會擴展