版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Linux系統(tǒng)與網(wǎng)絡(luò)管理第六章 Shell和Shell編程shell簡介oshell簡介nshell是系統(tǒng)的用戶界面,提供了用戶與內(nèi)核進(jìn)行交互操作的一種接口。它接收用戶輸入的命令并把它送入內(nèi)核去執(zhí)行。nshell是一個(gè)命令解釋器,它解釋由用戶輸入的命令并且把它們送到內(nèi)核。nshell有自己的編程語言用于對命令的編輯,它允許用戶編寫由shell命令組成的程序Shell是個(gè)進(jìn)程嗎?shell簡介常用的shelln常用的shellobash是公認(rèn)的功能最強(qiáng)大、最靈活的一個(gè)shello其他shell的語法有些不同,但是使用習(xí)慣是相似的oashokshotcshocshozshshell簡介shell環(huán)
2、境nshell環(huán)境o每個(gè)程序都有自己的環(huán)境,程序從它的父程序繼承環(huán)境。o程序可以修改自己的環(huán)境,但是這種改變不會影響到到父進(jìn)程環(huán)境。o當(dāng)子進(jìn)程開始時(shí),從父進(jìn)程拷貝環(huán)境,在這之后父進(jìn)程環(huán)境的改變不會影響到子進(jìn)程。o在一個(gè)進(jìn)程(通常指shell)里定義的變量都是shell的局部變量。o通過使用export命令把局部變量添加到環(huán)境中,使之成為全局變量。shell變量oshell變量n給變量賦值給變量賦值o任何字符串都可以作為變量的值賦給某個(gè)變量;o如果字符串中包含空格、包含空格、tab或換行符或換行符時(shí),應(yīng)該用引號(單、雙都可以)括起來。o變量的值中包含多個(gè)連續(xù)的空格在輸出顯示時(shí)會當(dāng)作一個(gè)空格來處理
3、。例:hhh=“哈哈哈哈” 或 hhh=哈哈哈哈 或 hhh=哈哈哈哈均可shell變量引用變量n引用變量引用變量o直接引用變量名即可注意:注意:nhhh是變量名,$hhh是變量的值o通常用echo命令來顯示變量的值necho $hhho將局部變量變?yōu)槿肿兞縩export hhh (注意:無注意:無$符號符號)shell變量例o 例1:設(shè)定一變量為hhh,值為“哈哈”,通過引用變量在屏幕上顯示字樣“哈哈string”n hhh=“哈哈”n echo $hhhstringn echo “$hhh”stringo 例2:n love=/usr/local/sbinn cd $love系統(tǒng)認(rèn)為變量
4、名為hhhstring,輸出結(jié)果為null注意:不能用單引號,否則輸出結(jié)果為$hhhstring用變量定義一個(gè)路徑shell變量內(nèi)置的系統(tǒng)變量HOMEPWDOLDPWDPATHPS1,PS2HISTFILEHISTSIZEENVTERMVISUALEDITORLOGNAMESHELLPAGER查找路徑PATH變量o查找路徑nshell使用PATH變量定義的目錄列表來查找命令/usr/local/sbin:/usr/local/bin:/sbin:/binn內(nèi)部命令優(yōu)于外部命令n若有同名程序,只運(yùn)行先找到的n允許在當(dāng)前目錄查找并運(yùn)行程序:用 .(點(diǎn)),或以冒號開頭或結(jié)尾n超級用戶的查找路徑加當(dāng)前
5、目錄非常危險(xiǎn)!查找路徑PATH變量ntype或或which命令命令o可指出程序在PATH的什么路徑找到如:type ttyn修改查找路徑修改查找路徑o重新定義PATH變量o在原來的基礎(chǔ)上增加新的查找路徑PATH=$PATH:新的路徑:新的路徑n注意:注意:如果PATH太長,會影響系統(tǒng)的性能。shell提示符PS1和PS2變量oshell提示符nbash有兩級用戶提示符。主提示符是你經(jīng)??吹降腷ash在等待命令輸入時(shí)的提示符。缺省的一級提示符是字符$(如果是超級用戶,則是#號)。 n通過改變bash的PS1變量的值來改變你的缺省提示符。例如: PS1=Please enter a command
6、 把bashshell的提示符該為指定的字符串。 shell提示符PS1和PS2變量n缺省的輔助提示符是。如果要改變第二級提示符,可以通過設(shè)置PS2變量實(shí)現(xiàn)。 例:n把當(dāng)前路徑作為提示符PS1=$PWD n把當(dāng)前日期作為提示符PS1=d shell提示符PS1和PS2變量n常用的一些提示符特殊字符代碼 o$ 顯示$符作為提示符,如果用戶是root的話,則顯示#號。o顯示反斜杠。od顯示當(dāng)前日期。 oh顯示主機(jī)名。ot顯示當(dāng)前時(shí)間。 ow顯示當(dāng)前工作目錄的路徑。 環(huán)境文件o環(huán)境文件n/etc/profile和和/etc/bashrco系統(tǒng)變量,由管理員維護(hù)n$HOME/.bash_profile
7、o用戶可修改n$HOME/.bashrco該名字由變量ENV定義,該文件定義bash shell的特征環(huán)境文件查看環(huán)境nprofile文件和文件和.bashrc文件的區(qū)別文件的區(qū)別:o兩個(gè)profile文件都只在系統(tǒng)啟動(dòng)時(shí)被讀取一次;o.bashrc在系統(tǒng)啟動(dòng)和每次調(diào)用shell的時(shí)候都要被讀?。籲查看環(huán)境oset 列出所有的環(huán)境變量oset o 顯示當(dāng)前shell的選項(xiàng)和設(shè)置oenv 顯示已經(jīng)傳遞到環(huán)境中的變量ounset 刪除shell環(huán)境中的變量環(huán)境文件查看環(huán)境set o顯示當(dāng)前顯示當(dāng)前shell的選項(xiàng)和設(shè)置的選項(xiàng)和設(shè)置set o option設(shè)置指定的選項(xiàng)有效設(shè)置指定的選項(xiàng)有效set
8、+o option設(shè)置指定的選項(xiàng)無效設(shè)置指定的選項(xiàng)無效如如set o vi設(shè)置設(shè)置vi為命令行的編輯器為命令行的編輯器set o allexport自動(dòng)傳遞所有新變量自動(dòng)傳遞所有新變量set o ignoreeof禁止使用禁止使用Ctrl + D作為退出登錄的快捷鍵作為退出登錄的快捷鍵bash shell-更換目錄的快捷方式o更換目錄的快捷方式n 和目錄對應(yīng)的變量目錄對應(yīng)的變量oHOME 主目錄(即當(dāng)前用戶家目錄)oPWD 當(dāng)前工作目錄oOLDPWD 先前工作目錄n 用否定符否定符來代表這些目錄以方便使用o $HOMEo+ $PWDo- $OLDPWDouser 指定用戶user的家目錄bas
9、h shell-更換目錄的快捷方式快捷方式快捷方式完整命令完整命令$cd$cd $HOME$cd -$cd $OLDPWD$ls $ls $HOME$ls user$ls /home/user$ls -$ls $OLDPWD$ls +$ls $PWDbash shell-命令行掃描和補(bǔ)全o命令行掃描n 按回車表示命令行輸入結(jié)束n shell解析整個(gè)行,特殊字符被解釋替換掉o命令和文件補(bǔ)全n 按一次按一次Tab o直接補(bǔ)齊沒有二義性的命令或文件n 按二次按二次Tab鍵鍵 o如果有二義性,再按一次Tab,列出所有相匹配的命令或文件bash shell-擴(kuò)展通配符o擴(kuò)展通配符n用來匹配多個(gè)文件名或目
10、錄名的特殊字符叫通配通配符符。nshell在掃描階段對通配符進(jìn)行展開n“*”匹配跨越“.”的文件名(點(diǎn)只是文件名中的一個(gè)普通字符)o如:my*my myfile my.word my.old.wobash shell-擴(kuò)展通配符n通配符有:n* 匹配任意個(gè)(含0個(gè))字符n? 匹配任意一個(gè)字符nlist 匹配其中之一的字符n!list 匹配不在其中的字符n以“.”開頭的文件稱為隱藏文件bash shell-擴(kuò)展通配符n用 匹配文件名的模式o直接在 中寫入字符串;o定義一個(gè)范圍,在頭尾兩個(gè)字符之間加入 “-”;o如果第一個(gè)字符是 ! ,則是在定義的字符串之外的字符才匹配;o不能用漢字作為字符串。不
11、能用漢字作為字符串。o注意:注意: 僅僅是匹配一個(gè)字符。僅僅是匹配一個(gè)字符。bash shell-擴(kuò)展通配符思考題思考題假設(shè)當(dāng)前目錄下有以下幾個(gè)文件“網(wǎng)管0381” “網(wǎng)管0382” “網(wǎng)管0383” “網(wǎng)管0384” “數(shù)管0381” “數(shù)管0382” “數(shù)管0383” “數(shù)管0384”“1” “2” “3” “4” “1a” “2b” “3c” “4d”“網(wǎng)管0381a” “網(wǎng)管0382b” “網(wǎng)管0383c” “網(wǎng)管0384d” “數(shù)管0381a” “數(shù)管0382b” “數(shù)管0383c” “數(shù)管0384d”要只列出前面要只列出前面8個(gè)文件,應(yīng)該用什么命令?個(gè)文件,應(yīng)該用什么命令?A)ls
12、 *管* B)ls ?管? C)ls *管0381-4 D)ls ? E)ls *1-4只列出后只列出后8個(gè)文件呢?個(gè)文件呢?A)ls *1-4? B)ls *1-4a-d C)ls *81-4? D)ls ?*a-dbash shell-引號o引號n引號是用來屏蔽特殊字符的,避免shell對其進(jìn)行處理。o 單引號單引號 屏蔽所有特殊字符o“雙引號雙引號 屏蔽多數(shù)特殊字符(允許對變 量和命令進(jìn)行替換)o 反斜杠反斜杠 屏蔽后跟字符的特殊含義n引號也用來保留空格和Tabbash shell-引號n反斜杠()使后面緊跟的字符解釋成普通字符。o如:enter(回車)表示命令結(jié)束,如果輸入 再回車的就
13、不表示命令結(jié)束。n雙引號不能屏蔽的字符有o“ 雙引號本身o 反斜杠o 反引號o$ 美元符號例:用echo命令在顯示出“哈哈”錯(cuò)誤的命令 echo “哈哈”正確的命令 echo “哈哈”bash shell- bash的別名o別名:用來創(chuàng)建命令的縮寫或另一可選名字bash shell-命令歷史/調(diào)用/編輯o 命令歷史:n 用光標(biāo)鍵上下調(diào)用以前使用過的命令n 用history命令列出以前使用過的命令n 查看.bash_history文件o 重復(fù)調(diào)用命令:n !n 重復(fù)調(diào)用第n個(gè)命令n !str 重復(fù)調(diào)用以str開頭的歷史命令o 命令行編輯模式:n set o vi (仿效編輯器vi)n set o
14、 emacs (仿效編輯器emacs,默認(rèn)的)功能強(qiáng)大的實(shí)用工具-findofind實(shí)用程序n格式: find directories options actionnoptions為參數(shù)o-name name查找名為name的文件o-user name 查找屬于用戶name的文件功能強(qiáng)大的實(shí)用工具-findo-type fdlcb 查找指定類型的文件(d目錄,l連接)o-size +/-nbckw 查找指定大小的文件 如+10k表示大于10KB b-blocks(512B), c-Bytes, k-KB, w-2Bytes wordo-inum number 查找指定的inode號文件功能強(qiáng)大
15、的實(shí)用工具-findo-atime n (access)在n*24小時(shí)內(nèi)被訪問過的文件列出來o-ctime n (changed) 在n*24小時(shí)內(nèi)被改變過的文件和目錄列出來o-mtime n (modified) 在n*24小時(shí)內(nèi)被修改過的文件列出來o-newer file 比文件file還要新的文件列出來 功能強(qiáng)大的實(shí)用工具-findn如果要同時(shí)使用多個(gè)參數(shù),可以使用連接符進(jìn)行參數(shù)組合o同時(shí)滿足兩個(gè)參數(shù)同時(shí)滿足兩個(gè)參數(shù)n參數(shù)1 參數(shù)2n參數(shù)1 -and 參數(shù)2o滿足兩個(gè)參數(shù)中的一個(gè)滿足兩個(gè)參數(shù)中的一個(gè)n參數(shù)1 -or 參數(shù)2 功能強(qiáng)大的實(shí)用工具-findnaction為操作o-print
16、在標(biāo)準(zhǔn)輸出中顯示文件名o-exec command ; 對找到的文件執(zhí)行指定命令o-ok command ;在執(zhí)行命令前請求確認(rèn)功能強(qiáng)大的實(shí)用工具-grepogrep實(shí)用程序n文本文件中查找內(nèi)容nGlobal regular expression print的縮寫n指定給grep的文本模式稱“正則表達(dá)式”n通常當(dāng)作過濾器使用n也可查找多個(gè)文件功能強(qiáng)大的實(shí)用工具-grepngrep常用的參數(shù)o-v 輸出不匹配的行o-c 輸出滿足匹配模式的行數(shù)o-i匹配時(shí)忽略大小寫o-n 在輸出符合要求的行之前輸出該行在文件中的行號正則表達(dá)式o正則表達(dá)式(Regular Expression,RE)n 正則表達(dá)式
17、最常用在用在字符串的搜索與對比,進(jìn)行多樣化的對比技巧,以幫助各種套件取得所需要的資料。 如:電子郵件服務(wù)器sendmail也使用正規(guī)表達(dá)式進(jìn)行郵件的過濾。在vi、more里也可以用RE來查找需要的字符串。n 目前有很多套件都是使用正規(guī)表達(dá)式來達(dá)到“過濾、分析”的目的,作為系統(tǒng)管理員,掌握它是非常重要的!正則表達(dá)式n Shell的特殊字符辨認(rèn)系統(tǒng)沒有利用RE。原因是正則表達(dá)式更難用。n Shell的特殊字符和RE相似,但有區(qū)別。n 由于RE用到了特殊字符,為了避免shell識別出現(xiàn)混亂,所以所有的RE都必須用單引號括起來。n 正則表達(dá)式和shell的特殊字符異同點(diǎn)oRE用點(diǎn)匹配任意一個(gè)字符,相當(dāng)
18、于shell的問號。o.*匹配零或多個(gè)字符,相當(dāng)于shell的*號o用法和shell一樣,只是用代替了!表示不匹配正則表達(dá)式n正則表達(dá)式的模式匹配字符:o . 匹配單個(gè)任意的字符olist 匹配字符串列表中的其中一個(gè)字符orange 匹配指定范圍中的一個(gè)字符olist 匹配指定列表外的一個(gè)字符orange 匹配指定范圍外的一個(gè)字符正則表達(dá)式n與匹配字符配合使用的量詞:o * 匹配前一個(gè)字符零次或多次o n 匹配前一個(gè)字符n次on, 匹配前一個(gè)字符至少n次on,m 匹配前一個(gè)字符n次至m次n控制字符:o 只在行頭匹配REo$ 只在行末匹配REo 引用特殊字符正則表達(dá)式例:n .$ 匹配倒數(shù)第二個(gè)
19、字符是句點(diǎn)的行n $ 匹配只有3個(gè)字符的行n 0-930-9匹配以3個(gè)數(shù)字開頭跟著是一個(gè)非數(shù)字字符的行n (A-ZA-Z)*$ 匹配只全部是大寫字母并且字母個(gè)數(shù)為偶數(shù)個(gè)的行o注:該行全部大寫字母并且字母的個(gè)數(shù)為偶數(shù)個(gè)。o注意圓括號()的使用,后面的*號是重復(fù)()里的規(guī)則輸入輸出命令o輸入輸出命令n標(biāo)準(zhǔn)輸入輸出o每一個(gè)Linux命令都有個(gè)與之相關(guān)的輸入輸出流:ostdin 標(biāo)準(zhǔn)輸入,命令默認(rèn)的輸入位置ostdout 標(biāo)準(zhǔn)輸出,命令默認(rèn)的輸出位置ostderr 標(biāo)準(zhǔn)錯(cuò)誤輸出,也是命令的輸出 位置,用于輸出錯(cuò)誤及診斷信息。輸入輸出命令-標(biāo)準(zhǔn)輸入輸出流(stream)作用默認(rèn)指向編號stdin標(biāo)準(zhǔn)輸入
20、鍵盤輸入0stdout標(biāo)準(zhǔn)輸出終端屏幕1stderr標(biāo)準(zhǔn)錯(cuò)誤輸出終端屏幕2輸入輸出命令-標(biāo)準(zhǔn)輸入輸出輸入輸出命令-重定向nstdout重定向重定向o格式:filename 或 1filenameo輸出結(jié)果將會存入一個(gè)文件而不是顯示在屏幕上;o重定向stdout后,stderr還是連接到終端;o在實(shí)際執(zhí)行命令前在實(shí)際執(zhí)行命令前,shell會自動(dòng)打開該文件(如果不存在則自動(dòng)創(chuàng)建)并清空,命令執(zhí)行完成時(shí),然后正確關(guān)閉該文件。特別注意:說明不管命令的執(zhí)行結(jié)果如何,該文件都被清空輸入輸出命令-重定向輸入輸出命令-重定向不存在名為XXX的目錄或文件stderr還是輸出在屏幕上輸入輸出命令-重定向nstde
21、rr重定向重定向o格式:2filenamen將將stdout和和stderr重定向到同一個(gè)地方重定向到同一個(gè)地方o格式:2&1注意:重定向是從左至右從左至右使用的例:ols /root xxx 2&1abc stdout輸出到abc文件中,stderr輸出到屏幕ols /root xxx abc 2&1 stdout和stderr都輸出到abc文件中輸入輸出命令-重定向nstdin重定向重定向o格式:filenamestdout追加重定向ostderr格式:2filenamestderr追加重定向o將輸出結(jié)果添加到一個(gè)已存在的文件后面,不會清除原文件的內(nèi)容n空設(shè)備的使用
22、空設(shè)備的使用o/dev/nullstdout丟棄o2/dev/nullstderr丟棄輸入輸出命令-重定向o cat /dev/nullfilename 置空文件例: 用普通用戶登錄,運(yùn)行 find / -name passwd -print因?yàn)槭艿綑?quán)限的限制,會提示很多錯(cuò)誤信息,所以用find / -name passwd -print 2/dev/null將stderr置空,屏幕上就不再顯示錯(cuò)誤信息了管道o管道n 管道與重定向作用類似,但工作原理不同。n 管道允許以一系列進(jìn)程的輸入輸出流連在一起,而將這些命令連接成為管道。 who tmpfile wc l “$1$2$3”o“$”=“$1”“$2”“$3”.o$ 當(dāng)前shell的PIDo$?是最近前臺運(yùn)行的命令的返回狀態(tài)o$!是最近后臺運(yùn)行的PIDshell腳本nread語句語句o允許shell交互地從標(biāo)準(zhǔn)輸入讀入?yún)?shù),然后將讀入的值賦給變量。o可以同時(shí)輸入多個(gè)參數(shù),用空格或tab分隔 如在腳本中輸入read $a $b
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保健調(diào)理師測試驗(yàn)證考核試卷含答案
- 鍋爐操作工安全宣貫知識考核試卷含答案
- 汽機(jī)本體檢修工安全檢查競賽考核試卷含答案
- 中藥酒(酊)劑工崗前管理綜合考核試卷含答案
- 陶瓷施釉工崗前技能考核試卷含答案
- 乳品濃縮工崗前工作水平考核試卷含答案
- 給體育老師的請假條格式
- 2025年金屬非切削、成形加工機(jī)械項(xiàng)目合作計(jì)劃書
- 2025年村用風(fēng)油互補(bǔ)發(fā)電系統(tǒng)控制器及逆變器項(xiàng)目發(fā)展計(jì)劃
- 2025年電氣、電子設(shè)備用玻璃部件相關(guān)工業(yè)品用玻璃部件項(xiàng)目合作計(jì)劃書
- 酒店清欠協(xié)議書模板模板
- 2025沈陽市消防救援支隊(duì)政府專職消防員招聘160人考試備考試題及答案解析
- 鐵路鐵鞋管理辦法
- 安防監(jiān)控系統(tǒng)維護(hù)與管理方案
- 2025屆重慶八中學(xué)七上數(shù)學(xué)期末復(fù)習(xí)檢測模擬試題含解析
- 2025年廣東省中考語文試卷真題(含答案解析)
- 燙熨治療法講課件
- 2025至2030中國模塊化變電站行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 電廠清潔生產(chǎn)管理制度
- 2025年江蘇省事業(yè)單位招聘考試教師招聘體育學(xué)科專業(yè)知識試題
- 機(jī)械設(shè)計(jì)年終述職報(bào)告
評論
0/150
提交評論