版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
什么是S這應(yīng)該是個(gè)蠻有趣的話題:『什么是S?』相信只要摸過計(jì)算機(jī),對于操作系統(tǒng)(不論是Linux、Unix或者是Windows)有點(diǎn)概念的朋友們大多聽過這個(gè)名詞,因?yàn)橹灰小翰僮飨到y(tǒng)』那么就離不開S 這個(gè)東西。不過,在討論S之前,我們先來了解一下計(jì)算機(jī)的kernel()的控制工作了!了解了嗎?沒錯(cuò)!也就是說,須要透過『S』將我們輸入的指令與Kernel溝通,好讓Kernel可以控制硬件來正確無誤的工作!基本上,我們『S』控制一些kernel提供的『工具Utility』來操控硬件替我們正確的工作。再進(jìn)一步來說,由于kernel聽不懂人類的語言,而人類也沒有辦法直接記得kernel的語言,所以兩者的溝通就得藉由s來支持了!(其實(shí)早期的DOS的文字接口也是使用s來溝通呀!那個(gè)s的名稱就叫做 ,還記得嗎?^_^)以字面上的意思來說,kernel是『』的意思,而S 說,s 是最外頭的咚咚!而kernel乃是最內(nèi)層的的咚咚啦!是操作系統(tǒng)的最底層的東西!這個(gè)里頭包括了各種的支持硬件的工具!當(dāng)然啰,如果你的硬件太新,而你的kernel并沒有支持的話,那么很抱歉,你的S 工作的,卻是s喔!因此,有時(shí)候你的s搞了老半天,硬件卻不能工作的時(shí)候,請注意,您的『』是否正確呢?阿!扯遠(yuǎn)了!這是kernel章節(jié)才要說的東西?? 嘛要學(xué)習(xí)S呢常常聽到這個(gè)問題:『嘛要學(xué)習(xí)s呢?不是已經(jīng)有很多的工具可以提供我設(shè)定我的主機(jī)了?我為何要花這么多時(shí)間去學(xué)指令呢?不是以X-Window按一按幾個(gè)按鈕就可以搞定了嗎?為什么要這么麻煩?』唉?還是得一再地強(qiáng)調(diào),X-Window還有Web接口的設(shè)定工具例webmin是真的好用的家伙,他真的可以幫助我們很簡易的設(shè)定好我們的主機(jī),甚至是一些很進(jìn)階的設(shè)定都可以幫我們搞定。但是VBird在序章里面也已經(jīng)提到過相當(dāng)多次了,X-Window的接口雖然親善,功能雖然強(qiáng)大,而web接口的工具也可以提供我們很友善的服務(wù),但其它套件管理模塊(例如tarball而非rpm等等)時(shí),就會(huì)造成設(shè)定的困擾了,此外,遠(yuǎn)題,因此,s真的是得學(xué)習(xí)的一項(xiàng)工具。而且,他可以更深入Linux,更了解他,而不是只會(huì)按一按鼠標(biāo)而已!所謂『天助自助者!』多摸一點(diǎn)文字模式的東西,會(huì)讓你與LinuxVBird的觀點(diǎn)來看,多學(xué)一點(diǎn)總是好的,尤其我們可以有備而無患嘛!甚至學(xué)的不精也沒有OK啦!畢竟沒有人要您一定要被這么多的內(nèi)容啦!了解概念就很了不起此外,如果您真的有心想要將您的主機(jī)管理的好,那么良好的s 啦!就VBird來說,我管理的主機(jī)雖然還不算多,只有區(qū)區(qū)不到十部,但是如果每部主機(jī)都要花上幾十分鐘來查閱他的logfile以及相關(guān)的信息,那么我可能會(huì)瘋掉!基本上,也太沒有效率了!這個(gè)時(shí)候,如果能夠藉由s 提供令重導(dǎo)向(或稱數(shù)據(jù)流重導(dǎo)向),以及管線命令,呵呵!那么我分析logfile只要花費(fèi)不到十分鐘就可以看完所有的主機(jī)之重要信息了!相由于學(xué)習(xí)s的好處真的是多多啦!所以,如果您是個(gè)系統(tǒng)管理員,或者有心想要管理系統(tǒng)的話,那么s這個(gè)東西與sscripts這個(gè)東西,真的真的有必要看一看!BASHS知道什么是S之后,那么我們來了解一下Linux使用的是哪一個(gè)s呢?什么!哪一個(gè)?難道說s不就是『一個(gè)s嗎?』哈哈!那可不!由于早年的Unix年代,發(fā)展者眾,所以由于s依據(jù)發(fā)展者的不同就有許多的版本,例如常聽到的BourneS(sh)、在Sun里頭預(yù)設(shè)的CS 、商業(yè)上常用的KS、,還有TCSH等等,每一種S都各有其特點(diǎn)。至于Linux使用的這一種版本就稱為『BourneAgainS(簡稱)』,這個(gè)S是BourneS的增強(qiáng)版本,也是基準(zhǔn)于GNU的架構(gòu)下發(fā)展出來的在介紹s的優(yōu)點(diǎn)之前,先來說一說s的簡單歷史吧:第一個(gè)流行的s是由StevenBourne發(fā)展出來的,為了紀(jì)念他所以就稱為Bournes,或直接簡稱為sh!而后來另一個(gè)廣為流傳的s是由大學(xué)的BillJoy設(shè)計(jì)依附于BSD版的Unix系統(tǒng)中的s,這個(gè)s的語法有點(diǎn)類似C語言,所以才得名為Cs,簡稱為csh!由于在學(xué)術(shù)界Sun主機(jī)相當(dāng)?shù)凝嫶?,而Sun主要是BSD的分支之一,所以Cs也是另一個(gè)很重要而且流傳很廣的s之一(因?yàn)樘嗟某绦蛟O(shè)計(jì)師使用的就是C語言啦?。?!好了,那么BASH是怎么一回事呢?這個(gè)s是GNU計(jì)劃中重要的工具軟件之一,目前也是GNU操作系統(tǒng)中標(biāo)準(zhǔn)的s,他主要兼容于sh,并且依據(jù)一些使用者需求,而加強(qiáng)的s版本,可以說目前幾乎所有的Linuxdistribution都是使用bash作為管理的主要s!因此,不論您使用的是那個(gè)distribution,你都難逃需要學(xué)習(xí)bash的宿命啦!那么這個(gè)s有什么好處,干嘛L(fēng)inux要使用他作為預(yù)設(shè)的s呢?BASH主要的優(yōu)點(diǎn)有命令編修能力(DOSdoskey功能使用sh里,個(gè)認(rèn)為當(dāng)棒一個(gè)能就『能用過指令』這功能真的當(dāng)?shù)?!因我只在指列按上下』可以找前一輸入指令!而在Mrke.0設(shè)的令功能以到達(dá)0個(gè)!也是說你曾下過的指都被錄下了,錄的在的家 的.bhitoy!過需~sstry執(zhí)行指令被暫在暫存中當(dāng)您功注銷系后,指令才會(huì)記錄到.sstry查詢曾經(jīng)做過的舉動(dòng)具!如此來也個(gè)煩,就如果駭了那么只要你曾經(jīng)執(zhí)行過指令剛好的指又跟統(tǒng)有(例直輸入MSQL指列上面)么很易就的x主!所最好是將記錄的指數(shù)目減小一點(diǎn)較好!指令補(bǔ)全:如果在執(zhí)行命令的時(shí)候不想按下太多的按鍵,例如指令pcprofiledump夠長吧!好了,那么如果你輸入了pcprofile之后,再按下[Tab]按鍵的話,那么bash馬上會(huì)自動(dòng)的將后面的dump接上來!那如果有重復(fù)的指[Tab]將會(huì)把所有重復(fù)的指令給他列出來啰!那么就有個(gè)特殊的案例啦,就是『直接在提示字符后面連按兩次<tab>鍵,則系統(tǒng)會(huì)將所有可以使用的指令都列出來!』那么如果要知道目前系統(tǒng)里面,所以b開頭的指令呢?呵呵!就是按下b之后,連按兩次<tab>就可以知道啦!文件名稱補(bǔ)全:此外,如果你用vi來某個(gè)時(shí),例如/etc/man.config這個(gè)好了,那么您可以輸入vi/etc/man.之后,直接按下<tab>按鍵,以,有事沒事,在bashs ,多按幾次<tab>是一個(gè)不錯(cuò)的習(xí)慣 就必須要下達(dá)ls-al這樣的指令列,唉!真麻煩,有沒有更快的取代方式?呵呵!就使用命令別名呀!例如我最喜歡直接以lm這個(gè)自訂令來取代上面令,也就是說,lm會(huì)等于ls-al這樣的一個(gè)功能,嘿!那么要如何作呢?就使用alias即可!你可以在指令列輸入alias就可以知道目前令別名有哪些了!也可以直接下aliaslm='ls-行!而不怕不使用了[Ctrl]+C來停掉該程序!真是好樣的!此外,也可以在單Sscripts的強(qiáng)大功能在OS年代記得一堆令寫一的所的『次檔』?在x的sscrts該并且以透對談互式方來進(jìn)行機(jī)的測工!也可以藉由s提的環(huán)變量相關(guān)令來行設(shè)哇!整設(shè)計(jì)來幾就是一scrsOS底下需要序語才能的東,在x使簡的sscrts就以你達(dá)[root@test/root]#command[-options]parameter1parameter2指 選 參數(shù)[root@test/root]#command[-options]parameter1parameter2指 選 參數(shù) 參數(shù)command為指令的名稱,例如變換路徑的指令為cd等等中刮號(hào)[]并不存在于實(shí)際的指令中,而加入?yún)?shù)設(shè)定時(shí),通常為-號(hào),有時(shí)候完整名稱會(huì)輸入--符號(hào)parameter1parameter2..為依附在option后面的參數(shù)command的參數(shù)command,-options,parameter1..這幾個(gè)咚咚中間以空格來區(qū)分,不論空幾格 都視為一格指令太長的時(shí)候,可以使用\符號(hào)來跳脫[Enter]符號(hào),使指令連續(xù)到下一行。[root@test/root]#ls-al/root<==以ls列出/root這 中的隱藏文件與相關(guān)的屬性參數(shù)[root@test/root]#./configure--prefix=/usr/local--with-tcp_wrappers>--with- <==這兩行實(shí)際上是同一行的指令,但是加上\跳脫符號(hào)后,指令可以連續(xù)到下一行[root@test/root]# -al/root<==這個(gè)指令與第一個(gè)相同,空格符不論幾個(gè),僅視為一個(gè)來處很簡單吧!OK!那么再來一個(gè)問題:『S是什么時(shí)候開始接管Linux主機(jī)的?。俊晃覀儥C(jī)便進(jìn)入等待使用者login的狀態(tài)。當(dāng)使用者輸入了賬號(hào)與,并且順利的pass之后,經(jīng)過了s的環(huán)境變量功能,最后,使用者進(jìn)入自己的『家 』之后,例如root 在/root,一般使用者的家 則在/etc/passwd這個(gè)里面規(guī)定,那么主機(jī)就已經(jīng)丟了一個(gè)程序稱為bash的給你操作啰!變量與變量的設(shè)定:echo,env,set,變量設(shè)定規(guī)則,export,再繼續(xù)研究BASH之前,我們要就變量這個(gè)東西來討論一番,因?yàn)樵谥鳈C(jī)里面有太多的數(shù)據(jù)需要進(jìn)行存取了,而這些數(shù)據(jù)都是一些服務(wù)所必須的,例如mail的存取路徑在/var/spool/mail、家 預(yù)設(shè)在/home/useraccount等等,當(dāng)然我們可以改變這些個(gè)變量,但是如果該變量舉個(gè)簡單的例子來說sendmailsmtp存放mail路徑是/etc/profile里頭來設(shè)定的,而當(dāng)我修改了上面這一個(gè)咚咚,然后重新開機(jī)之后,嘿嘿嘿嘿!我的郵件就可以存放到不同的路徑去了!而且不會(huì)有問題!可以順利的『在Linux主機(jī)上面』收發(fā)。然而問題發(fā)生在pop3這個(gè)服務(wù)上面,由于pop3的預(yù)設(shè)路徑是在sourceode里頭,而且就正是/var/sool/ail這個(gè)路徑,也就是說,不論我怎么修正我的『變量』,pop3都不為所動(dòng)!唉~真慘,所以就無法直接以pop3來收信了(例如utLook就不能工作了)!會(huì)發(fā)生不接受的問題呢!此外,例如我們在執(zhí)行程序的時(shí)候,系統(tǒng)怎么知道你的ls這個(gè)指令放在哪里?原來是有PATH這個(gè)變量,系統(tǒng)會(huì)透過這個(gè)變量里面所設(shè)定的路徑去依序?qū)ふ以撝噶钕到y(tǒng),如果找不到的話,那么才在屏幕上顯示『commandnotfound』字樣!這些還都只是系統(tǒng)預(yù)設(shè)的變量的目script(批次文件)時(shí),有些數(shù)據(jù)因?yàn)榭蓅cript被使用在相當(dāng)多的script里面的所有路徑,那么我一定會(huì)瘋掉!這個(gè)時(shí)script了!方便的很!所以,良好的程序設(shè)計(jì)師都會(huì)如果說的學(xué)理一點(diǎn),那么由于在LinuxSystem下面,所有的執(zhí)行續(xù)都是需要一個(gè)執(zhí)行碼,而就如同上面提到的,你『真正以s 來跟Linux溝通,是在正確的登入Linux之后!』這bashbash來跟系統(tǒng)溝通啰!而在進(jìn)入s之前,也正如同上面提到的,由于系統(tǒng)需要一些變量來提供他數(shù)據(jù)的存?。ɑ蛘呤且恍┳x入系統(tǒng)中了!這些環(huán)境變量例如PATH、HOME、MAIL、S等等,都是很重要的,為代一些設(shè)定或者是一串保留的數(shù)據(jù)!』,例如:『VBird』就是『鳥哥』,所以當(dāng)你VBird的時(shí)候,系統(tǒng)自然就會(huì)知道!哈!那就是鳥哥!最簡單的例子可以取PATH來說明!如果你ls指令應(yīng)該需要以『/bin/ls』來下達(dá)指令才對,那么為何你在任意的路徑下都可以執(zhí)行l(wèi)s呢?而不需要指定路徑呢?這是因?yàn)橄到y(tǒng)已經(jīng)預(yù)設(shè)了一些『搜尋路徑(PATH)PATH的設(shè)定來進(jìn)行指令的搜尋!而這個(gè)PATH就是所謂的變量了!那么如何『顯示變量』呢?這就需要使用到echo這個(gè)指令啦![test[test@testtest]#echo[test@testtest]#echoPATHecho,而為了要分辨是否為變量,那么Linux系統(tǒng)預(yù)設(shè)變量名稱前面會(huì)加上一個(gè)『$』符號(hào),所以就必須要寫成echo$PATH啰!PATH,HOMEMAIL:[root@testroot]#echo[root@testroot]#echo$HOME[root@testroot]#echoenv與set嗯!既然環(huán)境變量是挺重要的,那么到底有多少的環(huán)境變量在Linux系統(tǒng)中呢?呵envLinux預(yù)設(shè)的情況中,使用{大寫的字母}來設(shè)定的變量一般為系統(tǒng)內(nèi)定需要的變量』,列出Linux系統(tǒng)中 [test@test[test@testtest]#env<==使用者自訂環(huán)境變量的設(shè)<==目前的指<==登入者數(shù)HOSTNAME=<==這部主機(jī)的<==這部主機(jī)的硬件等級大致狀態(tài)(i386,<==一些加載的數(shù)據(jù)文<==預(yù)設(shè)語LANGUAGE類似,這個(gè)則是各個(gè)linuxdistrbution常用的預(yù)設(shè)語系變Mandrake使用中文以預(yù)設(shè)語系是中文,亦即zh_TW.Big5,如果我要修改這個(gè)變量,可以到/etc/sysconfig/i18n去修改! 的LC_xxx均是與預(yù)設(shè)的表示語系有關(guān)的變量,其中比較有趣的是LC_TIME,如果在文字接口下,最好將LC_TIME改成美<==目前登入者所在 (當(dāng)下) <==登入者使用的s類<==目前這個(gè)登入者的使用者名LESSOPEN=|/usr/bin/lesspipe.sh%s<==用來設(shè)定less使用的一支script LESSOPEN=|/usr/bin/lesspipe.sh%s<==用來設(shè)定less使用的一支script MACHTYPE=i586-mandrake-linux-主機(jī)的硬件i586PMMX等級K7PIII之后的,就是i686等級啰OSTYPE=linux-<==登入者的郵件預(yù)設(shè)點(diǎn)<==操作系統(tǒng)的形式(linux-·[test@test[test@testtest]#<==BASH的主程序放置路BASH_VERSINFO=([0]="2"[1]="05"[2]="8"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")<==BASH版本信BASH_VERSION=$'2.05.8(1)- <==BASH的版 <==使用顏 HISTFILE=/home/vbird/.bash_history<==目前用來存過往指令的 IFS=$'\t\n'<==存起來 中,指令的最大數(shù)(<==預(yù)設(shè)的分隔<==語系選擇<==目前光標(biāo)所在的位置<==每隔多久檢查一次有無新信件(秒數(shù)<==bash這個(gè)父程ID1000個(gè)指令MAND=$'echo-ne"\\ <==提示字 $?<==<==ID(<==最后一個(gè)命令的回傳值,若之 令被正確的執(zhí)行會(huì)傳回0,否則會(huì)傳為1或其它錯(cuò)誤代碼set的輸入就是直接輸入set即可!他除了會(huì)顯示出目前的『環(huán)境變量』之外,也會(huì)顯示set除了會(huì)將系統(tǒng)的默認(rèn)值秀出來之外,連帶的所有的你自己設(shè)定的變量也會(huì)被秀出來!改的是系統(tǒng)的預(yù)設(shè)參數(shù)檔,如/etc/profile),而不會(huì)干擾到別人的!就如同前面所說的,由于你登入Linux之后會(huì)取得一個(gè)PID,而你的設(shè)定將只對這個(gè)PID與子程序有關(guān)!此外,取消掉(因?yàn)槌绦騊ID不見啰?。?!所以啰,如果你想要你的變量每次都能在你登入的時(shí)候$??這個(gè)變量,如果您上一個(gè)命令01echo·好了,我們知道了一些系統(tǒng)的預(yù)設(shè)變量了,但是如果是想要設(shè)定一些的變量,該我的案例一Unix系統(tǒng)之下進(jìn)行一些數(shù)值模式的仿真工作,偏偏由于數(shù)據(jù)量太大,為了怕日后忘記這個(gè)的內(nèi)容與主要的 名稱成為一個(gè)符的變量,如此一來我只要輸入『cd$VARI』這個(gè)指令,嘿嘿!馬上就移動(dòng)到該路徑下了!很方便吧!我的案例二scripts里面,例如我寫的一個(gè)偵測登錄文件的小程序logfile.sh這個(gè)咚咚,由于里頭常常需要用到『路徑』,偏偏可能每個(gè)人的存取者是script當(dāng)中看到的!所以啰,有很多的時(shí)候?yàn)榱朔奖慊蛘呤鞘褂糜趕cripts的意義,須要設(shè)定變量!然而若有空格符可以使引號(hào)『"』或單引號(hào)『'』來將變量內(nèi)容結(jié)合\』來將特殊符號(hào)(如Enter,$,\,空格符,`command`$"$Pexport來使變量可以動(dòng)作,如『exportPATH』;取消變量的方法為:『unset一一般變量設(shè)[tets@testtest]#12name=VBrid[test@testtest]#name=VBird[test@testtest]#name=VBird[test@testtest]#name=VBirdname[test@testtest]#name="VBirdname"[test@testtest]#name="VBird'sname"[test@testtest]#[test@testtest]#<==錯(cuò)誤的!因?yàn)樽兞块_頭不能是數(shù)字<==錯(cuò)誤的!因?yàn)榈忍?hào)兩邊不能直接接空白<==正確的!echo$name顯示<==錯(cuò)誤的!需要加上雙引號(hào)!不然會(huì)顯示錯(cuò)<==正確的!echo$name顯示VBird<==正確的<==錯(cuò)誤的!需要以雙引號(hào)將原變量圈起<==正確的!echo$name顯示VBird's[test@testtest]# <==正確的!echo$PATH將多了后面一句話[test@testtest]#PATH="$PATH:/home/test" <==正確的!這個(gè)形式對于PATH來說也是正確的格式![test@testtest]#name="VBird's <==設(shè)定name這個(gè)變[test@tsettest]#echo$name[test@testtest]#VBird'sname[test@testtest]#/bin/bash[test@tsettest]#echo$name[test@tsettest]#[test@testtest]#[test@testtest]#export指令中的指<==顯示name變量的指<==另開一個(gè)bash的子程<==顯示name這個(gè)變<==會(huì)顯示空字符串因?yàn)閚ame這個(gè)變量不能使用<==退出子程序bash!<==正確的!如此則$name可以用于下一個(gè)子程序中[test@testtest]#cd/lib/modules/`uname上式中,會(huì)先執(zhí)行`uname–r`這個(gè)內(nèi)含指令,然后輸出的結(jié)果附加在/lib/module…里面,所以執(zhí)行這個(gè)指令,可以完成幾個(gè)附指令取消變量設(shè)[test@testtest]#unsetquote符號(hào)等等,的例題想吧答:單引單引號(hào)與雙引號(hào)的最大不同在于雙引號(hào)仍然可以保有變量的內(nèi)容,但單引號(hào)內(nèi)僅能是一般字符,而不會(huì)有特殊符號(hào)。我們以 的例子做說明:假設(shè)您定義了一個(gè)變量,nae=ird,現(xiàn)在想以nae這個(gè)變量定義出ynae顯示irditse這個(gè)內(nèi)容,要如何訂定呢?[root@testroot]#name=VBird[root@testroot]#echo$name[root@testroot]#myname="$nameitsme"[root@testroot]#echo$mynameVBirdits[root@testroot]#myname='$nameitsme'[root@testroot]#echo$myname$nameits發(fā)現(xiàn)了嗎?沒錯(cuò)!使用了單引號(hào)的時(shí)候,那么$nae將失去原有的變量內(nèi)容,僅為一般字符的顯示型態(tài)而已!這里必需要特別 在意!例例題:在指令下達(dá)的過程中quote(`)這個(gè)符號(hào)代表的意義為何?在一串指令中,在`之內(nèi)的指令將會(huì)被先執(zhí)行,而其執(zhí)行出來的結(jié)果將做為外部的輸入信息!例如uname–r會(huì)顯示出目前的 版本在/lib/modules里面,因此,你可以先執(zhí)行uname–r找出 版本,然后再以『cd cd/lib/modules/`uname直接到 下去exportbashbash,那么你export案互相來去的,如果忘記設(shè)定export的話,那么不同的中的相同變量值,將需要一再地重復(fù)設(shè)定才行!所以,我只要在頭一個(gè)使用export的話,那么后續(xù)的時(shí),將會(huì)把該變量內(nèi)容讀進(jìn)來!好用的很?export而沒有接變量時(shí),那么此時(shí)將會(huì)把所有的『環(huán)境變量』秀出來喔!也就是說,export可以將一般自訂的變量變成環(huán)境變[root[root@testroot]#declare-xdeclare-xCVSROOT="/usr/local/cvs/src/master"declare-xHISTSIZE="50"declare-xdeclare-xHOSTNAME=""declare-xHOSTTYPE="i386"declare-xINPUTRC="/etc/inputrc"declare-xLANG="en_US"declare-xLESSOPEN="|/usr/bin/lesspipe.sh%s"declare-xLOGNAME="root"declare-xLS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:declare-xMACHTYPE="i386-redhat-linux-gnu"declare-xMAIL="/var/spool/mail/root"declare-xMANPATH=":/usr/local/netcdf/man"declare-xOSTYPE="linux-gnu"declare-xdeclare-xPGI="/usr/local/pgi"declare-xPWD="/root"declare-xS declare-xSHLVL="1"declare-xSSH_TTY="/dev/pts/0"declare-xTERM="xterm"declare-xunset由前面的export以及相關(guān)的說明,你可以很清楚的知道一件事情,那就是,『變量的設(shè)定只在目前這個(gè)s環(huán)境當(dāng)中存在,在下個(gè)或者是在子程序中(子s)將不會(huì)存在!』要讓exports的父、子程序外,在(scripts)的編寫當(dāng)中,由于有的軟件會(huì)使用到2個(gè)以上的scripts做為一個(gè)完整的套件!也就是說,假如你有兩支程序,一支為scripts1.sh以及scripts2.sh,而scripts2.sh會(huì)去scripts1.sh的變數(shù),這個(gè)時(shí)候,嘿嘿!你在scripts1.sh當(dāng)中設(shè)定的變量請『千萬記得以export設(shè)定』,否則你的變量將無法在兩個(gè)scripts之間互相被引用喔!當(dāng)這個(gè)scripts執(zhí)行完畢之后,剛剛在scripts當(dāng)中設(shè)定的變量也就『失效了!』。HISTSIZE可以控制歷史指令的多寡,那么太多定方面,當(dāng)您使用一般使用者登入系統(tǒng),再以su轉(zhuǎn)換成root時(shí),基本上,一堆環(huán)境變量仍是以當(dāng)初的一般者為主的,因此,您常常會(huì)發(fā)現(xiàn)root使用的指令會(huì)『找不成為root能用的指令的樣子,嗯!那么轉(zhuǎn)換的時(shí)候,將可以免除相當(dāng)多的困擾呢!提供read來達(dá)成喔!這個(gè)東西在『script』里面比較重要啦!所以我們在sscript里面會(huì)再次[test[test@testtest]#readtesting<==這個(gè)時(shí)候屏幕會(huì)等待使用者由鍵盤輸入喔![test@testtest]#echo$nametesting<==剛剛輸入的數(shù)據(jù)變成了變量的內(nèi)容啦·談完了一些基本的變量之后,再接下來我們可以聊一聊關(guān)于『數(shù)組,Array』這東西了!學(xué)過數(shù)學(xué)應(yīng)該知道有所謂的數(shù)組吧!他可以使用一個(gè)『函數(shù)』來包含一些內(nèi)容!例如A(1)=1,A(2)=4,A(3)=8等等的樣子,那個(gè)A(n)就是函數(shù),n就是index(索引),而在等號(hào)的右邊就是這Bash里頭提供了『一維數(shù)組』給大家來使用,他的[test[test@testtest]#a[索引]=內(nèi)容[test@testtest]#echo${a[索引]}[test@testtest]#a[1]=4[test@testtest]#[test@testtest]#echo${a[1]}4注意一下喔!在設(shè)定數(shù)組的時(shí)候,他主要是以『字母及中刮號(hào),abc[]』的樣式來設(shè)定的!其它的規(guī)則則與變量設(shè)定規(guī)則相同!不過,在數(shù)組的時(shí)候就需要比較注意了!的時(shí)候,是以${數(shù)組函數(shù)}的方式來的!這部份特別容易搞錯(cuò)!請大家特別留意呢!當(dāng)然啦,·有聽過『隨機(jī)取隨機(jī)數(shù)』這個(gè)玩意兒吧?。亢呛?!那么在BASH里面的隨機(jī)數(shù)是那個(gè)變數(shù)來RANDOMBASH[test@testtest]#[test@testtest]#echoxxxx<==每次都會(huì)出現(xiàn)不同的數(shù)字喔·[test@test[test@testtest]#eval例題[test@testtest]#days=365[test@testtest]#year=days[test@testtest]#echo\$$year$days<==第一個(gè)$\改變成為一般字符,而\$后面$year就成為days啦[test@testtest]#evalecho\$$year加上eval之后\$$year變成的$days的『變量內(nèi)容』會(huì)顯現(xiàn)出來\$$year$days$days其實(shí)是一般字符喔!并不是變數(shù)!不過,加上了eval之后,這個(gè)字符串就會(huì)被變成變量內(nèi)容咯!所以說,eval是用來做為『二次迭s-l|mre用m[test[test@tsettest]#aliaslm='ls-al|要注意的是:『aliasalias后面加上你的{『別名』=''}lmls-al|moreroot可以移除(rm)任何數(shù)據(jù)!所以當(dāng)你以root的在進(jìn)行工作時(shí),需要特別,但是總有失手的時(shí)候,那么rm提供了一個(gè)參數(shù)來讓我們確認(rèn)是否要移除該,那就是-i這個(gè)參數(shù)!所以,你可以這樣做:[test[test@tsettest]#aliasrm='rm-rm的時(shí)候,就不用太擔(dān)心會(huì)有錯(cuò)誤刪除的情況了!這也是命令別名的優(yōu)點(diǎn)啰!那么如何知道目前有哪些令別名呢?就使用alias呀![test[test@tsettest]#aliasl.='ls-d.[a-zA-Z]*--color=tty'aliasll='ls-l'aliaslm='ls-aliasls='ls--aliaswhich='alias|/usr/bin/which--tty-only--read-alias--show-dot--show-unalias那么命令別名與變量有什么不同呢?基本上,他們的意義就不太一樣了!alias這種者字符串存在某意義當(dāng)中!舉個(gè)例子好了,我們知道以前的DOS年代,列與就是dir,而清除屏幕就是cls,那么如果要在linux里面也使用相同的指令呢?那就以alias來進(jìn)行指令的別名設(shè)定: aliascls=’clear’aliasdir=’ls–l’clsdir前面我們提過bash有提供指令歷史的服務(wù)!那么如何查詢我們曾經(jīng)下達(dá)過的指令historyhistsory太麻煩,可以使用命令別名來設(shè)定aliashhistoryhistoryhistory,顯示歷史指令記錄內(nèi)容,下達(dá)歷史中的指令[test[test@testtest]#[test@testtest]#[!number][!command]參數(shù)說明number:第幾個(gè)指令command:指令的開頭幾個(gè)字 [test@testtest]# 列出的就是(1)歷史指令的編號(hào);(2)指令的內(nèi)manmanman[test@testtest]#! <==66[test@testtest] <==執(zhí)行上一個(gè)指令(在本例中,就是!66那一個(gè)指令[test@testtest]#! <==al67history這個(gè)指令配合!這個(gè)用法就多了!如果要執(zhí)行上一個(gè)指令,除了使用上下鍵之外,我可以直接以!!來下達(dá)上個(gè)指令的內(nèi)容,此外,我也可以直接選擇下達(dá)第n個(gè)指令,!n來執(zhí)行,也可以使用指令標(biāo)頭,例如!vi來執(zhí)行最近指令開頭是vi的指令列!相當(dāng)?shù)姆奖愣糜?!基本上history的用途很大的!但是需要安全的問題!尤其是root的歷史,這是Cracker的最愛!因?yàn)椴坏膔oot會(huì)將很多的重要數(shù)據(jù)在執(zhí)行的過程中會(huì)被在~/.bash_history當(dāng)中,如果這個(gè)被解析的話,吶!無history!』曾經(jīng)使用過的指令下達(dá)是很有效率的一個(gè)指bash 的設(shè)定終于來到bash的設(shè)定啰!這部份我們預(yù)計(jì)分成『系統(tǒng)設(shè)定值』與『一般各人喜好設(shè)定值』來說明,除非您是root,并且對于大家的喜好有共同的認(rèn)知,否則只要設(shè)定您的『個(gè)人 去!因此,我們需要有幾個(gè)來幫助我們,每次登入的時(shí)候,就已經(jīng)幫我們搞定了環(huán)境的設(shè)所謂的系統(tǒng)設(shè)定值,也就是說每個(gè)使用者進(jìn)入到bashs L、HOSTNAME、HISTSIZE、umask』等等,也同時(shí)規(guī)劃出/etc/inputrc這個(gè)針對鍵盤熱建設(shè)定的的數(shù)據(jù)內(nèi)容。你可以在這里設(shè)定總體的PATH等等的信息!同時(shí),這個(gè)file也規(guī)劃出/etc/profile.d及/etc/inputrc這兩個(gè)檔案,其中,inputrc是用在history(歷史指令)的作用上的!總之,你可以上需要特別,因?yàn)樗械氖褂谜呓詴?huì)使用到這個(gè)的信息。注:通常我都喜歡將/usr/local/bin這個(gè)路徑加成最前面,這是因?yàn)橥ǔW约喊惭b的套件^_^!此外,HISTSIZE的大小改變一下,改成50就可以啦!比較安全!(注:這個(gè)不論在那個(gè)Linuxdistribution當(dāng)中均存在/etc/profile當(dāng)中,所以,請?zhí)貏e留意此一即可!)。/etc/bashrc:這個(gè)在規(guī)劃umask的功能,也同時(shí)規(guī)劃出提示字符的內(nèi)(就是里頭那個(gè)PS1啦?。?。特別留意的是,這個(gè)在不同的Linuxdistribution里面,擺放的位置可能不太一樣呢!所以需要查詢一下才行呦!/etc/man.config:這個(gè)或許跟bashs 理員來說,卻也是很重要的一個(gè)!這的的內(nèi)容『規(guī)范了使用man的時(shí)候,manpage的路徑到哪里去尋找!』所以說的簡單一點(diǎn),這個(gè)規(guī)定了下達(dá)man的時(shí)候,該去哪里查看數(shù)據(jù)的路徑設(shè)定!那么什么時(shí)候要來修改這個(gè)呢?如果你是以tarball的方式來安裝你的數(shù)據(jù),那么你的manpage(指令說明)可能會(huì)放置在/usr/local/softpackage/man里頭,那個(gè)softpackage是你的套件名稱,這個(gè)時(shí)候你就得以手動(dòng)的方式將該路徑加到/etc/man.config里頭,否則使用man的時(shí)候就會(huì)找不到相關(guān)的說明檔啰后,都需要先logout在login之后才會(huì)將設(shè)定整個(gè)啟動(dòng)起來! 啰!分別會(huì)使用到的幾個(gè)啦!(注意!的都是隱藏檔,需要使用-al方能顯示出來),另外,注意一下啰!那個(gè)『~』代表的是『家 ~/.bashrc這個(gè)個(gè)人設(shè)定的變量里頭修改!有的時(shí)候會(huì)有~/.profile或~/.bash_login等來~/.bashrc:這個(gè)對于個(gè)人喜好的bash設(shè)定來說,是最重要的啦!因?yàn)閪.bhhio:這用途于將曾經(jīng)用令錄下,而stry在這一次的執(zhí)行過程中的指令,將在你離開s之后才會(huì)被到可以藉由history這個(gè)指令來將里頭的搜尋出來這個(gè)的指令記錄筆數(shù),與HISTFILE有關(guān),你可以自行在~/.bashrc里頭設(shè)定,或者直接由root在/etc/profile里面統(tǒng)一設(shè)定大??!~/.bash_logout:這個(gè)則是在『你注銷s的時(shí)候,BASH會(huì)為你所clear清除屏幕這件事情而已,不過,你也可以盤),Linux大致上的個(gè)人設(shè)定就是如同上面說的!不過,我個(gè)人覺得比較重要的是~/.bashrc這一個(gè)檔名與變量的設(shè)定等等!我個(gè)人喜好的~/.bashrc設(shè)定如下:[test[test@testtest]#more#UserspecificaliasesandfunctionsExportPATHAliasrm='rm-i'Aliascp='cp-i'Aliasmv='mv-i'Aliasll='ls-l'Aliaslm='ls-al|more'Aliash='history'#Sourceglobaldefinitionsif[-f/etc/bashrc];then.logoutloginsource即可![test[test@testtest]#source變量設(shè)定文環(huán)境變量設(shè)定,當(dāng)我需要該環(huán)境時(shí),就直接source變量文件,如此一來,環(huán)境bash當(dāng)中常會(huì)使用到一些萬用字符,與搭配特殊符號(hào)來將指令做更好的利用(例如最常提到的正規(guī)表示法RegulareExpress)!我們列出一些常用的萬用字符與特殊符號(hào)符內(nèi)*萬用字符,代表一個(gè)或多個(gè)字符(或數(shù)字?萬用字符#批注,這個(gè)最常被使用在script當(dāng)中,視為說\跳脫符號(hào),將『特殊字符或萬用字符』還原成一般|分隔兩個(gè)管線命令的界定;連續(xù)性命令的界定(注意!與管線命令并不相同~使用者的$亦即是變量之前需要加的變&將指令變成背景下工!邏輯運(yùn)算意not的意思/路徑分隔的>,輸出導(dǎo)向,分別是『取代』與『累加'單引號(hào),不具有變量置換的"具有變量置換的功能`兩個(gè)『`』中間為可以先執(zhí)行的指(在中間為子s的起始與結(jié)[在中間為字{在中間為命令區(qū)塊的組合組合執(zhí)行Ctrl+終止目前Ctrl+輸入結(jié)束(EOF),例如郵件結(jié)束的時(shí)Ctrl+就是Enter啦Ctrl+暫停屏幕的Ctrl+恢復(fù)屏幕的Ctrl+在提示字符下,將整列命令Ctrl+『暫停』目前*,?,[]`[test[test@testtest]#lstest*<==那個(gè)*代表后面不論接幾個(gè)字符都予以接受(沒有字符也接受!)[test@testtest]#lstest?<==那個(gè)?代表后面『一定』要接『一個(gè)』字符[test[test@testtest]#lstest???<==那個(gè)???[test@testtest]#cptest[1-5]/tmp<==將test1,test2,test3,test4,test5若存在的話,就拷貝到/tmp[test@testtest]#cd/lib/modules/`uname-r`/kernel/drivers<==``上面幾個(gè)例子相當(dāng)?shù)挠腥ぃ∮绕涫亲詈竺鎯蓚€(gè)!需要注意的是,[]里面『代表只有一個(gè)字符』但是范圍可以由1-5,這樣來說的話,那么我們?nèi)绻试S『大寫字符』就可以將copy出來的話,可以這樣做:cp*[A-Z]*``uname-r 上面,來執(zhí)行cd的功能 command1;;command1執(zhí)行結(jié)果為何,command2command1如果執(zhí)行結(jié)果有錯(cuò)誤,第二command1&&command2command1||command2?有沒有錯(cuò)誤,如果有錯(cuò)誤就回傳為1,沒有錯(cuò)誤就回傳為0,你可以經(jīng)由echo$?來查詢得知!那么&&就是代表,當(dāng)command1執(zhí)行結(jié)果傳回值為0的時(shí)候,也就是沒有錯(cuò)誤訊息時(shí),則command2才會(huì)開始執(zhí)行,而||恰恰相反,當(dāng)command1有錯(cuò)誤訊息時(shí),command2才會(huì)執(zhí)行!舉個(gè)例子來說,我的系統(tǒng)中并沒有/vbird這個(gè) ,所以執(zhí)行l(wèi)s/vbird[root[root@testroot]#ls/vbird;ls[root@testroot]#ls/vbird&&ls/[root@testroot]#ls/vbird||ls/其實(shí),在使用bashPATH沒有設(shè)定完整的時(shí)候,下達(dá)指令都是要以『一長列的指令連帶根都要列出來』,呵呵那就是絕對路徑的設(shè)定法啦!基本上,『絕對路徑』就是以根開始寫入到的一種命令寫定方法,舉例來說,我目前在/test這個(gè)test使用者的家中,要看看里面的.bashrc這個(gè)的數(shù)據(jù),使用的more這個(gè)指令,而這個(gè)指令在/bin/more當(dāng)中,確的下達(dá)指令的方法為[test[test@tsettest]#/bin/more.bashrc<==我在 為/home/test!這是絕對路徑寫法 為/home/test!這是絕對路徑寫法!而如果你還記得我們在系統(tǒng)指令那一篇文章中提到的觀念的話,那么應(yīng)該記得使用ls-al時(shí)會(huì)出現(xiàn)兩個(gè)一定存在的 [test@tsettest]#ls-totaldrwx 3 4096May1914:53<==這一層路徑的屬性說drwxr-xr- 3 4096May516:50<==上一層路徑的屬性說以下 mand』那個(gè)command指的是存的可執(zhí)行檔!那么我因?yàn)樵?home/test里面,距離/bin有兩層上 ,所以我要使用[test[test@tsettest]#../../bin/more <==一層一層回到 ,在進(jìn)入/bin的寫法!相對路關(guān)于路徑搜尋的問題!為何不執(zhí)行目前所 下 咦!剛剛不是提到『.』與『..』嗎?那么那個(gè)『.』是干嘛用的?!眼尖的朋友應(yīng)該已經(jīng)發(fā)現(xiàn)了,就是關(guān)于路徑搜尋的問題!為何不執(zhí)行目前所 下 咦!剛剛不是提到『.』與『..』嗎?那么那個(gè)『.』是干嘛用的?!眼尖的朋友應(yīng)該已經(jīng)發(fā)現(xiàn)了,就是『我在執(zhí)行 的時(shí)候,基本上,并不會(huì)主動(dòng)搜尋目前 下的 』舉個(gè)例子來說,我安裝的suid這個(gè)執(zhí)行檔在/usr/local/sud/bi/suid這個(gè) ,然而我在/usr/localsuid/bn下達(dá)suid的時(shí)候,系統(tǒng)會(huì)告訴你『查不到這個(gè) !』真是見鬼了!明明有這個(gè)的呀!這是因?yàn)橄到y(tǒng)預(yù)設(shè)的PATH(路徑)并沒有執(zhí)行目 下的定,也就是『.』這個(gè)路徑!你可以使用『echo$PATH』看看,就可以知道為什么了!那么為何不要設(shè)定這個(gè)路徑呢?這是因?yàn)椤喊踩坏目剂?。于系統(tǒng)預(yù)設(shè)是允許任何人在良的使用者或者是的,那么萬一有居心你的計(jì)算機(jī),并在你的/tmp里頭埋了一小木馬,并取名為ls,好了,改天你以 登入后,到 并執(zhí)行l(wèi)s,你看會(huì)有什么結(jié)果?!這個(gè)/tmp/ls由其它 許沒有問題,但是由root來執(zhí)行卻可能會(huì)導(dǎo)致Cracker所樂意見到的結(jié)當(dāng)然啰!您還是可以選擇在~/.bashrc當(dāng)中設(shè)定你的.在你的PATH中,不過并不這么建議就是好了,由于系統(tǒng)預(yù)設(shè)并不主動(dòng)搜尋目前下的執(zhí)行文件,那么你應(yīng)該如何執(zhí)行『目前下的執(zhí)行文件』呢?很簡單呀!就是以相對路徑的觀念,由于『..』是上層,而『.』是這一層,所以要執(zhí)行這一層令就使用『mand』即可!例如你的/usr/local/squid/bin執(zhí)行squid則可以寫成:[test[test@tsetbin]# <==以相對路徑的觀念來看!在 下達(dá)的指令寫法bash什么是『重導(dǎo)向,redirect?』:簡單的說,就是將你目前的所得資料轉(zhuǎn)到其可以這么寫:『ls-l/>test>』就是將輸出結(jié)果導(dǎo)向到test這個(gè)中的意思啰!這個(gè)時(shí)候:如果你執(zhí)行『ls-l/』而已的話,屏幕會(huì)將根 但是當(dāng)使用>導(dǎo)向到test這個(gè)中時(shí),則屏幕不會(huì)顯示任何訊息,但是會(huì)將剛剛你執(zhí)行的結(jié)果輸出到test這個(gè)中。所以啰,你只要『vitest』一下,就會(huì)知道test這個(gè)中記錄了剛剛我們執(zhí)行的數(shù)據(jù)結(jié)果啰!不過,這里需要特別留意的是,當(dāng)你使用>符號(hào)將數(shù)據(jù)由屏幕導(dǎo)向到中時(shí),則:該(就是test)若不存在,系統(tǒng)會(huì)自動(dòng)的將他建立起來,但是也就是若以>輸出到一個(gè)既存盤案中,呵呵,那個(gè)就會(huì)被覆蓋掉>bash0stdin1stdout2stderr指裝置<左邊一定是指令,至于右邊則可能是裝置或者是!注意了!那個(gè)1>與2>之間并沒有空[test[test@testtest]#ls-al>將顯示的結(jié)果輸出到 中,若 以存在則予以取代[test@testtest]#ls-al>>將顯示的結(jié)果累加到 中, 為累加的,舊數(shù)據(jù)保留[test@testtest]#ls-al1>list.txt2>將顯示的資料,正確的輸出到list.txt錯(cuò)誤的數(shù)list.err[test@testtest]#ls-al1>list.txt2>&1將顯示的資料,不論正確或錯(cuò)誤均輸出到list.txt當(dāng)中[test@testtest]#ls-al1>list.txt2>將顯示的資料,正確的輸出到list.txt錯(cuò)誤的數(shù)據(jù)則予以丟 /etc/crontab當(dāng)中執(zhí)行的時(shí)候,如果我們已經(jīng)知道錯(cuò)誤的訊息為何,又不想要讓錯(cuò)誤的訊息一直填滿root的信箱,就必須以2>搭配/dev/null這個(gè)<:由<的右邊讀入?yún)?shù)>>file()device(裝置,如printer)去;>>>>>不同的是,該檔2>2>/dev/null>,>>』這兩個(gè)東西有一定的概念之后,我們來深入的談一談『命令輸出重導(dǎo)向』的觀念吧!如前所述,基本上,Linux執(zhí)行的結(jié)果中,可以約略的分成『正確輸出』與『錯(cuò)誤輸出』兩種方式。例如,當(dāng)你以一般執(zhí)行find這個(gè)指令時(shí),例如執(zhí)行『find/-nametesting』時(shí),由于你是一般,又有些數(shù)據(jù)夾是不允許一般者進(jìn)入的,所以啰,當(dāng)你使用find時(shí),就會(huì)有錯(cuò)誤訊息發(fā)生了!但同時(shí)如果有testing這個(gè)在你可以進(jìn)入的資StdoutStderror)find:/home/root:Permissiondenied』就告訴你該數(shù)據(jù)夾你沒有權(quán)限進(jìn)入,這就是錯(cuò)誤的輸出了,那么『/home/test/tseting』[test[test@testtest]#find/-namefind:/home/test1:Permissiondenied find:/home/root:Permissiondenied <==這是錯(cuò)誤的輸出find:/home/masda:Permissiondenied [test@testtest]#好了,那么假如我們想要將數(shù)據(jù)輸出到list這個(gè)中呢?執(zhí)行『find/-nametesting>list』會(huì)有什么結(jié)果?呵呵,你會(huì)發(fā)現(xiàn)list里面存了剛剛那個(gè)『正確』的輸出數(shù)據(jù),至于屏幕上需要怎么做?!呵呵!其實(shí)在數(shù)據(jù)的重導(dǎo)向方面,正確的寫法應(yīng)該是『1>』與『2>』才>1>1>2>則是錯(cuò)>>[test[test@testtest]#find/-nametesting1>list_right2>Permissionlist_error這個(gè)檔案中,至于正確的輸出數(shù)據(jù)則會(huì)存到list_right這個(gè)中啰!這樣可以了解了嗎?如果有點(diǎn)/dev/null桶就很重要了!/dev/null是什么呢?基本上,那就有點(diǎn)像是一個(gè)『黑洞』的桶功能!當(dāng)你[test[test@testtest]#find/-nametesting1>list_right2>errormessage就會(huì)『不見了!』呵呵!真高興!另外,如果我要將數(shù)據(jù)都寫到[test[test@testtest]#find/-nametesting1>list2>list<==錯(cuò)誤寫[test@testtset]#find/-nametesting1>list <==正確寫請?zhí)貏e留意這一點(diǎn)呢!同時(shí)寫入同一個(gè)需要使用2>&1才對呦OK>,2>,>>/dev/null<又是什么呀???呵呵!以最簡單的說是mail這個(gè)東西了!我們以root的來寄信給root好了,可以這樣做:1.1.完全由鍵盤輸入數(shù)據(jù)[root@testtest]#mail-s"test"root<==-s表示標(biāo)題root為收Iamroot!<==以下的數(shù)據(jù)都是由鍵盤輸入的That'sOK <==要結(jié)束鍵盤的輸入時(shí),需要在一行的最前面加上.即可 <==是否需要有密件副本?不需要的話,直接按下Enter <==表示送出的提示字符而2. 代替輸[test@testtset]#mail-s"test"root</root/.bashrc<==.bashrc內(nèi)容寄給root^_^這樣就可以將信寄出去啰!所以說,熟悉命令重導(dǎo)像的話,對您可是相當(dāng)?shù)挠杏袑戇^script的話!好了,我們來說一說吧!一些系統(tǒng)的例行命令(例如寫在/etc/crontab中的)的執(zhí)行結(jié)果,希望他2>/當(dāng)然還有很多很多的功能的,最簡單的就是網(wǎng)友們常常問到的:『為何我的root都會(huì)收到系crontab寄來的錯(cuò)誤訊息呢』這個(gè)咚咚是常見的錯(cuò)誤,而如果我們已經(jīng)知道這個(gè)錯(cuò)誤訊息是可以忽略的時(shí)候,嗯!『2>errorfile』這個(gè)功能就很重要了吧!了解了嗎??(pipe)bash命令執(zhí)行的時(shí)候有輸出的數(shù)據(jù)會(huì)出現(xiàn)!那么如果這群數(shù)據(jù)必需要經(jīng)(pipe),管線命令使用的是『|』這個(gè)界定符號(hào)!另外,管線命令與『連續(xù)下達(dá)命令』是假設(shè)我們要last這個(gè)指令中,那個(gè)root登入的『次數(shù)』應(yīng)該怎么作?注意呦!我們只需lastgrep將上面的輸出數(shù)據(jù)(stdout)root擷取出來,其它的不wclast的輸出是一行代表一次登入,所以只要計(jì)算幾行就代表登入幾次的意思,所以啰!last數(shù)據(jù)逐步的篩選,就可以得到我們的數(shù)據(jù)了!整個(gè)命令可以寫成[test[test@testbin]#[test@testbin]#last|grep[test@testbin]#last|greproot|wc-你可以分別執(zhí)行『last』然后再逐步增加為『last|greproot』,最后到上面那一行,那么就馬上可以清楚的知道為何會(huì)這么做啰!這個(gè)管線命令『|』僅能處理經(jīng)由前面一個(gè)指令傳standardoutput(STDOUT)stdandarderror并沒有[root[root@test/root]#cut-d"分隔字符"[-cf]參數(shù)說明-d:后面接的是用來分隔的字符,預(yù)設(shè)是『空格符-c:后面接的是『第幾個(gè)字符-f:后面接的是第幾個(gè)區(qū)塊?[root@test/root]#cat/etc/passwd|cut-d":"-f將passwd這個(gè) 里面,每一行里頭的:用來作為分隔號(hào), [root@test/root]#last|cut-d""-f1[root@test/root]#last|cut-c1-20last之后的數(shù)據(jù),每一行的1-20個(gè)字符取出來這個(gè)cut實(shí)在很好用!不過,說真的,除非你常常在分析log,否則使用到cutcut主要的用途在于將『同一行里面的數(shù)據(jù)進(jìn)行分解!』,最能呢!尤其是在分析log的時(shí)候![root[root@test/root]#sort[-t分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職審計(jì)實(shí)訓(xùn)(審計(jì)實(shí)訓(xùn)基礎(chǔ))試題及答案
- 2025年大學(xué)林業(yè)工程(林業(yè)工程設(shè)計(jì))試題及答案
- 2025年高職(出版商務(wù))圖書發(fā)行試題及答案
- 2025年高職智能工程機(jī)械運(yùn)用技術(shù)(機(jī)械操作規(guī)范)試題及答案
- 2025年中職機(jī)電一體化技術(shù)(設(shè)備趨勢分析)試題及答案
- 2026年中職第二學(xué)年(眼視光技術(shù))驗(yàn)光配鏡階段測試題及答案
- 2025年中職食品包裝(食品包裝技術(shù))試題及答案
- 2025年本科衛(wèi)生信息管理(衛(wèi)生信息系統(tǒng))試題及答案
- 2025年大學(xué)食品安全與檢測技術(shù)(農(nóng)藥殘留檢測)試題及答案
- 2025年大學(xué)教育學(xué)(教育政策學(xué))試題及答案
- 醫(yī)學(xué)投稿經(jīng)驗(yàn)分享
- 醫(yī)保編碼管理辦法
- 【MOOC答案】《創(chuàng)新與創(chuàng)業(yè)管理》(南京郵電大學(xué))章節(jié)作業(yè)慕課答案
- 歡樂谷安全生產(chǎn)管理制度
- 消防高位水箱巡查方案(3篇)
- 消渴的中醫(yī)護(hù)理常規(guī)課件
- 應(yīng)急演練流程設(shè)計(jì)
- 新能源汽車充電站建設(shè)項(xiàng)目匯報(bào)
- 低空經(jīng)濟(jì)培訓(xùn)項(xiàng)目投資估算
- 露天礦機(jī)電設(shè)備及零部件維修工程方案投標(biāo)文件(技術(shù)方案)
- SL631水利水電工程單元工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)第1部分:土石方工程
評論
0/150
提交評論