




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第6章 Bash Shell目 錄1 Bash 引言2 命令列表和腳本3 Bash變量4 命令行替換5 自定義Shell6 獲得shell腳本和shell初始化本章所用到的命令1 Bash 引言1.1 Bash Shellshell是最常用的程序shell功能:偵聽用戶指令、啟動(dòng)這些命令所指程序、并將結(jié)果反饋給用戶Linux最常用的shell是bash shell,也是紅帽企業(yè)默認(rèn)的shell1.2 交互式shell vs. Shell腳本交互式Shell:與用戶有交互,一步一致性Shell:封裝了大量執(zhí)行語句,很少與用戶交互1.3 啟動(dòng)ShellShell和子Shell(執(zhí)行bash命令)/
2、.bashrc文件用戶Shell啟動(dòng)時(shí),先執(zhí)行這個(gè)文件!修改文件,讓用戶進(jìn)入Shell之后,顯示本月日歷1.4 鍵入命令交互式Shell不斷地重復(fù)偵聽命令行的循環(huán)、解析被請(qǐng)求的命令、執(zhí)行任何被請(qǐng)求的操作,并且顯示結(jié)果。Shell偵聽鍵盤輸入,用回車鍵確認(rèn)輸入結(jié)束。1.5 命令歷史記錄historybash歷史記錄替換語 法替 換!前一個(gè)命令!n命令號(hào)n!-n倒數(shù)第n個(gè)命令!cmd最后用來啟動(dòng)cmd的命令在會(huì)話之間保存歷史記錄命令行歷史記錄保存在/.bash_history文件中只有當(dāng)shell退出時(shí),才會(huì)將命令寫入到文件中history命令的使用技巧Esc+.和alt+.輸入之前鍵入的命令行的
3、最后一個(gè)標(biāo)記,比如上一個(gè)命令行里最后用了一個(gè)很長的路徑,下一個(gè)命令直接輸入上邊任意一個(gè)命令即可重復(fù)輸入上一個(gè)很長的路徑crtl+r模仿了!cmdfc默認(rèn)打開vi編輯器,然后在里面輸入命令,退出編輯器時(shí),自動(dòng)執(zhí)行這個(gè)文件里面的命令示例1:使用歷史記錄縮短“編輯/編譯/執(zhí)行”循環(huán)示例2:使用alt+.示例3:禁用命令歷史記錄2 命令列表和腳本2.1 運(yùn)行多個(gè)命令Bash Shell通過使用”;”隔開命令(獨(dú)立的程序語句用分號(hào)隔開,這一點(diǎn)和英語很像)讓用戶在一個(gè)命令行中輸入多個(gè)命令cd /etc/X11; ls 等同于cd /etc/X11 ls2.2 在子Shell中運(yùn)行命令可以通過將命令擴(kuò)在括號(hào)
4、里允許用戶在子shell中簡(jiǎn)便的運(yùn)行命令。(cd /etc/X11; ls )2.3 Shell腳本介紹腳本的第一行必須指定向哪個(gè)解釋器發(fā)送指令,可以用一個(gè)名叫“shebang”(讀作shuh-bang),即一般寫作#!/bin/sh或者#!/bin/bash在運(yùn)行腳本前,你必須賦予腳本可運(yùn)行的權(quán)限腳本的位置一般用絕對(duì)路徑或相對(duì)路徑來引用腳本如/a.sh或者./a.sh(當(dāng)前路徑下的a.sh)一般把腳本放置/bin里,運(yùn)行腳本時(shí)則直接輸入腳本名稱即可返回值程序返回0意味著無論它要完成什么都是“成功”的,而返回值是0以外的數(shù)值則意味著某種形式的失敗$?存放著上一個(gè)命令的返回值有條件地運(yùn)行多個(gè)命令
5、&:命令1 & 命令2 :只有第一個(gè)命令成功(非0值)時(shí),才運(yùn)行第2個(gè)命令| :命令1 | 命令2 :只有第一個(gè)命令失敗(0)時(shí),才運(yùn)行第2個(gè)命令示例1:echo $?兩次,首先運(yùn)行l(wèi)s -l /etc/password示例2:顯示bash提示。修改/.bashrc,以后用戶stu登錄bash時(shí),顯示“hello Linux”3 Bash變量3.1 Shell變量基礎(chǔ)知識(shí)Shell變量由局部變量和環(huán)境變量組成以下是局部變量的設(shè)置,局部變量只存在于創(chuàng)建它的shell中變量用VAR=value語法建立和設(shè)置,用$VAR語法解析注意“=”兩邊不要用空格!3.2 Shell變量詳述變量名的構(gòu)成(A-Z
6、,a-z,0-9)和下劃線(_),但不能用數(shù)字開頭Shell變量區(qū)分大小寫示例1:變量值里有空格A=hello LinuxA=“helo Linux”示例2:變量名被最大解析A=appleecho “oh, I like them” $A_ode.txtecho “oh, I like them” $A_ode.txtunset取消變量名unset 變量名3.3 bash 變量常用的bash變量? 最新執(zhí)行命令的退出狀態(tài)$ 當(dāng)前shell的進(jìn)程id! 最新后臺(tái)命令的進(jìn)程idPPID shell父進(jìn)程的進(jìn)程idUID 當(dāng)前用戶的用戶id3.4 環(huán)境變量export VAR 將已經(jīng)設(shè)定好的VAR變
7、量“提升”為環(huán)境變量,使之有局部變量提升為全局變量su - 切換用戶,不繼承環(huán)境變量su 切換用戶,繼承環(huán)境變量unset 可以撤銷環(huán)境變量3.5 列出變量set:列出了shell變量和與shell相關(guān)的環(huán)境變量env:只列出了已經(jīng)被導(dǎo)出成為環(huán)境變量的變量3.6 常用的環(huán)境變量示例1:使用變量來引用常用字,比如: ,使之登錄bash即可用示例2:給PATH環(huán)境變量附加目錄/usr/sbin4 命令行替換4.1 命令行替換執(zhí)行命令前,bash shell會(huì)對(duì)命令進(jìn)行一些替換。有幾個(gè)類型的bash替換,如:路徑名替換(文件名匹配)和變量替換bash 中的命令行替換替 換語 法含 義歷史(histo
8、ry)!前一個(gè)命令行大括號(hào)指定的文本代字號(hào)用戶的主目錄變量$,$Shell和環(huán)境變量算術(shù)$(.)算術(shù)運(yùn)算命令替換,$()運(yùn)行在子shell中的命令輸出路徑名*,?,.,.文件系統(tǒng)中匹配的文件名歷史替換!n大括號(hào)替換大括號(hào)替換把一個(gè)單詞展開為多個(gè)單詞,一次一個(gè),循環(huán)替換“大括號(hào)”中的元素mkdir chap01,02,03,04mkdir chap01,02,03,04/html,text代字號(hào)替換:表示當(dāng)前的用戶主目錄username:表示username用戶主目錄變量替換$VAR:最簡(jiǎn)單的變量替換$VAR_df:變量名是整個(gè)單詞一部分時(shí),用括起來算術(shù)替換W=16H=82echo $( $W
9、* $H )bash只支持整數(shù)運(yùn)算命令替換命令替換讓用戶在子shell中運(yùn)行任意的命令,并把結(jié)果合并在命令行中mkdir report.$(date +%d%b%Y)或者 date +%d%b%Y mkdir report.$( !d )路徑名替換(文件名匹配)*?.4.2 引用和轉(zhuǎn)義字符bash shell 的引用和轉(zhuǎn)義語 法作 用避免下一個(gè)字符被shell解釋“”避免雙引號(hào)內(nèi)除了$,!和(反引號(hào))字符以外的其他字符被shell解釋避免單引號(hào)內(nèi)的字符被shell解釋錯(cuò)誤語句CAR=covettesecho little red $CAR 修正1:echo “l(fā)ittle red $CAR ”
10、結(jié)果?修正2:echo little red $CAR 結(jié)果?修正3: echo little red $CAR 修正4:echo little red $CAR 4.3 引號(hào)注意事項(xiàng)FOOD=Appleecho “wow! whoami sells $FOOD” for $!雙引號(hào):想照字面意思處理大多數(shù)標(biāo)點(diǎn),或者把字合并為單個(gè)標(biāo)記,但是仍能使用變量替換、命令替換或歷史替換單引號(hào):想照字面意思處理所有的標(biāo)點(diǎn),包括變量替換和命令替換反引號(hào):用來進(jìn)行引號(hào)內(nèi)命令輸出替換4.4 命令行替換的微妙之處find /etc -name *.conftouch a.conf b.conffind /etc
11、-name *.conf (find /etc -name a.conf b.conf)find /etc -name *.conf如果當(dāng)前目錄下有yum.conf,則只能找到這個(gè)如果你要把一個(gè)特殊的字符追加到命令中,你應(yīng)該用引號(hào)(或反斜線轉(zhuǎn)義)來保護(hù)這個(gè)字符,否則,bash會(huì)先進(jìn)行命令行替換!示例1:使用大括號(hào)替換。stu建立目錄aa,bb,cc,dd,然后分別在目錄里創(chuàng)建文件FF示例2:更多的tab補(bǔ)全。用戶名,會(huì)自動(dòng)補(bǔ)全用戶名$變量名,會(huì)自動(dòng)補(bǔ)全變量名示例3:引用拙劣的文件名touch make $ *fast* !touch make $ *fast* !5 自定義Shell5.1 s
12、hell的內(nèi)置命令由shell本身實(shí)現(xiàn)的命令稱作shell的內(nèi)置命令help:返回有關(guān)shell的版本信息,以及最后列出內(nèi)置命令help 內(nèi)置命令:查看內(nèi)置命令的詳細(xì)說明5.2 別名alias 別名=valuealias 無參:顯示系統(tǒng)當(dāng)前定義的別名alias 別名1 別名2 :查看別名信息unalias 別名:取消別名別名替換何時(shí)別名替換?bash shell只需要命令(即命令行上的第一個(gè)詞)就會(huì)尋找別名運(yùn)行命令bash shell替換是別名嗎,是的話展開別名是內(nèi)置命令嗎,是的話執(zhí)行是可執(zhí)行文件嗎,是的話執(zhí)行5.3 自定義bash提示符基本提示符:stustation stu$第二提示符:用
13、PS1和PS2自定義bash提示符PS1=“I m waiting”PS2=“Im still waiting”bash提示符中常用的轉(zhuǎn)義序列序 列替 換a終端響鈴d以“星期 月份 日期”格式顯示日期h直到第一個(gè)“.”的主機(jī)名T以12小時(shí)制HH:MM:SS格式顯示當(dāng)前時(shí)間u當(dāng)前用戶的用戶名W當(dāng)前工作目錄的最后一個(gè)目錄名!命令歷史記錄號(hào)碼$如果有效用戶ID為0,那么提示符為#,否則提示$nnn與八進(jìn)制數(shù)字nnn對(duì)應(yīng)的字符5.4 bash shell標(biāo)志和shell選項(xiàng)set:常用來修改使用單個(gè)字母標(biāo)志的shell行為shopt:配置shell選項(xiàng)shell標(biāo)記:set內(nèi)置命令與命令行選項(xiàng)一起使用
14、時(shí)(通常是這種情況),用這個(gè)命令來設(shè)置或復(fù)位shell標(biāo)志當(dāng)不參加參數(shù)調(diào)用時(shí),set命令顯示所有shell變量和它們的值主要用于shell腳本set -fls /etc/*.confset +fls /etc/*.confshell選項(xiàng):shopt內(nèi)置命令shopt shell選項(xiàng):查看shell選項(xiàng)狀態(tài),是否開啟shopt -s shell選項(xiàng):?jiǎn)?dòng)shell選項(xiàng)shopt -u shell選項(xiàng):關(guān)閉shell選項(xiàng)示例1:紅帽企業(yè)版Linux默認(rèn)別名示例2:用別名創(chuàng)建更安全的rm,mv和cp命令。修改/.bashrc,添加下面2行alias ts=“touch $(date +timesta
15、mp.%H:%M:%S”alias tsc=“find . -newer”alias tsc=find . -newer #為什么選擇這個(gè)?6 獲得shell腳本和shell初始化6.1 獲得腳本source 腳本 :執(zhí)行腳本命令. 腳本:執(zhí)行腳本命令當(dāng)“.”作為一行中的第一個(gè)字單獨(dú)出現(xiàn)時(shí),它是source命令的同義詞。當(dāng)“.”單獨(dú)出現(xiàn)在其他任何地方時(shí),它是指當(dāng)前目錄。6.2 bash初始化登錄shell:登錄到一臺(tái)機(jī)器上看到的第一個(gè)shell非登錄shell:其他shell為非登錄shell交互式shell:手動(dòng)啟動(dòng)的子shell或者新打開的X終端中的shell都是交互式shell非交互式s
16、hell:由于命令替換而被調(diào)用的shell等是非交互式shellbash啟動(dòng)腳本登錄shell/etc/profile /etc/profile.d/*.sh /.bash_profile /.bashrc /etc/bashrc非登錄shell(交互式)/.bashrc /etc/bashrc非登錄shell(非交互式)不獲得任何啟動(dòng)文件為什么有登錄和非登錄shell之分登錄shell在啟動(dòng)時(shí)已經(jīng)完成了初始化工作,非登錄shell沒必要再重新初始化一次為什么有交互式和非交互shell非交互式shell是為了得到結(jié)果而啟動(dòng)的子shell,為了保持和“父”shell環(huán)境的一致,所以非交互式shell不獲得啟動(dòng)腳本6.3 退出登錄shell:退出時(shí),登錄shell會(huì)獲得文件:/.bash_logout示例1:su命令su usrname:啟動(dòng)新的非登錄shell,只改變文件/.bashrcsu - usrname:啟動(dòng)新的登錄she
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第8單元 習(xí)作:有你真好 名師版2024-2025學(xué)年六年級(jí)語文上冊(cè)同步教學(xué)設(shè)計(jì)
- 旅客服務(wù)個(gè)性化與多元化市場(chǎng)需求滿足策略研究與實(shí)踐考核試卷
- 水產(chǎn)加工自動(dòng)化生產(chǎn)線考核試卷
- 橡膠在運(yùn)動(dòng)場(chǎng)地面材料的選擇考核試卷
- 木片加工自動(dòng)化與智能化技術(shù)考核試卷
- 毛皮制品市場(chǎng)營銷策略制定考核試卷
- 橡膠帶在戶外廣告固定材料的耐候性要求考核試卷
- 期刊出版的期刊經(jīng)營分析與風(fēng)險(xiǎn)控制考核試卷
- 歷史與社會(huì)人教版八下第六單元第一課《連通世界的新航路》教學(xué)設(shè)計(jì)
- 財(cái)務(wù)績效分析報(bào)告計(jì)劃
- 蘇科版五年級(jí)下冊(cè)勞動(dòng)第10課《便攜衣架》課件
- 【高中化學(xué)】認(rèn)識(shí)鹵代烴(備課PPT) 2022-2023學(xué)年高二化學(xué)備課設(shè)計(jì)(人教版2019選擇性必修3)
- 2023年浙江農(nóng)林大學(xué)博士入學(xué)考試英語
- 沖孔灌注樁澆注砼技術(shù)交底記錄
- 公司倒班調(diào)班表
- 觸電事故與急救理論知識(shí)考核試題及答案
- 光催化原理(經(jīng)典)課件
- 如何上好一堂課(課件)
- 人美版九年級(jí)(初三)美術(shù)下冊(cè)全套課件
- 乘客電梯安裝作業(yè)指導(dǎo)書
- 2022年4月自考英語二試題及答案含評(píng)分標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論