版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
雖然我們Linux的圖形界面已經(jīng)比較先進(jìn)了,絕大多數(shù)操作都完全可以用圖形界面來(lái)完成。但是就像吃過(guò)麥當(dāng)勞肯德基不等于吃過(guò)西餐一樣,連終端都沒(méi)進(jìn)去過(guò),你也好意思說(shuō)你會(huì)用Linux?因此蝸牛同學(xué)決定開(kāi)始學(xué)習(xí)Linux的命令行了。第6章命令行的使用6.1這就是命令行學(xué)習(xí)Linux命令行,離不開(kāi)一大堆的命令。不過(guò)在這之前,首先要對(duì)命令行有些了解。咱這就來(lái)說(shuō)說(shuō)這個(gè)命令行。6.1.1初識(shí)終端命令行并不神秘,打開(kāi)“應(yīng)用程序”|“附件”|“終端”,你看到的就是了,就是下圖這樣?!緝煞N老板】用戶對(duì)于我們操作系統(tǒng)來(lái)說(shuō)就相當(dāng)于老板。使用圖形界面的用戶和使用字符界面的用戶是兩種完全不同的老板?!靖鞣N終端】除了Gnome終端之外,還有很多其他的偽終端。像konsole,這是KDE環(huán)境下的默認(rèn)終端,就是圖1這樣子;xterm,是xwindow默認(rèn)的終端,樣子很簡(jiǎn)陋,什么也沒(méi)有,見(jiàn)圖2;還有urxvt,這是一個(gè)簡(jiǎn)潔快速的終端,樣子就是圖3的樣子。圖1圖2圖3【真假終端】虛擬終端就是把一臺(tái)全功能計(jì)算機(jī)(比如咱們的PC機(jī))通過(guò)軟件模擬成另外一臺(tái)計(jì)算機(jī)的終端設(shè)備,因此就叫做虛擬終端。偽終端根本就不會(huì)執(zhí)行命令,他們只是個(gè)界面而已,都是浮云。真正處理命令的不是他們,是Shell。終端只是負(fù)責(zé)提供一個(gè)輸入命令的交互界面而已,在里面運(yùn)行的命令并不歸終端軟件去解析,而是找到專門(mén)的命令行的程序,這種程序一般稱作Shell。6.1.2Shell的基本概念【Shell的作用】能夠把人類用戶的操作意圖轉(zhuǎn)述給我的軟件,這個(gè)軟件,就是Shell。他就像罩在我這個(gè)操作系統(tǒng)和人類用戶之間的一個(gè)外殼一樣,在我和人類之間相互轉(zhuǎn)達(dá)信息?!維hell的種類】Shell有很多種,有bash、csh、ksh等等,各有特點(diǎn)?!維hell的實(shí)質(zhì)】Shell,其實(shí)就是一個(gè)二進(jìn)制的程序,跟狐貍,跟gedit他們一樣。只不過(guò),Shell的任務(wù)不是上網(wǎng),也不是編輯文件,而是和用戶交流。6.1.3bash的工作(簡(jiǎn)單的Shell命令介紹)bash只是作為一個(gè)命令的傳達(dá)者而已,真正干活的是那些命令們。也就是ls、free這些家伙?!綽ash和圖形界面的工作性質(zhì)相同】這個(gè)工作過(guò)程其實(shí)跟Gnome的工作是很相似的,只不過(guò)Gnome是根據(jù)鼠標(biāo)的點(diǎn)擊位置來(lái)判斷用戶想要運(yùn)行哪個(gè)軟件,而bash是根據(jù)用戶輸入的字符來(lái)判斷的。【bash查找命令的艱辛歷程】那么bash去哪里找哪些命令程序呢?不知道您有沒(méi)有聽(tīng)說(shuō)過(guò)有個(gè)叫做環(huán)境變量的東西,跟Windows系統(tǒng)里的那個(gè)環(huán)境變量差不多,其中有個(gè)環(huán)境變量叫做PATH,這里面記錄著bash去找程序的路徑?!居欣щy找純爺們】man是專職命令解說(shuō)員,用英語(yǔ)介紹了一下ifconfig命令的使用方法,類似下圖這樣:6.2這么用Shell6.2.1理解目錄結(jié)構(gòu)【當(dāng)前目錄,家目錄】蝸牛進(jìn)入終端后,先習(xí)慣性的運(yùn)行了一下ls,看到了當(dāng)前目錄下的所有文件。所謂當(dāng)前目錄,就是用戶現(xiàn)在所在的目錄。那么蝸牛現(xiàn)在的當(dāng)前目錄是哪個(gè)目錄呢?就是他的家目錄,就是圖形界面的“位置”下的“主文件夾”那個(gè)目錄,也就是/home/lanwoniu這個(gè)目錄?!境鋈プ咦摺坎贿^(guò),畢竟不是什么事情都要在家目錄里做的,如果你在這個(gè)目錄里看夠了,想出去走走,到其他的目錄逛逛,這時(shí)候就需要cd命令了。cd命令跟光盤(pán)沒(méi)有關(guān)系,他是ChangeDirectory(改變目錄)的縮寫(xiě)。這個(gè)命令可以改變當(dāng)前的目錄,他就像出租車一樣,可以讓你到達(dá)你想去的任何一個(gè)目錄?!疽龑?dǎo)員】命令行中配有專業(yè)的引導(dǎo)員,告訴您您現(xiàn)在所在的位置,這位引導(dǎo)員就是pwd??蓜e一看名字就以為他是負(fù)責(zé)修改密碼的啊,其實(shí)他跟password一點(diǎn)關(guān)系都沒(méi)有,他是PrintWorkingDirectory的縮寫(xiě)。用法簡(jiǎn)單,就輸入pwd就行了,他就會(huì)告訴你現(xiàn)在所在的目錄。6.2.2重要的TAB——命令補(bǔ)全功能學(xué)習(xí)完了ifconfig命令,蝸牛同學(xué)又開(kāi)始研究fdisk,這是個(gè)磁盤(pán)分區(qū)命令。學(xué)習(xí)了這個(gè)命令之后,蝸牛又學(xué)習(xí)了查看網(wǎng)絡(luò)端口的netstat命令。漸漸的,蝸牛發(fā)現(xiàn)了一個(gè)問(wèn)題:隨著命令字符越來(lái)越多,敲起來(lái)是越來(lái)越費(fèi)勁了?!颈憬莞咝У逆I盤(pán)】作為從那個(gè)字符界面的時(shí)代走過(guò)來(lái)的我們Linux系統(tǒng),自然充分考慮的通過(guò)鍵盤(pán)操作整個(gè)系統(tǒng)的便捷和效率問(wèn)題。直到現(xiàn)在,使用鍵盤(pán)操作Linux都會(huì)擁有意想不到的高效率和成就感。其實(shí)我已經(jīng)很人性化了,就因?yàn)殒I盤(pán)上有個(gè)鍵——Tab【重要的Tab鍵】看一個(gè)人的鍵盤(pán),就可以猜測(cè)出他平時(shí)用電腦干什么。如果Tab鍵嚴(yán)重磨損,那估計(jì)就是個(gè)Linux高手了。因?yàn)樵贚inux的命令行下,Tab鍵起著命令補(bǔ)全的重要作用。比如說(shuō),你要運(yùn)行ifconfig命令,你可以不用完全輸入這8個(gè)字母,只要輸入ifc,然后按Tab鍵,bash就知道你要干什么了。因?yàn)樗锌梢赃\(yùn)行的命令里面以ifc開(kāi)頭的就只有ifconfig,所以當(dāng)你按下Tab鍵的時(shí)候,他就會(huì)替你寫(xiě)出完整的命令:ifconfig,就像下圖所示的效果。6.2.3翻舊賬——命令的history有了Tab,就讓用戶輸入新命令的時(shí)候省事了不少,還有一個(gè)history功能,可以讓用戶重復(fù)以前輸入過(guò)的命令的時(shí)候省心。他之所以能夠顯示曾經(jīng)運(yùn)行過(guò)的命令,不是因?yàn)樗猩端?,而是?fù)責(zé)接收用戶命令的bash會(huì)把每一條命令記錄下來(lái),寫(xiě)在~/.bash_history文件中。用戶輸入history的時(shí)候,bash再把這個(gè)文件打開(kāi),顯示出里面的內(nèi)容罷了。6.2.4moreorless——命令的分頁(yè)顯示【more】more是一個(gè)用來(lái)閱讀文本的命令行軟件,他有分頁(yè)顯示的功能。他可以從文件或數(shù)據(jù)流中獲取數(shù)據(jù),把所有要輸出的內(nèi)容先顯示出一屏來(lái),等著用戶按回車,之后再顯示第2屏,直到顯示完全部?jī)?nèi)容。當(dāng)然,用戶也可以不等顯示完全部就中途按q鍵退出?!緇ess】less實(shí)現(xiàn)的功能和more基本一樣,也是用來(lái)分屏輸出的,同行是冤家嘛。不同的是,less比more強(qiáng)大,因此,在我們這流行著這樣一句邏輯混亂的話:lessismorethanmore。more只能一頁(yè)一頁(yè)往下看,看完了就退出,不能向上翻。less可以上下翻頁(yè),看過(guò)去的東西可以按向上鍵或者PageUp鍵翻回去看,比起more更人性一點(diǎn)。另外,都看完了之后less是不會(huì)自動(dòng)退出的,一定要按q退出。【只做一個(gè)功能,但要做到最好】Linux軟件的設(shè)計(jì)理念是“只做一個(gè)功能,但要做到最好”。每個(gè)程序只專注于一種功能的實(shí)現(xiàn),而通過(guò)多個(gè)程序的組合可以實(shí)現(xiàn)任何功能。6.2.5通配符說(shuō)起命令行下省事的辦法,還有個(gè)事情不能不提,這就是通配符?!綝OS的通配符處理】過(guò)去用過(guò)“剁死”系統(tǒng)的同學(xué)可能知道,通配符就是“*”和“?”兩個(gè)符號(hào)?!?”號(hào)可以代表任意多個(gè)任意的字符,“?”號(hào)代表任意一個(gè)字符。不過(guò)剁死系統(tǒng)下通配符的實(shí)現(xiàn)是需要每一個(gè)命令對(duì)通配符都理解的。每一個(gè)可能需要支持通配符的命令都要自己實(shí)現(xiàn)對(duì)通配符的處理。重復(fù)開(kāi)發(fā),浪費(fèi)資源?!綥inux的通配符處理】我們Linux下的shell們就不這么懶了。就拿bash來(lái)說(shuō)吧,也一樣支持通配符,也是“*”號(hào)代表任意個(gè)任意字符,“?”號(hào)代表某一個(gè)任意字符。不過(guò),通配符的解釋都是由bash來(lái)做的。6.3Shell編程6.3.1把命令打包執(zhí)行【日復(fù)一日】這一日,蝸牛把一張SD卡插進(jìn)了電腦,然后運(yùn)行mount命令來(lái)掛載:$sudomount/dev/sdb1/mnt/掛載之后,把里面的東西復(fù)制了進(jìn)來(lái):$cp/mnt/*.JPG/home/lanwoniu/Picture/之后把這些圖片打成壓縮包,放到一個(gè)目錄里作為備份:$tar–czvf/home/lanwoniu/Backup/PIC20101001.tar.gz/mnt/*.JPG備份完了,把卡里的文件刪掉吧:$rm/mnt/*.JPG最后,卸載這個(gè)SD卡:$sudoumount/mnt/又一日,蝸牛又把這張SD卡插進(jìn)來(lái)了,里面有了新的文件。于是,他像前一次一樣的操作,又一次掛載:$sudomount/dev/sdb1/mnt/又一次復(fù)制:$cp/mnt/*.JPG/home/lanwoniu/Picture/又一次備份,又一次刪除,又一次卸載:$tar–czvf/home/lanwoniu/Backup/PIC20101002.tar.gz/mnt/*.JPG$rm/mnt/*.JPG$sudoumount/mnt/然后第3天……蝸牛終于忍不住了。每次都要輸入這么多命令很麻煩啊,能不能夠省事一點(diǎn)呢?【高級(jí)批處理】有一種叫做“批處理”的東西,可以把很多條命令寫(xiě)進(jìn)一個(gè).bat文件里,一起執(zhí)行,似乎很強(qiáng)大的樣子。我們Linux系統(tǒng)中有叫做Shell腳本的東西。這是我們Linux的驕傲,如果批處理文件是輛自行車的話,Shell腳本就是波音747!這么強(qiáng)大的東西,解決蝸牛同志現(xiàn)在遇到的問(wèn)題,那是綽綽有余的?!眷`活的Shell腳本】蝸牛每天打包備份的文件都是不一樣的,但是這個(gè)腳本里,備份文件的文件名是固定的呀,這樣的話每次蝸牛同志運(yùn)行完這個(gè)腳本還得去改一下文件名。就不能送佛送到西,幫忙幫到底么?當(dāng)然能,咱們來(lái)把腳本修改一下,修改之后,這個(gè)腳本就可以根據(jù)運(yùn)行當(dāng)天的日期來(lái)自動(dòng)為備份出來(lái)的文件命名了。6.3.2規(guī)范的Shell腳本雖然蝸牛同志用一個(gè)類似批處理的腳本文件解決了他每次都要手動(dòng)敲很多命令的煩惱,但是他寫(xiě)的這個(gè)所謂腳本還是太初級(jí)了,一點(diǎn)都不專業(yè)?!疽斜匾淖⑨尅孔鳛橐粋€(gè)專業(yè)點(diǎn)的腳本,一般總要在腳本里寫(xiě)清楚這個(gè)腳本是干什么的。這種給人類看得文字叫做注釋。【指明使用哪個(gè)Shell】有時(shí)候可以看到一些腳本的第一行是類似這樣的:#!/bin/bash這又是什么意思呢?有的同學(xué)說(shuō)了:我知道,這個(gè)以“#”開(kāi)頭,所以只是個(gè)注釋。但是,很不幸,這不是注釋。確實(shí),我說(shuō)過(guò),以“#”開(kāi)頭的是注釋。但是,“#!”放在一起還出現(xiàn)在腳本第一行,那就不是注釋啦!這行的意思是用來(lái)指明這個(gè)腳本所需要的Shell。【使用函數(shù)】另外,Shell腳本也像大多數(shù)編程語(yǔ)言一樣支持函數(shù)。如果你有一段代碼需要在腳本里執(zhí)行多次的話,不必反復(fù)的寫(xiě)多分,而是把它們寫(xiě)成一個(gè)函數(shù),直接調(diào)用即可。還比如這個(gè)自動(dòng)備份的腳本:#!/bin/bash把備份的動(dòng)作寫(xiě)成一個(gè)backup_picture()函數(shù)后,需要進(jìn)行備份的時(shí)候,就在腳本里調(diào)用這個(gè)函數(shù)就可以了。腳本在執(zhí)行的時(shí)候,會(huì)先略過(guò)寫(xiě)在寫(xiě)進(jìn)函數(shù)里的部分,直到執(zhí)行到某一行調(diào)用了這個(gè)函數(shù),再回來(lái)執(zhí)行。6.3.3在Shell中使用變量作為一種編程語(yǔ)言,少不了變量。我們Linux系統(tǒng)中強(qiáng)大的Shell自然也要支持變量?!居脩糇兞俊攀帜閬?lái)】Shell中的變量比較簡(jiǎn)單,隨意。不必聲明,隨用隨寫(xiě),信手拈來(lái)就是一個(gè)變量。比如在腳本中有如下語(yǔ)句:value=128這就獲得了一個(gè)內(nèi)容是“128”的變量。那么怎么使用這個(gè)變量呢?使用變量的時(shí)候需要在變量前加上“$”符號(hào),以表示這是一個(gè)變量。例如我們寫(xiě)這么個(gè)腳本:#!/bin/bashvalue=128echovalueecho$value把這段代碼存成一個(gè)文本文件(例如myscript.sh),并賦予可執(zhí)行權(quán)限,然后運(yùn)行,大約會(huì)得到如下的結(jié)果:$./myscript.shvalue128【變量類型——只有字符串】有的同學(xué)可能注意到了,我們的腳本里并沒(méi)有給變量明確聲明一個(gè)類型。這是因?yàn)镾hell的變量只有一種類型,就是字符串。沒(méi)有什么整、浮點(diǎn)之類的概念。咱們?cè)儆靡粋€(gè)簡(jiǎn)單的腳本說(shuō)明一下:#!/bin/bashnum=8num=$num+1echo$num運(yùn)行這個(gè)腳本的話,會(huì)看到最終打印出來(lái)的num的值是“8+1”,而不是“9”。因?yàn)閎ash這家伙壓根就沒(méi)長(zhǎng)數(shù)學(xué)的腦子!他只會(huì)把變量的值作為字符串處理?!经h(huán)境變量——哪都能用】所謂環(huán)境變量,有點(diǎn)類似于C語(yǔ)言里面的全局變量,它是在整個(gè)系統(tǒng)中有效的。用戶變量只在這一個(gè)腳本內(nèi)有效,出了這個(gè)腳本,這個(gè)變量就沒(méi)了。而全局變量一旦設(shè)定,可以在整個(gè)系統(tǒng)中的任何時(shí)候,任何地方進(jìn)行訪問(wèn)。要讓一個(gè)變量成為全局變量很簡(jiǎn)單,只要在變量賦值語(yǔ)句前加上export,類似這樣:#!/bin/bashexportenv_num=8echo$env_num運(yùn)行這個(gè)腳本,你自然會(huì)看到輸出一個(gè)“8”,當(dāng)然這并不是環(huán)境變量的特點(diǎn)。環(huán)境變量的特點(diǎn)是你運(yùn)行完這個(gè)腳本以后,再輸入命令:$echo$env_num依然會(huì)看到這個(gè)變量的值還是“8”?!咎厥庾兞俊欢逊?hào)】除了普通的用戶變量和環(huán)境變量外,還有一些特殊的變量。這些特殊變量特殊在幾方面:1.長(zhǎng)得就特殊。2.腳本執(zhí)行時(shí)自動(dòng)被設(shè)定。3.不可修改?!咀兞抠x值】變量賦值,除了可以直接寫(xiě)出初值之外,還可以將命令的運(yùn)行結(jié)果付給變量。比如咱們之前用到過(guò)的“`”符號(hào),可以調(diào)用指令并獲得該指令的輸出。那么同樣也可以把這個(gè)輸出賦值給一個(gè)變量。6.3.4Shell中的條件判斷所有編程語(yǔ)言,都少不了條件判斷語(yǔ)句。我們的Shell也是可以支持簡(jiǎn)單的條件判斷的。【if和fi】最常見(jiàn)簡(jiǎn)單的條件判斷,那就是if語(yǔ)句了。Shell中的if語(yǔ)句比較個(gè)性,if后面的“表達(dá)式”部分必須被足夠的空格分割的分崩離析才可以。if的工作,就是根據(jù)后面命令的返回值,來(lái)判斷程序應(yīng)該走哪條分支。另外,if語(yǔ)句一定要有對(duì)應(yīng)的fi作為結(jié)尾。(相當(dāng)于endif)【case】類似于C語(yǔ)言的switch,case語(yǔ)句。Shell中也有case語(yǔ)句來(lái)實(shí)現(xiàn)多分支的判斷。case的作用:就是用某個(gè)變量的值,去匹配下邊的幾個(gè)“)”符號(hào)前的字符串。如果某行匹配,則執(zhí)行該行的語(yǔ)句,直到發(fā)現(xiàn)雙分號(hào)“;;”停止。如果沒(méi)有找到匹配的,就執(zhí)行“*)”一行的內(nèi)容,遇到雙分號(hào)停止。6.3.5Shell中的循環(huán)語(yǔ)句【for循環(huán)】Shell腳本同樣支持for循環(huán)。不過(guò)跟多數(shù)語(yǔ)言的for循環(huán)的寫(xiě)法不太一樣的是,Shell腳本中的for循環(huán)有中很個(gè)性的格式:for變量in名字列表do命令列表done【while循環(huán)】while循環(huán)也是經(jīng)常用到的一種結(jié)構(gòu),它的用法大約如下:while循環(huán)條件;do 語(yǔ)句done6.3.6擴(kuò)展閱讀:Linux的文件權(quán)限這一回中,我們提到了寫(xiě)一個(gè)腳本,要賦予它可執(zhí)行權(quán)限,才能執(zhí)行。有的同學(xué)可能對(duì)這個(gè)權(quán)限還不是很明白,那咱們就仔細(xì)說(shuō)說(shuō)Linux下的文件權(quán)限?!竞?jiǎn)單的權(quán)限——只有3種】我們Linux系統(tǒng)中的權(quán)限相對(duì)簡(jiǎn)單很多,對(duì)于一個(gè)文件(包括文件夾),只有3種權(quán)限——讀、寫(xiě)、執(zhí)行?!久鎸?duì)的用戶——只有3類】現(xiàn)在,這3種權(quán)限我們明白了。但是權(quán)限離不開(kāi)對(duì)用戶的識(shí)別,Windows下可以細(xì)致的針對(duì)某一個(gè)用戶,或者某一個(gè)組來(lái)分配特定的權(quán)限,那Linux呢?本著簡(jiǎn)潔高效不折騰的原則,我們Linux系統(tǒng)只對(duì)3類用戶設(shè)置權(quán)限。就是文件的所有者、群組、其他?!驹O(shè)置權(quán)限的命令——chmod】chmod是專門(mén)用來(lái)修改文件權(quán)限的命令,它的使用格式大約是這樣:chmod[設(shè)置權(quán)限的對(duì)象]+/-[權(quán)限][文件]6.4正則表達(dá)式在使用Shell命令或者Shell編程的時(shí)候,經(jīng)常會(huì)用到一種叫做“正則表達(dá)式”的東西。6.4.1什么是正則表達(dá)式正則表達(dá)式(RegularExpression)是指一個(gè)用來(lái)描述或者匹配一系列符合某個(gè)句法規(guī)則的字符串的單個(gè)字符串。聽(tīng)著挺迷茫的吧,那說(shuō)簡(jiǎn)單點(diǎn):正則表達(dá)式就一段火星文似的字符串,這段字符串可以用來(lái)表示有一定規(guī)律的很多段字符串。最初的正則表達(dá)式,是出現(xiàn)在理論計(jì)算機(jī)科學(xué)的自動(dòng)控制理論和形式化語(yǔ)言理論中。6.4.2初識(shí)正則表達(dá)話說(shuō)那一天,蝸牛拿到一個(gè)腳本文件,里面大量使用了sed命令。蝸牛同學(xué)想要復(fù)制里面的所有sed命令,存入到另一個(gè)文件里,作為學(xué)習(xí)sed命令用法的參考。經(jīng)過(guò)學(xué)習(xí)和研究,蝸牛了解到有個(gè)grep命令可以完成這個(gè)操作,他的用法大約是這樣:$grep<字符串><文件名>6.4.3強(qiáng)大的正則表達(dá)式【使用反義字符】在收到MM傳來(lái)的足有3MB大的diary.txt文件后,蝸牛運(yùn)行了這個(gè)命令:$grep“\d\d\d\d\d\d\d\d”diary.txt咱已經(jīng)知道了,\d可以匹配一個(gè)數(shù)字。那么這個(gè)命令的意思很明白:查找diary.txt文件中,所有出現(xiàn)了連續(xù)8個(gè)數(shù)字的行。那么如果要精確匹配“有且只有8位的數(shù)字”該怎么辦呢?這就用到正則中的反義了。那么,對(duì)于蝸牛同志的需求,就應(yīng)該運(yùn)行這樣的命令:$grep“\D\d\d\d\d\d\d\d\d\D”diary.txt這個(gè)命令用人類語(yǔ)言描述就是:查找diary.txt文件中,所有出現(xiàn)了連續(xù)8個(gè)數(shù)字,且此8個(gè)數(shù)字的前后1個(gè)字符都不是數(shù)字的行。這樣就能更準(zhǔn)確的定位1個(gè)固定電話的號(hào)碼了?!臼褂弥貜?fù)】不過(guò)這樣寫(xiě)連續(xù)的8個(gè)“\d”還是有點(diǎn)累,其實(shí)這里可以精簡(jiǎn)一下,寫(xiě)成這樣:$grep“\D\d{8}\D”diary.txt這里面,“{8}”的意思,就是前一個(gè)字符重復(fù)8次?!臼褂弥欣ㄌ?hào)】蝸牛終于找出了所有的“出現(xiàn)了連續(xù)8個(gè)數(shù)字,且此8個(gè)數(shù)字的前后1個(gè)字符都不是數(shù)字”的行,并讓MM過(guò)目。結(jié)果,MM很不好意思的表示:這些好像都不是,那個(gè)電話號(hào)碼有可能寫(xiě)成了xxxxxxxx的格式,也沒(méi)準(zhǔn)是xxxx-xxxx,或者是帶區(qū)號(hào)的(xxx)xxxx-xxx……從昏厥中蘇醒過(guò)來(lái)的蝸牛同志毫不氣餒,繼續(xù)用正則表達(dá)式滿足著MM的需求。區(qū)號(hào)不區(qū)號(hào)的先不去管,先看看xxxxxxxx和xxxx-xxxx怎么匹配吧。其實(shí)也簡(jiǎn)單,使用中括號(hào)就可以了,像這樣:$grep“\D\d{4}[-\s]\d{4}\D”diary.txt這樣的正則表達(dá)式用人類語(yǔ)言描述就是“前面有且僅有4個(gè)數(shù)字,中間有一個(gè)橫杠‘-’或者空白,后面有且僅有4個(gè)數(shù)字的”這么一個(gè)字符串。6.4.4無(wú)處不在的正則表達(dá)式剛才咱們看著蝸牛同學(xué)折騰了這么半天,都是在使用grep命令時(shí)應(yīng)用正則表達(dá)式。其實(shí)正則表達(dá)式的用途相當(dāng)廣泛,基本上在我們Linux系統(tǒng)里,你能想到的地方都能夠支持正則表達(dá)式??梢赃@么說(shuō),在我們Linux系統(tǒng)里,只要你覺(jué)得某個(gè)地方可以用正則表達(dá)式來(lái)簡(jiǎn)化操作、提高效率,那么這個(gè)地方就一定支持正則表達(dá)式。蝸牛逐漸的開(kāi)始適應(yīng)了純終端的操作,于是他有個(gè)想法:在這個(gè)黑漆漆的界面中,搭建起一個(gè)可用的環(huán)境,這樣以后開(kāi)機(jī)就可以不進(jìn)圖形界面,直接用命令行的軟件來(lái)做各種事情,可以更高效,更快速。他決定,用一周的時(shí)間來(lái)完成這件事情。6.5多彩的Shell6.5.1蝸牛的計(jì)劃6.5.2命令行下的中文支持這周一,蝸牛開(kāi)始打造自己的命令行世界。各種命令對(duì)蝸牛來(lái)說(shuō)都已經(jīng)很熟悉了,就算有些不大熟練的命令,也可以很輕松的找到純爺們來(lái)講解。但是一來(lái)到黑漆漆的終端里面遇到的第一個(gè)問(wèn)題就是,沒(méi)有中文的支持?!就ㄟ^(guò)zhcon顯示和輸入中文】【通過(guò)fbterm顯示中文】【yong輸入法】6.5.3在Shell下播放音樂(lè)周二,蝸牛得到了比較順手的有中文環(huán)境的命令行之后,又開(kāi)始踏上了新的尋覓旅程——尋覓音樂(lè)?!窘K端里的窗口】moc是個(gè)字符界面的音樂(lè)播放軟件。我們知道,ASCII碼中有一些特殊的字符,什么橫杠啊、豎杠啊、拐彎杠啊什么的。用這些特殊的符號(hào),加上可控制的字符底色,可以拼接出又窗口效果的終端顯示的界面。【moc的操作】moc就是一個(gè)基于ncurses的,字符界面的音樂(lè)播放軟件。直接找超級(jí)牛力就可以安裝。蝸牛裝了之后趕緊運(yùn)行一下試試。雖然包名叫moc,不過(guò)運(yùn)行的命令是mocp,運(yùn)行起來(lái)之后就是下圖這個(gè)樣子:6.5.4在命令行中上網(wǎng)周三這天,蝸牛要解決一個(gè)關(guān)鍵的應(yīng)用——上網(wǎng)。平時(shí)在圖形界面下,最忙錄的就是狐貍妹妹,基本上只要電腦開(kāi)著,內(nèi)存里就少不了狐貍妹妹的身影。這要是命令行下不能上網(wǎng),那還不得把蝸牛同志憋屈死。不過(guò)在命令行畢竟是命令行,功能還是有限的,所以對(duì)瀏覽器的要求也不能太高,簡(jiǎn)單的文字的網(wǎng)頁(yè)還是沒(méi)問(wèn)題的。有那么幾個(gè)候選軟件是可以滿足蝸牛要求的:w3m,lynx,links【命令行中的瀏覽器——w3m】這3個(gè)都是可以直接叫超級(jí)牛力去裝的,很省事。但經(jīng)過(guò)蝸牛的試用,lynx和links對(duì)中文的支持都相對(duì)差點(diǎn),并且他們都不能顯示圖片,所以被pass了,w3m華麗勝出?!緅fbterm中的w3m】Ubuntu10.04中,開(kāi)啟fbterm后會(huì)因/dev/fb0設(shè)備被占用而導(dǎo)致w3m無(wú)法顯示圖片。后來(lái)?yè)Q了另一個(gè)終端,其實(shí)跟fbterm還有點(diǎn)關(guān)系,叫做jfbterm,也一樣可以支持中文。在jfbterm下,w3m終于可以正常顯示圖片了,雖然效果肯定不如狐貍的好看,但能在不開(kāi)圖形界面的情況下看到圖片,也算奢侈了,就是類似下圖這樣的效果。6.5.5在Shell下看圖片要看照片無(wú)疑還是需要framebuffer的支持,那么那個(gè)能夠利用framebuffer設(shè)備來(lái)顯示圖片的軟件是誰(shuí)呢?那可是一個(gè)大名鼎鼎的家伙——fbi??!是基于framebuffer的圖像查看器。這個(gè)查看器可以查看各種常見(jiàn)的圖片格式,全屏顯示、縮放、幻燈片模式播放、旋轉(zhuǎn),都沒(méi)問(wèn)題,更復(fù)雜的什么調(diào)節(jié)對(duì)比度啊,亮度啊啥的自然就不行了,畢竟人家只是個(gè)查看器嘛。6.5.6在Shell下播放視頻【觀看本地文件】也依然離不開(kāi)framebuffer。平時(shí)在圖形界面下蝸牛經(jīng)常用來(lái)看片的播放器是SMplayer,當(dāng)初咱們介紹這個(gè)家伙的時(shí)候就說(shuō)過(guò),他只是個(gè)前端界面,真正在后面默默無(wú)聞的進(jìn)行播放工作的是Mpayer,Smplayer能播放什么文件完全取決于Mplayer能播放什么文件,只是因?yàn)镸player總是在后臺(tái),人們都忽略了它的存在。現(xiàn)在,到了字符界面,M
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國(guó)自主機(jī)器人街道吸塵器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)商店可視化工具行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)數(shù)通硅光芯片行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)固體葡萄糖漿行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)房屋裝修和翻新行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)立式高溫反應(yīng)釜行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)輸注穿刺耗材行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)微波波導(dǎo)衰減器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)水飛薊素和水飛薊賓行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 居間合同協(xié)議書(shū)范文
- 《中國(guó)心力衰竭診斷和治療指南(2024)》解讀完整版
- 《檔案管理課件》課件
- 2024年度中國(guó)共產(chǎn)主義共青團(tuán)團(tuán)課課件版
- 2025年中考物理終極押題猜想(新疆卷)(全解全析)
- 脛骨骨折的護(hù)理查房
- 抽水蓄能電站項(xiàng)目建設(shè)管理方案
- 電動(dòng)工具培訓(xùn)課件
- 《智能網(wǎng)聯(lián)汽車智能傳感器測(cè)試與裝調(diào)》電子教案
- 視頻會(huì)議室改造方案
- 【中考真題】廣東省2024年中考語(yǔ)文真題試卷
- GB/T 32399-2024信息技術(shù)云計(jì)算參考架構(gòu)
評(píng)論
0/150
提交評(píng)論