軟件基礎(chǔ)-07第二章unix工具backus_第1頁
軟件基礎(chǔ)-07第二章unix工具backus_第2頁
軟件基礎(chǔ)-07第二章unix工具backus_第3頁
軟件基礎(chǔ)-07第二章unix工具backus_第4頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章UNIXUnix※文本編輯工具(texteditor,編輯器,編輯程序xeditortr,dd,sort,uniq※文本格式化工具 ⊙書寫文檔資料 按格式自動排版文本文件,編寫連機用戶手冊(onlinemanual)⊙撰寫學(xué)術(shù)(paperandthesis)tex,latex,poscript(ps),pdf※軟件工具(software⊙⊙版本管理工具(versioncontroller)SCCS,CVS,SVN等ar等※軟件調(diào)試查錯工具(debugging⊙⊙※編譯器生成工具(compiler⊙詞法編譯器生成工具(lexicalgeneration)⊙語法編譯器生成工具(yetanothercompilercompiler)※⊙正體字 語定的字符,不能改變⊙斜體字 命令參數(shù),具體值由用戶根據(jù)需要決定⊙省略號 重復(fù)在省略號前面的內(nèi)容⊙方括號 方括號內(nèi)的內(nèi)容可以省略,如需要使用方括號將專門說明 ⊙空 必要處用□表示出現(xiàn)將專門說明明顯需要空格的地方可省略⊙控制 ⊙下劃線 用戶鍵入的數(shù)據(jù)或者字符,用下劃線表示⊙缺 在明顯的情況將省略以上的約定⊙例 與以上約定不符的例外情況將專門說明※⊙:[i⊙vi[file[...]vifile⊙echo 標(biāo)出空格,表示$a□$b與$a$b⊙變量=i和<ESC>是命令(不顯示),其余由用戶輸入(下劃線)?;剀嚪裑□表達(dá)式方括號BACKUS由約翰?巴克斯(JohnWarnerBackus)和彼得?諾爾(PeterNaur)BACKUS系統(tǒng),通常稱為BNF范式(BackusNaurForm,巴克爾范式),是一種針對計算機語言的形式計算機面對的字符流或者命令流都可以看成是具有一定語法和詞則的語s命令或者s程序表達(dá)的操作命令;也可以是圖形界面形式,例如在窗口中用菜單命令表達(dá)的操作BNF范式恰恰可以用來描述任何一種形式化語言的語法和詞法結(jié)構(gòu)。UNIXBNF范式來描述需要處理的文本文件的語法※BNF用括號<>V;VW1|W2||Wn的表達(dá)式稱為產(chǎn)生式;BNF范式。<數(shù)字0|1|2|3|4|5|6|7|8|<字母大寫字母|小寫字母<大寫字母A||<小寫字母a||※BNFBNF范式描述某種語言(A語言)∑={字符1,字符2,...,字符n<A語言>::=<語法 A語言由若干語法成分組<語法>::=<子語法> 語法由若干子語法成分組<子語法>::=<詞法 子語法由若干詞法成分組<詞法>::=字符集合 詞法由若干字符集合組字符集合::=字符 字符集合由若干字符組※BNFBNF⊙A、BCX,描述為:X::=ABC例如,XABX::=A|特別地,AX::=|例如,XA組成,描述為:XA|X 或 X::=A|A 左遞2-1BNFSAE(SimpleArithmaticExpression)∑={0-9,.,+,-.*,/,(,)<SAE>::=<number>|<SAE><op><SAE>|(<SAE><number>數(shù)字|數(shù)字><op>::=+|-|*|7.,372.,(214.),3.*(5.- 都是.5,7.3,A,(2 都不是.5.-2.符合<SAE><op><SAE>,(5.-2.)符合3.*(5.-2.)3.*(5.-2.)+7.都符合<SAE><op><SAE>3.*(5.-2.)+7.SAE2.+14.符合<SAE><op><SAE>,(2.+14.)符合(<SAE>),(2.+14.)+不符合<SAE><op><SAE>,所以(2.+14.)+SAE。2-2BNFPFE(ParenthesesFreeExpression)∑={0-9,.,+,-.*,/<PFE>::=<number>|<PFE><PFE><number>數(shù)字|數(shù)字><op>::=+|-|*| 都是7.*5.3.7.- 都不是3.5.2.-*7.+符合<PFE><PFE><op>3.5.2.-*7.+PFE。5.3.7.-不符合<PFE><PFE><op>7.*5.3.7.-PFE。2-3BNFX∑={0-9,A-Z,a-z,<文件定義行|文件定義行<定義行變量數(shù)值><變量字母串<數(shù)值整數(shù)串datainX2-4BNFSPICE電阻名節(jié)點號節(jié)點號電阻值單例如圖中所示 BNF

∑={0-9,A-Z,a-z,<File>::=<state>|<File><state>::=R<name><node><node><value><unit><name>::=<char>|<name><node數(shù)字|<node數(shù)字<value>數(shù)字|<value數(shù)字<unit>::=|OHM|K|KOHM|M|<char數(shù)字|字母

vi※文本編輯器與UNIXed。ed是面向行文本的編輯器,其用戶界面功能很弱,eded通常是系統(tǒng)開發(fā)者和管理員所ed提供了此后開發(fā)的各種編輯工具中最底層的編由比爾·喬伊(BillJoy)vi(Visualdisplayeditor,全屏幕編輯器)UNIX中最常超集)相互可以相互轉(zhuǎn)換使用使得vi匯集了行編輯和全屏編輯的特點成為使用UNIXvim(BramMoolenaar布萊姆?莫利納羅)emacs(RichardStallman,理查※viUNIX中把分隔文字為逐行的回車符(換行符)也視為字符,因此文件被認(rèn)為是連續(xù)的文字流(字符流),通常存放在外存(硬盤等介質(zhì))中。vi的工作方式是從外存讀入文本文件存入⊙vi讀文件外存(通常是硬盤)中的外部⊙vi⊙vi※啟動vi

文件硬

存文(輸出文件

進(jìn)行編編輯工作(緩沖區(qū)內(nèi)另存文(輸出vi[file [...]] 對0到多個文件file進(jìn)行編輯 例如 編輯一個文件例如 編輯兩個文件a.txt和※啟動vi在s狀態(tài)令行中,執(zhí)行命令$ vi窗$$此前vi窗$$此前 操$vi※如果a.txt是非空文件,在s狀態(tài)下執(zhí)行命令$ $$此前$$此前 操$vi刷新光標(biāo)已文空owareyou?goodbye!~~文件信光光bcdxyzabcdxyza※a如果在s狀態(tài)下執(zhí)行命令$ 或 $ 編輯新文件s狀態(tài)的窗口將刷新為vi的空白窗口,左側(cè)一列顯示~,表示空行。第一行行首將顯示光標(biāo)。如果指定文件,則顯示文件名及[Newfile]。如果編輯無名文件,則可能顯示幫~~~~~~~~“abc”[Newvi窗口:打開無名文vi的工作狀態(tài)/

vi窗口:打開新文件標(biāo)點符號、以及各種控制字符,而且大寫字母與小寫字母分別代表不同令。因此在vivi有三種工作狀態(tài),vi狀態(tài)、exopen狀態(tài)。open狀態(tài)不常用,因此不予介紹。vi狀態(tài)有兩種工作模式,vi狀態(tài)令模式和vi狀態(tài)的模式,簡稱命令模式和插⊙vi后總是先處于命令模式。在命令模式中,沒有待命符,不能直接輸入文件的內(nèi)可以從命令模式轉(zhuǎn)換為模式或者ex狀態(tài)?模⊙exex狀態(tài),又可稱為ex模式或者底行模式。從s 中啟動ex,即$ex[file[...]] “$”是s 將進(jìn)入ex狀態(tài)。在命令模式中按Q鍵,可從vi狀態(tài)(令模式)轉(zhuǎn)到ex狀態(tài)exvi窗口的底行顯示待命符“:”。ex命令的完整形式為::ex命令 以回車鍵表示結(jié)可以在vi狀態(tài)(令模式)中按“:ex命令<CR>”,執(zhí)行一個ex命令。ex狀態(tài)中鍵入: “:”ex將從ex狀態(tài)轉(zhuǎn)到vi狀態(tài)(令模式)可見,viexex⊙vi狀 類命令(a,i,o等命令)進(jìn)入模式。按Q鍵轉(zhuǎn)到ex模式。按ex命令<CRex⊙vi狀態(tài)的?!裡x狀態(tài)/ex~~~~~~※ :w ※退出vi :q ※ filen行之下。n0表示插在0行之下(文件開頭)n表示當(dāng)前行。 執(zhí)行s命令command,將運行結(jié)果插在第行之下。n 如果使用命令“vifile1file2...”啟動vi,表示編輯多個文本文件,n表示編輯下一文件(nextfile)?!鵹i當(dāng)前字符(光標(biāo)所在位置),前一字符,后一字符,文件首,文件首,行⊙詞⊙詞WORD例如:2004_Mar_1 表示1個word,或者1個WORD 表示5個word,或者1個 8word1 4word1⊙nn⊙當(dāng)前行,上一行,下一行,首行(文件第一行),(文件最后一行),第n行⊙※⊙hlkjwword首WWORD首bword首BWORD首eword尾EWORD⊙^:移到本行第一個非空字 0:移到本行第一個字符(包括空字符$(最后一個字符⊙^F或^f:向下翻 ^B或^b:向上翻 移到最后一 類命令>內(nèi)容 類命令>和<ESC>是不顯示的,內(nèi)容是用戶鍵入的 在當(dāng)前字符 在行 在當(dāng)前字符 在 howarehowarehowarehowarehowareai命令:在當(dāng)前字符前thank!howarei命令:在當(dāng)前字符前后前 thank!howarethank!oware前命令及內(nèi)后howareohowarehowarehoware x,r命令不需要 將n個字符替換為內(nèi)容,n缺省為cw或 將當(dāng)前字符到word/WORD尾替換 內(nèi) 將當(dāng)前字符到行尾的內(nèi)容替換 內(nèi)將當(dāng)前行替換為內(nèi)May-1 或者M(jìn)ar-1May-1Mar-20May-1c$r-20 Cr-20將y-1OK?改為r-20May-1※⊙刪除字符 n個字符,n nword,n nWORD,n is2005-May-1x刪除當(dāng)前字符is2005-Ma-1is2005-May-1刪除5個字符“y-1is2005-is2005-May-1is2005-Ma1is2005-May-1is2005-Mais2005-May-1is2005-⊙ :[i 刪除第i行至第j行,省略j刪除第ihowarehowarehowarehowarehowarehoware※ str的字符串。向下搜索遇到文件尾時 str的字符串。向上搜索遇到文件首時 ※str 需的符號。枚舉方式可以采用a-b的形式,表示按照ASCII的順序ab之間的任何一個字符,例如,[0-9]表示一個數(shù)字,[0-9_]表示一個數(shù)字或者下劃線。 字符x的0到多次重復(fù),x代表用以上任何一種表述的一個字符。a*aaaa等。 Lead。 如果c是特殊字符(如.和*等),需用反斜杠\轉(zhuǎn)義。例如,匹配特殊以下無名宏和有名宏的使用見“s命令” strvi的搜索緩沖區(qū)內(nèi),并且可以用符號&\字符串\) 將\(和\)之間的字符串定義為有名宏。允許定義多個有名宏,相當(dāng)于一個有名緩沖區(qū)保存一個有名宏。 名宏。例如,在str中定義了三個有名宏,則在 \1、\2和\3d命令即行刪除命令(deleine),基本格式為 (關(guān)于/pattern/sed命令d pattern pattern pattern又稱行地址 匹配addr1的addr1, addr1addr2省略 刪除當(dāng)前 The Start到含有End 刪除所有行首為#的行(s的注釋行 刪除所有含/*(特殊字符)的行(C語言注釋行 從第一個 注釋行刪除到最后一※ss命令即行替換命令(linesubstitute):/pattern/s/str/new_str/⊕尋找匹配patternstr的字符串new_str(只替換該行中的第一個str):g/pattern/s/str/new_str/patternstrnew_str strpatternpattern 表示str與前一次搜索的字符串相同( s“:[[g]/pattern/]s/[str]/new_str/[cmd]<CR>”cmd。cmd表示s命令的輔助功能,包括: patternstr str2-10】s 尋找 350123 350123ABC要求在C程序中將輸出從stdout改為stderr,即所有的“printf(”需要改為 2,然后分別用\1和\2有名宏?!鵹i提供三個基本的動作:pick(拾取),cut(剪取)put(粘貼)(block)進(jìn)其中,copypickput,movecutput以字符(char)、詞(wordWORD)為單位或者以行(line)為單位均可組成塊。一個無名※vi[”x][n]yw或者n個詞(word或WORD)nn其中,yyank(移出)的縮寫。n1xx表示 [”x]p或者 粘貼緩沖區(qū)內(nèi)copy: 將第i行到第j行到第k行之下move::i[,j]mk<CR> ijk行之下。其中,省略j表示只對第i行實施或者移動。將第2行的you到第1行的問號前,操作過程為howare?thank□you.goodbye!~howare?thank□you.goodbye!~~howarethank□you.goodbye!~~howarethank□you.goodbye!~~ 執(zhí)行yw/?/⊕后 執(zhí)行P命令后將第2行移到第3行(本行與下一行交換),操作過程為howareyou?goodbye!thankhowareyou?goodbye!thank□you.~~howareyou?goodbye!~~~howarethank□you.goodbye!~~ howareyou?goodbye!thank□you.~~ 執(zhí)行⊕dd后 執(zhí)行p命令后將當(dāng)前行(第3howareyou?goodbye!thank□you.~~howarehowaregoodbye!thank□you.~~hank□youhowareyou?goodbye!thank□you.~ 執(zhí)行yy1G后 執(zhí)行P命令后利用有名緩沖區(qū)將“thank”到第3行行尾,操作過程為thank□youthank□youthank□youhowareyou?goodbye!howareyou?goodbye!howareyou?goodbye!thankthank□youthank□youthank□you~~~執(zhí)行”ap 撤消剛才執(zhí)行的編輯類命令 恢復(fù)剛才撤消令 轉(zhuǎn)到s狀態(tài),將顯示s的待命符,以便執(zhí)行s命exitvi。 執(zhí)行一個s命令command,隨后返回vi。例如,將文本中的fi替換為endif,重復(fù)執(zhí)行替換令過程為: 搜索fi(省略了第二個斜杠/),等價于/fi/<CR> 用endif替代兩個字符fi(2s和<ESC>不顯示) 搜索下一個fi 例如,文本為 按J鍵后成為 □vi文本原始內(nèi)容 如何將文件改成如下內(nèi)容arehowyoujenny,arehowyoujenny,Goodmornjngfjne,Thankyoujenny,Goodmorninghowareyoufine,Thankyou,and1) 2)

溫馨提示

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

評論

0/150

提交評論