資源描述:
《高級(jí)bash腳本編程指南》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、高級(jí)Bash腳本編程指南:從一個(gè)簡(jiǎn)單的script出發(fā)成于堅(jiān)持,敗于止步開(kāi)始shell腳本編程學(xué)習(xí),路途遍布荊棘啊,O(∩_∩)O~,開(kāi)始吧,這是“高級(jí)Bash腳本編程指南”為我們量身打造的“HelloWorld”,其實(shí)也不算,因?yàn)檫@個(gè)只是我們無(wú)比熟悉的命令的堆疊嘛!O(∩_∩)O清除/var/log下的log文件[html]?viewplaincopy1.#?清除,當(dāng)然要使用root身份來(lái)運(yùn)行這個(gè)腳本.??2.??3.cd?/var/log??4.cat?/dev/null?>?message
2、s??5.cat?/dev/null?>?wtmp??6.echo?"Logs?cleaned?up."??像分析helloworld一樣,我們也說(shuō)下這個(gè)shell腳本吧!這根本就沒(méi)什么稀奇的,只不過(guò)是命令的堆積,來(lái)讓從console或者xterm中一個(gè)一個(gè)的輸入命令更方便一些.好處就是把所有命令都放在一個(gè)腳本中,不用每次都敲它們.這樣的話,這個(gè)腳本就成為了一個(gè)工具,對(duì)于特定的應(yīng)用來(lái)說(shuō),這個(gè)腳本就很容易被修改或定制.其中,第一條#后面帶一句話,你該猜到了,沒(méi)錯(cuò),這是注釋?zhuān)瑢?lái)你會(huì)經(jīng)常和他打交道,
3、先見(jiàn)下面吧cd/var/log這簡(jiǎn)單,我天天在用,我就別廢話了cat/dev/null>messages這個(gè)前面簡(jiǎn)單我也天天用,不過(guò)后面是什么,有可能就像“仝”這個(gè)字,上下分開(kāi),一年級(jí)小學(xué)生都會(huì),可是這樣拼在一起,就不一定了,具體是什么字自己去查哈,這里告訴這條語(yǔ)句的作用是把cat/dev/null得到的內(nèi)容保存到messages中,先混個(gè)臉熟吧下一句你該樂(lè)了,該學(xué)了一招嘛但是這里我還是決定多花點(diǎn)時(shí)間說(shuō)說(shuō)這里的這個(gè)/dev/null,因?yàn)橐苍S你還不知道為什么要保存到messages和wtmp中,
4、而且cat的為什么是/dev/null在Linux操作系統(tǒng)中/dev/null和/dev/zero是兩個(gè)相似卻又很特殊的文件,特別是在shell腳本開(kāi)發(fā)和系統(tǒng)運(yùn)維過(guò)程中會(huì)經(jīng)常用這兩個(gè)文件,因此作為L(zhǎng)inux系統(tǒng)工程師,你必須了解這兩個(gè)文件的區(qū)別和用法。一、/dev/null的用法:我們可以把/dev/null文件看作”黑洞”,它非常等價(jià)于一個(gè)只寫(xiě)文件,所有寫(xiě)入/dev/null文件的內(nèi)容都會(huì)丟失,而從/dev/null文件中也讀取不到任何內(nèi)容。然而,也正因?yàn)檫@些特點(diǎn),在shell腳本開(kāi)發(fā)和命令行
5、維護(hù)時(shí),/dev/null文件就可大展身手,顯得非常的有用。1.禁止標(biāo)準(zhǔn)輸出例如:cat查看$filename文件,其回顯信息將為空[html]?viewplaincopy1.#?cat?$filename?>?/dev/null??2.禁止標(biāo)準(zhǔn)錯(cuò)誤例如:rm刪除文件時(shí),若$badname文件不存在,那么如下的方式則會(huì)過(guò)濾回顯的錯(cuò)誤信息[html]?viewplaincopy1.#?rm?$badname?2>?/dev/null??3.禁止標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤的輸例如:cat查看$filenam
6、e文件[html]?viewplaincopy1.#?cat?$filename?2>/dev/null?>/dev/null??#如果”$filename”不存在,將不會(huì)有任何錯(cuò)誤信息提示.#如果”$filename”存在,文件的內(nèi)容不會(huì)打印到標(biāo)準(zhǔn)輸出.#因此上面的代碼根本不會(huì)輸出任何信息.4.清除日志文件內(nèi)容例如:[html]?viewplaincopy1.#?cat?/dev/null?>?/var/log/wtmp??2.#?cat?/dev/null?>?/var/log/messag
7、es??#:>/var/log/messages有同樣的效果,但不會(huì)產(chǎn)生新的進(jìn)程.(因?yàn)?是內(nèi)建的)這里你還要知道怎么就會(huì)清空了wtmp和messages這兩個(gè)文件呢?因?yàn)槟鉩at/dev/null的結(jié)果為空啊,然后你又把空內(nèi)容保存到這兩個(gè)文件中,不就相當(dāng)于清空嘛5./dev/null的特殊用法,程序打印的日志將不再記錄,避免系統(tǒng)空間被不需要的日志所占用稍微高級(jí)一點(diǎn)的,例如:[html]?viewplaincopy1.#?ln?-s?/dev/null?~/.netscape/cookies??
8、將該cookie的日志文件鏈接到/dev/null,那么往該文件中寫(xiě)入的內(nèi)容都將被拋棄二、/dev/zero的用法:/dev/zero和/dev/null一樣,也是一個(gè)偽文件,但/dev/zero實(shí)際上能產(chǎn)生連續(xù)不斷的null的流(二進(jìn)制的零流,而不是ASCII型的),寫(xiě)入/dev/zero的輸出會(huì)丟失不見(jiàn),而從/dev/zero讀出一連串的null也比較困難,雖然這也能通過(guò)dd或一個(gè)十六進(jìn)制編輯器來(lái)做到,/dev/zero主要的用處是用來(lái)創(chuàng)建一個(gè)指定長(zhǎng)度用于初始化的空文件,它通常都是配合dd命