![linux操作系統(tǒng)9-shell編程(基礎(chǔ))_第1頁](http://file4.renrendoc.com/view/8cc2e5880fc7d60a65976bdf652c9f42/8cc2e5880fc7d60a65976bdf652c9f421.gif)
![linux操作系統(tǒng)9-shell編程(基礎(chǔ))_第2頁](http://file4.renrendoc.com/view/8cc2e5880fc7d60a65976bdf652c9f42/8cc2e5880fc7d60a65976bdf652c9f422.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Shell 編程Shell基礎(chǔ)編程主要內(nèi)容shell介紹shell基本語法shell常用語句Shell介紹UNIX的shell程序解釋用戶的命令,不管是用戶直接輸入的或者從一個稱作Shell腳本或者Shell程序文件讀入。Shell腳本是解釋型的,而不是編譯型的。Shell從腳本行的每行讀取命令并在系統(tǒng)中搜索這些命令,當(dāng)編譯器把一個程序轉(zhuǎn)化為可供機(jī)器讀取的形式時,那么它就可以被以一個可執(zhí)行文件用在shell腳本當(dāng)中。 除了向內(nèi)核傳送命令之外,shell的主要任務(wù)是提供一個可單獨(dú)配置的使用shell資源配置文件的用戶環(huán)境。Shell類型 sh 或者稱作 Bourne Shell: 最初的shel
2、l并且仍然在UNIX系統(tǒng)和UNIX相關(guān)系統(tǒng)中使用。它是基本的shell,是一個特性不多的小程序。雖然不是一個標(biāo)準(zhǔn)的shell,但是為了UNIX程序的兼容性在每個Linux系統(tǒng)上仍然存在。 bash 或者稱作 Bourne Again shell: 標(biāo)準(zhǔn)的GNU shell,直觀而又靈活?;蛟S是初學(xué)者的最明智選擇同時對高級和專業(yè)用戶來說也是一個強(qiáng)有力的工具。在Linux上,bash 是普通用戶的標(biāo)準(zhǔn)shell。這個shell因此稱為Bourne shell的超集,一套附件和插件。意味著bash和sh是兼容的:在sh中可以工作的命令,在bash中也能工作,反之則不然。 csh 或者稱作 C she
3、ll: 語法了類似于C語言,某些時候程序員會使用。 tcsh 或者稱作 Turbo C shell: 普通C shell的超集,加強(qiáng)了的用戶友好度和速度。 ksh 或者稱作 Korn shell: 某些時候被有UNIX背景的人所賞識。Bourne shell的一個超集,有著對初學(xué)者來說就是一場惡夢的標(biāo)準(zhǔn)配置。文件 /etc/shells 一個簡單的shell腳本#!/bin/bash/shell腳本的開始clearecho “Hello, $USER“/打印用戶信息echoecho “Todays date is date“ /顯示日期和時間echoecho “The user is :“/提
4、示信息who/who命令echoecho “This is uname -s“/cpu信息echoecho Thats all folks!Shell如何執(zhí)行命令執(zhí)行交互式命令外部命令內(nèi)建命令執(zhí)行腳本的方式:Sh 腳本文件先chmod +x腳本文件再./腳本例如:#!/bin/shcd .ls啟動腳本/etc/profile:此文件為系統(tǒng)的每個用戶設(shè)置環(huán)境信息,當(dāng)用戶第一次登錄時,該文件被執(zhí)行。/etc/bashrc:為每一個運(yùn)行bash shell的用戶執(zhí)行此文件。當(dāng)bash shell被打開時,該文件被讀取。/.bash_profile:當(dāng)用戶登錄時,該文件僅僅執(zhí)行一次! 通常情況下該腳本
5、會去調(diào)用/.bashrc。/.bashrc:該文件包含個人的bash shell的bash信息,通常情況下該腳本中會去調(diào)用/etc/bashrc。/.bash_logout:當(dāng)每次退出系統(tǒng)(退出bash shell)時,執(zhí)行該文件。Shell基本語法變量環(huán)境變量(可以從父進(jìn)程傳給子進(jìn)程,常用env查看)本地變量(只存在于當(dāng)前shell進(jìn)程,用set可以顯示)設(shè)置變量:VARvalue(本地變量)export VAR或者export VARvalue(導(dǎo)入成環(huán)境變量)unset命令用戶刪除已經(jīng)定義的環(huán)境變量或本地變量使用$VAR或者$VAR可以取出變量的值,例如:rootbaozong mysh
6、ell# echo $SHELL/bin/bashrootbaozong myshell# echo $SHELLabcrootbaozong myshell# echo $SHELL abc/bin/bash abcrootbaozong myshell# echo $SHELL abc/bin/bash abcrootbaozong myshell# echo $SHELLabc/bin/bashabc變量的定義與刪除變量定義的時候不允許有空格例如:STRING=“my name”導(dǎo)出變量Exporting 一個子shell能夠改變從父shell變量繼承過來的變量,但是在子shell所作的
7、改變對父shell也沒有影響 Bourne shell保留變量 變量名字定義CDPATH一個由冒號分割的目錄列表作為內(nèi)建命令 cd 的搜索路徑。 HOME當(dāng)前用戶的home目錄;默認(rèn)為內(nèi)建命令 cd 。這個變量的值同樣被擴(kuò)展使用。 IFS分割域的一個字符的列表;用于shell把詞分開作為擴(kuò)展。MAIL如果這個變量設(shè)成一個文件名并且 MAILPATH 變量沒有設(shè)置,Bash在指定文件中通知用戶郵件的到達(dá)。 MAILPATH一個用冒號分隔的文件名列表,shell周期性地從這個文件里檢測新郵件。OPTARGgetopts 內(nèi)建命令處理的最后的選項(xiàng)參數(shù)的值。 OPTIND最后一個由 getopts 內(nèi)
8、建命令處理的選項(xiàng)參數(shù)的索引號。 PATH一個用冒號分隔的目錄列表,shell從這些目錄里尋找命令。PS1主要提示符。默認(rèn)值是 “s-v$ ”。 PS2次要提示符。默認(rèn)值是 “ ”。 (輸入換行時出現(xiàn))變量名定義auto_resume這個變量控制shell如何與用戶交互和作業(yè)控制。BASH用于執(zhí)行當(dāng)前Bash實(shí)例的全路徑。BASH_ENV如果這個變量在Bash調(diào)用執(zhí)行一個shell腳本時已被設(shè)置,它的值將被展開并用作在執(zhí)行腳本前讀取的啟動文件名。BASH_VERSION當(dāng)前Bash實(shí)例的版本號。BASH_VERSINFO一個只讀變量數(shù)組,它的成員保存這個Bash實(shí)例的版本信息。COLUMNSse
9、lect 內(nèi)建命令來決定打印選擇列表時終端寬度。在收到 SIGWINCH 信號時自動設(shè)置。 COMP_CWORD包含當(dāng)前光標(biāo)位置的字的 $COMP_WORDS 的一個索引。An index into $COMP_WORDS of the word containing the current cursor position. COMP_LINE當(dāng)前命令行。COMP_POINT指明相對于當(dāng)前命令起點(diǎn)的當(dāng)前光標(biāo)位置。COMP_WORDS一個由當(dāng)前命令行中單個詞組成的變量數(shù)組。COMPREPLY一個變量數(shù)組,Bash從中讀取由一個可編程完整設(shè)備調(diào)用的一個shell函數(shù)生成的可能的完成。An arra
10、y variable from which Bash reads the possible completions generated by a shell function invoked by the programmable completion facility. DIRSTACK一個保存當(dāng)前目錄棧內(nèi)容的變量數(shù)組。Bourne shell保留變量字符定義$*展開為位置參數(shù),從1開始。當(dāng)擴(kuò)展發(fā)生在雙引號時,它展開成一個單獨(dú)的詞,每個參數(shù)的值由 IFS 特殊變量的第一個字符分隔。 $展開為位置參數(shù),從1開始。當(dāng)在雙引號里展開時,每個參數(shù)展開成獨(dú)立的詞。$#把位置參數(shù)展開為十進(jìn)制數(shù)字。$?展
11、開成最近執(zhí)行的前臺管道程序的退出狀態(tài)。$-一個連字符展開為當(dāng)前選項(xiàng)標(biāo)志 內(nèi)部命令集 或者那些shell自己的集(如-i)$展開成shell的進(jìn)程ID。$!展開成最近在后臺(異步)執(zhí)行的命令的進(jìn)程ID。$0展開成shell或者shell腳本名。$_下劃線變量在shell啟動時設(shè)置,包含shell的絕對文件名或者作為參數(shù)列表被執(zhí)行的腳本。隨后,它展開為前一個命令擴(kuò)展后的最后一個參數(shù)。它同樣設(shè)置為每個執(zhí)行程序的全路徑,放在那個命令的輸出環(huán)境中。當(dāng)檢查郵件時,這個參數(shù)保存郵件文件的名字。特殊Bash變量 文件名替換用于匹配的字符稱為通配符,例如:* 匹配零個或者多個任意字符? 匹配一個任意字符若干字符
12、匹配方括號中任意一個字符一次出現(xiàn)如:Ls /dev/ttyS*Ls cheng0?.txtLs cheng0-2.txtLs cheng0120-9.txt命令替換命令替換允許一個命令的輸出來替換這個命令本身。命令替換在一個命令這樣封裝的時候發(fā)生:$(command) 或command 如:date=dateEcho $date或者date=$(date)Echo $date轉(zhuǎn)義字符 轉(zhuǎn)義字符:“”單引號與雙引號單引號()用于保持在引號內(nèi)的每個字符的字面值。雙引號保持引號內(nèi)的所有字符的字面值,除了$, Shell的輸入與輸出echo常見-n(禁用轉(zhuǎn)義字符) e(可以使用轉(zhuǎn)義字符)#!/bin/
13、shecho -e this 3 linesnnnecho okecho enter you name:read nameecho enter you passwd:read passwdecho $name $passwd算術(shù)替換用于算術(shù)計(jì)算:$()中的shell變量取值將換成整數(shù),如:var=45echo $($var+3)注意只能用+-*/和(),并且只能做整數(shù)計(jì)算。別名:alias一個別名允許使用一個字符串來代替一個字當(dāng)它作為一個簡單命令的第一個字時候。shell維護(hù)一個可以用 alias 和 unalias 內(nèi)建命令來設(shè)置或者取消的別名列表。用 alias 命令而不帶選項(xiàng)的時候可以顯
14、示當(dāng)前shell所知的別名列表。 shell的歷史記錄history/bash_history文件中!n 執(zhí)行history中第n條指令! 執(zhí)行history中最后一條指令!str 執(zhí)行history中最后以str開頭的命令注意:Shell具有的補(bǔ)全功能,請大家利用好。Shell腳本語法條件測試:test或者可以用test或者測試一個條件是否成立,如果測試結(jié)果為真,則該命令退出狀態(tài)為0,如果為假,狀態(tài)為1。test文件測試格式:test option file 或者 option file -b file塊文件-c file字符文件-d file目錄-e file存在-p file管道-r f
15、ile可讀-s file大于0 -w file可寫-x file可執(zhí)行f1 -ef f2 f1和f2被鏈接,指向同一文件(Korsh shell)f1 -nt f2 f1比f2新f1 -ot f2 f1比f2舊test-a 邏輯與,操作符兩邊均為真,結(jié)果為真,否則為假。-o 邏輯或,操作符兩邊一邊為真,結(jié)果為真,否則為假。! 邏輯否,條件為假,結(jié)果為真。test整數(shù)比較格式:test int1 operator int2-eq數(shù)值相等。-ne數(shù)值不相等。-gt第一個數(shù)大于第二個數(shù)。-lt第一個數(shù)小于第二個數(shù)。-le第一個數(shù)小于等于第二個數(shù)。-ge第一個數(shù)大于等于第二個數(shù)。n1 -eq n2 n
16、1和n2相等n1 -ge n2 n1大于或者等于n2n1 -gt n2 n1大于n2n1 -le n2 n1小于或者等于n2n1 -lt n2 n1小于n2n1 -ne n2 n1不等于n2test字符串測試格式:test option string或者option string= 兩個字符串相等。!= 兩個字符串不等。-z 空串。-n 非空串。s1 = s2 相等s1 != s2 s1與s2不同s1 s2 s1的ASCII在s2后If語句i f語句測試條件,測試條件返回真( 0)或假(1)后,可相應(yīng)執(zhí)行一系列語句。簡單的if語句是:i f條件then 命令f i注意:使用i f語句時,必須將
17、t h e n部分放在新行,否則會產(chǎn)生錯誤。如果要不分行,必須使用命令分隔符。現(xiàn)在簡單i f語句變?yōu)椋篿f 條件;t h e n命令f iIf語句i f語句其格式為:if 條件1then 命令1elif 條件2then 命令2else 命令3f iIf 條件1 如果條件1為真Then 那么命令1 執(zhí)行命令1elif 條件2 如果條件1不成立then 那么命令2 執(zhí)行命令2else 如果條件1,2均不成立命令3 那么執(zhí)行命令3fi 結(jié)束case語句c a s e語句為多選擇語句??梢杂胏 a s e語句匹配一個值與一個模式,如果匹配成功,執(zhí)行相匹配的命令。c a s e語句格式如下:case 值 i n模式1 ) 命令1 . . . ;模式2) 命令2 . . . ;e s a ccase語句取值后面必須為單詞i n,每一模式必須以右括號結(jié)束。取值可以為變量或常數(shù)。匹配發(fā)現(xiàn)取值符合某一模式后,其間所有命令開始執(zhí)行直至;取值將檢測匹配的每一個模式。一旦模式匹配,則執(zhí)行完匹配模式相應(yīng)命令后不再繼續(xù)其他模式。如果無一匹配模式,使用星號*捕獲該值,再接受其他輸入。模式部分可能包括元字符,與在命令行文件擴(kuò)展名例子中使用過的匹配模式類型相同,即:* 任意字符。? 任意單字符。
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七年級數(shù)學(xué)上冊第30課時銷售問題和儲蓄問題聽評課記錄新湘教版
- 湘教版數(shù)學(xué)八年級上冊《1.1 分式》聽評課記錄
- 人教版歷史七年級下冊第1課《隋朝的統(tǒng)一與滅亡》聽課評課記錄
- 2022年新課標(biāo)八年級上冊道德與法治《7.1 關(guān)愛他人 》聽課評課記錄
- 生物技術(shù)創(chuàng)新合作開發(fā)合同(2篇)
- 理財(cái)委托合同(2篇)
- 人教版數(shù)學(xué)八年級下冊20.1.1《平均數(shù)》聽評課記錄3
- 語文聽評課記錄九年級
- 人教版數(shù)學(xué)八年級上冊《11.2.2三角形的外角》聽評課記錄1
- 數(shù)學(xué)七年級下學(xué)期《立方根》聽評課記錄
- 安全安全技術(shù)交底模板
- 房屋建筑工程投標(biāo)方案(技術(shù)方案)
- 部編版一年級語文下冊語文園地五《單元拓展-字族文》教學(xué)設(shè)計(jì)
- 靜脈輸液法操作并發(fā)癥的預(yù)防及處理
- 牙外傷的遠(yuǎn)期并發(fā)癥監(jiān)測
- 2025年高考語文作文備考:議論文萬能模板
- 重大事故隱患判定標(biāo)準(zhǔn)與相關(guān)事故案例培訓(xùn)課件(建筑)
- 《我的寒假生活》
- DZ/T 0430-2023 固體礦產(chǎn)資源儲量核實(shí)報(bào)告編寫規(guī)范(正式版)
- (高清版)WST 442-2024 臨床實(shí)驗(yàn)室生物安全指南
- 歷史時間軸全
評論
0/150
提交評論