亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

如何在Unix結(jié)果中抽取想要的參數(shù)

瀏覽:2日期:2024-06-14 10:06:25

大部分的Unix操作系統(tǒng)命令,其命令執(zhí)行后都會(huì)輸出比較詳細(xì)的參數(shù)。但是有時(shí)候系統(tǒng)工程師可能不需要這么詳細(xì)的信息。如date命令,其會(huì)顯示時(shí)間、日期、年數(shù)等等信息。但是系統(tǒng)工程師在開(kāi)發(fā)一些應(yīng)用程序的時(shí)候,可能只需要時(shí)間信息。為此就需要利用一些工具從中抽取相關(guān)的參數(shù)信息。其實(shí)不光光是在Unix系統(tǒng)管理中,在其他一些程序的開(kāi)發(fā)平臺(tái)中也會(huì)遇到這種情況。而其他一些平臺(tái)的話,他們則是通過(guò)字符串截取或者其他一些類(lèi)似的方法實(shí)現(xiàn)。而在Unix系統(tǒng)中則提供了一些比較專(zhuān)業(yè)的命令,用來(lái)操作位置參數(shù)。如set和shift命令。

在介紹這兩個(gè)命令的使用要點(diǎn)之前,筆者先給大家看一個(gè)截圖。如下圖所示,這張圖就是利用set命令來(lái)來(lái)操作位置參數(shù)。讓其從date命令中抽取部分結(jié)果。這個(gè)特性不僅可以格式化顯示結(jié)果,而且在shell中開(kāi)發(fā)一些應(yīng)用程序?qū)?huì)變得很有用。

一、set命令簡(jiǎn)介。

在Unix系統(tǒng)中,set命令時(shí)一個(gè)很有用的系統(tǒng)命令,其可以幫助系統(tǒng)管理員實(shí)現(xiàn)很多需求,如設(shè)置環(huán)境變量等等。在這里,其主要是用來(lái)實(shí)現(xiàn)這支位置參數(shù)。其實(shí)在Unix系統(tǒng)中,有很多種方法可以用來(lái)實(shí)現(xiàn)在命令結(jié)果中抽取特定的參數(shù)。如可以利用外部命令cut實(shí)現(xiàn)從一個(gè)輸出結(jié)果中截取一個(gè)字段的內(nèi)容。但是,利用cut命令來(lái)實(shí)現(xiàn)這個(gè)功能的話,就顯得有點(diǎn)業(yè)余了。既然Unix操作系統(tǒng)提供了其他一些更加專(zhuān)業(yè)的命令來(lái)實(shí)現(xiàn)這些功能,系統(tǒng)工程師為什么要舍近求遠(yuǎn)呢?

其實(shí)在Unix系統(tǒng)中的標(biāo)準(zhǔn)shell中就提供了一些內(nèi)部命令,來(lái)實(shí)現(xiàn)功能。其中set命令就是比較有代表性的一個(gè)命令。Set命令可以把參數(shù)賦值給$1、$2等位置參數(shù)。通過(guò)情況下,如果系統(tǒng)工程師要從程序的輸出結(jié)果中提取某些內(nèi)容則往往是利用這個(gè)命令來(lái)實(shí)現(xiàn)。

二、set命令的具體實(shí)現(xiàn)過(guò)程以及需要注意的內(nèi)容。

在談set命令的具體實(shí)現(xiàn)過(guò)程之前,筆者先跟大家介紹一些位置參數(shù)與命令顯示結(jié)果之間的關(guān)系。了解他們的內(nèi)在關(guān)系是系統(tǒng)工程師使用操作位置參數(shù)命令的前提。如上圖所示,利用date命令顯示出“Mon Apr 20 08:29:40 CST 2009系統(tǒng)的當(dāng)前時(shí)間的結(jié)果。這個(gè)結(jié)果從左到右其對(duì)應(yīng)的存儲(chǔ)位置分別為$1、$2等等,以此類(lèi)推。也就是說(shuō),這個(gè)顯示結(jié)果就好像其他開(kāi)發(fā)程序中的數(shù)組,系統(tǒng)利用空格來(lái)區(qū)分字段,并把每個(gè)字段的內(nèi)容依次存入到數(shù)組中。不過(guò)這里需要注意的是,其他開(kāi)發(fā)程序的數(shù)組往往是從0開(kāi)始。而在Unix系統(tǒng)中,這個(gè)位置參數(shù)則是從$1開(kāi)始。為此系統(tǒng)工程師如果要截取第一個(gè)字段內(nèi)容的話,則應(yīng)該是$1而不是$0。筆者是先學(xué)C等開(kāi)發(fā)語(yǔ)言平臺(tái),然后再學(xué)Unix系統(tǒng)。由于有了一個(gè)先入為主的觀念,為此后來(lái)在使用set命令的時(shí)候,經(jīng)常犯迷糊。故筆者提醒各位系統(tǒng)工程師,在這方面要特別注意顯示結(jié)果內(nèi)容與位置參數(shù)的對(duì)應(yīng)關(guān)系,第一個(gè)字段對(duì)應(yīng)的位置參數(shù)位$1。了解了這個(gè)內(nèi)容之后,則利用set命令來(lái)操縱顯示結(jié)果則就比較容易了。如上圖所示,通常情況下只需要通過(guò)簡(jiǎn)單的兩不就可以完成這個(gè)功能了。

第一步:利用set命令把它的參數(shù)轉(zhuǎn)換為位置參數(shù)。

在使用這個(gè)命令之前,筆者認(rèn)為系統(tǒng)工程師應(yīng)該先明白一個(gè)道理。就是默認(rèn)情況下,命令的輸出結(jié)果其往往都是顯示在終端中,或者通過(guò)重定向符號(hào)顯示在一個(gè)特定的文件中。但是無(wú)論是哪一種顯示方式,其往往不會(huì)跟位置參數(shù)關(guān)聯(lián)起來(lái)。如上圖中,一開(kāi)始運(yùn)行一個(gè)date命令時(shí),會(huì)輸出相應(yīng)的時(shí)間信息。此時(shí)這個(gè)輸出結(jié)果中有6個(gè)字段,但是其根本沒(méi)有跟位置參數(shù)形成一一對(duì)應(yīng)的關(guān)系。其只是一個(gè)簡(jiǎn)單的字符串而已。如果系統(tǒng)工程師要利用慚怍位置參數(shù)命令從這個(gè)結(jié)果沖抽取內(nèi)容的話,則一定需要把命令的結(jié)果轉(zhuǎn)換為位置參數(shù)。而set命令就是用來(lái)實(shí)現(xiàn)這個(gè)目的的。

如利用set ‘date’命令,就可以利用把它的參數(shù)結(jié)果轉(zhuǎn)化為位置參數(shù)。如此設(shè)置之后,在顯示的結(jié)果中系統(tǒng)就會(huì)把第一個(gè)字段賦值給位置參數(shù)$1,第二個(gè)字段賦值給位置參數(shù)$2,依次類(lèi)推。在這里筆者再?gòu)?qiáng)調(diào)一次,第一個(gè)位置參數(shù)為$1,而不是$0。因?yàn)楣P者以前犯這個(gè)錯(cuò)誤犯怕了,所以在這里不厭其煩的強(qiáng)調(diào)這個(gè)內(nèi)容,希望能夠引起大家的重視。

第二步:利用echo命令來(lái)顯示位置參數(shù)所代表的內(nèi)容。

把位置參數(shù)與輸出結(jié)果一一對(duì)應(yīng)之后,系統(tǒng)工程師就可以利用echo命令或者在應(yīng)用程序中直接引用位置參數(shù)從某個(gè)命令的輸出結(jié)果中截取相關(guān)的內(nèi)容。通常情況下,系統(tǒng)工程師可以一次抽取一個(gè)字段,也可以一次抽取多個(gè)字段。而且難能可貴的是,命令中還可以使用通配符。如果系統(tǒng)工程師需要顯示所有位置參數(shù)所對(duì)應(yīng)的內(nèi)容,也就是原有命令顯示的結(jié)果,則可以利用echo $*來(lái)實(shí)現(xiàn)。通配符*號(hào)就表示所有的位置參數(shù)。不過(guò)需要注意的是,在引用位置參數(shù)的時(shí)候,要把前面的$美元符號(hào)加上去。即echo $1 與echo 1會(huì)顯示兩個(gè)不同的結(jié)果。前者就是位置參數(shù)$1所代表的字段內(nèi)容;而后者直接顯示為1。因?yàn)?不是有效的位置參數(shù),而只是把它當(dāng)作一個(gè)簡(jiǎn)單的字符來(lái)處理。

三、set命令的高級(jí)應(yīng)用。

上面舉的例子其實(shí)只是set命令的一個(gè)教學(xué)例子。在實(shí)際工作中,這主要是用來(lái)讓大家理解set命令來(lái)截取輸出結(jié)果的基本原理。筆者現(xiàn)在要介紹的就是系統(tǒng)工程師在實(shí)際工作中經(jīng)常要用到的內(nèi)容,大家要睜開(kāi)眼看仔細(xì)了。

1、從其他文件中或者不規(guī)則分隔符的結(jié)果中截取字段。如上面所示的輸出結(jié)果中,各個(gè)字段時(shí)通過(guò)空格符號(hào)來(lái)分隔的。也即是說(shuō),set命令使用的參數(shù)分隔符默認(rèn)情況下采用的是空格符號(hào)分隔符。如果顯示的結(jié)果不是以空格符號(hào)分隔的,還是以分號(hào)或者橫桿來(lái)區(qū)分的(系統(tǒng)工程師平時(shí)遇到最多的就是利用分號(hào)或者/符號(hào)來(lái)分隔的內(nèi)容),那么就不能利用這個(gè)命令了嗎?其實(shí)系統(tǒng)工程師可以根據(jù)實(shí)際情況來(lái)設(shè)置這個(gè)分隔符。也就是說(shuō),系統(tǒng)工程師可以利用這個(gè)set命令來(lái)操作位置參數(shù),從而從任何輸出結(jié)果中(分隔符不同)截取所需要的內(nèi)容。

2、有利于備份的工作。其實(shí)在備份作業(yè)中,這個(gè)特性就非常有用。如筆者在Unix系統(tǒng)上簡(jiǎn)易部署了一個(gè)文件服務(wù)器。在這個(gè)服務(wù)器上,存儲(chǔ)有企業(yè)所有員工的日常工作文件。為此其日常的安全就顯得非常的重要。此時(shí)系統(tǒng)工程師可以采用日被分的方式,把備份文件保存為一個(gè)月。也就是說(shuō),在系統(tǒng)中創(chuàng)建1-31一共三十一個(gè)文件夾。然后把文件服務(wù)器中的備份文件按照日期一次保存到這三十一個(gè)文件夾中。也就是說(shuō)1日的備份文件保存在文件夾名字為1的文件夾中,2日的備分文件備份到名字為2的文件夾中,依次類(lèi)推。這個(gè)備份功能程序不難,系統(tǒng)工程師可以編寫(xiě)一個(gè)腳本程序來(lái)完成。困難的是,系統(tǒng)如何根據(jù)當(dāng)前的日期把備份文件保存到特定的文件夾中。此時(shí)就需要用刀這個(gè)set命令。系統(tǒng)工程師可以利用set命令來(lái)抽取系統(tǒng)日期中的第三個(gè)位置參數(shù)。然后根據(jù)這個(gè)參數(shù)創(chuàng)建文件夾(創(chuàng)建文件夾時(shí),如果文件夾已經(jīng)存在,則系統(tǒng)會(huì)自動(dòng)覆蓋這個(gè)文件夾)。就是這么簡(jiǎn)單,就可以完成按日來(lái)保存?zhèn)浞菸募恕?梢?jiàn),利用set命令截取某個(gè)輸出結(jié)果中的內(nèi)容這是一個(gè)基礎(chǔ)性的功能。他跟其他命令或者程序結(jié)合則可以發(fā)揮意想不到的效果。為此筆者建議各位系統(tǒng)工程師,要牢記如何通過(guò)set命令來(lái)從輸出結(jié)果中截取必要的參數(shù)。或許在什么時(shí)候就用的著了。另外需要注意的就是,set命令可以通過(guò)各種分隔符來(lái)截取相關(guān)的字段,而不僅僅只是支持一個(gè)空格分隔符,如可以從一個(gè)分號(hào)分隔的參數(shù)文件中獲取相關(guān)的參數(shù)等等。

標(biāo)簽: Unix系統(tǒng)
主站蜘蛛池模板: 成人在线免费观看视频 | 国产成人精品1024在线 | 亚洲精品国产第一区二区小说 | 麻豆视频在线免费 | 欧美激情精品久久久久久不卡 | 国产制服丝袜在线观看 | 国产精品手机视频一区二区 | 国产综合福利 | 久久久久久久久综合 | 免费一级欧美性大片 | 香蕉一区二区 | 欧美三级黄色大片 | 一级全黄男女免费大片 | 久久久国产这里有的是精品 | 日本一区二区三区有限公司 | 欧美韩国日本在线 | 亚洲日韩中文字幕天堂不卡 | 黄色片在线观看网址 | 久久精品视频7 | 成人a视频在线观看 | 韩国欧美一级毛片 | 亚洲最黄视频 | 97精品国产高清自在线看超 | 偷自拍第一页 | 拍拍拍美女黄色1000视频 | 国产一区中文字幕在线观看 | 成人免费看黄网址 | 亚洲人体一区 | 欧美久久亚洲精品 | 真人一级毛片 | 成人欧美一区二区三区视频xxx | 精品网站 | 午夜三级黄色片 | 中国黄色一级 | 国产精品九九视频 | 国产亚洲女在线线精品 | 国产亚洲精品观看91在线 | 青青草99热久久 | 很黄的网站在线观看 | 国产欧美在线一区二区三区 | 久久久久欧美国产精品 |