freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

shell基礎(chǔ)與編程技術(shù)講義-wenkub

2023-04-01 17:16:15 本頁(yè)面
 

【正文】 arguments ? func( ) ? { echo Let39。 ? 函數(shù)的規(guī)則是先定義后使用。不同之處在于它是多進(jìn)程。 { }用于將順序執(zhí)行的命令輸出結(jié)果用于另一個(gè)命令的輸入(管道方式)。在命令執(zhí)行過(guò)程中,原shell(父 shell)等待子 shell的執(zhí)行而進(jìn)入睡眠態(tài),一旦子 shell執(zhí)行完畢,子 shell將喚醒原 shell,而子 shell的生命周期到此結(jié)束。表 bash為例列出常用的內(nèi)部命令。這些命令分為內(nèi)部命令和外部命令兩類(lèi)。只要按向上鍵就能調(diào)出歷史命令。.bashrc39。行添加到用戶(hù) 39。因?yàn)橛脩?hù)定義的是局部環(huán)境變量。PATH=/some/directory39。$39。開(kāi)頭,有時(shí)不是。$pAtH39。 用戶(hù)如何處理一般的環(huán)境變量是有技巧的。如果用戶(hù)使用 X,更多的變量將由 X和用戶(hù)窗口管理器或桌面環(huán)境的啟動(dòng)文件配置。輸入 set將列出所有當(dāng)前定義的環(huán)境變量。$PATH39。root39。在 39。 在 39。 在 man bash中的 39。.bash_profile39??梢杂?pwd(輸出當(dāng)前目錄, print working directory)查看細(xì)節(jié)。默認(rèn)提示符將顯示用戶(hù)名、主機(jī)名(默認(rèn) localhost)、當(dāng)前目錄( ‘ ~?表示 home目錄),最后一個(gè)字符是普通用戶(hù)( $)或是‘ root?( )的標(biāo)記。/etc/39。/etc/profile39。 ? .bashrc :每次打開(kāi)新的 shell 時(shí),要執(zhí)行的命令。另外, $cd回車(chē)可隨時(shí)回到home目錄。 39。完成這些工作的命令是固定的,可把它們寫(xiě)入一個(gè) shell腳本中,每次批處理完成。 ? 用戶(hù)開(kāi)發(fā)的 shell腳本可以駐留在命令搜索路徑的目錄之下如 /bin、 /usr/bin等,像普通命令一樣使用。但在 cygwin的 linux模擬環(huán)境中可以直接執(zhí)行而無(wú)需改變其文件屬性。程序最好以“ !/bin/sh”為開(kāi)始的第一行。建立shell腳本的步驟同建立文本文件相同。 4 shell程序設(shè)計(jì)基礎(chǔ) shell擅長(zhǎng)系統(tǒng)管理, shell腳本實(shí)質(zhì)是命令批處理。 ? 目前 linux系統(tǒng)的缺省 shell分別是 Bourne Again shell,即bash。一是參數(shù)可以為任意字符串,多數(shù)情況下字符串不用引號(hào);二是參數(shù)表不用括號(hào),各參數(shù)之間也不用逗號(hào)分隔。用戶(hù)對(duì) shell的熟練程度直接體現(xiàn)用戶(hù)的 linux編程水平。本章先了解 shell,進(jìn)而掌握 shell命令、變量和程序控制結(jié)構(gòu)、程序調(diào)試,最后通過(guò)理解綜合范例,把握編程技巧,達(dá)到學(xué)以致用的目的。 3 ? Linux系統(tǒng)提供了多種不同的 shell。 ? 要知道所用的 linux有哪些版本的 shell,可以查看 /etc/shell目錄下的文件。復(fù)雜腳本一般包括判斷、循環(huán)、文件測(cè)試等程序結(jié)構(gòu)。用 vi等進(jìn)行程序錄入和編輯,也可以用 cat和管道等命令直接建立一個(gè)腳本文件。符號(hào) !用來(lái)告訴系統(tǒng)它后面的參數(shù)是用來(lái)執(zhí)行該文件的程序。 ? 改變腳本文件成為可執(zhí)行文件屬性的命令行的寫(xiě)法是: ? $chmod +x myprogram 或 $chmod 755 myprogram ? 最后,執(zhí)行該程序的命令行寫(xiě)法是: ? $./myprogram 或 $ bash myprogram ? 回車(chē)就可以看到程序的執(zhí)行結(jié)果: ? hello world. ? my first shell program. 7 ? 在 shell編程時(shí),以 開(kāi)頭的句子表示這一行為注釋。通過(guò)這樣方式可以擴(kuò)充新命令。 ? 有些固定工作的命令很復(fù)雜,如文件系統(tǒng)安裝 mount帶多個(gè)選項(xiàng)和參數(shù),此時(shí)用 shell腳本存放該命令,就能提高效率。~39。 8 ( 1) bash 配置文件 ? 在用戶(hù)的 home目錄下,運(yùn)行命令: ? $ls .bash* ? 將會(huì)看到這些文件: ? .bash_history :記錄了用戶(hù)以前輸入的命令。 ? 其中 .bash_profile只在會(huì)話(huà)開(kāi)始時(shí)讀取一次,而 .bashrc每次打開(kāi)新終端時(shí)都被讀一次。、 39。下的文件里。用戶(hù)通過(guò) $PS1設(shè)置提示符。 怎樣讓 shell自動(dòng)告訴用戶(hù)的當(dāng)前目錄呢? 提示符等信息一般包含在文件 39。和 39。PROMPTING39。~/.bashrc39。~/.bashrc39。時(shí),變成: [/usr/bin] 用戶(hù)已去掉了主機(jī)名和用戶(hù)名。與 39。用戶(hù)看到的環(huán)境變量在 shell配置文件中的定義,可能是用戶(hù)自己的配置文件,也可能是由 root通過(guò) 39。 了解如何改變 $PATH變量很有用,它決定了 shell尋找命令或程序的目錄路徑。所有環(huán)境變量名都大寫(xiě),用戶(hù)也可以自定義一些非大寫(xiě)的變量,如 39。但 shell 不知道這些變量。當(dāng)設(shè)置一個(gè)變量時(shí),用戶(hù)直接用名稱(chēng)而不需要加 39。: $echo $PATH $/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin 否則命令行 $echo PATH的執(zhí)行結(jié)果就是: $PATH。這將刪除 $PATH中的其它所有目錄。要定義全局變量,用戶(hù)需要將局部變量輸出 (export),用 export命令: export PATH=$PATH:/some/directory 現(xiàn)在打開(kāi)新終端,輸入 echo $PATH,將能看到新設(shè)置的 $PATH。.bash_profile39。中設(shè)置 PATH,以免 PATH目錄意外增長(zhǎng)。與 SHIFT鍵連用,可遍歷該控制臺(tái)中的歷史輸出。 ? 內(nèi)部命令 ? shell內(nèi)部命令是 shell本身具備的基本命令,執(zhí)行速度比外部命令快,存放在內(nèi)存中,在當(dāng)前 shell中立即被執(zhí)行,不必創(chuàng)建新進(jìn)程。 13 14 外部命令 ? shell除去內(nèi)部命令以外的命令被稱(chēng)為外部命令或程序。 ? 命令分組 ? 在 shell中有兩種命令分組的方法:“( )”和“ { }”。當(dāng)用戶(hù)使用圓括弧和花括弧時(shí),需要在其前面加上轉(zhuǎn)義符(、)以便shell知道他們不是用于命令執(zhí)行的終止之用。函數(shù)定義的基本格式為: ? [function]函數(shù)名 ( ) ? { ? 若干命令行 ? } ? 其中關(guān)鍵字 function可以缺省。調(diào)用函數(shù)時(shí)直接利用函數(shù)名,不帶圓括號(hào),與一般命令同樣使用。s begin now. ? echo $a $b $c ? echo $1 $2 $3 ? echo The end. ? } ? a= Working directory ? b=is ? c=`pwd` ? func Wele You Byby ? echo Today is ` date ` ? shell中的函數(shù)把若干命令集合在一起,通過(guò)函數(shù)名調(diào)用??梢杂?return命令立即退出函數(shù),其語(yǔ)法格式是: ? return [ n ] ? 其中的 n值是退出函數(shù)時(shí)的退出值(退出狀態(tài)),即 $?的值。 ? print( ) 函數(shù):輸出傳遞給它的文件的內(nèi)容。 shell通過(guò)管道、輸入輸出重定向以及程序設(shè)計(jì)的方法來(lái)實(shí)現(xiàn)這一功能。管道線(xiàn)是由管道操作符分隔的幾個(gè)應(yīng)用程序組成的序列。 ? 命令表中分隔命令的符號(hào)有“;”或換行符。 19 ? 通過(guò)命令、管道線(xiàn)和命令表,用戶(hù)可以完成各種從簡(jiǎn)單到復(fù)雜的任務(wù)。如: “應(yīng)用程序 2”命令就是把應(yīng)用程序的輸出重定向到標(biāo)準(zhǔn)錯(cuò)誤輸出中。如果用戶(hù)輸入的是錯(cuò)誤命令,系統(tǒng)會(huì)自動(dòng)將出錯(cuò)信息送到標(biāo)準(zhǔn)錯(cuò)誤輸出即屏幕上。常用的通配符有四種: ? “ *”匹配任意字符 0或多次。如 f[ad]與 f[abcd]作用相同。 21 2. 模式表達(dá)式 ? 模式表達(dá)式是包含一個(gè)或多個(gè)通配符的字符序列。例如, file+(.c | .o)匹配文件 、 ,但不匹配 file。 ? !(模式表 ) 除給定模式表中一個(gè)“模式”外,它可匹配其它任何東西。 雙引號(hào)中的字符,除 $、倒引號(hào) (`)和反斜線(xiàn)( \)仍保留其特殊功能外,其余字符均作為普通字符對(duì)待。例如, $ echo 39。在前面示例中已見(jiàn)過(guò)。 23 shell變量 ? shell用變量存放字符串,變量沒(méi)有存儲(chǔ)類(lèi)型,使用時(shí)直接定義并賦值。 ? Bash作為常用的 shell,其變量和 C變量有區(qū)別,值得注意的問(wèn)題有: ? Bash變量在引用時(shí)要在變量前加 $符。判斷整數(shù) a和 b是否相等就寫(xiě)做 if [ $a = $b ],判斷整數(shù) a是否大于整數(shù) b就寫(xiě)做 if [ $a gt $b ]。如 if [ x /root ] 可用來(lái)判斷當(dāng)前用戶(hù)是否可以進(jìn)入 /root 目錄。顯然, shell變量是局部的,而環(huán)境變量是全局的。變量名以字母或下劃線(xiàn)開(kāi)頭的字母、數(shù)字和下劃線(xiàn)序列,且大小寫(xiě)字母意義不同。定義變量并賦值的一般形式是:變量名 =字符串 ? 例如: myfile=/usr/meng/ff/ 25 ? 變量值的改變,只須利用賦值語(yǔ)句重新賦值。例如 : ? names=Zhangsan Lisi Wangwu ? 可以將一個(gè)命令的執(zhí)行結(jié)果賦值給變量。 26 【 例 】 關(guān)鍵字 let的應(yīng)用 ? !/bin/bash ? x=2023 ? let x = $x + 1 ? echo $x ? x=a string. ? echo $x ? 關(guān)于整數(shù)變量計(jì)算,有如下幾種: + * / % ,它們的意思和字面意思相同,在 *和 /之前必須冠以反斜線(xiàn),以免被 SHELL先行解釋。 28 變量的類(lèi)型聲明 ? Bash中變量的類(lèi)型聲明一般用關(guān)鍵詞 declare,其語(yǔ)法格式為: ? declare [+/][rxia][變量名稱(chēng)=設(shè)置值 ] ? 其所帶的參數(shù)含義是: [/+]a 設(shè)置 /撤消變量的數(shù)組屬性; [/+]i 設(shè)置 /撤消變量的整數(shù)屬性,但變量可以是數(shù)值,字符串或運(yùn)算式; [/+]r 設(shè)置 /撤消變量的只讀屬性; [/+]x 設(shè)置 /撤消變量輸出屬性,指定變量為環(huán)境變量供 shell外程序使用; p 顯示變量屬性; f定義函數(shù)或僅顯示函數(shù)。 ? !/bin/bash ? declare i a=2 ? declare i b=3 ? declare i c=$a+$b ? echo $c ? 這樣出來(lái)的結(jié)果才能是 5。下標(biāo)是整數(shù)或算術(shù)表達(dá)式,值 =0。形式是: 數(shù)組名 =(值 1 值 2 ... 值 n) ;其中各個(gè)值之間以空格分開(kāi)。使用 *或 做下標(biāo),則會(huì)以數(shù)組中所有元素取代 [*]或 []。替換后花括號(hào)被取消。如果數(shù)組 name中沒(méi)有元素,則 ${name[]}被擴(kuò)展為空串。 表達(dá)式 ${name % pattern}和 ${name %% pattern},如果 pattern與 name值的末尾匹配,那么 name的值中去掉匹配部分后的結(jié)果就是該表達(dá)式的值;否則,該表達(dá)式的值就是 name的值。 表達(dá)式 ${name[*]}和 ${name[]}的值都是數(shù)組 name的元素個(gè)數(shù)。如果變量個(gè)數(shù)與給定數(shù)據(jù)個(gè)數(shù)相同,則依次對(duì)應(yīng)賦值;如果變量個(gè)數(shù)少于數(shù)據(jù)個(gè)數(shù),則從左至右對(duì)應(yīng)賦值,但最后一個(gè)變量被賦予剩余的所有數(shù)據(jù);如果變量個(gè)數(shù)多于給定數(shù)據(jù)個(gè)數(shù),則依次對(duì)應(yīng)賦值,而沒(méi)有數(shù)據(jù)與之對(duì)應(yīng)的變量取空串。ls。每執(zhí)行一次 shift命令,就把命令行上的實(shí)參向左移一位,即相當(dāng)于位置參數(shù)向右移動(dòng)一個(gè)位置,如表 。 35 預(yù)定義特殊變量 shell中預(yù)定義的特殊含義的 shell變量值只能由 shell根據(jù)實(shí)際情況賦值,不能通過(guò)用戶(hù)重新設(shè)置。多數(shù) shell命令執(zhí)行成功時(shí),返回值為 0;執(zhí)行失敗則返回非 0值。例如: set xv 這個(gè)命令行給 shell設(shè)置了標(biāo)志 x和 v(用于跟蹤輸出)。 36 環(huán)境變量與置換變量 PWD是指用戶(hù)當(dāng)前目錄的全名 PPID是指父進(jìn)程 ID $是指當(dāng)前進(jìn)程 ID UID是指當(dāng)前用戶(hù)的 User ID PATH是指查找命令的目錄列表。 LOGNAME是用戶(hù)登錄名 SECONDS是指當(dāng)前運(yùn)行的 bash進(jìn)程的運(yùn)行時(shí)間 (以秒為單位 ) HOME是指用戶(hù) home目錄的路徑名,是 cd命令的默認(rèn)參數(shù) COLUMNS是指定義了命令編輯模式下可使用命令行的長(zhǎng)度 EDITOR是指默認(rèn)的行編輯器 IFS是定義 SHELL使用的分隔符 TMOUT SHELL指自動(dòng)退出時(shí)間(秒),設(shè)為 0禁止 SHELL自動(dòng)退出 PS1是指主命令提示符 PS2指二級(jí)命令提示符,要求輸入數(shù)據(jù)時(shí)用 PS3是 select的命令提示符 PS4是指調(diào)試命令提示符 LD_LIBRARY_PATH是指尋找?guī)斓穆窂剑悦疤?hào)分隔。 37 算術(shù)運(yùn)算 bash中的整數(shù)算術(shù)運(yùn)算命令是 let,其語(yǔ)法格式為: let arg … 其中 arg是單獨(dú)的算術(shù)表達(dá)式,使用的是 C語(yǔ)言中表達(dá)式的語(yǔ)法、優(yōu)先級(jí)和結(jié)合性。當(dāng)訪(fǎng)問(wèn)命名參數(shù)時(shí),就作為算術(shù)表達(dá)式計(jì)算它的值。 如果表達(dá)式的值是非 0,那么返回狀態(tài)值 0;否則返回狀態(tài)值 1。 38 shell程序流程 ? shell具有一般高級(jí)程序設(shè)計(jì)語(yǔ)言所具
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1