本來(lái)是想看一些關(guān)于xss的相關(guān)內(nèi)容,看著看著突然覺得還是要shell也一起看的好戳葵,因此就有了這邊文章(淺嘗輒止無(wú)笑)。
Shell本身是一個(gè)用C語(yǔ)言編寫的程序,它是用戶使用Linux的橋梁筋遭。Shell既是一種命令語(yǔ)言,又是一種程序設(shè)計(jì)語(yǔ)言暴拄。作為命令語(yǔ)言漓滔,它交互式地解釋和執(zhí)行用戶輸入的命令;作為程序設(shè)計(jì)語(yǔ)言乖篷,它定義了各種變量和參數(shù)响驴,并提供了許多在高級(jí)語(yǔ)言中才具有的控制結(jié)構(gòu),包括循環(huán)和分支撕蔼。
它雖然不是Linux系統(tǒng)核心的一部分豁鲤,但它調(diào)用了系統(tǒng)核心的大部分功能來(lái)執(zhí)行程序秽誊、建立文件并以并行的方式協(xié)調(diào)各個(gè)程序的運(yùn)行。因此琳骡,對(duì)于用戶來(lái)說(shuō)锅论,shell是最重要的實(shí)用程序,深入了解和熟練掌握shell的特性極其使用方法日熬,是用好Linux系統(tǒng)的關(guān)鍵棍厌。也就是說(shuō),shell使用的熟練程度反映了用戶對(duì)Linux使用的熟練程度竖席。
Shell有兩種執(zhí)行命令的方式:
?交互式(Interactive):解釋執(zhí)行用戶的命令耘纱,用戶輸入一條命令,Shell就解釋執(zhí)行一條毕荐。(這種方式是和我們大前端聯(lián)系最為密切的)
?批處理(Batch):用戶事先寫一個(gè)Shell腳本(Script)束析,其中有很多條命令,讓Shell一次把這些命令執(zhí)行完憎亚,而不必一條一條地敲命令员寇。
Shell腳本和編程語(yǔ)言很相似,也有變量和流程控制語(yǔ)句第美,但Shell腳本是解釋執(zhí)行的蝶锋,不需要編譯,Shell程序從腳本中一行一行讀取并執(zhí)行這些命令什往,相當(dāng)于一個(gè)用戶把腳本中的命令一行一行敲到Shell提示符下執(zhí)行扳缕。
Shell初學(xué)者請(qǐng)注意,在平常應(yīng)用中别威,建議您不要用 root 帳號(hào)運(yùn)行 Shell 躯舔。作為普通用戶,不管您有意還是無(wú)意省古,都無(wú)法破壞系統(tǒng)粥庄;但如果是 root,那就不同了豺妓,只要敲幾個(gè)字母惜互,就可能導(dǎo)致災(zāi)難性后果。
幾種常見的Shell###
上面提到過琳拭,Shell是一種腳本語(yǔ)言载佳,那么,就必須有解釋器來(lái)執(zhí)行這些腳本臀栈。
Linux上常見的Shell腳本解釋器有bash、sh挠乳、ash权薯、csh姑躲、ksh,習(xí)慣上把它們稱作一種Shell盟蚣。我們常說(shuō)有多少種Shell黍析,其實(shí)說(shuō)的是Shell腳本解釋器。(以下僅供參考網(wǎng)上抄的)
bash
bash是Linux系統(tǒng)默認(rèn)使用的shell屎开。bash由Brian Fox和Chet Ramey共同完成阐枣,是BourneAgain Shell的縮寫,內(nèi)部命令一共有40個(gè)奄抽。
Linux使用它作為默認(rèn)的shell是因?yàn)樗兄T如以下的特色:
?可以使用類似DOS下面的doskey的功能蔼两,用方向鍵查閱和快速輸入并修改命令。
?自動(dòng)通過查找匹配的方式給出以某字符串開頭的命令逞度。
?包含了自身的幫助功能额划,你只要在提示符下面鍵入help就可以得到相關(guān)的幫助。
sh
sh 由Steve Bourne開發(fā)档泽,是Bourne Shell的縮寫俊戳,各種UNIX系統(tǒng)都配有sh。
ash
ash shell 是由Kenneth Almquist編寫的馆匿,Linux中占用系統(tǒng)資源最少的一個(gè)小shell抑胎,它只包含24個(gè)內(nèi)部命令,因而使用起來(lái)很不方便渐北。
csh
csh 是Linux比較大的內(nèi)核阿逃,它由以William Joy為代表的共計(jì)47位作者編成,共有52個(gè)內(nèi)部命令腔稀。該shell其實(shí)是指向/bin/tcsh這樣的一個(gè)shell盆昙,也就是說(shuō),csh其實(shí)就是tcsh焊虏。
ksh
ksh 是Korn shell的縮寫淡喜,由Eric Gisin編寫,共有42條內(nèi)部命令诵闭。該shell最大的優(yōu)點(diǎn)是幾乎和商業(yè)發(fā)行版的ksh完全兼容炼团,這樣就可以在不用花錢購(gòu)買商業(yè)版本的情況下嘗試商業(yè)版本的性能了。
還好之前對(duì)C一些了解這對(duì)我在了解shell上有很大的幫助疏尿。