資源描述:
《我使用的linux命令-shell》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、我使用的linux命令-shell為什么要進(jìn)行shell編程 Linux系統(tǒng)中雖然有各種各樣的圖形界面工具,但shell仍然是一個(gè)非常靈活的工具。Shell不僅集合了大量命令,還是一門非常棒的編程語言。借助shell,大量任務(wù)能實(shí)現(xiàn)自動(dòng)化;shell特別擅長(zhǎng)系統(tǒng)管理任務(wù),尤其適合那些易用性、可維護(hù)性和便攜性比效率更重要的任務(wù)?! ∠旅妫屛覀円黄饋砜纯磗hell是如何工作的:建立一個(gè)腳本 Linux中有許多種不同的shell,通常我們使用bash(bourneagainshell)進(jìn)行shell編程,因?yàn)閎ash不僅免費(fèi)(自由)且易于使用。本文提供的腳本都用
2、bash(當(dāng)然大多數(shù)情況下,這些腳本同樣可以在bash的前輩,bourneshell中運(yùn)行)執(zhí)行。 如同其他語言一樣,我們可以使用任意一種文字編輯器,比如nedit、kedit、emacs、vi等來編寫shell腳本,它必須以如下行開始(必須放在文件的第一行):代碼:#!/bin/sh 符號(hào)#!用來告訴系統(tǒng)執(zhí)行該腳本的程序,本例使用/bin/sh。編輯完了,如果要執(zhí)行該腳本,還必須使其可執(zhí)行:代碼:chmod+xfilename 這樣輸入./filename便可執(zhí)行該腳本。注釋 shell腳本中以#開始的行表示注釋,直到一行的結(jié)束。我們真誠(chéng)的建議你在腳本
3、中使用注釋,這樣即便在相當(dāng)長(zhǎng)時(shí)間內(nèi)沒有使用該腳本,你也能在短時(shí)間內(nèi)明白該腳本的作用和工作原理;此外還有很重要的原因——有了注釋,更利于和別人分享你的腳本。變量 在其它編程語言中,你必須使用變量。shell編程中,所有變量都由字符串組成,并且不需要聲明。要給一個(gè)變量賦值,你可以這么寫:代碼:變量名=值 在變量名之前加一個(gè)$,就可以取出變量值:代碼:#!/bin/sh#對(duì)變量賦值:a="helloworld"#打印變量a的值:echo"Ais:"$a 挑個(gè)自己喜歡的編輯器,輸入以上內(nèi)容,并保存為文件first,然后執(zhí)行chmod+xfirst使其可執(zhí)行,最后輸
4、入./first執(zhí)行該腳本。其輸出結(jié)果如下:引用:Ais:helloworld 有時(shí)候變量名可能會(huì)和其它文字混淆,比如:代碼:num=2echo"thisisthe$numnd" 上述腳本并不會(huì)輸出"thisisthe2nd",只會(huì)打印"thisisthe";這是由于shell會(huì)去搜索變量numnd的值,而實(shí)際上這個(gè)變量此時(shí)并沒有值??梢允褂没ɡㄌ?hào)來告訴shell我們要打印的是num變量:代碼:num=2echo"thisisthe${num}nd" 上述腳本的輸出結(jié)果為:thisisthe2nd 有許多變量是系統(tǒng)自動(dòng)設(shè)定的,在后面用到這些變量時(shí)我們?cè)僮?/p>
5、說明。如果你需要處理數(shù)學(xué)表達(dá)式,那么得借助諸如expr的程序。 除了僅在腳本內(nèi)有效的普通shell變量外,還有環(huán)境變量,即那些由export關(guān)鍵字處理過的變量。本文不討論環(huán)境變量,因?yàn)橐话阒辉诘卿浤_本中使用環(huán)境變量。Shell命令和流程控制 在shell腳本中可以使用三類命令:1)Unix命令: 在shell腳本中可以使用任意unix命令,不過實(shí)際上最為常用的通常是那些文件和文字操作相關(guān)的命令。下面介紹一些常用命令語法及功能: echo"sometext":在屏幕上輸出信息 ls:文件列表 wc–lfilewc-wfilewc-cfile:分別計(jì)算文
6、件的行數(shù)(line)、單詞數(shù)(word)和字符數(shù)(character) cpsourcefiledestfile:文件拷貝 mvoldnamenewname:重命名文件或移動(dòng)文件 rmfile:刪除文件 grep'pattern'file:在文件內(nèi)搜索字符串或和正則表達(dá)式匹配的字符串 cut-bcolumnfile:將指定范圍內(nèi)的文件內(nèi)容輸出到標(biāo)準(zhǔn)輸出設(shè)備(屏幕)上。比如:輸出每行第5至9個(gè)字符cut-b5-9file.txt,注意不要和cat命令混淆,這是兩個(gè)完全不同的命令 catfile.txt:輸出文件內(nèi)容到標(biāo)準(zhǔn)輸出設(shè)備(屏幕)上 files
7、omefile:取得文件somefile的文件類型 readvar:提示用戶輸入,并將輸入內(nèi)容賦值給變量var sortfile.txt:對(duì)file.txt文件所有行進(jìn)行排序 uniq:只輸出文件中內(nèi)容不一致的行,如:sortfile.txt
8、uniq expr:進(jìn)行數(shù)學(xué)運(yùn)算,如要進(jìn)行2+3的運(yùn)算,命令為:expr2"+"3 find:搜索文件,如根據(jù)文件名搜索:find.-namefilename-print tee:將數(shù)據(jù)輸出到標(biāo)準(zhǔn)輸出設(shè)備(屏幕)和文件,比如:somecommand
9、teeoutfile basenamefile:返回不包含路
10、徑的文件名,如:base