亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3788 | 回復(fù): 13
打印 上一主題 下一主題

簽個(gè)名,報(bào)個(gè)到,貢獻(xiàn)一片自己翻譯的爛文(未完,翻譯中) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2003-09-09 16:26 |只看該作者 |倒序?yàn)g覽
POSIX SHELL PROGRAMMING



作者:eagle

目   錄
第一章 介紹POSIX SHELL Scripts        2
§1-1什么是shell腳本        4
§1-2 script的執(zhí)行        6
§1-3外部環(huán)境對(duì)于腳本的影響        8
§1-5在回車之后會(huì)發(fā)生什么?        14



第一章 介紹POSIX SHELL Scripts
本章目標(biāo)
閱讀完本章之后,你可以完成以下工作:
l        描述如何創(chuàng)建一個(gè)POSIX shell script
l        描述shell如何去處理命令
l        解釋shell如何去執(zhí)行命令
l        描述一些內(nèi)部因素對(duì)腳本執(zhí)行的影響
l        編寫一個(gè)shell腳本
l        復(fù)習(xí)POSIX shell的特性





§1-1什么是shell腳本
什么是shell腳本?
l        一種含有UNIX命令的text文件
l        一種可以被閱讀和執(zhí)行的text文件
l        一種可以被shell解釋和執(zhí)行的程序
l        一種可以自動(dòng)執(zhí)行UNIX任務(wù)的工具
l        一種不需要編譯的程序
l        一種易于創(chuàng)建和編輯的程序

此書的首要目的是教你如何去編寫POSIX shell腳本。
什么是shell腳本?簡(jiǎn)單地說(shuō),shell腳本就是一種包含有一個(gè)或多個(gè)unix命令的可執(zhí)行的text類型的文件。Shell腳本不需要編譯就可以直接執(zhí)行。POSIX shell就是把shell腳本中的文本文件解釋成在unix中可以執(zhí)行的命令。
        大多數(shù)的shell腳本用于自動(dòng)處理一些反復(fù)的、令人煩躁的或者需要長(zhǎng)時(shí)間等待程序執(zhí)行的命令。(例如:文件備份、硬盤mirror等)shell的腳本用于守護(hù)進(jìn)程中十分有用。在本書的后面將詳細(xì)介紹。
        Shell腳本可以是一行簡(jiǎn)單的命令也可以是上千行命令。
        但你掌握了POSIX shell編程以后會(huì)覺得它是非常簡(jiǎn)單和輕松的。這本書將提供一系列手把手的關(guān)于shell編程以及它所使用的工具的實(shí)例幫你掌握這門語(yǔ)言。

§1-2 script的執(zhí)行
l        Script的執(zhí)行
執(zhí)行script所需要的步驟:
Ø        建立一個(gè)最少包含有一個(gè)命令的text文檔
Ø        保存文檔
Ø        賦予文檔執(zhí)行的權(quán)限
Ø        執(zhí)行該文檔

建立你的第一個(gè)script程序:
1.建立一個(gè)包含有一個(gè)或多個(gè)命令的文本文件,保存后退出。例如下面的文檔myprog.sh
        vi        myprog.sh
        banner “hello world”
        date
        :wq
        2.        賦予該文件執(zhí)行的權(quán)限
                chmod        u+x                myprog.sh
3.        執(zhí)行該shell腳本
./myprog.sh

課后練習(xí):
1.編寫一個(gè)名為p1.sh的shell腳本輸出顯示以下內(nèi)容:
Ø        標(biāo)題“Procs”( 使用banner命令)
Ø        系統(tǒng)所有進(jìn)程的列表(使用ps命令)
2.編寫一個(gè)名為p2.sh的shell腳本輸出顯示以下內(nèi)容:
Ø        系統(tǒng)的名稱(用hostname命令)
Ø        系統(tǒng)日志文件的最后10行文字
(使用tail命令,系統(tǒng)日志文件為/var/adm/syslog/syslog.log)
3.        編寫一個(gè)名為p3.sh的shell腳本輸出顯示一下內(nèi)容:
Ø        所有在線用戶的排序列表(使用who,cut –c1-8和sort命令)

§1-3外部環(huán)境對(duì)于腳本的影響
外部環(huán)境對(duì)于腳本的影響
l        登陸方法
Ø        采用telnet方式直接遠(yuǎn)程登陸
Ø        CDE從本地或遠(yuǎn)程采用x-windows登陸        (CDE?)
Ø        從console登陸
l        根目錄上的啟動(dòng)配置文件
Ø        .profile
Ø        .dtprofile
l        系統(tǒng)默認(rèn)配置(由系統(tǒng)管理員管理)
Ø        /etc/PATH
Ø        /etc/passwd

        shell腳本執(zhí)行時(shí)所處的環(huán)境會(huì)對(duì)shell腳本如何執(zhí)行和執(zhí)行的結(jié)果都會(huì)產(chǎn)生影響。
        登陸時(shí)所采用的方式會(huì)對(duì)環(huán)境產(chǎn)生一定的影響。不同的登陸方式會(huì)啟動(dòng)不同的配置文件,從而會(huì)改變shell的一些設(shè)定。

登陸方式        啟動(dòng)的配置文件
Telnet方式遠(yuǎn)程登陸        .profile和shell的啟動(dòng)文件
CDE方式登陸        .dttprofile (和.profile一樣)
從console登陸        .profile和shell的啟動(dòng)文件

        這些啟動(dòng)文件可以設(shè)置shell的特性,命令的路徑,shell變量,提示符號(hào)和一些基本的關(guān)于shell的性能特性。
        你必須對(duì)這些文件和他們的用途比較熟悉。
        下面的內(nèi)容是對(duì)這些文件的簡(jiǎn)單描述:

環(huán)境變量
        在本章的后面將詳細(xì)的介紹這些變量。環(huán)境變量廣泛應(yīng)用在應(yīng)用程序,系統(tǒng)程序和shell中。
        當(dāng)用戶登陸時(shí),shell將完成一系列的環(huán)境變量的設(shè)定。這些變量將會(huì)傳遞給子進(jìn)程。
        系統(tǒng)和用戶進(jìn)程利用環(huán)境變量的設(shè)定確定以下內(nèi)容:
Ø        用戶的根目錄地址
Ø        用戶使用的顯示控制接口
Ø        shell執(zhí)行文件的路徑
        以下是一些環(huán)境變量的例子:
        HOME=/home/user1
        ……
        PATH=/usr/bin:/usr/css/bin:……
        ……
        SHELL=/usr/bin/sh
        ……
        TERM=dtterm
        根目錄下的.profile文件包含了shell環(huán)境的設(shè)置。環(huán)境配置文件有很多不同的名字,但一般名字的結(jié)尾都是rc。
        例如:
        ENV=~/.sh
        Export ENV
        Shell腳本文件可以包含以下各項(xiàng)(后面的章節(jié)中將詳細(xì)討論)
Ø        命令別名(可以給UNIX命令制定一個(gè)別名)
Ø        shell的設(shè)定(設(shè)置shell的一些特殊屬性)
Ø        shell變量(設(shè)定變量只在當(dāng)前shell中有效)
Ø        功能函數(shù)(與shell腳本類似,但函數(shù)只存在于當(dāng)前shell中)
        例如:
        set        -o        vi
        set        -o        noclobber
        alias        more=/usr/bin/more
        alias         h=history
        alias        c=clear

別名
        別名是UNIX命令的另一個(gè)名字。
別名使用如下的語(yǔ)法結(jié)構(gòu):
        alias         alias_name = command_text_string
        alias_name就是創(chuàng)建的別名,command_text_string就是其對(duì)應(yīng)的UNIX命令。當(dāng)alias_name在shell腳本中出現(xiàn)時(shí)就調(diào)用相應(yīng)的Unix命令。        例如:
        alias        dir=ls
        以后,如果你使用dir命令就和ls是一樣的功能。(如果你習(xí)慣用dir來(lái)列出文件的話)。
        如果要看有哪些別名是已經(jīng)存在的,可以使用命令:
        alias
        一些別名是已經(jīng)默認(rèn)設(shè)置于POSIX shell中的,可以使用戶更方便的使用UNIX命令。

Shell設(shè)定
        通過(guò)set命令可以控制POSIX shell中一些功能的開啟(sh-posix的幫助文當(dāng)中有詳細(xì)的介紹)。
        啟動(dòng)功能采用set        -o        參數(shù),關(guān)閉功能采用set        +o        參數(shù)。
        一些有用的設(shè)定如下:
        set        -o        ignoreoef          #取消ctrl+D替代exit命令的功能
        set        -o        noclobber          #阻止復(fù)位向時(shí)覆蓋文件
        set        -o        vi                          #用vi編輯器編輯命令行
       
關(guān)閉設(shè)定,用如下的語(yǔ)法:
        set        +o        ignoreoef        #允許ctrl+D替代exit命令
        set        +o        noclobber        #復(fù)位向時(shí)允許覆蓋文件
        set        +o        vi                        #不使用vi編輯器編輯命令行

功能函數(shù)
        功能函數(shù)在.shrc文件中被聲明(功能函數(shù)將在后面的章節(jié)中詳細(xì)的說(shuō)明)。

§1-4在回車之后會(huì)發(fā)生什么?

回車之后會(huì)發(fā)生什么?
l        shell解釋你的命令行
l        shell執(zhí)行一些替換
l        shell在內(nèi)存中裝載你的命令
l        shell建立I/O的重定向
l        shell執(zhí)行你的命令程序
l        shell等待你程序執(zhí)行結(jié)束
l        shell等待下一條命令       

        當(dāng)用戶輸入命令按回車之后,shell在執(zhí)行命令之前會(huì)先解釋該命令。當(dāng)shell執(zhí)行腳本文件時(shí)也是相同的順序。
        命令執(zhí)行的次序是相當(dāng)重要的。如果你違反了執(zhí)行的次序?qū)?huì)得到意想不到的結(jié)果。下面將幫助你了解shell執(zhí)行的次序。為了更清楚,一些關(guān)于shell關(guān)鍵字的內(nèi)部控制命令已經(jīng)得到了簡(jiǎn)化。



Shell 處理過(guò)程
1.Shell首先從命令行中找出特殊字符(元字符),在將元字符翻譯成間隔符號(hào)。元字符將命令行劃分成小塊tokens。Shell中的元字符如下所示:
        SPACE , TAB , NEWLINE , & , ; , ( , ) ,< , > , |
2. 程序塊tokens被處理,檢查看他們是否是shell中所引用到的關(guān)鍵字。
3. 當(dāng)程序塊tokens被確定以后,shell根據(jù)aliases文件中的列表來(lái)檢查命令的第一個(gè)單詞。如果這個(gè)單詞出現(xiàn)在aliases表中,執(zhí)行替換操作并且處理過(guò)程回到第一步重新分割程序塊tokens。
4.Shell對(duì)~符號(hào)進(jìn)行替換。
5.Shell對(duì)所有前面帶有$符號(hào)的變量進(jìn)行替換。
6.Shell將命令行中的內(nèi)嵌命令表達(dá)式替換成命令;他們一般都采用$(command)標(biāo)記法。
7.Shell計(jì)算采用$(expression)標(biāo)記的算術(shù)表達(dá)式。
8.Shell將命令字符串重新劃分為新的塊tokens。這次劃分的依據(jù)是欄位分割符號(hào),稱為IFS。缺省的IFS變量包含有:SPACE , TAB 和換行符號(hào)。
9.Shell執(zhí)行通配符* ? [ ]的替換。
10.shell把所有從處理的結(jié)果中用到的注釋刪除,並且按照下面的順序?qū)嵭忻畹臋z查:
A.        內(nèi)建的命令
B.        shell函數(shù)(由用戶自己定義的)
C.        可執(zhí)行的腳本文件(需要尋找文件和PATH路徑)
11.在執(zhí)行前的最后一步是初始化所有的輸入輸出重定向。
12.最后,執(zhí)行命令。
最后執(zhí)行的命令的形式可能與開始時(shí)敲進(jìn)去的命令形式大不相同。這就是POSIX shell的強(qiáng)大之處:非常簡(jiǎn)短的指令可以產(chǎn)生不同凡響的結(jié)果。




課后練習(xí):
執(zhí)行下面的代碼并揭示其產(chǎn)生的結(jié)果:
print         *
print        '*'
print         My login name is $(whoami)
whence         -v         type
type        if
type        whereis
whereis        print
type        print
alias

§1-5 子shell進(jìn)程環(huán)境

子shell進(jìn)程環(huán)境


















運(yùn)行POSIX shell進(jìn)程的主要組成部分為:
&Oslash;        程序源代碼,即text文檔
&Oslash;        所需的數(shù)據(jù),分為局部變量和環(huán)境變量?jī)刹糠?br /> 當(dāng)一條命令執(zhí)行時(shí)帶有POSIX shell 參數(shù)時(shí),就會(huì)啟動(dòng)一個(gè)子進(jìn)程來(lái)執(zhí)行這條命令。下面描述的就是調(diào)用和執(zhí)行的次序:
1.Shell首先通過(guò)調(diào)用系統(tǒng)函數(shù)fork( )拷貝一份自己作為子進(jìn)程。被創(chuàng)建的shell進(jìn)程稱為子進(jìn)程,相應(yīng)的創(chuàng)建進(jìn)程稱之為父進(jìn)程。
2.當(dāng)子shell進(jìn)程運(yùn)行時(shí),父進(jìn)程處于休息等待狀態(tài)。
3.子shell進(jìn)程可以調(diào)用父進(jìn)程中的環(huán)境變量,但不能夠調(diào)用局部變量。
4.
5. 當(dāng)子進(jìn)程執(zhí)行完成時(shí),他會(huì)返回一個(gè)整型得狀態(tài)參數(shù)值給等待它的父進(jìn)程。
6.父進(jìn)程被喚醒,并且將子進(jìn)程所返回的紙包存在一個(gè)特殊的變量$?中。父進(jìn)程可以用這個(gè)變量來(lái)監(jiān)測(cè)子進(jìn)程是否執(zhí)行成功。


課后練習(xí)
執(zhí)行下面的命令并借時(shí)執(zhí)行后的結(jié)果:
Instruction        execute        Explain the results
Start a child        ksh       
Show the processes        ps -f       
Terminate the child        exit       
Display the result        print $?       
Start a new child        ksh       
Show the processes        ps -f       
Terminate the child        exit 1       
Display the result         print $?       


§1-6 POSIX shell 特點(diǎn)總結(jié)
l

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
2 [報(bào)告]
發(fā)表于 2003-09-09 16:29 |只看該作者

簽個(gè)名,報(bào)個(gè)到,貢獻(xiàn)一片自己翻譯的爛文(未完,翻譯中)

歡迎歡迎!

37.gif (4.23 KB, 下載次數(shù): 119)

37.gif

15.gif (15.69 KB, 下載次數(shù): 114)

15.gif

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2003-09-09 16:31 |只看該作者

簽個(gè)名,報(bào)個(gè)到,貢獻(xiàn)一片自己翻譯的爛文(未完,翻譯中)

謝謝,收下了。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2003-09-09 17:59 |只看該作者

簽個(gè)名,報(bào)個(gè)到,貢獻(xiàn)一片自己翻譯的爛文(未完,翻譯中)

謝謝了!

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2003-09-09 19:27 |只看該作者

簽個(gè)名,報(bào)個(gè)到,貢獻(xiàn)一片自己翻譯的爛文(未完,翻譯中)

支持.........

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2003-09-10 09:41 |只看該作者

簽個(gè)名,報(bào)個(gè)到,貢獻(xiàn)一片自己翻譯的爛文(未完,翻譯中)

希望能夠翻譯完全啊,謝謝!

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2003-09-10 12:27 |只看該作者

簽個(gè)名,報(bào)個(gè)到,貢獻(xiàn)一片自己翻譯的爛文(未完,翻譯中)

不錯(cuò)。又學(xué)到一個(gè)命令banner.

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2003-09-11 18:07 |只看該作者

簽個(gè)名,報(bào)個(gè)到,貢獻(xiàn)一片自己翻譯的爛文(未完,翻譯中)

謝謝先!
繼續(xù)支持翻譯完成。

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2003-09-11 21:17 |只看該作者

簽個(gè)名,報(bào)個(gè)到,貢獻(xiàn)一片自己翻譯的爛文(未完,翻譯中)

不錯(cuò)啊,繼續(xù)!

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2003-09-12 08:13 |只看該作者

簽個(gè)名,報(bào)個(gè)到,貢獻(xiàn)一片自己翻譯的爛文(未完,翻譯中)

弓雖~~~~~~
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP