Shell概念
Shell 是一個(gè)用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁荠呐。Shell 既是一種命令語言挥吵,又是一種程序設(shè)計(jì)語言。
Shell俗稱殼(用來區(qū)別于核)祭椰,是指“提供使用者使用界面”的軟件(命令解析器)臭家。它類似于[DOS]下的command和后來的cmd.exe。它接收用戶命令方淤,然后調(diào)用相應(yīng)的應(yīng)用程序钉赁。即用戶通過Shell來同系統(tǒng)內(nèi)核做交互。
Shell 腳本(shell script)携茂,是一種為 shell 編寫的腳本程序你踩。
業(yè)界所說的 shell 通常都是指 shell 腳本,shell 和 shell script 是兩個(gè)不同的概念邑蒋。由于習(xí)慣的原因姓蜂,本文出現(xiàn)的 "shell編程" 都是指 shell 腳本編程,不是指開發(fā) shell 自身医吊。
Shell 編程跟 java钱慢、php 編程一樣,只要有一個(gè)能編寫代碼的文本編輯器和一個(gè)能解釋執(zhí)行的腳本解釋器就可以了卿堂。
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)
……
在一般情況下懒棉,人們并不區(qū)分 Bourne Shell 和 Bourne Again Shell,所以览绿,像 #!/bin/sh策严,它同樣也可以改為 #!/bin/bash。
' #! ' 是告訴系統(tǒng)其后路徑所指定的程序即是解釋此腳本文件的 Shell 程序饿敲。
Hello World
打開文本編輯器(可以使用 vi/vim 命令來創(chuàng)建文件)妻导,新建一個(gè)文件 test.sh,擴(kuò)展名為 sh(sh代表shell)怀各,擴(kuò)展名并不影響腳本執(zhí)行倔韭,見名知意就好,如果你用 php 寫 shell 腳本瓢对,擴(kuò)展名就用 php 好了寿酌。
來,下面就是著名的HelloWorld:
#!/bin/bash
echo "Hello World !"
執(zhí)行結(jié)果如下圖所示:
ps:如果遇到終端提示:permission denied
那就表示遇到了權(quán)限問題硕蛹,用下面的命令即可解決:
chmod 777 /Users/caobo/Desktop/helloWorld.sh
結(jié)果如圖所示:
相反的醇疼,關(guān)閉所有權(quán)限則用下面的即可:
chmod 111 /Users/caobo/Desktop/helloWorld.sh
結(jié)果如圖所示:
sh/bash/csh/Tcsh/ksh/pdksh等shell的區(qū)別
sh(全稱 Bourne Shell): 是UNIX最初使用的 shell,而且在每種 UNIX 上都可以使用法焰。
Bourne Shell 在 shell 編程方面相當(dāng)優(yōu)秀秧荆,但在處理與用戶的交互方面做得不如其他幾種 shell。
bash(全稱 Bourne Again Shell): LinuxOS 默認(rèn)的壶栋,它是 Bourne Shell 的擴(kuò)展辰如。
與 Bourne Shell 完全兼容,并且在 Bourne Shell 的基礎(chǔ)上增加了很多特性贵试×鸲担可以提供命令補(bǔ)全,命令編輯和命令歷史等功能毙玻。它還包含了很多 C Shell 和 Korn Shell 中的優(yōu)點(diǎn)豌蟋,有靈活和強(qiáng)大的編輯接口,同時(shí)又很友好的用戶界面桑滩。
**csh(全稱 C Shell): **是一種比 Bourne Shell更適合的變種 Shell梧疲,它的語法與 C 語言很相似。
**Tcsh: **是 Linux 提供的 C Shell 的一個(gè)擴(kuò)展版本运准。
Tcsh 包括命令行編輯幌氮,可編程單詞補(bǔ)全,拼寫校正胁澳,歷史命令替換该互,作業(yè)控制和類似 C 語言的語法,他不僅和 Bash Shell 提示符兼容韭畸,而且還提供比 Bash Shell 更多的提示符參數(shù)宇智。
**ksh (全稱 Korn Shell): **集合了 C Shell 和 Bourne Shell 的優(yōu)點(diǎn)并且和 Bourne Shell 完全兼容蔓搞。
**pdksh: **是 Linux 系統(tǒng)提供的 ksh 的擴(kuò)展。
pdksh 支持人物控制随橘,可以在命令行上掛起喂分,后臺(tái)執(zhí)行,喚醒或終止程序机蔗。