shell
1. shell是一個(gè)命令解釋器,處于內(nèi)核和用戶之間,負(fù)責(zé)把用戶的指令傳遞給內(nèi)核并且把執(zhí)行結(jié)果回顯給用戶.
2. Shell 是一個(gè)用C語(yǔ)言編寫(xiě)的程序绍弟,它是用戶使用Linux的橋梁张峰,同時(shí)腻格,shell也可以作為一門(mén)強(qiáng)大的編程語(yǔ)言
*我們常說(shuō)的shell是命令行解釋器的意思串慰,也有內(nèi)核上的一層殼的含義*
3. shell常見(jiàn)的幾種類(lèi)型有sh栋盹、csh绞灼、bash利术、zsh等提供的腳本支持.
4. shell的功能點(diǎn)在于外部命令的使用,其內(nèi)部數(shù)據(jù)處理方面低矮,側(cè)重文本(或者說(shuō)字符串印叁,或字符流)處理.
而對(duì)運(yùn)算和其他基本數(shù)據(jù)結(jié)構(gòu)的原生較弱(例如常用的array、set军掂、map等等)轮蜕,功能目標(biāo)在于實(shí)現(xiàn)命令自動(dòng)化.
但是呢,實(shí)現(xiàn)命令自動(dòng)化的同時(shí)蝗锥,Shell需要依賴(lài)其他程序才能完成大部分的工作跃洛,這是它的缺陷也是一個(gè)優(yōu)點(diǎn)吧.
但它不容置疑的長(zhǎng)處是:簡(jiǎn)潔的腳本語(yǔ)言標(biāo)記方式,而且比C語(yǔ)言編寫(xiě)的程序執(zhí)行更快终议、更有效率汇竭。
所以我們?nèi)绻凶鲞\(yùn)維甚至是基礎(chǔ)管理Linux服務(wù)器的同學(xué),只要學(xué)會(huì)了shell編程穴张,大大的可以節(jié)約我們的時(shí)間细燎,更快捷的管理我們的服務(wù)器了。
bash是Linux標(biāo)準(zhǔn)默認(rèn)的shell陆馁,是BourneAgain Shell的縮寫(xiě).
因?yàn)閎ash有很多特性找颓,比如:
1. 可以使用類(lèi)似DOS下面的doskey的功能,
2. 用方向鍵查閱和快速輸入并修改命令叮贩,
3. 自動(dòng)通過(guò)查找匹配的方式給出以某字符串開(kāi)頭的命令击狮,
4. 還有就是bash包含了自身的幫助功能佛析,你只要在提示符下面鍵入help就可以得到相關(guān)的幫助。
在Linux系統(tǒng)中我們經(jīng)潮肱睿看見(jiàn)以:
#!/bin/bash
開(kāi)頭的文件內(nèi)容寸莫,這就是聲明了該文件是一個(gè)基于bash的shell編程文件
關(guān)于shell的小程序
- m.sh:
#!/bin/bash cd /home/liwei/mongodb/bin ./mongod --dbpath=../liwei_db
加入要執(zhí)行這個(gè)文件,則輸入:
sh m.sh
- 執(zhí)行shell的過(guò)程中档冬,我們可以通過(guò)>或者>>來(lái)記錄下一些節(jié)點(diǎn)的結(jié)果報(bào)告,
#!/bin/bash cd /lamp ls *.tar.gz > ls.list for TAR in \
cat ls.list`
do
tar -zxf $TAR
done`
將lamp目錄里面所有的壓縮包膘茎,批量解壓出來(lái),這樣我們可以看出ls的結(jié)果集可以拿出來(lái)參與下一個(gè)指令的執(zhí)行酷誓。
- 將某個(gè)文件夾下所有的文件名字里的大寫(xiě)字母改成小寫(xiě)字母
#!/bin/bash for file in \
ls | grep '[A-Z]'`
do
str=`echo $file|tr 'A-Z' 'a-z'`
mv $file $str
done`
tip:tr表示替換
- 將空文件披坏,沒(méi)用的文件,多余的文件刪除掉
for filename in \
ls`
do
if test -d $filename
then b=0
else
a=$(ls -l $filename | awk '{ print $5 }')
if test $a -eq 0
then rm $filename
fi
fi
done`
tip:test -d:如果文件為一個(gè)目錄盐数,則為真
fi:為if的結(jié)束語(yǔ)棒拂,相當(dāng)于end if
awk:就是把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片玫氢,切開(kāi)的部分再進(jìn)行各種分析處理帚屉。