linux課程資源Shell腳本基礎(chǔ)課件_第1頁
linux課程資源Shell腳本基礎(chǔ)課件_第2頁
linux課程資源Shell腳本基礎(chǔ)課件_第3頁
linux課程資源Shell腳本基礎(chǔ)課件_第4頁
linux課程資源Shell腳本基礎(chǔ)課件_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

模塊2

LINUX進階-系統(tǒng)管理主講人:芮坤坤模塊2LINUX進階-系統(tǒng)管理主講人:芮坤坤2.5Linux進程及作業(yè)管理LinuxShell腳本基礎(chǔ)BashShell基礎(chǔ)正則表達式高級文本處理命令Shell腳本2.5Linux進程及作業(yè)管理LinuxShell腳本2.5.1BashShell基礎(chǔ)Shell也是Unix/Linux最重要的軟件之一,Shell提供了用戶與操作系統(tǒng)之間通訊的方式。這種通訊可以以交互方式,也可以Shell腳本(非交互)方式執(zhí)行。Shell腳本是存放在文件中的一串Shell和操作系統(tǒng)命令,Shell腳本可以被重復(fù)使用2.5.1BashShell基礎(chǔ)Shell也是Unix/常見的ShellBourneShell是由StevenBourne編寫的,是Unix的默認的Shell。BourneShell的Shell編程能力很強。但不能處理基于命令的用戶交互模式。bashShell是BourneShell的增強版Cshell是由加利福尼亞大學(xué)伯克利分校的BillJoy編寫,能提供BourneShell所不能處理的用戶交互模式,比如命令補全、命令別名、歷史命令替換等等。CShell的編程能力不如Bourneshell,但其語法和C語言類似,所以C程序員將發(fā)現(xiàn)CShell很順手KornShell是由DaveKorn編寫的。Kornshell融合了CShell和BourneShell的優(yōu)點,并和Bourneshell完全兼容。Kornshell的效率很高,其命令交互界面和編程交互界面都很不錯常見的ShellBourneShell是由StevenBbashShell命令列表使用分號隔開使用&&條件隔開使用||條件隔開[root@srv~]#cd/boot;ll[root@srv~]#serviceatdrestart&&chkconfigatdon[root@srv~]#cd/bot||mkdir/botbashShell命令列表[root@srv~]#cdbashShell在子Shell中運行命令命令別名命令替換大括號替換變量替換算術(shù)替換命令替換[root@srv~]#(cd/boot;ll)[root@srv~]#aliash=head[root@srv~]#mkdir-p24/Season{1,2,3,4,5,6,7,8}[root@srv~]#echo$(($PRICE*NUMBER))[root@srv~]#mkdirreports.$(date+%d%b%y)bashShell在子Shell中運行命令[root@sr標(biāo)準輸入/輸出在Linux系統(tǒng)中,輸入流被稱做標(biāo)準輸入(STDIN,文件編號0);輸出流有二種,標(biāo)準輸出(STDOUT,文件編號1)、標(biāo)準錯誤(STDERR,文件編號2),標(biāo)準輸出是終端程序執(zhí)行后輸出的正確結(jié)果標(biāo)準輸入/輸出標(biāo)準輸入/輸出標(biāo)準輸出重定向使用“>”將輸出寫入文件,如果指定的文件已存在將會刪除文件中原有的內(nèi)容使用“>>”將輸出追加到文件,如果指定的文件已存在將會把輸出附加到文件中標(biāo)準錯誤重定向使用“2>”將輸出寫入文件,如果指定的文件已存在將會刪除文件中原有的內(nèi)容使用“2>>”將輸出追加到文件,如果指定的文件已存在將會把輸出附加到文件中標(biāo)準輸入重定向bashShell可以使用“<”將命令中接收標(biāo)準輸入的途徑由默認的鍵盤改為指定的文件標(biāo)準輸入/輸出標(biāo)準輸出重定向管道管道功能只需在前一個命令和后一個命令中間使用“|”分隔,這樣前一個命令的輸出就會成為后一個命令的輸入[root@srv~]#netstat-tunlp|grephttpd[root@srv~]#grep-v^#/boot/grub/grub.conf|grep-v^$[root@srv~]#ll|head-n10|tail-n3管道管道功能只需在前一個命令和后一個命令中間使用“|”分隔,2.5.2正則表達式正則表達式,又稱正規(guī)表示法、常規(guī)表示法,計算機科學(xué)的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。2.5.2正則表達式正則表達式,又稱正規(guī)表示法、常規(guī)表示法正則表達式正則表達式應(yīng)用——實例應(yīng)用1.驗證用戶名和密碼:("^[a-zA-Z]\w{5,15}$")正確格式:"[A-Z][a-z]_[0-9]"組成,并且第一個字必須為字母6~16位;2.驗證電話號碼:("^(\\d{3,4}-)\\d{7,8}$")正確格式:xxx/xxxx-xxxxxxx/xxxxxxxx;3.驗證手機號碼:"^1[3|4|5|7|8][0-9]\\d{8}$";4.驗證身份證號(15位或18位數(shù)字):"\\d{14}[[0-9],0-9xX]";5.驗證Email地址:("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");6.只能輸入由數(shù)字和26個英文字母組成的字符串:("^[A-Za-z0-9]+$");7.整數(shù)或者小數(shù):^[0-9]+([.][0-9]+){0,1}$正則表達式正則表達式應(yīng)用——實例應(yīng)用2.5.3高級文本處理命令sort命令的功能是對文件中的各行進行排序。語法:sort[選項]文件說明:sort命令對指定文件中所有的行進行排序,并將結(jié)果顯示在標(biāo)準輸出上。如不指定輸入文件或使用“-”,則表示排序內(nèi)容來自標(biāo)準輸入。sort排序是根據(jù)從輸入行抽取的一個或多個關(guān)鍵字進行比較來完成的。排序關(guān)鍵字定義了用來排序的最小的字符序列。缺省情況下以整行為關(guān)鍵字按ASCII字符順序進行排序。2.5.3高級文本處理命令sort命令的功能是對文件中的各-m若給定文件已排好序,合并文件。-c檢查給定文件是否已排好序,如果它們沒有都排好序,則打印一個出錯信息,并以狀態(tài)值1退出。-u對排序后認為相同的行只留其中一行。-o輸出文件將排序輸出寫到輸出文件中而不是標(biāo)準輸出,如果輸出文件是輸入文件之一,sort先將該文件的內(nèi)容寫入一個臨時文件,然后再排序和寫輸出結(jié)果。改變?nèi)笔∨判蛞?guī)則的選項主要有:-d按字典順序排序,比較時僅字母、數(shù)字、空格和制表符有意義。-f將小寫字母與大寫字母同等對待。-I忽略非打印字符。-M作為月份比較:“JAN”<“FEB”p>-r按逆序輸出排序結(jié)果。-m若給定文件已排好序,合并文件。2.5.4Shell腳本Shell腳本并不是一個復(fù)雜的程序語言,其按行解釋的。雖然在Linux中擴展名并沒有實際的作用但一般為了方便閱讀,bashShell的腳本文件一般使用“sh”作為擴展名。一行中“#”之后的內(nèi)容表示是注釋,注釋在執(zhí)行過程中將被忽略。在Shell腳本文件的第一行應(yīng)該指定向哪個解釋器發(fā)送指令,目前在RHEL5中默認使用bashShell,所以第一行應(yīng)該是“#!/bin/sh”。在執(zhí)行已編寫好的腳本時可以使用二種方式:對于有執(zhí)行權(quán)限的腳本文件可以使用“./<文件名>”的方式執(zhí)行;對于沒有執(zhí)行權(quán)限的腳本文件可以使用“sh<文件名>”的方式執(zhí)行。Linux系統(tǒng)中每個進程都是有壽命的2.5.4Shell腳本Shell腳本并不是一個復(fù)雜的程序Shell腳本變量局部變量環(huán)境變量[root@srv~]#strA=ctu[root@srv~]#strB="dod"[root@srv~]#echo$strA[root@srv~]#exportstrAShell腳本變量[root@srv~]#strA=ctShell腳本向腳本傳遞參數(shù)在腳本中可以使用“$1”接受傳遞給腳本的第一個參數(shù)、使用“$2”接受傳遞給腳本的第二個參數(shù),除了可以獲得每個參數(shù)值以外,還可以使用“$*”接受所有的參數(shù)、使用“$0”獲取當(dāng)前腳本的名稱、使用“$#”獲取傳遞給腳本的參數(shù)個數(shù)、使用“$$”獲取當(dāng)前腳本運行的PID[root@srv~]#catsh2.sh#!/bin/shecho"ScriptNameIs:"$0echo"FirstVariable:"$1echo"SecondVariable:"$2echo"TertiaryVariable:"$3echo"AllVariable:"$*Shell腳本向腳本傳遞參數(shù)[root@srv~]#caShell腳本條件測試字符串測試數(shù)值測試文件狀態(tài)測試邏輯操作符Shell腳本條件測試Shell腳本判斷結(jié)構(gòu)if<條件>;then#當(dāng)條件為真時執(zhí)行的內(nèi)容fiif<條件>;then

#當(dāng)條件為真時執(zhí)行的內(nèi)容else

#當(dāng)條件為假時執(zhí)行的內(nèi)容fiif<條件1>;then

#當(dāng)條件1為真時執(zhí)行的內(nèi)容elif<條件2>;then

#當(dāng)條件2為真時執(zhí)行的內(nèi)容else

#當(dāng)條件1和條件2為假時執(zhí)行的內(nèi)容fiShell腳本判斷結(jié)構(gòu)if<條件>;thenShell腳本多選擇語句case值

in

模式1)

#當(dāng)符合模式1時執(zhí)行的內(nèi)容 ;;

模式2)

#當(dāng)符合模式2時執(zhí)行的內(nèi)容 ;; ... ;;esacShell腳本多選擇語句case值inShell腳本循環(huán)結(jié)構(gòu)while[條件]do

循環(huán)體doneuntil[條件]do

循環(huán)體donefor((初始值;限制值;步長))do

循環(huán)體d

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論