《linux課程資源Shell腳本基礎課件》由會員分享,可在線閱讀,更多相關《linux課程資源Shell腳本基礎課件(21頁珍藏版)》請在裝配圖網上搜索。
1、Network Optimization Expert Team,Network Optimization Expert Team,Linux,模塊,2,LINUX,進階,-,系統(tǒng)管理,主講人:芮坤坤,2.5 Linux,進程及作業(yè)管理,Linux Shell,腳本基礎,Bash Shell,基礎,正則表達式,高級文本處理命令,Shell,腳本,2.5.1 Bash Shell,基礎,Shell,也是,Unix/Linux,最重要的軟件之一,,Shell,提供了用戶與操作系統(tǒng)之間通訊的方式。這種通訊可以以交互方式,也可以,Shell,腳本(非交互)方式執(zhí)行。,Shell,腳本是存放在文件中的一
2、串,Shell,和操作系統(tǒng)命令,,Shell,腳本可以被重復使用,常見的,Shell,Bourne Shell,是由,Steven Bourne,編寫的,是,Unix,的默認的,Shell,。,Bourne Shell,的,Shell,編程能力很強。但不能處理基于命令的用戶交互模式。,bash Shell,是,Bourne Shell,的增強版,C shell,是由加利福尼亞大學伯克利分校的,Bill Joy,編寫,能提供,Bourne Shell,所不能處理的用戶交互模式,比如命令補全、命令別名、歷史命令替換等等。,C Shell,的編程能力不如,Bourne shell,,但其語法和,C,
3、語言類似,所以,C,程序員將發(fā)現(xiàn),C Shell,很順手,Korn Shell,是由,Dave Korn,編寫的。,Korn shell,融合了,C Shell,和,Bourne Shell,的優(yōu)點,并和,Bourne shell,完全兼容。,Korn shell,的效率很高,其命令交互界面和編程交互界面都很不錯,bash Shell,命令列表,使用分號隔開,使用,&,條件隔開,使用,|,條件隔開,rootsrv#cd/boot;ll,rootsrv#service atd restart&chkconfig atd on,rootsrv#cd/bot|mkdir/bot,bash Shell
4、,在子,Shell,中運行命令,命令別名,命令替換,大括號替換,變量替換,算術替換,命令替換,rootsrv#(cd/boot;ll),rootsrv#alias h=head,rootsrv#mkdir-p 24/Season1,2,3,4,5,6,7,8,rootsrv#echo$($PRICE*NUMBER),rootsrv#mkdir reports.$(date+%d%b%y),標準輸入,/,輸出,在,Linux,系統(tǒng)中,輸入流被稱做標準輸入(,STDIN,,文件編號,0,);輸出流有二種,標準輸出(,STDOUT,,文件編號,1,)、標準錯誤(,STDERR,,文件編號,2,),標
5、準輸出是終端程序執(zhí)行后輸出的正確結果,標準輸入,/,輸出,標準輸出重定向,使用“,”,將輸出寫入文件,如果指定的文件已存在將會刪除文件中原有的內容,使用“,”,將輸出追加到文件,如果指定的文件已存在將會把輸出附加到文件中,標準錯誤重定向,使用“,2”,將輸出寫入文件,如果指定的文件已存在將會刪除文件中原有的內容,使用“,2”,將輸出追加到文件,如果指定的文件已存在將會把輸出附加到文件中,標準輸入重定向,bash Shell,可以使用“,”,將命令中接收標準輸入的途徑由默認的鍵盤改為指定的文件,管道,管道功能只需在前一個命令和后一個命令中間使用“,|”,分隔,這樣前一個命令的輸出就會成為后一個命
6、令的輸入,rootsrv#netstat-tunlp|grep httpd,rootsrv#grep-v#/boot/grub/grub.conf|grep-v$,rootsrv#ll|head-n 10|tail-n 3,2.5.2,正則表達式,正則表達式,又稱正規(guī)表示法、常規(guī)表示法,計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。,正則表達式,正則表達式應用,實例應用,1.,驗證用戶名和密碼:(,a-zA-Zw5,15$,)正確格式:,A-Za-z_0-9,組成,并且第一個字
7、必須為字母,616,位;,2.,驗證電話號碼:(,(d3,4-)d7,8$,)正確格式:,xxx/xxxx-xxxxxxx/xxxxxxxx,;,3.,驗證手機號碼:,13|4|5|7|80-9d8$,;,4.,驗證身份證號(,15,位或,18,位數字):,d140-9,0-9xX,;,5.,驗證,Email,地址:,(w+(-+.w+)*w+(-.w+)*.w+(-.w+)*$),;,6.,只能輸入由數字和,26,個英文字母組成的字符串:,(A-Za-z0-9+$);,7.,整數或者小數:,0-9+(.0-9+)0,1$,2.5.3,高級文本處理命令,sort,命令的功能是對文件中的各行進行
8、排序。,語法:,sort,選項,文件,說明:,sort,命令對指定文件中所有的行進行排序,并將結果顯示在標準輸出上。如不指定輸入文件或使用“,-”,,則表示排序內容來自標準輸入。,sort,排序是根據從輸入行抽取的一個或多個關鍵字進行比較來完成的。排序關鍵字定義了用來排序的最小的字符序列。缺省情況下以整行為關鍵字按,ASCII,字符順序進行排序。,-m,若給定文件已排好序,合并文件。,-c,檢查給定文件是否已排好序,如果它們沒有都排好序,則打印一個出錯信息,并以狀態(tài)值,1,退出。,-u,對排序后認為相同的行只留其中一行。,-o,輸出文件 將排序輸出寫到輸出文件中而不是標準輸出,如果輸出文件是輸
9、入文件之一,,sort,先將該文件的內容寫入一個臨時文件,然后再排序和寫輸出結果。,改變缺省排序規(guī)則的選項主要有:,-d,按字典順序排序,比較時僅字母、數字、空格和制表符有意義。,-f,將小寫字母與大寫字母同等對待。,-I,忽略非打印字符。,-M,作為月份比較:“,JAN”,-r,按逆序輸出排序結果。,2.5.4 Shell,腳本,Shell,腳本并不是一個復雜的程序語言,其按行解釋的。,雖然在,Linux,中擴展名并沒有實際的作用但一般為了方便閱讀,,bash Shell,的腳本文件一般使用“,sh”,作為擴展名。,一行中“,#”,之后的內容表示是注釋,注釋在執(zhí)行過程中將被忽略。,在,She
10、ll,腳本文件的第一行應該指定向哪個解釋器發(fā)送指令,目前在,RHEL5,中默認使用,bash Shell,,所以第一行應該是“,#!/bin/sh”,。,在執(zhí)行已編寫好的腳本時可以使用二種方式:對于有執(zhí)行權限的腳本文件可以使用“,./”,的方式執(zhí)行;對于沒有執(zhí)行權限的腳本文件可以使用“,sh”,的方式執(zhí)行。,Linux,系統(tǒng)中每個進程都是有壽命的,Shell,腳本,變量,局部變量,環(huán)境變量,rootsrv#strA=ctu,rootsrv#strB=dod,rootsrv#echo$strA,rootsrv#export strA,Shell,腳本,向腳本傳遞參數,在腳本中可以使用“,$1”,
11、接受傳遞給腳本的第一個參數、使用“,$2”,接受傳遞給腳本的第二個參數,除了可以獲得每個參數值以外,還可以使用“,$*”,接受所有的參數、使用“,$0”,獲取當前腳本的名稱、使用“,$#”,獲取傳遞給腳本的參數個數、使用“,$”,獲取當前腳本運行的,PID,rootsrv#cat sh2.sh,#!/bin/sh,echo Script Name Is:$0,echo First Variable:$1,echo Second Variable:$2,echo Tertiary Variable:$3,echo All Variable:$*,Shell,腳本,條件測試,字符串測試,數值測試,
12、文件狀態(tài)測試,邏輯操作符,Shell,腳本,判斷結構,if;then,#,當條件為真時執(zhí)行的內容,fi,if;then,#,當條件為真時執(zhí)行的內容,else,#,當條件為假時執(zhí)行的內容,fi,if;then,#,當條件,1,為真時執(zhí)行的內容,elif;then,#,當條件,2,為真時執(zhí)行的內容,else,#,當條件,1,和條件,2,為假時執(zhí)行的內容,fi,Shell,腳本,多選擇語句,case,值,in,模式,1),#,當符合模式,1,時執(zhí)行的內容,;,模式,2),#,當符合模式,2,時執(zhí)行的內容,;,.,;,esac,Shell,腳本,循環(huán)結構,while,條件,do,循環(huán)體,done,until,條件,do,循環(huán)體,done,for (,初始值,;,限制值,;,步長,),do,循環(huán)體,done,for var in con1 con2 con3,do,循環(huán)體,done,Shell,腳本,循環(huán)結構,while,條件,do,循環(huán)體,done,until,條件,do,循環(huán)體,done,for (,初始值,;,限制值,;,步長,),do,循環(huán)體,done,for var in con1 con2 con3,do,循環(huán)體,done,