You are on page 1of 55

Linux cho ngu `i dng o

: Kostromin V. A. Tc gia i: Phan V Dich bo nh Thinh

Muc luc
1 2 n phn pho v cc ba i HD H Linux: lich su Ci d t HD i Windows a H Linux trn cng my tnh vo 2.1 Chua t . . . . . . . . . . . . . . . . . . . . . . . a n bi ci d 2.2 Phng xa v nhu `i khuyn . . . . . . . . . . . . . . . ng lo i d 2.3 Phn vng trn d a v qu trnh kho o ng . . . . . . . . . 2.3.1 The ad a" . . . . . . . no l ca u trc "hnh hoc cu ng phn vng a d 2.3.2 Phn vng v ba cu a . . . . . . . i d 2.3.3 Qu trnh kho o ng HD H cng ty Microsoft . . . ` 2.3.4 Va i cc d n . . . . . . . . . . . . . . . a lo e n d vo 2.4 Lu a cho n trnh kho i d ng . . . . . . . . . . . . . . . . . . o i d a HD 2.4.1 Trnh kho o ng LILO cu H Linux . . . . . . 2.4.2 Cc trnh kho o ng khc . . . . . . . . . . . . . . i d 2.4.3 Cc phu o ng n kho o ng . . . . . . . . . . . . . i d 2.5 Chua a . . . . . . . . . . . . . . n bi cc phn vng trn d 2.5.1 Lo `i khuyn khi tao phn vng . . . . . . . . . . . 2.5.2 Chu a . . . . . . . . . . e phn chia o d o ng trnh d i d a NT 2.6 Windows NT v Linux: kho o ng qua OS Loader cu 2.7 Su o ng LILO . . . . . . . . . . . . . . . dung trnh kho i d 2.7.1 Ci d t v ca a u hnh LILO . . . . . . . . . . . . . . `u hnh khc sau Linux . . . . . . 2.7.2 Ci d t cc he a ie d 2.7.3 Chuye n thu muc /boot ln phn vng DOS . . . . ` ng loadlin.exe . . . . . . i d 2.8 Kho ng Linux tu ` o MS-DOS ba Bash l g? . . . . . . . . . . . . . . . . . . . . . . 3.1 He vo 3.2 Cc k tu c bie a t . . . . . . . . . . . . . . . . . . . d 3.3 Thu nh . . . . . . . . . . . . . . . . . c thi cc cu le 3.3.1 Thao tc ; . . . . . . . . . . . . . . . . . . . 3.3.2 Thao tc & . . . . . . . . . . . . . . . . . . 3.3.3 Thao tc && v || . . . . . . . . . . . . . . . `u vo/d `u ra tiu chua 3.4 Da a n . . . . . . . . . . . . . . 3.4.1 Dng du lie u vo-ra . . . . . . . . . . . . . 3.4.2 Le nh echo . . . . . . . . . . . . . . . . . . . 3.4.3 Le nh cat . . . . . . . . . . . . . . . . . . . . `u vo/d `u ra, d `u loc 3.5 Chuye ng d `ng o a a u a n hu ng v d o o dung >, < v >> . . . . . . . . . . . . . . 3.5.1 Su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 3 5 6 6 7 8 10 11 11 13 14 14 14 17 17 20 20 23 23 24 27 27 28 29 29 29 29 30 30 30 31 31 31

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

MUC LUC dung | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.2 Su `u 3.5.3 Da loc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a he . . . . . . . . . . . . . 3.6 Tham bie `ng cu n v cc bie n so . Mi tru vo o 3.6.1 Cc dang tham bie n khc nhau . . . . . . . . . . . . . . . . . . c cu a he . . . . . . . . . . . . . . . . . . . . . . . . 3.6.2 Da vo u nha 3.6.3 Bie `ng PATH . . . . . . . . . . . . . . . . . . . . . . n mi tru o 3.6.4 Bie n mi tru o `ng IFS . . . . . . . . . . . . . . . . . . . . . . . 3.6.5 Thu `i v thu n tho muc hie muc c nhn . . . . . . . . . . . . . . 3.6.6 Cu le nh export . . . . . . . . . . . . . . . . . . . . . . . . . . c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 Khai trie u thu n bie 3.7.1 Khai trie c . . . . . . . . . . . . . . . . . . . . . . . u ngoa n da 3.7.2 Thay the da u ng (Tilde Expansion) . . . . . . . . . . . . . . . 3.7.3 Php the cc tham bie n v bie n so . . . . . . . . . . . . . . . . 3.7.4 Php the cc cu le nh . . . . . . . . . . . . . . . . . . . . . . . 3.7.5 Php the so hoc (Arithmetic Expansion) . . . . . . . . . . . . . 3.7.6 Phn chia tu ` (word splitting) . . . . . . . . . . . . . . . . . . . u tn ta 3.7.7 Khai trie p tin v thu n cc ma muc (Pathname Expansion) 3.7.8 Xa cc k tu c bie a t . . . . . . . . . . . . . . . . . . . . . . d 3.8 Shell - mo la t ngn ngu p trnh . . . . . . . . . . . . . . . . . . . . . . tu (hoa if v test 3.8.1 Ton c [ ]) . . . . . . . . . . . . . . . . . . . . n cu `u kie test v d 3.8.2 Ton tu c . . . . . . . . . . . . . . ie a bie u thu 3.8.3 Ton tu case . . . . . . . . . . . . . . . . . . . . . . . . . . . . select . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8.4 Ton tu for . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8.5 Ton tu while v until . . . . . . . . . . . . . . . . . . . . . . . 3.8.6 Ton tu 3.8.7 Cc hm so . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8.8 Tham so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a he v le 3.9 Script cu vo nh source . . . . . . . . . . . . . . . . . . . . . . 3.10 Cu le nh sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

iii 33 34 34 35 36 38 38 38 38 39 39 40 40 41 41 41 41 42 42 42 43 46 46 47 48 48 48 49 50

ng Danh sch ba
2.1 2.2 3.1 3.2 3.3 3.4 a sector kho i d Ca o u trc cu ng chnh . . . ` a HD Nhu ca a cu u su dung khng gian d H `u loc . . . . . . . . . . . Cc cu le a nh d n d c biet . . . . . Thay the cc tham bie a c . . . . . . . K tu inh dang da u nha xc d tu ta Cc k u . . . . . . . . . . . . . o ma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 15 34 36 37 42

NG DANH SCH BA

n dich cuo a Kostromin Victor Dy l ba `i dng" (sri sch tu n "Linux cho ngu o hoc) cu dung Linux cu a teppi. Ba n go t t) kinh nghie Alexeevich co u ng thm mo t vi (ra m su c d o c n ` vie t trn tie ng Nga. Theo yu ca u cu a Kostromin A. V., xin d o c d a ra cc lin ke t to i ba u u go y: c d http://rus-linux.net/book1.php?name=book1/oglavl http://linux-ve.chat.ru/

`u Lo `i ni d a

m o Lo `i ca n

` Linux cho m o Xin ca : Kostromin V. A. d gip d o vie t mo t cuo n sch ve n cc bc sau d ng khng trn ngu `i dng mo i tuye `i; Tru `ng d dnh cho teppi mo t vo t khoa o ng Manh Cu o o n n http://phoc.minidns.net d Dai Qu v Nguye Da t cuo ng e a n sch ny; hai bc Nguye d A n dung L a Hong Tun d TEX. Bc Nguye Dai Qu d cho gip trong vie d oc v su c su n 0.9. Xin hy gu i thu phin ba c teppi tai teppi@vnlinux.org ne . u nhu teppi c qun ai d nha

`n n quye Ba
`n GPL. Ni mo n gon, ban c dung ba n quye Cuo `i dng" ny su n "Bash cho ngu t cch nga o n the g: in, ta ng, bn, d `ng da o u lm ba t k thu t,... nhu n sau vo cc ba ng xin hy thm hai d o a mnh: sao cu http://rus-linux.net/book1.php?name=book1/oglavl http://teppi.org/l4u/ ` ha do vie Kostromin V. A. cu Tc gia `i dich khng chiu trch nhie ng nhu m ve u qua c su ngu o dung cuo n sch ny gy ra.

n v ca p nha t Phin ba n 0.9 Phin ba


Ca m 2005 p nha t cuo i cng Ngy 9 thng 2 na i kie ` ` nghi gip , lo a ba n dich cu Moi d nghi su a d i, thng bo lo i chnh ta c cu ng nhu e e n thu o d i cho Phan V teppi@vnlinux.org. d dich xin gu nh Thinh theo d o ia ch

Chu o ng 1 v cc ba n phn pho i HD H Linux: lich su

Chu o ng 2 Ci d t HD a H Linux trn cng my tnh vo i Windows


`u nan Trung Quo i d Van su a c kho n nga n gon cch ci d a ba n phn pho Thng thu `ng trn cc d ng da t a cu c hu a i Linux d o o t ` ` ` Linux. Ngoi ra, trn Internet ban c the e tm tha y ra t nhie u cuo n sch n ve va n d ny. V ta ` ca cc ban phn pho n (Debian, Slackware, Fedora, Mandrake, ...) d ng e c cuo i lo u d n hu o n ci d dung. Hy cho da t ra ` d a o t chi tie t, cho moi tnh huo ng su i v hy vong trong tu o ng lai n sch ny. Chnh y trong cuo n dich Tie a nhu khng xase v va c ba ng cuo ng Vie t cu n sch se ny, tc gia a ra cc bu o c cu the cu a vie c ci d t, m xin ba n d c hy tm cc khng d u a o `n bie cuo ng da ng. Thay vo d c khi ci ng g ban ca l nhu n hu n tu t v chua n bi tru o o ng u o ` d t, d `i, tc gia se c bie t Linux trn my d ng g d a o i cu the a a ng tho v chi tie t vo nhu t khi ci d d c mot trong cc he d `u hnh Windows cung nhu vie c kho i d ng nhie `u he d `u hnh. tnh o ie ie ` ` ` cho Va n ngu `i dng Vie c khi ba t d e a lm quen v n lo n d o , pha t Nam tru u hoc Linux d o o HDH dng Windows nhuWindows 98, Windows ra t c the d c kinh nghie m su du ng cc thucte `u tin m ngu 2000 v Windows XP. V trn `i Linux kh c the `i a th tam tho l HD o Hd dng lm quen. Nhu `i dng d i HD lm vie , mo t cch tu u ngu c vo the nhin, ne o H Windows i Linux, th ho khng muo nghie v quye n ma t d mi tru o ng lm vie ` inh thu i t d m vo c quen a mnh, cng vo thuo i nhu i du i Windows. Ra ng g d tao ra v d ca c cu u hnh du t may l o o nha ng thu i d nhu i v trn mo khng d nh ma . Bo t thie t pha t ta t ca t my tnh c the cng trn d `u ho cho "chung so a (ne a!). Chnh u ng ha bnh hai HD m ch nhie u c d n nu H v tha pha du v the H Linux trn my tnh d i se t HD t mo ni cch ci d a ci d a , o t trong cc he o `u hnh cu a hng Microsoft. d ie

2.1

` ng mo C the t Linux ba a ci d t trong cc cch sau: Tu ` o a CD-ROM d n sao chp Linux trn o Tu ` ba ng a cu d ta a mang no Tu ` my chu p tin cu i bo qua NFS; Tu ` my tnh khc trong mang no i bo qua SMB;

n bi ci d Chua t a

Ci d t HD i Windows a H Linux trn cng my tnh vo

xa (v du tu Tu ` my tnh o ` Internet) qua giao thu c FTP; WWW qua giao thu Tu ` mo c HTTP. t my chu a tc gia th thua Theo kie ` t Linux tu a n tie n v c tnh thu nha t l ci d n c nhn cu c te CD-ROM, ho n nu a vie c mua cc d a CD by gio khng gy kh kha n g. ` `u ci d nhu Tru c khi ba t d t, hy thu tha ` gia ng thng tin a a p (hy vie t ln mo t to y) ta t ca o ` ca u hnh ca n thie t cu a my tnh. Ne u nhu my tnh cu a ba n ta m tho i va n cn lm vie ` i c du o `u thng tin ne i HD n se tm tha y ra t nhie u nha n chuo t pha H Windows 95/98/2000/XP, th ba ` vo bie y ban c the y ga n he t ta t ca nh Properties. O d tm tha u tu o ng My Computer, chon le `n thie `n tm kie thng tin ca , th ca t. Ne u nhu y thng tin no d m theo cc cch ban khng tha vie vo my v d khc, ke ng dng chu trn thie oc nhu c mo t bi. ca `n thu tha De `ng ng thng tin ca oc, xin d u u y danh sch nhu u p. Xin d gip ban d o c d a ra d ng ghi cng nhie `u du ` mo lu nhu `i bie lie ng thng ng v hy co ga u ve t thie t bi cng to t (ta t ca o `nd v ca tin c the t ng du lie ca e a y), nhu u ny se n khi ci d u hnh, khi m vie c tm tm tha kie n. n ho kh kha m chng se BIOS: n xua nh sa t; n. so hie u phin ba a o Controller o ng: loai (IDE hay SCSI) v dung lu a cu a (ne oc d d u nhu o ng cu ban d ` che dng d a IDE, th ca o n kie m tra xem BIOS c ho tro c truy ca p o d LBA hay vie khng): hda (Master trn controller so 1 hay Primary Master); hdb (Slave trn controller so 1 hay Primary Slave); hdc (Master trn controller so 2 hay Secondary Master); hdd (Slave trn controller so 2 hay Secondary Slave). u m cu n xua a adapter SCSI (ne nh sa t v so ma u c). ` a bo Dung lu (tnh ba ng Kilobyte nho o ng cu CD-ROM: Giao die n (IDE, SCSI, hay giao die n khc); i IDE, cu n xua d i cc o a CD-ROM khng pha ng nhu o i vo d t v so SCSI - nh sa ma u m. Chuo t: loai chuo t (serial, PS/2, hay bus mouse); giao thu c (Microsoft, Logitech, MouseMan, v.v. . . ); so nt; `n so m vo co a co d i chuo tu . o ng d i vo t ca ng no i tie p th ca thu cu Cac mn hnh

2.2 Phng xa v nhu `i khuyn ng lo n xua nh sa t; u m (hay chipset su dung) so ma dung lu ; nho o ng bo Mn hnh n xua nh sa t u m; so ma

`n so `u doc v theo chie `u a ta cc gi tri gio i han (min, max) cu i theo chie lm mo c the ngang (nhu i mn ng gi tri ny ban d i km vo oc ch y trong ti lie u d tm tha hnh, Windows khng hie ng gi tri ny, v chng ra t quan trong trong n thi nhu ` khi ca o u hnh giao die n d hoa). Ne u nhu ba n d c muo n ke t no i ma ng (m UNIX ni chung l HD ng), o H dnh cho ma th hy ghi lai nhu ng du lie u sau: u m cac mang; n xua nh sa ma t v so IP cu a mnh; d ia ch a my tnh trong mang; tn cu ma t na mang con (subnet mask); IP cu a gateway; d ia ch `n (DNS server); IP cu a cc my chu tn mie d ia ch IP cu a my chu WINS(Windows Internet Name Service); d ia ch `n cu a cng ty ban d tn mie oc. n xua Loai v nh sa t cac m thanh v game controller (ne u nhu c)

2.2

Phng xa v nhu `i khuyn ng lo

Tru c khi ci d t HD a t nn thu n vi thao tc "phng xa" ("phng o c hie H Linux sau Windows, ra vng lai o i phn n ghi chy ho a chy"). V ra pha a, thay d oc se o t c the ban d d i ba n chu kho i cc ta ng nhu o o ng (Boot Record) v lm vie c vo p tin kho ng cu p tin ca u hnh. i d i d cc ta tc ny khng pha cung d lai d lai mo t ke i lc no theo Cc thao muo em em t qua n, v trong i a ban d tru `ng ho khng kho a. C bie oc se o u c the my tnh cu ng nu t cch thot ra o p xa d ` ` khoi tnh huo lie cn l mo ng ny v phuc ho i du u ca n thie t khng d t cu hoi. Nhu ng ro i vo de t l vo ci d t Linux. Chnh dng nha `n d `u tin tnh huo c i ngu `i dng la a a ng nhu y he t su va o `n tao mot d a me c ho `u tin, ca `m kho `m gip phu `i he i d v va a me a o y, d ng hay mo t d tho ng ` (ne a ta o). Thu hai, ca n ghi la i nhu ng du lie u c gi tri (backup). V thu oc cn chu u ban d `m, CD) ci d ba, chua t cho he `i khuyn quan trong a me . Mo a n bi cc ta p tin (d tho ng cu t lo t mo khc: ne xay ra khng theo muo u c g d n th khng nn hoang mang. Xin chia se `n: khi la `n d `u tin tc gia ci Linux trn my tnh d kinh nghie a c Windows NT, v m buo ` tc gia l my tnh khng the i d ngh ke l khng o u e t qua kho ng d u he t va n d o c. Khng hie ` cn cch g khc ngoi d nh da ng la i o d a v ci d t la i tu d u. By gio th tc gia d ` ` i a hie u l a `i lai ne ` ng Werner c the inh qu vo phuc ho u nhu t d i vng. V va y c the ni ra khng quye Almesberger d ng da `i khuyn sau cho ng lo ng, khi trong hu u n su o dung LILO c d a ra nhu vay: ngu o i dng khi ro i vo tru o ng ho p kh kha n nhu ` `

Ci d t HD i Windows a H Linux trn cng my tnh vo ng ho moi cch d Khng hoa khng lm vie e t. Ne u nhu c, hy thu tm ra nguyn c g d `u la `n thao tc cu a mnh. Ch sau khi d nhn, kie i thu c mo n cc bu m tra lai nhie c hie o a lo su i. Hy d Da c bie `ng ho ng g ban d oc ti lie oc u. t trong cc tru tho ng lm nhu o p, khi he khng mong d o i.

Xin thm mo c l cc ta `i khuyn pho n sau: * Hy xem cc ta p tin log, tu p tin ghi t lo bie `n tm chng trong thu a he lai su n cu tho ng (ca kie muc /var/log). ` ti cu i l d a cuo trn, qu trnh ci d Nhu t HD e ni o a n d H Linux ni ring khng pha ` sch. Ngu o i dng ca n tm cc cuo n hu o ng da n tu o ng u ng. Tuy nhin, tc gia cu ng muo n d ` u a ra vi lo `i dng d t. `i khuyn d u inh trong khi ci d a e t d gip ngu o a ra quye Thu nha `ng vo ng thng bo se hie u oc nhu t, d i vng v hy ch d n thi trn mn hnh, xin d oc ke lo v hy suy ngh De ng cho lo `i khuyn ny `i. ky khi chon cu tra u minh chu lai ong n ` ng phu ci Red Hat 7.1, v tu tru `ng ho o ng nha n ln nt Next, v cho ra o p khi tc gia d d nh l d . Ke the l tc gia khng theo ma c u e i u p d n my ny qua cc giao t qua truy ca o c d thu c mang (telnet, ftp, NFS, Samba), ma c d d ca u hnh giao die n mang cho my. Nguyn v tu o a d a d nhn ltrong phu c d `ng lu t, inh th tu u a ng he t cc o ng n theo ma o o c ci d `ng lu ` truy ca p tu ma ng. D e mo truy ca p ny, th trong qu trnh ci d t ca n ch r cc di ch vu d ` a u o c `ng vo . Nhu khuyn khng nn d mo hai, tc gia i vie o i vng! Thu c tu ng chng ta qu vo ` d `i dng khng kh kha n g khi g o o o ng kho ng vo giao die n d hoa. V cuo i cng ngu i d o lenh startx u hnh giao dien d ` hoa (ne cu , cn vie lm vie ng) c ca o u c g d c khng d vo i ngu `i dng mo i ra t kh thnh cng. o `n quye `u i d Sau khi lm xong cc cng vie c kho to inh se o c phng xa, ca t d chu ng nhie `n chia o HD t, tu c l ca a (phn vng) d a thnh so e a no, chua n bi cc o d ci d d the H nhu ` phn vng ca c khi chuye c cu the a, xin e n thie t. Nhu n sang cc bu d chua n bi o d ng tru o o HDH. Ne khng d ` d o c ni qua mo t cht ve ca u trc cu a d a v qu trnh kho i d ng u ai d u o u `n l thuye ` qua chng v chuye kin nha ng d e oc pha e e n d d t ny, th c the bo n tha n va n d chon chu o ng. o ng trnh kho i d

2.3
2.3.1

i d ng Phn vng trn d a v qu trnh kho o


a d no l ca u trc "hnh hoc cu The a"

`m vi d ` lo Nhu ng go p tu ` tnh, na m trn cng mo a cu a c phu oc bie t, d t truc v quay ban d a ny, di ` ` vo n to c lo n. D o c/Ghi du lie u d o c thu c hie n bo i cc d u d c na m giu a i va u cc d a o ` tm d a ra ra ngoi cu a d `u d chuye a. Vng trn d ra trn cc d a khi quay quanh a oc ve n tu `ng ln nhau goi l cylinder. Mo i ` chng goi l rnh (track), cn ta m cho p ho p cc rnh na i sector 512 byte thng tin. V the rnh lai chia thnh cc sector, v c the c a ghi vo mo d a mo d `ng l ta a thu ie m cu t o d p ho cylinder/so rnh trong cylinder/so sector trn o p ba s: so vie ci d `u tin cu a cc thua rnh hay cn (ba chu t l C/H/S ng: Tie a t ta t ngu ng Anh tu o ng u a d Cyliner/Head/Sector). Ba so D a vo i ca a". ny goi l ca u trc "hnh hoc cu u trc hnh hoc C/H/S c dung lu o ng C*H*S*512 byte. D a cu ng l cc thie l d c nho oc v ghi thng tin theo cc kho t bi kho i, tu i, v kch thu o ` `n d `u d a kho nha De t d ng mo a, ca a a a t cu i ba t sector (512 byte). c the ghi thng tin ln d ` d c l ch cho controller bie ng vi tr, tu u t ca n ghi thng tin ny vo sector no. Sector d o c theo so ` d cylinder, so thu tu d u d c (hay rnh) v so thu tu sector trn rnh. tu o nh d ia ch a thu

i d ng 2.3 Phn vng trn d a v qu trnh kho o

2.3.2

ng phn vng cu a d Phn vng v ba a

Trong cc he `ng d a thu u nguyn t c the d tho ng Intel o o o c chia thnh cc phn vng. Ra `u tin khng the a vie : cc phin ba n MS-DOS d nhn cu a c phn vng l nguyn nhn lich su na a DOS. dung d su ng cu n, m dung lu a lo a lai pht trie u n nhanh ho n kha o c cc d o ng d ` De Khi d a thnh cc phn vng. ra vie u ie d ngh u ny, trong sector lm d c chia o d o c d ba `u tin trong cylinder so a d a rnh d so a thnh a (sector so a d 0 cu 0 cu 0) ghi nho ng chia o cc phn vng (partition table). Mo a va . Mo u i phn vng d t d t l ring re t o c dng nhu mo ` tru t cc he `ng ho ie a l trong cc phn vng khc nhau c the d u hnh ci d o p ni ring d khc nhau. i ba ng phn vng chu n ghi 16 byte cho 4 phn vng chnh. Mo n ghi c ca Ba a 4 ba u trc nhu sau:
knh giao tc struct partition { char active; /* char begin[3]; /* char type; /* char end[3]; /* int start; /* int length; /* }; 0x80: phn vng kch hoat, 0: khng kch hoat */ `u tin, 24bit CHS sector d a loai phn vng (v du, 83 LINUX_NATIVE, 82 LINUX_SWAP) */ i cng, 24 bit */ CHS sector cuo a sector d `u tin (32-bit, tnh tu cu ` so 0) */ a sector c trong phn vng (32 bit) */ so

ng phn vng d i chu Ba `ng d a thu u o o c tao bo o ng trnh fdisk. Trn HD H Linux ngoi ` chu i chu n tho ng" (tuy va y ra t khc so vo o ng trnh fdisk "truye o ng trnh fdisk trong MS-DOS lm viec vo v Windows), cn c hai chu o ng trnh d i phn vng d a: cfdisk v sfdisk. e dnh d ng phn vng d Chu i ba a: n e ng nhu lm vie c vo o ng trnh cfdisk, gio fdisk ch khng quan tm ch d i fdisk o a. Ch khc bie e n thng tin c trn d t vo n thua n giao die ong trnh sfdisk c vi kha n su da dung le tie n (thu c d n). Chu o o n: ch nh v he tho ng trnh d a d na ng cao ho a. c cu n, v du, cho php thao tc trn cc phn vng d a BIOS (Int 13h) DOS su `ng begin v end cua bang phn vng v Interrupt 13 cu dung tru o dung d d i d n ho a, v the a c dung lu e truy ca p to khng the su o ng lo n 8,4 Gbyte, ngay ca ` ` sau), cn phn vng th khng the vo i cc BIOS mo i (ve n ho ni d e e va n d ny se n o lo n 2,1 Gbyte (nhu ng d l do ha n che cu a he tho ng ta p tin FAT16). y tro su dung tru Linux th ch o ng start v length cua bang phn vng d ` a v ho cc phn vng chu a d c l dung lu e at 2 Tbyte n 232 sector, tu d o ng c the c 4 dng cho cc phn ng chia o V trong ba vng, so a ch a d phn vng chnh trn d `u d han che ngay tu n 4. Khi m 4 phn vng tro thnh t, th ngu o i ` d n ho ` a : khng the lo ta thnh mo sng che ng (loai phn ra phn vng lgc. Mo t trong so cc phn vng chnh tro ro tao ra vng - 5 hay F hay 85 trong he `i su). V trong phn vng mo `i ta co mu ng ngu so o ro o mo ro dung tru dng d cc phn vng lgc. Phn vng u e ng khng d p m ch ghi o c su c tie `u tin cu a phn vng mo ro ng phn vng vo cc phn vng lgc. Sector d ba i a ng ghi nho vng mo ` bo n d u vo: mo t dng cho phn vng lgc, mo t cho phn ro ng khc, cn hai ci a oc su i phn vng mo ng chia a mnh, trong ba ng cn lai khng d ro cu u ng c mo t ba dung. Mo ny, cu ng gio e u ng nhu ng chnh, ch su d t trong phn vng mo ro dung c hai dng d a ra mo oc mot chuo ` ro phn vng lgc v mo va y, thu d i cc ma t xch tu u t phn vng mo ng. Nhu i ma `u tin m ta ng phn vng, ma ba phn vng chnh, v mo ba t xch d t xch tie a p theo a ba ng tie mo t phn vng lgc v vi tr cu p theo. i ny: Chu y ton bo chuo o ng trnh sfdisk trn Linux cho tha

Ci d t HD i Windows a H Linux trn cng my tnh vo


knh giao tc [root]# sfdisk -l -x /dev/hda Disk /dev/hda: 784 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 /dev/hda5 /dev/hda6 Boot * Start 0+ 190 0 0 190+ 381 190 190 381+ 381 381 381 End 189 783 380 783 189 189 783 380 380 380 #cyls 190594 0 0 191403 0 0 4030 0 0 #blocks 1526143+ 4771305 0 0 1534176 3237097+ 0 0 3237066 0 0 0 Id 6 5 0 0 6 5 0 0 7 0 0 0 System FAT16 Extended Empty Empty FAT16 Extended Empty Empty HPFS/NTFS Empty Empty Empty

i phn vng lgc c the So c khng han che a phn vng lgc theo nguyn ta , v mo chu ng phn vng v cc phn vng lgc cu a mnh. Tuy nhin trn thu ba c the va n c nhu ng ha n che i ho a SCSI v ho . V du, Linux khng the lm vie c vo n 15 phn vng trn cc d n 63 phn vng trn d a IDE. ro ro Phn vng mo a n (c a va ng trn mo t d t l, hay trong mo t phn vng mo ng chu c the the a no trong so goi l "me") ch lm mo t: khng mo t chu d d o ng trnh phn chia o c (fdisk v tu o ng tu ) c the ta o thm mo t phn vng mo ro ng thu hai. a thie Od a trn Linux ni ring (o a va u d t l) d p qua tn cu t bi: /dev/hda, o c truy ca /dev/hdb, /dev/sda, v.v. . . Cc phn vng chnh c thm so 1-4 trong tn thie t bi: /dev/hda1, /dev/hda2, /dev/hda3, cn phn vng lgc th c cc tn: /dev/hda5, /dev/hda6, /dev/ t d `u tu ` ca trn c the qua cc . . . (ba ` so ` nhu ng g d a e e 5). Tu p d n o suy ra tai sao lai c the bo n l phn vng chnh thu tn nhu ba v thu tu o /dev/hda3 hay /dev/hda4 (d n gia khng d u oc tha y /dev/hda5 (phn vng lgc trong phn o c tao ra) v ngay sau /dev/hda2 ban d mo rong /dev/hda2), v sau d cd vng th vie so tu `ng. nh lai theo thu thng thu o ` Trong Windows cc phn vng lgc nha t d ` chu ci), ba ci cuo u a n d u tu i o c tn (chu dng dnh cho phn vng chnh. V du ne u mo t d a cu ng c hai phn vng chnh (C: v D:) rong tao ra hai phn vng lgc, th nhung ro v mo t phn vng mo ng, trong phn vng mo phn vng lgc ny se t tn E: v F:. Xin ni thm, trong Windows NT v 2000/XP d u a o c d vng d a. a ccphn c the o thay d i tn cu

2.3.3

`u hnh c l g, th d `u d `u khie `n nap HD D he t d ie e a ie d c the ba n my tnh, ca H vo bo i d a cc HD nho H khc nhau. Chng ta ch quan . V the o hy xem xt qua qu trnh kho ng cu `m, i d i d tm d ` o ng, nn se ` d a cu khng xem xt d a me e o e o n vie c kho ng tu d n vie c kho ng tu t d `u tu ` CD-ROM v qua mang. Hy ba ` MS-DOS v MS Windows cu `ng qun ra ng, (xin d a u a HD a vie i su c pht trie n v hon thie n my tnh c nhn song song vo n cu pht trie H cu Microsoft v nhu ng quye inh su e t d n quye t dung trong cc HD o ng manh d H ny c anh hu a cc nh pht trie d inh cu n thie t bi).

i d ng HD Qu trnh kho o H cng ty Microsoft

i d ng 2.3 Phn vng trn d a v qu trnh kho o

`u tin se Nhu chay chu oc bie a t, khi ba t my tnh d ban d o ng trnh POST (Power On Self nghiem bo nho Test). Chu o ng trnh xc d nh dung lu o ng bo nho , thu i inh cc thnh , v xc d `n khc (bn phm, o i d adaptor. Trn mn hnh thu pha ng. . . ), kho `ng xua o ng cc the t hie n cu o n ` ` cc thng bo ve , ve , danh sch cc thie dung lu nho vie c thu m bo nho t bi nha o ng bo nghie l, co v v.v. . .). `m, bo ng COM ra (o ng v me a cu xu d c thu nghie a Int 19h l tm thie Sau khi hon thnh vie m POST goi Int 19h. Cng vie c cu t i d bi kho ng. Vie c tm kie m thu c hie n theo thu tu xc d nh trong Setup BIOS v theo cch o i m d sector ong u i d a cc thie tha so a c the o ng, th trong sector so 0 cu t bi tu u d kho ng. Ne 0 cua d o a c ban ghi kho ng chnh Master Boot Record (MBR). Hai byte cuo i cng cua i d i d MBR "so a c the o d mu nhie m", l da ng. u hie u cho bie t sector c MBR, v theo d kho ng phn vng d trn, v mo Ngoi "so a ba a d ni o mu nhie m" MBR cn chu t chu o ng trnh trnh kho c 446 (0x1BE) byte. nho c ch o ng chnh, kch thu o i d a sector kho i d ng 2.1 cho tha Ba t Windows. o a y ca u trc cu ng chnh sau khi ci d Dich chuye n 0x000 0x1BE 0x1FE ng 2.1: Ca a sector kho i d Ba o u trc cu ng chnh No i dung i d M cu a trnh kho o ng chnh ng phn vng o Ba d a "So mu nhie m" (0xAA55)

MS-DOS, Windows95 v NT ghi nho DOS MBR trong khi ci d t. Ngoi ra cu ng c the a a MS vo nh DOS sau: fdisk /mbr. tao MBR cu i cu le Xin tro lai vo i d a BIOS nap trnh kho i d i qu trnh kho o o ng. Int 19h cu ng chnh vo bo ` ` nho my tnh v chuye ie n quye n d u khie n cho chu o ng trnh ny. Nhu ng chu o ng trnh "b " ny khng d kha na i d nhu nho ng kho ng g m n c the u o l nap ng HD t ca lm d H; ta i d vo bo chu hai. o nho ng thu o ng trnh manh ho n trnh kho vng kch hoat v d c vo bo nho `u ny, ng phn De n tm trong ba u ie o lm d trnh o c d t. Hy ch d n t d `u tu `u tin cu i d a phn vng kch hoa kho hai, ba ` sector lgc d o a a e ng thu ` i d cum tu ` "ba t d `". V trnh kho hai trn cc he a o o u tu ng thu tho ng khc nhau c d di khc nhau. i d Trong phn vng d i he hai chie u inh dang du o tho ng ta p tin FAT, trnh kho ng thu m o c d o i mo i he inh dang du t sector (512 byte). Trong phn vng d tho ng ta p tin NTFS, trnh kho o d hai chie o ng thu m vi sector. Trnh kho `u tin, ca `n thie i d i d hai nap lo p chu o a o ng thu t cho vie c kho ng he o ng trnh d a ch ` d u hnh. Trong tru o ng ho p MS DOS chu o ng trnh kho i d ng d ng na p IO.SYS theo d ` ie o i o `n d `u khie a md 700h, sau d MSDOS.SYS v chuye ie un IO.SYS. n quye n cho SYSINIT cu d Ne a phn vng kch hoat, th qu trnh kho khng tm tha o u v l do no d y trn d ng ng l Int 18h. Tru se o ng ho p ny trn thu c te du ng, nhu ra t hie m khi su i vie ` tie p tuc vo c xu `u na i d kha ng ny c the `ng ho ` xa, khi he ie . Trong khi kho o c ch trong tru ng tu d o p no d i d , th Int ny d a cac mang. hnh kho ` my chu ng ln ROM cu o u ng tu n hu o c POST chuye o n ra tu a Microsoft th qu trnh kho i d Do i cc HD o i vo ng die o ng tu . H khc cu i d i Windows95 kho o ng gio ng nhu IO.SYS v MSDOS.SYS bo DOS nhu ng thay the a mnh. Cc ta cc ta i cc tn tu ng IO.DOS v lai du u p tin cu p tin DOS d o c giu o o ng u ng DOS, Windows95 se d i tn cc tap tin MSDOS.DOS. Khi ban d c cho n kho i d o o o a rong `i tn ban d `u cu `n mo a mnh vo cu i pha a a cc ta p tin he tho ng cu w40 v phuc ho i d a i d DOS. Qu trnh kho i vie o o ng tie p tuc vo c nap IO.SYS. Nhu , sector kho ng cu the DOS v Windows95 l nhu nhau.

10

Ci d t HD i Windows a H Linux trn cng my tnh vo

dung MBR DOS, nhu n ghi kho i d a phn vng Windows NT4 su o ba ng cu ng thay the ong trnh mang IO.SYS. ` ng cch thay the kch hoat ba Dy l mo NTLDR vo cho t chu lm d oc nhie `u thu v c the . V du, c the u p tin boot.ini v ne u nhu tm ta tham so timeout lo n ho u o o o ng. n 0, th d a ra trnh d n (thu c d n) kho i d i dng cu `n [operating systems] trong ta a pha Mo inh mo p tin boot.ini xc d t phu H) kho o u t HD ng v d t theo ma u sau: o ng n (mo i d o c vie ng_thu _hai="tn_goi_cu a_phu d _trnh_kho i_d o ng_n" ia_ch o a d i d Dia ch cua trnh kho hai c the a cu ng cu o t phn vng cu the no d ng thu l mo nhu i d o y l mo p tin kho ng. Du t v du ta p tin boot.ini: ta i d o [operating systems] multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4.00 VIE multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4.00 VIE C:\="Microsoft Windows" C:\BOOTSECT.LNX="Linux" `u i d phn vng d trn dng d Ne `i dng chon NT, th se kho o ia ch u a u ngu ng theo d o c ch o tin. Trn dng tu ng vo i phu u o ng u o ng n Microsoft Windows, ch d a ra "C:\", v tn cua i d ta o c la y theo ma c d nh: bootsect.dos. Ta p tin d o c na p vo bo v qu o u i u p tin kho ng d nho i d n ghi kho i d i m chu trnh kho o u o u ng d p tuc gio ng nhu ng d o c tie khi ba o c nap bo o ng trnh tu ` MBR. `n thm vo i d dung cch d ca Do i vie o . Ch i vo c kho ng cc he tho ng khc, c the su i boot.ini cc dng chu a lin ke kho e o t d n ta p tin kho ng khc. Khi chon cc dng ny se i d i d d ng. Trong v du trn Linux cu ng d o u o ng HD ng theo cc ny. Trong ta p o ng u o c kho H tu ` a ba n ghi kho i d i Linux (ni d tin C:\BOOTSECT.LNX ca o ng n ghi no i dung cu ng, tao bo n cu i d ho o ng tiu chua a Linux). n LILO, trnh kho

2.3.4

` vo n d Va a lo i cc d n e

`u tin cu n d a Windows truy ca bu Trn MS-DOS v cc phin ba i d c a (trong d a c ca p to o ` kho c qua Int 13 (Int 13h) cua BIOS. Khi ny su o a u ng d u tin cua HD chu i d o c to dung H) d a ch sector trn d C/H/S (xem trn). Chnh xc ho su a trn co nh d i d so n: AH chon thao tc; ho a so CH 8 bit nho cylinder; n cu a so CL 7-6 bit tu ng bit lo n cu ng so cylinder, 5-0 tu sector; o ng u o ng u `u d a d DH so a oc; cu DL so a(80h hay 81h). cua d `n lu ` ng vie `u tu (Ca `ng ba t d ` 0, cn sector trn nh so a c d cylinder va t l v rnh thu u ra o ` ` rnh d t d ` 1). Tuy nhin trn thu nh so a a oc khng qu 16, cn so ba u tu so d u d sector c te trn rnh khng qu 63, v d c dng 10 bit d ch ra cylinder, BIOS va n khng the e lm vie i d n ho a dung lu c vo o ng lo n 1024*63*16*512 = 528 Mbyte. De `u cch "lu c" khc nhau. V du, Extended `i ta p dung nhie ny, ngu o t qua han che o vu chua dng dung ba bit CHS (ECHS) hay "Large disk support" (d i khi cn goi l "Large") su

i d ng 2.4 Lu a chon trnh kho o

11

`u d dung ca a so d ng so tu e a oc d e cylinder. Cch ny cho pehsp su u trc "hnh n cu thu ta d `u d mao cu a d hoc gia i 1024 cylinder, 128 d a" vo a oc v 63 sector/rnh. Bie o n d i Extended CHS thu CHS thnh d a d e u ia ch n 8192 cylinder) d n. Cch ny chu o c BIOS thu c hie c (c the cho php lm vie i d a c dung lu e c vo n 8192*16*63*512 = 4 227 858 432 byte hay 4,2 o ng d Gbyte. a d Nhu ng ma a, so a v so o t d ghi cu d rnh, v n cng ngy cng ta ng cc nh pht trie ta ng dung lu o ng d a. V du , so sector trn rnh cn pht minh ra cc phu o ng php khc d e ` m ga `n thnh khc nhau trn cc rnh khc nhau (trn cc rnh na khng cn co inh m tro d ra ngoi cua d ng ln). Ke a, di ho u sector d t qua l bo ba so C/H/S khng cn n, so o c ta cu khng the tro n nh d a d n BIOS pha a", v cc phin ba ng ca u trc "hnh hoc cu ho truy ca i ton bo a. p to khng gian d Khi d i cc d `i ta ngh nh a ln qua Int 13h - d ra phu ngu e c vo lm vie o o ng php khc d ng ("Linear Block Addressing" cc kho ` d hay LBA). Khng d ia ch u i su vo i theo d o ng tha ` `n tu `u tu sector trn d chi tie ng ta t d ` sector a d u nh so a t ca mo t cch tua t, c the ni ra o c d , ba ` d u tin trn rnh so 0 cu a cylinder so 0. Thay vo cho d a ch CHS mo i sector nha a i u n d o c sector. Vie lgc so a sector trong to mo tu nh so ia ch ta t ca c d sector lgc t d thu ng so cu ` ba t d ` 0, trong d a ban ghi kho a sector so o u tu 0 chu ng chnh (MBR). Trong Setup BIOS i d CHS c dang "Ho tro tro ho bie n d i so thu tu theo d o ng tha ng thnh d a ch ` o u i LBA". Nhu n BIOS mo va i thu `ng c lu i ba phu y, trong cc phin ba o a chon vo o ng n: "Large", "LBA", "Normal" (phuong n cuo c hien bie ). v a l khng thu o ia ch i cng c ngh n d i d n d dung d Tuy nhin trong che a va o u d LBA vie c su t l va n qua Int 13h, m o c thu c hie ln dung luong Int 13h va n su 3D (C,H,S). V nguyn nhn ny xua t hie n han che dung bo MS-DOS v cc phin ba `u tin khng the a a d n Windows d cu a: BIOS, v theo d , a nh d i d cc d ch n ho a c dung lu o ng lo n 8,4 Gbyte. `n ch ra ` p dung vo Ca ng han che i cc d a c giao die ni trn ch n IDE. Trong cc n vo cc lenh SCSI, v sau d tu d a tm a d a sector d controller cu o c chuye a SCSI, so u cu ` ra vi tr ca a khng xua n thie t, v the han che ln dung lu t hie n. o ng d ` ` Mo t la n nu a muo n nha c la i ra ng, ta t ca nhu ng ha n che ni trn ch c ngh a trong giai i d i v Linux v cc phin ba n Windows mo d i nha i d a oan kho o ng HD t khi lm vie c vo H. Bo d c khi khng cn su dung Int 13 cua BIOS, m su dung driver ring cua mnh. Nhu ng tru o cu c nap. V the `u dung driver a mnh, he i d c the o trong giai d n kho i d ng d u oa o a su tho ng pha ` ` ` dung BIOS. tin ba Die ` he t nhie ng ca a t ky tho ng no cu n su u ny han che vie c d u he tho ng ` i ra ngoi vng 8 Gbyte d ` d c d sau khi kho a d a o , ma u tin: chng khng the kho ng tu i d `u. d De i cc d n ho a c dung lu o ng th c the lm vie c vo c the hie u cch thot o ng lo n nhie ` ` i nhu i d a HD kho c ve ng han che o ny, chng ta ca n mo t cht kie n thu qu trnh kho ng cu H Linux.

2.4
2.4.1

i d ng Lu a chon trnh kho o


i d a HD ng LILO cu Trnh kho o H Linux

i d i Werner Almesberber. LILO c the i d Trnh kho o u o ng LILO d t bo kho ng nhn o c vie ` ` i d Linux tu ` d ng, v cu a me a cu ng c the o ie m, d kho ng cc he d u hnh khc: PC/MS-DOS, DR DOS, OS/2, Windows 95/98, Windows NT/2000/XP, 386BSD, SCO UNIX, Unixware `u hnh khc nhau d i d v.v. . . LILO cho php chon d e ie e o kho ng. n 16 he d ` ` i LILO khng phai l chu o t bo go m nhie u chu o ng trnh: trnh kho o ng trnh d n le m l mo dung d i d d t v ca a o o e ng, cc chu ci d u hnh trnh kho ng, v cc ta p tin phuc vu: o ng trnh su

12

Ci d t HD i Windows a H Linux trn cng my tnh vo `n thie thng tin ca chu i Linux, phuc vu d e t ca t ghi ta o ng trnh /sbin/lilo, chay du o tu i ` i d trong giai d o ng u ng. Ca n cha y chu o ng trnh ny sau mo oan kho o ng vo cc cho `n c thay d la o p tin ca u hnh LILO; i trong nhn hay trong ta `n cho LILO trong tho i d cc ta `i gian kho `ng ng ta o p tin phuc vu, ca ng. Nhu p tin ny thu o ` na m trong thu l ban thn trnh t trong so chng d muc /boot. Quan trong nha map (/boot/map); trong tap tin ny c ch i d ra kho o i) v ta p tin o ng (xem pha du a nhn. Mo vi tr cu `ng c tn t ta p tin quan trong khc ta p tin ca u hnh LILO; thu o /etc/lilo.conf;

`u tin qua Int cu `n LILO d a BIOS; i d trnh kho d u a o y l pha nho ng d o c nap vo bo `u hnh khc. Trnh i d i d a he trnh kho o o ie ng nap nhn Linux hay sector kho ng cu d ` ` ` i d i d kho nha o u o ng go m c hai pha n. Pha n thu t d ng v phuc vu o c ghi vo sector kho pha `u. Ca ` ` na p n thu hai, c kch thu o c lo n ho n ra t nhie hai pha n thu o ng d ` u e d o c ghi trn d a trong ta p tin /boot/boot.b. ` `n nho a sector kho i d i LILO khc vo Ca i d ra ng, d inh dang MBR inh dang cu o ng tao ra bo ci cu `u hnh i d a a DOS. V the d cu o ie u ghi sector kho ng LILO vo MBR, th cc he d ne i d Microsoft se `ng kho ngu o ng (ne u nhu n php bo sung). khng c cc bie i d a Sector kho o u e o ng cua LILO c the d t ke d su ng cu i d o c thie dung nhu sector kho cho ba ng phn vng. phn vng; trong d c cho sau: i d a LILO trong khi ci d Sector kho t c the t vo nhu ng cho o a a ng cu d `m trong d i d a d sector kho a me o inh dang Linux (/dev/fd0, . . . ); ng cu ` MBR cua d ng d a cu a u tin (/dev/hda, /dev/sda, . . . ); `u tin i d a phn vng chnh vo sector kho i he ng d a cu a o ng cu tho ng ta p tin Linux trn d (/dev/hda1, /dev/hda2, . . . ); `u tin a phn vng lgc trong phn vng mo ro i d sector kho ng d a cu o a ng cu ng d `n lo ` ra kha na (/dev/hda5, . . . ). Su n chu ng e t l pha tha o ng trnh dang fdisk khng d kho ` phn vng mo ` cho o o ng kho ng tu ng v tu i vie c kch hoat phn vng ny. V i d i d ro `n LILO c chu c biet (activate va o ng trnh d ) cho php a mo a y trong thnh pha t chu tro a ba n phn pho vu ny. Tuy nhin chu i Linux ho o t qua han che o ng trnh fdisk cu ` na ro kha ng. Ca n su du ng ty cho n -b hoa c bie n BOOT . ng kch hoat phn vng mo sau: i d a LILO khng the Sector kho t vo cc cho o a ng cu d `m hay phn vng chnh, vo i d a d sector kho i d a me o inh dang he ng cu tho ng ta p tin khc Linux; a Linux; trong phn vng swap cu trn d ng thu hai. a cu `n nho ` ng, LILO trong tho i d Ngoi ra, ca ra `i gian kho ng ta o ng nhu p tin sau: /boot/boot.b; i le /boot/map (tao ra bo nh /sbin/lilo);

i d ng 2.4 Lu a chon trnh kho o phin ba n nhn kho i d n nhn khi kho i d ta o oc chon phin ba o t ca ng (ne u ban d ng); `u hnh khc m ban d i d a cc he i d sector kho o ie oc muo o ng cu d n kho ng qua LILO; i d ta a cc thng bo d u o u inh). p tin chu ng (ne u d a ra khi kho o c xc d

13

i d Nhu ng nhu ng ta o lie c cc ta y, sector kho ng LILO cu p tin d t k (trong so d p va nhu `n na ` m trong pham vi 1024 cylinder d `u tin cu a d tin ban d ng, t sau ny) ca a cu ci d a oc se a `n d `n ni ve ` han che i v chng ca a BIOS o trn. bo u p qua BIOS. Xem pha cu o c truy ca ` n 21, LILO d Ba ` phin ba t d o u o a u tu a ra mn hnh trnh d n (thu c d n) cho php chon he ny). ` i d go i trnh d n o c d ca n nha n phm Tab d tho o o y e e ng (tru ng d kho

2.4.2

i d i d i d Ngoi LILO d o o o e ng cc trnh kho ng khc. ng Linux c the kho kho i d Ne c khi ci d t Linux d a c HD o u nhu ng tru o H Windows NT/2000/XP, th trnh kho ng dung l OS Loader cu a NT. So snh vo i d ban d i LILO th trnh kho oc c the o su Loader t hai uu the ta OS c t nha . Thu nha t, ta t ca ca u hnh cu khng bi ma t (chng c the i d c the hai, t o a chon kho ng Windows hay Linux theo lu ci d a chon), v thu Linux ln d hai trn controller thu hai a m LILO khng the a thu o kho ng, v du, o d i d (Secondary Slave). c HD Ne c khi ci d t Linux ban d a oc ch u nhu tru o H Windows 95 hay Windows 98 v khng c Windows NT/2000 hay XP, th OS Loader khng d t. V ne u a u nhu o c ci d v d mo t LILO, th c the ban d oc khng muo a ung chu t l do no d n ci d su o ng trnh i d ng loadlin.exe (thu o phn pho kho ng d km vo i ba n i Linux); ` o i `n d `n ba n phn pho i Tho `i gian ga `ng c chu y trong thnh pha i Linux thu o o ng trnh kho d o ng GRUB. `n OS/2 cu a cng ty IBM c chu i d Trong thnh pha o ng Boot Manager. o ng trnh kho to n ngu `u hu i Trong ra ng da `i ta khuyn dng chu c kho e t nhie i chu o o o ng trnh ny d ` d o ng nhie u HD H. `n thng tin khc nhau cn nha Trong cc nguo c d e n chu o ng trnh System Commander; `n gi PartitionMagic cu i d a cng ty Thm mo o t trnh kho ng khc c trong thnh pha ` ` tie Power Quest. Chng ta se ni ve chu n nho p theo. o ng trnh ny trong pha cn tha i d Ngoi ra tc gia `i ta ni d e o y ngu n mo t loat trnh kho ng khc (mo t so c the o tm tha y trong thu muc /public/ftp/pub/Linux/system/boot/loaders trn trang Nhung v tc gia khng su dung nhu ftp://metalab.unc.edu/. ng chu o ng trnh ny, nn khng dung chng. V ta nhu a tc gia se the `i khuyn dng sau cu ng lo du t ca ni cu the cch su a trn vie t chu a c su u nhu n ci d dung LILO, NT Loader v loadlin.exe. Ne c muo o ng trnh `n d i d kho o ng da n ci d t v su du ng cu a n. o oc ca oc hu a ng khc, th ban d

i d ng khc Cc trnh kho o

14

Ci d t HD i Windows a H Linux trn cng my tnh vo

2.4.3

a tc gia c cc phu i d Nhu o y, theo kie n cu ng sau: va o ng n kho dung NT Loader. Ne t Windows NT hay Windows 2000/XP, th hy su ci d a u d Ne t oc khng muo a u c Windows 95 hay Windows 98 trn FAT16, v ban d n ci d ` chu c d a o u tin chay DOS v ng no khc, th c the su dung LILO, hoa o ng trnh kho i d ong tu, i d sau d ` chu kho o ng Linux nho t chu o ng trnh loadlin.exe (hay mo o ng trnh tu c vi chu khng xt d e y, nhu n). o ng trnh nhu va ng chng ta se Ne t Windows 95 OSR2 hay Windows 98 trn FAT32, v ban d oc khng ci d a u d t nhie ` `u muo t thm chu o a ng, th ca n su n ci d o ng trnh kho i d dung loadlin.exe. Ra ng d ` ng khng ca `n su d HOWTO kha inh ra ung LILO, ne u nhu phn vng kch hoat c i khng r nguyn nhn. Tuy nhin th nghie d c d tc gia inh dang FAT32, ma m kho d t trn phn vng FAT32, cua tc gia d ke o a t thc ng Linux qua NT Loader, ci d o d i su dung chu khng thnh cng. V the pha , trong tru `ng ho p ny tc gia o ng trnh mo a loadlin.exe. Chu hon thnh to m vu, v tao cho tc gia t n t nhie o ng trnh ny d tu o ng to t, v the tc gia khuyn ba n d c su du ng loadlin.exe d kho i d ng Linux. o e o `n tie se dung ta ba Trong nhu t Linux, su ng pha cho bie a p theo tc gia t cch ci d t ca i d i d i d i phu o o o ng: qua trnh kho ng NT Loader, trnh kho ng LILO v trnh kho o ng n kho ` i d d c khi ci d t trnh kho o a o ng loadlin.exe. Tuy nhin tru ng ca n chua n bi cc phn vng o d a, hay t nha trn c chng. cch to t l ngh chu

i d ng Cc phu o ng n kho o

2.5
2.5.1

n bi cc phn vng trn d Chua a


Lo `i khuyn khi tao phn vng

dng, v phn vng d `u d i l vie Du `i khuyn o a phuc thuo y khng pha c de c ra t nhie a ra lo ` ` a chu nhn d d vo thch v nhu ca a. Nhu ng xin thu u e u cu nghi sau. Tc ng cu a ra vi d se a Linux, tu gia , t tn d c l /dev/hda, /dev/hdb d a v phn vng theo "tiu chua a n" cu v.v. . . d i d i cc phn vng. a v /dev/hda1, /dev/hda2, v.v. . . d o o i vo i vo ` dung Vie a thnh cc phn vng l ca c phn chia d n thie t, bo i v Windows v Linux su n cc cch lu ` d thng tin trn d a v sau d a khc nhau. Chnh v the d oc chng tu to t ho u tru i he `u hnh mo du he c tha i) tha ie t l dnh cho mo d t (hoa m ch mo t vi nhu y o chng ta se o phn vng ring. `u tin chng ta hy xem xt mo n dung lu a ban d Da `ng ho a cu o oc t tru d o p d n gia o ng o khng vu cylinder khng vu o t qu 8,4 Gbyte (ni chnh xc ho n so o t qu 1024). Trong d cho cho he `u d n: ban d vie tru `ng ho d a lm sao d e o oc ch e c chia d u o p ny moi thu n gia `u hnh se `n thie dung du nha d t. C the c d ci d lie a nho ie a e su u cho bie t kch thu t ca t d ci o i ca n trong ba `u hnh vo ng 2.2. d t he a ie d u hnh co ba ` ng, khng nhu i tnh kch thu a ba n thn Tuy nhin xin hy nho ra c cc ta ng pha p tin cu o ` i tnh ca kch thu a cc chu he c cu ie oc du d u hnh, m cn pha o o ng trnh ban d tnh chay. V pha d t (khng the ` i dnh mo cn t pha n du tru khng nho cho cc chu o ng trnh se ci sau ny a ` ng, 700 Mbyte dnh cho Linux o i!). Hy tnh ra trong ba ng ni trn ch dnh cho trnh kho cc chu t cng vo i Linux theo ma c d a inh, trong so c, v du, chu d o ng trnh ci d o ng trnh Do ong tu nhu vay. o ra soan tha i Windows cu ng tu i vo t manh Lyx.

n bi cc phn vng trn d 2.5 Chua a `u su ng 2.2: Nhu ca dung khng gian d a HD Ba a cu H `u hnh `u He Yu ca ie d Windows 95 100 Mbyte Windows 98 200 Mbyte Windows NT 200 Mbyte Windows 2000 700 Mbyte Linux Red Hat 6.2 (Worksta- 700 Mbyte tion vo i KDE)

15

a tc gia th d Theo kinh nghie i Windows 95/98, Windows NT v Linux e c vo m cu lm vie (ta cc phn vng vo i kch thu c 800-1000 Mbyte l d t u oc khng ci d a t nhin, ne u ban d o ` cc gi chu n, nhu i Windows 200 th ca o i vo n phn vng o ng trnh lo OpenOffice.Org), cn d lo n ho n. d ` chia cc phn vng cho Linux. O By gio ` chng ta se xem xt va e y khng the n d ch `n chia mo chia mo nha t phn vng swap ring bie t cho Linux. Khi xc t phn vng. Thu t, ca ca `n tnh d a phn vng swap Linux d ng ye inh dung lu e n nhu u to sau: o ng cu o chung. V du, ne Trong Linux, RAM v khng gian swap ho a nho u p lai tao thnh bo ban d c 384 Mbyte bo oc c 256 MByte RAM v 128 Mbyte khng gian swap, th se nho ao. `n t nha o, v the c 4 De i Linux ca a oc ch lm vie c vo t 16 Mbyte bo nho ne u ban d `n phn vng swap khng nho ho Mbyte RAM, th ca n 12 Mbyte. Trn Linux kch thu c mo a l t phn vng swap khng the vu o o t qu 128 Mbyte. Ngh phn vng swap c the c lo n bao nhiu ty thch nhu c kch thu o ng Linux khng the `n tao hai phn dung ho o lo su a n ho oc muo u ban d n c bo nho n 128 Mbyte. Ne n, th ca dung ta vng swap hoa c su p tin swap. `n nho ` ng kch thu a khng gian swapping, ca Khi tnh kch thu c cu ra c qu lo n c the o o l v ch. Trn my tnh vo i 16 Mbyte RAM khi ci d t Linux vo i ca a u hnh chua n v . Cn ne cc chu ng dung chua u n th 48 Mbyte khng gian swapping l d u o ng trnh u ` nha ci d t Linux vo i ca a e u hnh nho t, th khng ca n d n khng gian swap. Ta t nhin, o kch thu c chnh xc cu a khng gian swap phu thuo c lo n vo chu o ng trnh se d u o c ci d t. a ` va ` dung lu nn suy ngh a phn vng swap khi c mo Ni chung, ch ve a e n d t d o ng cu a v t bo nho RAM. Trong tru `ng ho e nho to ng so dung lu o p ngu o c lai hy phn chia d o ng cu `m RAM v phn vng swap) khng nho o (go ho bo a oc nho u nhu n 128 Mbyte. Cn ne ban d 128 Mbyte RAM hay nhie `u ho ` c n, th phn vng ny c the khng ca n thie t. tro `n cn lai cu c c the cc pha a Linux v cc chu Ta t a t ca d o ng trnh ho theo nguyn ta vo mo t he l a t phn vng. Tuy nhin, vie c d tho ng ta p tin Linux ln vi phn vng ring re a. V du, c nh chuyn gia nn c ngh khuyn dnh cho he tho ng ta p tin Linux ba phn swap th thnh 4). Phn vng thu , 1 Gbyte vng (ne nha u tnh ca t (theo kie n c nhn tc gia l d ) se chu a he tho ng ta p tin go c ( / ). Phn vng thu hai dnh cho thu mu c /home . Cn u n vo thu phn vng thu ba d ng l le u c phn chia nhu y du o c ga muc /usr. Vie va a trn nhu ` sau. D HD t lai. ng ca u, th thnh thoang cu a inh v d ng tin ca e y d n d n ci d n d H Linux c o t phin ba m n mo i cu a ba n phn pho i, hoa c v t kinh nghie su V du, ban d oc muo n ca p nha

16

Ci d t HD i Windows a H Linux trn cng my tnh vo

n l muo n phn ng ta dung nn lm ho t mo c d o a n ci d t ba p tin he tho ng quan trong, hoa n gia i nhu ng du lieu t vo mo t phn vng, th khi ci d t la pho ta t ca d o c ci d a u a i khc. Ne u nhu n sao chp). Ngoi ra, d trong thu bi ma lm ra v ghi nho t (ne u khng c ba muc c nhn se ci tu `n, hay ci ba ` `n nhu se ` m nguo ng phu bi ma ng chu t ca o ng trnh d o ng php khc. Pha lo n nhu ng gi chu u u dnh cho thu t o ng trnh ny d o c ci vo thu muc /usr. Ne muc ny mo phn vng ring v khi ci d t khng d ng chu a inh dang lai chng, th nhu o ng trnh ni trn ` ) sau khi ci d se se t lai he d lai v c the lm vie a u u hnh nho n vi ca ca c (ra t c the o c giu ?? ` xin xem o chu o ng ) n ve he tho ng ta p tin cu a Linux FHS (cu the tho ng. Trong tiu chua ` vie cu `i khuyn ve t thu ng c lo a c d t phn vng ring. muc /usr ln mo Theo tc gia tha ng kie oc tu d u d e y, nhu n ni trn d ban d tm ra phu o ng n phn chia gio chng ta xem xt truo a mnh, trong tru d a nho . By o ng ho p ch c mo t o o ` ` a cu d `ng ho p d i so n ho a vo cylinder lo n 1024. `n tru `n d pha Tu ` nhu c (han che ng), ca t chu ng g d a cu ni d e a n o dung lu o ng trnh o o ng d t thie `u tin. Nhn tie i d i kho o a ng trong pham vi 1024 cylinder d n, NT Loader khng nha t pha i d d t vo phn vng NTFS, cu t vo phn vng chu a cc ta ng nhu a a t thie t pha p tin khng nha cu t thu muc go a HD d c cng vo i thu khc H. Nhu d ni o trn, d i vo i Linux c the o a muc cn cc thu muc khc o `u tin), cho con /boot vo cc cylinder "tha a p" (trong vng 1024 d no ty thch. ` nghi cu a tc gia cho ra ba ng to Nhu `ng ho ng d e y trong tru ng ke t sau: va o p ny, nhu `n kho `u tin cu i d a ta cc he a pha t vo phn vng chnh d o a a ng cu t ca tho ng Microsoft d d i d a, vo inh dang FAT16 (DOS); ng 1 Gbyte; phn vng chnh tie c khoa p theo dnh cho thu c (/), kch thu muc go o ` kch thu a Linux (lo a phn phn vng chnh thu ba dnh cho swap cu `i khuyn ve c cu o trn); vng ny xem o `n cn lai cu a d ro pha t thnh phn vng mo a d a ng; i HD ro trong phn vng mo t: Windows ci d a ng tao cc phn vng lgc cho mo H se `ng tho a 98, Windows NT/2000/XP, v d `i cho cc he o tho ng ta p tin /home v /usr cu HD t cc ta `i dng, cn trong /usr d a p tin ring cua ngu o H Linux (trong /home se chu o ng trnh se ci d t). a c Windows 95 vo Ta i FAT16, th c the oc ch e t nhin, ne u nhu d Windows trn ban d `u tin. Ne phn vng d t Windows NT hay c FAT32, th mo a ci d a u nhu t phn trn my d nd c `, ba trong tru vng FAT16 cu `a. Thu nha `ng ho ng khng thu e o t, ke ca tho ng c va n d o p he ` c the ` d `i khi chu i Linux mo `ng a me o kho ng tu m DOS (tam tho t cch "tu i d a lm quen vo o oc ra c bnh thuo ` ng d ta ng lm vie hai, he a cu u u n") v tha y d tho ng ta p tin FAT16 d `ng. Thu o c ho c Linux, v the tro phn vng ny c the phuc vu cho vie c trao trn moi HD H, trong d p tin giu a cc v FAT16 dung d i ta he tho ng. Nhu ng khng nn d phn vng ny lo n, su o e gian d a ra c ng 256 hoa khng t khng ho y hy dnh cho phn vng ny khoa p l. Chnh v va 512 Mbyte. ` ng, ban d c mo thie Nhu ng. Ne `i khuyn ny d i gia ng lo a cu u oc ch u nhu t ra t d a ra vo n su `u phn vng swap to dung d c d ban d `i khuyn ny, ch ng lo oc c 2, th va u ie t o c nhu n d ` ho i d `i ta ni ra ng nhu ng to a khc vo a dnh cho Linux. Ngu o lm vie c y ta c d at trn d o va hie `u d i chay ho trong Linux (cu n). ng de a oc t pha u v d

i d a NT ng qua OS Loader cu 2.6 Windows NT v Linux: kho o

17

2.5.2

phn chia o d Chu a o ng trnh d e

`n lu Sau khi hon thnh ke a, ca u e hoach ny thnh d t hoach chia o d a ke a chon cng cu d ` `u hie a d u e ie n thu t d n nhie u nha t l fdisk; trn moi he d c. Chu o ng trnh phn chia d o c bie `u c phin ba `n g ho n ring cu a chu hnh d e o ng trnh ny. V khng ca n ngoi chu o ng trnh ny, ne ng, khng chu a ba a tra lie ang xem t k du u no. Nhu u nhu d ng chng ta d phn chia o ` xt tru `ng ho a v ca a m khng lm ma c HD trn d t thng n phn chia o d o p d H no d tin. fdisk khng thch ho ng muc d ch nhu y. p cho nhu va ba `n cc n n phn pho Trong thnh pha i Red Hat v BlackCat (ra t c the trong cc ba phn pho o ng trnh fips , phu c vu cho phn chia o d a. Tuy nhin, theo i khc) c chu a tc a ngu dung chu kie `i khuyn cu `i dng th khng nn su lo n cu o o ng trnh ny. V the gia vo i ban d `i dng Linux mo i ne a m ng ngu oc, nhu u nhu n phn chia lai o d o muo ma khng lm o ng trnh Partition Magic cu a cng ty Power Quest t thng tin, th hy tm chu dung chu (http://www.powerquest.com) v su o ng trnh ny. phn chia lai o Thu t, chu o ng trnh ny cho php c nha a m khng lm ma t thng tin (tu d tao d nhu l, ta c d t v ca d ng ci d se u u a u hnh tru t ca o o c ghi lai). Khi ny, khng ch o c phn vng mo i tu ` cho a, m cn c the c theo n cc phn vng d tro ng trn d di chuye muo n. n dnh cho DOS) cung ca Thu hai, chu m ch trong phin ba p mo t giao o ng trnh ny (tha rng. ` ` die n d ho a de su du ng c ho tro chuo t, v mo i thao tc cu ng nhu thay d i d u tha y r o e o `u ny ` i dng mo Die ra i ngu i. t quan trong vo o n nhau. `n d Khi tao phn vng ca i giu t la a cc phn vng ca e khng cho ranh gio ` ng, nhu cho ra d Tc gia ng thng tin d d u u e oc la ban d p ke hoach v thu n vie c a d c hie phn chia o a thnh cc phn vng. V the xem xt cc phu d tie p theo chng ta se o ng n ci d t hai HD a t my tnh. H trn mo

2.6

`n ny, khi ni ve ` Windows NT xin nga `m hie Windows 2000 v NT, v "quan Trong pha u ca a chng d thie he i vie t Linux hon ton gio o a " cu i vo c ci d ng nhau. Chng ta gia t l Windows NT d , /dev/hda1 se dnh cho d u oc nho u nhu o c ci vo phn vng /dev/hda2 (ne ban d FAT16). Ne d t, ngha l trnh kho phn vng H Windows NT d d o c ci u a o u HD ng OS i d dung chu i d Loader cu t. V nhu ng d d u a e o c the su kho ng Linux. o c ci d the o ng trnh ny d buo ` hy vong ra a mnh. Cc Tc gia ng ban d ng thng tin c gi tri cu oc d sao lu u nhu c ci nhu d t c the a m ta sau: `u ca `n chua 1. Ne t Linux bao gio `, th tru c khi ba t d a oc chu a a u nhu n bi d ban d a ci d o ` ` ` ` me m kho i d ng v phu c ho i Windows NT. D e ta o d a me m kho i d ng ch ca n d nh i o o `m, ro chp ln d cc tap `i sao dang lai d thu ` a me tin ntldr, ntdetect.com v boot.ini tu ` muc go a kho a phuc ho o c cua o d ng NT. Chu i Windows 2000/XP c i d o ng trnh tao d ng (lenh Backup trong Start/Program/Accessories). the n he tho ` trnh d o chay tu `n d 2. Dng chu ` d a tro e tao ra phn vng la y mo t pha ng v tu o ng trnh Partition Magic d a vo c cu i dang ext2(3) (he tho ng ta p tin Linux) v phn vng swap. Cch tnh kch thu o chng d ni o trn. n cu `n ch d da a ba n phn pho 3. Ci d t Linux theo ch t ca ng e a a i. Trong khi ci d n nhu d ie m sau:

i d a NT ng qua OS Loader cu Windows NT v Linux: kho o

18

Ci d t HD i Windows a H Linux trn cng my tnh vo `m kho i tao ra cc d i d thu nha t nha a me inh pha o a t d ng t, trong qu trnh ci d c `n tra lo Linux. Tu o ng tu the , ty thuo c l ca `i "Yes, make a BOOT DISK" (hay tu `m kho ` n phn pho i c tao d i d vo ba D a me m a me u o i) khi d ng hay khng. o c ho ` ny se d a me o e u e ng m ny d kho n o su i d dung d o c dng d sau. Ngoi ra, c the i n nua khc vo cung l mot phuong n kho ` Linux. Dy i d ng, v ho i d a me m kho o `u d `m nu i d d a me a, c the o o ng DOS, sau khi kho ng he tho ng khng cn yu ca `m khc. Tuy nhin cch kho i d dung o n ra kho i o bo a me oc cc d o e ng d d , su `u tie dung thu su dung trong ny cu `ng xuyn. Ch ng c d ie n, v the khng nn su o `m ny cn ca `n thie i d tru D a me `ng ho c d ". o a e ng t d t cho ca u hnh d kho o p "ba `u HD nhie H. `n ci LILO vo sector d `u tin cu a phn vng dnh thu hai, khi ci d t Linux ca a a a Linux, chu i vo sector kho i d a cho thu khng pha o c (/) cu ng chnh cu muc go thie d t Linux d o c ci vo phn vng /dev/hda3 . Nhu a (MBR). Chng ta gia u cu `u tin a /dev/hda3 va d u a y LILO se o c ci vo sector d c, ne i moi thu ng Theo nguyn ta d oc ci LILO vo MBR, th khng pha ho u nhu ban d ` cuo i d he o at d u ng qua NT Loader) va n c the d n bo t. Ke t qua i cng (kho o c nhu ng ca v Windows ` ra mo t cht cng su c. Va n d o cho , d nh da ng MBR ta o bo i LILO (DOS) i e `u phuc ho `i lai MBR cu a khc nhau. V the oc ci LILO vo MBR, th ca ne u ban d ` Windows. Tc gia cu ng se ni cch phuc ho oc ci LILO i, nhu t ho t l ban d ng to n he vng d ci Linux. `u tin cu a phn ngay la c vo sector d a p tu ` `m (ne i d 4. Sau khi ci d t xong, kho ng d a me a o oc ci LILO vo ng Linux ba u nhu ban d ng duy nha a Linux v khng d na phn vng cu o e y l kha ng g d n MBR, th d t). `n d i d a Linux vo mo i 5. Sao chp sector kho ca o e ng cu t ta p tin; ta p tin ny se trnh kho `u i d d o o a ng Windows NT/2000 c the kho ng Linux. Vie c sao chp thu n nhu c hie sau: d ` tin ga n mo ng (mo i mua th cng to a me t d m tra t),
knh giao tc [root]# mount -t vfat /dev/fd0 /mnt/floppy

chuye n vo thu muc /mnt/floppy


[root]# cd /mnt/floppy

knh giao tc

v thu n cu le nh c hie

knh giao tc [root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1

i d a d d a /dev/hda3 vo ta e o ghi no i dung sector kho ng cu p tin /mnt/floppy/bootsect.lnx. 1 `n kho ` i d 6. Tie ng cu le o e p theo ca ng lai d vo Windows NT, ba nh:
a Ghi ch: ne a C: (/dev/hda1) c d inh dang FAT, th c the u d tao ta p tin bootsect.lnx trong thu c cu muc go the i d ng khng ca da me chnh d `u ` ` khng bie a thu ) c kho n m khng, ne u phn vng d a C:. Tc gia a o t (chu ` g, ch `n sao chp sector kho d ca i d tin c d ng khng c va a o inh dang NTFS. Tuy nhin o y cu e n d ng qua d `m nhu me d trnh by. Ta m tho i nhn Linux cn chu a ho tro to t vie c ghi ln phn vng NTFS. ` ang
1

i d a NT ng qua OS Loader cu 2.6 Windows NT v Linux: kho o


knh giao tc [root]# shutdown -h now

19

`n sao chp i d V MBR chu kho o o ng. Trong NT ca i, nn Windows NT se a c g thay d a d ta a C:, hay chnh xc ho p tin bootsect.lnx vo thu c cu c muc go n l vo thu muc go cua phn vng m tu Dy c the ` d kho o ng Windows NT. l phn vng FAT16 hay i d n ra phn vng ny l hai tap tin ntldr v boot.init phn vng NTFS. Da c d e ie nha m d chu t thuo a trong d ng ta a (nhu c tnh p tin bootsect.lnx c the d n!). Ta p tin ny c the a d ch oc (read-only). 7. Sau d tm ta p tin boot.ini v thm vo dng sau:
C:\bootsect.lnx="LINUX"

(ta `.) t tn ba c kp ban d a oc c the t ky d t nhin, trong da u ngoa `u `n nu i d 8. Vie a, v trong trnh d ie o o d c cn lai l kho ng lai my tnh mo t la n chon he hnh se c LINUX. Ne d u n (LILO) se u chon LINUX, th LILO se o c chay v sau d nap Linux. Cn by gio ` chng ta se `ng ho t LILO xem xt tru oc (do v tnh hay co a ) ci d o p ban d n ghi kho i d a d n vo ba `ng ho a (Master Boot Record, MBR). Trong tru o ng chnh cu o p ny ba i d i d ghi kho c thu bi xa, v vie o o ng Windows NT (hay 2000) se c kho ng Windows NT (bu o khng the cn muo su trnh kho trn) l 6o . Ne u nhu ba n d c va n n du ng i d ng OS Loader o o a NT, chu cu c thay d khng muo c trn ng bu o n dng LILO, th nhu i mo t cht: thay cho o `n lm cc thao tc sau. bu c thu 6 ca o `m kho i d i d 1. Kho ` d c khi ci d t Linux, ne a me o o tao tru a ng Windows NT tu ng (d u o ` ` khng c th ban d oc ca ang chay Windows NT ro n tm mo t my khc d i tao). Trong d n) cu i d ng ca lenh Recover, ro n che ` ` trnh d n (thu c a trnh kho n cho n i cho o o o o d n nh qua n tri (administrator). Command mode. Sau d ng nha d a p vo ti khoa ` n ghi kho i d a d dung cu le 2. Phuc ho a. Su o i lai ba ng chnh cu nh fdisk /mbr. Tc gia lenh c d trong mot so phuc ho ` dng ny thnh cng, ma bi bo ni cch i MBR nhu i lc no cu va ng lm vie y khng pha c. Trong Windows 2000 c cc le nh chuyn dng c ho `i he fixboot v fixmbr (chay tu ` console phu tu tho ng). Chay hai le nh ny theo thu ra. Sau d i d d o ng. ` kho ch Windows 2000 se o ng bnh thu `m kho i d i d 3. Kho ` d ng nha i a me o o a ng lai my tnh tu ng Linux v d p vo he tho ng vo ` quye `i dng root. n ngu o d `u ta ta 4. Nha a e p le nh cd /etc v mo p tin lilo.conf. O p tin ny c lin ke t d n phn i d vng kho ng theo ma c d nh, v du , /dev/hda . o i a Midnight Commander, d 5. Dng ba t ky trnh soa n tha o no, v du, CoolEdit cu ` e thay the ci Linux ln (chnh xc ho gi tri ny thnh phn vng d n l thnh phn vng d n nhu u u c (/) cua Linux). Ne u Linux d o c ga go o c ci vo phn vng /dev/hda3, th ghi ci d tu `n ca , c l thay the oc khng /dev/hda thnh /dev/hda3. Ne u nhu ban d tu nho d ci Linux vo d u, th hy chay cu le nh mount v tm ke t qua o ng tu nhu 2 sau :
2

n vo thu c ngh a l tm phn vng d ga c /, trong v du ny l /dev/hda3 muc go

20

Ci d t HD i Windows a H Linux trn cng my tnh vo


knh giao tc /dev/hda3 on / type reiserfs (rw)

`n chay i d 6. Chay le o e ng vo phn vng /dev/hda3 (ca nh /sbin/lilo d ghi trnh kho ` vie `u nh bo ve i l d le c ca a nh lilo khng c tham so ). Se c phn vng khng pha ` ` n ghi kho i d a Windows d tin trn d Dy chnh l d a. ie o u u chng ta ca n, ba ng cu o c giu nguyn ven. trn. 7. Thu c 6-8 nhu n cc bu c hie o o dng d `n kho ` ng, "quy trnh" phu i d d De c tap vo i hai la o e on ra ra n sector ng lai ch chuye `u tin cu `i i d a phn vng dnh cho Linux, v phuc ho kho ` MBR vo sector d o a ng Linux tu a Windows. MBR cu `u i d d Qu trnh ci d t Linux ke kho o ie y. Ban d oc d c the a ng v d t thc o chon HD H se a mnh. khie n my tnh cu

2.7
2.7.1

dung trnh kho i d ng LILO Su o


u hnh LILO Ci d t v ca a

`n lu i d Nhu ni trong pha o ci Windows 98 ng, ne u trn my d d a chon chu o ng trnh kho vo a cho n to t ho n cho trnh kho i d ng l chu i he o tho ng ta p tin FAT16, th lu o ng trnh c trong `n cu a moi ba n phn pho thnh pha i HD H Linux LILO (LInux LOader). `n thu Gio `ng ho c ca d u e ng nhu n d c the tru o p Windows NT, chng ta se a ra cc bu o c hie `u HD i d kho o ng nhie H. `m kho i d 1. Tru c khi ci d t Linux hy chua a me a o n bi d ng Windows. o ` 2. Dng chu a cn tro e la y pha n khng gian d ng v trn d o ng trnh Partition Magic d tao ra mo t phn vng ext2(3) (he tho ng ta p tin Linux) v mo t phn vng swap. Cch o ong o a cu trn. Ne chia a d ng vu ni o oc ky d u dung lu d o t qu 8,4 Gbyte th hy d ` 2.3 v 2.5. cc pha n n d `n nho ` ng, ne da n phn pho 3. Ci d t Linux theo ch i ba ra a i km vo i. Ca u ban muo n su `n chon phu i d dung trnh kho t Linux ca o ng LILO, th trong qu trnh ci da o ng n ci ` i d LILO vo ban ghi kho a me o o ng chnh (Master Boot Record). Tao cc d m kho ng i d 3 c l khng ba t buo theo nguyn ta ng tc gia khuyn ba n d c nn lm. o c, nhu `n ca i d 4. Bu c tie e o p theo ca u hnh LILO d c the kho ng cc HD a chon. LILO o H theo lu nh ny ` d ng ta u u hnh ba p tin /etc/lilo.conf v cu le nh /sbin/lilo. Cu le o c ca dng d t (hay ci d t lai) LILO. e a a ci d cu a ta Chng ta xem xt mo t v du nho p tin ca u hnh LILO. Trong v du ny chng phn vng ta se i DOS/Windows, cn coi nhu t bi /dev/hda1 l phn vng vo thie
t buo i d i ci d n ghi kho i d a d Ghi ch. Trnh kho t vo ba a, LILO o a o ng chnh cu c pha ng LILO khng ba ng cu d oc kch hoa t v chu c cu `m o ba n ghi kho i d a phn vng chnh c the a thu mu c go a Linux hoa c tha o u na m p d MBR ca i c kha LILO, phn vng mo ` ro ch trn phn vng lgc trong o ng ho n pha na ng na p ` ng. Trong tru `n thie i d a MS-DOS hay Windows. Tuy nhin tc gia chu v du khi MBR l trnh kho o ng cu y su t a nhn tha ca a u i d dung cho "tron bo cu ng dung ny (ne chon LILO lm trnh kho o u d ng chnh th hy su "), v the chng ta se khng xem xt d e n.
3

i d dung trnh kho ng LILO 2.7 Su o

21

`n nhu /dev/hda2 chu a Linux. Trong tru `ng ho /etc/lilo.conf c dang ga o p d sau:
knh giao tc boot = /dev/hda2 compact delay = 50 # message = /boot/bootmesg.txt root = current image = /boot/vmlinuz-2.4.22 label = linux read-only other = /dev/hda1 table = /dev/hda label = dos

i thch cho v du: Dng boot cho bie i d Vi lo `i gia o t thie t bi kho ng. a nhn d i Dng compact ba a d c tnh cu o a u nn ta p tin map ta p tin chu t che d o c kho ` a kho i d d ng (nn) ny ta ng to o o o a ng; tnh na c d cu ng d u. i d Cu le e u o nh message dng d d n khi kho ng. a ra thng bo theo muo i pha t d `u tu `n nho `n tu cu a ta Ba ` dng image l cc pha ng vo i a p tin ca u hnh, mo o ng u i pha `u hnh se `n nhu i d a ngu mo `i dng. Trong mo kho ie o t he d ng theo lu y a chon cu o va ` c mo se c LILO hay tn t dng label. Trn dng ny ghi tn ca n nha p vo da u nha H muo hie n cu a LILO d c the cho n HD n kho i d ng. Ne u nhu tn o e o n thi trong trnh d oc nhap sau khoa pha `n mu ng tho trn khng d dng delay (tnh theo `i gian ch `i giy u o vo `n nhn i d ca i 0,1 giy), th se c d kho o inh. Trong v du ny, se ng HD H theo ma `n ca ` md `u tin i d kho c d ngvo i Linux na o inh, v pha a ng Linux theo ma u hnh tu o ng u p tin. C the he `u hnh d oc kho ra i d trong ta c d ie u o inh khi thm mo ch d ng theo ma t t trn dng label . dung tn d dng c dang default=dos, tu c l su d a ng phn chia d Dng table=<device> cho bie a ba a. LILO se khng t tn thie t bi chu ` ` d a cho he u ie u o phn chia d d u hnh d ng ne u bie n ny khng a thng tin ve o c kho i d cng cu khc l d d oc kho ` i d d o c d a ra. (Mo t so he d u hnh c d xc d nh u u ie e i u o ng ` ` tu Du ` phn vng no.) `ng qun ra ng, ca n thu n cu le nh /sbin/lilo, sau khi thay c hie thay d i bie n table. Ne n d da ng phn chia d d c l t dng (goi a, tu o e o a i ch n ba u d `n nho th to l pha t ho p tin /etc/lilo.conf, th n) other = /dev/hda1 trong ta `n a d trong thu a /dev/hda1 (d a C: trong he Microsoft) ca c cu tho ng thua t ngu muc go ` m trnh i d i l chnh). Trn mo a tc gia o d c trnh kho o na ng phu (khng pha t my cu i d i d kho t tru c Linux), v LILO kho o u a o ng NT Loader (v Windows NT d ng o c ci d o ` thnh cng Windows NT. Ch ca t tho `i gian cho ` kho a o n d ng trong ta p tin boot.ini i d Tuy nhin, ne ` ng khng, d ba n kho i d ng cu a NT Loader. e o o khng tha y trnh d u v mo t ` l do no d ban muo o n tha y trnh d p tin boot.ini ca n n ny th gi tri timeout trong ta (tho ie `n thie `u ny c the d D t khc khng `i gian cho ` d a u ca t khi muo n o c tnh theo giy). i d Windows 98 tu a NT Loader (trong tru kho ` trnh d `ng ho c 3 o o ng ca n cu o p ny se HD o u chon dos n cua LILO ne H: Linux, Windows NT v Windows 98, trong trnh d d ` th se n cu a NT Loader ro i tu d cho n mo t trong hai HD H Windows ` hie o e n ra trnh d i d kho o ng). `n nho i d sau Ne ` LILO, th hy thm pha oc muo o u ban d n kho ng Windows tru p tu c tie vo /etc/lilo.conf:

22

Ci d t HD i Windows a H Linux trn cng my tnh vo


knh giao tc other = /boot/bootsect.dos label = win

a o trong d a NT Loader. ` thu a chu bootsect.dos la d c cu y tu muc go `n chay cu le a xong ta 5. Sau khi su nh /sbin/lilo p tin /etc/lilo.conf theo muo n, ca n goi l map d ng da ng thay d o e u lu nh ny (trong ti lie u hu i c hie nhu c. Cu le o ` i d installer) ci d t trnh kho d o u o a ng phu, m se n kho ng tie p i d o c kch hoat trong la i bu o c kho i d ng, hy thu c hie n cu le nh thay d theo. Tru o c khi cha y /sbin/lilo d o o e cc thu c ci d t trnh tu ny vo i tham so thu a -t. Khi c tham so ny se n ta t ca c hie kho ng phn chia o n ghi sector i d i d kho ` vie o o o p tin map, ba ng, v ba ng, tru c thay d i ta chay thu ca d c l ch i. Ne a, tu d oc se u u hnh mo u cho thm ty chon -v, th ban d o c ` bie ng g le thu t thm thng tin chi tie t ve nhu nh /sbin/lilo se n. c hie i do a Khi /sbin/lilo ghi d i ln sector kho cu no i dung mo ng, th no i dung cu sector ny se vo mo c d tu inh d l ta o u p tin ng d t ta p tin. Theo ma d o c ghi nho a thie /boot/boot.NNNN, trong d i so ng vo NNNN tu cu t bi, v du, 0300 o ng u a, th n tu ng /dev/hda, 0800 /dev/sda, v.v. . . Ne c trn d u ta p tin ny d o ng u ghi sector kho i d khng bi ghi d t mo ln. Tuy nhin c the a e o d t tn khc d ng, khng nha t thie t phai dng /boot/boot.NNNN. `i no dung d a sector kho i Ta cu e p tin /boot/boot.NNNN c the su phuc ho i dung cu `i no khc d n ho d o o e ng, ne u khng cn cch phuc ho nh d thu n c n gia n. Cu le c hie dang:
knh giao tc [root:~#] dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1

hay
knh giao tc [root:~#] dd if=/boot/boot.0800 of=/dev/hda bs=446 count=1

`i chu phuc ho i d ng phn chia (bs=446 v ch o o e ng, v khng d ng g d n ba o ng trnh kho d a). `i MBR cu `n thie ` ng cu le Cu i ty chon ng c the khi ca phuc ho t ba nh /sbin/lilo vo ` ` ` -u. Nhu ng, cu le i d ng vo ie n bie t ra nh ny ch lm vie c d u kie n l thu ng ca muc LILO tu (tu c l /boot) khng thay d t. o a i ke ` khi ci d `i ba ` ng cch kho `m i d a MS-DOS c the MBR cu ` d a me u o d ng vo DOS tu o c phuc ho ` (CD) ro o i chay cu le nh fdisk /mbr (xem trn). Le nh ny ch thay d i m chu o ng trnh MBR, m khng thay d i ba ` m trong i d kho a. o o ng na ng phn chia d `n kho i d i d cc phu 6. Sau khi ci d t lai trnh kho a o o ng ca ng lai my tnh v thu o ng n kho o e ng khc nhau d kie m tra. i d `n ni ve ` LILO ny chng ta se De n c the xem xt vi kh kha ke t thc pha xua t hie n khi c phuc (ne dung LILO, v cch kha su u c the ). LILO d oc nap, n d ara mn hnh tu i chu Khi ` "LILO". Khi ny mo ci bie u u u thi su t ke thc mo c nap LILO. Ne o o hay ke u kho ng bi bi ngu t hnh d ng no d t thc mo t bu o i d ng so n d nh ve n va nd `. ` giu a ra c the nha nguyn nhn xua t hie `ng, th qua a chu ci d e u i chu

i d dung trnh kho ng LILO 2.7 Su o

23

`n no cu a LILO d Khng chu c LILO khng ci no hie u n ra khng c pha o c nap. Hoa t. t, hoa c phn vng chu a LILO chu a d o c kch hoa d o c ci d u u a i] trnh kho `n i d L [m lo c l d o d u chay (tu nha u ng chnh d n d o c nap v d o c quye i hai k tu `u khie i d d o ie ng phu. M lo t nap trnh kho n), nhu cho bie ng n khng the ` ` a va i m ca a LILO). nguyn nhn cu the thua e n d (cch gia n tm trong ti lie u ky t cu cu khngd t d ` d a xa u (c khuye t ta t) hay Thng thu o ng th va n d na y sinh do o ` a ng ca u e i a d d trc hnh hoc cu `ng lai o a. Ne y, m tie u u LILO khng du p tuc d t chuo a ra mo ` v ta `ng de e n cc m lo i, th va n d thu giai quye t. o i d i d LI trnh kho o u o nap d u ng chnh d ng phu, nhu o c trnh kho ng khng chay d o c n. C the c ta a, hoa u p tin boot/boot.b bi di chuye n i d u trc hnh hoc cua d l lo a ca m ngu o i dng qun khng cha y /sbin/lilo . ` ng m ta tu i d LIL trnh kho ` ta o d u p ng phu d nap ba o c chay, nhu ng n khng the a o tin map. Nguyn nhn thu c khng d `ng do khuye a hoa u ng ca u trc t ta t cu d a d o a d hnh hoc cu a. i i d khng d LIL? trnh kho `ng do lo o d u ia ch ng. Thng thu ng phu d o c nap vo d o d c ta `i a hoa u u trc hnh hoc cua d p tin /boot/boot.b bi di chuye n m ngu a ra ca o . dng qun khng chay/sbin/lilo i d ng m ta trong ta y. Thng thu LIL- ba `ng do lo u p tin map bi ph hu u trc o a ra ca a d hnh hoc cu c ta `i dng qun khng a hoa p tin /boot/boot.b bi di chuye n m ngu o chay /sbin/lilo . `n cu cc pha a LILO d LILO ta u t ca o c nap thnh cng.

2.7.2

i d a chng (khng phu thuo Khi ci d t MS-DOS v Windows 95/98, trnh kho a o ng cu c vo ban d c) d oc ghi vo Master Boot Record (MBR), v da t trong ba ng muo n cu a u kch hoa o u i d phn vng se d u o n sang phn vng MS-DOS (Windows 95/98). M trnh kho ng o c chuye a ` ` ` MS-DOS v Windows 95/98 ch "bie ie a t" chuye n quye n d u khie n cho sector d u tin cu `u tin ci d phn vng kch hoat. Nhu t Linux, v sau d i ci d t oc d a a mo a , ne u nhu the ban d ` i d Windows 95/98 hay MS-DOS, th Linux se khng the o kho ng. C the phuc ho i lai LILO vng ` ba hoat phn ng cch chay le c kch u nh /sbin/lilo (ne u LILO d o c ci vo MBR), hoa u chu a LILO (ne u LILO d o c ci vo phn vng chnh). ` sau khi ci d `u hnh khc sau Linux, thu i quye Khi c va t mo `ng c the e a ie n d t he d gia t o ` ng cch kho ` ` i d ba ng vo Linux ba ng d a me m kho i d ng, su a la i ta p tin ca u hnh LILO (thm o o H mo `n nho ` cho HD pha i), ro i cha y /sbin/lilo .

`u hnh khc sau Linux d Ci d t cc he a ie

2.7.3

tro `n thie n nhn Linux mo na Nhu i nha ng d t cc ta ng phin ba a oan t ho p tin ca t trn giai d kha p ` i d p tin MS-DOS (hay UMSDOS). V trong pha n lo n cc tru o ng kho ng vo he tho ng ta ` o ho i `u (khng c han che d a BIOS), nn cho php gia phn vng DOS chie a o a m cc vng d cu ` cu ` `u va a o quye n, khi m thu m trn phn vng dnh a lo e d na t nhie n d muc /boot khng the cho Linux.

n thu Chuye muc /boot ln phn vng DOS

24

Ci d t HD i Windows a H Linux trn cng my tnh vo

`n phn vng DOS o i d che De o o oc/ghi, tao trong n phu ng ny, ca d d thu c hie o ng n kho n ta t ca cc ta p tin tu thu d mu c (v du , /dos/linux ), v chuye ` mo t thu muc /boot vo d e ; thu u t tu n thu n thnh lin ke o ng tru ng d muc /dos/linux; vi tr muc /boot d o c chuye nh ` mo i cua thu n ch ra trong ta p tin /etc/lilo.conf, v cuo i cng chay le muc /boot ca /sbin/lilo.

2.8

` m trong phn vng DOS, m ca tie cc ta i d Khng ch o n trnh p tin kho ng v nhn c the na kho c tu ` DOS. Kha na ng ny thu ` chu u o n nho chu ng Linux ni chung c the d c hie o ng o c to i d c biet loadlin.exe, do Hans Lermen o ng trnh (lermen@elserv.ffm.fgan.de)vie trnh d a t. Chu o a ba n phn pho ny thu a cu i.4 `ng c trn cc d i d Loadlin.exe cung ca ng an ton nha ` o o t, khi c phn vng p cch kho ng Linux tu cu i d dung cho ngu kch hoat l DOS hay Windows. Phu `i o u ng ny d o ng n kho o c khuyn su o ` ho) khng d kin nha dng Linux mo i. Pha n ngu `i dng mo i (v khng ch oc ti u e n lo n d d o LILO. V the lie ng ra t di (v la i vie t trn tie ng Anh nu a) cu a ho thu o ng su ` u ra t hay nhu dung `u hnh no (tc l khng the i d LILO khng d ` he ng cch, v ke o u ie t qua kho ng d t ky d o c ba se thuan tien hon cu gia Do `ng ho i nhu `idng mo i th ng d ng ngu ro y). i vo i vo tru o p nhu va o i d ngv ba t d `u tm hie dung loadlin.exe d khi su e a kho u Linux. Tuy nhin, "khng vo hang o t d cop sao ba u o c cop". `u pha `n d i ci d ca Chu t, ch t chu a a p tin o ng trnh loadlin.exe khng yu ca o ng trnh ta nh cu a nhn) ln mo loadlin.exe v nhn (a a m DOS nha t trong cc d n ra. C the dng `n su i d dung chu ` CD hoa c tu ` o a trong mang m khng ca e o kho ng Linux tu d o ng trnh ny d ng `m kho i d na i d d ng ny bie `i d a me o e o ng. Kha n loadlin.exe thnh mo t cng cu tuye t vo kho ` Linux khi c va i LILO. e n d vo n 1.6 cu a loadlin.exe lm vie Phin ba i moi ca c vo u hnh DOS v c ra t t han che . Phin n ny c the dung bo ro nh ba mo n (cc bzImage) v cc a su nho ng; c the nap cc nhn lo ` d na m trn. a ao (initrd) tru p vo vng bo nho c tie loadlin.exe khng c ngha l Linux lm viec duo dung Vie c su i DOS, v chu o ng trnh ` i d a my tnh, v sau d ny ho ng o DOS d u tro ng lgc" cu hon ton ba "kho o c thay the ` Linux. Ne ng oc muo o u nhu n quay tro ng lai my tnh, v du, ba ban d lai DOS, th phai kho i d cu le nh reboot. vay, ca `n lm g d dung chu Nhu e c the su o ng trnh loadlin.exe. `n ci d a ban (ta l 386 hoa Trn my tnh cu i bo c cao ho t DOS hay a t nhin vo xu n) ca WINDOWS 95. `n c a nh nn cu a nhn Linux (zImage, bzImage)5 . Ca dang khng nn hay trong Chu a phn pho tm tha y trn d i o o ng trnh loadlin.exe. C the gi LOADLIN16.TGZ. Gi nn ny cn chu a hu ng da n su o dung DOC\MANUAL.TXT, n cch d ta ng da u p tin tham so v du DOC\TEST.PAR, v hu DOC\PARAMS.DOC o a cc tham so ` (d `ng qun ra ng chng l nhu ng ta u p tin DOS).
n phn pho mo t cho chu `ng ghi ta a i cn c gi ci d p tin loadlin.exe vo thu t so ba o ng trnh ny, thng thu o a ngu muc cu o i dng root ` 5 Ghi ch. zImage l d nh dang nhi phn cu cu n nhn lo i ho n a nhn, bzImage l d i inh dang mo phin ba n (so ln kch thuo ho n 1.3.73) c kch thu o c to i 1 Mbyte, do d nhn khi gia i nn c c ln to i 2 Mbyte. Tie p theo , ` cc ta ni ve chng ta se c d ban d ch oc c the p tin zImage, ma thay the zImage thnh bzImage
4

` ng loadlin.exe i d ng Linux tu Kho ` MS-DOS ba o

` i d ng Linux tu 2.8 Kho ` MS-DOS ba ng loadlin.exe o Ne u ban chay loadlin.exe khng c tham so C:\LOADLIN> loadlin

25

n su n ny, khi n gon. Thua dung nga th se ng da ng da nha u e oc hu n d n tie n ho d o c hu o n d o chay chu i tham so ng trong Linux) more (gio o ng trnh vo C:\LOADLIN> loadlin | more i dung loadlin.exe d By gio c ci d t Linux khi su ` chng ta c the e a kho xem xt cc bu o d ng. o `n 2.5) 1. Chia cc phn vng cho Linux (cch lm xem pha `n ci d `u tin cu a phn 2. Ci d t Linux vo phn vng d t vo sector d a chia. LILO ca a a na i d vng Linux d ng kho ln MBR v khng bi ma o e t kha ng vo khng ghi d Windows. `n ci d i d 3. Sau khi ke t hy kho o a ng Linux (ne u khng c cch no khc, hy t thc pha `m kho n phn vng DOS (gia dung d i d thie su a me o ng). Ga t l /dev/hda1, cn phn vng Linux l /dev/hda3):
knh giao tc [root]# mount -t vfat /dev/hda1 /mnt/C

i nn ta Tao thu . Ngoi p tin LOADLIN16.TGZ vo d muc /mnt/C/loadlin v gia ta nh cu a nhn Linux. C ra sao chp tu ` thu a a ca p tin chu muc /boot vo thu muc d t nho `n thie nh cu a nhn ca the a a ` ta tm ta p tin chu p tin /etc/lilo.conf: tm trong y tn ca `n thie pha bn pha i da ta tha oc se p tin ca u hnh dng "image=..." v ban d t o u ` ba ng. V du tn cua ta ` p tin ny l vmlinuz-2.4.22. Sao chp ta p tin vmlinuz-2.4.22 tu i tn l khng nha /boot vo /mnt/C/loadlin v d o o i tn thnh vmlinuz (vie c d t c ngh dung): thie a thua t, v ch n tie n cho su
knh giao tc [root]# cp /boot/vmlinuz-2.4.22 /mnt/C/loadlin/vmlinuz

i d 4. By gio `i kho o oc c Windows 95/98 th ng lai my tnh vo DOS tru p (ne u ban d c tie ` ca c o e o n nha n phm <F8> khi kho ng d hie n thi trnh d i d n cho php chon DOS), hoa nh ta qua ho Windows 95/98. t my (shutdown) p thoai lu n le a chon khi nha Sau khi vo DOS hy chuye n sang thu nh CD \LOADLIN) v muc C:\LOADLIN (le thu n le nh c hie
C:\LOADLIN> LOADLIN vmlinuz /dev/hda3 ro vga=ask

hoa c, ne i o a RAM: oc muo u ban d n nap nhn cng vo d


C:\LOADLIN> LOADLIN vmlinuz /dev/ram rw initrd=diskimage

cc tham so a le Cn c the i tn params) ghi ta t ca cu nh loadlin.exe vo ta p tin (v du vo dang sau: v goi cu le o nh d


C:\LOADLIN> LOADLIN @params

`u tham so na Kha ng ny d c bie a u o t c ch khi d dng le nh v khi d di a nhie so lenh ` a dng le cu a cu cu nh lo n ho n 127 k tu . M ta d y d ta t ca cc tham a u p tin PARAMS.DOC hoa loadlin.exe c the c Internet trn trang tm tha y trong ta http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html v http://rsphy1.anu.edu/ gpg109/Bo HOWTO.html

26

Ci d t HD i Windows a H Linux trn cng my tnh vo

i d dung cch ny d By gio ` ban d o e oc c the ng Linux. Cng vie c duy nha t cn kho su i la `n kho i g le cc tham so i d lai l lm sao d i ta o e nh loadlin vo t ca sau mo ng khng pha lai. C the c tao mo t ta p tin le nh (v t thm le nh goi loadlin vo ta p tin autoexec.bat hoa vie DOS tru o th y ta , linux.bat), v khi cha du chuye o d p tin ny, my tnh se n vo che c, sau d y Linux. Tc gia nhung thng tin d d a ra o ` ` ng chora ta o ta p tin bat ca n thie cha trn d d u u e t. ` ` ` `n i d Ca ng, khng d ` giao die u o o n ni thm ra ng Linux tu n d hoa DOS/Windows v ca o c kho t mo n thng thu ta n ba `ng), y l ta p tin va t vi ty chon trong ta p tin a n C:\MSDOS.SYS (d o ` ng cch thm vo hai dng sau (ne ba u chu a c):
BootGUI=0 Logo=0

` hoa, v DOS se `u tin ta i d Dng d t giao die d o u o a ng thay cho Windows 95/98. n d o c kho cu lenh C:> win). ` ` cha y giao die n d ho a, ca n nha p (D e o c hie ong Windows , d `o t vie cho a so (cu Logo=0 ta i mo e o n d i vo t so cac ). Va u tu n thi bie mn hnh Linux se d u o t mn hnh tro ng ro ng sau khi kho ng, ne u nhu n thi a ra mo i d c hie bie u tu o ng Windows.

Chu o ng 3 Bash
ho To c so t go t nu n to o n ca dao tuc ngu Vie t Nam `n ny chng ta se ` ca ` lm vie che Trong pha i Linux o d e e e o p d n va n d c vo d text, hay cn o d o c go i l console hoa c terminal. Nhu ng ngu o i dng Linux mo i (newbie) thu ` se u `ng ngh ` hoa. Tuy nhin d che cha ng bao gio ` lm vie o c giao die o y l mo c o d ny, v d n d t kie n `u cng vie c c the n tien trong che `m, bo i v ra sai la o t nhie thu n nhanh v thua d ny ho c hie n d text cu Linux khng pha l che ` hoa. V d sao th che dung giao die a HD l su H i d o o n d o a MS-DOS. V Linux l HD text mo Hd a tie o t tie n trnh cu n trnh, nn ngay trong che d text na a so o mo n khng nha d ng lm vie n ba c kha e c trong vi cu . V d soan tha t ta p tin va t `n i chay cc trnh soan tha o lo thie n v cha c bie a t pha m chap (d t trn cc my c ca u hnh pha ` hoa. a mi tru cu d ng tha `ng o p) cu o

3.1

l g? vo He

`u hnh". `u ny khng hon ton Chng ta thu Die `ng ni "ngu `i dng lm vie i he ie c vo d o o i mo d i ngu `i dng d c bie a ng, v trn thu u "lin he " vo n bo t chu t. c te o o c thu c hie o ng trnh d d d ` cap - he vo , hay shell, d lm viec trong che C hai dang cu a chu o ng trnh d text e e o (Graphical User Interface), ` (giao die hoa GUI thu o n dng le nh) v giao die n d n "lin c hie ` hoa. Ca `n ni ngay ra ` he i ngu `i dng trong mi tru `ng d ng, ba ` chu o " vo t ky o o o ng trnh no i d a he (ne Xd trong Linux c the ` dng le ng nhu o chay), cu kho ng tu nh cu vo u my chu ` a he tu qua giao die ` dng le i vie o u n d hoa. Chay chu nh cu vo c nhy o ng trnh tu o ng d o ng vo ong a chuong trnh trong GUI. Dua (d p) chuo t ln bie u tu cho chu cu cc tham so o ng trnh nh tuong d ci g d trn dng le i vie ln bie c chng ta ko v tha u tu u o ng vo o ng chu o ng trnh ` GUI v ch trong mi tru `ng d t khc, mo o hoa. Nhu t so chu chay o o ng ma o ng trnh khng the lenh. Ni ngoi le t cht, tn goi "he vo ` ` c the c hie n tu dng mo " bi pha n d i ra t nhie u. ` o thu n cu ng nhu chuyn gia Linux th nn goi chuong Theo kie cu a mo t so chuyn gia ngn ngu trnh ny mo ng ho t cch d nh" hay "trnh bin dich le nh". Tuy nhin, tn n l "trnh xu l le trnh dng d bin di " goi "he (shell) d o c dng cho cc chu o ng ch le nh trong che u e o vo d text ` trn moi he a tho ng UNIX. Trn cc he tho ng UNIX d u tin c mo t chu o ng trnh, goi l sh, shell. Sau d vi bie cu t cu a vie , u c t ta n the a sh d n v lm to t ho o c pht trie n, trong d n mo ro a sh, vie i Steve Bourne. Du Bourne shell - phin ba ng cu t bo n GNU (du n pht trie `i ng dung cua Stollman, xem http://www.gnu.org/) sau d cho ra d o n chu o ng trnh u oc gia bash, tn goi cu a n d he i m ra l Bourne-again shell , tu c l "la i l he vo u vo

28

Bash

a Bourne". Trn tie cu ` Bourne d i tu ` borne , v tu y l mo oc gio ng Anh d t cch cho ng vo i chu ` ra), v nhu gia i m l "shell d o c sinh ra la n hai". Tie (sinh ra, d the bash cn c the u e p theo `m hie xem xt bash, v the du , xin nga chng ta se i khi ni d ch l bash e o n he vo u d o Tu ng dung no. Nhu t mnh bash khng thu n mo t cng vie c u tro c thu mo c hie ng n ho vie c mo i chuong trnh khc, tu viec tm kie ng trnh d oc goi, chay chng d n thi m chu o vie c to ` u e ` ` ` chiu trch nhie chu c du i cc bie lie a a u d u vo/d u ra. Ngoi ra, he vo m ve cng vie c vo n mi , hond i vi tr) cc tham so Nhung tnh cha le nh. i (the tru o ng v thu c hie n mo t vi bie n d ` o t o a he , nho tro thnh mo a ngu chnh cu ` d `i dng, d d u l n vo vo t cng cu manh cu a he o ` ` bao go ` lu d ng minh ra ng, la o d u m mo t ngn ngu p trnh d n gian. Trong ton hoc tu o c chu o c xy du ng tu hai (ba) thao tc co ba n v mo t ton ba ` ` mo ng c the u t ky t thua t ton no cu d tien n. He vo `u kie `u kie dung cc d d vng la tu p. N su ie ie cung ca p cc ton tu n v ton tu c ci d t ring) ong trnh d `u hnh, hay d o ` lm d ch v chu khc (c trong thnh pha n he e u a ie d a cc tham tro. Do `ng tho n cho ngn ngu cc thao tc co `i cho php la u p trnh m n ho ba so i cc chu i ngu `i ng nhu cu t qua lm vie c cua mo t chu ke o ng trnh to o ng trnh khc hay to o t ngn ngu lap trnh manh. Dy cung l su thu d dng. Ke o c l mo c ma nh v l mo t u t qua ` ` a he . Tru trong cc chu c na ng chnh cu c khi ba t d a oc nn bie vo u pha n ny, ban d t cc to ho p o ` phm chnh, su t nha lie ie e c nha p du u trn dng le nh. Nn nho t cch su u khie n vie d dung d a cc (to dung cu i tn. ho p) phm <Ctrl>+<C>, <Ctrl>+<D>, <Tab> v cc phm c mu

3.2

bash su dung mo He ` bo c d nh ring, hoa e t vi k tu 256 k tu vo ASCII cho cc muc d tu ` bie c d c. Cc k tu , hoa e o u thi cc thao tc no d bie n d i bie u thu m: ny bao go ~ ! @ # $ % ^ & * ( ) _ -- [ ] { } : ; " / \ > < ng. Phu ng tra v k tu i m 0, k tu i (tao ra khi nha n phm <Enter>) v k tu vo hng mo khoa dung vo a n hay thuo c bie i ngh c bie a d a a c vo tnh huo ng cc k tu t ny c the su t cu d dung nhu su `ng. Nhu `ng ho a so t k tu cc tru mo thng thu o ng trong d o p khng khuyn dng tn tap tin v thu muc. cc k tu vo i gi tri thu hai. Tru o c he t d l vie c su du ng chng trong du Tuy nhin cc k tu ng i, gach ngang v da `ng d u u gach du u cha m) thu _, - v . (da o o o c su d l mot v du cho tha khng pha gi tri trong tn ta p tin, v y i lc no chng cu ng c d c y a da bie c bie a t. Trong tn ta p tin ch u cha m (.) v gach cho (/) c gi tri d t. K hie u gach cho n, cn da dng d `ng da c bie e u a phn chia tn cc thu u cha m c gi tri d t khi n muc trong d o t ca a dc ` l k tu d u tin trong tn ta p tin (cho bie t ta p tin l "a n"). Vie c d a ngay ta ngh a a u a nhu dung chng tam tho bie ta `i khng c ch. Chng ng k tu t cu ng su ny v cc tnh huo ` ` ` ` se xem xt chng da e n da n trong cc pha n sau, khi ca n su n. Tuy nhin, 3 k hie u c dung d u `n d ` ca `u tin. K hie ngh n v ca a lo e e a p d n d u \ (gach cho ngu goi l "k hie o c) c the ngh xa bo c bie ` k tu c bie ng ngay sau \. V du, ne a d a a u t" cho ba t ky t no, d u muo n d `n d t truo ng ng d dung khoa ng tra ng tra su trong tn ta mo p tin, th chng ta ca a c k tu t khoa da u V du, cu le nh sau:
knh giao tc teppi82@teppi:~$ cp lennon_imagine lennon\ imagine

t Cc k tu c bie d a

n". Mo i k tu Cc k tu c d c kp) c the o goi l "cc k tu n v ngoa trch da v " (ngoa ny lun lun d p vo i ban sao cua chnh n d u e ng khung mo t ca d t bie u o c su dung trong mo n ba n, sch bo, . . . thng thuo thu trong cc va ng. Ne u nhu mo t d n c no d ` , gio oa ng nhu

nh 3.3 Thu c thi cc cu le

29

` cc k tu n no d va c d m trong ngoa c d n ba t trong ngoa o o d a t ca n, th ta na n ny c gi lai vo c bie t. Tro tri nhu cc k tu thng thu o ng, khn mo t k tu no c ngh a d i v du su ` a ng trong tn ta ng tra trn, c the dung khoa t ta a u muo n d p tin ci tn "lennon p tin o ni, ne ` imagine" ca c: u vo da n d u ngoa a tn d
knh giao tc teppi82@teppi:~$ cp lennon_imagine lennon imagine

dung k tu Su c bie c d a d a l, trong ngoa o t t ngh khc nhau trong cch su v " d n ma c cc k tu chng ngoai tru t ca ta c kp - ta ` $, v \ (da la, ngoa t ca u d , cn trong ngoa d o u gach ngu n v da o c).

3.3

trn, mo a he l to Nhu c vie c na ng chnh cu ni o c thu n cc cu t trong cc chu vo chu c hie d cho ngu o le o i dng d a vo trn dng le nh. He vo , ni ring, cung ca p ` ` u nh m ngu i dng hai thao tc d c bie c vie a e u t d to chu c d nh trn dng le nh: ; v &. a cc cu le

nh Thu c thi cc cu le

3.3.1

Thao tc ;

nha Ma c d ngu `i dng thu `ng ch `ng cu le u p trn dng le nh tu nh mo t, nhu d o o ng cn c the a `n lu vo dng le c vi cu le ` cu le thu ngay la nh d p tu nh, v chng se n la nh ny c hie o t tu ca c bie t - ;. Ne ny `u ny `n su dung k tu d De e u ie a n cu le nh khc. lm d u dng k tu o c d d cc cu lenh, th d oc coi nhu tham so o d phn chia cu le nh tie p theo se cu a le nh pha tru e u c. Nhu gio y, ne u nha p vo dng le nh ci g d ng nhu va sau:
knh giao tc teppi82@teppi:~$ command1 ; command2

`u tin se d th he ` cho le thu a hon thnh, sau d vo n cu le nh command1, cho nh d c hie chay command2, cho ` le ` cc hnh d lai d u o nh hon thnh, sau d p le nh v cho ng a ra dng nha a ngu tie `i dng. p theo cu o

3.3.2

Thao tc &

`n sau. Ne Thao tc & d c vie t u e o a to chu c thu n cc cu le nh trong che d ne u d o c dng d c hie ` ` da u & ngay sau cu le nh, th he vo se tra la i quye n d u khie n cho ngu o i dng ngay sau khi ` ie chay cu le o hon thnh. V du, ne nh, m khng d nh d u nha p vo dng le nh i cho cu le nh "command1 & command2 &", th he c chay le vo chay cu le nh command1, ngay la p tu lai dng nha nh cho nguo tra command2, v sau d i dng. ` khng cha m tre p le

3.3.3

Thao tc && v ||

`u khie Cc thao tc && v || l nhu ng thao tc d ie n. Ne u trn dng le nh l command1 && command2, a le th command2 se c hie n v ch thu c hie n trong tru o ng ho p ` thu nh trang thi thot ra cu ` ng khng (0), tu command1 ba c l le thu nh d n thnh cng. Mo t cch tu u dng c hie o ng tu , ne thu le thu nh c dang command1 || command2, th command2 se n v ch n khi c hie c hie thua t cu a le trang thi thot cu t ky khng xem xt ma nh command1 khc khng. Chng ta se a

30

Bash

` pha i tm m (code) c the vie n gon ra ng, he . Ch vo c thu n mo t cu le nh no d ni nga c hie dng lenh vo cho cu n cc tham so d nha p trn chu o ng trnh, na p m d vo bo nho , chuye lai ke thu le tra nh, v sau khi thu n xong th theo mo t cch no d t qua n le nh ny c hie c hie ` cho ngu `i dng hay tie c ny. Bu c d xem xt qua cc bu a n trnh khc. Chng ta se u tin o o o a chng c trong m cu a tm kie m cu le nh. Cc cu le nh chia thnh hai loai: no i tr (m cu ` ) v ngoai tr (m cu a chng na trn d lun chnh he m trong mo a). He vo t ta p tin ring le vo tha i tr, cn d tm cc lenh ngoai nguo ta i tr i dng, theo nguyn c, pha lun tm y le nh no ` e n d `y d cho he d to ch ng" cho ngu `i `ng da i ta ng. Tuy nhin d "gnh na u a u e vo p tin tu go o o o ng u ` dng he u u n vo bie t cch tm le nh ngoai tr trong cc thu t k trong d muc, m d o c lie o ng da tm tha `n thie khi (he ) khng mu c d n mo tm kie the i , m. Ch y ta p tin ca t trong cc thu vo ` ` ` quye ng ngu `i dng d `ng inh ra nha u t d m khi nha p tn le nh. Ve cch thm thu o muc vo d o kie chng ta se xem xt cch chu da n tm m chng ta se ni d n o du o i, cn by gio he vo to ` e c to vie i cho ngu `i dng. lie u ang thu u c d u vo cho cu le nh d n v vie c d t qua a du c hie a ke o

`u ra tiu chua `u vo/d n 3.4 Da a


3.4.1
Khi mo lie u u t chu n, n d p ba dng du u (hay cn goi l o ng trnh d o c thu c hie o c cung ca knh): `u vo tiu chua d a lie u u n (standard input hay stdin). Qua knh ny du u d o c d a vo cho chu o ng trnh; `u ra tiu chua d a u n (standard output hay stdout). Qua knh ny chu t o ng trnh d a ra ke lm vie a mnh; qua c cu i tiu chua knh thng bo lo n (standard error hay stderr). Qua knh ny chu o ng trnh i. ` lo d u a ra thng tin ve i `u vo tiu chua `u ra v knh thng bo lo c the Tu ` d a oc, cn hai d a n chu d o ng trnh ch 1 ` dung ch d d i bn phm, cn c d u e inh d a ghi. Theo ma u vo c lin ke t vo o c chu o ng trnh su ra v knh bo lo o ngu o i hu `u d ng d n terminal cu a i dng. Ni cch khc, ton bo ` a e thng tin oc d a a le nhu cu `i dng d ng thng bo lo chay, v ta u nh hay chu t ca i, d o ng trnh m ngu o u ` ra cu i, c the ng thng bo d tha a terminal. Tuy nhin, chng ta se y o chuye n hu u a so du o o i tiu chua ra (v du, vo ta De the no, hy p tin). cho tha y knh thng bo lo n lm vie c nhu nh ls vo l mot tn tap tin thu i mo ng, v du dng tham so n cu le t tham so khng d c hie `n tai. Trong p ny, ls d a mot tin nha bo lo bo lo khng to tru o ng ho n i ra knh thng ` u i tiu o i tiu chua chua i ngu `i dng th trong tru o n. Tuy nhin, d i vo n o `ng ho p ny knh thng bo lo i d `u ra tiu chua i v chng ta cu a so khng khc g vo i d ng tha a trn cu n, bo y thng bo lo `u vo v d `u ra tiu chua terminal. Lm vie i d a a u c vo n d t nha t qua v du cc o c minh hoa to le nh echo v cat.

u vo-ra Dng du lie

3.4.2

`u ra tiu chua Cu le i d e a u u nh echo dng d chuye n to n dng k tu , m d o c d a vo lm tham thu so le u cho n. Sau d nh ny d u chuye n dng v hon ta t cng vie c. Hy thu c a ra tn hie hie n cu le nh sau:
1

nh echo Le

gio ng lin ke t ha hoc

`u vo/d `u ra, d `u loc n hu ng v d 3.5 Chuye o ng d `ng o o a a u a


knh giao tc [user]$ echo xin chao cac ban!

31

` i thch se xin hy su dung da Ti ngh `i gia `a thi (ch ng lo c d l thu ra o u khng u ngoa n, ne ke khc. Ne oc ch th c the giai thch tai sao lai khc). u ban d se t qua c the

3.4.3

`u vo v d `u ra tiu d Chng ta se `ng lm vie i d xem xt le y v le a a nh cat o nh ny thu c vo o ` De chua ng ng to i d c d inh ke a chu t qua lm vie c cua le nh cat hu u ra tiu chua n. n. Theo ma o minh l le c d lie inh tie p nha n dng du u nha p vo, hy chay le nh cat khng nh ny theo ma tro chuye i mot dng mo i, v hon nua c ve nhu khng c g . Ke l con c tham so t qua n to d `u vo tiu chua y ra. Lc ny cu le n. Hy nha p ba t xa nh cho cc k tu d n tu ` k tu ` ` e a ky no, v n se c trn mn hnh, tu c l chu c d i xua u t hie n ngay la p tu p tu o ng trnh ngay la a chng to ` d ng se xua a p tuc nha p cc k tu t hie n trn mn hnh. tie u ra tiu chua n. C the , v chng cu u hnh d nhap vo theo tu u ban nha ng dng, v the ne Thng thu o ng bn phm d o c ca ` ` u e n phm <Enter>, dng k tu i le `a nha lai d lie d u u u nh cat, v le nh ny se u ra p se a du o c d a to ban vu i dng k tu nhap vo se d oc hie chua Nhu vay, mo d `u ra tiu mn hnh thng qua n. u a n ra ho `n: mo `n khi g v la `n thu i cu le hay la hai bo t la nh cat. Ne u nha n to p phm <Ctrl>+<D>, m dng d `ng vie lie qua lai dng nha ng c the e ngu c nha p du u, chng ta se p le nh. Cu su d dung to `ng chu e ang chay. ho nh trong he vo du p phm <Ctrl>+<C>, m l cu le o ng trnh d c a le Ne d u u u d t ta p tin vo lm tham so cho le nh cat, th no i dung cu nh ny se a tn mo o ` ` d i d ` d i d d u a le oc no u a u vo tiu chua n, tu nh cat se i dung ny v d u ra tiu chua n a to a to `). (xem so o d n (stdin) --cat--> d `u vo tiu chua `u ra i dung ta p tin -> No Da a n (stdout) tiu chua `u vo, mo l mo a vie Dy ch `ng ho ng du lie a t tru c chuye n hu u d t co ra t o p ring cu o che ` a he . V ta c ch cu ho vo t nhin chng ta ca n xem xt ky ny. n co che

nh cat Le

3.5

`u vo/d `u ra, d `u loc n hu ng v d Chuye o ng d `ng o o a a u a

`u vo/d `u ra cu trn, thng thu a mo Ma c d, nhu `ng d i ni o a a t chu t vo d o o ng trnh lin ke `u vo/d `u ra tiu chua cn c cc mi tru cc d o ng d c bie t cho php chuye n ` a a a n, trong he vo ` ` hu ng d a a u vo/d u ra. o

3.5.1

`u vo/ra, su dung cc k hie dung vie De ng d `ng su a chuye n hu u ">", "<" v ">>". Thu c o o a cu le chuye ng d i d ng: lie u y l mo n hu u ra cu nh vo ta p tin. Du t v du tu o o o ng u knh giao tc
maikhai@fpt:/some/where$ ls -l > /home/maikhai/ls.txt

dung >, < v >> Su

a thu Theo le ` d `i dng ngu nh ny danh sch ta p tin v thu muc, m tu o muc con cu 2 thu d u n le nh ls se p tin /home/maikhai/ls.txt; khi ny ne u ta p tin c hie o c ghi vo ta
2

thu `i n tho muc hie

32

Bash

`n tai, th n se a n se ls.txt khng to d bi u c, th no u ta p tin d i dung cu o c tao ra; ne i danh sch ni trn. Ne xa v ghi d m ghi thm bo u ban khng muo n xa no i dung cu `u ra vo cuo `n su dung k hie ng du lie a u d i ta p tin, th ca u >> thay cho >. Khi ny khoa tra ng tru c v sau cc k hie i muc d a v ch dng vo ch thua u > hay >> khng c ngh n o n huo vo cu t nhn. Ban c the ` ng khng ch vo ta p tin, m cn to i d u a mo tie a n, de chuye cu le i mo u (v du, my in). V du, d e i dung ta p tin nh khc hay to t thie t bi no d d a no su nh a so hai3 c the trn to /home/maikhai/ls.txt vu `atao o i cu dung le terminal thu sau:
knh giao tc maikhai@fpt:/sw$ cat /home/maikhai/ls.txt > /dev/tty2

`u ra. Chu a d Nhu ng du c na ng tu i lie a o e u cu i vo n hu y, > dng d chuye o o ng tu d ban tha ` d m so tu trong ta p tin ls.txt nhu sau (ch , d u vo d o c thu c hie n bo i < . V du , c the ` a u e l mo dung cu le n ho d `ng su y ch o t v du minh hoa, trn thu thu nh d c te o n gia n):
knh giao tc maikhai@fpt:/sw$ wc -w < /home/maikhai/ls.txt

dung trong cc script, cho cc cu le Cch chuye ng ny thu `ng d `ng u n hu nh m thu o o o c su o tie `) du ` bn phm.Trong script dng d lie e o p nha n (hay cho u vo tu tu ng ha mo t thao tc d p tin ny ghi sa `n thie no d ` ta n , c the u d t cho cu le nh tu p tin: trong ta a cc thng tin ca ` nhu n d thu c hie n le nh d Bo i v cc k hie u <, > v >> lm vie c vo i cc knh tiu ng g ca . e u ra), chng khng ch c dng theo cc cch `u vo hoa ` d chua quen thuo c d `ng a a u n (d c, thu o o dng, m cn c the t" ho u theo cch khc, "la ma nh sau l tu n. V du, cc cu le o ng d o ng:
knh giao tc [user]$ [user]$ [user]$ [user]$ cat > file cat>file >file cat > file cat

Tuy nhin, tu c l khng c knh tiu chua t le nh no, tu n no cho chng (khng c mo dung, nhu le ng ny khng the u nh) cc k tu n hu d khng the , v du, nha p chuye o o c su the dng lenhsau: vo
knh giao tc [user]$ file1 > file2

`u ny khng lm gia n sao cu a mo m gi tri cu a m thu d u . Nhu ie t ta p tin no d o c ba ng d co ng ny, bo n c cho moi cu le nh. Khi ny, c the chuye n hu che i v cc knh tiu chua o khc. De `u vo v d `u ra tiu chua ` `n d khng ch cc knh lm d o c d u ny, ca a a u ie n, m cn ` a knh muo cu d Da t tru c k hie ng so a u chuye n hu n chuye n. u vo tiu chua n stdin c so 0, o o n stdout - so ` d u ra tiu chua 1, knh thng bo lo i stderr so 2. Tu c l le nh chuye n hu o ng a c `y d c lai, khoa ng canh > l khng nha nhu ng tra dang d a u u t thie t): sau (xin d o c nha command N > M
3

`n dng to a so ban ca i cu ng nha c e a terminal ny v d p tru ho chuye n to p phm <Ctrl>+<Alt>+<F2> d o

`u vo/d `u ra, d `u loc n hu ng v d 3.5 Chuye o ng d `ng o o a a u a

33

a knh tiu chua Trong d c tn ta , N v M - so p tin. Trong mo t vi cu n (0, 1, v 2) hoa hay tn tap tin, v tru o ng ho p c su du ng cc k hie u <, > v >> m khng ch ra so knh ` cn thie `u ra tiu chua vo cho c 0 ne t, theo ma c d c l d d a inh, 1 ne a u u se u dng >, tu n, hoa ` dng <, tu c l d d u a , khi khng c so no ch ra, > se u vo tiu chua n. Nhu the o c bin dich chua n n hu o ng cc knh tiu l 1 >, cn < se o c bin di ch l 0 < . Ngoi vie c chuye d o u n d n nhu na gia ng du ng khng nhu lie ng chuye u vo knh ny hay knh y, cn c kha n hu o va u & dng d thuc hien sao chp noi dung cu a cc knh tiu chua khc, m cn . K hie e n d o `u ny, khi d a knh se n: e d t n (&) tru lie chuye ie a u d cu n du c so command N > &M `u ra cu `u ra tiu chua a knh vo i d d Le i so a l, d a u e a nh ny c ngh Nd n ca n, v sao o c gu ` ` chp to i knh c so a e n dng le nh i vo d u ra tiu chua n, ca M. V du, d sao chp thng bo lo `u na 2>&1, cn 1>&2 sao chp stdout vo stderr. Kha ng ny d c bie a a t c ch khi muo n ghi d ra vo ta `a ghi chng `a c the chng ta vu y thng bo trn mn hnh, vu p tin, v khi d nhn tha i d vo ta `ng ho `ng d ng dung trong cc script chay khi kho u o p tin. V du, tru ng o p sau thu o o c u Linux:
knh giao tc teppi82@teppi:~$ cat hiho > /dev/null cat: hiho: No such file or directory teppi82@teppi:~$ cat hiho > /dev/null 2>&1

3.5.2

`u ra l su a chuye Mo `ng ho c bie ng d c cc d `ng o a a u t tru t cu n hu chu ng (ha y cn c o p d o to o ` `u ra the c ba ng chuye a cc chu a goi l knh giu n). Hai hay vi cu le nh, m d o ng trnh, hoa `u vo cho le a le cu c dng lm d i nhau (c the a nh tru nh sau, lin ke t vo ni phn cch nhau, o `u ra tiu chua i k hie a le ne ng d ng - "|". Khi ny d ng bn u a u u muo n) bo u gach tha n cu nh d ` tri so vo i | du ng bn phai so vo i |. e a n d n d u vo tiu chua n cua chu o c chuye o ng trnh, du V du:
knh giao tc maikhai@fpt:/sw$ cat ls.txt | grep knoppix | wc -l

dung | Su

cu a le Dng ny c ngh c l no a l ke d u t qua nh cat, tu i dung ta p tin ls.txt, se n o c chuye ` a le la d phn chia no ng e a n d u vo cu nh grep, le nh ny se i dung ni trn v ch y ra nhu `u dng no c chu De a tu ` knoppix. i d u a n lu t qua cua le nh grep d n to o t mnh, ke o c chuye a le dung d vo cu Du `ng o ng dng thu d u e nh wc -l, m tnh so nhu ng su ke t ho o c. o p vi lai vo chu i nhau (mo o inh no d trn i chu n mo t bie n d i xc d o ng trnh nho o ng trnh thu c hie c tap. Ca `u vo) tao thnh mo `n cu a d n se l mo a o t le nh to ng qut, m ke t qua t bie n d i phu ` ng, he goi v thu cc cu le ch ra `ng o u vo n ta t ca nh c trong d ng cng mo t lc, chay c hie o a `u d mo nha t d trong mo a u i le nh d t ban sao he vo ring. V the ngay khi chu t ba o ng trnh thu o ong trnh tie p theo ba `u ra, chu ` d ke t d u xu l ke t qua ny. Cu ng y nhu va y, cc le nh a a t qua cho le nh a mnh: cho tie ` du ` le c v d lie u p theo thu n cc cng vie c cu u tu nh tru t qua c hie o a ke ng nhu mot dy chuye `n sa muo n mot lenh no d ke n xua t. Ne u nhu t thc hon tie p theo, gio mo t dng ca n lenh tie dung trn k hie ton, tru c khi thu p theo, ban c the su u dy e o c hie cho ` chuye `ng lai v ` c mo ng nhu du n |, cu u cha p pha y ;. Tru i da u cha m pha y, he vo se da o Trang thi thot ra (gi t ca cc cu le nh tru o c cu a d o ng o ng. cho d c hie n xong ta ` e u n khi thu

34

Bash

lai sau khi thu a mo tri lgc, m d `ng o trng u u n xong chu t d ng se o c tra c hie o ng trnh) cu o ` a cu le a vo o ng o ng. O tru o c cu le nh d u tin cu i trang thi thot ra cu ` u a nh sau cng trong d a d d d t k hie `ng o `ng o l phu a trang thi thot ra cu u inh u u "!", khi d ng se ng c the d o o lgc cua trang tht thot ra cua le `ng o c l ne u nh cuo i cng trong d ng. Tu u trang thi thot o i cng ba ng thi thot ra cu ` ng 0 th tra ` ng 1 v a le a d ra cu ngu `ng o ba u nh cuo ng se o o c lai. He ` cho cc cu le vo ` cho ta i xc d inh v d u t ca nh ke t thc ro i mo a ra gi tri ny.

trn (v du vo V du cuo i cu le e i cng o nh grep) c the dng d minh hoa cho mo t khi nie m p `u loc chu `u loc - d qua trong khc, d Da l le l, d nh (hay chu o ng trnh. a o ng trnh), m tie ` nha lie lie u a o u ny v d t qua o u ra tiu n du u vo, thu n mo t vi bie n d i trn du a ra ke d c hie n (tu cn c the n d n noi no d theo muo n cu a ngu o i dng). Cc cu le chua ` y nh e chuye ` d , ` ` trn cat, more, less, wc, cmp, diff -d a ni d e u loc bao go m cc le nh d n o ng cu lenh ctrong ba nhu ng 3.1 v ca `u loc ng 3.1: Cc cu le Ba a nh d n gon nga Le M ta nh u va `u vo cc dng c chu n grep, fgrep, egrep Tm trong ta a ma n ba lie a p tin hay du u d ` d o c ch ra v d a cc dng ny to i d u ra tiu chua n a u u `u vo thay the i cc k tu tr Trong du o thu nha t bo lie a u d cc k tu tu o ng ` thu g le u ng o hai. Hy thu a nh tr abc ABC ro i g vi dng chu cc k tu abc! `u ra tiu chua comm So snh hai ta `ng dng mo u a n 3 p tin theo tu t v d a vo d ga ta co p o nha ng dng ch ng dng ch t : mo t - nhu p tin thu t, hai - nhu p tin thu ngdng c trong ca ta ga hai, v ba nhu hai ta p tin. p o ` pr D i nh da ng ta p tin hay no i dung cu a d u tiu chua n d in a n. a e dung d sed Trnh soan thao ta o e p tin theo dng, su thu n mo t vi bie n d i c hie ` ` trn du ` ta lie a a u d u vo (la y tu p tin hay d u vo tiu chua n) `u loc d `u vo, mo i du Mo c bie t gu lie lie a a i du a t d t, cu le nh tee, nhn d u d t ma u ny tha `u ra tiu chua `n d d t khc ghi n (du `i dng ca t tn). De lie e a a n d n, ma u) vo ta p tin (ngu y o ` ra ng theo chu c na ng cua mnh le ng 1>&file. nh tee tu n hu o ng tu nhu nhm k tu chuye o ng cc bie c chnh quy (d `u khie `u loc c the na a d du Kha ro ng cu i vie a ie mo ng vo c su u thu n), n d cho php, v du, to c tm kie ` d c tap v ra o e chu m theo cc ma u tm kie m tu n phu t n gia ` ` ` phu c tap. Ne ng v d a u muo n, chng ta c the ni ra t nhie u ve chuye n hu u loc. Nhu i o ng no c trong pha `n lo ` UNIX v Linux (xem pha `n lo dung ny i ke n cc cuo ` n sch ve t). V va y, `n khc, d d chng ta se `ng o `ng v cc bie du y v chuye u n sang mo t pha n o c goi l "mi tru o mi tru o ng" ta o bo i he vo . `

`u loc 3.5.3 Da

3.6

a he n v cc bie n so . Mi tru vo Tham bie `ng cu o

bash tu Khi nie ng vo i khi nie m bie n so trong cc ngn ngu m tham bie n trong he vo o ng u `m cc k tu a tham bie la `ng. Tn goi (hay ID) cu ` bao go p trnh thng thu n c the l mo t tu o ` bang chu i (ch k tu ` ny khng d so ci, chu so a u u gach du u tin cua tu ), v , da o d o c l chu (gach ngang), $,,0, _ (gach duo ra ` nhu ca sau: , , #, , i). Chng ta ni ng, tham bie ng k tu n

a he n v cc bie n so . Mi tru vo 3.6 Tham bie `ng cu o

35

d `i dng ga n cho n mo t ra, ne u inh hay d u a t u ngu t gi tri. Gi tri c the l mo o o c xc d o c d a ng. a tham bie o i ta su du ng k tu $ o tru o c tn cu dng tro De ` y gi tri cu n, ngu ng ro nhn tha n. Nhu y, le nh: va
knh giao tc maikhai@fpt:/sm$ echo parameter

hie ` parameter, cn le nh n thi tu


knh giao tc maikhai@fpt:/sm$ echo $parameter

a tham bie hie du inh). n d u nhu t nhin ne n parameter (ta n thi gi tri cu o c xc d tham bie

3.6.1

Tham bie c bie c bie a a ni n chia thnh ba dang: tham bie n vi tr, tham bie n d t (cc k tu t d d o ng tham bie n ny) v cc bie n so cua he vo. Tn (ID) cua tham trn chnh l tn cua nhu `m mo a tham bie bie ng khng c tham bie n vi tr 0). Gi tri cu so n vi tr go t hay vi chu (nhu n ` (tham so a tham vi tr l cc tham so u u a cho le nh, d vo d u tin l gi tri cu o c d a ra khi chay he bie hai - tham bie e o n 1, tham so thu n 2, v.v. . . ). C the dng cu le nh set d thay d i gi tri a tham bie a cc tham bie thu cu ng thay d o n vi tr. Gi tri cu n ny cu i trong khi he vo n c hie ` ny o du mo i). Cc tham bie c bie xem xt va e a t trong cc hm so (chng ta se n d n d t khng o c hie g khc ho n l cc ma u, m su thay the (php the , php hon d i) chng d o c thu o u n nhu ng 3.2: trong ba ba ng trn, c mo c the Cc tham bie c bie a u ie l ch n d t, d t k o t d m khc bie t d o c lie c" d n mi tru "nha `ng, nhn e n chng, khng the gn cc gi tri cho cc tham bie n ny. Bie o , d a bie tu ` pha he t tn. Gi tri cu `ng d ` l cc tham bie u a u vo n d n mi tru o c d o o c gn nho thao tc c dang sau:
knh giao tc [user]$ name=value

n khc nhau Cc dang tham bie

a bie Trong d , name - tn cu n, cn value - gi tri muo n gn cho bie n (c the l mo t c ` a bie c the dng tro `ng ch so ci v khng d u ng). Tn cu n mi tru bao go m cc chu , chu o o t d ` ` ` ba u bo i mo t chu so . (Tin ra ng sau khi d c d n vie t ve tham bie n vi tr th cc ba n d hie a o oa u t d `u bo i mo tai sao mo `ng khng the ` mo so a t bie n mi tru ba t chu .) Gi tri c the l ba t ky t o ` dng va n ban no. Ne a nhu c bie t n (gi tri) vo da ng k tu a a u gi tri c chu t, th ca n d u d c ny. Ne u mot bie oc xc ngoa c. Gi tri ta a cc da khng chu u t nhin se u ngoa n mi tru ng d i ` ba cc bie p ho d ng le ng c the inh, th cu bi xa bo nh no i tr unset. Ta t ca n ny cng vo p ta ` cc gi tri d gn cho chng goi l mi tru vo. C the xem n (mi o ng (enviroment) cua he ` lenh set khi khng c tham so ng o `n dng d tru `ng) nho ` u (c the ca ng set | less", o o lo `u bie a mo ne De `ng n, c nhie `ng cu the u mi tru n). xem gi tri cu t bie n mi tru , thay v o o `n tm trong ke cu a n bie dung le dng le nh nh set (khi ny ca t qua n muo n xem), c the su echo:
knh giao tc [user]$ echo $name

36

Bash

Tham bie n *

# ? - (gach ngang) $

_ (gach du i) o

ng 3.2: Thay the Ba c bie a cc tham bie n d t Quy lua t thay the `u tu Thay the ` tham bie nha t d a bo n thu t. Ne u su n vi tr, ba i cc tham bie thay the c kp, th tham bie d u n ny se n trong da u ngoa thu o c thay c hie ta cc tham bie i mo t tu t, m tao ra tu t ca bo nha ` `duy n vi tr, phn cch Tu i k tu d `u tin cu sau). nhau bo a bie c l "$" ni d e n so IFS (se n o a i "$1c$2c. . . ", trong d c - k tu d `u tin trong gi tri tu o ng d o ng vo u a khng d oc xc d nh a bie a IFS tro cu c u i n so IFS. Ne u gi tri cu ng, hoa ng tra i cc khoa gi tri, th tham bie ng. n phn cch nhau bo t d `u tu Thay the ` tham bie nha a bo n vi tr, ba n thu t. Ne u thay the i tham bie i mo thu c kp, th mo d u n trong ngoa i tham bie n se bo t c hie o c thay the tu ` ring bie c l, "$@" tu i "$1" "$2" . . . Ne u t. Tu u khng c o ng d o ng vo tham bie khng d bi x u n vi tr, th gi tri se t la p (tham bie n se o c thie i gi tri tha a cc tham bie Thay the bo p phn cu n vi tr. i trang a cu le Thay the thi thot ra cu `ng o u bo nh cuo i cng trong d ng, o `n tru m d c. u o n trong che d ne o c thu c hie o i le Thay the `, flag, d t bo u a bo nh no i tr set hay trong i gi tri cc co o c d khi chay he vo . Thay the bo cua tie n trnh (PID - process identificator) i so i so a tie Thay the bo cu n trnh (PID) cuo i cng trong so cc cu le nh thu c ` hie n trong ne n sau. i tn he hay tn cu a script d Thay the ang chay. Ne bo vo u bash chay ` a ta mo ng tn cu , th $0 c gi tri ba p tin ny. Trong t ta p tin le nh no d o p ngu oc lai gi tri ny ba o n d `u ` ng d d (v tru d u a u e n he vo `ng ho `ng da du, /bin/bash i tham so a cu le Thay the c trong so bo cuo i cng cu nh tru cc cu le nh o su d o c thu c hie n (ne u d la i l mo t tham bie n hay bie n so , th se d u a n dung gi tri cu

`n thay name bo `n pha i tn bie i Trong d `ng ho , ca n (nhu y, trong tru va o p ny, ban lai ca a bie cu a le bie tha t tn cu n muo n xem). Trong so cc bie n, m ban se y trong ke t qua nh set, RANDOM. Ne la `n lin c nhu ng bie n ra t th vi . Xin hy ch d n, v du , bie n u thu cha y vi e tie p cu le nh sau:
knh giao tc maikhai@fpt:/sw$ echo $RANDOM

i la `n ban se lai mo th mo i. Nguyn nhn l v bie nha u n d t gi tri mo n ny tra t gi o c mo 4 u nhin trong khoa ng 0 - 32 768. tri nga

3.6.2

c, m bash a da Mo t trong cc bie n ra t quan trong c tn PS1. Bie n ny cho bie t dang cu u nha d ` ngu `i dng nha c d u inh th bie u p cu le nh tie p theo. Theo ma n ny d a ra trong khi cho o o c gn gi tri "\s-\v\$ , tuy nhin trn cc ban phn pho `ng c cc script i khc nhau thu o
4

a he u nha vo Da c cu

u nhin random l tu ` tie a nga ng Anh c ngh

a he n v cc bie n so . Mi tru vo 3.6 Tham bie `ng cu o

37

i d kho ng nha o a inh lai bie ng (hay script d p) xc d n ny. Ni chung th trong bash c ta t ca c, d bo o c su du ng trong cc tru o ng ho p khc nhau. Bie n PS1 d a ra da ng cu a da u ` u u n da u nha ` nhaplenh. Da xc d nh bo c khi he c thu cho i bie nha hai, i vo u nha n PS2, xua t hie n khi he vo ` cho ` ngu `i dng nha lie d e p tuc chay cu le nh tie p thm mo t vi du u ca n thie t no d c the o n d nhn tha y i. Theo ma c d nh bie n PS2 c gi tri ">". Ra ba t c the (chu o ng trnh) d go i da ` bn phm vo ta c ny, khi chay le lie u e u vo tu p tin. Mo t v du khc u nha nh cat d d a du c dang nhu d ni. Da y lenh ny da i - le nh ftp , sau khi cha u nha c se u nha c, xc d inh bo c, xc d dung trong le i bie bie c inh bo u u n PS3, su nh select. Da u nha n PS4, d o c d a ra tru o mo c d inh - "+". Ne i cu le nh, trong lc bash theo di qu trnh thu n. Gi tri theo ma u c hie n, ban c the du ng ba t ky k c mong muo ` o n PS1 v PS2. Khi ny c the su i cc bie thay d ng da phm, cung nhu mot vi k tu chuyn dng d xc d nh da tu c ` bn i e u nha p tu no nha ` 3.3 (ch d a ra mo t vi trong so chng lm v du , danh sch d y d xem trong nhu trong ba ng u a u a bash - g le trang man cu nh "man bash"). c ng 3.3: K tu Ba inh dang da u nha xc d thu d Cum k tu u t qua o c) Gi tri (ke \a Tn hie u m thanh (m ASCII 07) \d Tho `i gian o , thng, ngy", v du, Sun, Dec, 26. dang "Thu `u tin. \h Tn my (hostname) d e a n da u cha m d `y d , v du teppi.phanthinh.com \H Tn my d a u \t Tho dang 24 gio `i gian hie `i o `: HH:MM:SS (gio `:pht:giy) n tho dang 12 gio \T Tho `i gian hie `i o `: HH:MM:SS n tho `u) dang 12 gio \@ Tho `i gian hie `i o ` am/pm (sng/chie n tho , v du teppi \u Tn ngu `i dng d chay he vo o t d `u tu `y d cu a thu \w Tn d `i (ba ` go a a u c hie n tho c), v du muc lm vie /home/teppi82/project/l4u n) \W Thu `i (khng c d `ng da u n tho muc hie o d i ngu \$ K tu `i dng root, v k tu u u he vo u he vo #, ne o c chay bo o $, ne i ngu d `i dng thu `ng. u o c chay bo o o \nnn K tu tm nnn c m he \n Dng mo i (chuye n dng) \s Tn he vo a cu le \# So `i cu hie n tho nh \\ Da u gach ngu o c (backslash) tu ny cc k tu \[ Sau k ta khng d u t ca se o c in ra. \] Ke u t thc chuo i cc k tu khng d o c in ra. tho ch su cc cu le \! So thu tu cu a le nh hie n i trong li ` dng. nh d a le a le So tu `i) c the ang thu n tho khc cu nh (so thu nh d n trong buo i lm vie c hie cu c hie a chnh n trong danh sch "lich su cc cu le i v danh sch cn chu vo i so a ca cu nh", bo tin lich su khi gi tri cu nhu ng cu le nh d d o c ghi la i trong ta p . Sau a bie n d o c he vo d c u o u ra su thay the rong trong ba i cn xa `ng tho y ng trn, y xong, se d ra ` xa o theo cc quy lua t mo su c so ` (word splitting). trong tn cc cu le nh, trong cc bie u thu hoc, v su thay the chia tu the khi thuc hien lenh (v trong dng Chng ta se thay ny o du o i.V du , sau ni d ng su e n nhu c): t thie i c da n c khoa ng tro va n ba t pha u ngoa ng, nn nha knh giao tc
[user/root]$ PS1="[\u@\h \W]\$"

38

Bash

ng ngoa th trong da `i dng, k hie c se c vung, tn ngu c da u , tn my, khoa u nha u mo o c d o c vung, v k hieu ng, tn cu a thu tra mu c hie n tho i (khng ng da n), da u d ngoa ` ` u ng ` i d chay du $ (ne `i dng bnh thu `ng) hay #(ne i ngu ang lm vie u trn he vo c ngu u he vo o o o o dng root).

3.6.3

n mi tru Bie `ng PATH o

n Cn mo `ng da ng quan trong nu a c tn PATH. Bie u u t bie n cu n ny d a ra danh sch d o d `ng ho tm kie e n cc thu m ta p tin (tru p tin le nh) muc, m bash se o p ring l cc ta p, d o muc trong ` trong tru o ng ho ng da n d y d d n ta p tin khng d o c d a ra. Cc thu ` ` u a u e u u i da danh sch ny phn cch nhau bo a c d inh bie n PATH chu u hai cha m (:). Theo ma cc thu mu c /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin , tu c l c dang: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin: D e thm thu muc ` vo danh sch ny, ca nh sau: n thu n cu le c hie
knh giao tc [user]$ PATH=$PATH:new_path

"luc loi" cc thu Khi tm kie tu ng thu lie m, he vo t k trong bie n PATH. muc theo d d , c the Mo `i, khi thm vo bie u t ch nho d n tho n PATH a vo danh sch ny thu muc hie ` mo i l do bao ma `i c c y l d ie t da u cha m (.). Tuy nhin, d u khng khuyn lm vo t: ngu o the c t vo thu a , c cng tn vo d t chu t trong so muc dng chung mo o ng trnh no d i mo i root, nhu nhu `ng dng bo c na ng khc hon ton (d c ng cu le ng chu a nh thu n nhu o ng thu c hie m ne sch tm kie ` bie mu c hie n tho i d ng o d u danh m). ` u a t nguy hie u thu

3.6.4

n mi tru Bie `ng IFS o

dung trong thao Bie inh k tu n ny xc d (cum k tu ) phn cch (Internal Field Separator), su ngu khi bie lenh, m he vo tc phn chia tu n d i dng thu c hie n tru o c khi cha y mo ` o t cu le nh no ng><Tab><K_tu a bie ng_tra d i). Gi tri theo ma c d i>". (xem du inh cu n ny - "<Khoa o _hng_mo Ne nha u u thu nh "echo $IFS", ban se n d t ngac nhin nho. g le o c mo

3.6.5

a thu a bie Tn cu `i ghi trong bie `ng vo i tn PWD, v gi tri cu n tho n mi tru n ny thay muc hie o ` ` d `i theo ba ng nhu o o i sau mo i la n chay chu i la n thay d i thu n tho t o ng trnh cd (cu mo muc hie ` ` ky o ng tu nhu va y tn d y d (go m ca d o ng ` cch no, v du, qua Midnight Commander). Tu ` a u u n) cu a thu a ngu da `i dng, chay tie cho, ghi trong bie n trnh d n HOME. muc c nhn cu o

n tho Thu `i v thu muc hie muc c nhn

3.6.6

chay mo ) cung ca Khi he , n (he vo t chu nh no d vo p cho chng mo t o ng trnh hay cu le n `n bie ` , ca pha De `ng. `ng cho tie ` he n mi tru c the cung ca p bie n mi tru n trnh chay tu vo o o gn gi tri cho bie i le c l thay v n ny vo nh export, tu
knh giao tc [user]$ name=value

nh export Cu le

`n g: ca

n bie u thu 3.7 Khai trie c


knh giao tc [user]$ export name=value

39

ba n sao thu a cc chu (ke Trong tru hai cu `ng ho ` he t ca vo ca o p ny, ta o ng trnh chay tu `n truy ca ) se a chnh he o c gn nhu va y, tu c l su du ng gi tri cu i cc bie c quye u vo p to n d chng qua tn.

3.7

n bie u thu Khai trie c

d nha vo nh nhu no? Khi he Hay he the u oc cc cu le vo n d t dng o c mo ` le c khi chay cu le ca nh ny d n thu n, n (he vo) tru nh thu n vie c "phn tch ngu c hie o c hie ng trong ngn ngu, phn tch chu ngu ). php" dng le , vi ngu Mo ng nh ny (gio t trong nhu hay khai trie a su n bie bu c (expansion). Trong bash c c cu u thu o phn tch ny l php mo trie y loai khai ba c: u thu n bie Khai trie c (brace expansion); n da u ngoa Thay the da u ng (tilde expansion); Php the cc tham bie n v bie n so ; Php the cc cu le nh; i); Php the ` tri sang pha so hoc (thu n tu c hie Php chia tu ` (word splitting); u tn ta Khai trie n cc ma p tin v thu muc (pathname expansion). Cc thao tc ny d tu xem xt chng u ng thu n theo d t k trn. Chng ta se o c thu c hie lie theo tu tu ny.

3.7.1

`n tao thu thie Khai trie c to n da u ngoa t nha t minh hoa trn v du. Gia t, chng ta ca muc con . C t lc trong mo c thay d `i dng so u cua vi ta , hoa o p tin cng mo t thu i ngu muc no d o hu n d `u ny nho cu lenh sau: the ` cc thu ie c hie
knh giao tc [user]$ mkdir /usr/src/unikey/{old,new,dist,bugs} [root]# chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}

n da u ngoa Khai trie c

`u, trong thu Trong tru `ng ho tao ra cc thu a o p d muc /usr/src/unikey/ se muc con ng hop thu u cu old,new,dist, v bugs. Trong tru o hai, ngu o i dng so hu a cc ta ` ` p tin sau se thay d o i (thnh root): /usr/ucb/ex /usr/lib/ex?.?

40 /usr/ucb/edit /usr/lib/ex?.? /usr/ucb/ex /usr/lib/how_ex /usr/ucb/edit /usr/lib/how_ex

Bash

i ca ` ng so Tu ` c l vo i mo c se p da (so tao ra vi dng ring re ng dng ny ba tu nhu u ngoa ` ` na ng trong da c) ba ng cch ghi thm vo tru c mo ` trong ngoa c nhu ng tru c ng g d u u ngoa i tu o o c. Mot v du khc: c, v ghi thm vo sau mo i tu ny nhu ng g d ng sau da u ngoa da u ngoa ` u trie n da dng a{d,c,b}e khi khai trie c ` "ade ace abe". Khai thu d u u ngoa n se o c ba tu c d c cc dang khai trie a ta a u nh, ho t ca cc k tu n tru n khc trong dng le n nu d o c thu c hie o c, se d oc giu khng thay di nhung k tu na ` m trong da bie u o t c trong dng le nh, ke ca u ngoa cc bu (chng se c pha sau). d u o c bin dich o o

3.7.2

da u ng (Tilde Expansion) Thay the

`u tin t d `u vo cc k tu Ne ` ba i k tu ng tru c da u a a u nhu u ng (), ta t ca u gach cho d tu da d o cc k tu (hay ta `i dng (login d u t ca u nhu u gach cho) se u l tn ngu ne khng c da o c hie o ny l mot dng ro l da d ng ngay pha sau da name). Ne tn ng (tu c u ga ch cho u u nhu u ng), i gi tri cu a bie a bie th da d u u ng se bo n HOME. V ne u gi tri cu n HOME khng o c thay the ` a ngu d `ng da `i d u u u a u d e u ng se bo n d u d n thu o c gn th da o c thay the i d o muc c nhn cu o . Ne dng, m d c da ` trng chay he vo u nhu u ng (v tru u gach cho) l mo t tu ngay sau da o i dng d oc thay the a mo i vo i tn cu `i dng ho i tn ngu ` u t ngu u ng co ng vo bo o p php, th da o ` d o ng da n d y d d n thu mu c c nhn cu a ngu o i dng ny. Ne u nhu tu d ng sau da u ng ` ` ` u a u e u o ng), th tu i l tn cu a mo khng pha ` khng bi thay d o t ngu i. Ne u nhu `i dng (v khng ro sau ` da `i (tu c l d u a u cua thu u ng l +, hay k hie u ny se bo u d n tho o c thay the i tn d muc hie ng sau da u ng l -, th thay the n a bie gi tri cu gi tri cu a bie OLDPWD (thu n PWD). Ne u du muc "cu ").

3.7.3

cc tham bie n v bie n so Php the

dung cho cc thao tc the K tu c u tham bie n, the cc cu le nh v the cc bie u thu $ d o c su so c hay tn d ng sau $ c the c, khng nha u u u hoc. Bie u thu d t thie t, nhu o c d a vo ngoa ng n, v da tu d ng sau. Nhu vay, d goi ra c phn cch bie c vo i cc ` hay k tu u e t tie u ngoa u thu cu trong dng lenh, ca `n d a tham bie gi tri `ng ni ring t ng nhu a n ni chung cu n mi tru bie o ` bie c dang $parameter. Da c ch ca a vi chu u thu u ngoa n thie t, ne u tn cua tham bie n c chu theo sau tn cn c cc ` so k tu khc, m chng ta khng muo n he vo "hie u la m" c khi , hoa t ca `n cu a tn tham bie a bie y chngl mo ra php the t pha n. Trong ta cc gi tri cu n so xa da u ng (), su khai trie n tham bie n v bie n so , php the cc cu le nh, php the cc bie u thu c so n (xem du y ra, tru hoc, cu i). Su ` khng xa ` tru `ng ng nhu xa cc k tu trch da o phn chia tu o p "$" (lo u tn ta i thch xem o ba ng so ho `i gia ng 3). Su n cc ma p tin v thu khai trie muc cu khng d o c thu c hie n. u

n bie u thu 3.7 Khai trie c

41

3.7.4

thay the ` a bash. ngh a n na cho Php the m o a cu cc cu le nh l mo t cng cu ra t mang cu i ke thu tn cc cu le c hie n cu a chng. C hai da ng php the le nh: $(command) nh bo t qua dang thu dung da d v command Ne ng dung hai (ch o c d o y su u u u "ngoa n ngu o c", c se c chu c phm Tab), th da ` phm cho n thu o ng na m trn u ga ch ngu o c ( \ ) o trong da u ngoa ` oc) l mot sau n (da na ng nhu `ng, tru ` tru `ng ho ng u t k tu u gach ngu mo thng thu o o p, khi d trong ngoa dung dang $(command), cc k tu $, , hay mo th ta ng c tao u t \. Ne u nhu t ca su d no c ngha d c biet. Ne y ra thnh mo a u php the cu le nh xa t cu le nh, khng c k tu cu a php the pha trong ngoa ` v c kp, th trong ke khng thu t qua se n php phn chia tu c hie su u tn ta p tin v thu n ma muc. khai trie

nh cc cu le Php the

3.7.5

a mo Php the c) c so hoc v thay the n (bie u thu so hoc cho php tnh gi tri cu t bie u thu bo u t qua thu d so hoc: $[expression] ((expression)) i ke o c. C hai dang php the u (d oc bash d c) nhu khi d ng trong ngoa Trong d c kp, nhu o u expression d u u ng o c hie trong expression lai d nhu c kp o `ng. Pha trong ng da u oc nhu u ngoa t k tu o c d mo thu o bie v the cu le php cu a bie expression c thu c hie n cc php the tham n nh. C c u thu ` va a bie a ngn ngu expression tu c so C, cu the u thu hoc cu ho n o ng tu nhu c php cu n ve ` ` d e oc trong pha ny c the d n ARITHMETIC EVALUATION cua trang man cua bash. V du, cu le nh knh giao tc
[user]$ echo $((2 + 3 * 5))

hoc (Arithmetic Expansion) so Php the

i. ` ba cho ke ng "17". Ne c khng chnh xc, bash se d u t qua u bie u thu a ra thng bo lo

3.7.6

Phn chia tu ` (word splitting)

lai Sau khi thu c so n xong cc php the tham bie n, the le nh, v the cc bie u thu hoc, he vo c hie c ` dang thu d phn tch dng le a (nhu u nh mo t la n nu ni trn) v thu ng o o c sau cc php the ` hie ` (word splitting). Thao tc ny na m o n vie c phn chia tu , he vo tm trong dng le nh cho cc k tu phn chia, xc d nh bo ` d chia nho nh i bie dng le ta i t ca n IFS (xem trn), v nho ` a IFS ba thnh cc tu ` ring re ng. Ne ng mo trong cc cho tu u gi tri cu t dng tro ng, th o ng u y ra. Ne vie ` se khng xa c phn chia tu u trong dng le nh khng thu n php the no trong c hie y ra. cc php the ` cu ng khng xa ke trn, th phn chia tu

3.7.7

n v ta u nho dung d nho Php the `ng da ` mo u e tn d p tin (Pathname expansion) su ch t ma o ra vi ta gon m c the ng vo i ma `, ch p tin (hay thu u ny. Sau khi phn chia tu muc), tu o ng u v ne `ng tu ` cua dng le tm kie u u nhu m trong tu nh cc khng d a ra ty chon -f, th bash se y tu c xem k tu *, ?, v [ . Ne u tm tha vo i mo t hay vi k tu nhu va y, th tu ny se d ` ` u o u ny. u, v ca n, tu `n thay the i cc tu nhu ` trong danh sch d `ng da ng vo i ma u t ma bo mo o o ng u khng tm tha u, v bie Ne ng vo i ma ` u u u nhu y tn tu n nullglob khng d o ng u o c d a ra, th tu se c l cc k tu c bie `ng. Ne khng thay d o a i, tu t bi ma t gi tri v hie u nhu u d cc k tu thu o nhu ` se `ng da ng vo i ma bi u inh, m d u n ny d n tu u khng tm tha y, th tu bie o c xc d o o ng u i dng le 3.4 xa kho dng d ta o ma u c cc gi tri trong ba ng e nh. Cc k tu

u tn ta n cc ma p tin v thu Khai trie muc (Pathname Expansion)

42

Bash

K tu t thay the Quy lua ng. V du, v*.txt dng ro * Tu ng vo i ba ` dng k tu t ky ca o ng u no, ke se d u bo o c thay the i vnoss.txt, vnlinux.txt v vntex.txt `n tai), v *.png se cc ta (ne ng ta tu u cc ta p tin ny to t ca p tin c o ng u ` ` ` ro pha o n mo ng png (ta p tin d hoa hai chie u). u ? Tu ng ba o t k mo t k tu o ng u d n no. V du, ma i cc tn te file?.txt se d u p sau bo o c thaythe file1.txt, file2.txt, file3.txt, v filea.txt `n tai), nhu (ne u chng to ng file23.txt th khng. ` m trong da [...] Tu c ` k tu ng ba u ngoa cc k tu t ky na no trong so o ng u i da u tru vung ny. Ca p k tu ` (-), v du c-f, bie u , phn cch nhau bo no, theo tu ny, ke ` m giu thi mo ` d a hai k tu ie ca t dy; ba t k k tu n, na hai k tu ng vo i ma ng tu u. Ne u tao ra dy (c v f trong v du) cu o ng u ` , th ma k tu c vung l hay tu a u (o u tin trong ngoa vi tr ny) se o ng d cc k tu ra trong ngo u ng ta u t ca , khng d o c ch u tn ta dung trong dng le ng tu Ma `ng xuyn su a ls. Hy tu p tin ra t thu nh c chu o o o ng a mo l ban muo a mo n cc ta c chu n xem thng tin cu t thu t so lu p tin muc, trong d o ng lo d De i dang gif, jpeg, avi, v.v. . . . u cc dang, v du, ta u p tin hnh anh, phim vo thu d o c thng a tap tindang jpeg, c the cu tin ch dng cu le nh
knh giao tc [user]$ ls *.jpg

u ng 3.4: Cc k tu Ba tao ma

`u ta `m bo a chng l cc so Ne so u trong thu p tin, m tn cu go n chu (thu muc c nhie muc /proc l mo t v du +), th le nh sau ch d a ra danh sch cc ta p tin c so tu 0500 d n 0999: ` u e
knh giao tc [user]$ ls -l 0[5-9]??

3.7.8

cc php the Sau khi lm xong ta t ca , cc k tu nh (chng \, v " cn lai trong dng le k tu khc) se bi xa he d o c su du ng d huy bo gi tri d c bie t cu a cc t. u e a

t Xa cc k tu c bie d a

3.8

`n c cc ton tu trn, d i thua kie Nhu ` gia ng ca ni o e c the xy du t ky t no, cu m tra d ng ba `u kie bash ho lu d ng ie n. He vo tro cc ton tu a chon if...then...else v case, cu nhu p for, while, until, nho ` d n (bash) tro t ngn cc ton tu vng la thnh mo ngu la p trnh manh.

p trnh t ngn ngu Shell - mo la

3.8.1

`u kie a ton tu d Ca ie u trc cu n c dang thu gon nhu sau: if list1 then list2 else list3 i cu le i da fi trong d cc chuo , list1, list2, v list3 l nh, phn cch nhau bo u

if v test (hoa Ton tu c [ ])

t ngn ngu p trnh 3.8 Shell - mo la

43

i ny c the y v ke i mo pha i. Ngoi ra, cc chuo t thc bo t da u cha m pha y hay k tu dng mo lai bo i cc cu le if kie d c nhon: list. Ton tu u u u nh u ngoa m tra gi tri d o c tra o c d a vo da nh lai bo i cu le tu ` list1. Ne u u trong danh sch c vi cu le nh, th kie m tra gi tri d o c tra ` i cng cua danh sch. Ne cuo ng 0, th se ` list2; cn thu u gi tri ny ba n cc le nh tu c hie c hien nhung lenh tu list3 . Gi tri d oc tra i ne ` thu u u gi tri ny khc khng, th se lai bo if nhu ton tu i gi tri m chuo c list3) d u y, trng vo i le nh thu n (list2 hoa va c hie a ra. lenh if nhu sau: ` Dang d a y d u cu a if list then list [ elif list then list ] ... [ else list ] fi ` d c ngh (o c vung ch c vung, khng nha m trong n, ngoa a l, nhu ng g na y da t u ngoa i c). Bie d o o ng l cu le nh test , m c the thie c d ng sau if hay elif thu ` u u u thu t pha c i da bie c no d c vung [ ]. Le , v nh test thu n php tnh mo t bie u thu u ngoa u thi bo c hie u thu o tri 0, ne lai gi tra c d c l d u u ng, v 1 trong tru u thu u bie o c d a `ng ho p ngu o c lai. Bie a chu to i chu t tham so cu o ng trnh test nhu mo o ng trnh. Thay v g test expression c the c expression vo ngoa c vung: u d u thu a bie [ expression ] ` `n ch ra a cu a cng mo i Ca khng pha ng, test v [ d l hai tn cu t chu o ng trnh, chu `n thng no d a he bash (ch l c php cu a [ d i pha i c l mo cu i ho t php bie n ha tha vo ` ` cho a test trong ca dung da c). V cu ng o ng ca ng ngoa u d n ch ra cu u trc if c the su trnh no. De ba o ng ke t thc mu c ny, chng ta d a ra v du su du ng if : ` chu u t ky
knh giao tc if [ -x /usr/bin/unicode_start ] ; then unicode_start else echo "hello world" fi

` ton tu `n d test (hay [...]) ca Ve i su ho n.

3.8.2

`u kie dung trong ton tu test, d kie Bie c d ie u m tra thuo c u thu n, su o c xy du ng trn co so ` tnh ta c phu c tap ho p tin, so snh cc dng v cc so snh so hoc thng thu u thu n o ng. Bie "): d ` cc thao tc d ng vin gach co u o o c tao ra tu n v kp sau ("nhu so -a file `n tai. Dng ne u ta p tin c tn file to -b file `n tai, v l mo Dng ne c bie a u file to t ta p tin thie t bi kho i (block device) d t. -c file `n tai, v l mo Dng ne c bie a u file to t ta p tin thie t bi k tu t. (charater device) d -d file `n tai v l mo Dng ne u file to t thu muc. -e file `n tai. Dng ne u ta p tin c tn file to

`u kie test v d a bie n cu u thu Ton tu c ie

44 -f file `n tai v l mo Dng ne `ng. u ta p tin c tn file to t ta p tin thng thu o -g file `n tai v d Dng ne t bit thay d o u a i nhm. u ta p tin c tn file to o c d -h file hay -L file `n tai v l lin ke `m (lin ke Dng ne p tin c tn file to t me t tu u ta o ng tru ng). -k file `n tai v d Dng ne t bit sticky. u a p tin c tn file to u ta o c d -p file `n tai v l tn cu a mo Dng ne u ta p tin c tn file to t o ng (knh FIFO). -p file `n tai v l tn cu a mo Dng ne u ta p tin c tn file to t o ng (knh FIFO). -r file `n tai v c quye `n d Dng ne oc. u ta p tin c tn file to -s file `n tai v kch thu Dng ne c lo n ho u ta p tin c tn file to o n khng. -t fd cu a ta v ch ln terminal. Dng ne u bo m ta p tin (fd) mo -u file `n tai v d ` Dng ne t bit thay d o u a i ngu u ta p tin c tn file to o c d o i dng. -w file `n tai v c quye `n ghi. Dng ne u ta p tin c tn file to

Bash

-x file `n tai v c quye `n thu Dng ne u ta p tin c tn file to c thi. -0 file so hu a n l ngu Dng, ne `i dng m ID c hie u cu u ta p tin c tn file v chu u lu o c d ch e n. -G file `n tai v thuo ` nhm, xc d i ID nhm c hie Dng, ne inh bo u ta p tin c tn file to c ve u lu c. -S file `n tai v l socket. Dng, ne u ta p tin c tn file to -N file `n tai v thay d `n d Dng, ne ` la o u oc cuo u ta p tin c tn file to i tu i cng. o c d file1 -nt file2 a d ` Dng, ne o i muo u ta p tin file1 c tho n ho n file2. i gian su

t ngn ngu p trnh 3.8 Shell - mo la

45

file1 -ot file2 a tru Dng, ne `ng ho `ng ho u ta p tin file1 "gi" ho n file1 (tru o p ngu o c lai cu o p trn). file1 -ef file2 so inode. Dng, ne thie t bi v ch u ta p tin file1 v file2 c cng mo t so m ta -o optname a he d Dng, ne u vo t xin xem trn trang u ty chon optname cu o c kch hoat. Chi tie man bash. -z string i string ba ` ng khng. a chuo Dng, ne o u d di cu -n string i khc khng. a chuo Dng, ne o u d di cu string1 == string2 i trng nhau. C the ` ng mo Dng, ne u hai chuo thay hai == ba t =. string1 !== string2 i khng trng nhau. Dng, ne u hai chuo string1 < string2 i string2 (d i string1, theo tu Dng, ne ` d ng tru c chuo i ngn ie u o u chuo n, d i vo o ngu `i). hie n tho string1 > string2 i string1, theo tu i string2 (d Dng, ne ` d ng sau chuo i ngn ngu ie u o u chuo n, d i vo hie `i). n tho arg1 OP arg2 d ` ` O ng), -ne (khc, khng ba ng), y OP l mo t trong cc php so snh so hoc: -eq (ba ` ` ho -lt (nho n), -le (nho ho n hoa c ba ng), -gt (lo n ho n), -ge (lo n ho n hoa c ba ng). cho dung cc so O c du cc tham so arg1 v arg2 c the su nguyn (m hoa o ng). `u kie n ny c the Tu ` cc bie c d c phu c tap theo ie u thu n co xy du u thu ba ng cc bie C: muo DINH, V (co ` cc php lgc thng thu `ng PHU n nho ng) v HOA o !(expression) d Php phu Dng, ne c sai. inh. u bie u thu expression1 -a expression2 hai bie `u d Php co Dng ne c d e ng. ng lgic AND. u ca u thu expression1 -o expression2 t trong hai bie Php lgc hoa Dng ne c OR. c d ng. u mo u thu

46

Bash

3.8.3

case Ton tu

a ton tu case nhu Dang cu sau: case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ...+ esac i tu u `u tin khai trie Cu le ` word, v so snh n (word) vo i mo ` trong ma a nh case d n tu ` pattern theo thu `ng vie tu a c so snh lai, v u tin th du y su trng nhau d . Sau khi tm tha lai bo tu ng sau ma i ton thu c hie n danh sch list cc cu le nh d u d tm tha y. Gi tri tra u ` ng 0, ne lai gi tri ny, ba `ng ho u khng tm tha y su trng nhau no. Trong tru o p ngu o c lai, tra y tu m cu le u nh cuo i cng trong danh sch list d ` a ra. V du su dung ton tu case sau la script /etc/rc.d/rc.sysinit (FreeBSD-style):
knh giao tc case "$UTC" in yes|true) CLOCKFLAGS="$CLOCKFLAGS -u"; CLOCKDEF="$CLOCKDEF (utc)"; ;; no|false) CLOCKFLAGS="$CLOCKFLAGS --localtime"; CLOCKDEF="$CLOCKDEF (localtime)"; ;; esac

Ne c true, th se p le nha thu u bie n so (UTC) nha n gi tri yes hoa n ca nh thu t, nha n c hie gi tri no hoa c false - ca p thu hai.

3.8.4

select Ton tu

select cho php to Ton tu c ho i ngu `i dng. N c dang sau: chu i thoai vo o select name [ in word; ] do list; done u word hnh thnh mo u ny. Ta `u tu Lc d ` ma ` tu ng vo i ma ng tu a t danh sch nhu p o ng u i tiu chua i tu ho ` ny d ` d ng tu a mo i km u u u n, ho p nhu o c d a vo knh thng bo lo n nu o c d u word bi bo qua (khng c trong ton tu select), th se vo i mo tu d u t so thu u ma . Ne a vo cc tham bie o ng tu . Sau d da u nha c PS3 d o c d , u u n vi tr (xem trn) theo mo t cch tu a ra, `u vo tiu chua cho v he ` chuo aso a n. Ne vo i nha p vo trn d u chuo i nha p vo c chu , tu o ng ` u ng vo i mo ng tu ` d i so d hie u i km vo t trong cc so d n ra, th bie n name se o c gn gi tri ba ng, th so `n nu ny. Ne ` se d a. Ne u u nha p vo mo t dng ro v tu n ra them mo t la u nha p o c hie t gi trino khc, th bie n gi tri ba Chuo ` i i m ngu ` vo ba ` mo ng khng. nha t ky n name se o d oc sch lenh list d oc thuc hien vo dng nha p vo, ghi la i trong bie n REPLY . Danh i gi u u khng da u console cu (xin hy g a ban tri bie chon. Sau d y l mo n name d t script nho u ne a ho tro chu c hie n thi Tie ng Vie t): vie
knh giao tc #!/bin/sh echo "Ban thch dng OS no?" select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris" "QNX" break done echo "Ban d chon $var"

"Other";

t ngn ngu p trnh 3.8 Shell - mo la

47

thi (v Ghi d e oan trn vo mo o p tin thnh kha ta t ta p tin (v du, select.sh), thay d i d hnh se hien ra cu du, chmod 755 select.sh), v chay (./select.sh). Trn mn i sau: ho
knh giao tc Ban thch dng OS no? 1) Linux 3) Free BSD 2) Gnu Hurd 4) MacOSX #? 5) Solaris 6) QNX 7) Other

<Enter>), th se Hy nha ` 1 d u e n mo t trong 7 so d n 7). Ne u ban nha p 4 (nha n ca a ra (tu tha y thng bo sau:
knh giao tc Ban d chon MacOSX

3.8.5

for Ton tu

for lm vie Ton tu i for trong cc ngn ngu `ng. la c c khc mo t cht so vo p trnh thng thu o i m gi tri cu a mo Thay v ta ng hoa c gia c xuo (ln hoa o t bie n so no d ng) mo t d n vi sau mo n cho bie ` vng la a sa p, th n gn gi tri tie d trong u p theo trong danh sch tu n d i vng la mo p. Ni chung ca u trc c dang sau: for name in words do list done if. V du. Script sau tao Quy lua t xy du nh (list) gio ng trong ton tu ng danh sch le cc ta p tin fu1, fu2, v fu3:
knh giao tc for a in 1 2 3 ; do touch fu$a done

thu d C the i script. Dang u g ba dng ny trn mo t dng le nh, ke t qua o c tu o ng tu vo to ng qut cua ton tu for nhu sau: for name [ in word; ] do list ; done `u tin cu y ra su Da ` word theo quy lua c (xem trn). ng xa n tu t khai trie n bie u thu khai trie ` ` Sau d ` su bie u u n name la n lu n ny, v thu n o t d o c gn cc gi tri thu d o c tu khai trie c hie u khng c "in word", th danh sch lenh i la `n nhu danh sch le va y. Ne nh list trong mo i tham bie `n cho mo n vi tr d list d u d u n mo t la o c thu c hie a ra. Trn Linux c i ta `m cc so chu o ng trnh seq , tie p nha n hai so nguyn lm tham so , v d a ra chuo u t ca na chng). Nho dung for cu a bash lm giu ` cu le a hai so ny (co ng thm ca nh ny c the su `u ny ch vie De `ng. la u ie c nhu p trnh thng thu lm d ton tu for trong cc ngn ngu o o c d `n vie ca p for nhu t vng la sau:
knh giao tc for a in $( seq 1 6 ) ; do cat fu$a done

a 10 ta Cu le u nh (script) ny d i dung cu p tin (ne u c): "fu1", ..., "fu10". a ra mn hnh no

48

Bash

3.8.6

while v until Ton tu

while lm vie Ton tu p cc cu le c tu nh trong list2 ch o ng tu nhu if, nhu ng vng la `u kie `u kie a mn. Ca thu `ng khi d ngu ng, v se ie ie n khng tho u trc c n cn d n khi d c hie dang nhu sau: while list1 do list2 done V du:
knh giao tc while [ -d directory ] ; do ls -l directory >> logfile echo -- SEPARATOR -- >> logfile sleep 60 done

a thu Chu theo di v ghi lai no i dung cu o ng trnh (script) trn se muc directory theo `n tai. Ton tu until tu tu `ng pht ne u thu muc cn to o ng tu nhu ton tu while: until list1 do list2 done , su `u kie `m o dung gi tri phu d a d cho D c l list2 inh cu ie n list1, tu m khc bie t na ie lai trang thi thot ra khc thu n, ne u cu le nh cuo i cng trong danh sch list1 tra c hie khng.

3.8.7

Cc hm so

o tao dung gio a he , tu d c l chng ta c the u ng nhu nh thng thu vo tu o c su cc cu le `ng cu cu lenh cc i. Hm so mo c ca u trc nhu sau: function name () { list } i c, name xc d a hm (dng d Ho ` function khng nha a tu inh tn cu e t thie t pha n nu `n thm cu ` m giu a hm so i danh sch cc cu le goi hm), cn pha a { v }. tao bo nh list, na Cc cu le d u u nh ny se n mo i khi tn name d ng nhu t le nh thng o c thu c hie o c goi (gio mo `n ch ra hm c the l d qui, tu so o `n thn cu ` a thu o ng). Ca ng c l go i hm ngay trong pha ` e hie n. Hm so `i: khng c tie i no d u thu n trong pham vi he vo n tho n trnh mo c hie o c chay so (khc vo viec cha y script). khi bin dich hm i

bash cho php ngu C php He `i dng tao cc hm so vo cho mnh. Hm so lm vie c v o

3.8.8

Tham so

a hm se thnh cc tham bie Khi hm so tro u e d thu n, cc tham so cu n vi tr o c goi d c hie (positional parameters, xem trn) trong tho c hie n hm ny. Chng d o c d t cctn `i gian thu u a `u tu a tham so dung. Vie nhu t d ` n l so nh so a cu m chng ta muo n su c d ba $n, trong d ` 1, nhu va y $1 l tham so d u tin. Cu ng c the su du ng ta t ca cc tham so mo t lc nho $* ` a , a tham so v d tu ` $# Tham so u o thu nho vi tr so 0 khng thay d i. Trong khi thu a ra so cu c ` hie p cu le `ng lai bi du n ne u ga nh no i tr return (trong pha n thm cua hm), th hm so se `u khie c trao cho cu lenh d ng sau hm. Khi thuc hien xong hm so `n d vquye o ie u u n d , cc lai cc gi tri m chng c tru tham bie c khi chay d a u n vi tr v tham bie n d c bie t # se oc tra o n no i bo (local) hm. Bie dung tu Ne mo tham bie ` kha local. C php d ia phu u u muo n tao t n d su o ng, c the a ra d `u ca ` bie o ng gio ng he t cc tham bie n khc, ch c n d ng sau tu kha local : ` ia phu ie u n d

a he v le vo nh source 3.9 Script cu

49

a le local name=value. Du i d y l mo t v du hm so , thu n cng vie c cu nh seq d o c hie c d trn: nha e n o


knh giao tc seq() { local I=$1; while [ $2 != $I ]; do { echo -n "$I "; I=$(( $I + 1 )) }; done; echo $2 }

`n ch d a echo, n (ty chon) hu y bo vie Ca i. Ma c d e n ty chon -n cu c tao dng mo ch d nhung se ra `u ngh ty chon ny khng c nhie t c i muc d a vo ch chng ta muo y, n o tnh giai thu trong cc hm so i muc d `a fact Mo ch khc. Hm so vo t v du khc:
knh giao tc fact() { if [ $1 = 0 ]; then echo 1; else { echo $(( $1 * $( fact $(( $1 -- 1 )) ) )) }; fi }

a hm d Dy l hm so `a, mo e e qui. Hy ch d n su n so hoc, giai thu t v du cu khai trie v php the cc cu le nh.

3.9

i le a he ch l cc ta Script cu a chuo u vo p tin c chu nh. Tu script c the d o ng tu hm so o c thu ng nhu e n nhu t cu le nh. C php truy ca p d n cc tham so cu . Trong cc c hie mo hm so o p thng thuo tru De i d c mo u t tie n trnh mo c the thu `ng ho `ng khi chay script se o c chay. c ` trong ba n bash hie dung cu le hie `i, ca n script o n tho n su nh source, hay mo t da u cha m "." `ng ngha cu o script ch d n gia so (d ng ho p ny n l mo t tham cu a le ` a source). Trong tru o o nh ni trn. Cu le c dang: nh se [arguments] source filename ` Cu le oc v thu nh ny d n cc cu le nh c trong ta p tin filename trong mi tru c hie o ng lai gi tri, xc d i cu le a filename. Ne hie `i, v tra inh bo n tho nh cuo i cng cu u filename th d o dung d t k trong bie n so PATH, se d khng chu u ga ch cho, ng da n, lie a da ` u u e o c su i kha thi (khng nha tm ta p tin c tn filename. Ta p tin ny khng nha t thie t pha t thie t ` phai c bit x). Ne tm t k trong PATH, khng tm tha y ta p tin ca n, th se u trong thu muc, lie tho Ne n (ta mu c hie n i. u c cc tham so (d a ra arguments, xem d nh dang ` u i p tin) trong thu

a he v le vo nh source Script cu

50

Bash

trn), th trong tho cu le `i gian thu thnh cc tham bie nh o n script chng se n vi tr. Ne u c hie khng c tham so o nh source , th tham bie n vi tr khng thay d i. Gi tri (trang thi), m le lai, trng vo lai bo i cu le tra i gi tri, tra nh cuo i cng trong script. Ne u khng cu le nh no ` d ng 0. c khng tm tha u y ta p tin filename, th trang thi thot ba n, hoa o c thu c hie

3.10

n sao cu a he bash nho Ban lun lun c the ` cu le chay mo t ba vo nh bash hay sh. Khi ny t ba a script n sao ny chay mo nhu c the u , ne t tham so cho t script no d u d ba a tn cu mo ` le u e n script myscript ca n d nh "sh myscript". nh bash. Nhu y, d thu c hie a cu le va p vay c ra u xem noi dung cu `u trn a mo Ne ng ta (nhu t ta tin script no d p tin nhu t nhie ` ` he Die tha a l, khi a tho ng), ban se y dng d u tin c dang sau: #!/bin/sh. u ny c ngh chng ta goi script d `ng, th /bin/sh se gip chng ta e n nhu t le nh thng thu thu c hie mo o thay the i lin ke "thu xe ` mo . C the e dng ny bo t d n ba t ky t chu p" moi thu o ng trnh no, m se ng. V du, script trn ngn ngu t d Perl ba oc ta p tin v thu n cc cu le nh tu c hie o ng u `u bo i dng c dang !/bin/perl. Mo vie t lo i ch thch d # dng d ` a e t ch khc l k tu d oc coi l ch thch v bi nhu trong script. Ta tu ng sau k ng g d u u e t ca n cuo i dng se ny d qua (tu se bash bo c l he ng khng xem dng ny l cu le vo nh). Ne u ban muo n kie m chu `, v d t truo a k tu lai tc dung cu a c n p vo dng le nh mo t cu le nh ba t ky ny, th hy nha ` bo qua cu le (cu le ng he tha nh) k tu y ra vo nh ny. #, v du "# ls", ban se ` ng bi hoc nga n ve t nhie n go ` bash tai d `u va ` quan Chng ta se du y. Ta e t nhin, cn ra n d `n xem xt nhu ` m ngoi pham vi cu a bi hoc, v du, qua n l tie cu trong ca n trnh, lich su ng na ` ` le tm tha nh, m ta ve thu n readline, tn hie u, v.v. . . Cc ban se y thng tin ca n thie t trong vie cuo man bash. cc o ng da n khc hoa c trn trang n hu

nh sh Cu le

nh sh 3.10 Cu le

51

You might also like