版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Linux Shell腳本講解+示例精華版1. vi編輯器向下査找:在Normal模式下,"/”+Keyword,如:/tcp 向上查找:在Normal模式下,"? " +Keyword,如:? tcp替換:在 Normal 模式下,":s” + "/”+Sourceword+“Destword",如::s/abc/bcd 全部替換:在 Normal 模式下,":s" + "/” +Sourceword+ uT + "Destword” + "/g", 如::s/ad/bc/
2、g指定范圉替換:在“:”與“s”間加入范圉,如“:nl, n5s/abc/ddas/g"替換1至5 行,“:1, $s/abc/ddas/g” 替換全部2. Gedit編輯器圖形界面編輯器,在命令行輸入Gedit+文件名即町彈出編輯器并打開文件。優(yōu)點(diǎn):語(yǔ)法 高亮,操作方便。缺點(diǎn):要在圖形界面下操作,遠(yuǎn)程連接比較慢。3. 羅列文件的詳細(xì)信息:k-1如:lsl *.txt可以列出所有以txt為后綴的文件的詳細(xì)信息4.正則表達(dá)式符號(hào)意義*0個(gè)或多個(gè)在*字符之前那個(gè)普通字符匹配任意字符A匹配行首,或后而字符的非$匹配行尾匹配字符集合轉(zhuǎn)義符,屏蔽一個(gè)元字符的特殊意義<>精確匹配符號(hào)
3、n匹配前面字符出現(xiàn)n次n,匹配前面字符至少出現(xiàn)n次ntm匹配前面字符出現(xiàn)n次與m次之間符號(hào)用于匹配前面一個(gè)普通字符的0次或多次重復(fù)hel*o: *符號(hào)前面的普通字符是I,"字符就表示匹配I字符0次或參次,如字符串helo、 hello、hellllllo都可以由hel*o來表示.符號(hào)用于匹配任意一個(gè)字符73.表示前面三個(gè)字符為任意字符,第4和第5個(gè)字符是7和3,最后一個(gè)字符為任 意字符,如xcb738、4J973U都能匹配上述字符串八符號(hào)用于匹配行首,表示行首的字符是八字符后面的那個(gè)字符Acloud表示匹配以cloud開頭的行$符號(hào)匹配行尾,$符號(hào)放在匹配字符之后a、b、1、2等字符
4、屬丁普通字符,普通字符 可以按照字面意思理解,如:a只能理解為英文的小寫字母a,沒有其他隱藏含義。 micky$表示匹配以micky纟占尾的所有行A$表示空白行匹配字符集介,該符號(hào)支持窮舉方法列出字符集介的所有元素0123456789、0-9A-Za-z A-Za-z*匹配所有英文單詞符號(hào)是轉(zhuǎn)義符,用屏蔽一個(gè)元字符的特殊意義V $ V<>符號(hào)是精確匹配符號(hào),該符號(hào)利用符號(hào)屏蔽符號(hào)<the> 精確匹配單詞the, them, they等不匹配系列符號(hào)表示前一個(gè)字符的重復(fù)n:匹配前面字符出現(xiàn)n次,如J03B匹配JOOOBn,:匹配前面字符至少出現(xiàn)n次,如J03,B他配JOO
5、OB、JOOOOB、JOOOOOB等 字符串n,m:匹配前面字符出現(xiàn)n次與m次之間,如JO3,6B匹配JOOOB、JOOOOOOB 等字符串a(chǎn)-z 5:匹配5個(gè)小寫英文字母,比如hell。、house等awk和Perl等Linux工JI還支持止則表達(dá)式擴(kuò)展出來的一些元字符,這些元字符如下表 所示符號(hào)意義)匹配0個(gè)或1個(gè)在其之前的那個(gè)普通字符+匹配1個(gè)或多個(gè)在其之前的那個(gè)普通字符0表示一個(gè)字符集合或用在expr中1表示"或”意義,匹配一組可選的字符通配(globbing)是把一個(gè)包含通配符的非具體文件名擴(kuò)展到存儲(chǔ)在計(jì)算機(jī)、服務(wù)器或 者網(wǎng)絡(luò)上的一批具體文件名的過程址常用的通配符包括止則表
6、達(dá)式元字符:?、"、八等,通配符與元字符意義不完 全相同:"符號(hào)不再表示其前面字符的旅復(fù),而是表示任意位的任意字符?字符表示一位的任意字符八符號(hào)在通配中不代表行首,而是代表取反意義5grep工具grep是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印 出來 grep也是Linux中最廣泛使用的命令之一。grep 選項(xiàng)模式文件,模式可以是字符串,也可以是變量,還可以是止則表達(dá) 式,無論模式是何種形式,只要欖式中包含空格,就需要使用雙引號(hào)將模式括起來。模 式代表要搜索的內(nèi)容。如果沒有選項(xiàng),命令的結(jié)果是包含hl標(biāo)內(nèi)容的行的內(nèi)容。選項(xiàng)意義-C只輸出匹配行的數(shù)量
7、1搜索時(shí)忽略大小寫-h査詢多文件時(shí)不顯示文件名-1只列出符合匹配的文件名,而不列出具體匹配行-n列出所有匹配行,并顯示行號(hào)s不顯示不存在或無匹配文本的錯(cuò)誤信息-V顯示不包含匹配文本的所有行-w匹配整詞-r遞歸搜索,不僅搜索當(dāng)前工作目錄,而且搜索子目錄E支持?jǐn)U展的正則表達(dá)式-F不支持正則表達(dá)式,按照字符串的字面意思進(jìn)行匹配6. POSIX字符類為了保持不同國(guó)家的字符編碼的一致1POSIX (Portable Operating System Interface) 增加了特殊的字符類,以:classname的格式給出,grep命令支持POSIX字符類類名意義:upper:表示大寫字母AZ:lowe
8、r:表示大寫字母az:digit:表示阿拉伯?dāng)?shù)字0-9:alnum:表示大小寫字母和阿拉伯?dāng)?shù)字0-9a-zA-Z:space:)表示空格或Tab鍵:alpha:表示大小寫字母a-7A-Z:cntrl:表示Ctrl鍵:graph:或:pri nt:表示ASCII碼33-126之間的字符:xdigit:表示16進(jìn)制數(shù)字0-9A-Fa-fLinux系統(tǒng)支持三種形式的grep命令,通常將這三種形式的grep命令稱為grep命令族, 這三種形式具體為:grep:標(biāo)準(zhǔn)grep命令,支持基本止則表達(dá)式egrep:擴(kuò)展grep命令,支持基本和擴(kuò)展止則表達(dá)式,等價(jià)于grep - Efgrep:快速grep命令,
9、不支持正則表達(dá)式,按照字符串的字面意思進(jìn)行匹配,等價(jià)于 grep -F7. sed工具sed是流編輯器,可對(duì)文本文件和標(biāo)準(zhǔn)輸入進(jìn)行編輯。sed只是對(duì)緩沖區(qū)中原始文件的 副本進(jìn)行編輯,并不編輯原始的文件,如果需要保存改動(dòng)內(nèi)容,可以選擇使用下面兩種 方法:重定向,w編輯命令。(D命令行中的使用方法:sed 選項(xiàng)'sed命令輸入文件©腳本文件,通過sed命令調(diào)用的方法:sed 選項(xiàng)-f sed腳本文件輸入文件, 該方法腳本文件的首行不以#!/bin/sedf開頭將sed命令插入腳本文件后,直接執(zhí)行該腳本:./sed腳本文件 輸入文件,該方法 腳本文件的首行是#!/bin/sed -
10、feg: sed n -e 7tcp/p -e 7tcp/=" type.txt打印出包含“tcp”所在的行以及其行兮,且不打印文件整個(gè)文件本身。這個(gè)等同于 sed n e 7tcp/p 嚴(yán)"type.txt選項(xiàng)意義不打印所有行到標(biāo)準(zhǔn)輸出-e表示將下一個(gè)字符串解析為sed編輯命令,如果只傳遞一個(gè)編 輯命令給sed, -e選項(xiàng)可以省略-f表示正在調(diào)用sed腳本文件8. sed命令sed經(jīng)常和止則表達(dá)式結(jié)合使用選項(xiàng)意義P打印匹配行=打印文件行號(hào)a在定位行號(hào)之后追加文本信息在定位行號(hào)之刖插入文本信息d刪除定位行c用新文本替換定位文本s使用替換模式替換相應(yīng)模式r從另一個(gè)文件中讀文本
11、w將文本寫入到一個(gè)文件y變換字符q第一個(gè)模式匹配完成后退出1顯示與八進(jìn)制ASCII代碼等價(jià)的控制字符在定位行執(zhí)行的命令組n讀取下一個(gè)輸入行,用下一個(gè)命令處理新的行h將模式緩沖區(qū)文本拷貝到保持緩沖區(qū)H將模式緩沖區(qū)文本追加到保持緩沖區(qū)X互換模式緩沖區(qū)和保持緩沖區(qū)內(nèi)容g將保持緩沖區(qū)內(nèi)容拷貝到模式緩沖區(qū)G將保持緩沖區(qū)內(nèi)容追加到模式緩沖區(qū)eg:sed -n,$p type.txt 打印出type.txt文件的最后一行"$"是止則表達(dá)式,代表最后 一行。sed -n 21O0type.txt打印出除第:行到第十行外的所有行。sed -n Vtcp/.Sp type.txt打印出除包含&
12、quot;tcpM的第一行到整個(gè)文件的繪后一行。9. sed定位文本選項(xiàng)意義XX為指定行號(hào)x,y指定從x到y(tǒng)的行號(hào)范圍/pattern/查詢包含模式的行/pattern/pattern/查詢包含兩個(gè)模式的行/pattern/zx從與pattern的匹配行到x號(hào)行之間的行x,/patter n/從x號(hào)行到與pattern的匹配行之間的行x"!査詢不包括x和y行號(hào)的行10. sed插入/追加文本在嘰配行前/后面追加文件,一般通過文件完成eg:腳本文件insert.sh內(nèi)容如下:#!/bin/sed -f/file:/iWe insert a new line調(diào)用命令:./insert.s
13、h type.txt結(jié)果:在 type.txt 中包含"file:"的行的上面加入一行 “We insert a new line”。把"/file:/i" 改成“/file:/a”則可以在目標(biāo)行后追加文本“We insert a new line"sed修改方本只需耍將上例中的'i'改成'c,即可將目標(biāo)行用腳本里的文本代替12. sed刪除文本eg: sed -n '/tcp/d' type.txt 將 type.txt 文件中包含 tcp 的行刪除13. sed替換文本替換用來替換目標(biāo)字符串而修改是替
14、換目標(biāo)字符串所在的行,替換文本的格式為:S/被替換的字符串/新字符串/替換選項(xiàng)選項(xiàng)意義g表示替換文本中所有出現(xiàn)被替換字符串之處p與n選項(xiàng)結(jié)合,只打印替換行w文件名表示將輸出定向到一個(gè)文件eg: sed -n 1/彼替換的字符串/新字符串/p冃標(biāo)文件。這個(gè)與sed$/被替換 的字符串/新字符串/'目標(biāo)文件功能類似,不過y命令要求被替換的字符串和新字符串 長(zhǎng)度相同,否則報(bào)錯(cuò),而s命令無此限制eg: sed -n "s/tcp/udp/w newtype.txt' type.:xt 將 type.txt 中的 tcp 用 udp 替換.并 將替換后的行輸出到newtype.
15、txt文件中eg; sed -n "1,5 w output.txt* input.txt 將 input.txt 文件中的第一行到第五行輸 出到output.txt文件中eg: sed Vtcpdump/ r newtype.txt' type.txt 將 newtype.txt 中的內(nèi)容插入到包含tcpdump的行的后面14. awk工具及awk系統(tǒng)變量awk認(rèn)為輸入文件是結(jié)構(gòu)化的,awk將每個(gè)輸入乂件行定義為記錄,行中的每個(gè)字符串 定義為域,域之間用空格、Tab鍵或其他符號(hào)進(jìn)行分割,分割域的符號(hào)就叫分隔符。awk 工具通過腳本的兩種用法利sed命令一樣,直接命令形式調(diào)用
16、的方法有些不一樣,其調(diào) 用方法為:awk -F域分隔符#awk程序段輸入文件。缺省的域分隔符是空格或 Tab (可以是這兩者混合的)。eg: awk F"t" 'print $2,$1' type.txttype.txt 內(nèi)容如下所示1 a la2 b 2b結(jié)果:alb2注$1表示第一個(gè)域,$0表示所有域awk定義了很多內(nèi)建變量用丁設(shè)置環(huán)境信息,我們稱它們?yōu)橄到y(tǒng)變量,這些系統(tǒng)變量可 分為兩種:用于改變awk的缺省值,如域分隔符(FS);用F定義系統(tǒng)值,在處理 文本時(shí)可以讀取這些系統(tǒng)值,如記錄中的域數(shù)最,當(dāng)前記錄數(shù),當(dāng)前文件名等,awk 動(dòng)態(tài)改變系統(tǒng)變量的值。
17、$n當(dāng)前記錄的第n個(gè)域(n>=l)$0記錄的所有域ARGC命令行參數(shù)的數(shù)量ARGLND命令行中當(dāng)前文件的位置(以0開始標(biāo)號(hào))ARGV命令行參數(shù)的數(shù)組CONVFMT數(shù)字轉(zhuǎn)換格式ENVIRON環(huán)境變屋關(guān)聯(lián)數(shù)組ERRNO最后一個(gè)系統(tǒng)錯(cuò)誤的描述FIELDWIDTHS字段寬度列表,以空格徒分割FILENAME當(dāng)前文件名FNR瀏覽文件的記錄數(shù)FS字段分隔符,默認(rèn)是空格鍵(和TabIGNORECASE布爾變量,如果為頁(yè),則進(jìn)行忽略犬小寫的匹配NF當(dāng)前記錄中的域數(shù)量NR當(dāng)前記錄數(shù)OFMT數(shù)字的輸出格式OFS輸出域分隔符,默認(rèn)是空格fitORS輸出記錄分隔符,默認(rèn)是換行符RLENOTH由match函數(shù)所匹
18、配的字符串長(zhǎng)度RS記錄分隔符,默認(rèn)是空格鍵RSTART由match函數(shù)所匹配的字符串的第1個(gè)位置SUBSEP數(shù)組下標(biāo)分隔符,默認(rèn)值是03415. awk關(guān)系、布爾運(yùn)算符.表達(dá)式運(yùn)算符意義<小于>人<=小于等于>=大于等于=等!=不等于匹配正則表達(dá)式!不匹配止則表達(dá)式運(yùn)算符意義II邏輯或&&邏輯與邏輯非eg: awk 'BEGIN FS=":" $1 /root/' type txt.將 type.txt 文件中第一*域包含 root 的行打印出來awk 'BEGIN FS= $0! /root/'typ
19、e.txt.將 type.txt 文件中所有域都不包含root的行打印出來awk 'BEGIN FS=":" if($l=0| |$2=1) print $4' type.txt,將 type.txt 文件中 第一域?yàn)?,或第二域?yàn)?的行的第四域打印出來awk 'BEGIN FS= if($l0| | $21) print $4' type.txt,將 type.txt 文件中第 一域包含0,或第二域包含1的行的第四域打印出來16. awk格式化輸出printfawk格式化輸出的格式符和修飾符和C語(yǔ)言的基木一樣eg: awk 'BEG
20、IN FS=T printf(/%st%dn/;$41$2)/123.txt修飾符意義-左對(duì)齊width域的步長(zhǎng)prec小數(shù)點(diǎn)右邊的位數(shù)意義運(yùn)算符%cASCII字符%d整型數(shù)%e浮點(diǎn)數(shù),科學(xué)記數(shù)法%f浮點(diǎn)數(shù)%0八進(jìn)制數(shù)%s字符串%x十六進(jìn)制數(shù)17. awk內(nèi)置字符串函數(shù)awk內(nèi)置字符串兩數(shù)極為強(qiáng)大,是Shell處理字符串的常用工具函數(shù)名意義gsub(r,s)在輸入文件中用s替換rgsub(r,s,t)在t中用s替換rindex(s,t)返回s中字符串第一個(gè)t的位置length(s)返回s的長(zhǎng)度matcli(s,t)測(cè)試s是否包含匹配t的字符串splitgt)在t上將r分成序列ssub(r,s,
21、t)將t中第1次出現(xiàn)的r替換為ssubstr(r,s)返回字符串r中從s開始的后綴部分substr(r,s,t)返回字符串r中從s開始長(zhǎng)度為t的后綴部分18awk循環(huán)語(yǔ)句awk循環(huán)語(yǔ)句的語(yǔ)法和C中的一樣19< awk數(shù)組awk數(shù)組是關(guān)聯(lián)數(shù)組。關(guān)聯(lián)數(shù)紐是指數(shù)組的索引町以是字符串,也可以是數(shù)字??梢哉J(rèn) 為索引是Key,對(duì)應(yīng)的數(shù)組元素是它的Valueo arrayindex=valueo20. sort命令sort命令和awk命令一樣,把文件的每一行看成是一條記錄,列看成域。用法:sort 選項(xiàng)輸入文件選項(xiàng):c判斷輸入文件是否已經(jīng)排序,eg: sort -t: -c type.txt,如果沒有
22、排好序, 會(huì)打印出沒排好序的行-k指定按照第兒個(gè)域來進(jìn)行排序,缺省的是第一個(gè)域,eg: sort -t:k2 type.txt,表示以“:”為分隔符,按第二域排序(字符排序),結(jié)果打印到屏幕-t 指定域分隔符,eg:sort -t: type.txt-n指定排序時(shí)按數(shù)字排序而非字符排序,eg: sort-k2n type.txt,表 示以“:”為分隔符,按第二域排序(數(shù)字從小到大排序),結(jié)果打印到屏幕-r從大到小排序(缺省是從小到大排序,)eg: sort -t: -k2nr type.txt,表示以“:”為分隔符,按第二域排序(數(shù)字從大到小排序),結(jié)果扌J印到屏幕-u去除排序結(jié)果中的朿復(fù)行,
23、eg:sort -t: -k2nr -u type.txt,-o 將排序結(jié)果存到另一個(gè)文件中,eg:sort -t:k2nr -u -onewtype.txt type.txt.表示以“:”為分隔符,將type.txt文件按第二域排序(數(shù)字從大 到小排序),結(jié)果存入newtype.txt文件中,且不打印到屏幕-m用于將兩個(gè)排好序的文件合并成一個(gè)排好序的文件,在文件合并前,它們 必須已經(jīng)排好序,選項(xiàng)對(duì)未排好序的文件合并是沒有任何意義的。eg: sort -t: -m typel.txt type2.txt21. uniq 命令uniq命令用于去除文本文件中的砲復(fù)行,類似F sort -u命令,但
24、uniq命令去除的甫復(fù) 行必須是連續(xù)重復(fù)出現(xiàn)的行,中間不能夾雜任何其他文本行。用法:uniq 選項(xiàng)輸入文件選項(xiàng):-c打印每行在文本中重復(fù)出現(xiàn)的次數(shù),eg: uniq -c type.txt,在屏幕上打印 覓復(fù)出現(xiàn)的行及其更復(fù)次數(shù),次數(shù)在前,行內(nèi)容在后。-d只顯示有重復(fù)的記錄,每個(gè)重復(fù)記錄只出現(xiàn)一次-u只顯示沒有巫復(fù)的記錄22. join 命令功能:join命令用丁實(shí)現(xiàn)兩個(gè)文件中記錄的連接換作,連接操作將兩個(gè)文件中具有相同 域的記錄選擇出來.再將這些記錄所有的域放到一行。這個(gè)和數(shù)據(jù)庫(kù)里的連接類似。用法:join 選項(xiàng)戊件1文件2選項(xiàng):選項(xiàng)意義-al 或-a2除了顯示以共同域進(jìn)行連接的結(jié)果外,-a
25、l表示還顯示第1個(gè)文件中沒有共同域的記錄,a2則表示顯示第2個(gè)文件中沒有共同域的記錄i比較域內(nèi)容時(shí),忽略大小寫差異-0設(shè)置結(jié)果顯示的格式t改變域分隔符或v2跟a選項(xiàng)類似,但是,不顯示以共同域進(jìn)行連接的結(jié)果-1 和-2-1用設(shè)置文件1用于連接的域,2用丁設(shè)置文件2用J:連接的域join命令默認(rèn)顯示連接記錄在兩個(gè)文件中的所有域,而且是按順序來顯示的。-o選項(xiàng) 用改變結(jié)果顯示的格式。eg: join -t:-01.2 2.31.4 2.1 typel.txt type2.txt»顯示連接后第一個(gè)文件的第一、四域,第二個(gè)文件的第一、三域。join -t:1 32 1 filel.txt fi
26、le2.txt按第一個(gè)文件的第三域和第二個(gè)文件的第一域進(jìn)行連接。23. cut命令功能:cut命令用從標(biāo)準(zhǔn)輸入或文本文件中按域或按行提取文本用法:cut 選項(xiàng)文件選項(xiàng):選項(xiàng)意義c指定提取的字符數(shù),或字符范圍指定提取的域數(shù),或域范圍-d改變域分隔符示例:cutc3 file.txtt提取file.txt文件每行的第3個(gè)字符并打印到屏幕。 cut -cl-5 file.txt,提取file.txt文件每行的笫1到笫5個(gè)字符并打卬到屏幕。24paste命令功能:paste命令用丁將文本文件或標(biāo)準(zhǔn)輸出中的內(nèi)容粘貼到新的文件,它可以將來自 于不同文件的數(shù)據(jù)粘貼到一起,形成新的文件用法:paste 選項(xiàng)文
27、件1文件2選項(xiàng):(共三個(gè)選項(xiàng))-d設(shè)置新的域分隔符(缺省分隔符為空格或Tab)。-s將每個(gè)文件粘貼成一行。即粘貼后,第一行都是第一個(gè)文件的內(nèi)容,第二都是第二 個(gè)文件的內(nèi)容。如果沒有這個(gè),缺省情況下,前面的域都來自第一個(gè)文件,后面的域都 來自第二個(gè)文件。 從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù)。eg: Is | paste"-25. split 命令功能:split命令用r-將大文件切割成小文件,spin命令可以按照文件的行數(shù)、字節(jié)數(shù)切 割文件,并能在輸出的多個(gè)小文件中自動(dòng)加上編號(hào)。用法:split 選項(xiàng)待切割的大文件輸出的小文件選項(xiàng):或-1這兩個(gè)選項(xiàng)等價(jià),都用于指定切割成小文件的行數(shù)-b 指定切割成小
28、文件的字節(jié)-C與-b類似,但是,切割時(shí)盡屋維持每行的完整性26tr命令功能:tr命令實(shí)現(xiàn)字符轉(zhuǎn)換功能,其功能類似于sed命令,但足,tr命令比sed命令簡(jiǎn) 單。tr命令能實(shí)現(xiàn)的功能,sed命令都可以實(shí)現(xiàn)。用法:tr 選項(xiàng)字符串1 字符串2 <輸入丈件°eg:tr “a-zf "A-Z" filel.txt,將 filel.txt文件中的所有小寫字母替換為相應(yīng)的大寫字母。選項(xiàng):c選定字符串1中字符集的補(bǔ)集,即反選字符串1中的字符集。eg: trcs *a-zA-Zf vfilel.txt。-d刪除字符串1中出現(xiàn)的所有字符° eg: tr -d A-Z
29、 <filel.txt,刪除filel.txt 文件中所有的大小字母。tr -d 1-9 <filel.txt.刪除filel.txt文件中所有的數(shù)字。-s刪除所有更復(fù)出現(xiàn)的字符序列,只保留一個(gè)。tr -s<filel.txt將filel.txt文件中連續(xù)重復(fù)出現(xiàn)的換行符刪除。27. tar命令功能:tar命令是Linux的歸檔命令,tar命令可以將文件目錄打成一個(gè)包 用法:tar 選項(xiàng)文件名或目錄名選項(xiàng):選項(xiàng)意義-C創(chuàng)建新的包-r為包添加新的文件-t列出包內(nèi)容-u更新包中的文件,若包中無此文件,則將該文件添加到包中x解壓縮文件-f使用壓縮文件或設(shè)備,該選項(xiàng)通常是必選的-v詳
30、細(xì)報(bào)告tar處理文件的信息z用gzip壓縮和解壓縮文件,若加上此選項(xiàng)創(chuàng)建壓縮包, 那么解壓縮時(shí)也需要加上此選項(xiàng)示例:tar -cf db.all *.db。將以db為后綴的文件打包成db.all文件。 tar -tf db.alh列出包db.all中包含的內(nèi)容。tar -xvf壓縮包名稱,解壓縮非gzip格式的包tar -zxvf壓縮包名稱,解壓gzip格式的壓縮包gzip db.all ,將db.all這個(gè)包進(jìn)行壓縮,壓縮后的包名db.all.gztar -zxvf db.all.gz* 將壓縮包 db.all.gz 解壓2&變量變最分為本地變呈,相當(dāng)于C+中的局部變量;壞境變呈,從
31、用戶登錄到注銷都有效: 位置參數(shù),用于向shell腳本傳遞參數(shù),只讀。變量賦值:variable=value變量取值:$variable, eg: echo $variable,打印出 variable 的值清除變量:unset變最名,可以是本地變鼠也可以是環(huán)境變量變雖只14: readonly變量名,變量一旦設(shè)為只讀,任何用戶不能對(duì)此變量進(jìn)行重新賦 值聲明環(huán)境變最:export ENVIRON-VARIABLE環(huán)境變量賦值:ENVIRON-VARIABLE =value ,賦值和聲明可以一起:export ENVIRON-VARIABLE=valueenv命令可以列出已經(jīng)定義的環(huán)境變量PAT
32、H記錄了一系列的目錄列表,Shell為每個(gè)輸入命令搜索PATH中的目錄列表位置參數(shù)是一種特殊的Shell變呈,用于從命令行向Shell腳本傳遞參數(shù)。$1表示第1 個(gè)參數(shù)、$2表示第2個(gè)參數(shù)等,$0腳本的名字。從$10開始,參數(shù)號(hào)需要用人括號(hào)括 起來,如$11、$100。$和$樣,表示從$1開始的全部參數(shù)。$#傳遞到腳本的參 數(shù)數(shù)最,$腳本運(yùn)行的進(jìn)程號(hào),$?命令的退出狀態(tài),0表示沒有錯(cuò)誤,非0表示有錯(cuò)誤。29幾個(gè)重要的配置文件$HOME/.bash_profile是最匝要的配置文件,當(dāng)某Linux用戶登錄時(shí),Shell會(huì)口動(dòng)執(zhí) 行.bash_profile文件,如采.bash_profile文件
33、不存在,則自動(dòng)執(zhí)行系統(tǒng)默認(rèn)的配豐文件 /etc/profile如果要使新加入的行立即生效,需要利用source命令執(zhí)行.bash_profile文件。Source命 令也稱為“點(diǎn)命令”,即句點(diǎn)符號(hào)和source命令是等價(jià)的。eg: . .bash_profile或 source bash_profile30引用雙引號(hào)引用除美圓符號(hào)($)、反引號(hào)(')和反斜線()之外的所有字符,即$、'和 在雙引號(hào)中仍被解釋為特殊意義。同時(shí),用雙引號(hào)引用變屋能夠防止字符串分割,保留變量中的空格。單引號(hào)C)引用了所有字符,即單引號(hào)中字符除單引號(hào)本身之外都解釋為字面意義, 單引號(hào)不再具備引用變量的功
34、能。通常將單引號(hào)的引用方式稱為全引用,將雙引兮的引 用方式稱為部分引用反斜線符號(hào)()表示轉(zhuǎn)義,當(dāng)反斜線后面的一個(gè)字符具有特殊意義時(shí),反斜線將屛蔽 下一個(gè)字符的待殊意義,而以字面意義解析它。待殊字 符意義&傳遞到腳本的參數(shù)數(shù)量0個(gè)或多個(gè)在字符之前那個(gè)普通字符+匹配1個(gè)或多個(gè)在其之前的那個(gè)普通字符A匹配行首,或后面字符的非$命令的退出狀態(tài),0表示沒有錯(cuò)誤,非0表示有錯(cuò)誤%反引號(hào),Shell引用符號(hào)H雙引號(hào),Shell引用符號(hào)管道符號(hào)或表示“或”意義匹配0個(gè)或1個(gè)在其之前的那個(gè)普通字符轉(zhuǎn)義符轉(zhuǎn)義符除了屏蔽特殊字符的特殊意義之外 echo命令的e選項(xiàng)表示將轉(zhuǎn)義符后跟字符 形式的特殊字符解釋成特
35、殊意義。例:echo"tthello",結(jié)果為tthello°echo -e /tthello 結(jié)果為 helloo31.命令替換命令替換的兩種格式:'Linux命令$(Linux命令)。它代表Linux命令的結(jié)果32測(cè)試結(jié)構(gòu)測(cè)試命令可用于測(cè)試表達(dá)式的條件的真假。如果測(cè)試的條件為真,則返回一個(gè)0值:如 果測(cè)試的條件為假,將返回一個(gè)非0整數(shù)值。測(cè)試命令有兩種結(jié)構(gòu)的:Otest expression, 其中條件expression是一個(gè)表達(dá)式,該表達(dá)式可曰數(shù)字、字符串、文本利文件懺悔的比 較,同時(shí)可加入各種算術(shù)、字符串、文本等運(yùn)算隊(duì) ©express
36、ion,后和前的空格必不可少。整數(shù)比較運(yùn)算符描述miml -eq num2如果numl等于mim2,測(cè)試結(jié)果為0muni -ge num2如果numl大于或等于num2,測(cè)試結(jié)果為0miml -gt num2如果numl大于mim2,測(cè)試結(jié)果為0numl -le num2如果nunil小于或等于num2,測(cè)試結(jié)果為0numl -It num2如果numl小于niun2,測(cè)試結(jié)果為0niiml -ne num?如果numl不等于num2»測(cè)試結(jié)果為0eg: variable=123 "$variable" -eq 123 echo $? 結(jié)果為 0字符串運(yùn)算符str
37、ing測(cè)試字符串string是否不為空string測(cè)試字符串strmg是否不為空-z string測(cè)試字符串strmg是否為空string 1 = strmg2測(cè)試字符串strmg 1足否與字符串stiing2相等strmg 1 != string?測(cè)試字符串string 1是否與字符串stimg2不相等0表示“是S非0表示“否”。文件運(yùn)算符描述-dfile測(cè)試file是否為目錄-e file測(cè)試file是否存在-ffile測(cè)試file是否為普通文件-r file測(cè)試file是否是進(jìn)程可讀文件-s file測(cè)試file的長(zhǎng)度是否不為0-w file測(cè)試file是否是進(jìn)程可寫文件-x file測(cè)
38、試file是否是進(jìn)程可執(zhí)行文件-Lfile測(cè)試file是否符號(hào)化鏈接-e /etc/hosts 如果/etc/hosts文件存在,則結(jié)果為真(0)邏輯操作符描述! expression如expression為假,則測(cè)試結(jié)果為真expressionl -a expression?如果expressionl和expression同時(shí)為真,則測(cè)試結(jié) 果為真expression! -o expression2如果expressionl和expression?中有一個(gè)為真.則 測(cè)試條件為真I -e /etc/hosts 如果/etc/hosts文件不存在,則結(jié)果為真(0)-e /etc/hosts -a
39、 -x /etc/hosts > 如果/etc/hosts 存在且可執(zhí)行,則結(jié)果為真(0)33. if語(yǔ)句If expressi on thencomma ndlcomma nd2 在使用這種簡(jiǎn)單if結(jié)構(gòu)時(shí),要特別注意測(cè)試條件后如果沒冇分號(hào),則then語(yǔ)句要換行。 例:if -e /etc/hosts ;then echo "/etc/hosts is exist"fiIf expressio nthencomma ndlcomma nd2 elsecommand fi例:if rm -f "/etc/hosts" ;then echo "
40、;delete it successfullyz/;else echo "delete it failed"fi 如果刪除該文件成功則打印否則打印If expressi onthencomma ndlcomma nd2 elifthencommand elifthencommand elsecomma nd fi34case語(yǔ)句與C+中switch結(jié)構(gòu)類似,shell中case結(jié)構(gòu)可用于多分支選擇語(yǔ)句:case Variable inValuel)command Command;Value2)command Command;*)command Command;esac例:#
41、!/bin/bashecho "Please input a score_typeAB:" read score_typecase "$score_type" inA)echo "A"B)echo "B")echo "What you in put is wron g!"esac35.算術(shù)運(yùn)算符運(yùn)算符舉例結(jié)果+(加運(yùn)算)3+58(減運(yùn)算)5-32(乘運(yùn)算)5*315/(除運(yùn)算)8/32%(取余運(yùn)算)15%43"(幕運(yùn)算)5"312536位運(yùn)算符運(yùn)算符舉例解釋和value值
42、171; (左移)value=4«24左移2位,value值為16» (右移)value=8»28右移2位,value值為2& (按位與)value=8&48按位與4, value值為01 (按位或)value=8|48按位或4, glue值為12 (按位非)value=8按位非8, value值為-9八(按位異或)value=10A310按位異或3. value值為937自增自減運(yùn)算符Linux shell中自増自減運(yùn)算符與C+中一樣38列表for循環(huán)for variable in listdocomma nd done其中do和done之間的命
43、令稱為循環(huán)體,執(zhí)行次數(shù)和list列表中常數(shù)或字符串的個(gè)數(shù)相 同。當(dāng)執(zhí)行for循環(huán)時(shí),首先將in后的list列表的第一個(gè)常數(shù)或字符串賦值給循環(huán)變屋, 然后執(zhí)行循環(huán)體:接著將list列衣中的第二個(gè)常數(shù)或字符串賦值給循環(huán)變量,再次執(zhí)行 循環(huán)體,這個(gè)過程將一直持續(xù)到list列表中無其他的常數(shù)或字符串,然后執(zhí)行done命 令后的命令序列。#!/bin/bashfor variable in 12 3 4 5doecho "Hello,welcome $variable times"done#!/bin/bashfor file in $(ls)doecho "file:$f
44、ile"done打印出當(dāng)前目錄下的所有文件名39不帶列表for循環(huán)for variabledocomma nd conunanddoneShell會(huì)口動(dòng)的將命令行鍵入的所有參數(shù)依次組織成列表,每次將一個(gè)命令行鍵入的參 數(shù)顯示給用戶,直至所有的命令行中的參數(shù)都顯示給用戶。40類C風(fēng)格的for循環(huán)for ( expressl; express2; express3) docommand done例:#!/bin/bashfor( integer=l; integer <=5; integer+) doecho "$integer"done41. while 循環(huán)
45、while expressiondocomma ndcomma nd Done例:#!/bin/bashSum=0i=lwhile( i<=100 )dolet /zsum+=rlet "i+=2"doneecho /sum=$sum/42. 結(jié)束標(biāo)記控制的while循環(huán)read variablewhile /$variable/!=sentinel doread variabledone43.標(biāo)志控制的while循環(huán)signal=0while(signal!=l)do if expressi onthensignal=lfidone44命令行控制的while循環(huán)有時(shí)
46、需要使用命令行來指定輸出參數(shù)和參數(shù)個(gè)數(shù),這時(shí)用其他的三種形式的while循環(huán) 是無法實(shí)現(xiàn)的,所以需要使用命令行控制的while循環(huán)。該形式下,while循環(huán)通常與 shift結(jié)合起來使用,其中shift命令使位置變量下移一位(即$2代替$1),并且使$#變 屋遞減,當(dāng)最后一個(gè)參數(shù)也顯示給用戶后,$#就會(huì)等0,同時(shí)$*也等丁空,下面是該 情形下,while循環(huán)的形式為:while“$"h"doecho “$1"shiftdone45until循環(huán)until expressio ndocommandcomma nd done46. breaks continue 循環(huán)
47、控制符與c語(yǔ)言中類似47select結(jié)構(gòu)select是bash的擴(kuò)展結(jié)構(gòu),用交互式的菜單顯示,用從一組不同的值中進(jìn)行選擇, 功能有些類似于case結(jié)構(gòu),但其交互性要比case好的多。select variable in listdocommand breakdone例:#!/bin/bashecho "What is your favourite colour?'select colour in “red" “blue" “green" "white" "black"dobreakdoneecho &quo
48、t;You have selected $colour"48.內(nèi)部變量REPLY和UID當(dāng)read后而跟了變量時(shí),用戶從徒盤輸入的值將會(huì)保存到read中:當(dāng)read后而沒有跟 變量時(shí),值將保存到內(nèi)部變S: REPLY中。select結(jié)構(gòu)中,用戶輸入序號(hào)后,將該序號(hào)所對(duì)應(yīng)list中的字符串賦給variable變量,而 序號(hào)值則保存到REPLY變量中。UID表示當(dāng)前用戶號(hào),0代表root用戶49內(nèi)部變量SECONDS和LINENOSECONDS記錄了腳本從廿始運(yùn)行到現(xiàn)在所用時(shí)間(單位為秒)LINENU表示當(dāng)前命令在腳本中的行號(hào)50內(nèi)部變量SHLVLSHLVL記錄了 bash Shell嵌
49、套的層次,一般來說,我們啟動(dòng)第一個(gè)Shell時(shí),$SHLVL=1, 如果在這個(gè)Shell «|'執(zhí)行腳本,腳本中的SHLVL為2,如果再執(zhí)行子腳本,子腳本中的 SHLVL就變?yōu)?51內(nèi)部變量TMOUT設(shè)置Shell的過期時(shí)間,當(dāng)TMOUT不為0時(shí),Shell在TMOUT秒后將自動(dòng)注銷。TMOUT 放在腳本中,可以規(guī)定腳本的執(zhí)行時(shí)間。52內(nèi)部變量SHELLOPTSShell選項(xiàng)用于設(shè)定bash Shell所支持的一些特性.一個(gè)Shell選項(xiàng)有“開”和“關(guān)”兩 種狀態(tài)。set -o optionname打開名為optionname的選項(xiàng):set +o optionname關(guān)閉名為
50、 option name的選項(xiàng)。SHELLOPTS記錄了處F "開"狀態(tài)的Shell選項(xiàng)列表,它是一個(gè)只 讀變量。Shell選項(xiàng):選項(xiàng)名稱簡(jiǎn)寫意義noclobberc防止重定向時(shí)覆蓋文件allexportaexport所有己定義的變量norifyb后臺(tái)作業(yè)運(yùn)行結(jié)束時(shí),發(fā)送通知enexite當(dāng)腳本發(fā)生第一個(gè)錯(cuò)i吳時(shí),退出腳本noglobf禁止文件名擴(kuò)展,即禁用通配(globbing)interactive1使腳本以交互模式運(yùn)行l(wèi)ioexecn讀取腳本中的命令,進(jìn)行語(yǔ)法檢査,但不執(zhí)行這些命令POSIX0 posix修改bash及其調(diào)用腳本的行為,使其符合POSIX標(biāo)準(zhǔn)privi
51、legedP以siud身份運(yùn)行腳本restrictedr以受限模式運(yùn)行腳本stdms從標(biāo)準(zhǔn)輸入(stdm)中讀取命令noimsetu當(dāng)使用未定義變最時(shí),輸出錯(cuò)誤信息,并強(qiáng)制退出verboseV在執(zhí)行每個(gè)命令之前,將每個(gè)命令打印到標(biāo)準(zhǔn)輸出(stdout)xtraceX與verbose相似,但是打印完整命令無D列出XX引號(hào)內(nèi)以S為前綴的字符串,但不執(zhí)行腳本中的命令無C從中讀取命令無t第一條命令執(zhí)行結(jié)束就退岀無-選項(xiàng)結(jié)束標(biāo)志,后面跟上位遇參數(shù)(positional parameter)53expr字符串處理計(jì)算字符串長(zhǎng)度:$#string或者 expr length $stringo 例:str=w
52、dadfdw;xy=expr length $str;echo xy 結(jié)果為 5索引命令:expr index $string $substring他配子串:expr match $string $substring,在 string 的開頭I兀配 substring 字符串 抽取子串:#string:position,從名稱為$string的字符串的第$position個(gè)位置(從左到 右)開始抽取子串#string:position:length,從名稱為$string的字符啟的第$position個(gè)位置(從左到右)開 始抽取長(zhǎng)度為$length的子串。position從0開始string:
53、 -position和#string:卜 position)從名稱為 $ string 的字符串的第 $ posit io n 個(gè)位置 (從右到左)開始抽取子串expr substr $string $ position $length.從名稱$string 的字符串的第 $position 個(gè) 位置開始抽取長(zhǎng)度為$length的子串。(position從1開始)刪除子串:$(string#substring),刪除string開頭處與substring匹配的最短子串 $(string#substring),刪除string開頭處與substring匹配的最長(zhǎng)子串 $(string%subst
54、ring),刪除string結(jié)尾處與substring匹配的最短子串 $(string%substring),刪除string結(jié)尾處與substring匹配的最長(zhǎng)子串 替換子串:$string/substring/replacement,僅替換第一次與 substring 相匹配的子串 $string/substring/replacement.替換所有與 substring 相匹配的子串 $string/#substring/replacement» 替換 string 開頭處與 substring 相匹配的子串 $string/%substring/replacement
55、7; 替換 string 結(jié)尾處與 substring 相匹配的子串54有類型變量Shell變鼠一般是無類型的.但是bash Shell提供了 declare和typeset兩個(gè)命令用F指定 變量的類型,而兩個(gè)命令是完全等價(jià)的。Declare 選項(xiàng)變屋名 選項(xiàng):選項(xiàng)名意義-r將變量設(shè)置為只讀屬性-i將變量定義為整型數(shù)a將變量定義為數(shù)組-f顯示此腳本前定義過的所有函數(shù)名及其內(nèi)容F僅顯示此腳本前定義過的所有函數(shù)名X將變量聲明為環(huán)境變量雙小括號(hào)方法,即(.)格式,也可以用于算術(shù)運(yùn)算。雙小括號(hào)方法也可以使bash Shell 實(shí)現(xiàn)C語(yǔ)言風(fēng)格的變屋操作。Declare命令的x選項(xiàng)將變量聲明為環(huán)境變量,相當(dāng)f export命令,但是,declare -x 允許在聲明變最為環(huán)境變
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度安置房項(xiàng)目審計(jì)服務(wù)合同6篇
- 二零二五年度環(huán)保工程項(xiàng)目合同履行擔(dān)保協(xié)議4篇
- 2025年度智能路燈控制系統(tǒng)采購(gòu)與安裝合同4篇
- 二零二五年度食品安全檢測(cè)合同:某檢測(cè)機(jī)構(gòu)為實(shí)現(xiàn)食品安全目標(biāo)約定檢測(cè)范圍、標(biāo)準(zhǔn)、費(fèi)用等事項(xiàng)3篇
- 二零二五版高端裝備制造業(yè)關(guān)鍵部件購(gòu)銷合同3篇
- 二零二五年度電子信息產(chǎn)品購(gòu)銷及知識(shí)產(chǎn)權(quán)保護(hù)合同3篇
- 2025年水果種植與電商直播銷售合作合同模板3篇
- 2025年度環(huán)保型臨時(shí)車輛租賃服務(wù)合同4篇
- 二零二五年電商直播帶貨主播合作協(xié)議范本3篇
- 二零二五年度高新技術(shù)研發(fā)貸款合同與專利申請(qǐng)協(xié)議3篇
- 骨科手術(shù)后患者營(yíng)養(yǎng)情況及營(yíng)養(yǎng)不良的原因分析,骨傷科論文
- GB/T 24474.1-2020乘運(yùn)質(zhì)量測(cè)量第1部分:電梯
- GB/T 12684-2006工業(yè)硼化物分析方法
- 定崗定編定員實(shí)施方案(一)
- 高血壓患者用藥的注意事項(xiàng)講義課件
- 特種作業(yè)安全監(jiān)護(hù)人員培訓(xùn)課件
- (完整)第15章-合成生物學(xué)ppt
- 太平洋戰(zhàn)爭(zhēng)課件
- 封條模板A4打印版
- T∕CGCC 7-2017 焙烤食品用糖漿
- 貨代操作流程及規(guī)范
評(píng)論
0/150
提交評(píng)論