- 1、Shell 是什么?
- 2、Shell 的分類
- 3、查看Linux系統(tǒng)支持的 shell:/etc/shells
- 4、echo 輸出命令
- 5、腳本執(zhí)行方式
1、Shell 是什么?
和大家通常說的shell是一門編程語言的說法其實是不完全正確的。
①、shell 是一個命令行解釋器,它為用戶提供了一個向 Linux 內(nèi)核發(fā)送請求以便運行程序的界面系統(tǒng)級程序,用戶可以用 shell 來啟動、掛起、停止甚至是編寫一些程序。
比如,我們現(xiàn)在操作的界面就是shell,我們輸入一些命令,通過shell 去翻譯為機(jī)器語言,然后由硬件去執(zhí)行這些命令。
②、shell 是一個功能很強(qiáng)大的編程語言,它易編寫、易調(diào)試,而且靈活性強(qiáng)。shell 是解釋執(zhí)行的腳本語言,在 shell 中可以直接調(diào)用 Linux 系統(tǒng)命令。

其實windows類似于shell的就是它的圖形交互界面,我們在windows系統(tǒng)中打開文件,刪除文件等操作,就是向windows系統(tǒng)發(fā)送命令。
2、Shell 的分類




3、查看Linux系統(tǒng)支持的 shell:/etc/shells

我們可以在shell解釋器中直接輸入shell名稱進(jìn)行切換

4、echo 輸出命令
這個命令如果學(xué)過Java的類似于 System.out.println(),如果學(xué)過C語言的類似于 printf(),在shell 當(dāng)中語法形式如下:
echo 【選項】【輸出內(nèi)容】
-e 表示支持反斜杠控制的字符轉(zhuǎn)換,也就是轉(zhuǎn)義字符。

范例:

5、腳本執(zhí)行方式
首先我們編寫一個shell 腳本。通過 vi hello.sh,打開 hello.sh 文件,然后在文件中添加如下內(nèi)容:

①、我們說Linux系統(tǒng)是不區(qū)分文件后綴名的,這里我們學(xué)習(xí)的是 bash,所以創(chuàng)建文件 hello.sh,后綴名最好加上.sh(雖然不加也沒問題),便于我們識別。
②、腳本的第一行 #!,這是一個約定的標(biāo)記,它告訴系統(tǒng)這個腳本需要用什么解釋器去執(zhí)行,即使用哪一種 shell,所以學(xué)習(xí) bash,第一行固定都是 #!/bin/bash。這是不能省略的。
創(chuàng)建完畢之后,接下來執(zhí)行該腳本,有如下兩種方式:
①、作為可執(zhí)行程序
cd /tmp #進(jìn)入到腳本所在的目錄
chmod +x ./hello.sh #使得腳本具有可執(zhí)行權(quán)限
./hello.sh #執(zhí)行腳本
注意,一定要寫成 ./hello.sh,而不是 hello.sh,運行其它二進(jìn)制的程序也一樣,直接寫 hello.sh,linux 系統(tǒng)會去 PATH 里尋找有沒有叫 hello.sh 的(這是后面會講的環(huán)境變量的配置),而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的當(dāng)前目錄通常不在 PATH 里,所以寫成 hello.sh 是會找不到命令的,要用 ./hello.sh 告訴系統(tǒng)說,就在當(dāng)前目錄找。

?、凇⒆鳛榻忉屍鲄?shù)
也就是直接運行解釋器,其參數(shù)就是 shell 腳本的文件名,如下:
/bin/sh hello.sh
或者
bash hello.sh
注意:這種方式執(zhí)行腳本,并不需要第一行寫上 #!/bin/bash。