1、選擇題20分,10個(gè)
2震蒋、填空題10分半醉,5個(gè)
3沐寺、簡(jiǎn)答題20分牲览,5個(gè)
4、情景題20分许昨,2個(gè)
5懂盐、shell編程題30分,3個(gè)
重點(diǎn)
主機(jī)規(guī)劃與磁盤分區(qū)
各硬件裝置在Linux中的文件名 p66
磁盤分區(qū):課本例題 p67
磁盤分區(qū)表例題 p70
磁盤分區(qū)的選擇 p75
第6章Linux的文件權(quán)限與目錄配置
文件名為目錄糕档、擁有者權(quán)限莉恼、同用戶組用戶權(quán)限、其他用戶權(quán)限
linux文件屬性速那,例題俐银。如何改變文件屬性和權(quán)限。
142 chmod 644 basic 146
詳細(xì)看例題端仰,有原題捶惜。
根目錄的上一層與根目錄自己是同一個(gè)目錄
第7章Linux文件與目錄
目錄和路徑,目錄的操作荔烧,文件目錄管理吱七,看例題汽久。171
文件目錄的權(quán)限與隱藏權(quán)限。有題踊餐,主要是例題景醇。180,181吝岭,182
情景模擬題:
情境模擬題一:假設(shè)系統(tǒng)中有兩個(gè)帳號(hào)三痰,分別是alex 與arod ,這兩個(gè)人除了自己群組之外還共同支援一個(gè)名為project 的群組窜管。假設(shè)這兩個(gè)用戶需要共同擁有/srv/ahome/ 目錄的開(kāi)發(fā)權(quán)散劫,且該目錄不許其他人進(jìn)入查閱。請(qǐng)問(wèn)該目錄的權(quán)限設(shè)定應(yīng)為何幕帆?請(qǐng)先以傳統(tǒng)權(quán)限說(shuō)明获搏,再以SGID 的功能解析。
?目標(biāo):了解到為何專案開(kāi)發(fā)時(shí)蜓肆,目錄最好需要設(shè)定SGID 的權(quán)限颜凯!
?前提:多個(gè)帳號(hào)支援同一群組,且共同擁有目錄的使用權(quán)仗扬!
?需求:需要使用root 的身份來(lái)進(jìn)行chmod, chgrp 等幫用戶設(shè)定好他們的開(kāi)發(fā)環(huán)境才行!這也是管理員的重要任務(wù)之一蕾额!
首先我們得要先制作出這兩個(gè)帳號(hào)的相關(guān)資料早芭,帳號(hào)/群組的管理在后續(xù)我們會(huì)介紹, 您這里先照著底下的指令來(lái)制作即可:
[root@www ~]# groupadd project <==增加新的群組
[root@www ~]# useradd -G project alex <==建立alex 帳號(hào)诅蝶,且支援project
[root@www ~]# useradd -G project arod <==建立arod 帳號(hào)退个,且支援project
[root@www ~]# id alex <==查閱alex 帳號(hào)的屬性
uid=501(alex) gid=502(alex) groups=502(alex),501(project) <==確實(shí)有支援!
[root@www ~]# id arod
uid=502(arod) gid=503(arod) groups=503(arod),501(project)
然后開(kāi)始來(lái)解決我們所需要的環(huán)境吧调炬!
1.首先建立所需要開(kāi)發(fā)的專案目錄:
[root@www ~]# mkdir /srv/ahome
[root@www ~]# ll -d /srv/ahome
drwxr-xr-x 2 root root 4096 Sep 29 22:36 /srv/ahome
2.從上面的輸出結(jié)果可發(fā)現(xiàn)alex 與arod 都不能在該目錄內(nèi)建立檔案语盈,因此需要進(jìn)行權(quán)限與屬性的修改。由于其他人均不可進(jìn)入此目錄缰泡,因此該目錄的群組應(yīng)為project刀荒,權(quán)限應(yīng)為770才合理。
[root@www ~]# chgrp project /srv/ahome
[root@www ~]# chmod 770 /srv/ahome
[root@www ~]# ll -d /srv/ahome
drwxrwx--- 2 root project 4096 Sep 29 22:36 /srv/ahome
# 從上面的權(quán)限結(jié)果來(lái)看棘钞,由于alex/arod 均支援project缠借,因此似乎沒(méi)問(wèn)題了!
3.實(shí)際分別以兩個(gè)使用者來(lái)測(cè)試看看宜猜,情況會(huì)是如何泼返?先用alex 建立檔案,然后用arod 去處理看看姨拥。
[root@www ~]# su - alex <==先切換身份成為alex 來(lái)處理
[alex@www ~]$ cd /srv/ahome <==切換到群組的工作目錄去
[alex@www ahome]$ touch abcd <==建立一個(gè)空的檔案出來(lái)绅喉!
[alex@www ahome]$ exit <==離開(kāi)alex 的身份
[root@www ~]# su - arod
[arod@www ~]$ cd /srv/ahome
[arod@www ahome]$ ll abcd
-rw-rw-r-- 1 alex alex 0 Sep 29 22:46 abcd
#仔細(xì)看一下上面的檔案渠鸽,由于群組是alex ,arod并不支援柴罐!
#因此對(duì)于abcd 這個(gè)檔案來(lái)說(shuō)拱绑, arod 應(yīng)該只是其他人,只有r 的權(quán)限而已袄鲂猎拨!
[arod@www ahome]$ exit
由上面的結(jié)果我們可以知道,若單純使用傳統(tǒng)的rwx 而已屠阻,則對(duì)剛剛alex 建立的abcd 這個(gè)檔案來(lái)說(shuō)红省, arod 可以刪除他,但是卻不能編輯他国觉!這不是我們要的樣子鞍墒选!趕緊來(lái)重新規(guī)劃一下麻诀。
4.加入SGID 的權(quán)限在里面痕寓,并進(jìn)行測(cè)試看看:
[root@www ~]# chmod 2770 /srv/ahome
[root@www ~]# ll -d /srv/ahome
drwxrws--- 2 root project 4096 Sep 29 22:46 /srv/ahome
測(cè)試:使用alex 去建立一個(gè)檔案,并且查閱檔案權(quán)限看看:
[root@www ~]# su - alex
[alex@www ~]$ cd /srv/ahome
[alex@www ahome]$ touch 1234
[alex@www ahome]$ ll 1234
-rw-rw-r-- 1 alex project 0 Sep 29 22:53 1234
#沒(méi)錯(cuò)蝇闭!這才是我們要的樣子呻率!現(xiàn)在alex, arod 建立的新檔案所屬群組都是project,
#由于兩人均屬于此群組呻引,加上umask 都是002礼仗,這樣兩人才可以互相修改對(duì)方的檔案!
所以最終的結(jié)果顯示逻悠,此目錄的權(quán)限最好是『2770』元践,所屬檔案擁有者屬于root即可,至于群組必須要為兩人共同支援的project 這個(gè)群組才行童谒!
簡(jiǎn)答題:
當(dāng)一個(gè)使用者的 umask 分別為 033 與 044 他所創(chuàng)建的文件與目錄的權(quán)限為何单旁?
在umask 為033 時(shí),則預(yù)設(shè)是拿掉group 與other 的w(2)x(1) 權(quán)限饥伊,因此權(quán)限就成為『檔案-rw-r--r-- 象浑, 目錄drwxr--r-- 』而當(dāng)umask 044 時(shí),則拿掉r 的屬性撵渡,因此就成為『檔案-rw--w--w-融柬,目錄drwx-wx-wx』
找出 /etc 底下,文件大小介於 50K 到 60K 之間的文件趋距,并且將權(quán)限完整的列出 (ls -l):
find /etc -size +50k -a -size -60k -exec ls -l {} \;
找出 /etc 底下粒氧,文件容量大於 50K 且文件所屬人不是 root 的檔名,且將權(quán)限完整的列出 (ls -l)节腐;
find /etc -size +50k -a ! -user root -exec ls -ld {} \;
find /etc -size +50k -a ! -user root -type f -exec ls -l {} \;
找出 /etc 底下外盯,容量大於 1500K 以及容量等於 0 的文件:
find /etc -size +1500k -o -size 0
相對(duì)于-a 摘盆,那個(gè)-o 就是或(or) 的意思啰!
第8章
磁盤與文件系統(tǒng)管理
Linux的Ext2文件系統(tǒng) 200
掛載點(diǎn)的意義
文件系統(tǒng)的簡(jiǎn)單操作 # fdisk/dev/hdc
磁盤分區(qū)饱苟、格式化孩擂、檢驗(yàn)與掛載
磁盤掛載與卸載
本章課后練習(xí)情景1和情景2考試其中一個(gè)
?情境模擬題一:復(fù)原本章的各例題練習(xí),本章新增非常多partition 箱熬,請(qǐng)將這些partition 刪除类垦,恢復(fù)到原本剛安裝好時(shí)的狀態(tài)。
?目標(biāo):了解到刪除分割槽需要注意的各項(xiàng)資訊城须;
?前提:本章的各項(xiàng)范例練習(xí)你都必須要做過(guò)蚤认,才會(huì)擁有/dev/hdc6, /dev/hdc7 出現(xiàn);
?需求:熟悉fdisk, umount, swapoff 等指令糕伐。
由于本章處理完畢后砰琢,將會(huì)有/dev/hdc6 與/dev/hdc7 這兩個(gè)新增的partition ,所以請(qǐng)刪除掉這兩個(gè)partition 良瞧。刪除的過(guò)程需要注意的是:
1.需先以free / swapon -s / mount 等指令查閱陪汽, /dev/hdc6, /dev/hdc7 不可以被使用!如果有被使用褥蚯,則你必須要使用umount 卸載檔案系統(tǒng)挚冤。如果是記憶體置換空間,則需使用swapon -s 找出被使用的分割槽遵岩, 再以swapoff 去卸載他你辣!
2.觀察/etc/fstab ,該檔案不能存在這兩個(gè)partition尘执;
3.使用『 fdisk /dev/hdc 』刪除,注意宴凉,由于是邏輯分割槽誊锭,這些分割槽一定從5 號(hào)開(kāi)始??連續(xù)編號(hào),因此你最好不要從6 號(hào)刪除弥锄!否則原本的7 號(hào)在你刪除6 號(hào)后丧靡,將會(huì)變成6 號(hào)!因此籽暇,你應(yīng)該由7 號(hào)刪除掉温治,再刪除6 號(hào)。
?情境模擬題二:由于我的系統(tǒng)原本分割的不夠好戒悠,我的用戶希望能夠獨(dú)立一個(gè)filesystem 附掛在/srv/myproject 目錄下熬荆。那你該如何建立新的filesystem ,并且讓這個(gè)filesystem 每次開(kāi)機(jī)都能夠自動(dòng)的掛載到/srv/myproject 绸狐, 且該目錄是給project 這個(gè)群組共用的卤恳,其他人不可具有任何權(quán)限累盗。且該 filesystem 具有 5GB 的容量。
?目標(biāo):理解檔案系統(tǒng)的建置突琳、自動(dòng)掛載檔案系統(tǒng)與專案開(kāi)發(fā)必須要的權(quán)限若债;
?前提:你需要進(jìn)行過(guò)第七章的情境模擬才可以繼續(xù)本章;
?需求:本章的所有概念必須要清楚拆融!
那就讓我們開(kāi)始來(lái)處理這個(gè)流程吧蠢琳!
1.首先,我們必須要使用fdisk /dev/hdc 來(lái)建立新的partition 镜豹,由于本章之前范例的partition 已經(jīng)在上一個(gè)練習(xí)中刪除傲须, 因此你應(yīng)該會(huì)多出一個(gè)/dev/hdc6 才對(duì):『fdisk / dev/hdc』,然后按下『 n 』逛艰,按下『Enter』選擇預(yù)設(shè)的啟始磁柱躏碳, 按下『+5000M』建立5GB 的磁碟分割槽,可以多按一次『p 』看看是否正確散怖,若無(wú)問(wèn)題則按下『w』寫入分割表菇绵;
2.避免重新開(kāi)機(jī),因此使用『 partprobe 』強(qiáng)制核心更新分割表镇眷;如果螢?zāi)怀霈F(xiàn)類似:『 end_request: I/O error dev fd0, sector 0 』的錯(cuò)誤時(shí)咬最,不要擔(dān)心啊欠动!這個(gè)說(shuō)明的是『找不到軟碟』永乌,我們本來(lái)就沒(méi)有軟碟, 所以這個(gè)錯(cuò)誤是可以忽略的具伍。
3.建立完畢后翅雏,開(kāi)始進(jìn)行格式化的動(dòng)作如下:『mkfs -t ext3 /dev/hdc6』,這樣就OK 了人芽!
4.開(kāi)始建立掛載點(diǎn)望几,利用:『 mkdir /srv/myproject 』來(lái)建立即可;
5.編寫自動(dòng)掛載的設(shè)定檔:『 nano /etc/fstab 』萤厅,這個(gè)檔案最底下新增一行橄抹,內(nèi)容如下:
/dev/hdc6 /srv/myproject ext3 defaults 1 2
6.測(cè)試自動(dòng)掛載:『 mount -a 』,然后使用『 df 』觀察看看有無(wú)掛載即可惕味!
7.設(shè)定最后的權(quán)限楼誓,使用:『 chgrp project /srv/myproject 』以及『 chmod 2770 /srv/myproject 』即可。
課后簡(jiǎn)答題:
如果由于你的主機(jī)磁盤容量不夠大名挥,你想要添加一顆新磁盤疟羹,并將該磁盤全部分割成單一分割槽,且將該分割槽掛載到 /home 目錄, 你該如何處置阁猜?
詳細(xì)的流程可以分為硬體組裝丸逸、磁碟分割、格式化剃袍、資料搬移與掛載等黄刚。
?安裝硬碟:關(guān)掉Linux 主機(jī)電源,若為IDE 介面時(shí)民效,需要處理跳針(jump) 憔维,放入主機(jī)后插好硬碟的排線與電源線,重新啟動(dòng)電源畏邢;
?磁碟分割:透過(guò)類似上述情境模擬二的動(dòng)作业扒,將整顆磁碟分割成單一主要分割槽,類似/dev/sdb1 占有全部容量舒萎;
?格式化:透過(guò)mkfs -t ext3 來(lái)格式化程储;
?資料搬移:由于原本的/home 還會(huì)有資料存在,因此你可以mount /dev/sdb1 /mnt 臂寝,再將/home 的資料復(fù)制到/mnt/ 中章鲤,例如:『 cp -a /home/* / mnt 』即可。復(fù)制完畢后卸載 /home 以及 /mnt
?重新掛載:編輯/etc/fstab 咆贬,將/home 所在的filesystem 裝置改為/dev/sdb1 之類的新分割槽败徊,然后mount -a 測(cè)試看看是否正確,如果正確的話掏缎,才是順利結(jié)束了這次的動(dòng)作皱蹦。
當(dāng)我有兩個(gè)文件,分別是 file1 與 file2 眷蜈,這兩個(gè)文件互為 hard link 的文件沪哺,請(qǐng)問(wèn), 若我將 file1 刪除酌儒,然后再以類似 vi 的方式重新創(chuàng)建一個(gè)名為 file1 的文件凤粗, 則 file2 的內(nèi)容是否會(huì)被更動(dòng)?
這是來(lái)自網(wǎng)友的疑問(wèn)今豆。當(dāng)我刪除file1 之后, file2 則為一個(gè)正規(guī)檔案柔袁,并不會(huì)與他人共同分享同一個(gè)inode 與block 呆躲,因此,當(dāng)我重新建立一個(gè)檔名為file1 時(shí)捶索,他所利用的inode 與block 都是由我們的filesystem 主動(dòng)去搜尋meta data 插掂,找到空的inode 與block 來(lái)建立的, 與原本的file1 并沒(méi)有任何關(guān)連性喔!所以辅甥,新建的file1 并不會(huì)影響file2 呢酝润!
第9章
練習(xí)文件的壓縮與打包,
情景題:2,3
?情境模擬題二:妳想要逐時(shí)備份/srv/myproject 這個(gè)目錄內(nèi)的資料璃弄,又擔(dān)心每次備份的資訊太多要销, 因此想要使用dump 的方式來(lái)逐一備份資料到/backups 這個(gè)目錄下。該如何處理夏块?
?目標(biāo):了解到dump 以及各個(gè)不同level 的作用疏咐;
?前提:被備份的資料為單一partition ,亦即本例中的/srv/myproject
?需求:/srv/myproject 為單一filesystem 脐供,且在/etc/fstab 內(nèi)此掛載點(diǎn)的dump 欄位為 1
實(shí)際處理的方法其實(shí)還挺簡(jiǎn)單的浑塞!我們可以這樣做看看:
1.先替該目錄制作一些資料,亦即復(fù)制一些東西過(guò)去吧政己!
cp -a /etc /boot /srv/myproject
2.開(kāi)始進(jìn)行dump 酌壕,記得,一開(kāi)始是使用level 0 的完整備份喔歇由!
mkdir /backups
dump -0u -j -f /backups/myproject.dump /srv/myproject
上面多了個(gè)-j 的選項(xiàng)卵牍,目的是為了要進(jìn)行壓縮,減少備份的資料量印蓖。
3.嘗試將/srv/myproject 這個(gè)檔案系統(tǒng)加大辽慕,將/var/log/ 的資料復(fù)制進(jìn)去吧!
cp -a /var/log/ /srv/myproject
此時(shí)原本的/srv/myproject 已經(jīng)被改變了赦肃!繼續(xù)進(jìn)行備份看看溅蛉!
4.將/srv/myproject 以level 1 來(lái)進(jìn)行備份:
dump -1u -j -f /backups/myproject.dump.1 /srv/myproject
ls -l /backups
妳應(yīng)該就會(huì)看到兩個(gè)檔案,其中第二個(gè)檔案(myproject.dump.1) 會(huì)小的多他宛!這樣就搞定啰備份資料船侧!
?情境模擬三:假設(shè)過(guò)了一段時(shí)間后,妳的/srv/myproject 變的怪怪的厅各,妳想要將該filesystem 以剛剛的備份資料還原镜撩, 此時(shí)該如何處理呢?妳可以這樣做的:
1.先將/srv/myproject 卸載队塘,并且將該partition 重新格式化袁梗!
umount /dev/hdc6
mkfs -t ext3 /dev/hdc6
2.重新掛載原本的partition ,此時(shí)該目錄內(nèi)容應(yīng)該是空的憔古!
mount -a
妳可以自行使用df 以及l(fā)s -l /srv/myproject 查閱一下該目錄的內(nèi)容遮怜,是空的啦!
3.將完整備份的level 0 的檔案/backups/myproject.dump 還原回來(lái):
cd /srv/myproject
restore -r -f /backups/myproject.dump
此時(shí)該目錄的內(nèi)容為第一次備份的狀態(tài)鸿市!還需要進(jìn)行后續(xù)的處理才行锯梁!
4.將后續(xù)的level 1 的備份也還原回來(lái):
cd /srv/myproject
restore -r -f /backups/myproject.dump.1
此時(shí)才是恢復(fù)到最后一次備份的階段即碗!如果還有l(wèi)evel 2, level 3 時(shí),就得要一個(gè)一個(gè)的依序還原才行陌凳!
第10章
vi操作部分剥懒,簡(jiǎn)單看一下操作即可。
第11章
變量的顯示與設(shè)置
變量?jī)?nèi)容的刪除合敦、替代與替換
數(shù)據(jù)流重定向
命令執(zhí)行的判斷依據(jù):;,&&,||
管道命令
簡(jiǎn)答題:
如何配置一個(gè)變量名稱為 name 內(nèi)容為 It's my name 初橘?
name=It\'s\ my\ name 或 name="It's my name"
?bash 環(huán)境設(shè)定檔主要分為哪兩種類型的讀取蛤肌?分別讀取哪些重要檔案壁却?
(1)login shell:主要讀取/etc/profile 及~/.bash_profile
(2)non-logni shell:主要讀取~/.bashrc 而已。
?CentOS 5.x 的man page 的路徑設(shè)定檔案裸准?
/etc/man.config
試說(shuō)明 ', ", 與 ` 這些符號(hào)在變量定義中的用途展东?
參考變數(shù)規(guī)則那一章節(jié),其中炒俱, " 可以具有變數(shù)的內(nèi)容屬性盐肃,' 則僅有一般字元,至于` 之內(nèi)則是可先被執(zhí)行的指令权悟。
連續(xù)命令中砸王, ;, &&, || 有何不同?
分號(hào)可以讓兩個(gè)command 連續(xù)運(yùn)作峦阁,不考慮command1 的輸出狀態(tài)谦铃, && 則前一個(gè)指令必需要沒(méi)有錯(cuò)誤訊息,亦即回傳值需為0 則command2 才會(huì)被執(zhí)行榔昔, || 則與&& 相反驹闰!
請(qǐng)問(wèn) foo1 && foo2 | foo3 > foo4 ,這個(gè)命令串當(dāng)中撒会, foo1/foo2/foo3/foo4 是命令還是文件嘹朗? 整串命令的意義為?
foo1, foo2 與foo3 都是指令诵肛, foo4 是裝置或檔案屹培。整串指令意義為:
(1)當(dāng)foo1 執(zhí)行結(jié)果有錯(cuò)誤時(shí),則該指令串結(jié)束怔檩;
(2)若foo1 執(zhí)行結(jié)果沒(méi)有錯(cuò)誤時(shí)褪秀,則執(zhí)行foo2 | foo3 > foo4 ;其中:
(2-1)foo2 將stdout 輸出的結(jié)果傳給foo3 處理薛训;
(2-2)foo3 將來(lái)自foo2 的stdout 當(dāng)成stdin 溜歪,處理完后將資料流重新導(dǎo)向foo4 這個(gè)裝置/檔案
第12章 正則表達(dá)式與文件格式化處理
grep的使用
sed工具:注意考試得是這一節(jié)的例題
awk工具的使用
情景練習(xí)1,2
?情境模擬題一:透過(guò)grep 搜尋特殊字串,并配合資料流重導(dǎo)向來(lái)處理大量的檔案搜尋問(wèn)題许蓖。
?目標(biāo):正確的使用正規(guī)表示法;
?前提:需要了解資料流重導(dǎo)向,以及透過(guò)子指令$(command) 來(lái)處理檔名的搜尋膊爪;
我們簡(jiǎn)單的以搜尋星號(hào)(*) 來(lái)處理底下的任務(wù):
1.利用正規(guī)表示法找出系統(tǒng)中含有某些特殊關(guān)鍵字的檔案自阱,舉例來(lái)說(shuō),找出在/etc 底下含有星號(hào)(*) 的檔案與內(nèi)容:
解決的方法必須要搭配萬(wàn)用字元米酬,但是星號(hào)本身就是正規(guī)表示法的字符沛豌,因此需要如此進(jìn)行: [root@www ~]# grep '\*' /etc/*
你必須要注意的是,在單引號(hào)內(nèi)的星號(hào)是正規(guī)表示法的字符赃额,但我們要找的是星號(hào)加派,因此需要加上跳脫字符(\)。但是在/etc/* 的那個(gè)* 則是bash 的萬(wàn)用字元跳芳!代表的是檔案的檔名喔芍锦!不過(guò)由上述的這個(gè)結(jié)果中,我們僅能找到/etc 底下第一層子目錄的資料飞盆,無(wú)法找到次目錄的資料娄琉, 如果想要連同完整的/etc 次目錄資料,就得要這樣做: [root@ www ~]# grep '\*' $(find /etc -type f)
2.但如果檔案數(shù)量太多呢吓歇?如同上述的案例孽水,如果要找的是全系統(tǒng)(/) 呢?你可以這樣做: [root@www ~]# grep '\*' $(find / -type f)
-bash: /bin/grep: Argument list too long
真要命城看!由于指令列的內(nèi)容長(zhǎng)度是有限制的女气,因此當(dāng)搜尋的對(duì)象是整個(gè)系統(tǒng)時(shí),上述的指令會(huì)發(fā)生錯(cuò)誤测柠。那該如何是好炼鞠?此時(shí)我們可以透過(guò)管線命令以及xargs 來(lái)處理。舉例來(lái)說(shuō)鹃愤,讓grep 每次僅能處理10 個(gè)檔名簇搅,此時(shí)你可以這樣想:
a.先用 find 去找出檔案;
b.用xargs 將這些檔案每次丟10 個(gè)給grep 來(lái)作為參數(shù)處理软吐;
c.grep 實(shí)際開(kāi)始搜尋檔案內(nèi)容瘩将。
所以整個(gè)作法就會(huì)變成這樣: [root@www ~]# find / -type f | xargs -n 10 grep '\*'
3.從輸出的結(jié)果來(lái)看,資料量實(shí)在非常龐大凹耙!那如果我只是想要知道檔名而已呢姿现?你可以透過(guò)grep 的功能來(lái)找到如下的參數(shù)! [root@www ~]# find / -type f | xargs -n 10 grep -l '\*'
?情境模擬題二:使用管線命令配合正規(guī)表示法建立新指令與新變數(shù)肖抱。我想要建立一個(gè)新的指令名為myip 备典, 這個(gè)指令能夠?qū)⑽蚁到y(tǒng)的IP 捉出來(lái)顯示。而我想要有個(gè)新變數(shù)意述,變數(shù)名為MYIP 提佣,這個(gè)變數(shù)可以記錄我的IP 吮蛹。
處理的方式很簡(jiǎn)單,我們可以這樣試看看:
1.首先拌屏,我們依據(jù)本章內(nèi)的ifconfig, sed 與awk 來(lái)取得我們的IP 潮针,指令為:
[root@www ~]# ifconfig eth0 | grep 'inet addr' | \
> sed 's/^.*inet addr://g'| cut -d ' ' -f1
2.再來(lái),我們可以將此指令利用alias 指定為myip 喔倚喂!如下所示: [root@www ~]# alias myip="ifconfig eth0 | grep 'inet addr' | \
> sed 's/^.*inet addr://g'| cut -d ' ' -f1 "
3.最終磷蛹,我們可以透過(guò)變數(shù)設(shè)定來(lái)處理MYIP 喔袄膏! [root@www ~]# MYIP=$( myip )
4.如果每次登入都要生效,可以將alias 與MYIP 的設(shè)定那兩行,寫入你的~/.bashrc 即可罕拂!
第13章shell script
1团甲、課后作業(yè)題
2挎春、傳遞參數(shù)給腳本的計(jì)算機(jī)題旗唁。
1、請(qǐng)建立一支 script ,當(dāng)你執(zhí)行該 script 的時(shí)候,該 script 可以顯示:
1.你目前的身份(用 whoami ) 2.你目前所在的目錄(用 pwd)
#!/bin/bash
echo -e "Your name is ==> `whoami`"
echo -e "The current directory is ==> `pwd`"
2刑巧、請(qǐng)自行建立一支程序,該程序可以用來(lái)計(jì)算『你還有幾天可以過(guò)生日』啊?
#!/bin/bash
read -p "Pleas input your birthday (MMDD, ex> 0709): " bir
now=`date +%m%d`
if [ "$bir" == "$now" ]; then
echo "Happy Birthday to you!!!"
elif [ "$bir" -gt "$now" ]; then
year=`date +%Y`
total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))
echo "Your birthday will be $total_d later"
else
year=$((`date +%Y`+1))
total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))
echo "Your birthday will be $total_d later"
fi
3喧兄、讓用戶輸入一個(gè)數(shù)字,程序可以由 1+2+3... 一直累加到用戶輸入的數(shù)字為止。
#!/bin/bash
read -p "Please input an integer number: " number
i=0
s=0
while [ "$i" != "$number" ]
do
i=$(($i+1))
s=$(($s+$i))
done
echo "the result of '1+2+3+...$number' is ==> $s"
4啊楚、撰寫一支程序,他的作用是: 1.) 先查看一下 /root/test/logical 這個(gè)
名稱是否存在; 2.) 若不存在,則建立一 個(gè)文件,使用 touch 來(lái)建立,建立完成后離開(kāi);
3.) 如果存在的話,判斷該名稱是否為文件,若為文件則 將之刪除后建立一個(gè)目錄,文件名
為 logical ,之后離開(kāi); 4.) 如果存在的話,而且該名稱為目錄,則移除 此目錄!
#!/bin/bash
if [ ! -e logical ]; then
touch logical
echo "Just make a file logical"
exit 1
elif [ -e logical ] && [ -f logical ]; then rm logical
mkdir logical
echo "remove file ==> logical"
echo "and make directory logical"
exit 1
elif [ -e logical ] && [ -d logical ]; then rm -rf logical
echo "remove directory ==> logical"
exit 1
else
echo "Does here have anything?"
fi
5吠冤、我們知道 /etc/passwd 里面以 : 來(lái)分隔,第一欄為賬號(hào)名稱。請(qǐng)寫一只程序,可以將
/etc/passwd 的第一欄 取出,而且每一欄都以一行字符串『The 1 account is "root"
』來(lái)顯示,那個(gè) 1 表示行數(shù)恭理。
#!/bin/bash
accounts=`cat /etc/passwd | cut -d':' -f1`
for account in $accounts
do
declare -i i=$i+1
echo "The $i account is \"$account\" "
done