《Linux 標準學習教程》課件第14講 shell交互功能和變量_第1頁
《Linux 標準學習教程》課件第14講 shell交互功能和變量_第2頁
《Linux 標準學習教程》課件第14講 shell交互功能和變量_第3頁
《Linux 標準學習教程》課件第14講 shell交互功能和變量_第4頁
《Linux 標準學習教程》課件第14講 shell交互功能和變量_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第14講 shell交互功能和變量主要內(nèi)容一. 簡介二. Shell的啟動和建立三. shell命令行形式四. Shell 環(huán)境五. shell變量六. Shell的內(nèi)部命令第14講 shell交互功能和變量一. 簡介 shell是UNIX系統(tǒng)中最重要的程序之一, 它具有兩大功能: 命令解釋器 解釋執(zhí)行所有的用戶命令 程序設(shè)計語言 具有高級語言的所有功能 shell有兩種主要語法類型: Bourne shell和C shell,彼此不兼容。 Bourne shell家族:sh ksh bash psh zsh; C shell家族:csh tcsh。其中bash和 zsh在不同程度上支持 cs

2、h 的語法Bash特點Bash是大多數(shù)Linux系統(tǒng)的默認Shell。Bash有以下的優(yōu)點:1)補全命令。在Bash命令提示符下輸入命令或程序名時,若沒有輸全命令或程序名,按“Tab”鍵,Bash將自動補全命令或程序名。2)通配符。在Bash下可以使用通配符“*”和“?”。“*”可以替代多個字符,而“?”則替代一個字符。3)歷史命令。Bash能自動跟蹤用戶每次輸入的命令,并把輸入的命令保存在歷史列表緩沖區(qū)中。4)別名。在Bash下,可用alias和unalias命令給命令或可執(zhí)行程序起別名和刪除別名,這樣就可以用自己習慣的方式輸入命令。5)輸入/輸出重定向。輸入重定向用于改變命令的輸入,輸出重

3、定向用于改變命令的輸出 例:輸入重定向。 $ wcdir.out 上面命令將ls命令的輸出保存為文件dir.out。$ ls dir1.out6)管道。管道用于將一系列的命令連接起來,也就是把前面命令的輸出作為后面命令的輸入。管道的命令是“|”。管道的功能和用法與DOS/Windows系統(tǒng)的完全相同。例:$ cat dir.out|grep test |wc l7)提示符。Bash有兩級提示符。第一級提示符就是登錄Shell時見到的,默認為 “$”。可以通過重新給PS1變量賦值來改變第一級提示符。當Bash需要進一步提示以便補全命令時,它會顯示第二級提示符。第二級提示符默認為“”,可以通過重新

4、給PS2變量賦值來改變第二級提示符。一些特殊意義的字符也可以加入提示符賦值中。 一般設(shè)為PS1=uh W$ 意思是:用戶名主機名 當前目錄。8)作業(yè)控制。作業(yè)控制是指在一個作業(yè)執(zhí)行過程中,控制執(zhí)行的狀態(tài)。可以掛起一個正在執(zhí)行的進程,并在以后恢復執(zhí)行該進程。Ctrl+z,bg,fg等 裝入UNIX硬件檢測安裝rootfs建立0號進程產(chǎn)生新進程swap對換進程1號進程init執(zhí)行/etc/inittab初始化各端口gettygetty用戶注冊正確嗎建立shell進程二. Shell的啟動和建立子父boot.NYBA等待命令輸入分析命令退出命令產(chǎn)生子進程后臺進程等待子進程執(zhí)行命令ABYN子進程父進程

5、喚醒父進程NY三. shell命令行形式1. 單條命令: $ cat file1 最常用命令形式2. 多條命令: $ pwd; who; date 提高鍵盤命令輸入效率3. 復合命令: $ ps e | grep student2 $ (ls ; cat file3 ; pwd) run_log方便靈活, 運行效率高4. 后臺命令: $ ls lR file_list & 多進程并發(fā), 充分利用系統(tǒng)資源四. Shell 環(huán)境 每一個shell都有一個用戶可設(shè)置修改的獨立的運行環(huán)境, 使這個shell按照特定的方式來運行。 shell的環(huán)境由一組環(huán)境變量確定, 系統(tǒng)的基本環(huán)境變量放在/etc/p

6、rofile中, 用戶環(huán)境變量放在用戶主目錄下的.profile文件中, 用戶shell啟動時, 先執(zhí)行/etc/profile, 再執(zhí)行用戶的.bash_profile。 環(huán)境變量可在shell運行時動態(tài)修改。.bash_history:記錄用戶以前輸入的命令.bash_profile:用戶登錄要執(zhí)行的命令.bash_logout:用戶退出要執(zhí)行的命令.bashrc:每次打開新才shell要執(zhí)行的命令常用的shell環(huán)境參數(shù)(變量)及實例:HOME=/usr/computer/student6 用戶主目錄, 注冊時的初始目錄PATH=/bin:/usr/bin:$HOME/bin:./ 鍵盤

7、命令的搜索路徑SHELL=/bin/sh 當前運行的shell名稱TERM=vt100 當前所用的終端類型PS1=$ shell的主提示符IFS= 域分隔符, 通常為空白符, 用來分隔命令行各個域set命令可以查看當前定義的環(huán)境變量五. shell變量shell實際上是基于字符串的程序設(shè)計語言,但也有變量。shell變量能夠而且只能存儲正文字符串,即它只有一種類型的變量即串變量。但從賦值的形式上看,則可以分成四種類型的變量或變量形式。變量的名字必須以字母或下劃線開頭,可以包括字母、數(shù)字和下劃線。1、用戶自定義變量用戶自定義變量語法格式:name=string,賦值號“=”兩邊不允許有空白符。例

8、:nodehost=beijing.UUCPpath=/bin:/usr/bin:/etc/bincount=10允許多個賦值操作,按從右到左的順序進行。例:A=B B=abc C=OK echo A B Cabc abc OK當引用一個未設(shè)置的變量時,其隱含值為空。例: echo mail is path of mailboxis path of mailbox 如果用雙引號“”將值括起來,則括起來的字符串允許出現(xiàn)空格、制表符和換行符等特殊字符,而且允許有變量替換。例1: MAIL=/var/mail/fk var=MAIL is path of mailbox echo var/var/m

9、ail/fk is path of mailbox例2: str=This is n a book echo strThis isa book如果用單引號將值括起來,則括起來的字符串允許出現(xiàn)空格、制表符和換行符的特殊字符,但不允許有變量替換。例3: BOOK=English book MSG=BOOK echo MSGBOOK例4: msg= Today is Sunday echo msgToday is Sunday 引用變量的值時,可以用花括號將變量名稱括起來,使變量名稱與它的后續(xù)字符分隔開,如果緊跟在變量名稱后面的字符是字母、數(shù)字或下劃線時,必須要使用花括號。例5: str=This

10、is a string echo strent test of variablesThis is a stringent test of variables echo strent test of variablestest of variables可將變量設(shè)置為只讀形式,格式為,readonly 變量名1 變量名2例6: ux=UNIX.SUN readonly ux ux=UNIX.SCOux: is read only查看只讀形式的變量,格式為readonly例7: readonlyreadonly ux2、位置變量 位置變量顧名思義是與變量所在位置有關(guān)的變量,這是一種特殊的變量。當一個

11、shell過程被調(diào)用時,shell隱含地為它建立一系列的位置變量。這種位置變量是系統(tǒng)預定義好的,可以直接引用。如命令行的shell過程名本身被指定為位置變量0,第一個命令參數(shù)為1,第九個命令參數(shù)為9。例:ls / /bin /etc /usr/bin /dev0 1 2 3 4 53、 環(huán)境變量shell執(zhí)行環(huán)境由一系列環(huán)境變量組成,這些變量是由shell維護和管理的。所有這些變量都可被用戶重新設(shè)置,變量名由大寫字母或數(shù)字組成。CDPATH 執(zhí)行cd命令時使用的搜索路徑;HOME 用戶的home目錄;PATH 尋找命令或可執(zhí)行文件的搜索路徑;PS1 主命令提示符,默認為“”;PS2 從命令提示

12、符,默認為“”;TERM 使用的終端類型。4、預定義變量常用系統(tǒng)變量:$0 當前shell程序的名字$1 $9 命令行上的第一到第九個參數(shù)$# 命令行上的參數(shù)個數(shù)$* 命令行上的所有參數(shù)$ 分別用雙引號引用命令行上的所有參數(shù)$ 當前進程的進程標識號(PID)$? 上一條命令的退出狀態(tài)$! 最后一個后臺進程的進程標識號系統(tǒng)變量只能引用不能修改!例1:$ echo aa bb cc dd $aa bb cc dd 2391$ cat file1 file2 file3 2 errlog$ echo $?1 (非0表示命令運行失敗, 錯誤信息在errlog 文件中)$ echo (空行, 即echo

13、輸出串尾隱含的換行符)$ echo This is a test. (單詞間多個空格)This is a test.$ echo “This is a test.” (用引號包括時結(jié)果如何?)例2:顯示所有參數(shù)及其總數(shù)。 先將下面源代碼用vi編輯器存為afile文件#!/bin/bash echo All argument list : $ /存儲所有命令行輸入的參數(shù)echo The total number of argument is : $#/程序中命令行參數(shù)的個數(shù)#end/“#”為注釋符號,“#!”為特殊的注釋符號,它告訴操作系統(tǒng)使用其后面的程序來解釋這個文件。 存盤后執(zhí)行chmod

14、a+x afile$ ./afile red hat linux /輸入三個參數(shù)All argument list : red hat linux /顯示參數(shù)The total number of argument is : 3 /顯示參數(shù)的個數(shù)六. Shell的內(nèi)部命令evalcd 改變當前工作目錄pwd 顯示當前工作目錄read 讀標準輸入, 賦給后面的變量readonlytime 顯示當前shell運行命令所花費的時間echoexport說明: shell 的內(nèi)部命令包含在shell命令內(nèi)部, 不是一條單獨的操作系統(tǒng)命令, 因此無法在文件系統(tǒng)中查找到.變量輸出命令 export shel

15、l變量定義后或修改值后, 如果未經(jīng)export命令輸出, 則只在當前的shell中起作用, 對其各個子shell不產(chǎn)生任何影響. 經(jīng)過 export 命令輸出的變量對當前shell的各個子shell、以及子shell的子shell起作用。例如:$ PATH=$PATH:./ ; export PATH說明: 1. export后面的變量名前不加$符號2. 經(jīng)export輸出給子shell的變量如果在子shell中被修改, 則只影響子shell, 不影響父shell; 如果 在子shell中被輸出,則只影響子shell的子shell3. export命令常用在.profile文件中echo 命令

16、的使用 echo命令的基本功能就是在標準輸出上顯示后面的字符串,或變量的值。當字符串中帶空白符或其它控制字符時,用引號將其括起來。例如:$ echo 1234512345$ echo “department computer”department computer$ echo “My home directory is: $HOME”My home directory is: /usr/teacher/david$ echo e “Input your choice (y/n) bbc”Input your choice (y/n) _ echo 特殊字符串引用的例外引用雙引號、單引號和轉(zhuǎn)意符都不能消除對echo命令有特殊功能的控制字串的特殊含義。這些控制

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論