《網絡操作系統(tǒng)》課件-第四部分-vim編輯器與shell_第1頁
《網絡操作系統(tǒng)》課件-第四部分-vim編輯器與shell_第2頁
《網絡操作系統(tǒng)》課件-第四部分-vim編輯器與shell_第3頁
《網絡操作系統(tǒng)》課件-第四部分-vim編輯器與shell_第4頁
《網絡操作系統(tǒng)》課件-第四部分-vim編輯器與shell_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Linux操作系統(tǒng)管理

——以CentOS7為例

四、vim編輯器與shell4.1?Vim文本編輯器基礎知識4.1?Vim文本編輯器基礎知識4.1.1?Vim文本編輯器的三種工作模式1.編輯(一般)模式當用Vim打開一個文件時就直接進入一般編輯模式了,該模式中等待輸入編輯命令輸入而不是文本輸入,該模式為默認的模式,也稱為一般模式或普通模式。2.插入(輸入)模式在一般指令模式中可以進行刪除、復制、粘貼等操作,但是無法編輯文件中的內容。只有當你按下“i、I、o、O、a、A、r、R”等任何一個字母之后才能進入編輯模式。3.命令(末行)模式在一般命令模式時,輸入“:/?”三個中的任何一個按鍵,就可以將光標移動到最底下那一列。在這個模式當中,可以給你提供“搜尋資料”的動作,而讀取、存盤、大量取代字符、離開Vim、顯示行號等的動作都是在此模式中達成的。4.1?Vim文本編輯器基礎知識Linux系統(tǒng)中對于字母的大小寫是非常敏感的,如果想讓Vim搜索字符串過程中忽略大小寫,可以輸入“:setignorecase”指令。設置該命令之后,意味著搜索/Today和/today是沒有任何區(qū)別的。如果要重新開啟大小寫敏感,只要使用下面這條命令即可。:setnoignorecase#開啟大小寫敏感:setignorecase#忽略大小寫4.1?Vim文本編輯器基礎知識簡單地說,我們可以將這三個模式之間的關系表示4.1?Vim文本編輯器基礎知識4.1.2?Vim的基本使用1.首先,要編輯一個文件,可以在終端命令行下輸入Vimfile。如果file不存在,那么Vim會自動新建一個名為file的文件。如果使用不帶任何參數(shù)的Vim命令,那么就需要在保存的時候指定文件名。同時,Vim會認為這個人應該是第一次使用這個軟件,從而給出一些版本和幫助信息,如圖6-2所示。4.1?Vim文本編輯器基礎知識2.進入命令終端,如圖所示。4.1?Vim文本編輯器基礎知識3.在命令行中輸入“Vimwelcome.txt”,便可新建Vimwelcome.txt文檔,如圖6-4所示。直接輸入“Vim文檔名”便能進入Vim的一般指令模式。4.1?Vim文本編輯器基礎知識4.敲入【Enter】鍵進入文檔中,如圖所示,屬于編輯模式。整個Vim界面主要分為兩部分,上半部分顯示的是文件的實際內容,最底下一列則是狀態(tài)顯示列(如下圖的[NewFile]信息),或者是命令下達列。4.1?Vim文本編輯器基礎知識5.輸入a,進入插入模式,在Vim文本編輯器的左下角出現(xiàn)“--INSERT--”,表明當前狀態(tài)可以進行正常編輯工作,除了鍵盤上的【ESC】,因為只要按該鍵便會切回“編輯模式”,如下圖所示(在一般指令模式之中,只要按下i、o、a等字符就可進入插入模式)。4.1?Vim文本編輯器基礎知識4.編輯文檔,比如:輸入一行文字,“Hello,Vim!”,如圖所示。4.1?Vim文本編輯器基礎知識7.接著,敲入【Esc】鍵,切換到“編輯模式”,如圖所示,左下角的提示“--INSERT--”消失不見。4.1?Vim文本編輯器基礎知識8.存檔離開:敲入“:”進入命令(末行)模式,輸入wq保存文檔并退出Vim(注意,按下“:”時,光標就會移動到最底下一列),如圖所示。4.1?Vim文本編輯器基礎知識9.最后查看文檔“welcome.txt”,輸入“catwelcome.txt”,結果如圖所示。4.1?Vim文本編輯器基礎知識4.1.3?Vim的常用命令“一般(編輯)模式”中常用的快捷鍵,主要分為三大類:光標移動、復制、粘貼及刪除等命令以及文字搜索和替換等命令;具體命令詳細說明如表6-1、表6-2、表6-3所示。4.1?Vim文本編輯器基礎知識4.1.3?Vim的常用命令編輯模式”中常用的快捷鍵,主要分為三大類:光標移動、復制、粘貼及刪除等命令以及文字搜索和替換等命令;具體命令詳細說明如表6-1、表6-2、表6-3所示。4.1?Vim文本編輯器基礎知識4.1.3?Vim的常用命令“編輯模式”中常用的快捷鍵,主要分為三大類:光標移動、復制、粘貼及刪除等命令以及文字搜索和替換等命令;具體命令詳細說明如表6-1、表6-2、表6-3所示。4.1?Vim文本編輯器基礎知識“編輯模式”切換到“插入模式”中常用的快捷鍵,具體命令如表6-4所示。4.1?Vim文本編輯器基礎知識“命令模式”中常用的快捷鍵,主要是有關文檔的存儲、離開以及Vim環(huán)境更改等命令;具體命令的詳細說明如表6-5、表6-6所示。4.1?Vim文本編輯器基礎知識“指令列命令模式”中常用的快捷鍵,主要是有關文檔的存儲、離開以及Vim環(huán)境更改等命令;具體命令的詳細說明如表6-5、表6-6所示。4.2?重定向、管道和環(huán)境變量4.2?重定向、管道和環(huán)境變量4.2.1?輸入輸出重定向首先我們需要了解文件描述符,文件描述符在形式上是一個非負整數(shù)。實際上,它是一個索引值,指向內核為每一個進程所維護的該進程打開文件的記錄表。當程序打開一個現(xiàn)有文件或者創(chuàng)建一個新文件時,內核向進程返回一個文件描述符。在程序設計中,一些涉及底層的程序編寫往往會圍繞著文件描述符展開。但是文件描述符這一概念往往只適用于UNIX、Linux這樣的操作系統(tǒng)。習慣上,標準輸入(STDIN,standardinput)的文件描述符是0,標準輸出(STDOUT,standardoutput)是1,標準錯誤(STDERR,standarderror)是2。盡管這種習慣并非Unix內核的特性,但是因為一些shell和很多應用程序都使用這種習慣,因此,如果內核不遵循這種習慣的話,很多應用程序將不能使用。4.2?重定向、管道和環(huán)境變量所謂重定向,就是不使用系統(tǒng)的標準輸入端口、標準輸出端口或標準錯誤端口,而進行重新的指定,所以重定向分為輸入重定向、輸出重定向和錯誤重定向在Shell中,要實現(xiàn)重定向主要依靠重定向符實現(xiàn),下表列出了常用的重定向符4.2?重定向、管道和環(huán)境變量①將ls命令生成的/tmp目錄的一個清單存到當前目錄中的dir文件中。$ls–l/tmp>dir②將ls命令生成的/tmp目錄的一個清單以追加的方式存到當前目錄中的dir文件中。$ls–l/tmp>>dir③將passwd文件的內容作為wc命令的輸入。$wc</etc/passwd④將命令myprogram的錯誤信息保存在當前目錄下的err_file文件中。$myprogram2>err_file⑤將命令myprogram的輸出信息和錯誤信息保存在當前目錄下的output_file文件中。$myprogram&>output_file⑥將命令ls的錯誤信息保存在當前目錄下的err_file文件中。$ls–l2>err_file2>/dev/null輸入輸出重定向舉例4.2?重定向、管道和環(huán)境變量4.2.2?管道命令許多Linux命令具有過濾特性,即一條命令通過標準輸入端口接收一個文件中的數(shù)據(jù),命令執(zhí)行后產生的結果數(shù)據(jù)又通過標準輸出端口送給后一條命令,作為該命令的輸入數(shù)據(jù)。Shell提供管道命令“|”將這些命令前后銜接在一起,形成一個管道線。格式為:命令1|命令2|……|命令n管道線中的每一條命令都作為一個單獨的進程運行,每一條命令的輸出作為下一條命令的輸入。由于管道線中的命令總是從左到右順序執(zhí)行的,因此管道線是單向的。4.2?重定向、管道和環(huán)境變量管道舉例以長格式遞歸的方式分屏顯示/etc目錄下的文件和目錄列表。4.2?重定向、管道和環(huán)境變量管道舉例②分屏顯示文本文件/etc/passwd的內容。$cat/etc/passwd|more③統(tǒng)計文本文件/etc/passwd的行數(shù)、字數(shù)和字符數(shù)。$cat/etc/passwd|wc④查看是否存在john用戶賬號。$cat/etc/passwd|grepjohn⑤查看系統(tǒng)是否安裝了apache軟件包。$rpm–qa|grepapache⑥顯示文本文件中的若干行。$tail-n+15myfile|head-n34.2?重定向、管道和環(huán)境變量4.2.3?命令行通配符在Linux系統(tǒng)中,當我們相對一類文件批量操作時,例如批量查看硬盤文件屬性,或者是對某個文件進行修改,但是一時想不起文件的全程時等情況,我們便可以使用通配符來搞定所有的匹配情況。那么,在Linux系統(tǒng)中默認的Bash解釋器中支持多種文本通配符,具體通配符的含義如所示。4.2?重定向、管道和環(huán)境變量Bash解釋器還支持很多的特殊字符擴展,以下字符是非常有用的,希望能認真理解和掌握它們的用法,具體內容如表所示。4.2?重定向、管道和環(huán)境變量4.2.4?變量與環(huán)境變量1.變量變量在Bash環(huán)境中是非常重要的組成,接下來我們將介紹重要的環(huán)境變量、變量的取用與設定等內容。那么什么是變量呢?舉例來說:n=m+2,即在等號的左邊n就是變量,在等號右邊的m+2就是變量的值或內容。簡單來說,變量是計算機系統(tǒng)用于保存可變值的數(shù)據(jù)類型,我們可以直接通過變量名來提取到對應的變量值。變量是由固定的變量名與用戶或系統(tǒng)設置的變量值兩部分組成,如果需要可直接修改。在Shell中,使用變量之前通常并不需要事先為它們聲明;當給變量賦值時,只需要使用變量名即可,該變量會根據(jù)需要被自動創(chuàng)建;當訪問變量中所存儲的內容則必須在變量名前加一個$符號。4.2?重定向、管道和環(huán)境變量2.環(huán)境變量在Linux系統(tǒng)中,環(huán)境變量是用來定義系統(tǒng)運行環(huán)境的一些參數(shù),比較常用的環(huán)境變量及作用如下表所述。注意,Linux系統(tǒng)中的環(huán)境變量的名稱都是用大寫字母表示,這是一種約定俗成的規(guī)定。Linux常見環(huán)境變量及對應作用如下表所示。4.3?Shell程序設計4.3?Shell程序設計4.3.0?Shell簡介Shell是一個程序,它在用戶和操作系統(tǒng)之間提供了一個面向行的可交互接口。用戶在命令行中輸入命令,運行在后臺的Shell把命令轉換成指令代碼發(fā)送給操作系統(tǒng)。Shell提供了很多高級特性,使得用戶和操作系統(tǒng)間的交互變得簡單和高效。目前,在Linux環(huán)境下有幾種不同類型的shell,常用的有BourneAgainShell(BASH)、TCSHShell、Z-Shell等。不同的Shell提供不盡相同的語法和特性,用戶可以使用任何一種Shell。在Linus上,BASHshell是默認安裝和使用的Shell。4.3?Shell程序設計我們學習Linux命令,大致都是屬于交互式;Shell腳本是將各種命令通過邏輯語句組合而成的程序。Shell腳本需要用到很多的Linux命令,結合正則表達法、管道命令以及數(shù)據(jù)流重定向等語法規(guī)則來完成指定任務。查看系統(tǒng)中所有可用的Shell解釋器。所示的命令如圖所示。查看當前使用的Shell解釋器,輸入如圖所示的命令:4.3?Shell程序設計4.3.1?Shell腳本的基本語法結構Shell腳本的編寫使用Vim文本編輯器,按照命令的執(zhí)行順利依次編寫,每行寫一條了Linux命令,并且一個完整的Shell腳本應該包含“腳本聲明(首行)”“注釋信息”和“可執(zhí)行語句(內容)”。腳本聲明(首行):使用#!表示,用于告知系統(tǒng)用何種Shell來解釋;注釋信息:使用#表示,用于對可執(zhí)行語句或程序功能做解釋說明,不強制;可執(zhí)行語句(內容):是指需執(zhí)行的具體命令。先來寫一個簡單的Shell腳本,功能是顯示當前的工作路徑并列出當前目錄下的所有文件與屬性。4.3?Shell程序設計Shell腳本如下所示:#代碼區(qū):#在終端命令行,輸入以下命令,創(chuàng)建hello.sh基本文件#vi

hello.sh#進入sh腳本編輯區(qū),輸入以下腳本程序#!/bin/bash#thisismyfirstshellproecho“HelloWorld”4.3?Shell程序設計設置Shell腳本權限一般情況下,創(chuàng)建的腳本是沒有執(zhí)行權限的,沒有執(zhí)行權限則不能直接執(zhí)行,需要賦予其可執(zhí)行權限,方可執(zhí)行。#chmodu+xhello.sh#./hello.sh4.3?Shell程序設計執(zhí)行Shell腳本的方式可以采用三種:輸入腳本的絕對路徑或相對路徑$/home/test/hello.sh$./hello.sh執(zhí)行bash或sh+腳本$bash/home/test/hello.sh$sh./hello.sh當腳本沒有執(zhí)行權限時,root用戶和文件所有者也可通過該方式執(zhí)行。在腳本的路徑前加“.”或source$

source/home/test/hello.sh$../hello.sh當腳本沒有執(zhí)行權限時,root用戶和文件所有者也可通過該方式執(zhí)行。區(qū)別:第一種和第二種方式會新打開一個bash,但不同bash中的變量無法共享。第三種方式則是在同一個shell里執(zhí)行。4.3?Shell程序設計4.3.2?Shell變量A.變量的設置規(guī)則:1.變量名稱只能是字母、數(shù)字和下劃線組成,但是開頭字符不能是數(shù)字,環(huán)境變量名稱一般用大寫字母,便于區(qū)分;2.在bash中,變量的默認類型都是字符串型,如果要進行數(shù)值運算,則要通過其他命令實現(xiàn);3.變量與變量內容以一個等號『=』來連結,等號兩邊不能直接接空格符;4.變量內容若有空格符可使用雙引號『"』或單引號『'』將變量內容結合起來;5.可用轉義字符『\』將特殊符號(如[Enter],$,\,空格符,'等)變成一般字符,如:『myname=VBird\Tsai』4.3?Shell程序設計4.3.2?Shell變量A.變量的設置規(guī)則:6、在定義變量時,如果需要由其他的指令所提供的信息時,可以使用反引號`指令`或$(指令)。例如想要取得核心版本的設定:『version=$(uname-r)』再『echo$version』可得『3.10.0-229.el7.x86_64』7、若該變量為擴增變量內容時,則可用"$變量名稱"或${變量}累加內容,如下所示:『PATH="$PATH":/home/bin』或『PATH=${PATH}:/home/bin』8、用戶自定義變量只能在當前shell中生效,而環(huán)境變量會在當前shell以及其所有子shell中生效。若想該變量需要在其他子程序執(zhí)行,則需要以export來使變量變成環(huán)境變量:『export變量名=變量值』9、取消變量的方法為使用unset:『unset變量名稱』例如取消myname的設定:『unsetmyname』4.3?Shell程序設計4.3.2?Shell變量A.變量的設置規(guī)則:例:var=”Helloworld”echo$varA=`ls-la`或$(ls-la)#將一個命令的執(zhí)行結果賦值給變量echo$Ax=456x=${x}789echo$x#輸出4567894.3?Shell程序設計4.3.2?Shell變量B.read命令接收用戶的輸入語法:read[選項]變量

-p提示語句-n字符個數(shù)-t等待時間,單位為秒-s隱藏輸入作用:接收用戶的輸入保存到指定的變量例:read-t30-p“Pleaseinputyourname:”name4.3?Shell程序設計4.3.3

Shell運算符1.expr算術運算原生bash不支持簡單的數(shù)學運算,但可以通過其他命令實現(xiàn),如expr,是一款表達式計算工具,使用它能完成表達式的求值操作。注意變量和運算符之間要有空格,例如“2+2”不對,要寫成“2+2”,且只能處理整數(shù)的運算。+加法:`expr2+3`-減法:`expr5-3`*乘法:`expr5*3`,乘號*前要加轉義字符\/除法:`expr5/3`,結果取整%取余:`expr5%3`==相等。用于比較兩個數(shù)字,相同則返回真(1),否則返回假(0)!=不相等。用于比較兩個數(shù)字,不同則返回真(1),否則返回假(0)4.3?Shell程序設計4.3.3

Shell運算符1.expr算術運算原生bash不支持簡單的數(shù)學運算,但可以通過其他命令實現(xiàn),如expr,是一款表達式計算工具,使用它能完成表達式的求值操作。注意變量和運算符之間要有空格,例如“2+2”不對,要寫成“2+2”,且只能處理整數(shù)的運算。+加法:`expr2+3`-減法:`expr5-3`*乘法:`expr5*3`,乘號*前要加轉義字符\/除法:`expr5/3`,結果取整%取余:`expr5%3`==相等。用于比較兩個數(shù)字,相同則返回真(1),否則返回假(0)!=不相等。用于比較兩個數(shù)字,不同則返回真(1),否則返回假(0)4.3?Shell程序設計4.3.3

Shell運算符2.$[]和$(())算術運算兩者都可以用于數(shù)學運算,支持+、-、*、/、%,還支持比較運算和邏輯運算>、<、==、!=、++、--、?。ㄇ蠓矗(按位求反)、**(冪運算)、<<、>>、&、|、&&、||,且不用轉義。例:a=5;b=6;c=7echo$((a+b+c))echo$((a++))echo$((a==b))echo$((b>>1))echo$((b**2))echo$(((a>b)&&(a>c)))注意:$()的作用是命令替換與反引號作用一樣。4.3?Shell程序設計4.3.3

Shell運算符3.關系運算符關系運算符只支持數(shù)字,不支持字符串,除非字符串的值是數(shù)字。-eq比較兩個數(shù)是否相等,相等返回true,如:[$a-eq$b]-ne比較兩個數(shù)是否不相等,不相等返回true,如:[$a-ne$b]-gt比較左邊數(shù)是否大于右邊數(shù),若是返回true,如:[$a-gt$b]-lt比較左邊數(shù)是否小于右邊數(shù),若是返回true,如:[$a-lt$b]-ge比較左邊數(shù)是否大于等于右邊數(shù),若是返回true,如:[$a-ge$b]-le比較左邊數(shù)是否小于等于右邊數(shù),若是返回true,如:[$a-le$b]4.3?Shell程序設計4.3.3

Shell運算符4.布爾運算符!非運算,表達式為true,則返回false,否則返回true,如:[!false]返回true-o或運算,有一個表達式為真,則結果為真,如:[$a-lt20-o$b-gt100]-a與運算,有一個表達式為假,則結果為假,如:[$a-lt20-a$b-gt100]4.3?Shell程序設計4.3.3

Shell運算符5.字符串運算符=檢測兩個字符串是否相等,相等則返回true。如[$a=$b]!=檢測兩個字符串是否不相等,不相等則返回true。如[$a!=$b]-z檢測字符串長度是否為0,為0則返回true。如[-z$a]-n檢測字符串長度是否不為0,不為0則返回true。如[-n$a]str檢測字符是否為空,不為空則返回true。如[$a]4.3?Shell程序設計4.3.3

Shell運算符6.文件測試運算符-bfile檢測文件是否是塊設備文件,如果是,則返回true,如:[-b$file]-cfile檢測文件是否是字符設備文件,如果是,則返回true,如:[-c$file]-dfile檢測文件是否是目錄,如果是,則返回true,如:[-d$file]-ffile檢測文件是否是普通文件,如果是,則返回true,如:[-f$file]-rfile檢測文件是否可讀,如果是,則返回true,如:[-r$file]-wfile檢測文件是否可寫,如果是,則返回true,如:[-w$file]-xfile檢測文件是否可執(zhí)行,如果是,則返回true,如:[-x$file]-sfile檢測文件是否為空(文件大小是否大于0),不為空則返回true,如:[-s$file]-efile檢測文件(包括目錄)是否存在,如果是,則返回true,如:[-e$file]4.3?Shell程序設計4.3.2?流程控制語句1.條件語句所有程序設計語言的基礎是對條件進行測試判斷,并根據(jù)結果采取不同行動的能力。此處要注意Shell與其他編程語言的條件測試上的表現(xiàn)非常不同。Shell中的if語句本身并不執(zhí)行任何判斷,它實際上接受一個命令串作為參數(shù),然后執(zhí)行這個命令串;當命令串返回值為1,就表示為“真”,if語句進入對應的語句塊;當命令串返回值為非1時,則表示“假”,if語句跳過對應的語句塊。在Shell基本中的if條件語句分為單分支結構、雙分支結構、多分支結構,復雜都逐級上升,但可以讓Shell腳本更加地靈活。4.3?Shell程序設計(1)條件判斷:test命令和[]Shell腳本中的布爾判斷(或條件判斷)命令可使用[或test,這兩個命令的作用是一樣的,只是為了增強可讀性,當使用[命令時,需要使用符號]來結尾。4.3?Shell程序設計(2)判斷類型:字符串比較、數(shù)字比較和文件有關的條件測試test命令或[]可以使用的條件判斷類型可以歸納為3類:字符串比較、數(shù)字比較和文件有關的條件測試。4.3?Shell程序設計(3)if條件語句·單分支結構,僅用if、then、fi關鍵詞組成,只有當條件成立后才執(zhí)行then后面的語句。具體語法結構如下:if條件測試操作then命令序列fi4.3?Shell程序設計(3)if條件語句例子:單分支結構iftest-x/home/test/hello.sh;thenecho"文件可執(zhí)行"/home/test/hello.shfi或if[-x/home/test/hello.sh];thenecho"文件可執(zhí)行"/home/test/hello.shfi4.3?Shell程序設計(3)if條件語句·雙分支結構是由if、then、else、fi關鍵詞組成,做出條件成立或條件不成立的判斷,執(zhí)行相應操作。具體語法結構如下:if條件測試操作then命令序列1else命令序列2fi例:iftest-x/home/test/test1.sh;thenecho"文件可執(zhí)行"/home/test/test1.shelseecho"文件不可執(zhí)行"fi4.3?Shell程序設計(3)if條件語句多分支結構相對就比較復雜,由if、then、else、elif、fi關鍵詞組成,根據(jù)多種條件成立的可能性執(zhí)行不同的操作。具體語法結構如下:if條件測試操作1then命令序列1elif條件測試操作2then命令序列2else命令序列3fi4.3?Shell程序設計(3)if條件語句

多分支結構例:#!/bin/bashread-p"pleaseinputyourname:"nameecho$nameif[$name=root];thenecho"hello$name,welcome!"elif[$name=fhj];thenecho"hello$name,welcome!"elif[$name=test];thenecho"hello$name,welcome!"elseecho"getouthere!"fi4.3?Shell程序設計(4)case條件語句case條件語句是一個多分支語句,根據(jù)case變量的值用來匹配不同的操作。具體語法結構如下所示:case變量invalue1)#

)屬于關鍵詞commands;;#結尾使用兩個連續(xù)的;;value2)commands;;.........................*)#最后一個變量的內容都會用*來代表所有其他值commands;;esac4.3?Shell程序設計(4)case條件語句例:#!/bin/bashread-p'請輸入1到4之間的整數(shù):'numecho"你輸入的數(shù)字為:"case$numin1)echo"你輸入了1";;2)echo"你輸入了2";;3)echo"你輸入了3";;4)echo"你輸入了4";;*)echo"你輸入的值不合要求";;esac4.3?Shell程序設計2.循環(huán)語句循環(huán)結構用于反復執(zhí)行一段語句,是程序設計中的基本結構之一。Shell中的循環(huán)結構有三種:while、until和for。(1)while語句while語句重復執(zhí)行命令,直到測試條件為假終止循環(huán)。該語句的基本結構如下,注意,commands可以是多條命令語句組成的語句塊。whiletest-commandsdocommandsdone4.3?Shell程序設計補充:打印色彩echo-n-e"\033[47;31m測試顏色\033[0m"其中47的位置代表底色,31的位置是代表字的顏色字顏色:30-----------3730:黑31:紅32:綠33:黃34:藍色35:紫色36:深綠37:白色字背景顏色范圍:40----4740:黑41:深紅42:綠43:黃色44:藍色45:紫色46:深綠47:白色===============================================ANSI控制碼的說明\33[0m關閉所有屬性\33[1m設置高亮度\33[4m下劃線\33[5m閃爍\33[7m反顯\33[8m消隱\33[30m--\33[37m設置前景色\33[40m--\33[47m設置背景色\33[nA光標上移n行\(zhòng)33[nB光標下移n行\(zhòng)33[nC光標右移n行\(zhòng)33[nD光標左移n行\(zhòng)33[y;xH設置光標位置\33[2J清屏\33[K清除從光標到行尾的內容\33[s保存光標位置\33[u恢復光標位置\33[?25l隱藏光標\33[?25h顯示光標4.3?Shell程序設計例:#!/bin/bashecho打印國際象棋棋盤#國際象棋棋盤為八行八列,以兩個空格為一個盤格,打印空格底色實現(xiàn)棋盤效果。i=1while((i<=8));doj=1while((j<=8));donum=$[$[i+j]%2]#計算行數(shù)和列數(shù)之和取余的值if[$num-eq0];thenecho-n-e"\033[41m\033[0m\033"#-n不換行-e處理特殊字符elif[$num-eq1];thenecho-n-e"\033[47m\033[0m\033"filetj++#let來指示下面是算術表達式,let表達式內變量可不用加$doneleti++echo#換行done4.3?Shell程序設計(2)until語句until是while語句的另一種寫法—除了測試條件相反(條件不滿足時執(zhí)行循環(huán)體),其基本語法結構如下:until條件測試docommandsdone4.3?Shell程序設計例:#!/bin/bashecho打印國際象棋棋盤#國際象棋棋盤為八行八列,以兩個空格為一個盤格,打印空格底色實現(xiàn)棋盤效果。i=1until((i>8));doj=1

until((j>8));donum=$[$[i+j]%2]#計算行數(shù)和列數(shù)之和取余的值if[$num-eq0];thenecho-n-e"\033[41m\033[0m\033"#-n不換行-e處理特殊字符elif[$num-eq1];thenecho-n-e"\033[47m\033[0m\033"filetj++#let來指示下面是算術表達式,let表達式內變量可不用加$doneleti++echo#換行done4.3?Shell程序設計(3)for語句使用while語句可以完成Shell編程中的所有循環(huán)任務,但有些時候用戶希望從列表中逐一取一系列的值(例如去除用戶提供的參數(shù)),此時使用while和until就顯得不太方便。Shell提供了for語句來循環(huán)處理一組值,這組值可以是任意字符串的集合。for的基本語法如下:for變量名in取值列表

或((exp1;exp2;exp3))docommandsdone4.3?Shell程序設計例1:#!/bin/bash#打印/home/test路徑下所有內容foriin/home/test/*;doecho$idone

4.3?Shell程序設計例2:#!/bin/bash#打印九九乘法表foriin{1..9};dofor((j=1;j<=i;j++));doecho-n-e"$j*$i=$[i*j]\t"doneechodoneunsetij4.3?Shell程序設計例3:#!/bin/bashecho打印國際象棋棋盤#國際象棋棋盤為八行八列,以兩個空格為一個盤格,打印空格底色實現(xiàn)棋盤效果。for((i=1;i<=8;i++));do

for

jin{1..8};donum=$[$[i+j]%2]#計算行數(shù)和列數(shù)之和取余的值if[$num-eq0];thenecho-n-e"

溫馨提示

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

評論

0/150

提交評論