第4章 Vim編輯器與Shell腳本_第1頁
第4章 Vim編輯器與Shell腳本_第2頁
第4章 Vim編輯器與Shell腳本_第3頁
第4章 Vim編輯器與Shell腳本_第4頁
第4章 Vim編輯器與Shell腳本_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PPT模板:/moban/PPT素材:/sucai/PPT背景:/beijing/PPT圖表:/tubiao/PPT下載:/xiazai/PPT教程:/powerpoint/資料下載:/ziliao/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/PPT論壇:PPT課件:/kejian/語文課件:/kejian/yuwen/數(shù)學課件:/kejian/shuxue/英語課件:/kejian/yingyu/美術課件:/kejian/meishu/科學課件:/kejian/kexue/物理課件:/kejian/wuli/化學課件:/kejian/huaxue/生物課件:/kejian/shengwu/地理課件:/kejian/dili/歷史課件:/kejian/lishi/Contents目錄4.1

Vim編輯器4.2編寫Shell腳本4.3流程控制語句4.4計劃任務服務程序1Vim編輯器Vim編輯器的三種模式Vim編輯器之所以能得到廣大用戶的認可,是因為Vim編輯器中設置了三種模式:命令模式、末行模式和編輯模式,每種模式又分別支持多種不同的命令快捷鍵,大大提高了工作效率,而且用戶在習慣之后也會覺得很方便。要想高效率地操作文本,就必須先搞清這三種模式的操作區(qū)別及各個模式之間的切換方法,如圖4-1所示。(1)命令模式:控制光標移動,可對文本進行復制、粘貼、刪除和查找等工作。(2)末行模式:可以保存或退出文檔,以及設置編輯環(huán)境。(3)編輯模式:可進行正常的文本錄入。VIM編輯器的切換在每次運行Vim編輯器時,默認進入命令模式,此時需要先切換到編輯模式后再進行文檔編輯工作,而每次在編輯完文后后需要先返回命令模式,再進入末行模式,執(zhí)行文檔的保存或退出操作。在Vim編輯器中,無法直接從編輯模式切換到末行模式。末行模式末行模式主要用于保存或退出文件,以及設置Vim編輯器的工作環(huán)境,還可以讓用戶執(zhí)行外部的Linux命令或跳轉到所編寫文檔的特定行數(shù)。要想切換到末行模式,在命令模式中輸入一個冒號就可以了。命

令作

用:w保存:q退出:q!強制退出(放棄對文檔的修改):wq!強制保存退出:setnu顯示行號:setnonu不顯示行號:命令執(zhí)行該命令:整數(shù)跳轉到該行:s/one/two將當前光標所在行的第一個one替換成two:s/one/two/g將當前光標所在行的所有one替換成two:%s/one/two/g將全文中的所有one替換成two?字符串在文本中從下至上搜索該字符串/字符串在文本中從上至下搜索該字符串配置主機名稱為了便于在局域網(wǎng)中查找某臺特定的主機,或者對主機進行區(qū)分,除了要有IP地址,還要為主機配置一個主機名稱,主機之間可以通過這個類似于域名的名稱相互訪問。在Linux操作系統(tǒng)中,主機名稱大多保存在/etc/hostname文件中,接下來將/etc/hostname文件的內(nèi)容修改為“”,步驟如下。第1步:使用【vim/etc/hostname】命令修改主機名稱文件。第2步:把原始主機名稱刪除后追加“”。注意,使用Vim編輯器修改主機名稱文件后,要在末行模式下執(zhí)行【:wq!】命令后才能保存并退出文檔。第3步:保存并退出文檔,然后使用【hostname】命令檢查是否修改成功。注意:hostname命令用于查看當前的主機名稱,但有時改變主機名稱后,新的主機名稱不會立即同步到系統(tǒng)中,所以如果發(fā)現(xiàn)修改完主機名稱后仍顯示原來的主機名稱,可以重啟虛擬機后再次查看,或者先使用【hostname】命令后再使用【exit】命令退出系統(tǒng),重新登錄可以使主機名稱的修改及時生效。配置IP地址配置IP地址是否正確是兩臺服務器能否相互通信的前提。在Linux操作系統(tǒng)中,一切都是文件,因此配置網(wǎng)絡服務的工作其實就是在編輯網(wǎng)卡配置文件,此任務不僅可以幫助讀者練習使用Vim編輯器,而且能為讀者之后學習Linux操作系統(tǒng)中的各種服務配置打下堅實的基礎。如果讀者具備一定的運維經(jīng)驗或熟悉早期的Linux操作系統(tǒng),則在學習本書時會遇到一些很難接受的差異變化。在CentOS5、CentOS6中,網(wǎng)卡配置文件的前綴為eth,第1塊網(wǎng)卡為eth0,第2塊網(wǎng)卡為eth1,以此類推。而在CentOS7中,網(wǎng)卡配置文件則以ifcfg為前綴,加上網(wǎng)卡名稱共同組成網(wǎng)卡配置文件的名稱,如ifcfg-ens33。在CentOS7中,第一塊網(wǎng)卡配置文件名稱為ifcfg-ens33,第二塊網(wǎng)卡配置文件名稱為ifcfg-ens34,好在除文件名稱有所變化外,其他并沒有很大的區(qū)別。配置IP地址現(xiàn)在有一個名稱為ifcfg-ens33的網(wǎng)卡設備,將其配置為開機啟動,并且IP地址、子網(wǎng)、網(wǎng)關等信息由人工指定,具體步驟如下。第1步:首先使用【cd/etc/sysconfig/network-scripts/】命令切換到存放網(wǎng)卡的配置文件目錄中。第2步:使用【vimifcfg-ens33】命令修改網(wǎng)卡文件,逐項寫入下面的配置參數(shù)并保存退出。每臺設備的硬件及架構是不一樣的,因此請讀者使用ifconfig命令自行確認各自網(wǎng)卡的默認名稱。ifcfg-ens33文件內(nèi)容如下。TYPE=Ethernet #設備類型BOOTPROTO=static #地址分配模式NAME=ens33 #網(wǎng)卡名稱ONBOOT=yes #是否啟動IPADDR=88 #IP地址NETMASK= #子網(wǎng)掩碼GATEWAY= #默認網(wǎng)關地址DNS1= #DNS1地址第3步:使用【systemctlrestartnetwork】命令重啟網(wǎng)絡服務,通過【ping88】命令測試網(wǎng)絡能否連通。由于在Linux操作系統(tǒng)中,ping命令不會自動終止,所以需要手動按下“Ctrl+C”組合鍵來強行結束進程。yum軟件倉庫盡管RPM軟件包管理器能夠幫助用戶查詢軟件的依賴關系,但問題還是要運維人員自己解決的,有些大型軟件可能與數(shù)十個程序都有依賴關系,在這種情況下安裝軟件會非常復雜。yum軟件倉庫便是為了進一步降低軟件的安裝難度和復雜度而設計的技術。yum(YellowdogUpdaterModified)軟件倉庫是一個在Fedora、RedHat及CentOS中的Shell前端軟件包管理器?;赗PM軟件包管理,能夠從指定的服務器自動下載RPM軟件包并安裝,可以自動處理依賴關系,并一次性安裝所有有依賴關系的軟件包,無須煩瑣地一次次下載、安裝。yum軟件倉庫的關鍵之處是要有可靠的repository,即軟件倉庫,它可以是http或ftp站點,也可以是本地軟件池,但必須包含RPM的header,header包括了RPM軟件包的各種信息,包括描述、功能、提供的文件、依賴關系等。只有收集了這些header并加以分析,才能自動化地完成余下的任務。常見的yum命令命

令作

用yumrepolistall列出所有倉庫yumlistall列出倉庫中所有軟件包yuminfo軟件包名稱查看軟件包信息yuminstall軟件包名稱安裝軟件包yumreinstall軟件包名稱重新安裝軟件包yumupdate軟件包名稱升級軟件包yumremove軟件包名稱移除軟件包yumcleanall清除所有倉庫緩存yumcheck-update檢查可更新的軟件包yumgrouplist查看系統(tǒng)中已經(jīng)安裝的軟件包組yumgroupinstall軟件包組安裝指定的軟件包組yumgroupremove軟件包組移除指定的軟件包組配置yum軟件倉庫第1步:使用【cd/etc/yum.repos.d/】命令進入yum軟件倉庫的配置文件目錄。第2步:備份默認yum配置文件,在修改配置文件之前,先備份要修改的文件,養(yǎng)成好的習慣?!緇s】會看到CentOS中默認的7個以repo為后綴的配置文件。【mkdirbak】建立備份文件夾?!緈vCent*/etc/yum.repos.d/bak/】將原有的配置文件移動到備份文件夾中。第3步:使用【vimCentOS7.repo】命令創(chuàng)建一個名為CentOS7.repo的新配置文件(新建的文件必須以.repo為后綴,名稱可以隨意?。?,逐項寫入以下配置參數(shù)并保存退出(不要寫入后面的中文注釋)。

[rhel-media] #yum軟件倉庫唯一標識符,避免與其他倉庫沖突。name=linux-yhy #yum軟件倉庫的名稱描述,易于識別倉庫用處。baseurl=file:///mnt/ #提供的方式包括FTP(ftp://..)、HTTP(http://..)、本地(file:///..)。enabled=1 #設置此源是否可用,1為可用,0為禁用。gpgcheck=0 #設置此源是否校驗文件,1為校驗,0為不校驗。#若上面參數(shù)開啟校驗,那么請指定公鑰文件地址。gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release第4步:按配置參數(shù)的路徑掛載光盤,使用【mount

/dev/cdrom

/mnt】命令。掛載成功后可以通過【ls/mnt/】命令在/mnt目錄下看到光盤中的文件。第5步:使用【yumlist】命令查看當前的yum源。第6步:使用【yuminstallhttpd-y】命令檢查yum軟件倉庫是否已經(jīng)可用。使用yum軟件倉庫來安裝Web服務,出現(xiàn)Complete!,則代表配置正確。使用【yumremove-yhttpd】命令可以卸載剛剛安裝的httpd軟件包。2編寫Shell腳本Shell終端解釋器可以將Shell終端解釋器當作人與計算機硬件之間的“翻譯官”,它作為用戶與Linux操作系統(tǒng)內(nèi)部的通信媒介,除了能夠支持各種變量與參數(shù),還能提供諸如循環(huán)、分支等高級編程語言才有的控制結構特性。要想正確使用Shell腳本中的這些結構特性,準確下達命令尤為重要。Shell腳本命令的工作方式有兩種:交互式和批處理。? 交互式(Interactive):用戶每輸入一條命令就立即執(zhí)行。? 批處理(Batch):由用戶事先編寫好一個完整的Shell腳本,Shell會一次性執(zhí)行腳本中諸多的命令。在Shell腳本中不僅會用到前面學習過的很多Linux命令、正則表達式、管道命令符、重定向等語法規(guī)則,還需要把內(nèi)部功能模塊化后通過邏輯語句進行處理,最終形成日常所見的Shell腳本。查看Shell變量可以發(fā)現(xiàn)當前系統(tǒng)已經(jīng)默認使用Bash作為命令行終端解釋器了。【echo$SHELL】編寫簡單的Shell腳本有關Shell腳本的描述比較復雜。但是,上面介紹指的是一個高級Shell腳本的編寫原則,其實使用Vim編輯器把Linux命令按照順序依次寫入一個文件,就是一個簡單的Shell腳本。例如,如果想查看當前所在的工作路徑并列出當前目錄下所有的文件及屬性信息,實現(xiàn)這個功能的腳本如下?!緑imexample.sh】新建example.sh腳本文件,輸入如下內(nèi)容:#!/bin/bash#BYYHYpwdls-alShell腳本文件的名稱可以任意設置,但為了避免Shell腳本文件被誤認為普通文件,建議在文件后加上.sh后綴,以表示它是一個腳本文件。在上述的example.sh腳本文件中實際上出現(xiàn)了三種不同的元素:第一行的腳本聲明(#!)用來告訴系統(tǒng)使用哪種Shell解釋器來執(zhí)行該腳本;第二行的注釋信息(#)是對腳本功能和某些命令的介紹信息,使得用戶或他人在日后看到這個腳本的內(nèi)容時,可以快速知道該腳本的作用及一些警告信息;第三、四行的可執(zhí)行語句就是平時執(zhí)行的Linux命令了。執(zhí)行上述命令的結果如下?!綽ashexample.sh】編寫簡單的Shell腳本除了前面用Bash解釋器直接運行Shell腳本文件,還可以通過輸入完整路徑的方式來運行腳本文件。但默認會因為權限不足而提示報錯信息,此時只需要為腳本文件增加執(zhí)行權限即可。初次學習Linux操作系統(tǒng)的讀者不用心急,在學習完下一章的用戶身份和權限后再來做這個實驗也不遲?!?/example.sh】彈出“bash:./Example.sh:Permissiondenied”的未執(zhí)行提示?!綾hmodu+xexample.sh】修改文件權限,為腳本文件增加執(zhí)行權限?!?/example.sh】正常執(zhí)行。為了讓Shell腳本程序更好地滿足用戶的一些實時需求,以便靈活地完成工作,必須要讓腳本程序能夠像之前執(zhí)行命令時那樣,接收用戶輸入的參數(shù)。其實,Linux操作系統(tǒng)中的Shell腳本語言已經(jīng)內(nèi)設了用于接收參數(shù)的變量,變量之間可以使用空格間隔。例如,$0對應的是當前Shell腳本程序的名稱,$#對應的是共有幾個參數(shù),$*對應的是所有位置的參數(shù)值,$?對應的是顯示上一次命令的執(zhí)行返回值,而$1、$2、$3……則分別對應第N個位置的參數(shù)值。下面將通過引用上述變量參數(shù)來查看真實效果?!緑imexample.sh】打開example.sh文件,輸入如下內(nèi)容:#!/bin/bashecho"當前腳本名稱為$0"echo"總共有$#個參數(shù),分別是$*。"echo"第1個參數(shù)為$1,第5個為$5。"【shexample.shonetwothreefourfivesix】給出參數(shù),運行腳本,查看結果,如圖所示。接收用戶輸入的參數(shù)判斷用戶的參數(shù)Shell腳本中的條件測試語法可以判斷表達式是否成立,若條件成立則返回數(shù)字0,否則返回其他隨機數(shù)值。條件測試語法的執(zhí)行格式為【[條件表達式]】。需要注意的是條件表達式兩邊均有一個空格。按照測試對象來劃分,條件測試語句可以分為4種:?文件測試語句。?邏輯測試語句。?整數(shù)值比較語句。?字符串比較語句。3流程控制語句if條件測試語句if條件測試語句可以讓腳本根據(jù)實際情況自動執(zhí)行相應的命令。從技術角度來講,if語句分為單分支結構、雙分支結構、多分支結構,其復雜度隨著靈活度的提高而提高。if條件測試語句的單分支結構由if、then、fi關鍵詞組成,而且只在條件成立后才執(zhí)行默認的命令,相當于口語的“如果……那么……”。單分支結構的if條件測試語句屬于最簡單的條件判斷結構,語法格式如下:if條件測試

then命令fi下面使用單分支的if條件測試語句來判斷/home/yhy目錄是否存在,若存在就結束條件判斷和整個Shell腳本,反之則去創(chuàng)建此目錄?!緑immkyhy.sh】新建mkyhy.sh文件,輸入以下內(nèi)容:#!/bin/bashDIR="/home/yhy"if[!-e$DIR]thenmkdir-p$DIRfi由于在后面的章節(jié)中才會講解用戶身份與權限,所以這里繼續(xù)用【bash腳本名稱】的方式來執(zhí)行腳本。在正常情況下,順利執(zhí)行完腳本文件后沒有任何輸出信息,但是可以使用ls命令驗證/home/yhy目錄是否已經(jīng)創(chuàng)建成功:【bashmkyhy.sh】【ls-d/home/yhy】返回“/home/yhy”值if條件測試語句if條件測試語句的雙分支結構由if、then、else、fi關鍵詞組成,它進行一次條件匹配判斷,如果與條件匹配,則去執(zhí)行相應的默認命令;反之則去執(zhí)行不匹配時的默認命令,相當于口語的“如果……那么……或者……那么……”。if條件語句的雙分支結構也是一種很簡單的判斷結構,語法格式如下:if條件測試

then命令序列1else命令序列2Fi下面使用雙分支結構的if條件測試語句來驗證某臺主機是否在線,然后根據(jù)返回值的結果,顯示主機在線或不在線的信息。這里的腳本主要使用ping命令來測試與對方主機的網(wǎng)絡聯(lián)通性,Linux操作系統(tǒng)中的ping命令不像Windows操作系統(tǒng)中的ping命令一樣,嘗試4次就結束了,因此為了避免用戶等待時間過長,需要通過-c參數(shù)來規(guī)定嘗試的次數(shù),通過-i參數(shù)定義每個數(shù)據(jù)包的發(fā)送間隔,并使用-W參數(shù)定義等待超時時間。【vimchkhost.sh】新建“chkhost.sh”文件,輸入以下內(nèi)容:#!/bin/bashping-c3-i0.2-W3$1&>/dev/nullif[$?-eq0]thenecho"Host$1isOn-line."elseecho"Host$1isOff-line."fifor條件循環(huán)語句for條件循環(huán)語句允許腳本一次性讀取多個信息,然后逐一對信息進行處理,當要處理的數(shù)據(jù)有范圍限制時,非常適合使用for條件循環(huán)語句。for條件循環(huán)語句的語法格式如下。for變量名in取值列表do

命令序列done下面使用for條件循環(huán)語句從列表文件中讀取多個用戶名稱,然后為其逐一創(chuàng)建賬戶并設置密碼。首先創(chuàng)建用戶名稱的列表文件users.txt,每個用戶名稱單獨一行。讀者可以自行決定具體的用戶名稱和個數(shù):

【vim

users.txt】zhangsanlisiwangwuyhyyangboshiwhile條件循環(huán)語句while條件循環(huán)語句是一種讓腳本根據(jù)某些條件來重復執(zhí)行命令的語句,它的循環(huán)結構往往在執(zhí)行前并不確定最終執(zhí)行的次數(shù),完全不同于for條件循環(huán)語句中有目標、有范圍的使用場景。while條件循環(huán)語句通過判斷條件測試的真假來決定是否繼續(xù)執(zhí)行命令,若條件為真就繼續(xù)執(zhí)行,若條件為假就結束循環(huán)。while條件循環(huán)語句的語法格式如下:while條件測試do

命令序列donecase條件測試語句case條件測試語句和C語言的中switch語句的功能很相似。case條件測試語句在多個范圍內(nèi)匹配數(shù)據(jù),若匹配成功則執(zhí)行相關命令并結束整個條件測試;若數(shù)據(jù)不在所列出的范圍內(nèi),則去執(zhí)行星號(*)中所定義的默認命令。case條件測試語句的語法結構如下。case變量值in

模式1)命令序列1

;;模式2)命令序列2;;……*)默認命令序列esac4計劃任務服務程序計劃任務經(jīng)驗豐富的服務器運維管理工程師可以使Linux操作系統(tǒng)在無須人為介入的情況下,在指定的時間段自動啟用或停止某些服務或命令,從而實現(xiàn)運維的自動化。接下來講解如何設置服務器的計劃任務服務程序,把周期性、規(guī)律性的工作交給系統(tǒng)自動完成。計劃任務分為一次性計劃任務與長期性計劃任務。一次性計劃任務:今晚11點30分開啟網(wǎng)站服務。長期性計劃任務:每周一的凌晨3:25把/home/wwwroot目錄打包備份為backup.tar.gz。計劃任務顧名思義,一次性計劃任務只執(zhí)行一次,一般用于滿足臨時的工作需求??梢杂胊t命令實現(xiàn)這種功能,只需要寫成【at時間】的形式就可以。如果想要查看已設置好但還未執(zhí)行的

一次性計劃任務,可以使用【at-l】命令;要想將其刪除,可以用【atrm】任務序號。在使用at命令設置一次性計劃任務時,默認采用的是交互式方法。例如,使用下述命令將系統(tǒng)設置為在今晚23:30自動重啟網(wǎng)站服務?!綼t

23:30】

at

>

systemctl

restart

httpdat

>

此處請同時按下Ctrl

+

D組合鍵來結束編寫計劃任務job

3

at

Mon

Apr

27

23:30:00

2017【at

-l】3

Mon

Apr

27

23:30:00

2017

a

root計劃任務如果讀者想挑戰(zhàn)一下難度更大但更加簡捷的方式,可以把前面學習的管道命令符(任意門)放在兩條命令之間,讓at命令接收前面echo命令的輸出信息,以達到通過非交互式的方式創(chuàng)建一次性計劃任務的目的。【echo"systemctlrestarthttpd"|at23:30】【at-l】如果不小心設置了兩個一次性計劃任務,可以使用下面的命令刪除其中一個?!綼trm3】【at-l】周期任務如果希望Linux操作系統(tǒng)能夠周期性地、有規(guī)律地執(zhí)行某些具體的任務,那么Linux操作系統(tǒng)中默認啟用的crond服務簡直再適合不過了。創(chuàng)建、編輯計劃任務的命令為【crontab-e】,查看當前計劃任務的命令為【crontab-l】,刪除某條計劃任務的命令為【crontab-r】。

溫馨提示

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

評論

0/150

提交評論