所以shell就是人們跟kernel之間的溝通橋樑
因為shell提供了很多的功能,他也就非常複雜,另外就是,很多人喜歡發展自己喜歡的shell,例如c shell就是熟悉c程式語言的人發展出來的,不過目前最風行的叫做bash shell
- shell的功能有哪些呢?
- 執行指令
- 指令的補全(延長全人類生命)
- alias(重新定義指令)
- 控制process(程式)
- shell scripts(一些方便的程式,如批次處理或者定時處理事項)
當我們打開一個terminal的時候,就會執行一個shell,他提供了許多指令,但shell並不是提供所有的有用程式(也就是說,有一部分事由其他程式呼叫來使用的使用),我們可以用type command來得知,例如說,如果打入type cd,他會告訴你這是一個shell內建的指令,但是type telinit,他會顯示出路徑,表示這並非一個內建的指令,如果他是alias(別名)他則會列出alias的指令
Shell的變數,是一串取代某個特殊符號的名稱,比方說,我們用$HOME取代原本的/home/your_name這樣的字串,這也啥好處呢?原本要打入cd /home/your_name才可以回到家目錄,就變成打入cd $HOME就可以了,這可以方便管理跟縮短我們打字的時間
那如何設定自己的變數呢,直接使用=就可以了,例如,myname="crazy_duke";一般如果沒有空白,可以直接打就好myname=crazy_duke,如果有空白,就加上雙引號;接著觀察可以使用echo $myname
`(quoter),一般位於鍵盤上面橫的數字鍵1旁邊,被他包圍的字串,會被視為指令,然後執行後回傳的結果在當作字串,例如cd /lib/modules/`uname -r`/kernel
set指令則可以列出所有的變數,env指令可以列出所有目前的環境變數,有幾個常用的shell環境變數
- HOME:家目錄
- SHELL:目前使用的Shell的名稱,如bash
- PATH:可執行程式的目錄集合
- LANG:使用的語言,如zh_TW.UTF-8
- XMODIFIERS:一般是輸入法,如@im=SCIM
晚一點在談談array的宣告跟一些常用的指令,shell真是博大精深阿
沒有留言:
張貼留言