[Linux]Shell的學習
- 什麽是Shell
Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設計語言。
Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。
Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一個典型的圖形界面 Shell。
- Shell腳本
Shell 腳本(shell script),是一種為 shell 編寫的腳本程序。
業界所說的 shell 通常都是指 shell 腳本,但我們要知道,
由於習慣的原因,簡潔起見,本文出現的 "shell編程" 都是指 shell 腳本編程,不是指開發 shell 自身。
- Shell環境
Shell 編程跟 java、php 編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就可以了。
Linux 的 Shell 種類眾多,常見的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell
- Shell for Root(/sbin/sh)
以上幾種Shell具體區分如下:
- sh(全稱 Bourne Shell): 是UNIX最初使用的 shell,而且在每種 UNIX 上都可以使用。
Bourne Shell 在 shell 編程方面相當優秀,但在處理與用戶的交互方面做得不如其他幾種 shell。 - bash(全稱 Bourne Again Shell): LinuxOS 默認的,它是 Bourne Shell 的擴展。
與 Bourne Shell 完全兼容,並且在 Bourne Shell 的基礎上增加了很多特性。可以提供命令補全,命令編輯和命令歷史等功能。它還包含了很多
- csh(全稱 C Shell): 是一種比 Bourne Shell更適合的變種 Shell,它的語法與 C 語言很相似。
- Tcsh: 是 Linux 提供的 C Shell 的一個擴展版本。
Tcsh 包括命令行編輯,可編程單詞補全,拼寫校正,歷史命令替換,作業控制和類似 C 語言的語法,他不僅和 Bash Shell 提示符兼容,而且還提供比 Bash Shell 更多的提示符參數。 - ksh (全稱 Korn Shell): 集合了 C Shell 和 Bourne Shell 的優點並且和 Bourne Shell 完全兼容。
- pdksh: 是 Linux 系統提供的 ksh 的擴展。pdksh 支持人物控制,可以在命令行上掛起,後臺執行,喚醒或終止程序。
- 創建一個Shell腳本
在文件夾中用touch或文本編輯器vi/vim命令新建一個以.sh為擴展名的腳本,如test.sh。
註意擴展名不影響腳本執行,但要做到見名知意。
輸入第一行代碼。
- #!/bin/bash
- echo "Hello World !"
其中,#! 是一個約定的標記,它告訴系統這個腳本需要什麽解釋器來執行,即使用哪一種shell;
Echo命令用於向窗口輸出文本。
運行shell:
- 作為可執行程序:
將代碼保存後,進入相應的目錄,執行以下命令
chmod u+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 告訴系統說,就在當前目錄找。
- 作為解釋器參數
這種運行方式是直接運行解釋器,參數是shell腳本的文件名:
/bin/sh test.sh
這種方式運行腳本不需要字第一行指定解釋器信息。
[Linux]Shell的學習