版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Lesson07
vi與Shell入門復(fù)習(xí)進(jìn)程nicerenice&Ctrl+CCtrl+Zjobsbgfgpstopkilldmesguptimewhowwhoami內(nèi)容提要vi文本編輯器什么是Shell?BASHShell變量與變量設(shè)置變量設(shè)置規(guī)則命令別名與歷史BASHShell的配置文件vi文本編輯器Linux/Unix下的配置文件都是文本文件vi是使用最廣泛的編輯器vi分為三種工作模式:一般模式編輯模式命令模式vi文本編輯器vi的一般模式:以vi處理一個(gè)文件的時(shí)候,一進(jìn)入該文件就是一般模式了(vi命令啟動(dòng)后的默認(rèn)狀態(tài))。在這個(gè)模式中,可以使用上下左右鍵來移動(dòng)光標(biāo),也可以使用刪除字符或刪除整行來處理文件內(nèi)容,也可以使用復(fù)制、粘貼。vi的編輯模式:在一般模式中可以處理刪除、復(fù)制、粘貼等動(dòng)作,但是卻無法編輯。按下i,I,o,O,a,A等字母之后才會進(jìn)入編輯模式,進(jìn)入該模式后,左下方會出現(xiàn)INSERT或REPLACE等字樣。按下ESC就可以回到一般模式vi文本編輯器vi的進(jìn)入編輯模式的命令詳解i從光標(biāo)所在位置前開始插入文本I將光標(biāo)移到當(dāng)前行行首,然后在其前插入文本a用于在當(dāng)前光標(biāo)位置之后插入文本A把光標(biāo)移到行尾,從那里開始插入文本o在光標(biāo)所在行的下面新開一行,并將光標(biāo)置于新行行首,等待輸入文本O在光標(biāo)所在行的上面新開一行,并將光標(biāo)置于新行行首,等待輸入文本vi文本編輯器vi的命令模式在一般模式當(dāng)中,輸入:或/就可以將光標(biāo)移動(dòng)到最底下那一行,從而進(jìn)入命令模式。在這個(gè)模式當(dāng)中,可以進(jìn)行搜索、保存、退出、讀取另外一個(gè)文件、顯示行號等動(dòng)作。vi文本編輯器圖解vi的三種模式一般模式移動(dòng)光標(biāo)查找替換刪除復(fù)制粘貼編輯模式輸入字符命令模式讀取保存顯示行號ioaESC:/?ESCvi文本編輯器vi的舉例:輸入vitest.txt按下i,進(jìn)入編輯模式輸入hello按下Esc進(jìn)入一般模式輸入:wq回車保存退出vi文本編輯器vi一般模式下常用命令(1/3):hjkl
用于光標(biāo)左移、下移、上移、右移[Ctrl]+[f]屏幕向前移動(dòng)一頁[Ctrl]+[b]屏幕向后移動(dòng)一頁0
移到行的第一個(gè)字符處$
移到行的最后一個(gè)字符處G
移到文件的最后一行nG
移動(dòng)到文件的第n行n<Enter>
光標(biāo)向下移動(dòng)n行nH
光標(biāo)移到當(dāng)前屏幕的第n行行首vi文本編輯器vi一般模式下常用命令(2/3):x
向后刪除一個(gè)字符nx
向后刪除n個(gè)字符X
向前刪除一個(gè)字符dd
刪除光標(biāo)所在的行ndd刪除光標(biāo)所在行的向后n行yy復(fù)制光標(biāo)所在行nyy復(fù)制光標(biāo)所在行的向后n行p
粘貼到光標(biāo)的下一行P
粘貼到光標(biāo)的上一行vi文本編輯器vi一般模式下常用命令(3/3):/word
在光標(biāo)之后查找word?word
在光標(biāo)之前查找wordn
向相同的方向移動(dòng)到有word的地方N
向相反的方向移動(dòng)到有word的地方u
撤銷上次操作.
重做ZZ
存盤退出ZQ
不保存退出vi文本編輯器vi命令模式下常用命令(1/3)::n
跳到第n行:q
退出,如果有修改沒有保存會提示:wq
存盤退出:q!
不保存退出:w
存盤:wfile
將當(dāng)前編輯內(nèi)容保存到file:rfile
讀取另外一個(gè)文件file的數(shù)據(jù),插入
到光標(biāo)所在行的后面:fnewfile
將當(dāng)前文件重命名到newfile(別忘
了保存)vi文本編輯器vi命令模式下常用命令(2/3):
:n1,n2s/word1/word2/g
在第n1與n2行之間尋找word1這個(gè)字符串,并將該字符串替換為word2
:1,$s/word1/word2/g
從第一行到最后一行尋找word1字符串,并將該字符串替換為word2(.可以表示當(dāng)前行,$可以表示最后一行)
:1,$s/word1/word2/gc
從第一行到最后一行尋找word1字符串,并將該字符串替換為word2。且在替換前顯示提示字符給使用者確認(rèn)。vi文本編輯器vi命令模式下常用命令(3/3)::n1,n2con3第n1行到n2行的內(nèi)容拷貝到n3后:n1,n2mn3第n1行到n2行的內(nèi)容移動(dòng)到n3后:n1,n2d
刪除第n1行到n2行的內(nèi)容:!Cmd
運(yùn)行Shell命令Cmd:r!Cmd
將命令行運(yùn)行的結(jié)果寫入當(dāng)前位置:n1,n2w!Cmd
將第n1行到n2行的內(nèi)容作為Cmd
的輸入運(yùn)行命令,如果沒有指定n1
和n2,則將整個(gè)文件作為輸入。:setnu
顯示行號:setnonu
隱藏行號vi文本編輯器vi練習(xí):將/etc/man.config拷貝到當(dāng)前目錄,用vi打開顯示行號,并移動(dòng)到第62行查看內(nèi)容移動(dòng)到第一行,并且向下搜尋一下man將50到100行之間的man改為MAN,并且一個(gè)一個(gè)挑選是否需要修改修改完之后,突然反悔了,全部復(fù)原復(fù)制51到60行這十行的內(nèi)容,并且貼到最后一行之后刪除11到30行之間的20行將這個(gè)文件另存成man.test.config保存退出什么是Shell?想要聽音樂需要什么?首先需要聲卡操作系統(tǒng)的核心可以支持這個(gè)聲卡(有相應(yīng)的聲卡驅(qū)動(dòng)程序)用戶發(fā)出播放音樂的指令必須發(fā)出指令,硬件才會工作。如果可以直接同硬件溝通,那么不需要內(nèi)核。否則,用戶的指令必須先發(fā)送給內(nèi)核,然后內(nèi)核再去控制硬件。shell正是用戶與內(nèi)核溝通的平臺:用戶可以通過shell給內(nèi)核發(fā)送指令內(nèi)核也可以把指令執(zhí)行的過程或者結(jié)果信息發(fā)送到shell給用戶看。什么是Shell?來自第一講的圖:內(nèi)核(Kernel)外殼(Shell,KDE,Application)用戶硬件(Hardware)什么是Shell?想要聽音樂需要什么?首先需要聲卡操作系統(tǒng)的核心可以支持這個(gè)聲卡(有相應(yīng)的聲卡驅(qū)動(dòng)程序)用戶發(fā)出播放音樂的指令必須發(fā)出指令,硬件才會工作。如果可以直接同硬件溝通,那么不需要內(nèi)核。否則,用戶的指令必須先發(fā)送給內(nèi)核,然后內(nèi)核再去控制硬件。shell正是用戶與內(nèi)核溝通的平臺:用戶可以通過shell給內(nèi)核發(fā)送指令內(nèi)核也可以把指令執(zhí)行的過程或者結(jié)果信息發(fā)送到shell給用戶看。BASHShell早年的Unix年代,Unix發(fā)展者眾多,所以shell有很多不同版本,例如常聽到的BourneShell(sh)、在Sun中默認(rèn)的CShell、商業(yè)上常用的KSHell以及TCSH等,每一種Shell都各有其特點(diǎn)。Linux使用的是BourneAgainShell(簡稱bash),這個(gè)Shell是BourneShell的增強(qiáng)版本,也是基于GNU的架構(gòu)下發(fā)展出來的。BASHShell第一個(gè)流行的shell是由StevenBourne開發(fā)出來的,為了紀(jì)念他所以就稱為Bourneshell,或直接簡稱為sh。另一個(gè)廣為流傳的shell是由柏克萊大學(xué)的BillJoy設(shè)計(jì)依賴于BSD版的Unix系統(tǒng)中的shell,這個(gè)shell的語法有點(diǎn)類似C語言,所以才得名為Cshell(簡稱csh)。BASHshell是GNU計(jì)劃中重要的工具軟件之一,目前也是GNU操作系統(tǒng)中標(biāo)準(zhǔn)的shell,與sh兼容。BASHShellBASHShell的特點(diǎn)(1/5):命令記憶能力Linux可以記憶以前輸入過的命令,只要使用上下鍵就可以找到以前執(zhí)行的指令來執(zhí)行。這些命令按照先后順序記錄在用戶Home目錄下的隱藏文件.bash_history中.bash_history里面記錄了上一次登錄以前執(zhí)行過的命令,本次登錄執(zhí)行的命令都保存在內(nèi)存中,只有成功注銷之后,內(nèi)存數(shù)據(jù)才會刷新到.bash_history文件中有時(shí)候.bash_history文件中記錄了你包含在指令中的密碼,可能引起安全問題(如sqlplussys/abcdefgassysdba),所以最好還是設(shè)置命令的記錄數(shù)量不要太大。BASHShellBASHShell的特點(diǎn)(2/5):命令補(bǔ)全補(bǔ)全功能如果在執(zhí)行命令的時(shí)候不想按下太多的按鍵(例如命令pcprofiledump),在輸入了pcprofile之后,再按下[Tab]鍵的話,那么bash馬上會自動(dòng)的將后面的dump接上來。如果有重復(fù)的命令,那么按下兩次[Tab]將會把所有重復(fù)的命令列出來。直接在提示字符后面連按兩次<tab>鍵,則系統(tǒng)會將所有可以使用的命令都列出來。例如,如果想要知道目前系統(tǒng)里面,所有以b開頭的命令呢?就是按下b之后,連按兩次<tab>就ok。BASHShellBASHShell的特點(diǎn)(3/5):文件名稱補(bǔ)全功能如果用vi來讀取某個(gè)文件,例如/etc/man.config這個(gè)文件,那么可以輸入vi/etc/man之后,直接按下<tab>鍵,該文件名稱就會被自動(dòng)的補(bǔ)上。同樣,出現(xiàn)文件多個(gè)匹配項(xiàng)時(shí),可以按下兩個(gè)TAB鍵來顯示所有匹配項(xiàng)。這樣大大增加了指令輸入的正確率。BASHShellBASHShell的特點(diǎn)(4/5):命令別名設(shè)置功能假如我需要知道某個(gè)目錄底下的所有文件信息(包含隱藏文件)及所有的文件屬性,那么我就必須要輸入ls-al這樣的指令。每次都輸入多麻煩!可以通過為自己經(jīng)常使用的命令(包括參數(shù))定義別名來避免過多輸入。例如:aliaslm='ls-al'(注意=兩邊不要有空格)那么以后lm就等于執(zhí)行l(wèi)s-al直接輸入alias,可以顯示目前以及定義好的所有別名BASHShellBASHShell的特點(diǎn)(5/5):任務(wù)控制,前臺、背景控制bgfgCtrl+ZCtrl+CShellScripts變量與變量設(shè)置變量(1/2):假設(shè)JAVA安裝在/usr/jdk1.5下面其他很多程序(比如應(yīng)用服務(wù)器)的執(zhí)行都需要JRE,這些服務(wù)的啟動(dòng)可能形如:
/usr/jdk1.5/bin/javacom.bea.WebLogicStart
/usr/jdk1.5/bin/javacom.bea.EJBContainer
/usr/jdk1.5/bin/javacom.bea.WebContainer那么假如JAVA換了其他目錄,或者要使用其他版本(如jdk1.5-->jdk6.0)呢?變量與變量設(shè)置變量(2/2):通常的做法是定義變量,如:
JAVA_HOME=/usr/jdk1.5那么其他程序都用變量,而不用絕對值,如:
$JAVA_HOME/bin/javacom.bea.WebLogicStart
$JAVA_HOME/bin/javacom.bea.EJBContainer
$JAVA_HOME/bin/javacom.bea.WebContainer那么假如JAVA換了其他目錄,或者要使用其他版本(如jdk1.5-->jdk6.0),那么只需要修改變量的值即可:
JAVA_HOME=/usr/jdk6.0變量就是特定字符串值的別名變量與變量設(shè)置顯示變量值的命令:echo用法:echo$variable例如:
echo$PATH
echo$HOME
echo$MAIL
echo$USER
echo$HOSTNAME查看所有Linux預(yù)定義變量的命令:env變量與變量設(shè)置重要的系統(tǒng)環(huán)境變量:HISTSIZE=1000<==當(dāng)前命令記憶數(shù)量HOME=/home/test<==登錄用戶的Home目錄HOSTNAME=<==主機(jī)名稱HOSTTYPE=i386<==主機(jī)CPU等級(i386,i686...)LANGUAGE=zh_CN.UTF-8<==默認(rèn)語言,要修改它可以修改/etc/sysconfig/i18n文件MAIL=/var/spool/mail/root<==
郵件目錄LOGNAME=root<==登錄帳號PWD=/root<==當(dāng)前路徑PS1=[\u@\h\W]$<==命令行提示符樣式變量與變量設(shè)置顯示所有變量的命令:setset除了會顯示出目前的環(huán)境變量之外,也會顯示出用戶自定義變量。常見的用戶自定義變量有:BASH=/bin/bash<=BASH主程序所在路徑COLORS=/etc/DIR_COLORS<=使用顏色COLUMNS=100<=終端的字符列數(shù)HISTFILE=/home/vbird/.bash_history<=歷史命令文件MAILCHECK=60<=每隔60s檢查一次郵PPID=24572<=當(dāng)前bash父進(jìn)程IDUID=500<=當(dāng)前用戶的UID$<==當(dāng)前shell的PID?
<=最后一個(gè)命令的返回值,0表示成功,否則為1變量設(shè)置規(guī)則變量設(shè)置規(guī)則(1/2)變量與變量內(nèi)容(值)用等號連接等號兩邊不能直接接空格符變量名稱只能是英文字母與數(shù)字,但是數(shù)字不能是開頭字符若有空格符可以使用雙引號或單引號來將變量內(nèi)容括起來。注意:雙引號內(nèi)的特殊字符可以保有變量特性,但是單引號內(nèi)的特殊字符則僅為一般字符必要時(shí)需要轉(zhuǎn)義字符“\”來將特殊符號(如回車換行,$,\,空格符,單引號等)變成一般符號變量設(shè)置規(guī)則變量設(shè)置規(guī)則(2/2)在命令中,如果需要其他命令的執(zhí)行結(jié)果信息,可以使用`command`若該變量為擴(kuò)增變量內(nèi)容時(shí),則需以雙引號(有些版本也不用)及$變量名稱(如:"$PATH":/home)繼續(xù)累加內(nèi)容若該變量需要在其它子程序執(zhí)行,則需要以export來使變量生效,如exportPATH通常大寫字符為系統(tǒng)變量,自定義變量可以使用小寫字符,方便區(qū)別(只是建議)取消變量的方法為:unset變量名稱變量設(shè)置規(guī)則變量設(shè)置實(shí)戰(zhàn)(1/3)12name=VBrid<==錯(cuò)誤!變量開頭不能是數(shù)字name=VBird<==錯(cuò)誤!等號兩邊不能直接接空格name=VBird<==正確!echo$name顯示VBirdname=VBirdname<==錯(cuò)!帶空格需要加上雙引號!name="VBirdname"<=正確!name="VBird'sname"<==正確!變量設(shè)置規(guī)則變量設(shè)置實(shí)戰(zhàn)(2/3)
aa=hexy
name=$aaisme
<=達(dá)不到累加的效果,name與變量aaisme同值
name="$name"isme
<==正確!echo$name顯示VBird'snameisme
PATH="$PATH":/home/test
<==正確的!echo$PATH將多了一段
PATH="$PATH:/home/test"
<==正確!這個(gè)形式對于PATH來說也是正確的變量設(shè)置規(guī)則變量設(shè)置實(shí)戰(zhàn)(3/3)[hexy@hexy~]$aa="abcd"[hexy@hexy~]$bb="$aa"aabb[hexy@hexy~]$cc='$aa'aabb問題:現(xiàn)在aabbcc的值是多少?abcdabcdaabb$aaaabb變量設(shè)置規(guī)則export命令讓“局部變量”變成“全局變量”,這樣shell設(shè)置的變量在其子shell中同樣有效。但是不能跨越當(dāng)前會話舉例:name=hexybash
<==進(jìn)入子shellecho$name
<==顯示空exit
<==退出子shellexportname
<==導(dǎo)出bash
<==進(jìn)入子shellecho$name
<==顯示hexy命令別名與歷史設(shè)置別名的命令:alias可以減少輸入量:在命令加參數(shù)比較長的情況下,定義別名可以提高工作效率。例如我們經(jīng)常需要這樣的命令“l(fā)s-al|less”,每次輸入確實(shí)麻煩,那么如果定義別名
aliaslm=”ls-al|more”
那么以后只需要輸入lm即可減少錯(cuò)誤:如果直接輸入rm刪除文件,可能出現(xiàn)誤刪的情況,那么可以這樣做:
aliasrm=”rm-i”提高操作習(xí)慣程度:比如我們習(xí)慣了DOS里面的dir和cls命令,那么可以定義aliasdir=”ls-l”;aliascls=”clear”命令別名與歷史設(shè)置別名的命令(續(xù)):alias不帶任何參數(shù)的alias可以顯示當(dāng)前定義的所有別名取消別名設(shè)置可以使用unalias命令舉例:aliaslm='ls-al|more'lm<==使用別名unaliaslm<==取消別名alias<==查看新的別名設(shè)置情況命令別名與歷史查看命令歷史的命令:history用法:historynumber顯示最近的number個(gè)命令,不指定number參數(shù)時(shí),會顯示所有歷史命令,前面加編號,代表序號。如序號從13到1012,一共1000個(gè)命令別名與歷史執(zhí)行歷史命令的方法方法1:!number執(zhí)行歷史命令中編號為number的那個(gè)命令方法2:!command執(zhí)行歷史命令中最近一次以command開頭的命令方法3:!!執(zhí)行上一條命令BASHShell的配置文件系統(tǒng)設(shè)置(所有用戶有效)/etc/profile設(shè)置系統(tǒng)范圍內(nèi)的環(huán)境變量:PATHUSERLOGNAMEMAILHOSTNAMEHISTSIZEINPUTRC。比如需要修改歷史命令的記憶數(shù)量,可以在這里把
HISTSIZE=1000
這一行進(jìn)行修改(一般改到50)。設(shè)置啟動(dòng)時(shí)執(zhí)行的程序。
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度養(yǎng)老院食堂與便利店運(yùn)營管理合同4篇
- 2025年度生態(tài)農(nóng)業(yè)大棚使用權(quán)轉(zhuǎn)讓合同模板4篇
- 2025年度文化產(chǎn)品代理采購合同模板4篇
- 2024版英文技術(shù)服務(wù)合同范本規(guī)范
- 2024進(jìn)戶門銷售合同
- 2024訴訟代理委托合同范本
- 2025年度專業(yè)論壇會議組織合同范本4篇
- 2025年度數(shù)字音樂詞曲版權(quán)交易合作合同范本4篇
- 2025年度新能源汽車項(xiàng)目代理投標(biāo)合同樣本4篇
- 2024施工簡易合同范本(橋梁檢測與維修)3篇
- 中國的世界遺產(chǎn)智慧樹知到期末考試答案2024年
- 2023年貴州省銅仁市中考數(shù)學(xué)真題試題含解析
- 世界衛(wèi)生組織生存質(zhì)量測量表(WHOQOL-BREF)
- 《葉圣陶先生二三事》第1第2課時(shí)示范公開課教學(xué)PPT課件【統(tǒng)編人教版七年級語文下冊】
- 某送電線路安全健康環(huán)境與文明施工監(jiān)理細(xì)則
- GB/T 28885-2012燃?xì)夥?wù)導(dǎo)則
- PEP-3心理教育量表-評估報(bào)告
- 控制性詳細(xì)規(guī)劃編制項(xiàng)目競爭性磋商招標(biāo)文件評標(biāo)辦法、采購需求和技術(shù)參數(shù)
- 《增值稅及附加稅費(fèi)申報(bào)表(小規(guī)模納稅人適用)》 及其附列資料-江蘇稅務(wù)
- 中南民族大學(xué)中文成績單
- 危大工程安全管理措施方案
評論
0/150
提交評論