Shell 教學

Shell 是一個用 C 語言編寫的程式,它是用戶使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程式設計語言。

Shell 是指一種應用程式,這個應用程式提供了一個介面,用戶通過這個介面訪問操作系統內核的服務。

Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一個典型的圖形介面 Shell。

Shell 線上工具


Shell 腳本

Shell 腳本(shell script),是一種為 shell 編寫的腳本程式。

業界所說的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。

由於習慣的原因,簡潔起見,本文出現的 "shell編程" 都是指 shell 腳本編程,不是指開發 shell 自身。


Shell 環境

Shell 編程跟 JavaScript、php 編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就可以了。

Linux 的 Shell 種類眾多,常見的有:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)
  • ……

本教程關注的是 Bash,也就是 Bourne Again Shell,由於易用和免費,Bash 在日常工作中被廣泛使用。同時,Bash 也是大多數Linux 系統默認的 Shell。

在一般情況下,人們並不區分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同樣也可以改為 #!/bin/bash

#! 告訴系統其後路徑所指定的程式即是解釋此腳本檔的 Shell 程式。


第一個shell腳本

打開文本編輯器(可以使用 vi/vim 命令來創建檔),新建一個檔 test.sh,擴展名為 sh(sh代表shell),擴展名並不影響腳本執行,見名知意就好,如果你用 php 寫 shell 腳本,擴展名就用 php 好了。

輸入一些代碼,第一行一般是這樣:

實例

#!/bin/bash
echo "Hello World !"

#! 是一個約定的標記,它告訴系統這個腳本需要什麼解釋器來執行,即使用哪一種 Shell。

echo 命令用於向窗口輸出文本。

運行 Shell 腳本有兩種方法:

1、作為可執行程式

將上面的代碼保存為 test.sh,並 cd 到相應目錄:

chmod +x ./test.sh  #使腳本具有執行許可權
./test.sh  #執行腳本

注意,一定要寫成 ./test.sh,而不是 test.sh,運行其他二進位的程式也一樣,直接寫 test.sh,linux 系統會去 PATH 裏尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 裏,你的當前目錄通常不在 PATH 裏,所以寫成 test.sh 是會找不到命令的,要用 ./test.sh 告訴系統說,就在當前目錄找。

2、作為解釋器參數

這種運行方式是,直接運行解釋器,其參數就是 shell 腳本的檔案名,如:

/bin/sh test.sh
/bin/php test.php

這種方式運行的腳本,不需要在第一行指定解釋器資訊,寫了也沒用。