在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ shell 學(xué)習(xí)第一天
shell 學(xué)習(xí)四十五天---xargs
shell學(xué)習(xí)第三天
shell 學(xué)習(xí)十五天---join 連接字段
shell 學(xué)習(xí)第二天
shell 學(xué)習(xí)四十三天---臨時(shí)性文件的建立與使用
shell 學(xué)習(xí)第六天---小結(jié)
shell 學(xué)習(xí)三十三天---關(guān)于重定向
shell 學(xué)習(xí)二十九天---循環(huán)
shell 學(xué)習(xí)二十四天---提取開(kāi)頭或結(jié)尾數(shù)行
shell 學(xué)習(xí)第十天---sed 查找與替換
shell 學(xué)習(xí)第十一天---sed 正則的精確控制
shell 學(xué)習(xí)三十天---break,continue,shift,getopts
shell 學(xué)習(xí)---小結(jié)
shell 學(xué)習(xí)三十一天---函數(shù)問(wèn)題
shell 學(xué)習(xí)第四天---華麗的 printf 輸出
shell 學(xué)習(xí)三十五天---波浪號(hào)展開(kāi)與通配符
shell 學(xué)習(xí)十九天---文本塊排序
shell 學(xué)習(xí)十二天---行與字符串
shell 學(xué)習(xí)二十一天---重新格式化段落
shell 學(xué)習(xí)十八天---文本排序
shell 學(xué)習(xí)十三天---sed 案例分析
shell 學(xué)習(xí)四十一天---列出文件 ls 和 od 命令
shell 學(xué)習(xí)十七天---awk 命令
shell 學(xué)習(xí)三十六天---命令替換
shell 學(xué)習(xí)十六天---join 練習(xí)
shell 學(xué)習(xí)三十二天---read 讀取一行
shell 學(xué)習(xí)二十二天---計(jì)算行數(shù),字?jǐn)?shù)以及字符數(shù)
shell 學(xué)習(xí)小總結(jié)---本章小結(jié)
shell 學(xué)習(xí)第八天---擴(kuò)展正則表達(dá)式(ERE)
shell 學(xué)習(xí)四十二天---使用 touch 更新文件時(shí)間
shell 學(xué)習(xí)二十八天---case 語(yǔ)句
shell 學(xué)習(xí)三十九天---內(nèi)建命令
shell 學(xué)習(xí)第一天
shell 學(xué)習(xí)三十四天---printf 詳解
shell 學(xué)習(xí)二十六天---變量與算數(shù)
shell 學(xué)習(xí)三十八天---執(zhí)行順序和 eval
shell 學(xué)習(xí)四十四天---尋找文件
shell 學(xué)習(xí)二十五天---神器的管道符
shell 學(xué)習(xí)十四天---使用 cut 選定字段
shell 學(xué)習(xí)第五天---基本的I/O重定向
shell 學(xué)習(xí)四十天---awk 的驚人表現(xiàn)
shell 學(xué)習(xí)二十天---sort 的其他內(nèi)容以及 uniq 命令
shell 學(xué)習(xí)二十三天---打印
shell 學(xué)習(xí)第九天---分組
shell 學(xué)習(xí)四十八天---文件校驗(yàn)和匹配
shell 學(xué)習(xí)二十七天---退出狀態(tài)和 if 語(yǔ)句
shell 學(xué)習(xí)四十七天---文件比較 cmp,diff,patch
shell 學(xué)習(xí)第七天---基礎(chǔ)正則表達(dá)式(BRE)
shell 學(xué)習(xí)四十六天---文件系統(tǒng)的空間信息 df 和 du 命令
shell 學(xué)習(xí)三十七天---引用
shell 學(xué)習(xí)小結(jié)

shell 學(xué)習(xí)第一天

入門(mén)

當(dāng)我們需要計(jì)算機(jī)幫我們做點(diǎn)什么的是,最好是選對(duì)工具,就像你不會(huì)用文本編輯器來(lái)做支票簿的核對(duì),不會(huì)用計(jì)算器來(lái)寫(xiě)策劃方案一樣,所以說(shuō)程序語(yǔ)言用于不同的需求,本身沒(méi)有好壞之分。
shell 腳本常用于系統(tǒng)管理工作,或者用于結(jié)合現(xiàn)有的程序以完成特定的工作。一旦你寫(xiě)出了一個(gè)完成工作的辦法,就可以吧用到的命令串在一起,放進(jìn)一個(gè)單獨(dú)的程序或者腳本里,以后只要執(zhí)行改程序就能完成工作。如果寫(xiě)的程序很有用,那么別人可以一用該程序當(dāng)做一個(gè)黑盒來(lái)使用,他是一個(gè)可以完成工作的成虛,但是我們不必知道他是如何完成的(面向?qū)ο蟮姆庋b特性)。
首先來(lái)看看腳本語(yǔ)言和編譯語(yǔ)言的差異
大型的程序一般都是由編譯語(yǔ)言寫(xiě)成,例如:C++,Java,C 等。這些程序只要從源代碼(socure code)轉(zhuǎn)換為目標(biāo)代碼(object code),便能直接通過(guò)計(jì)算機(jī)來(lái)執(zhí)行。

編譯語(yǔ)言的優(yōu)點(diǎn):效率高,因?yàn)樗麄兌喟胧沁\(yùn)行于底層,所處理的是字節(jié)、整數(shù)、浮點(diǎn)數(shù)或其他機(jī)器層的對(duì)象。例如:在 C++ 里,很難實(shí)現(xiàn)目錄的整體移動(dòng)或者復(fù)制。

而腳本編程語(yǔ)言通常是解釋型的。這類(lèi)程序的執(zhí)行,是由解釋器度日程序代碼,并將其轉(zhuǎn)換成內(nèi)部的形式,再執(zhí)行。注意,解釋器本身是一般的編譯型程序。
通俗一點(diǎn):編譯語(yǔ)言需要編譯器,腳本語(yǔ)言需要解釋器,例如編寫(xiě) C++ 程序需要使用 VS,而編寫(xiě) HTML 代碼有網(wǎng)頁(yè)就行,因?yàn)榫W(wǎng)頁(yè)中有自帶的解釋器。

為什么要使用 shell 腳本
使用腳本編程語(yǔ)言的好處是,腳本語(yǔ)言多半運(yùn)行在比編譯語(yǔ)言還高得層級(jí),能夠情已處理文件與目錄之類(lèi)的對(duì)象。缺點(diǎn):一般情況下,效率比較低。不過(guò)權(quán)衡之下,腳本的執(zhí)行速度已經(jīng)很快,快到足以讓人感覺(jué)不到性能不高了。常用的腳本編程語(yǔ)言有:shelll,Ruby,javascript 等。
shell 似乎是不同版本的 linux 系統(tǒng)之間的通用功能。shell 腳本只要用心寫(xiě),就能應(yīng)用到很多系統(tǒng)上。
shell 腳本的過(guò)人之處
簡(jiǎn)單性:shell 是高級(jí)語(yǔ)言
可移植性:通過(guò) POSIX(可移植操作系統(tǒng)接口,是 IEEE 為要在各種 UNIX 操作系統(tǒng)上運(yùn)行的軟件,而定義 API 的一系列互相關(guān)聯(lián)的標(biāo)準(zhǔn)的總稱(chēng))所定義的功能,可以在不同的系統(tǒng)上執(zhí)行,無(wú)需需改。
開(kāi)發(fā)容易:短時(shí)間即可完成一個(gè)功能強(qiáng)大又好用的腳本(字啊以后的學(xué)習(xí)中就能看到)

說(shuō)了那么多,接下來(lái)就是一個(gè)簡(jiǎn)單的腳本。在 shell 交互界面輸入 who,得到以下信息(這是我的電腦):
root pts/0 2015-06-07 18:37 (192.168.199.114)
這行信息代表系統(tǒng)上有多少人登陸。類(lèi)似于 QQ 在線(xiàn)人數(shù)。
每個(gè)字段的含義分別是登入帳號(hào)(root),使用的
終端機(jī)(pts/0),登入時(shí)間以及從何處登入。
在大型的,多用戶(hù)的系統(tǒng)上(服務(wù)器的運(yùn)維上),所列出的列表可能很長(zhǎng)(一個(gè)頁(yè)面不夠顯示),你需要的信息或許可能滾出畫(huà)面,這是讓用戶(hù)查詢(xún)的困難。而這正是進(jìn)行自動(dòng)化的好時(shí)機(jī)。使用 wc(字?jǐn)?shù)計(jì)算)程序,特可以計(jì)算出行數(shù)(line),字符數(shù)(character),字?jǐn)?shù)(word)。使用 wc -l: 只列出行數(shù)。

who | wc -l 計(jì)算用戶(hù)個(gè)數(shù) -----> 我的電腦是一個(gè) 1
|(管道)符號(hào)可以在兩個(gè)程序之間建立管道(pipeline):who 的輸出,成了 wc 的輸入。
將此管道轉(zhuǎn)成一個(gè)獨(dú)立的命令。方法是把這條命令輸入一個(gè)一般的文件中,然后使用 chmod 為該文件設(shè)置執(zhí)行的權(quán)限。
#cat > nusers cat是輸出文件內(nèi)容的命令,>nusers表示把內(nèi)容送到文件 nusers 里而不是默認(rèn)的屏幕。但是這里 cat 后面沒(méi)有參數(shù),意味著 cat 將從鍵盤(pán)讀取數(shù)據(jù)輸入到 nusers 中,以 CTRL+D 結(jié)束。

^D                        Ctrl+D 表示 end-of-file  
#chmod +x nusers           讓文件擁有執(zhí)行的權(quán)限  
#./nusers                   輸出我們需要的結(jié)果。  

易尚展示了一個(gè)小型 Shell 腳本的典型開(kāi)發(fā)周期,首先,直接在命令行上測(cè)試。然后,一旦找到能夠完成工作的適當(dāng)語(yǔ)法,再將他們放進(jìn)一個(gè)單獨(dú)的腳本里,并未該腳本設(shè)置執(zhí)行的權(quán)限。之后就能直接使用該腳本了。