• /  113
  • 下載費用: 10.00積分  

Linux基礎教程教學課件作者清華PPT電子教案第9章.ppt

'Linux基礎教程教學課件作者清華PPT電子教案第9章.ppt'
第9章 shell編程9.1 shell概述9.2 shell的基本功能9.3 shell啟動及其命令9.4 shell命令的集成9.5 shell變量9.6 shell的控制結構9.7 shell的運行環境9.8 shell應用實例9.9 小結 習題shell是一種命令語言,同時又是一種程序設計語言。shell的語言處理能力,使得用戶能夠方便地定義各種變量、參數,并使用各種控制語句編寫復雜的命令程序完成多種工作。本章介紹shell、shell程序設計語言、shell的運行環境及shell程序的調試。9.1 shell概述9.1.1 什么是shellshell是一種命令解釋程序(命令解釋器),shell解釋用戶輸入的命令行,提交系統內核處理,并將結果返回給用戶。與Linux命令一樣都是實用程序,但兩者又有區別。一旦用戶注冊到系統后,shell就被系統裝入內存,并一直運行到用戶退出系統之止;而一般命令僅當被調用時,才由系統裝入內存執行。shell本身也是一種可編程的程序設計語言。用shell寫的程序(shell腳本)相當于dos/windows下的批處理文件,它可以簡單到只有一條命令,也可以復雜到包括大量循環、條件語句、數學運算、控制結構,也可以是介于兩者之間的程序。9.1.2 shell程序語言的特點shell允許通過編程來完成復雜的功能處理,但其作為語言與高級語言相比較具有不同的特點:(1) shell是解釋性的,多數高級語言是編譯性的;(2) shell語言與高級語言處理的對象不同;(3) shell與系統有密切的關系;(4) shell易編寫、調試、靈活性較強,但速度低;(5) shell作為命令級語言,命令組合功能很強。9.1.3 shell的版本shell有兩種主要語法類型: Bourne shell和C shell,彼此不兼容。Bourne shell家族:sh ksh bash psh zsh;C shell家族:csh tcsh。其中bash和 zsh在不同程度上支持 csh 的語法。這里,我們再著重介紹一下bash的特點:(1) 自動補全功能假設要輸入的命令很長,或者命令后面要給的文件名很長。這個時候只要按一個Tab鍵,bash就會在可能的命令或文件名里面找尋匹配的命令,找到的話就會自動幫你補齊。(2) 命令行編輯程序bash的命令行編輯是在提示符下,可對未執行的命令字符任意地修改。(3) 命令歷史(command history)所謂的命令歷史就是把曾經輸入過的命令記錄起來,方便日后的查詢與使用。只要按向上鍵就可以調出前一個命令,再按一次向上鍵就可以調出更前一個命令,依此類推,用向下鍵可以回到下個命令,所以用上、下鍵就可以選擇以前輸入過的命令。9.2 shell的基本功能9.2.1 程序的運行當用戶輸入一行命令后,shell負責解釋、分析輸入的內容,并且決定做什么,同時替系統內核刪除命令行中不必要的信息。命令是一個可執行的Linux命令、程序、工具或shell腳本。例1: $ls -l file1 file2 file3例2: $echo ′Welcome to Tsinghua University.′例3: $echo Welcome to Tsinghua University.注意: 例2和例3的結果是完全一樣的。9.2.2 使用保留字和元字符shell有一些具有特殊意義的字(保留字) ,如在shell腳本中,像do、done、for、while等保留字控制循環操作,if、then、else等保留字進行條件控制。保留字隨shell的不同而不同。在Linux系統里,有一組特殊意義字符,這就是所謂的元字符(通配符)?,F在列出一些常用的通配符的意義,供參考。.. 上一層目錄,與cd命令配合用得比較多. 目前工作的目錄* 任意長度的字符? 長度為一個的任意字符[..] 括號內的一個字符\m 等于某個通配符,如*、?等[a-z]* 小寫字母開頭的所有字符串\ 轉義符號,用以解除特殊字符的特殊意義~ 用戶目錄; 分隔符,當命令行有多個命令時,做分隔用$ BourneShell的提示符,同時也作為shell語言的位置變量參數# 做注釋用| 建立一個管道,使一命令的輸出作為另一個命令的輸入& 將命令以后臺方式執行> 將命令的輸出重導入文件中相反>> 將命令的輸出加在一個已經存在的文件后面{..} 括號內的一個字符串例: $ls -x t*顯示當前目錄下以t打頭的所有文件。9.2.3 變量、文件名的替換1. 變量的替換shell允許對變量賦值。shell一旦在命令行中發現$變量名時,將在$變量名的位置上用以前賦給該變量的值替代$變量名。例: $myhome=/usr/app1 $echo $myhome /usr/app1 $ls -x $myhome file1 file2 file3 file42. 文件名的替換shell在命令行中將文件名進行替換。事實上,shell在確定要執行的程序名和它的自變量之前,要對命令行掃描,找出元字符進行相應的文件名的替換。例: $ls -x file1 file2 file3 file4 $echo* file1 file2 file3 file49.2.4 輸入輸出重定向(改向)shell處理命令行的輸入輸出重定向,它掃描命令行中特殊改向字符“>”、“>”、“< msg $cat msg Please call me:62781849注意: 就程序或命令本身而言,它并不知道其標準輸出已被改向,只是簡單地按照自身的方式向標準輸出輸送信息。正如shell掃描命令行查找重定向字符一樣,它也查找管道字符“|”。對于所發現的每個管道字符,它將管道字符前面的命令的標準輸出連接到管道字符后面的命令的標準輸入中,然后啟動兩個程序的執行。例: $w|wc -l(假設有8個用戶上機) 89.2.5 運行環境的控制當用戶登錄到Linux系統中,系統啟動一個交互式的shell命令解釋器(稱為注冊shell)。該shell為此用戶創建工作環境。shell提供了一定的命令,允許用戶對自己運行的環境進行控制,即對運行環境實現客戶化。用戶的運行環境包括:主目錄、終端類型、輸入命令提示符、查找命令的路徑名、以及其他全局變量等。例如,Bourne again Shell、Bourne Shell、Korn Shell和C Shell的環境文件分別為。省略部分。條件if語句,執行shell命令quotacheck elif [″$rc″=″1″ -a -x/sbin/quotacheck]; then echo ″Checking root filesystem quotas″ /sbin/quotacheck -v/ fifi# 下面語句對根系統實行磁盤空間限定,執行shell命令quotaon。if [-x/sbin/quotaon]; then echo ″Turning on user and group quotas for root filesystem″ /sbin/quotaon/fi# 下面命令是設置PNP,首先檢查參數,執行shell命令mount。# 在if語句中采用輸出重定向,定義變量PNP。# check for argumentsmount -t proc/proc/procif grep -i nopnp/proc/cmdline>/dev/null; then PNP= else PNP=yesfi# 以下語句設置PNP, 先使用一個簡單if語句,復合條件,并引用變量PNP。# 執行shell命令isapnp。# set up PNPif [-x /sbin/isapnp -a -f /etc/isapnp.conf]; then if [-n ″$PNP″]; then echo ″Setting up ISA PNP devices″ /sbin/isapnp/etc/isapnp.conf else echo ″Skipping ISA PNP configuration at users request″ fifi# 下面命令重新mount根文件系統,執行shell命令mount# 如果/etc/HOSTNAME不存在,則把${HOSTNAME}變量的值輸出到/etc/HOSTNAME文件中。# Remount the root filesystem read-write.echo ″Remounting root filesystem in read-write mode.″mount -n -o remount,rw /if [! -f /etc/HOSTNAME]; then echo ${HOSTNAME} > /etc/HOSTNAMEfi# 清空/ etc/mtab文件# clear mtab>/etc/mtab# 執行shell命令,把/和/proc文件系統加載上。# Enter root and /proc into mtab.mount -f /mount -f /proc# 如果/proc/ksyms文件存在, 定義變量USEMODULES為y。if [-f /proc/ksyms]; then USEMODULES=y else USEMODULES=fi# 下面命令是獲取要執行的模塊。# 先執行shell命令rm刪除文件, 引用變量USEMODULES,# 并用set給位置變量強制賦值,引用系統變量$#,引用位置變量$1,# 在if語句中使用管道命令,使用輸出重定向。# Get the modules ready to go -- we use awk here as cut is in /usr/binrm -f /lib/modules/preferredif [-n $USEMODULES]; then set `cat /proc/cmdline` while [$# -gt 0]; do if echo $1|grep ′^BOOT-IMAGE=′ > /dev/null ; then### 中間略去部分語句## 下面語句初始化串口, 執行shell命令rc.serial。# Initialize the serial ports.if [-f /etc/rc.d/rc.serial]; then . /etc/rc.d/rc.serialfi# 下面語句加載模塊, 執行shell命令rc.modules。# Load modules (for backward compatibility with VARs)if [-f /etc/rc.d/rc.modules]; then/etc/rc.d/rc.modulesfi# 下面語句是檢查SCSI磁帶設備。# If a SCSI tape has been detected, load the st module unconditionally# since many SCSI tapes don′t deal well with st being loaded and unloaded# 這里用到帶復合條件的if語句,并使用管道命令和重定向命令。if [-f /proc/scsi/scsi] && cat /proc/scsi/scsi|grep -q ′Type:Sequential-Access′ 2>/dev/null ; then if cat /proc/devices|grep -qv ′ 9 st′ ; then if [-n ″$USEMODULES″] ; then # Try to load the module. If it fails, ignore it... modprobe st 2>/dev/null fi fifi# 下面執行shell命令dmesg,顯示系統配置信息,# 并把輸出結果重定向到/var/log/dmesg中。# Now that we have all of our basic modules loaded and the kernel going,# let′s dump the syslog ring somewhere so we can find it laterdmesg > /var/log/dmesg# 執行shell命令random start。# Feed entropy into the entropy pool/etc/rc.d/init.d/random start9.9 小結本章主要介紹了什么是shell、shell變量、shell命令以及shell 語言控制結構,并著重講述了如何使用shell語言編寫shell程序并調試運行。大家要充分理解shell變量,通過編寫shell程序并運行,來理解shell程序在整個Linux系統所起的巨大作用。習題9-1 什么是shell?什么是重定向?什么是管道?9-2 shell變量怎么用?常用的預定義變量和環境變量都有哪些?常用的位置變量和系統自動賦值有哪些?9-3 往你的主目錄下隨便拷貝5個文件,用mv命令將這些文件名都變成大寫,現在請你編個shell程序,將這些文件名都變成小寫。9-4 編寫一個shell程序,它能夠將指定目錄及其子目錄中的包含字符串root的文本文件找出來。
關 鍵 詞:
教學 作者 清華 ppt 教程 電子 基礎 教案 linux
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:Linux基礎教程教學課件作者清華PPT電子教案第9章.ppt
鏈接地址: http://www.476824.live/p-51617630.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 如何开通创业板 南京股票配资公司 百度理财亏本金案例 北京快乐8什么时候开盘 闪牛配资 辽宁十一选五一定牛势图 辽宁35选7中奖规责 吉林11选五号码预测推荐 期货配资公司加盟 一分赛车有规律吗