




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、XX大學(xué)大學(xué)XX系系 XXX2022年年2月月25日日本章提要vShell基本概念基本概念vShell語法語法vShell編程實(shí)例編程實(shí)例vShell是是Linux的外殼,是的外殼,是Linux的用戶界面,的用戶界面,Shell為用戶提供了輸入命令和參數(shù)并可得到命令為用戶提供了輸入命令和參數(shù)并可得到命令執(zhí)行結(jié)果的環(huán)境。用戶對(duì)執(zhí)行結(jié)果的環(huán)境。用戶對(duì)Shell理解越深刻,理解越深刻,Shell對(duì)用戶工作的支持就越有力??梢哉f,熟練對(duì)用戶工作的支持就越有力??梢哉f,熟練掌握掌握Shell編程,能大大提高系統(tǒng)管理的效率。編程,能大大提高系統(tǒng)管理的效率。Fedora使用的使用的Shell 版本是版本是B
2、ash。本章首先介紹。本章首先介紹vi編輯器的使用,然后介紹編輯器的使用,然后介紹Shell的基礎(chǔ),的基礎(chǔ),Shell語法,正則表達(dá)式等內(nèi)容,通過本章的學(xué)習(xí)使用語法,正則表達(dá)式等內(nèi)容,通過本章的學(xué)習(xí)使用戶能夠使用戶能夠使用Shell編程進(jìn)行系統(tǒng)管理。編程進(jìn)行系統(tǒng)管理。vi編輯器v 雖然雖然Linux 系統(tǒng)提供了兩種工作界面:文本界面和圖形界系統(tǒng)提供了兩種工作界面:文本界面和圖形界面,但對(duì)于面,但對(duì)于Linux 系統(tǒng)管理員來說,在文本界面操作方式系統(tǒng)管理員來說,在文本界面操作方式下可以高效地完成所有的任務(wù)。下可以高效地完成所有的任務(wù)。v 在在Linux 系統(tǒng)中的參數(shù)文件幾乎都是系統(tǒng)中的參數(shù)文件幾
3、乎都是 ASCII 碼格式的純文碼格式的純文本文件,要管理好本文件,要管理好 Linux 系統(tǒng),純文本文件的手工編輯系統(tǒng),純文本文件的手工編輯仍然是需要的,因?yàn)槭褂梦谋灸J絹硖幚砣匀皇切枰?,因?yàn)槭褂梦谋灸J絹硖幚?Linux 的系統(tǒng)的系統(tǒng)設(shè)置問題,不但可以比較容易地了解到設(shè)置問題,不但可以比較容易地了解到Linux 的工作狀況,的工作狀況,也比較容易了解整個(gè)配置的基本精神,更能保證修改可以也比較容易了解整個(gè)配置的基本精神,更能保證修改可以順利地被系統(tǒng)執(zhí)行。順利地被系統(tǒng)執(zhí)行。v 對(duì)于要求做服務(wù)器的主機(jī),使用字符界面而不用啟動(dòng)圖形對(duì)于要求做服務(wù)器的主機(jī),使用字符界面而不用啟動(dòng)圖形工作環(huán)境,大大地
4、節(jié)省了系統(tǒng)資源開銷。工作環(huán)境,大大地節(jié)省了系統(tǒng)資源開銷。v 系統(tǒng)管理任務(wù)通常在遠(yuǎn)程進(jìn)行(如使用系統(tǒng)管理任務(wù)通常在遠(yuǎn)程進(jìn)行(如使用SSH等),而遠(yuǎn)程等),而遠(yuǎn)程登錄后進(jìn)入的主要是字符工作方式。登錄后進(jìn)入的主要是字符工作方式。編輯器及特點(diǎn)vLinux 系統(tǒng)中提供行編輯器(如系統(tǒng)中提供行編輯器(如ed、ex和和edit等)等)和屏幕編輯器(如和屏幕編輯器(如vi、emacs等),等),vi匯集了行匯集了行編輯器和屏幕編輯器的特點(diǎn),是編輯器和屏幕編輯器的特點(diǎn),是Linux系統(tǒng)中一系統(tǒng)中一種功能強(qiáng)大、界面友好的編輯器,熟練掌握種功能強(qiáng)大、界面友好的編輯器,熟練掌握vi命命令及其使用技巧往往能起到事半功倍
5、的作用,大令及其使用技巧往往能起到事半功倍的作用,大大提高系統(tǒng)管理和編程工作的效率,因此需要學(xué)大提高系統(tǒng)管理和編程工作的效率,因此需要學(xué)習(xí)它的使用方法。初步使用習(xí)它的使用方法。初步使用vi,用戶可能會(huì)覺得,用戶可能會(huì)覺得vi的界面不夠友好,不容易使用,但是一旦掌握的界面不夠友好,不容易使用,但是一旦掌握了了vi的命令,就可以感受到它強(qiáng)大的功能與高效。的命令,就可以感受到它強(qiáng)大的功能與高效。而且大部分的而且大部分的UNIX和和Linux系統(tǒng),都自帶了系統(tǒng),都自帶了vi。因此下面介紹因此下面介紹vi的使用。的使用。vi的工作模式v通常,通常,vi共分為共分為3種模式,分別是種模式,分別是“命令模式
6、命令模式”、“編輯模式編輯模式”與與“末行模式末行模式”。這。這3種模式的作種模式的作用如下。用如下。圖圖7-1 vi工作模式切換工作模式切換vi的簡(jiǎn)單使用v1. 啟動(dòng)啟動(dòng)viv要進(jìn)入要進(jìn)入vi,可以直接在系統(tǒng)提示符下輸入,可以直接在系統(tǒng)提示符下輸入vi及空及空格鍵,然后再輸入需要編輯的文件名,例如:格鍵,然后再輸入需要編輯的文件名,例如: rootCandy #vi test.txtrootCandy #vi test.txt圖圖7-2 vi啟動(dòng)畫面啟動(dòng)畫面vi的簡(jiǎn)單使用(續(xù))v 2. 編輯文本編輯文本v 在命令模式下,只要輸入在命令模式下,只要輸入i、I、O、o、a或或A等字符,就可以進(jìn)入
7、編輯模式了。等字符,就可以進(jìn)入編輯模式了。在編輯模式中,可以發(fā)現(xiàn)在左下角會(huì)出現(xiàn)在編輯模式中,可以發(fā)現(xiàn)在左下角會(huì)出現(xiàn) -INSERT- ,意味著可以輸入任意,意味著可以輸入任意字符,如圖字符,如圖7-3所示。此時(shí),鍵盤上除了所示。此時(shí),鍵盤上除了“ESC”這個(gè)按鍵之外,其他按鍵一這個(gè)按鍵之外,其他按鍵一般都當(dāng)作輸入文本看待,可以進(jìn)行任何編輯。需要注意的是:在般都當(dāng)作輸入文本看待,可以進(jìn)行任何編輯。需要注意的是:在vi里,里,“Tab”鍵所得到的結(jié)果與空格符所得到的不一樣。鍵所得到的結(jié)果與空格符所得到的不一樣。v 3. 回到命令模式回到命令模式v 假設(shè)已經(jīng)對(duì)文本編輯完畢,那么,應(yīng)該如何退出?就是按
8、下假設(shè)已經(jīng)對(duì)文本編輯完畢,那么,應(yīng)該如何退出?就是按下“ESC”鍵。馬上鍵。馬上就會(huì)發(fā)現(xiàn)畫面左下角的就會(huì)發(fā)現(xiàn)畫面左下角的 -INSERT- 不見了。不見了。v 4. 保存并退出保存并退出viv 如果要保存文件并離開如果要保存文件并離開vi,命令很簡(jiǎn)單,輸入,命令很簡(jiǎn)單,輸入“:wq”即可保存文件并離開即可保存文件并離開(注意,按下(注意,按下“:”鍵后鍵后 ,該光標(biāo)就會(huì)移到最下面的一行)。,該光標(biāo)就會(huì)移到最下面的一行)。圖圖7-3 vi的編輯模式的編輯模式vi中的命令vvi的命令分非常多,有些命令是進(jìn)入、退的命令分非常多,有些命令是進(jìn)入、退出出vi時(shí)使用;有些命令用于在各種模式之間時(shí)使用;有些
9、命令用于在各種模式之間切換;有些命令是在末行模式下使用,有切換;有些命令是在末行模式下使用,有些命令是在命令模式下使用。以下使用表些命令是在命令模式下使用。以下使用表格的方式介紹這些命令,表中標(biāo)有格的方式介紹這些命令,表中標(biāo)有“常用常用”的命令需要讀者特別留意。的命令需要讀者特別留意。vi范例v以下為一些常用的以下為一些常用的vi使用范例,測(cè)試一下,看是否已經(jīng)熟悉了使用范例,測(cè)試一下,看是否已經(jīng)熟悉了vi命令。命令。v將文件將文件/etc/inittab中的中的510行的內(nèi)容行的內(nèi)容,另存到另存到/root/myfile.txt中。命令及執(zhí)行情況如中。命令及執(zhí)行情況如下下: rootCandy
10、 #vi /etc/inittabrootCandy #vi /etc/inittab# inittab This file describes how the INIT process should set up# the system in a certain run-level.# Author: Miquel van Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes# Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NO
11、T set initdefault to this)# 1 - Single user mode# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)# 3 - Full multiuser mode# 4 - unused# 5 - X11vi范例(續(xù)):5,10 w /root/myfile.txtv rootCandy root #cat myfile.txtrootCandy root #cat myfile.txt# Author: Miquel van Smoorenburg, # Mo
12、dified for RHS Linux by Marc Ewing and Donnie Barnes# Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)為文件為文件/root/myfile.txt設(shè)置行號(hào)設(shè)置行號(hào)v rootCandy root #vi myfile.txtrootCandy root #vi myfile.txt# Author: Miquel van Smoorenburg, # Modified for RHS Linux by Mar
13、c Ewing and Donnie Barnes# Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)v :set nu1 # Author: Miquel van Smoorenburg, 2 # Modified for RHS Linux by Marc Ewing and Donnie Barnes3 #4 5 # Default runlevel. The runlevels used by RHS are:6 # 0 - halt (Do NOT s
14、et initdefault to this)vi范例(續(xù))v將將/root/myfile.txt文件中的所有文件中的所有“runlevel”替換成替換成“RUNLEVEL”,命令如下所示:,命令如下所示:v rootCandy root #vi myfile.txtrootCandy root #vi myfile.txt# Author: Miquel van Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes# Default runlevel. The runlevels used by RHS a
15、re:# 0 - halt (Do NOT set initdefault to this):%s /runlevel/RUNLEVEL /g1 # Author: Miquel van Smoorenburg, 2 # Modified for RHS Linux by Marc Ewing and Donnie Barnes3 #4 5 # Default RUNLEVEL. The RUNLEVEL used by RHS are:6 # 0 - halt (Do NOT set initdefault to this)vi范例(續(xù))v 復(fù)制復(fù)制56行的內(nèi)容到第行的內(nèi)容到第6行后面。操作
16、方法為:首先將光標(biāo)移動(dòng)到第行后面。操作方法為:首先將光標(biāo)移動(dòng)到第5行,在命令模式下輸入行,在命令模式下輸入2yy,再將光標(biāo)移動(dòng)到第,再將光標(biāo)移動(dòng)到第6行,然后按行,然后按p鍵粘鍵粘貼??梢钥吹?,第貼??梢钥吹?,第56行的內(nèi)容已經(jīng)復(fù)制到第行的內(nèi)容已經(jīng)復(fù)制到第6行后面了。行后面了。 rootCandy root #vi myfile.txtrootCandy root #vi myfile.txt# Author: Miquel van Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes# Default ru
17、nlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)# Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)vi范例(續(xù))v將將Shell命令執(zhí)行完成的結(jié)果插入到指定行。命令執(zhí)行完成的結(jié)果插入到指定行。v rootCandy root #vi myfile.txtrootCandy root #vi myfile.txt# Author: Miquel va
18、n Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes# Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)# Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this):5 !cat /etc/hosts# Author: Miquel van Smoo
19、renburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes#127.0.0.1 Candy localhost.localdomain localhost /插入的內(nèi)容:1 localhost6.localdomain6 localhost6 /插入的內(nèi)容# Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)# Default runlevel. The runlevels used by R
20、HS are:# 0 - halt (Do NOT set initdefault to this)v 對(duì)于對(duì)于vi的操作,不應(yīng)該死記硬背,而應(yīng)該多實(shí)踐、多練習(xí)。掌握的操作,不應(yīng)該死記硬背,而應(yīng)該多實(shí)踐、多練習(xí)。掌握vi的操作后,的操作后,必定會(huì)給系統(tǒng)管理工作及編程帶來極大的便利。必定會(huì)給系統(tǒng)管理工作及編程帶來極大的便利。Shell 介紹v ShellShell從字面上翻譯是外殼,是從字面上翻譯是外殼,是LinuxLinux的命令語言解釋器的命令語言解釋器,是是LinuxLinux與外部最主要的接口。與外部最主要的接口。ShellShell管理用戶與操作系統(tǒng)管理用戶與操作系統(tǒng)之間的交互之間的交
21、互: :等待用戶的輸入,向操作系統(tǒng)解釋用戶的輸入,等待用戶的輸入,向操作系統(tǒng)解釋用戶的輸入,并且處理各種各樣的操作系統(tǒng)的輸出結(jié)果。并且處理各種各樣的操作系統(tǒng)的輸出結(jié)果。 v ShellShell提供了用戶與操作系統(tǒng)之間通訊的方式。這種通訊可提供了用戶與操作系統(tǒng)之間通訊的方式。這種通訊可以從鍵盤輸入,并且可以立即得到響應(yīng)的方式(交互式),以從鍵盤輸入,并且可以立即得到響應(yīng)的方式(交互式),或者以或者以ShellShell腳本(非交互腳本(非交互) )方式執(zhí)行。方式執(zhí)行。ShellShell腳本是放在文腳本是放在文件中的一串件中的一串ShellShell和操作系統(tǒng)命令,它們可以被重復(fù)使用。和操作系
22、統(tǒng)命令,它們可以被重復(fù)使用。v 本質(zhì)上,本質(zhì)上,ShellShell是一個(gè)解釋型的程序設(shè)計(jì)語言是一個(gè)解釋型的程序設(shè)計(jì)語言。ShellShell程序程序設(shè)計(jì)語言支持絕大多數(shù)在高級(jí)語言中能見到的程序元素,設(shè)計(jì)語言支持絕大多數(shù)在高級(jí)語言中能見到的程序元素,如函數(shù)、變量、數(shù)組和程序控制結(jié)構(gòu)。如函數(shù)、變量、數(shù)組和程序控制結(jié)構(gòu)。ShellShell編程語言簡(jiǎn)單編程語言簡(jiǎn)單易學(xué),任何在提示符中鍵入的命令都能放到一個(gè)執(zhí)行的易學(xué),任何在提示符中鍵入的命令都能放到一個(gè)執(zhí)行的ShellShell程序中。程序中。ShellShell是有效提高系統(tǒng)管理效率的利器。是有效提高系統(tǒng)管理效率的利器。 Shell 介紹(續(xù))v
23、 1 1Shell Shell 可稱為命令解釋器可稱為命令解釋器v ShellShell負(fù)責(zé)用戶和操作系統(tǒng)之間的溝通,把用戶下達(dá)的命令解釋給系負(fù)責(zé)用戶和操作系統(tǒng)之間的溝通,把用戶下達(dá)的命令解釋給系統(tǒng)去執(zhí)行,并將系統(tǒng)傳回的信息再次解釋給用戶,它擁有自己內(nèi)建的統(tǒng)去執(zhí)行,并將系統(tǒng)傳回的信息再次解釋給用戶,它擁有自己內(nèi)建的Shell Shell 命令集,也能被系統(tǒng)中其他應(yīng)用程序調(diào)用。命令集,也能被系統(tǒng)中其他應(yīng)用程序調(diào)用。v 2 2Shell Shell 還是一種高級(jí)程序設(shè)計(jì)語言還是一種高級(jí)程序設(shè)計(jì)語言v ShellShell有變量、關(guān)鍵字,有各種控制語句,如有變量、關(guān)鍵字,有各種控制語句,如ifif、
24、casecase、whilewhile、for for 等語句,有自己的語法結(jié)構(gòu)。利用等語句,有自己的語法結(jié)構(gòu)。利用ShellShell程序設(shè)計(jì)語言可以編寫出功程序設(shè)計(jì)語言可以編寫出功能強(qiáng)大的代碼程序。它可以把相關(guān)的能強(qiáng)大的代碼程序。它可以把相關(guān)的Linux Linux 命令有機(jī)的組合在一起,命令有機(jī)的組合在一起,大大提高編程效率,利用大大提高編程效率,利用Linux Linux 系統(tǒng)的開放性能,就能設(shè)計(jì)出適合用系統(tǒng)的開放性能,就能設(shè)計(jì)出適合用戶要求的程序。戶要求的程序。v Shell接到用戶輸入的命令后首先檢查命令是否是內(nèi)部命令,若不是再接到用戶輸入的命令后首先檢查命令是否是內(nèi)部命令,若不是
25、再檢查是否是一個(gè)應(yīng)用程序。然后,檢查是否是一個(gè)應(yīng)用程序。然后,Shell在搜索路徑里尋找這些應(yīng)用程在搜索路徑里尋找這些應(yīng)用程序序(搜索路徑就是一個(gè)能找到可執(zhí)行程序的目錄列表搜索路徑就是一個(gè)能找到可執(zhí)行程序的目錄列表)。如果輸入的命。如果輸入的命令不是一個(gè)內(nèi)部命令并且在路徑里沒有找到這個(gè)可執(zhí)行文件,將會(huì)顯令不是一個(gè)內(nèi)部命令并且在路徑里沒有找到這個(gè)可執(zhí)行文件,將會(huì)顯示一條錯(cuò)誤信息。如果能夠成功找到命令,該內(nèi)部命令或應(yīng)用程序?qū)⑹疽粭l錯(cuò)誤信息。如果能夠成功找到命令,該內(nèi)部命令或應(yīng)用程序?qū)⒈幌到y(tǒng)傳送給被系統(tǒng)傳送給Linux 內(nèi)核。內(nèi)核。Shell、用戶及Linux 操作系統(tǒng)內(nèi)核之間關(guān)系圖圖7-4 She
26、ll、用戶及、用戶及Linux 操作系統(tǒng)內(nèi)核之間關(guān)系操作系統(tǒng)內(nèi)核之間關(guān)系常用的Shellv Linux 中的中的Shell有多種類型,其中最常見的是有多種類型,其中最常見的是Bourne Shell(sh)、C Shell(csh)和和Korn Shell(ksh)。三種。三種Shell各有優(yōu)缺點(diǎn):各有優(yōu)缺點(diǎn):Bourne Shell是是Unix最初始的最初始的Shell,并且,并且在每種在每種Unix上都可以使用;上都可以使用;Bourne Shell 在在Shell編程方編程方面相當(dāng)優(yōu)秀,但在處理與用戶的交互方面做得不如其他幾面相當(dāng)優(yōu)秀,但在處理與用戶的交互方面做得不如其他幾種種Shell
27、;Bash(Bourne Again Shell)是是Bourne Shell 的的擴(kuò)展,與擴(kuò)展,與Bourne Shell 完全兼容,并且增加了許多特性,完全兼容,并且增加了許多特性,它還包含了很多它還包含了很多C Shell 和和Korn Shell中的優(yōu)點(diǎn),有靈活中的優(yōu)點(diǎn),有靈活和強(qiáng)大的編程接口,同時(shí)又有很友好的用戶界面。和強(qiáng)大的編程接口,同時(shí)又有很友好的用戶界面。v 用戶如何查看自己使用的用戶如何查看自己使用的Shell?最簡(jiǎn)單的方式是使用?最簡(jiǎn)單的方式是使用echo命令,查詢系統(tǒng)環(huán)境變量的值。命令如下:命令,查詢系統(tǒng)環(huán)境變量的值。命令如下: rootCandy #echo $SHEL
28、L /bin/bashBash的優(yōu)點(diǎn)vBash Bash 是大多數(shù)是大多數(shù)LinuxLinux(包括(包括Fedora 8Fedora 8)系統(tǒng)的默)系統(tǒng)的默認(rèn)認(rèn)ShellShell。BashBash有以下優(yōu)點(diǎn):有以下優(yōu)點(diǎn): 補(bǔ)全命令補(bǔ)全命令 通配符通配符 歷史命令歷史命令 支持命令別名支持命令別名 輸入輸入/ /輸出重定向輸出重定向 管道功能管道功能 提示符提示符 作業(yè)控制作業(yè)控制Shell腳本的建立v ShellShell程序可以以交互式方式運(yùn)行,更多的是以程序方式運(yùn)行。程序可以以交互式方式運(yùn)行,更多的是以程序方式運(yùn)行。v 在命令行上直接輸入在命令行上直接輸入shellshell腳本是一種
29、測(cè)試短小代碼段的簡(jiǎn)單而快捷的方式。腳本是一種測(cè)試短小代碼段的簡(jiǎn)單而快捷的方式。如果正在學(xué)習(xí)如果正在學(xué)習(xí)ShellShell腳本或僅僅是為了進(jìn)行測(cè)試,使用交互式方式是非常有用腳本或僅僅是為了進(jìn)行測(cè)試,使用交互式方式是非常有用的。例如:的。例如:v 假設(shè)想要從大量假設(shè)想要從大量C C語言源文件中查找包含字符串語言源文件中查找包含字符串“POSIX”POSIX”的文件。與其使用的文件。與其使用grepgrep命令在每個(gè)文件中搜索字符串,然后再依次列出包含該字符串的文件,命令在每個(gè)文件中搜索字符串,然后再依次列出包含該字符串的文件,不如用下面的交互式腳本來執(zhí)行整個(gè)操作:不如用下面的交互式腳本來執(zhí)行整個(gè)
30、操作:rootCandyrootCandy #for file in #for file in * * do do if grep if grep l POSIX $file l POSIX $file then then more $file more $file fi fi done donePOSIXPOSIXThis is a file with POSIX in it treat it wellThis is a file with POSIX in it treat it wellrootCandyrootCandy # #shell腳本的建立(續(xù))v更多的是在程序編輯器中建立更多
31、的是在程序編輯器中建立ShellShell腳本。例如,在文本編輯器中輸入下列內(nèi)容,并保腳本。例如,在文本編輯器中輸入下列內(nèi)容,并保存為存為mydemo1mydemo1:#!/bin/bash#!/bin/bash clear clear echo This is information provided by mysystem.sh echo This is information provided by mysystem.sh. Program starts now. Program starts now. echo Hello, $USER echo Hello, $USER echo e
32、cho echo Todays date is date, this is week date +%V. echo Todays date is date, this is week date +%V. echo echo echo -n These users are currently connected: echo -n These users are currently connected: w | cut -d -f 1 - | grepw | cut -d -f 1 - | grep -v USER | sort -u -v USER | sort -u echo echo ech
33、o This is uname -s running on a uname echo This is uname -s running on a uname -m processor. -m processor. echo echo echo This is the uptime information: echo This is the uptime information: uptime uptime echo echo echo Thats all folks! echo Thats all folks! #end #endshell腳本的建立(續(xù))v 說明:說明: 文件中以文件中以“”
34、開頭的行是注釋行,在執(zhí)行的時(shí)候會(huì)開頭的行是注釋行,在執(zhí)行的時(shí)候會(huì)被忽略;被忽略; 文件中的第一行文件中的第一行“#!/bin/bash”#!/bin/bash”用來指定腳本以用來指定腳本以bashbash執(zhí)行,并指定執(zhí)行,并指定bashbash的路徑為的路徑為“/bin”/bin”; echo echo命令用來顯示提示信息,參數(shù)命令用來顯示提示信息,參數(shù)“- n”- n”表示在顯表示在顯示信息時(shí)不自動(dòng)換行(默認(rèn)會(huì)自動(dòng)換行);示信息時(shí)不自動(dòng)換行(默認(rèn)會(huì)自動(dòng)換行);unameuname -s -s字符串左右的反引號(hào)(字符串左右的反引號(hào)( )用于命令置換,)用于命令置換,也就是將它所括起來的字符串視
35、為命令執(zhí)行,并將其也就是將它所括起來的字符串視為命令執(zhí)行,并將其輸出字符串原地展開。倒數(shù)第輸出字符串原地展開。倒數(shù)第5 5行也可以改為:行也可以改為:echo echo “This is the uptime information:uptime“This is the uptime information:uptime ;程序末行程序末行“#end”#end”可加可不加,僅表注釋??杉涌刹患?,僅表注釋。Shell腳本的執(zhí)行v 腳本創(chuàng)建之后如何執(zhí)行?執(zhí)行腳本創(chuàng)建之后如何執(zhí)行?執(zhí)行ShellShell腳本的方式基本上有腳本的方式基本上有下述三種。下述三種。v (1) (1) 使用使用“.”.”命
36、令。在命令。在BashBash下使用下使用“.”.”命令可執(zhí)行命令可執(zhí)行ShellShell腳本。腳本。v 例如:執(zhí)行例如:執(zhí)行mydemo1mydemo1。 rootCandyrootCandy #. mydemo1 #. mydemo1v (2) (2) 以腳本名作為參數(shù)。其一般形式為:以腳本名作為參數(shù)。其一般形式為:bash bash 腳本名腳本名v 例如:執(zhí)行例如:執(zhí)行test1.sh test1.sh 。 rootCandyrootCandy #bash test1.sh /root /home/student #bash test1.sh /root /home/studentv
37、執(zhí)行執(zhí)行test1.sh test1.sh 時(shí)帶了兩個(gè)參數(shù)時(shí)帶了兩個(gè)參數(shù)/root /root 、 /home/student/home/student,如果要帶參數(shù)執(zhí)行,建議采用下面的方法設(shè)置文件為可執(zhí)如果要帶參數(shù)執(zhí)行,建議采用下面的方法設(shè)置文件為可執(zhí)行。行。Shell腳本的執(zhí)行(續(xù))v (3) (3) 將將Shell Shell 腳本的權(quán)限設(shè)置為可執(zhí)行,然后在提示符下直接執(zhí)行。腳本的權(quán)限設(shè)置為可執(zhí)行,然后在提示符下直接執(zhí)行。v 通常,用戶是不能直接執(zhí)行由正文編輯器通常,用戶是不能直接執(zhí)行由正文編輯器( (如如vi)vi)建立的建立的Shell Shell 腳本的,腳本的,因?yàn)橹苯泳庉嬌傻?/p>
38、腳本文件沒有因?yàn)橹苯泳庉嬌傻哪_本文件沒有“執(zhí)行執(zhí)行”權(quán)限。如果要把權(quán)限。如果要把Shell Shell 腳腳本直接當(dāng)作命令執(zhí)行,就需要利用命令本直接當(dāng)作命令執(zhí)行,就需要利用命令chmodchmod 將它設(shè)置為有將它設(shè)置為有“執(zhí)行執(zhí)行”權(quán)限。權(quán)限。v 例如:將腳本例如:將腳本“test2.sh”test2.sh”設(shè)置為對(duì)所有用戶都有設(shè)置為對(duì)所有用戶都有“執(zhí)行執(zhí)行”權(quán)限并執(zhí)權(quán)限并執(zhí)行。行。 rootCandy #chmod a+xrootCandy #chmod a+x test2.sh test2.shv 在提示符后輸入腳本名在提示符后輸入腳本名“test2.sh”test2.sh”就可直接執(zhí)
39、行該文件。就可直接執(zhí)行該文件。 rootCandyrootCandy #./test2.sh #./test2.shv 以上以上“./”./”表示當(dāng)前目錄。若不加表示當(dāng)前目錄。若不加“./” ./” ,則可能會(huì)看到一條錯(cuò)誤,則可能會(huì)看到一條錯(cuò)誤信息告訴用戶未找到命令。這種情況很可能發(fā)生,因?yàn)樾畔⒏嬖V用戶未找到命令。這種情況很可能發(fā)生,因?yàn)镾hellShell環(huán)境變環(huán)境變量量PATHPATH沒有被設(shè)置為在當(dāng)前目錄下查找要執(zhí)行的命令。要解決這個(gè)問沒有被設(shè)置為在當(dāng)前目錄下查找要執(zhí)行的命令。要解決這個(gè)問題,一種辦法是在命令行上直接輸入命令題,一種辦法是在命令行上直接輸入命令“PATH=$PATHPAT
40、H=$PATH:”,或編輯,或編輯用戶的用戶的“.bash_profile.bash_profile”文件,將剛才這條命令添加到文件的末尾,文件,將剛才這條命令添加到文件的末尾,然后退出登錄然后退出登錄后再重新登錄進(jìn)來。使用后再重新登錄進(jìn)來。使用“./”./”來指定路徑還有另一個(gè)來指定路徑還有另一個(gè)好處,就是它能夠保證不會(huì)意外執(zhí)行系統(tǒng)中與用戶腳本文件同名的其好處,就是它能夠保證不會(huì)意外執(zhí)行系統(tǒng)中與用戶腳本文件同名的其它路徑中的另一個(gè)命令。它路徑中的另一個(gè)命令。Shell環(huán)境變量v在在WindowsWindows系統(tǒng)中,用戶一般都有自己的個(gè)性化桌系統(tǒng)中,用戶一般都有自己的個(gè)性化桌面和隨系統(tǒng)啟動(dòng)時(shí)
41、的程序等,例如,隨系統(tǒng)啟動(dòng)面和隨系統(tǒng)啟動(dòng)時(shí)的程序等,例如,隨系統(tǒng)啟動(dòng)的殺毒軟件,以及有些用戶開機(jī)時(shí)就喜歡啟動(dòng)的的殺毒軟件,以及有些用戶開機(jī)時(shí)就喜歡啟動(dòng)的QQQQ軟件。同樣,在軟件。同樣,在LinuxLinux系統(tǒng)文本登錄模式中,用系統(tǒng)文本登錄模式中,用戶在登錄過程中系統(tǒng)要做的一件事就是建立用戶戶在登錄過程中系統(tǒng)要做的一件事就是建立用戶環(huán)境,就是環(huán)境,就是ShellShell下的控制及設(shè)置,包括文件搜索下的控制及設(shè)置,包括文件搜索路徑、用戶目錄和系統(tǒng)提示符等這些對(duì)用戶工作路徑、用戶目錄和系統(tǒng)提示符等這些對(duì)用戶工作環(huán)境的設(shè)置,在環(huán)境的設(shè)置,在LinuxLinux中一般通過環(huán)境變量來完成,中一般通過
42、環(huán)境變量來完成,通過設(shè)置這些環(huán)境變量來控制用戶環(huán)境。通過設(shè)置這些環(huán)境變量來控制用戶環(huán)境。Linux Linux 系統(tǒng)的環(huán)境變量通常以大寫字母來表示。環(huán)境變系統(tǒng)的環(huán)境變量通常以大寫字母來表示。環(huán)境變量是很重要的,那么在量是很重要的,那么在LinuxLinux系統(tǒng)中到底有多少環(huán)系統(tǒng)中到底有多少環(huán)境變量呢?可以簡(jiǎn)單的使用境變量呢?可以簡(jiǎn)單的使用env(environmentenv(environment 的的縮寫縮寫) )或者或者setset查詢系統(tǒng)的環(huán)境變量。查詢系統(tǒng)的環(huán)境變量。Shell環(huán)境變量(續(xù))rootCandy #envrootCandy #envHOSTNAME=CandyHOSTNA
43、ME=CandyTERM=linuxTERM=linuxSHELL=/bin/bashSHELL=/bin/bashHISTSIZE=1000HISTSIZE=1000XDG_SESSION_COOKIE=2fe8d4174bf3c5783964640047f6aa00-1208971785.81815-761023854XDG_SESSION_COOKIE=2fe8d4174bf3c5783964640047f6aa00-1208971785.81815-761023854OLDPWD=/OLDPWD=/USER=rootUSER=rootCCACHE_DIR=/var/cache/ccac
44、heCCACHE_DIR=/var/cache/ccacheMAIL=/varMAIL=/var/spool/mail/root/spool/mail/rootPATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/
45、root/bin/usr/sbin:/usr/bin:/root/bin: :INPUTRC=/etc/inputrcINPUTRC=/etc/inputrcPWD=/rootPWD=/rootCCACHE_UMASK=002CCACHE_UMASK=002LANG=en_US.UTF-8LANG=en_US.UTF-8KDE_IS_PRELINKED=1KDE_IS_PRELINKED=1KDEDIRS=/usrKDEDIRS=/usrSSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpassSSH_ASKPASS=/usr/libexec/open
46、ssh/gnome-ssh-askpassSHLVL=1SHLVL=1HOME=/rootHOME=/rootLOGNAME=rootLOGNAME=rootCVS_RSH=sshCVS_RSH=sshLESSOPEN=|/usr/bin/lesspipe.shLESSOPEN=|/usr/bin/lesspipe.sh %s %sG_BROKEN_FILENAMES=1G_BROKEN_FILENAMES=1_=/bin/env_=/bin/envShell環(huán)境變量特殊變量變量變量功能功能$#$#表示命令行參數(shù)的個(gè)數(shù)表示命令行參數(shù)的個(gè)數(shù)$?$?表示上一條命令執(zhí)行后的返回值表示上一條命令執(zhí)行后
47、的返回值$當(dāng)前進(jìn)程的進(jìn)程號(hào)當(dāng)前進(jìn)程的進(jìn)程號(hào)$ $* *表示表示ShellShell程序的所有參數(shù)串程序的所有參數(shù)串$表示命令行中輸入的所有參數(shù)串表示命令行中輸入的所有參數(shù)串$0$0命令行中輸入的命令行中輸入的ShellShell程序名程序名$!表示上一個(gè)后臺(tái)執(zhí)行命令的表示上一個(gè)后臺(tái)執(zhí)行命令的PIDShell環(huán)境變量(續(xù))v使用環(huán)境變量使用環(huán)境變量v可以用可以用echoecho命令查看任何一個(gè)環(huán)境變量的命令查看任何一個(gè)環(huán)境變量的值,也可以在命令中將環(huán)境變量的值作為值,也可以在命令中將環(huán)境變量的值作為參數(shù),使用環(huán)境變量時(shí),要在其名稱前面參數(shù),使用環(huán)境變量時(shí),要在其名稱前面加上加上“$”$”符號(hào)。符
48、號(hào)。v例如:顯示例如:顯示ShellShell提示符的格式提示符的格式 rootCandyrootCandy #echo $PS1 #echo $PS1Shell語法Shell變量v 所謂變量,就是可存放數(shù)據(jù)的識(shí)別符號(hào),所謂變量,就是可存放數(shù)據(jù)的識(shí)別符號(hào),Shell程序中采程序中采用變量來存放字符串。用變量來存放字符串。Shell變量比變量比C語言中的變量簡(jiǎn)單得語言中的變量簡(jiǎn)單得多,沒有眾多存儲(chǔ)類及類型的限制,也不需要預(yù)先定義后多,沒有眾多存儲(chǔ)類及類型的限制,也不需要預(yù)先定義后才能賦值,可以在使用時(shí)才能賦值,可以在使用時(shí)“現(xiàn)定義、現(xiàn)賦值現(xiàn)定義、現(xiàn)賦值”。v Shell有兩類變量:環(huán)境變量和臨時(shí)
49、變量。環(huán)境變量是永有兩類變量:環(huán)境變量和臨時(shí)變量。環(huán)境變量是永久性變量,其值不會(huì)隨久性變量,其值不會(huì)隨Shell腳本執(zhí)行結(jié)束而消失。而臨腳本執(zhí)行結(jié)束而消失。而臨時(shí)變量是在時(shí)變量是在Shell程序內(nèi)部定義的,其使用范圍僅限于定程序內(nèi)部定義的,其使用范圍僅限于定義它的程序,離開了該程序就不能再用,當(dāng)程序執(zhí)行完畢義它的程序,離開了該程序就不能再用,當(dāng)程序執(zhí)行完畢它的值也就不存在了。它的值也就不存在了。v 1變量名變量名v 用戶定義的變量是最普通的用戶定義的變量是最普通的Shell變量。變量名是以字母變量。變量名是以字母或下劃線打頭的字母、數(shù)字和下線線序列,并且大小寫字或下劃線打頭的字母、數(shù)字和下線線
50、序列,并且大小寫字母意義不同。例如,母意義不同。例如,Ls與與ls是不同的變量。這與是不同的變量。這與C語言中語言中標(biāo)識(shí)符的定義相同。變量名的長(zhǎng)度不受限制。標(biāo)識(shí)符的定義相同。變量名的長(zhǎng)度不受限制。Shell變量(續(xù))v 2 2變量賦值變量賦值v 定義變量并賦值的一般形式為:變量名定義變量并賦值的一般形式為:變量名= =字符串。變量賦值的注意事字符串。變量賦值的注意事項(xiàng)說明如下:項(xiàng)說明如下: 在賦值語句中,賦值號(hào)在賦值語句中,賦值號(hào)“=”=”的兩邊沒有空格,否則在執(zhí)行時(shí)會(huì)引起錯(cuò)的兩邊沒有空格,否則在執(zhí)行時(shí)會(huì)引起錯(cuò)誤。誤。 若有空格符可以使用雙引號(hào)若有空格符可以使用雙引號(hào)“”或單引號(hào)或單引號(hào) “
51、“”來將變量?jī)?nèi)容結(jié)合起來將變量?jī)?nèi)容結(jié)合起來,但需要特別留意,雙引號(hào)內(nèi)的特殊字符可以保有變量特性,但是單來,但需要特別留意,雙引號(hào)內(nèi)的特殊字符可以保有變量特性,但是單引號(hào)內(nèi)的特殊字符則僅為一般字符。引號(hào)內(nèi)的特殊字符則僅為一般字符。 必要時(shí)需要以跳脫字符必要時(shí)需要以跳脫字符“ “ ” ”來將特殊符號(hào)來將特殊符號(hào)( (如如$ $, ,空格符等,空格符等) )變成變成一般符號(hào)。一般符號(hào)。v 例如:變量賦值。例如:變量賦值。 rootCandy #myfile=/root/envidemorootCandy #myfile=/root/envidemov “myfile“myfile”是變量名,是變量名
52、,“=”=”是賦值號(hào),字符串是賦值號(hào),字符串“/root/envidemo/root/envidemo”是賦予變量是賦予變量myfilemyfile的值。變量的值可以改變,只需利用賦值語句重新的值。變量的值可以改變,只需利用賦值語句重新給它賦值。例如:給它賦值。例如:myfile=/root/list.txtmyfile=/root/list.txt。此時(shí),變量。此時(shí),變量myfilemyfile的值的值就是就是/root/list.txt/root/list.txt。v 再如:特殊變量賦值。再如:特殊變量賦值。 rootCandyrootCandy #computer =IBM X60 #c
53、omputer =IBM X60v 等號(hào)右邊有空格,因此要用雙引號(hào)括起。等號(hào)右邊有空格,因此要用雙引號(hào)括起。Shell變量(續(xù))v3引用變量值引用變量值v在程序中使用變量的值時(shí),要在變量名前面加上一在程序中使用變量的值時(shí),要在變量名前面加上一個(gè)符號(hào)個(gè)符號(hào)“$”$”。這個(gè)符號(hào)告訴。這個(gè)符號(hào)告訴ShellShell,要取出其后變,要取出其后變量的值。量的值。v例如:顯示變量。例如:顯示變量。 rootCandy #echo myfile myfilerootCandy #echo myfile myfile rootCandy #echo $myfile /root/envidemo rootCa
54、ndy #echo $myfile /root/envidemov可以看到變量名前面沒有加符號(hào)可以看到變量名前面沒有加符號(hào)“$”$”,說明,說明myfilemyfile不是變量,而是一般的字符串常量,而變量不是變量,而是一般的字符串常量,而變量名前面加符號(hào)名前面加符號(hào)“$”$”,則說明,則說明myfilemyfile是變量,才可是變量,才可以輸出變量的值。以輸出變量的值。Shell變量(續(xù))v 4命令替換命令替換v 有兩種形式的命令替換。有兩種形式的命令替換。v (1) 使用反引號(hào)使用反引號(hào)()引用命令,其一般形式為:引用命令,其一般形式為:命令表命令表。v 在在“ ”之內(nèi)的指令將會(huì)被先執(zhí)行,
55、而其執(zhí)行出來的結(jié)果將作為外部的之內(nèi)的指令將會(huì)被先執(zhí)行,而其執(zhí)行出來的結(jié)果將作為外部的輸入信息替換原來內(nèi)容。輸入信息替換原來內(nèi)容。v 例如:將路徑存放到變量例如:將路徑存放到變量dir中。中。 rootCandy #dir=/lib/modules/uname r /lib/modules/2.6.23.1-42.fc8v uname r會(huì)顯示出目前的內(nèi)核版本,因此用戶可以先執(zhí)行會(huì)顯示出目前的內(nèi)核版本,因此用戶可以先執(zhí)行uname r 找出內(nèi)核版本,再替換找出內(nèi)核版本,再替換uname r,最后把整個(gè)結(jié)果賦值給,最后把整個(gè)結(jié)果賦值給dir變量。變量。v (2) 使用形式是使用形式是$(命令表命令
56、表)。其中,命令表是用分號(hào)隔開的命令。其中,命令表是用分號(hào)隔開的命令。v 例如:把當(dāng)前工作目錄的全路路徑名存放到變量例如:把當(dāng)前工作目錄的全路路徑名存放到變量dir中。中。 rootCandy #dir=$(pwd)v 例如:命令組合替換。例如:命令組合替換。 rootCandy #echo $(pwd; cd /home; ls)v 執(zhí)行上述命令后首先顯示當(dāng)前目錄,然后跳到執(zhí)行上述命令后首先顯示當(dāng)前目錄,然后跳到/home 目錄,顯示其內(nèi)目錄,顯示其內(nèi)容。容。算術(shù)運(yùn)算v整數(shù)算術(shù)運(yùn)算表達(dá)式與整數(shù)算術(shù)運(yùn)算表達(dá)式與C語言中表達(dá)式的語法類語言中表達(dá)式的語法類似。似。v1算術(shù)運(yùn)算算術(shù)運(yùn)算例如:加法運(yùn)算
57、。例如:加法運(yùn)算。 rootCandy #let a=0 rootCandy #let a=a+1v其替代表示形式是其替代表示形式是let“a=a+1”或或(a=a+1),一般,一般來說,由于來說,由于Shell是一種弱編程語言,算術(shù)運(yùn)算不是一種弱編程語言,算術(shù)運(yùn)算不算強(qiáng)大,使用算強(qiáng)大,使用(a=a+1)格式執(zhí)行效率較高。格式執(zhí)行效率較高。算術(shù)運(yùn)算符及其優(yōu)先級(jí)運(yùn)算符運(yùn)算符優(yōu)先級(jí)優(yōu)先級(jí)結(jié)合性結(jié)合性作用作用+;-1正;負(fù)正;負(fù)!;2非;按位求反非;按位求反*3冪冪*;/;%4乘;除;取模乘;除;取模+;-5加;減加;減6左移;又移左移;又移;=;=7關(guān)系關(guān)系=;!=8相等;不相等相等;不相等&am
58、p;9與與算術(shù)運(yùn)算(續(xù))v例例:用:用Shell編程計(jì)算編程計(jì)算8*(9+10)的值。的值。#!/bin/bash#!/bin/bashsum=exprsum=expr 8 8 * * (9 + 10 ) (9 + 10 )echo “The sum is: $sum”echo “The sum is: $sum”#end#endv以上程序中,第二行等號(hào)兩邊沒空格;第二行以上程序中,第二行等號(hào)兩邊沒空格;第二行expr表達(dá)式表示數(shù)值計(jì)算,格式為表達(dá)式表示數(shù)值計(jì)算,格式為“expr expression”,其中,其中expression是由字符串以及是由字符串以及運(yùn)算符所組成的,每個(gè)字符串或運(yùn)算
59、符之間必須運(yùn)算符所組成的,每個(gè)字符串或運(yùn)算符之間必須用空格隔開;當(dāng)表達(dá)式中含有用空格隔開;當(dāng)表達(dá)式中含有“*”;“(”;“)”等非字母或數(shù)字符號(hào)時(shí),必須在其前面加等非字母或數(shù)字符號(hào)時(shí),必須在其前面加上上“”,以免被,以免被Shell解釋成其它含義。解釋成其它含義。條件語句v 1 1條件測(cè)試條件測(cè)試testtestv 用用testtest命令進(jìn)行條件測(cè)試。格式為:命令進(jìn)行條件測(cè)試。格式為: test expression test expression 或或expressionexpressionv 例如:字符串測(cè)試。例如:字符串測(cè)試。rootCandyrootCandy #test 2 = 3
60、 #test 2 = 3rootCandyrootCandy #echo $? #echo $?1 1v 注意等號(hào)操作符兩邊都要空格。注意等號(hào)操作符兩邊都要空格。v 特殊變量特殊變量“$?”$?”表示上一條命令執(zhí)行后的返回值,如果返回值為假,表示上一條命令執(zhí)行后的返回值,如果返回值為假,$?$?返回返回1 1,如果返回值為真,如果返回值為真,$?$?返回返回0 0。 rootCandyrootCandy # # 6 = 6 6 = 6 rootCandyrootCandy #echo $? #echo $? 0 0v 改用中括號(hào)形式,注意等號(hào)操作符兩邊和中括號(hào)內(nèi)側(cè)都要有空格。改用中括號(hào)形式,注意等號(hào)操
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 急診工作的方式計(jì)劃
- 締造良好工作氛圍的策略計(jì)劃
- 高中歷史 第5課 美國(guó)獨(dú)立戰(zhàn)爭(zhēng)教學(xué)實(shí)錄2 岳麓版選修2
- 統(tǒng)編版小學(xué)語文二年級(jí)下冊(cè)第15課《古詩二首》精美課件
- 愛衛(wèi)知識(shí)培訓(xùn)課件社區(qū)
- 2025年濮陽貨運(yùn)從業(yè)資格證考試內(nèi)容
- 2025年白山貨運(yùn)從業(yè)資格證模擬考試題庫
- 2025年臨汾道路貨物運(yùn)輸從業(yè)資格證模擬考試
- 八年級(jí)政治下冊(cè) 第五單元 我是中國(guó)公民 5.2《公民的權(quán)利和義務(wù)》情境探究型教學(xué)實(shí)錄 粵教版
- 2025年天津貨運(yùn)從業(yè)資格證模擬考試下載
- 一體化污水處理設(shè)備項(xiàng)目商業(yè)計(jì)劃書
- 《如何與孩子溝通》課件
- 美術(shù)概論-課件
- 牛津深圳版初中英語中考英語詞匯匯總(七至九年級(jí))
- 【高中語文】《李憑箜篌引》(同步課件)+高二語文+(統(tǒng)編版選擇性必修中冊(cè))
- 人衛(wèi)版急診與災(zāi)難醫(yī)學(xué)之呼吸困難教學(xué)課件
- 骨質(zhì)疏松的中醫(yī)治療
- 中醫(yī)科運(yùn)用PDCA循環(huán)縮短出院患者離院時(shí)間品管圈QCC持續(xù)質(zhì)量改進(jìn)成果匯報(bào)
- 老年人的溝通交流護(hù)理課件
- SEER數(shù)據(jù)庫的申請(qǐng)及數(shù)據(jù)提取方法與流程
- 2022礦產(chǎn)地質(zhì)勘查規(guī)范鹽類第2部分:現(xiàn)代鹽湖鹽類
評(píng)論
0/150
提交評(píng)論