You are on page 1of 146

T hc s dng Linux

Tc gi: Kostromin V. A. Dch v cng tc: Phan Vnh Thnh Phin bn: 0.9.4 Ngy 13 thng 9 nm 2006

Dnh cho ngi dng mi v rt mi...

Mc lc
1 HH Linux: lch s v cc bn phn phi 1.1 Th no l HH ni chung v Linux ni ring 1.1.1 Cc h iu hnh dng UNIX . . . . . . 1.1.2 Mt cht v lch s . . . . . . . . . . . . 1.1.3 c im chnh ca HH Linux . . . . 1.2 Bn phn phi Linux . . . . . . . . . . . . . . . 1.3 Yu cu i vi my tnh . . . . . . . . . . . . . 1.4 Ly Linux u? . . . . . . . . . . . . . . . . . 2 2 2 3 6 8 11 12 14 14 16 18 18 18 20 22 23 23 25 26 27 28 28 30 31 34 34 34 36 36 39 39 40

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

2 Ci t HH Linux trn cng my tnh vi Windows 2.1 Chun b ci t . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Phng xa v nhng li khuyn . . . . . . . . . . . . . . . . . 2.3 Phn vng trn a v qu trnh khi ng . . . . . . . . . 2.3.1 Th no l cu trc hnh hc ca a . . . . . . . . 2.3.2 Phn vng v bng phn vng ca a . . . . . . . . 2.3.3 Qu trnh khi ng cc HH ca cng ty Microsoft 2.3.4 Vn vi cc a ln . . . . . . . . . . . . . . . . . . 2.4 La chn trnh khi ng . . . . . . . . . . . . . . . . . . . . 2.4.1 Trnh khi ng GRUB . . . . . . . . . . . . . . . . . 2.4.2 Trnh khi ng LILO . . . . . . . . . . . . . . . . . 2.4.3 Cc trnh khi ng khc . . . . . . . . . . . . . . . . 2.4.4 Cc phng n khi ng . . . . . . . . . . . . . . . 2.5 Chun b cc phn vng trn a . . . . . . . . . . . . . . . 2.5.1 Li khuyn khi to phn vng . . . . . . . . . . . . . 2.5.2 Chng trnh phn chia a . . . . . . . . . . . 2.6 Windows NT v Linux: khi ng qua NT OS Loader . . . 2.7 S dng trnh khi ng GRUB . . . . . . . . . . . . . . . . 2.7.1 Ci t GRUB . . . . . . . . . . . . . . . . . . . . . . 2.7.2 Cu hnh GRUB . . . . . . . . . . . . . . . . . . . . . 2.8 S dng trnh khi ng LILO . . . . . . . . . . . . . . . . 2.8.1 Ci t v cu hnh LILO . . . . . . . . . . . . . . . 2.8.2 Ci t cc h iu hnh khc sau Linux . . . . . . 2.8.3 Chuyn th mc /boot ln phn vng DOS . . . . . 2.9 Khi ng Linux t MS-DOS bng loadlin.exe . . . . . . .

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

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

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

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

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

iv

MC LC 43 43 44 47 49 51 53 53 54 55 56 56 57 57 57 60 60 63 65 70 70 71 72 72 73 79 80 80 80 81 82 82 83 83 86 87 88 89 91 92 94 95

3 Khi ng Linux ln u 3.1 Khi ng HH Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 ng nhp vo h thng . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Console, terminal o v shell . . . . . . . . . . . . . . . . . . . . . . 3.4 Son tho dng lnh. Lch s lnh . . . . . . . . . . . . . . . . . . . 3.5 Ngng lm vic vi Linux . . . . . . . . . . . . . . . . . . . . . . . . 3.6 Tr gip khi dng Linux . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Cc ngun thng tin tr gip . . . . . . . . . . . . . . . . . . 3.6.2 Cc trang tr gip man . . . . . . . . . . . . . . . . . . . . . . 3.6.3 Cu lnh info . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.4 Cu lnh help . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.5 Ti liu i km vi bn phn phi v chng trnh ng dng 3.6.6 Cu lnh xman . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.7 Cu lnh helptool . . . . . . . . . . . . . . . . . . . . . . . . 3.6.8 Sch v Internet . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Lm quen vi h thng tp tin ext3fs 4.1 Tp tin v tn ca chng . . . . . . . . . . . . . . . . . . 4.2 Th mc . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Cng dng ca cc th mc chnh . . . . . . . . . . . . . 4.4 Dng tp tin . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Cc tp tin thit b . . . . . . . . . . . . . . . . . 4.4.2 Cc ng c tn (pipes) . . . . . . . . . . . . . . . . 4.4.3 Cc socket . . . . . . . . . . . . . . . . . . . . . . 4.4.4 Lin kt mm . . . . . . . . . . . . . . . . . . . . 4.5 Quyn truy cp n tp tin v th mc . . . . . . . . . . 4.6 Cc cu lnh c bn lm vic vi tp tin v th mc 4.6.1 Cu lnh chown v chgrp . . . . . . . . . . . . . 4.6.2 Cu lnh mkdir . . . . . . . . . . . . . . . . . . . 4.6.3 Cu lnh cat . . . . . . . . . . . . . . . . . . . . 4.6.4 Cu lnh cp . . . . . . . . . . . . . . . . . . . . . 4.6.5 Cu lnh mv . . . . . . . . . . . . . . . . . . . . . 4.6.6 Cu lnh rm v rmdir . . . . . . . . . . . . . . . 4.6.7 Cu lnh more v less . . . . . . . . . . . . . . 4.6.8 Cu lnh tm kim find v mu tn tp tin . . . 4.6.9 Cu lnh split . . . . . . . . . . . . . . . . . . . 4.6.10 So snh cc tp tin v lnh patch . . . . . . . . 4.7 Cc cu lnh lu tr v nn tp tin . . . . . . . . . . . . 4.7.1 Chng trnh tar . . . . . . . . . . . . . . . . . . 4.7.2 Chng trnh gzip . . . . . . . . . . . . . . . . . 4.7.3 Chng trnh bzip2 . . . . . . . . . . . . . . . . 4.7.4 S dng kt hp tar vi gzip v bzip2 . . . . . 4.8 To v gn cc h thng tp tin . . . . . . . . . . . . . .

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

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

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

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

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

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

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

MC LC

5 Bash 100 5.1 H v l g? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 5.2 Cc k t c bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.3 Thc thi cc cu lnh . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 5.3.1 Thao tc ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 5.3.2 Thao tc & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.3.3 Thao tc && v || . . . . . . . . . . . . . . . . . . . . . . . . 103 5.4 u vo/u ra tiu chun . . . . . . . . . . . . . . . . . . . . . . . . 103 5.4.1 Dng d liu vo ra . . . . . . . . . . . . . . . . . . . . . . . 103 5.4.2 Lnh echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.4.3 Lnh cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.5 Chuyn hng u vo/u ra, ng ng v b lc . . . . . . . . . . 105 5.5.1 S dng >, < v . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.5.2 S dng | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 5.5.3 B lc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 5.6 Tham bin v cc bin s. Mi trng ca h v . . . . . . . . . . . . 108 5.6.1 Cc dng tham bin khc nhau . . . . . . . . . . . . . . . . . 108 5.6.2 Du nhc ca h v . . . . . . . . . . . . . . . . . . . . . . . . 110 5.6.3 Bin mi trng PATH . . . . . . . . . . . . . . . . . . . . . . . 111 5.6.4 Bin mi trng IFS . . . . . . . . . . . . . . . . . . . . . . . 112 5.6.5 Th mc hin thi v th mc c nhn . . . . . . . . . . . . 112 5.6.6 Cu lnh export . . . . . . . . . . . . . . . . . . . . . . . . . 112 5.7 Khai trin biu thc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 5.7.1 Khai trin du ngoc . . . . . . . . . . . . . . . . . . . . . . . 113 5.7.2 Thay th du ng (Tilde Expansion) . . . . . . . . . . . . . . 114 5.7.3 Php th cc tham bin v bin s . . . . . . . . . . . . . . . 114 5.7.4 Php th cc cu lnh . . . . . . . . . . . . . . . . . . . . . . . 114 5.7.5 Php th s hc (Arithmetic Expansion) . . . . . . . . . . . . 115 5.7.6 Phn chia t (word splitting) . . . . . . . . . . . . . . . . . . 115 5.7.7 Khai trin cc mu tn tp tin v th mc (Pathname Expansion) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 5.7.8 Xa cc k t c bit . . . . . . . . . . . . . . . . . . . . . . . 116 5.8 Shell - mt ngn ng lp trnh . . . . . . . . . . . . . . . . . . . . . . 116 5.8.1 Ton t if v test (hoc [ ]) . . . . . . . . . . . . . . . . . . 117 5.8.2 Ton t test v iu kin ca biu thc . . . . . . . . . . . . 117 5.8.3 Ton t case . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 5.8.4 Ton t select . . . . . . . . . . . . . . . . . . . . . . . . . . 120 5.8.5 Ton t for . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.8.6 Ton t while v until . . . . . . . . . . . . . . . . . . . . . 122 5.8.7 Cc hm s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 5.8.8 Tham s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 5.8.9 Bin ni b (local) . . . . . . . . . . . . . . . . . . . . . . . . . 123 5.9 Script ca h v v lnh source . . . . . . . . . . . . . . . . . . . . . 124 5.10 Cu lnh sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

vi 6 S dng Midnight Commander 6.1 Ci t chng trnh Midnight Commander . . 6.2 V ngoi ca mn hnh Midnight Commander 6.3 Tr gip . . . . . . . . . . . . . . . . . . . . . . . 6.4 S dng chut . . . . . . . . . . . . . . . . . . . 6.5 iu khin cc bng . . . . . . . . . . . . . . . . 6.5.1 Dng danh sch tp tin . . . . . . . . . . 6.5.2 Nhng ch hin th khc . . . . . . . 6.5.3 Cc t hp phm iu khin bng . . . .

MC LC 126 126 127 129 130 131 131 134 136

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

Danh sch hnh v


3.1 Mn hnh khi ng ca GRUB . . . . . . . . . . . . . . . . . . . . . 44 6.1 6.2 6.3 6.4 6.5 6.6 6.7 Midnight Commander ting Vit . Mn hnh Midnight Commander . Hp thoi chn nh dng hin th Hp thoi sp xp . . . . . . . . . . Ch thng tin . . . . . . . . . . . Ch cy th mc . . . . . . . . . Ch xem nhanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 128 131 134 135 135 136

Danh sch bng


1.1 Yu cu i vi phn cng . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1 Cu trc ca sector khi ng chnh . . . . . . . . . . . . . . . . . . 21 2.2 Nhu cu s dng khng gian a ca HH . . . . . . . . . . . . . . 28 3.1 3.2 3.3 3.4 3.5 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 5.1 5.2 5.3 5.4 Nhng cu lnh n gin ca Linux Nhng phm son tho dng lnh . . T hp phm iu khin lch s lnh Cc phn chnh ca tr gip man . . Phm s dng xem trang man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 50 52 54 55 66 71 81 85 89 92 93 98 108 109 111 116

Cu trc th mc ca Linux . . . . . . . . . . . Nhng tp tin thit b chnh . . . . . . . . . . . Nhng ty chn chnh ca lnh cp . . . . . . . Tiu ch tm kim ca cu lnh find. . . . . . . Nhng ty chn chnh ca tar . . . . . . . . . Nhng ty chn chnh ca chng trnh gzip Nhng ty chn chnh ca chng trnh bzip2 Nhng ty chn chnh ca cu lnh mount . . Cc cu lnh b lc . . . . . . . Thay th cc tham bin c bit K t xc nh dng du nhc . Cc k t to mu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.1 Cc t hp phm di chuyn dng chung . . . . . . . . . . . . . . . . . 129 6.2 Di chuyn trong trnh xem tp tin . . . . . . . . . . . . . . . . . . . . 129 6.3 Di chuyn khi xem tr gip . . . . . . . . . . . . . . . . . . . . . . . 130

Li m u
y l bn dch cun Linux cho ngi dng (sri sch t hc) ca Kostromin Victor Alexeevich cng thm mt vi kinh nghim s dng Linux ca ngi dch. Bn gc c vit trn ting Nga. Theo yu cu ca Kostromin A. V., xin c a ra cc lin kt ti bn gc sau y: http://rus-linux.net/book1.php?name=book1/oglavl http://linux-ve.chat.ru/

Cm n
Trc tin cn cm n Kostromin V. A. vit mt cun sch v Linux cho ngi dng mi tuyt vi, hai bc Nguyn i Qu v Nguyn ng Hong A Tun gip trong vic s dng L TEX. Bc Nguyn i Qu c v sa cho phin bn 0.9. Xin hy gi th nhc ngi dch ti teppi82@gmail.com nu nh ngi dch c qun ai .

Bn quyn
Cun T hc s dng Linux ny s dng bn quyn Creative Commons Public License 2.5 (http://creativecommons.org/licenses/by/2.5/). Tc gi Kostromin V. A. cng nh ngi dch v cng tc khng chu trch nhim v hu qu do vic s dng cun sch ny gy ra. Mi ngh sa i, thng bo li chnh t, li kin thc ca bn dch cng nh ngh gip dch xin gi cho Phan Vnh Thnh theo a ch teppi82@gmail.com.

Chng 1 HH Linux: lch s v cc bn phn phi


Just for fun Linus Torvalds.
Ngi dch: Lch s lun l im khi u khi nghin cu mt ngnh khoa hc no . Khng c ngoi l i vi Ton hc, Vt l, mn chuyn ngnh ca ti Ho hc v tt nhin c HH Linux. Trong chng u tin ca cun sch T hc s dng Linux ny chng ta s tr li ngn gn cho cu hi Linux l g?. ng thi ni i dng v nhng im c bit ca Linux, yu cu ca Linux i vi phn cng, khi nim bn phn phi Linux, v cch c c nhng bn phn phi ny. Hn th na bn c s hiu t nhiu v OpenSource, GNU v FSF.

1.1
1.1.1

Th no l HH ni chung v Linux ni ring


Cc h iu hnh dng UNIX

H iu hnh (HH) l mt b cc chng trnh h tr vic iu khin phn cng ca my tnh, t chc lm vic vi cc tp tin (trong c chy v iu khin vic thc hin ca cc chng trnh), v ng thi thc thi s giao tip vi ngi dng, tc l dch cc cu lnh ca ngi dng v hin th kt qu lm vic ca nhng lnh ny. Khng c h iu hnh th my tnh khng thc hin c chc nng ca mnh. Trong trng hp my tnh ch l mt tp hp cc thit b in t khng lm vic, khng hiu l lm g. n thi im hin nay th cc h iu hnh ni ting nht cho my tnh l Microsoft Windows (C) v UNIX. Windows bt ngun t h iu hnh MS-DOS trc y lm vic trn cc my tnh ca hng IBM. H iu hnh UNIX do nhm cc nh pht trin Bell Labs vit ra vo nm 1969 di s iu khin ca Dennis Ritchie, Ken Thompson v Brian Kernighan. Nhng by gi khi ni n h iu hnh UNIX thng c khng ni c th mt h iu hnh c th no m l mt nhm cc h iu hnh dng UNIX (UNIX-liked OS). Chnh bn thn t UNIX (vit hoa tt c cc ch ci) tr thnh nhn hiu thng mi ca tng cng ty AT&T.1
Ngi dch: Ngi m khng ngi ngn ng k nhn hiu thng mi bt k th g, k c Yoga m bt ngun t n .
1

1.1 Th no l HH ni chung v Linux ni ring

Vo cui nhng nm 70 ca th k trc (th k XX) cc nh pht trin ca trng i hc California Berkeley thm vo m ngun ca UNIX rt nhiu s ci tin trong c h tr giao thc2 TCP/IP (giao thc mng chnh hin nay). Sn phm ny ni ting di tn BSD ("Berkeley Systems Distribution"). iu c bit ch bn quyn ca sn phm cho php ngi khc pht trin v ci tin v chuyn kt qu thu c n ngi th ba (cng vi m ngun hoc khng) vi iu kin l phi ch ra phn no ca m c pht trin Berkeley. H iu hnh dng UNIX, trong c BSD, lc u c pht trin lm vic vi cc my tnh nhiu ngi dng cc mainframe. Nhng dn dn cu hnh trang thit b ca my tnh c nhn cng mnh ln v hin nay c kh nng cao hn so vi nhng mainframe ca nhng nm 70 th k trc. V v u nhng nm 90 mt sinh vin ca trng i hc Helsinki (Phn Lan), Linus Torvalds, bt u pht trin mt HH kiu UNIX cho cc my tnh c nhn tng thch vi IBM (IBM-compatible PC).

1.1.2

Mt cht v lch s

HH Linux va k nim sinh nht ln th 15 ca mnh. y l bc th m Linus gi vo nhm tin tc comp.os.minix ngy 25 thng 8 nm 1991 (c coi l ngy sinh nht ca HH ny):
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: What would you like to see most in minix? Summary: small poll for my new operating system Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI> Date: 25 Aug 91 20:57:08 GMT Organization: University of Helsinki Hello everybody out there using minix Im doing a (free) operating system (just a hobby, wont be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. Id like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things). Ive currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that Ill get something practical within a few months, and Id like to know what features most people would want. Any suggestions are welcome, but I wont promise Ill implement them :-) Linus (torvalds@kruuna.helsinki.fi) PS. Yes its free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as thats all I have :-(.

Trong th ny Linus cho bit anh ang pht trin mt h iu hnh t do cho cc my tnh i 386 (486) v yu cu nhng ai quan tm cho bit nhng thnh phn no ca h thng cho ngi dng cn phi c u tin. Nhng ngi dng trong nhm tin tc ny lm vic di h iu hnh Minux do gio s Andy
2

protocol

HH Linux: lch s v cc bn phn phi

Tanenbaum vit ra lm cng c hc tp cho cc sinh vin lp trnh. Minux lm vic trn cc my tnh vi b x l 286 v c Linus dng lm m hnh cho HH mi. Tp tin phin bn u tin ca Linux (phin bn 0.01) c cng b trn Internet ngy 17 thng 09 nm 1991. Linus Torvalds vit: As I already mentioned, 0.01 didnt actually come with any binaries: it was just source code for people interested in what linux looked like. Note the lack of announcement for 0.01: I wasnt too proud of it, so I think I only sent a note to everybody who had shown interest. (Nh ti ni trc y, 0.01 khng i km theo binary no: n ch l m ngun cho nhng ai mun bit linux trng ra sao. Ch rng khng c thng bo cho bn 0.01: ti khng t ho lm v n, v th ch gi thng bo n tt c nhng ai mun th hin s quan tm.)3 Sau ngy 05 thng 10 nm 1991 phin bn 0.02 ra i. y l phin bn c th lm vic trn my. Nu bn c quan tm n lch s ca HH ny th hy c trang web sau: http://www.li.org/linuxhistory.php. bn s nhn c thng tin chi tit v lch s xut hin v pht trin Linux. Linus Torvalds khng ng k bng sng ch cng nh khng gii hn vic phn phi HH mi ny. Ngay t u Linux c phn phi theo iu kin ca bn quyn General Public License (GPL)4 thng dng cho cc phn mm ng dng Open Source v d n GNU. Theo ting lng ca Linux th bn quyn ny i khi c gi l Copyleft. V bn quyn ny, Open Source v d n GNU cn phi ni n mt cch c bit. Vo nm 1984 nh bc hc ngi m Richard Stallman sng lp ra T chc phn mm t do (FSF, Free Software Foundation) c trang ch nm ti a ch http://www.fsf.org. Mc ch ca t chc ny l loi tr tt c nhng iu cm on v hn ch phn phi, sao chp, sa i, nghin cu chng trnh ng dng. Bi v tnh n thi im bt u xy dng t chc th cc cng ty thng mi gi rt cn thn cc chng trnh ng dng ca mnh, bo v n bng cc bng sng ch, cc du hiu bo v quyn tc gi, gi b mt nghim ngt m ngun ca chng trnh vit trn cc ngn ng bc cao (nh C++). Stallman cho rng vic ny rt c hi i vi pht trin chng trnh ng dng, dn n vic gim cht lng chng trnh v s c mt ca rt nhiu li khng xc nh c trong nhng chng trnh ny. Ti t nht l lm chm qu trnh trao i tng trong ngnh lp trnh, lm chm qu trnh to ng dng mi v mi nh lp trnh s phi vit li t u mt ng dng thay v dng on m ngun c trong ng dng khc. Trong khun kh T chc phn mm t do bt u lm vic d n GNU (http://www.gnu.org) d n to chng trnh ng dng min ph. GNU l t vit tt ca GNUs Not Unix, tc l nhng g thuc v d n GNU khng phi l mt phn ca Unix (vo thi gian thm ch t UNIX tr thnh thng
Ngi dch: Rt th v l sau khi Linus Torvalds pht trin HH ca mnh th gia anh v gio s Andy Tanenbaum n ra mt cuc tranh ci. Nu bn c quan tm th c th tm c nhng th m hai ngi ny gi cho nhau trong nhm tin tc ni trn, hoc tm c cun Linux: Just for fun, mt cun sch ni v i t ca Linus Torvalds n thi im anh lm cho Transmeta v vic pht trin HH Linux. 4 Ngi dch: Tht ra lc u nhn Linux c phn phi theo bn quyn m FSF khng khng nhn l t do v nghim cm phn phi thng mi. Bn quyn ny c th tm thy trong nhng phin bn u tin ca nhn trn ftp.kernel.org, v d ftp://ftp.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES0.01. Bn quyn c i sang GPL t phin bn 0.12, hy xem RELNOTES-0.12 theo a ch trn.
3

1.1 Th no l HH ni chung v Linux ni ring

hiu, do khng cn t do). Trong Manifesto GNU (http://www.gnu.org/ gnu/manifesto.html) vo nm 1985 Stallman vit rng ng lc ng sng lp ra FSF v d n GNU l s kh chu trong quyn s hu ca mt s ngi i vi chng trnh ng dng. Nhng g do d n GNU pht trin l t do, nhng khng c ngha l chng c phn phi khng c bn quyn v khng c lut php bo v. Nhng chng trnh Open Source (M ngun m) c phn phi theo iu kin ca bn quyn General Public License (GPL). Bn c th c bn quyn ny theo a ch http://www.gnu.org/copyleft/gpl.html. Bn dch ting Vit khng chnh thc nm ti http://vi.openoffice.org/gplv.html. Nu nh ni mt cch tht ngn gn th bn cht ca GPL nh sau. Chng trnh ng dng phn phi theo GPL c quyn pht trin, sa i, chuyn hoc bn cho ngi khc khng hn ch vi mt iu kin l kt qu thu c cng phi phn phi theo bn quyn copyleft. iu kin cui l quan trng v then cht ca bn quyn ny. N bo m rng kt qu lao ng ca cc nh pht trin phn mm t do s lun lun m v khng tr thnh mt phn ca sn phm no dng bn quyn bnh thng ( ni sn phm ng). iu kin ny cng phn bit phn mm t do vi phn mm phn phi min ph. Ni nh cc nh sng lp ra FSF, th bn quyn GPL lm cho chng trnh ng dng t do v m bo l chng trnh ny s t do5 . Gn nh tt c cc chng trnh ng dng phn phi theo iu kin GPL c th coi l min ph i vi ngi dng (trong phn ln cc trng hp nhn c n bn ch phi tr tin a CD, DVD hoc kt ni Internet). iu khng c ngha l cc nh lp trnh khng cn nhn c phn thng (tin) cho cng vic ca mnh. tng chnh ca Stallman l ch khng phi bn chng trnh ng dng, m bn chnh sc lao ng ca nh lp trnh. y cn phi a ra v d bn c hiu r hn: ngun thu nhp c th l cc sn phm i km hoc dch v ci t v cu hnh cho nhng my tnh mi hoc pht trin cho nhng iu kin lm vic mi, dy cch s dng, v.v. . . Mt phn thng tt na l khi chng trnh tr ln ni ting th tc gi ca chng trnh s c iu kin tm mt cng vic c lng cao. Cc nh pht trin xvnkb (http://xvnkb.sf.net), unikey (http://unikey.org) v pdfLaTeX (http://www.tug.org), l nhng ngi hiu r nht iu ny. Hy vit th cho h hc hi kinh nghim! Trong khun kh ca hot ng Open Source ni chung v d n GNU ni ring, pht trin mt lng ng k cc chng trnh ng dng, ni ting nht trong s chng l trnh son tho Emacs v trnh bin dch GCC (GNU C Compliler) trnh bin dch ngn ng C tt nht hin nay. Vic m m ngun ng thi nng cao rt nhiu cht lng ca chng trnh ng dng: tt c nhng g tt nht, nhng tng v cch gii quyt mi c phn phi rng ri ngay lp tc, cn cc li s c nhn ra v sa nhanh chng. y chng ta gp li c ch o thi (hay tt hn l chn lc) t nhin nh trong thuyt sinh hc ca Darwin. C ch ny b km nn trong th gii chng trnh ng dng thng mi.
Ngi dch: Bn c cng nn bit l sp ti s c phin bn th 3 ca GPL (GPLv3). Cng vi s ra i ca phin bn th 3 ny ny ra rt nhiu tranh ci xung quanh tnh t do ca bn quyn. Tham gia vo tranh ci c c ngi vit ra nhn Linux u tin Linus Torvalds.
5

HH Linux: lch s v cc bn phn phi

Tuy nhin by gi xin quay li vi lch s ca Linux. Cn ni rng Linus Torvalds ch pht trin phn nhn (kernel) ca h iu hnh. Nhn ny u ng vo min t lnh, v trong d n GNU pht trin s lng ln cc tin ch khc nhau. Nhng chuyn GNU thnh mt HH hon chnh th ch cn thiu nhn. D n GNU cng bt u pht trin nhn cho ring mnh (c gi l Hurd), nhng v l do no b chm li. V th s xut hin ca nhn Linux l rt ng lc. N ng ngha vi vic ra i ca mt h iu hnh mi t do phn phi cng vi m ngun m. Stallman tt nhin ng khi i hi h iu hnh Linux phi c gi l GNU/Linux. Nhng thnh l ngi dng thng s dng tn gi ca nhn lm tn gi ca h iu hnh, v chng ta cng lm nh vy trong cun sch ny.

1.1.3

c im chnh ca HH Linux

Do m ngun Linux phn phi t do v min ph, nn ngay t u c rt nhiu nh lp trnh tham gia vo qu trnh pht trin h thng. Nh n thi im hin nay Linux l h iu hnh hin i, bn vng v pht trin nhanh nht, h tr cc cng ngh mi gn nh ngay lp tc. Linux c tt c cc kh nng, c trng cho cc h iu hnh y tnh nng dng UNIX. Xin a ra y danh sch ngn gn nhng kh nng ny. 1. Nhiu tin trnh tht s Tt c cc tin trnh l c lp, khng mt tin trnh no c cn tr cng vic ca tin trnh khc. lm c iu ny nhn thc hin ch phn chia thi gian ca b x l trung tm, ln lt chia cho mi tin trnh mt khong thi gian thc hin. Cch ny hon ton khc vi ch nhiu tin trnh y nha c thc hin trong Windows 95, khi mt tin trnh phi nhng b x l cho cc tin trnh khc (v c th lm chm tr rt lu vic thc hin). 2. Truy cp nhiu ngi dng Linux khng ch l HH nhiu tin trnh, Linux h tr kh nng nhiu ngi dng lm vic cng lc. Khi ny Linux c th cung cp tt c cc ti nguyn h thng cho ngi dng lm vic qua cc terminal xa khc nhau. 3. Swap b nh ln a Swap b nh cho php lm vic vi Linux khi dung lng b nh c hn. Ni dung ca mt s phn (trang) b nh c ghi ln vng a cng xc nh t trc. Vng a cng ny c coi l b nh ph thm vo. Vic ny c lm gim tc lm vic, nhng cho php chy cc chng trnh cn b nh dung lng ln m thc t khng c trn my tnh. 4. T chc b nh theo trang H thng b nh Linux c t chc dng cc trang vi dung lng 4K. Nu b nh y, th HH s tm nhng trang b nh lu khng c s dng chuyn chng t b nh ln a cng. Nu c trang no trong s nhng trang ny li tr thnh cn thit, th Linux s phc hi chng t a cng (vo b nh). Mt s h thng Unix c v mt s h thng hin i

1.1 Th no l HH ni chung v Linux ni ring

(bao gm c Microsoft Windows) chuyn ln a tt c ni dung ca b nh thuc v nhng ng dng khng lm vic ti thi im hin thi (tc l TT C cc trang b nh thuc v ng dng s c lu ln a khi khng b nh) v nh vy km hiu qu hn. 5. Np mun thc hin theo yu cu Nhn Linux h tr vic cung cp cc trang b nh theo yu cu, khi ny ch phn m cn thit ca chng trnh mi nm trong b nh, cn nhng phn m khng s dng ti thi im hin ti th nm li trn a. 6. Cng s dng chng trnh Nu cn chy mt lc nhiu bn sao ca cng mt ng dng no 6 , th Linux ch np vo b nh mt bn sao ca m chng trnh v tt c cc tin trnh ging nhau cng s dng mt m ny. 7. Th vin chung Th vin b cc qu trnh (thao tc) c chng trnh dng lm vic vi d liu. C mt s th vin tiu chun c dng cng lc cho vi tin trnh. Trn cc h thng c nhng th vin nm trong mi tp tin chng trnh, v thc hin cng lc nhng chng trnh ny dn n hao ht b nh khng ng c. Trn cc h thng mi (bao gm Linux) c h tr lm vic vi cc th vin ng (dynamic) v tnh (static) c chia ra, v nh vy cho php gim kch thc b nh b ng dng chim. 8. B m ng ca a B m ca a l mt phn b nh ca h thng dng lm ni lu nhng d liu thng dng ca a, nh nng cao rt nhiu tc truy cp ti nhng chng trnh v tin trnh thng dng. Ngi dng MSDOS s nh n chng trnh SmartDrive, chng trnh ny d tr mt phn b nh c kch thc xc nh lm b m cho a. Linux s dng h thng m linh ng hn: b nh c d tr cho m c tng ln khi b nh khng c s dng, v s gim xung khi h thng hay tin trnh cn nhiu b nh hn. 9. 100% tng ng vi tiu chun POSIX 1003.1. H tr mt phn cc kh nng ca System V v BSD POSIX 1003.1 (Portable Operating System Interface giao din ca h iu hnh lu ng) a ra giao din tiu chun cho cc h thng Unix, l mt b cc th tc ngn ng C. Ngy nay giao din ny c tt c cc h iu hnh mi h tr. Microsoft Windows NT cng h tr POSIX 1003.1. Linux 100% tng ng vi tiu chun POSIX 1003.1. Thm vo Linux cn h tr cc kh nng ca System V v BSD tng tnh tng thch. 10. System V IPC Linux s dng cng ngh IPC (InterProcess Communication) trao i thng tin gia cc tin trnh, s dng tn hiu v b nh chung.
6

hoc mt ngi dng chy vi tin trnh ging nhau, hoc nhiu ngi dng chy cng mt chng trnh

HH Linux: lch s v cc bn phn phi 11. Kh nng chy chng trnh ca HH khc Trong lch s Linux khng phi l h iu hnh u tin. Ngi ta vit ra hng lot cc chng trnh ng dng, trong c c nhng chng trnh c ch v khng n ni ti, cho cc HH pht trin trc Linux, bao gm DOS, Windows, FreeBSD v OS/2. chy nhng chng trnh nh vy di Linux pht trin cc trnh gi lp (emulator) cho DOS, Windows 3.1, Windows 95 v Wine. Ngoi ra, cn c mt lot cc chng trnh to my o7 m ngun m cng nh sn phm thng mi: qemu, bochs, pearpc, vmware,. . . HH Linux cn c kh nng chy chng trnh dnh cho b x l Intel ca cc h thng Unix khc, nu h thng p ng tiu chun iBCS2 (intel Binary Compatibility). 12. H tr cc nh dng h thng tp tin khc nhau Linux h tr mt s lng ln cc nh dng h thng tp tin, bao gm cc h thng tp tin DOS v OS/2, v c cc h thng tp tin mi, nh reiserfs, HFS,. . . . Trong khi h thng tp tin chnh ca Linux, c gi l Second Extended File System (ext2fs) v Third Extended File System (ext3fs) cho php s dng khng gian a mt cch c hiu qu. 13. Kh nng h tr mng Linux c th gn vo bt k mng ni b no. H tr tt c cc dch v Unix, bao gm Networked File System (NFS), kt ni t xa (telnet, rlogin, ssh), lm vic trong cc mng TCP/IP, truy cp dial-up qua cc giao thc SLIP v PPP,v.v. . . ng thi c h tr dng Linux l my ch hoc my khch cho mng khc, trong c chia s (dng chung, sharing) cc tp tin v in t xa trong cc mng Macintosh, NetWare v Windows. 14. Lm vic trn cc phn cng khc nhau Mc d u tin HH Linux c pht trin cho my tnh c nhn (PC) trn nn tng Intel 386/486, by gi n c th lm vic trn tt c cc b vi x l Intel bt u t 386 v kt thc l cc h thng nhiu b x l Pentium IV, bao gm c cc b x l 64bit. ng thi Linux cn lm vic trn rt nhiu b x l tng thch vi Intel ca cc nh sn xut khc, nh AMD. Trong Internet cn c nhng thng bo ni rng trn cc b x l Athlon v Duron ca AMD Linux cn lm vic tt hn so vi trn Intel. Ngoi ra cn c phin bn Linux cho cc b x l khc bao gm ARM, DEC Alpha, SUN Sparc, M68000 (Atari v Amiga), MIPS, PowerPC v nhng b x l khc8 . Xin c ni lun l trong cun sch ny chng ta ch xem xt trng hp Linux cho cc my tnh tng thch vi IBM.

1.2

Bn phn phi Linux

Trong bt k h iu hnh no cng c th chia ra 4 phn chnh: nhn, cu trc (h thng) tp tin, trnh dch lnh ngi dng v cc tin ch. Nhn l
cho php s dng nhiu h iu hnh trn mt my Ngi dch: bn phn phi Linux h tr nhiu b x l nht cn phi k n Debian (http://www. debian.org)
8 7

1.2 Bn phn phi Linux

thnh phn chnh, nng ct ca HH, n iu khin cc thit b phn cng v iu khin vic thc hin chng trnh. Cu trc tp tin (h thng tp tin) l h thng lu tp tin trn cc thit b lu. Trnh dch lnh hay h v (shell) l chng trnh t chc giao tip gia my tnh v ngi dng. V cui cng cc tin ch n gin l cc chng trnh ring l, ni chung khng khc so vi nhng chng trnh bnh thng khc m ngi dng c th chy, nhng c chc nng chnh l thc hin cc cng vic dch v (service). Nh ni trn, nu chnh xc th t Linux ch c ngha l nhn. V th khi ni v h iu hnh ni chnh xc hn s l h iu hnh da trn nhn Linux. Nhn ca HH Linux hin thi ang c pht trin di s lnh o ca Linus Torvalds v phn phi mt cch t do (vi bn quyn GPL) ging nh mt s lng khng l cc chng trnh ng dng v tin ch khc. Mt trong nhng kt qu ca vic phn phi t do chng trnh ng dng cho Linux l c nhiu cng ty cng nh nhm cc nh pht trin c lp pht hnh ra cc bn Linux khc nhau c gi l bn phn phi Linux. Bn phn phi l mt b cc chng trnh ng dng bao gm tt c bn phn chnh ca HH, tc l nhn, h thng tp tin, h v shell v cc tin ch, ng thi cn c thm cc chng trnh cho cng vic hng ngy ca ngi dng. Thng thng tt c nhng chng trnh nm trong bn phn phi Linux u dng bn quyn GPL. Rt c th xut hin trong bn c ngh rng bt k ai cng c kh nng cho ra bn phn phi Linux, hay ni ng hn l bt k ngi no khng li su tp cc chng trnh t do. V suy ngh c phn no ng. Tuy nhin cc nh pht trin ca mt bn phn phi Linux cn to ra t nht mt chng trnh ci t a HH ln my tnh trng khng cha c HH no. Ngoi ra, cn tm cch gii quyt s ph thuc v mu thun gia cc gi (v gia cc phin bn ca gi) chng trnh. V nh chng ta s thy sau khng phi l bi ton n gin. Tuy vy, trn th gii ang c hng trm (hng nghn?) bn phn phi Linux v mi ngy li xut hin cc bn mi. C th tm thy danh sch tng i y cng vi c im ngn gn ca mi bn phn phi trn http://www. linuxhq.com (cn c mt s bn phn phi khc ting Anh). Ngoi ra, trn trang cng nh nhiu trang web khc cn c lin kt n nhng danh sch bn phn phi khc, v th nu mun c th tm thy tt c nhng g c trn th gii (hu ht nhng trang ny dng ting Anh v cc bn phn phi Vit Nam t c ni n). Mt vi tc gi th phn loi cc bn phn phi da trn nhng tiu ch khc nhau:
cu trc h thng tp tin chng trnh ci t phng tin dng ci t cc gi chng trnh thnh phn ca cc tin ch v chng trnh ng dng c trong bn phn phi.

Mc d hu ht cc tc gi cho rng s khc nhau gia cc bn phn phi l khng c bn. Nhng hin nay c th chia t nht 3 nhm bn phn phi, m i din ca mi nhm l Red Hat, Slackware v Debian.

10

HH Linux: lch s v cc bn phn phi

Vy th cn la chn bn phn phi theo tiu chun no? Theo kin ca tc gi th i vi ngi dng Vit Nam c hai tiu chun: th nht phi c giao din ngi dng ting Vit v th hai phi c mt nhm cc nh pht trin h tr bn phn phi ny. V tt nht nu nhm cc nh pht trin ny nhn c ngun li t sn phm Linux ca mnh, tc l lm vic nh mt cng ty thng mi. Thm ch ch trong khong thi gian khng lu m ti s dng Linux (khong 5 nm) c nhiu bn phn phi Vit Nam cng nh nc ngoi cho tm bit th gii Linux v nhm h tr ca chng khng thu c nhiu li nhun v sau mt thi gian ngng h tr tc phm ca mnh. i vi ngi dng Linux Vit Nam hin thi c hai la chn: th nht, s dng cc sn phm Linux ting Vit do mt s ngi t nguyn duy tr; th hai, s dng cc sn phm Linux ln c h tr ting Vit. Chng ta s ni n hai s la chn ny mt cch k cng hn. La chn th nht, theo kin ca ti khng c u tin y. L do chnh l cha t c tiu chun th hai nu trn. Hin thi c mt bn phn phi nh vy: vnlinux-CD (cng vi mt vi bin th) do anh Larry Nguyn, mt Vit kiu M duy tr. La chn th hai l s dng cc bn phn phi h tr ting Vit tt nh Debian, Ubuntu v Mandriva, openSuSE cng ang dn dn h tr ting Vit (http://vi.opensuse.org). La chn th hai ny c u tin v:
chng c h tr ting Vit v cng ngy cng hon thin chng c trnh ci t tt, h tr nhiu phn cng khc nhau c th ci t thm cc phn mm khc mt cch d dng phn ln chng trnh c bin dch sn cho mi yu cu ca ngi dng nhng bn phn phi ny c mt nhm cc nh pht trin duy tr, cp nht thng xuyn thng thng l theo mt lch nh sn. Ngoi ra cn m bo l bn s nhn c phin bn mi ca n trong tng lai. Khng s trng hp em con b ch.

kt thc cu chuyn v la chn bn phn phi Linux cn ni thm l gn y bc Nguyn i Qu (http://vnoss.org) cho ra i mt bn phn phi mi hng v ngi dng Vit Nam FCxVnOSS. Bn phn phi ny da trn nn tng ca FC cng thm giao din ting Vit v mt s ng dng mang tnh Vit Nam nh chng trnh g ting Vit, t in ting Vit,. . . Cn ni vi li v nh s phin bn. Cn phn bit s phin bn ca bn phn phi v s phin bn ca nhn. Khi ni n phin bn ca Linux thng c l phin bn nhn (v mt h iu hnh l Linux ch khi n s dng nhn Linux). V Linus Torvalds tip tc iu hnh vic pht trin nhn, nn phin bn ca nhn tng ln theo th t, ch khng phn nhnh v nhn ln ging nh trng hp bn phn phi. Phin bn nhn Linux thng c k hiu bng ba s9 , phn cch nhau bi du chm. V d, bn phn phi openSuSE Linux 10.1 c da trn nhn phin bn 2.6.16.13, tc l Linux phin bn 2.6.16.13. Phin bn nhn vi s th hai
Ngi dch: iu ny ch ng vi cc phin bn nhn trc 2.6. T 2.6 tr i Linus v cc nh pht trin khc th nghim dng bn s.
9

1.3 Yu cu i vi my tnh

11

l (v d, 2.5.0) thng khng c s dng to cc bn phn phi, v l phin bn th nghim (ch dnh cho pht trin). Chng c dnh cho nhng ngi tnh nguyn c mong mun th nghim tm ra cc li. Tt nhin phin bn nh vy c th lm vic, nhng khng bn vng. Phin bn vi s th hai chn (v d 2.6.16.13) c coi l lm vic n nh. Tt nhin l bn c th ci t bt k phin bn no, nhng i vi ngi dng mi th nn chn phin bn nhn vi s th hai trong phin bn l chn. Nu ci t mt bn phn phi y th ng nhin la chn nhn c cc nh pht trin lm gim bn c, nhng cn bit cch nh s phin bn nu khi no bn mun cp nht nhn Linux ca mnh.

1.3

Yu cu i vi my tnh

Ti c u ni rng c nhng phin bn Linux c bit, lm vic thm ch trn b x l 8086 vi 512Kbyte b nh, cn phin bn c bit c th chy t mt hoc hai a mm khng cn a cng th ti gp. V th nu bn c mt ci my tnh c, trn khng th chy ni Windows, th c th s dng n hc Linux v rt c th s ngc nhin v kh nng ca HH ny. Nhng trong cun sch ny chng ta s khng xem xt nhng trng hp c bit nh vy. V HH Linux s dng ch bo v ca b vi x l, nn ci t HH ny cn t nht l mt my tnh c b x l 386. Theo cc ngun thng tin khc nhau th tt c cc bin th u dng tt: SX, DX v.v. . . Xin ng lo lng, nhng my tnh sn xut gn y p ng c ton b nhng yu cu a ra v s a ra di y. Yu cu i vi phn cng ca h thng mun ci t Linux cn c xc nh bi la chn phn mm ca ngi dng (v tc l s ph thuc vo phin bn ca cc phn mm v t nhiu vo bn phn phi). Bng 1.1 di y s a ra mt vi con s ch vi mc ch gip bn c lm quen, nhng con s ny l khng chnh xc10 nhng khng khc bit nhiu gia cc bn Linux khc nhau. Bng 1.1: Yu cu i vi phn cng Mong mun ca ngi dng Yu cu, MB B nh a cng Yu cu nh nht: ch lm vic trong giao din vn 8 200 bn vi dng lnh ca shell, c mt s ng dng ngi dng nh vim, emacs,. . . Dng c giao din ho X Window cng vi mt 32 400 s trnh qun l ca s nh nh nh icewm, fluxbox, windowmaker. Dng mi trng lm vic ho KDE. 128 1000 Chy cc ng dng cn nhiu b nh (nh GIMP, cc 256 1500 ng dng nm trong KOffice, OpenOffice.org). Nh vy Linux c mt u im ln l kh nng lm vic thm ch trn
Ngi dch: bn gc a ra mt bn qu c, ti xin a ra mt bn mi da trn c s ca openSuSE 10.1.
10

12

HH Linux: lch s v cc bn phn phi

nhng my rt c, m trc y ch c th dng MS DOS (tt nhin l trong trng hp ny chng ta ch thu c ch dng lnh, nhng iu ny khng ngn cn vic dng cc my tnh c lm vic c li v d lm router11 ). bt u hc Linux th ch cn c mt my tnh vi b x l 486, 16MB b nh v cng khong 300MB. Tt nhin i vi dung lng b nh cng nh cu hnh my ni chung th my cng mnh, cng nhiu b nh, cng cng rng th cng tt. Khng c g l tha thi. Ngi dch: kt thc xin a ra y trng hp cu hnh my ca ti: b x l 686, b nh 256Mb (+256Mb swap), 10GB cng dnh cho ci t Linux, phn cn li dnh cho d liu. Ti hin s dng openSuSE Linux 10.1 vi mi trng lm vic KDE. C th lm vic ng thi nhiu ng dng yu cu: OpenOffice.org, KBabel, Kile (dng vit nhng dng ny), StarDict (chng trnh t in), Konqueror, GIMP. Nu my tnh ca bn c th lm vic vi cc h iu hnh Windows 2000 v Windows XP th vic chy Linux trn n s khng c g kh khn.

1.4

Ly Linux u?12

V trong phn cui ca chng th nht chng ta s tr li ngn gn cho cu hi Ly Linux u?. Nh ni trn, Linux cng vi mt s lng khng l cc chng trnh ng dng c phn phi gn nh min ph. C ngha l ngi dng khng c nh thay i chng trnh hoc mua bn nhng chng trnh ny, th c ton quyn sao chp ton b bn phn phi Linux hoc mt phn bt k ca n ch ngi quen, hoc ti xung t Internet hoc mua a CD (DVD) Linux ch nhng ngi bn hng u trn h ph m khng s b truy cu v vi phm bn quyn (cc chng trnh c bn quyn thng mi thng dng t s ng gia ngi dng v nh phn phi) ca cc nh (cng ty) pht trin. Trong s ba phng n k trn th i vi ngi dng Linux Vit Nam phng n mua CD, DVD l tt nht. Cn ni thm l nhng a ghi va h thng c li v c th gy mt d liu hoc lm hng phn cng. Tt hn ht l nn mua a ca mt cng ty my tnh hoc qua mt ca hng trn mng. Khi cn c kh nng la chn v c bo m l s i c a xu. Tt nhin l chnh lnh gi thnh a phi khng qu cao, gi thnh bn Linux bao nhiu l quyn ca ngi bn (ngoi ra gi thnh cao cn c cc bn phn phi chuyn nghip nh Xandros, Novell Desktop,. . . ). Hin gi trn mng Vit Nam xut hin mt vi ca hng bn a Linux. a ch c th xin khng a ra y v qung co trong th gii hin i khng cn l min ph. V vic giu a ch khng lm nh hng n nhng ai c mong mun mua Linux nghin cu. Cn ni ring v h thng pht a vi bn phn phi Ubuntu mt cch min ph. Ch cn vo a ch http://shipit.ubuntu.com ng k s lng a bn cn, tt nhin c km theo a ch bu in, sau mt thi gian khong 1 thng
11 12

my gip chuyn hng cc gi mng Phn ny do ngi dch vit

1.4 Ly Linux u?

13

1 thng ri bn s nhn c chng. Theo ti ngh y l cch tt nht nu bn khng c iu kin mua a.

Chng 2 Ci t HH Linux trn cng my tnh vi Windows


Software is like sex, its good when its free Linus Torvalds.
Thng thng trn cc a ca bn phn phi Linux c hng dn ngn gn cch ci t Linux. Ngoi ra, trn Internet bn c th tm thy rt nhiu cun sch n v vn ny. V tt c cc bn phn phi ln (Debian, Slackware, Fedora, Mandrake, ...) u c cun hng dn ci t rt chi tit, cho mi tnh hung s dng. Hy ch i v hy vng trong tng lai khng xa s c bn dch Ting Vit ca nhng cun sch ny. Chnh v vy trong cun sch ny, tc gi s khng a ra cc bc c th ca vic ci t, m xin bn c hy tm cc cun hng dn tng ng. Thay vo l nhng g bn cn bit v chun b trc khi ci t, ng thi, tc gi s i c th v chi tit vo nhng g c bit khi ci t Linux trn my tnh c mt trong cc h iu hnh (HH) Windows cng nh vic khi ng nhiu h iu hnh.

Vn ch, phn ln ngi dng Vit Nam trc khi bt u hc Linux lm quen v rt c th c kinh nghim s dng cc HH dng Windows nh Windows 98, Windows 2000 v Windows XP. V trn thc t th tm thi Linux kh c th l HH u tin m ngi dng lm quen. Nh th, mt cch t nhin, nu ngi dng lm vic vi HH Windows v quyt nh th nghim vi Linux, th h khng mun mt i mi trng lm vic quen thuc ca mnh, cng vi nhng g to ra v cu hnh di di Windows. Rt may l khng nht thit phi nh mt tt c nhng th . Bi v trn mt my tnh c th cng chung sng ha bnh hai HH v thm ch nhiu hn na (nu c ch trn a!). Chnh v th, pha di s ni cch ci t HH Linux trn my tnh ci t mt trong cc h iu hnh ca hng Microsoft.

2.1

Chun b ci t

C th ci t Linux bng mt trong cc cch sau:


T a CD-ROM T bn sao chp Linux trn a cng T my ch tp tin ca mng ni b qua NFS;

2.1 Chun b ci t
T my tnh khc trong mng ni b qua SMB; T my tnh xa (v d t Internet) qua giao thc FTP; T mt my ch WWW qua giao thc HTTP.

15

Theo kin c nhn ca tc gi th thun tin v c tnh thc t nht l ci t Linux t CD-ROM, hn na vic mua cc a CD by gi khng gy kh khn g. Trc khi bt u ci t, hy thu thp (hy vit ln mt t giy) tt c nhng thng tin cu hnh cn thit ca my tnh. Nu nh my tnh ca bn tm thi vn cn lm vic di HH Windows 95/98/2000/XP, th bn s tm thy rt nhiu thng tin nu nhn chut phi vo biu tng My Computer, chn lnh Properties. y bn c th tm thy gn ht tt c thng tin cn thit. Nu nh bn khng thy thng tin no , th cn tm kim theo cc cch khc, k c vic m v my v c nhng dng ch trn thit b. gip bn c, xin c a ra y danh sch nhng thng tin cn thu thp. Xin ng li bing v hy c gng ghi cng nhiu d liu v mt thit b cng tt (tt c nhng thng tin c th tm thy), nhng d liu ny s cn n khi ci t v cu hnh, khi m vic tm kim chng s kh khn hn.
BIOS:

nh sn xut; s hiu phin bn.


Controller a cng: loi (IDE hay SCSI) v dung lng ca a (nu nh bn c dng a IDE, th cn kim tra xem BIOS c h tr vic truy cp ch LBA hay khng):

hda (Master trn controller s 1 hay Primary Master); hdb (Slave trn controller s 1 hay Primary Slave); hdc (Master trn controller s 2 hay Secondary Master); hdd (Slave trn controller s 2 hay Secondary Slave). nh sn xut v s mu m ca adapter SCSI (nu c).
Dung lng ca b nh (tnh bng Kilobyte CD-ROM:

Giao din (IDE, SCSI, hay giao din khc); i vi cc a CD-ROM khng phi IDE, cng nh SCSI - nh sn xut v s mu m.
Chut:

loi chut (serial, PS/2, hay bus mouse); giao thc (Microsoft, Logitech, MouseMan, v.v. . . );

16 s nt;

Ci t HH Linux trn cng my tnh vi Windows

i vi chut cm vo cng ni tip th cn s th t ca cng .


Cc mn hnh

nh sn xut; s mu m (hay chipset s dng) dung lng b nh;


Mn hnh

nh sn xut s mu m; cc gi tr gii hn (min, max) ca tn s lm mi theo chiu dc v theo chiu ngang (nhng gi tr ny bn c ch c th tm thy trong ti liu i km vi mn hnh, Windows khng hin th nhng gi tr ny, v chng rt quan trng trong khi cu hnh giao din ha).
Nu nh bn c mun kt ni mng (m UNIX ni chung l HH dnh cho mng), th hy ghi li nhng d liu sau:

nh sn xut v s mu m cc mng; a ch IP ca mnh; tn ca my tnh trong mng; mt n mng con (subnet mask); a ch IP ca gateway; a ch IP ca cc my ch tn min (DNS server); a ch IP ca my ch WINS(Windows Internet Name Service); tn min ca cng ty bn c.
Loi v nh sn xut cc m thanh v game controller (nu nh c)

2.2

Phng xa v nhng li khuyn

Trc khi ci t HH Linux sau Windows, rt nn thc hin vi thao tc phng xa (phng chy hn cha chy). V rt c th bn c s phi phn vng li a, thay i bn ghi khi ng (Boot Record) v lm vic vi cc tp tin khi ng cng nh cc tp tin cu hnh. Cc thao tc ny khng phi lc no cng em li em li mt kt qu theo mun, v trong trng hp xu c th my tnh ca bn c s khng khi ng na. C bit cch thot ra khi tnh hung ny v phc hi d liu cn thit khng cn l mt cu hi. Nhng ri vo tnh hung nh vy ht sc d dng nht l vi ngi dng ln u tin ci t Linux. Chnh v vy, u tin, cn to mt a mm khi ng hay mt a mm gip phc hi h thng (nu bn c cn cha to). Th hai, cn ghi li nhng d liu c gi tr (backup). V th ba, chun b cc tp tin (a mm, CD) ci t

2.2 Phng xa v nhng li khuyn

17

cho h thng c. Mt li khuyn quan trng khc: nu c g xy ra khng theo mun th khng nn hoang mang. Xin chia s mt kinh nghim bun: khi ln u tin tc gi ci Linux trn my tnh c Windows NT, v kt qu l my tnh khng th khi ng c. Khng hiu ht vn tc gi ngh l khng cn cch g khc ngoi nh dng li a v ci t li t u. By gi th tc gi hiu l c th phc hi li nu nh khng quyt nh qu vi vng. V vy c th ni rng Werner Almesberger ng, khi trong hng dn s dng LILO c a ra nhng li khuyn sau cho ngi dng khi ri vo trng hp kh khn nh vy:

Khng hong ht. Nu nh c g khng lm vic, hy th mi cch tm ra nguyn nhn, kim tra li nhiu ln thao tc ca mnh. Ch sau khi mi thc hin cc bc sa li.

Hy c ti liu. c bit trong cc trng hp, khi h thng lm nhng g bn c khng mong i.

Xin thm mt li khuyn ph bin sau: * Hy xem cc tp tin log, tc l cc tp tin ghi li s kin ca h thng (cn tm chng trong th mc /var/log). Nh ni trn, qu trnh ci t HH Linux ni ring khng phi l ti ca cun sch. Ngi dng cn tm cc cun hng dn tng ng. Tuy nhin, tc gi cng mun a ra vi li khuyn gip ngi dng a ra quyt nh trong khi ci t. Th nht, ng vi vng v hy ch c nhng thng bo s hin th trn mn hnh, v hy suy ngh k khi chn cu tr li. minh chng cho li khuyn ny xin c k li trng hp khi tc gi ci Red Hat 7.1, v t ng nhn ln nt Next, v cho rng phng n theo mc nh l . Kt qu l tc gi khng th truy cp c n my ny qua cc giao thc mng (telnet, ftp, NFS, Samba), mc d cu hnh giao din mng cho my. Nguyn nhn l trong phng n theo mc nh th tng la c ci t, v tng la ng ht cc truy cp t mng. m truy cp ny, th trong qu trnh ci t cn ch r cc dch v c m. Nhng chng ta qu vi vng! Th hai, tc gi khuyn khng nn ng vi vic t ng khi ng vo giao din ha. V cui cng ngi dng khng kh khn g khi g cu lnh startx, cn vic cu hnh giao din ha (nu c g lm vic khng ng) vi ngi dng mi rt kh thnh cng. Sau khi lm xong cc cng vic phng xa, cn quyt nh s t chc khi ng nhiu HH nh th no, chun b cc a (phn vng) ci t, tc l cn chia a thnh s phn vng cn thit. Nhng trc khi chuyn sang cc bc c th chun b a, xin c ni qua mt cht v cu trc ca a v qu trnh khi ng HH. Nu ai khng kin nhn c phn l thuyt ny, th c th b qua chng v chuyn thng n vn chn chng trnh khi ng.

18

Ci t HH Linux trn cng my tnh vi Windows

2.3
2.3.1

Phn vng trn a v qu trnh khi ng


Th no l cu trc hnh hc ca a

Nh bn c bit, a cng gm vi a c ph lp t tnh, nm trn cng mt trc v quay vi vn tc ln. c/Ghi d liu c thc hin bi cc u c nm gia cc a ny, di chuyn t tm a ra ra ngoi ca a. Vng trn u c v ra trn cc a khi quay quanh chng gi l rnh (track), cn tp hp cc rnh nm chng ln nhau gi l cylinder. Mi rnh li chia thnh cc sector, v c th ghi vo mi sector 512 byte thng tin. V th c im ca mt a thng l tp hp ba s: s cylinder/s rnh trong cylinder/s sector trn rnh hay cn vit tt l C/H/S (ba ch ci u tin ca cc thut ng Ting Anh tng ng: Cyliner/Head/Sector). Ba s ny gi l cu trc hnh hc ca a. a vi cu trc hnh hc C/H/S c dung lng C*H*S*512 byte. a cng l cc thit b khi, t l c v ghi thng tin theo cc khi, v kch thc nh nht ca khi bng mt sector (512 byte). c th ghi thng tin ln a, cn t u a ng v tr, tc l ch cho controller bit cn ghi thng tin ny vo sector no. Sector c nh a ch theo s th t cylinder, s th t u c (hay rnh) v s th t sector trn rnh.

2.3.2

Phn vng v bng phn vng ca a

Trong cc h thng Intel a thng c chia thnh cc phn vng. Rt c th nguyn nhn ca vic phn vng l nguyn nhn lch s: cc phin bn MS-DOS u tin khng th s dng c cc a ln, m dung lng a li pht trin nhanh hn kh nng ca DOS. Khi ngh ra vic chia a thnh cc phn vng. lm c iu ny, trong sector s 0 ca a (sector s 0 ca rnh u tin trong cylinder s 0) ghi nh bng chia a thnh cc phn vng (partition table). Mi phn vng c dng nh mt a vt l ring r. Mt trng hp ni ring l trong cc phn vng khc nhau c th ci t cc h iu hnh khc nhau. Bng phn vng cha 4 bn ghi 16 byte cho 4 phn vng chnh. Mi bn ghi c cu trc nh sau:
struct partition { char active; /* char begin[3]; /* char type; /* char end[3]; /* int start; /* int length; /* }; 0x80: phn vng kch hot, 0: khng kch hot */ CHS sector u tin, 24 bit loi phn vng (v d, 83 -- LINUX_NATIVE) */ CHS sector cui cng, 24 bit */ s ca sector u tin (32-bit, tnh t 0) */ s sector c trong phn vng (32 bit) */

Bng phn vng a thng c to bi chng trnh fdisk. Trn HH Linux ngoi chng trnh fdisk truyn thng (tuy vy rt khc so vi chng trnh fdisk trong MS-DOS v Windows), cn c hai chng trnh lm vic vi phn vng a: cfdisk v sfdisk. Chng trnh cfdisk, ging nh fdisk ch dnh lm vic vi bng phn vng a: n khng quan tm ch n thng tin c trn a. Ch khc bit vi fdisk giao din thun tin: ch dn s dng

2.3 Phn vng trn a v qu trnh khi ng

19

lnh v h thng trnh n (thc n). Chng trnh sfdisk c vi kh nng cao hn, v d, cho php thao tc trn cc phn vng c ca a. DOS s dng trng begin v end ca bng phn vng v Interrupt 13 ca BIOS (Int 13h) truy cp ti a, v th khng th s dng a c dung lng ln hn 8,4 Gbyte, ngay c vi cc BIOS mi (v vn ny s ni n sau), cn phn vng th khng th ln hn 2,1 Gbyte (nhng y l do hn ch ca h thng tp tin FAT16). Linux th ch s dng trng start v length ca bng phn vng a v h tr cc phn vng cha n 232 sector, tc l dung lng c th t 2 Tbyte V trong bng chia a ch c 4 dng cho cc phn vng, s phn vng chnh trn a ngay t u d hn ch: khng th ln hn 4. Khi m 4 phn vng tr thnh t, th ngi ta sng ch ra phn vng lgc. Mt trong s cc phn vng chnh tr thnh m rng (loi phn vng - 5 hay F hay 85 trong h c s mi su). V trong phn vng m rng ngi ta to ra cc phn vng lgc. Phn vng m rng khng c s dng trc tip m ch dng ghi cc phn vng lgc. Sector u tin ca phn vng m rng ghi nh bng phn vng vi bn u vo: mt dng cho phn vng lgc, mt cho phn vng m rng khc, cn hai ci cn li khng c s dng. Mi phn vng m rng c mt bng chia ca mnh, trong bng ny, cng ging nh trong phn vng m rng chnh, ch s dng c hai dng a ra mt phn vng lgc v mt phn vng m rng. Nh vy, thu c mt chui cc mt xch t bng phn vng, mt xch u tin m t ba phn vng chnh, v mi mt xch tip theo mt phn vng lgc v v tr ca bng tip theo. Chng trnh sfdisk trn Linux cho thy ton b chui ny:
[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

S phn vng lgc theo nguyn tc khng hn ch, v mi phn vng lgc c th cha bng phn vng v cc phn vng lgc ca mnh. Tuy nhin trn thc th vn c nhng hn ch. V d, Linux khng th lm vic vi hn 15 phn vng trn cc a SCSI v hn 63 phn vng trn a IDE. Phn vng m rng trn mt a vt l, hay trong mt phn vng m rng cha n (c th gi l m) ch c th lm mt: khng mt chng trnh phn

20

Ci t HH Linux trn cng my tnh vi Windows

chia a no trong s c (fdisk v tng t) c th to thm mt phn vng m rng th hai. a trn Linux ni ring ( a vt l) c truy cp qua tn ca thit b: /dev/hda, /dev/hdb, /dev/sda, v.v. . . Cc phn vng chnh c thm s 14 trong tn thit b: /dev/hda1, /dev/hda2, /dev/hda3, cn phn vng lgc th c cc tn: /dev/hda5, /dev/hda6, /dev/hda7 . . . (bt u t s 5). T nhng g cp n trn c th suy ra ti sao li c th b qua cc tn nh /dev/hda3 hay /dev/hda4 (n gin l phn vng chnh th ba v th t khng c to ra) v ngay sau /dev/hda2 bn c thy /dev/hda5 (phn vng lgc trong phn vng m rng /dev/hda2), v sau th vic nh s li theo th t thng thng. Trong Windows cc phn vng lgc nhn c tn (ch ci), bt u t ch ci cui dng dnh cho phn vng chnh. V d nu mt a cng c hai phn vng chnh (C: v D:) v mt phn vng m rng, trong phn vng m rng to ra hai phn vng lgc, th nhng phn vng lgc ny s c t tn E: v F:. Xin ni thm, trong Windows NT v 2000/XP c th thay i tn ca cc phn vng a.

2.3.3

Qu trnh khi ng cc HH ca cng ty Microsoft

D h iu hnh c l g, th c th bt u iu khin my tnh, cn np HH vo b nh. V th hy xem xt qua qu trnh khi ng ca cc HH khc nhau. Chng ta ch quan tm n vic khi ng t a cng, nn s khng xem xt n vic khi ng t a mm, CD-ROM v qua mng. Hy bt u t MS-DOS v MS Windows c (xin ng qun rng, vic pht trin v hon thin my tnh c nhn song song vi s pht trin ca HH ca Microsoft v nhng quyt nh s dng trong cc HH ny c nh hng mnh n quyt nh ca cc nh pht trin thit b). Nh bn c bit, khi bt my tnh u tin s chy chng trnh POST (Power On Self Test). Chng trnh xc nh dung lng b nh, th nghim b nh, v xc nh cc thnh phn khc (bn phm, cng. . . ), khi ng cc th adaptor. Trn mn hnh thng xut hin cc thng bo v dung lng b nh, v vic th nghim b nh, danh sch cc thit b nhn ra ( a cng v mm, b x l, cng COM v v.v. . . ). Sau khi hon thnh vic th nghim POST gi Int 19h. Cng vic ca Int 19h l tm thit b khi ng. Vic tm kim thc hin theo th t xc nh trong Setup BIOS v theo cch thm d sector s 0 ca cc thit b tng ng. Nu a c th khi ng, th trong sector s 0 ca a c bn ghi khi ng chnh Master Boot Record (MBR). Hai byte cui cng ca MBR s mu nhim, l du hiu cho bit sector c MBR, v theo a c th khi ng. Ngoi s mu nhim MBR cn cha bng phn vng a ni trn, v mt chng trnh nh trnh khi ng chnh, kch thc ch c 446 (0x1BE) byte. Bng 2.1 cho thy cu trc ca sector khi ng chnh sau khi ci t Windows. MS-DOS, Windows95 v NT ghi nh DOS MBR trong khi ci t. Ngoi ra cng c th to MBR ca MS vi cu lnh DOS sau: fdisk /mbr. Xin tr li vi qu trnh khi ng. Int 19h ca BIOS np trnh khi ng

2.3 Phn vng trn a v qu trnh khi ng

21

Dch chuyn 0x000 0x1BE 0x1FE

Bng 2.1: Cu trc ca sector khi ng chnh Ni dung M ca trnh khi ng chnh Bng phn vng a S mu nhim (0xAA55)

chnh vo b nh my tnh v chuyn quyn iu khin cho chng trnh ny. Nhng chng trnh b nh ny khng kh nng khi ng HH; tt c nhng g m n c th lm l np vo b nh chng trnh mnh hn trnh khi ng th hai. lm c iu ny, n tm trong bng phn vng kch hot v c vo b nh trnh khi ng th hai, bt u t sector lgc u tin ca phn vng kch hot. Hy ch n cm t bt u t. V trnh khi ng th hai trn cc h thng khc nhau c di khc nhau. Trong phn vng c nh dng di h thng tp tin FAT, trnh khi ng th hai chim mt sector (512 byte). Trong phn vng nh dng di h thng tp tin NTFS, trnh khi ng th hai chim vi sector. Trnh khi ng th hai np lp chng trnh u tin, cn thit cho vic khi ng h iu hnh. Trong trng hp MS DOS chng trnh khi ng ng np IO.SYS theo a ch 700h, sau MSDOS.SYS v chuyn quyn iu khin cho SYSINIT ca mun IO.SYS. Nu v l do no khng tm thy trn a phn vng kch hot, th qu trnh khi ng s tip tc vi vic x l Int 18h. Trng hp ny trn thc t rt him khi s dng, nhng kh nng ny c th c ch trong trng hp no . Trong khi khi ng t xa, khi h iu hnh khi ng t my ch, th Int ny c POST chuyn hng ln ROM ca cc mng. i vi cc HH khc ca Microsoft th qu trnh khi ng din ra tng t.
Windows95 khi ng ging nh DOS nhng thay th IO.SYS v MSDOS.SYS bi cc tp tin ca mnh. Cc tp tin DOS c gi li di cc tn tng ng IO.DOS v MSDOS.DOS. Khi bn c chn khi ng DOS, Windows95 s i tn cc tp tin ca mnh vi phn m rng w40 v phc hi tn ban u ca cc tp tin h thng ca DOS. Qu trnh khi ng tip tc vi vic np IO.SYS. Nh th, sector khi ng ca DOS v Windows95 l nh nhau. Windows NT4 s dng MBR DOS, nhng thay th bn ghi khi ng ca phn vng kch hot bng cch thay th NTLDR vo ch IO.SYS. y l mt chng trnh mng v c th lm c nhiu th. V d, c th tm tp tin boot.ini v nu nh tham s timeout ln hn 0, th a ra trnh n (thc n) khi ng.

Mi dng ca phn [operating systems] trong tp tin boot.ini xc nh mt phng n (mt HH) khi ng v c vit theo mu sau: a_ch_trnh_khi_ng_th_hai=tn_gi_ca_phng_n a ch ca trnh khi ng th hai c th l mt phn vng c th no ca a cng nh tp tin khi ng. Di y l mt v d tp tin boot.ini:

22

Ci t HH Linux trn cng my tnh vi Windows

[operating systems] multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4" C:\="Microsoft Windows" C:\BOOTSECT.LNX="Linux"

Nu ngi dng chn NT, th s khi ng theo a ch phn vng c ch trn dng u tin. Trn dng tng ng vi phng n Microsoft Windows, ch a ra C:\, v tn ca tp tin khi ng c ly theo mc nh: bootsect.dos. Tp tin c np vo b nh v qu trnh khi ng c tip tc ging nh khi bn ghi khi ng c np bi m chng trnh t MBR. i vi vic khi ng cc h thng khc, c th s dng cch . Ch cn thm vo boot.ini cc dng cha lin kt n tp tin khi ng khc. Khi chn cc dng ny s khi ng HH tng ng. Trong v d trn Linux cng c khi ng theo cc ny. Trong tp tin C:\BOOTSECT.LNX cn ghi ni dung ca bn ghi khi ng, to bi Linux (ni ng hn LILO, trnh khi ng tiu chun ca Linux).

2.3.4

Vn vi cc a ln

Trn MS-DOS v cc phin bn u tin ca Windows truy cp ti a (trong c c bc khi ng u tin ca HH) c t chc qua Int 13 (Int 13h) ca BIOS. Khi ny s dng s nh a ch sector trn a trn c s C/H/S (xem trn). Chnh xc hn:
AH chn thao tc; CH 8 bit nh hn ca s cylinder; CL 7-6 bit tng ng bit ln ca s cylinder, 5-0 tng ng s sector; DH s ca u c; DL s ca a(80h hay 81h).

(Cn lu rng vic nh s cylinder vt l v rnh thng bt u t 0, cn sector trn rnh nh s bt u t 1). Tuy nhin trn thc t s u c khng qu 16, cn s sector trn rnh khng qu 63, v d c dng 10 bit ch ra cylinder, BIOS vn khng th lm vic vi a dung lng ln hn 1024*63*16*512 = 528 Mbyte. vt qua hn ch ny, ngi ta p dng nhiu cch lu c khc nhau. V d, Extended CHS (ECHS) hay Large disk support (i khi cn gi l Large) s dng ba bit cha dng n ca s th t u c tng s cylinder. Cch ny cho pehsp s dng cu trc hnh hc gi mo ca a vi 1024 cylinder, 128 u c v 63 sector/rnh. Bin i Extended CHS thnh a ch CHS thc (c th cha n 8192 cylinder) c BIOS thc hin. Cch ny cho php lm vic vi a c dung lng n 8192*16*63*512 = 4 227 858 432 byte hay 4,2 Gbyte. Nhng cc nh pht trin cng ngy cng tng mt ghi ca a, s a v s rnh, v cn pht minh ra cc phng php khc tng dung lng a. V d, s sector trn rnh khng cn c nh m tr thnh khc nhau trn cc rnh

2.4 La chn trnh khi ng

23

khc nhau (trn cc rnh nm gn ra ngoi ca a, di hn, s sector c tng ln). Kt qu l b ba s C/H/S khng cn phn nh ng cu trc hnh hc ca a, v cc phin bn BIOS c khng th h tr truy cp ti ton b khng gian a. Khi ngi ta ngh ra phng php khc lm vic vi cc a ln qua Int 13h - nh a ch cc khi theo ng thng (Linear Block Addressing hay LBA). Khng i su vo chi tit, c th ni rng tt c sector trn a c nh s mt cch tun t, bt u t sector u tin trn rnh s 0 ca cylinder s 0. Thay vo ch a ch CHS mi sector nhn c mt a ch lgc s th t ca sector trong tng s tt c sector. Vic nh s sector lgc bt u t 0, trong sector s 0 cha bn ghi khi ng chnh (MBR). Trong Setup BIOS h tr bin i s th t theo ng thng thnh a ch CHS c dng H tr LBA. Nh vy, trong cc phin bn BIOS mi thng c la chn vi ba phng n: Large, LBA, v Normal (phng n cui cng c ngha l khng thc hin bin i a ch). Tuy nhin trong ch LBA vic s dng a vt l vn c thc hin qua Int 13h, m Int 13h vn s dng b 3D (C,H,S). V nguyn nhn ny xut hin hn ch ln dung lng ca a: BIOS, v theo , MS-DOS v cc phin bn Windows u tin khng th nh a ch cc a c dung lng ln hn 8,4 Gbyte. Cn ch rng hn ch ni trn ch p dng vi cc a c giao din IDE. Trong cc controller ca a SCSI, s ca sector c chuyn vo cc lnh SCSI, v sau t a tm ra v tr cn thit, v th hn ch ln dung lng a khng xut hin. Mt ln na mun nhc li rng, tt c nhng hn ch ni trn ch c ngha trong giai on khi ng HH. Bi v Linux v cc phin bn Windows mi nht khi lm vic vi a khng cn s dng Int 13 ca BIOS, m s dng driver ring ca mnh. Nhng trc khi c th s dng driver ca mnh, h thng phi c np. V th trong giai on khi ng u tin bt k h thng no cng cn s dng BIOS. iu ny hn ch vic t nhiu h thng ra ngoi vng 8 Gbyte a u tin: chng khng th khi ng t , mc d sau khi khi ng th c th lm vic vi cc a c dung lng ln hn nhiu. c th hiu cch thot khi nhng hn ch ny, chng ta cn mt cht kin thc v qu trnh khi ng ca HH Linux.

2.4
2.4.1

La chn trnh khi ng


Trnh khi ng GRUB1

GRUB (GRand Unified Bootloader) trnh khi ng ht sc mnh c kh nng khi ng rt nhiu HH min ph cng nh HH thng mi. GRUB c Erich Boleyn vit vo nm 1995 khi ng h thng GNU Mach, v khng th s dng nhng trnh khi ng khc. Sau vo nm 1999 Gordon Matzigkeit v Yoshinori K. Okuji chuyn GRUB thnh mt gi chng trnh GNU, a chng trnh ny thnh mt phn mm m ngun m. Mc d mi ra i v s phin bn
1

Phn v GRUB ny do ngi dch vit.

24

Ci t HH Linux trn cng my tnh vi Windows

cn rt nh2 nhng y l s la chn tt i vi phn ln ngi dng my tnh c nhn. Nu khng c nhu cu c bit no th bn nn chn trnh khi ng ny. Cc bn phn phi Linux ln (Debian, SuSE, Fedora,. . . ) cng chuyn sang s dng GRUB lm la chn theo mc nh. Mt trong nhng tnh nng quan trng ca GRUB l tnh mm do. GRUB c th hiu cc h thng tp tin v nh dng thc thi ca nhn, v th bn c th np HH theo cch a thch. Ngoi ra, nu khng mun dng giao din dng lnh, th bn c th ci t v s dng giao din thc n v thay i giao din thc n theo mong mun ca mnh. Mt im mnh khc ca GRUB l grub shell c th chy khi bt u khi ng hoc sau khi khi ng xong h thng. Bng grub shell bn c th gi lp (emulate) trnh khi ng ny v ci t GRUB. By gi chng ta xem xt ngn gn v tn gi thit b dng trong GRUB, v c php thit b trong trnh khi ng ny c khc mt cht so vi nhng g m bn thy trn nhng h thng ca mnh. Bn cn hiu c php ny bit cch ch ra mt a hay phn vng no . V d mt c php l: (fd0) Trc tin cn ni GRUB yu cu tt c cc tn thit b phi t trong ngoc ( v ). Phn fd c ngha l a mm. S 0 ch ra s th t ca , m bt u t 0. V d 2: (hd0,1) y hd c ngha l cng. S nguyn 0 u tin cho bit s th t ca , tc l cng th nht. S nguyn th hai (1) cho bit s th t ca phn vng (chng ta khng xem xt cc HH khc Linux). Xin nhc li mt ln na l cc s m u bt u t s khng 0. Trong trng hp ny y l phn vng th hai ca cng th nht. GRUB s dng mt phn vng ca a ch khng phi ton b a. V d 3: (hd0,4) y l phn vng m rng (extended partition) th nht ca a cng th nht. Ch rng cc phn vng m rng c m bt u t 4 khng ph thuc vo s phn vng chnh (primary partition) thc t c trn a. Cn ch thm l GRUB khng phn bit IDE v SCSI. N m s th t bt u t 0 khng ph thuc vo dng a. Lm sao ch ra mt tp tin? Hy xem v d sau y: (hd0,0)/vmlinuz Dng ny ch ra tp tin vmlinuz nm trn phn vng u tin ca cng u tin. Ht sc n gin! Thng tin trong phn ny s gip bn hiu c cu hnh ca GRUB s ni n sp ti y.
2

hy so snh s phin bn ca GRUB v LILO

2.4 La chn trnh khi ng

25

2.4.2

Trnh khi ng LILO

Trnh khi ng LILO c vit bi Werner Almesberber. LILO c th khi ng nhn Linux t a mm, a cng, v cng c th khi ng cc h iu hnh khc: PC/MS-DOS, DR DOS, OS/2, Windows 95/98, Windows NT/2000/XP, 386BSD, SCO UNIX, Unixware v.v. . . LILO cho php chn n 16 h iu hnh khc nhau khi ng. LILO khng phi l chng trnh n l m l mt b gm nhiu chng trnh: trnh khi ng, cc chng trnh s dng ci t v cu hnh trnh khi ng, v cc tp tin phc v:
chng trnh /sbin/lilo, chy di Linux, phc v ghi tt c thng tin cn thit trong giai on khi ng vo cc ch tng ng. Cn chy chng trnh ny sau mi ln c thay i trong nhn hay trong tp tin cu hnh LILO; cc tp tin phc v, cn cho LILO trong thi gian khi ng. Nhng tp tin ny thng nm trong th mc /boot. Quan trng nht trong s chng l bn thn trnh khi ng (xem pha di) v tp tin map (/boot/map); trong tp tin ny c ch ra v tr ca nhn. Mt tp tin quan trng khc tp tin cu hnh LILO; thng c tn /etc/lilo.conf; trnh khi ng y l phn LILO c np vo b nh u tin qua Int ca BIOS; trnh khi ng np nhn Linux hay sector khi ng ca h iu hnh khc. Trnh khi ng gm c hai phn. Phn th nht c ghi vo sector khi ng v phc v np phn th hai, c kch thc ln hn rt nhiu. C hai phn thng c ghi trn a trong tp tin /boot/boot.b.

Cn nh rng, nh dng ca sector khi ng to ra bi LILO khc vi nh dng MBR ca DOS. V th nu ghi sector khi ng LILO vo MBR, th cc h iu hnh ci ca Microsoft s ngng khi ng (nu nh khng c cc bin php b sung). Sector khi ng ca LILO c th c thit k s dng nh sector khi ng ca phn vng, trong c ch cho bng phn vng. Sector khi ng ca LILO trong khi ci t c th t vo nhng ch sau:
sector khi ng ca a mm trong nh dng Linux (/dev/fd0, . . . ); MBR ca a cng u tin (/dev/hda, /dev/sda, . . . ); sector khi ng ca phn vng chnh vi h thng tp tin Linux trn a cng u tin (/dev/hda1, /dev/hda2, . . . ); sector khi ng ca phn vng lgc trong phn vng m rng a cng u tin (/dev/hda5, . . . ). S tht l phn ln chng trnh dng fdisk khng ra kh nng khi ng khi ng t phn vng m rng v t chi vic kch hot phn vng ny. V vy trong thnh phn LILO c cha mt chng trnh c bit (activate) cho php vt qua hn ch ny. Tuy nhin chng trnh fdisk ca bn phn phi Linux h tr kh nng kch hot phn vng m rng. Cn s dng ty chn -b hoc bin BOOT.

26

Ci t HH Linux trn cng my tnh vi Windows Sector khi ng ca LILO khng th t vo cc ch sau:
sector khi ng ca a mm hay phn vng chnh, vi nh dng h thng tp tin khc Linux; trong phn vng swap ca Linux; trn a cng th hai.

Ngoi ra, cn nh rng, LILO trong thi gian khi ng cn nhng tp tin sau:
/boot/boot.b; /boot/map (to ra bi lnh /sbin/lilo); tt c phin bn nhn khi ng (nu bn c chn phin bn nhn khi khi ng); sector khi ng ca cc h iu hnh khc m bn c mun khi ng qua LILO; tp tin cha cc thng bo a ra khi khi ng (nu c xc nh).

Nh vy, sector khi ng LILO cng nh nhng tp tin lit k (trong s c cc tp tin bn c s ci t sau ny) cn nm trong phm vi 1024 cylinder u tin ca a cng, bi v chng cn c truy cp qua BIOS. Xem phn ni v hn ch ca BIOS trn. Bt u t phin bn 21, LILO a ra mn hnh trnh n (thc n) cho php chn h thng khi ng (trc y cn nhn phm Tab gi trnh n ny).

2.4.3

Cc trnh khi ng khc

Ngoi GRUB v LILO khi ng Linux c th khi ng cc trnh khi ng khc.


Nu nh trc khi ci t Linux c HH Windows NT/2000/XP, th trnh khi ng bn c c th s dng l OS Loader ca NT. So snh vi LILO th trnh khi ng OS Loader c t nht hai u th. Th nht, tt c cu hnh c khng b mt (chng ta c th chn khi ng Windows hay Linux theo la chn), v th hai, c th ci t Linux ln a m LILO khng th khi ng, v d, a th hai trn controller th hai (Secondary Slave). Nu nh trc khi ci t Linux bn c ch c HH Windows 95 hay Windows 98 v khng c Windows NT/2000 hay XP, th OS Loader khng c ci t. V nu nh v mt l do no bn c khng mun ci t LILO, th c th s ng chng trnh khi ng loadlin.exe (thng i km vi bn phn phi Linux);

2.4 La chn trnh khi ng

27

Thi gian gn y trong thnh phn bn phn phi Linux thng c chng trnh khi ng GRUB. Trong thnh phn OS/2 ca cng ty IBM c chng trnh khi ng Boot Manager. Trong rt nhiu hng dn ngi ta khuyn dng chng trnh ny ti chc khi ng nhiu HH. Trong cc ngun thng tin khc nhau cn nhc n chng trnh System Commander; Thm mt trnh khi ng khc c trong thnh phn gi PartitionMagic ca cng ty Power Quest. Chng ta s ni v chng trnh ny trong phn nh tip theo.

Ngoi ra tc gi cn thy ni n mt lot cc trnh khi ng khc (mt s c th tm thy trong th mc /public/ftp/pub/Linux/system/boot/loaders trn trang ftp://metalab.unc.edu/. Nhng v tc gi khng s dng nhng chng trnh ny, nn khng th ni c th cch s dng chng. V tt c nhng li khuyn dng sau ca tc gi s da trn vic s dng LILO, NT Loader v loadlin.exe. Nu nh c mun ci t chng trnh khi ng khc, th bn c cn c hng dn ci t v s dng ca n.

2.4.4

Cc phng n khi ng

Nh vy, theo kin ca tc gi c cc phng n khi ng sau:


Nu trn my ch c mt h iu hnh Linux duy nht, hy dng GRUB. Nu ci t Windows NT hay Windows 2000/XP, th hy s dng GRUB. Nu c Windows 95 hay Windows 98 trn FAT16, v bn c khng mun ci t chng trnh khi ng no khc, th c th s dng GRUB hoc LILO, hoc u tin chy DOS v sau khi ng Linux nh chng trnh loadlin.exe (hay mt chng trnh tng t, c vi chng trnh nh vy, nhng chng ta s khng xt n). Nu ci t Windows 95 OSR2 hay Windows 98 trn FAT32, v bn c khng mun ci t thm chng trnh khi ng, th cn s dng loadlin.exe. Rt nhiu HOWTO khng nh rng khng cn s ng LILO, nu nh phn vng kch hot c nh dng FAT32, mc d tc gi khng r nguyn nhn. Tuy nhin th nghim khi ng Linux qua NT Loader, ci t trn phn vng FAT32, ca tc gi kt thc khng thnh cng. V th, trong trng hp ny tc gi phi s dng chng trnh loadlin.exe. Chng trnh ny hon thnh tt nhim v, v to cho tc gi mt n tng tt, v th tc gi khuyn bn c s dng loadlin.exe khi ng Linux.

Trong nhng phn tip theo tc gi s cho bit cch ci t Linux, s dng tt c bn phng n khi ng: qua trnh khi ng NT Loader, trnh khi ng GRUB, trnh khi ng LILO v trnh khi ng loadlin.exe. Tuy nhin trc khi ci t trnh khi ng cn chun b cc phn vng trn a, hay t nht l ngh cch t chc chng.

28

Ci t HH Linux trn cng my tnh vi Windows

2.5
2.5.1

Chun b cc phn vng trn a


Li khuyn khi to phn vng

a ra li khuyn y khng phi l vic d dng, v phn vng a phc thuc rt nhiu vo thch v nhu cu ca ch nhn a. Nhng cng xin th a ra vi ngh sau. Tc gi s t tn a v phn vng theo tiu chun ca Linux, tc l /dev/hda, /dev/hdb, v.v. . . i vi a v /dev/hda1, /dev/hda2, v.v. . . i vi cc phn vng. Vic phn chia a thnh cc phn vng l cn thit, bi v Windows v Linux s dng cc cch lu tr thng tin trn a v sau c chng t a khc nhau. Chnh v th tt hn ht l dnh cho mi h iu hnh mt (hoc thm ch mt vi nh chng ta s thy di) phn vng ring. u tin chng ta hy xem xt mt trng hp n gin dung lng a ca bn c khng vt qu 8,4 Gbyte (ni chnh xc hn s cylinder khng vt qu 1024). Trong trng hp ny mi th u n gin: bn c ch vic chia a lm sao ch cho h iu hnh s ci t. C th s dng d liu cho bit kch thc a nh nht cn thit ci t h iu hnh vi cu hnh c bn trong bng 2.2. Bng 2.2: Nhu cu s dng khng gian a ca HH Yu cu 100 Mbyte 200 Mbyte 200 Mbyte 700 Mbyte 6.2 (Worksta- 700 Mbyte

H iu hnh Windows 95 Windows 98 Windows NT Windows 2000 Linux Red Hat tion vi KDE)

Tuy nhin xin hy nh rng, khng nhng phi tnh kch thc cc tp tin ca bn thn h iu hnh, m cn phi tnh c kch thc ca cc chng trnh bn c d tnh chy. V cn phi dnh mt phn d tr khng nh cho cc chng trnh s ci t sau ny (khng th trnh khi!). Hy tnh rng, 700 Mbyte dnh cho Linux trong bng ni trn ch dnh cho cc chng trnh ci t cng vi Linux theo mc nh, trong s c, v d, chng trnh son tho rt mnh Lyx. i vi Windows cng tng t nh vy. Theo kinh nghim ca tc gi th lm vic vi Windows 95/98, Windows NT v Linux cc phn vng vi kch thc 800-1000 Mbyte l (tt nhin, nu bn c khng ci t cc gi chng trnh ln, nh OpenOffice.Org), cn i vi Windows 200 th cn phn vng ln hn. By gi chng ta s xem xt vn chia cc phn vng cho Linux. y khng th ch chia mt phn vng. Th nht, cn chia mt phn vng swap ring bit cho Linux. Khi xc nh dung lng ca phn vng swap Linux cn tnh n nhng yu t sau:
Trong Linux, RAM v khng gian swap hp li to thnh b nh o chung. V d, nu bn c c 256 MByte RAM v 128 Mbyte khng gian swap, th s c 384 Mbyte b nh o.

2.5 Chun b cc phn vng trn a

29

lm vic vi Linux cn t nht 16 Mbyte b nh o, v th nu bn c ch c 4 Mbyte RAM, th cn phn vng swap khng nh hn 12 Mbyte. Kch thc ca phn vng swap c th ln bao nhiu ty thch, tuy nhin khng cn cu hnh qu nhiu nu khng cn thit. Thng thng ch cn dng swap khi my t b nh RAM hoc chy my ch vi nhiu ng dng nng. Trong tt c mi trng hp tt nht trnh dng swap v n chm hn RAM nhiu.3 Khi tnh kch thc ca khng gian swapping, cn nh rng kch thc qu ln c th l v ch. Trn my tnh vi 16 Mbyte RAM khi ci t Linux vi cu hnh chun v cc chng trnh ng dng chun th 48 Mbyte khng gian swapping l . Cn nu ci t Linux vi cu hnh nh nht, th khng cn n khng gian swap. Tt nhin, kch thc chnh xc ca khng gian swap ph thuc ln vo chng trnh s c ci t.

Ni chung, ch nn suy ngh v vn dung lng ca phn vng swap khi c mt a nh v t b nh RAM. Trong trng hp ngc li hy phn chia tng s dung lng ca b nh o (gm RAM v phn vng swap) khng nh hn 128 Mbyte. Cn nu nh bn c c 128 Mbyte RAM hay nhiu hn, th phn vng ny c th khng cn thit. Tt c cc phn cn li ca Linux v cc chng trnh h tr theo nguyn tc c th t vo mt phn vng. Tuy nhin, vic t h thng tp tin Linux ln vi phn vng ring r l c ngha. V d, c nh chuyn gia khuyn nn dnh cho h thng tp tin Linux ba phn vng (nu tnh c swap th thnh 4). Phn vng th nht (theo kin c nhn tc gi, 1 Gbyte l ) s cha h thng tp tin gc (/). Phn vng th hai dnh cho th mc /home. Cn phn vng th ba c gn vo th mc /usr. Vic phn chia nh vy da trn nhng l l sau. D HH Linux c n nh v ng tin cy n u, th thnh thong cng cn ci t li. V d, bn c mun cp nht phin bn mi ca bn phn phi, hoc v t kinh nghim s dng nn lm hng tp tin h thng quan trng, hoc n gin l mun ci t mt bn phn phi khc. Nu nh tt c c ci t vo mt phn vng, th khi ci t li nhng d liu lm ra v ghi nh trong th mc c nhn s b mt (nu khng c bn sao chp). Ngoi ra, s b mt c nhng chng trnh ci t m ngun, hay ci bng phng php khc. Phn ln nhng gi chng trnh ny c ci vo th mc /usr. Nu dnh cho th mc ny mt phn vng ring v khi ci t khng nh dng li chng, th nhng chng trnh ni trn s c gi li v c th s lm vic (rt c th cn vi cu hnh nh) sau khi ci t li h thng. Trong tiu chun v h thng tp tin ca Linux FHS (c th xin xem chng ??) cng c li khuyn v vic t th mc /usr ln mt phn vng ring. Theo tc gi thy, nhng kin ni trn bn c t tm ra phng n phn chia a ca mnh, trong trng hp ch c mt a nh. By gi chng ta xem xt trng hp a vi s cylinder ln hn 1024. T nhng g ni n phn trc (hn ch dung lng a cng), cn t chng trnh khi ng trong phm vi 1024 cylinder u tin. Nhn tin, NT Loader khng nht thit phi t vo phn vng NTFS, cng nh khng nht
3

Xin cm n bc Tony L v mc ny

30

Ci t HH Linux trn cng my tnh vi Windows

thit phi t vo phn vng cha cc tp tin khc ca HH. Nh ni trn, i vi Linux c th t th mc gc cng vi th mc con /boot vo cc cylinder thp (trong vng 1024 u tin), cn cc th mc khc ch no ty thch. Nh vy trong trng hp ny, nhng ngh ca tc gi cho ra bng tng kt sau:
phn khi ng ca tt c cc h thng Microsoft t vo phn vng chnh u tin ca a, vi nh dng FAT16 (DOS); phn vng chnh tip theo dnh cho th mc gc (/), kch thc khong 1 Gbyte; phn vng chnh th ba dnh cho swap ca Linux (li khuyn v kch thc ca phn vng ny xem trn); phn cn li ca a t thnh phn vng m rng; trong phn vng m rng to cc phn vng lgc cho mi HH s ci t: Windows 98, Windows NT/2000/XP, v ng thi cho cc h thng tp tin /home v /usr ca HH Linux (trong /home s t cc tp tin ring ca ngi dng, cn trong /usr chng trnh s ci t).

Tt nhin, nu nh bn c ch c Windows 95 vi FAT16, th c th Windows trn phn vng u tin. Nu nh trn my ci t Windows NT hay c FAT32, th mt phn vng FAT16 cng khng tha. Th nht, k c trong trng hp h thng c vn , bn c c th khi ng t a mm DOS (tm thi khi cha lm quen vi Linux mt cch tng tn) v thy c rng a cng lm vic bnh thng. Th hai, h thng tp tin FAT16 c h tr trn mi HH, trong c Linux, v th phn vng ny c th phc v cho vic trao i tp tin gia cc h thng. Nhng khng nn phn vng ny ln, v FAT16 s dng khng gian a rt khng hp l. Chnh v vy hy dnh cho phn vng ny khong 256 hoc 512 Mbyte. Nhng li khuyn ny a ra vi gi thit rng, bn c ch c mt a cng. Nu nh bn c c 2, th vn s dng c nhng li khuyn ny, ch c iu phn vng swap tt hn t trn a khc vi a dnh cho Linux. Ngi ta ni rng nh vy tng tc lm vic trong Linux (cng d hiu v u c t phi chy hn).

2.5.2

Chng trnh phn chia a

Sau khi hon thnh kt hoch chia a, cn la chn cng c a k hoch ny thnh hin thc. Chng trnh phn chia a c bit n nhiu nht l fdisk; trn mi h iu hnh u c phin bn ring ca chng trnh ny. V khng cn g hn ngoi chng trnh ny, nu nh phn chia a trng, khng cha bt k d liu no. Nhng chng ta ang xem xt trng hp c HH no trn a v cn phn chia a m khng lm mt thng tin. fdisk khng thch hp cho nhng mc ch nh vy. Trong thnh phn cc bn phn phi Red Hat v BlackCat (rt c th trong cc bn phn phi khc) c chng trnh fips, phc v cho phn chia a.

2.6 Windows NT v Linux: khi ng qua NT OS Loader

31

Tuy nhin, theo kin ca ngi dng th khng nn s dng chng trnh ny. V th li khuyn ca tc gi vi bn c, nhng ngi dng Linux mi nu nh mun phn chia li a m khng lm mt thng tin, th hy tm chng trnh Partition Magic ca cng ty Power Quest (http://www.powerquest.com) v s dng chng trnh ny. Th nht, chng trnh ny cho php phn chia li a m khng lm mt thng tin (tc l, tt c nhng ci t v cu hnh trc s c ghi li). Khi ny, khng ch to c phn vng mi t ch trng trn a, m cn c th di chuyn cc phn vng c theo mun. Th hai, chng trnh ny (thm ch trong phin bn dnh cho DOS) cung cp mt giao din ha d s dng c h tr chut, v mi thao tc cng nh thay i u thy r rng. iu ny rt quan trng vi ngi dng mi. Khi to phn vng cn khng cho ranh gii gia cc phn vng ct ln nhau. Tc gi cho rng, nhng thng tin a bn c lp k hoch v thc hin vic phn chia a thnh cc phn vng. V th tip theo chng ta s xem xt cc phng n ci t hai HH trn mt my tnh.

2.6

Windows NT v Linux: khi ng qua NT OS Loader

Trong phn ny, khi ni v Windows NT xin ngm hiu c Windows 2000 v NT, v quan h ca chng i vi vic ci t Linux hon ton ging nhau. Chng ta gi thit l Windows NT c ci vo phn vng /dev/hda2 (nu nh bn c nh, /dev/hda1 s dnh cho phn vng FAT16). Nu HH Windows NT c ci t, ngha l trnh khi ng OS Loader cng c ci t. V nh th c th s dng chng trnh ny khi ng Linux. Tc gi hy vng rng bn c sao lu nhng thng tin c gi tr ca mnh. Cc bc ci t c th m t nh sau: 1. Nu nh bn c cha ci t Linux bao gi, th trc khi bt u cn chun b a mm khi ng v phc hi Windows NT. to a mm khi ng ch cn nh dng li a mm, ri sao chp ln cc tp tin ntldr, ntdetect.com v boot.ini t th mc gc ca a khi ng NT. Chng trnh to a phc hi Windows 2000/XP c th chy t trnh n h thng (lnh Backup trong Start/Program/Accessories). 2. Dng chng trnh Partition Magic ly mt phn a trng v t to ra phn vng vi dng ext2(3) (h thng tp tin Linux) v phn vng swap. Cch tnh kch thc ca chng ni trn. 3. Ci t Linux theo ch dn ca bn phn phi. Trong khi ci t cn ch n nhng im sau:
th nht, trong qu trnh ci t nht nh phi to ra cc a mm khi ng Linux. Tc l cn tr li Yes, make a BOOT DISK (hay tng t th, ty thuc vo bn phn phi) khi c hi c to a mm khi ng hay khng. a mm ny s c dng n sau. Ngoi ra, c th s dng a mm ny khi ng Linux. y cng

32

Ci t HH Linux trn cng my tnh vi Windows l mt phng n khi ng, v hn na khc vi a mm khi ng DOS, sau khi khi ng h thng khng cn yu cu a mm na, c th b n ra khi , s dng c cc a mm khc. Tuy nhin cch khi ng ny cng c iu tin, v th khng nn s dng thng xuyn. Ch s dng trong trng hp bt c d. a mm ny cn cn thit cho cu hnh khi ng nhiu HH.
th hai, khi ci t Linux cn ci LILO vo sector u tin ca phn vng dnh cho th mc gc (/) ca Linux, ch khng phi vo sector khi ng chnh ca a (MBR). Chng ta gi thit Linux c ci vo phn vng /dev/hda3. Nh vy LILO s c ci vo sector u tin ca /dev/hda3

Theo nguyn tc, nu nh bn c ci LILO vo MBR, th khng phi mi th hng ht. Kt qu cui cng (khi ng qua NT Loader) vn c th t c nhng cn b ra mt cht cng sc. Vn ch, nh dng MBR to bi LILO v Windows (DOS) khc nhau. V th nu bn c ci LILO vo MBR, th cu phc hi li MBR ca Windows. Tc gi cng s ni cch phc hi, nhng tt hn ht l bn c ci LILO ngay lp tc vo sector u tin ca phn vng ci Linux. 4. Sau khi ci t xong, khi ng Linux bng a mm (nu nh bn c ci LILO vo phn vng ca Linux v khng ng g n MBR, th y l kh nng duy nht). 5. Sao chp sector khi ng ca Linux vo mt tp tin; tp tin ny s cn trnh khi ng Windows NT/2000 c th khi ng Linux. Vic sao chp thc hin nh sau: u tin gn mt a mm trng (mi mua th cng tt), [root]# mount -t vfat /dev/fd0 /mnt/floppy chuyn vo th mc /mnt/floppy [root]# cd /mnt/floppy v thc hin cu lnh
[root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1

ghi ni dung sector khi ng ca a /dev/hda3 vo tp tin /mnt/floppy/bootsect.lnx4 6. Tip theo cn khi ng li vo Windows NT, bng cu lnh: [root]# shutdown -h now
Ghi ch: nu a C: (/dev/hda1) c nh dng FAT, th c th to tp tin bootsect.lnx trong th mc gc ca a C:. Tc gi khng bit (cha th) c th khi ng khng cn a mm khng, nu phn vng chnh u tin c nh dng NTFS. Tuy nhin y cng khng c vn g, ch cn sao chp sector khi ng qua a mm nh ang trnh by. Tm thi nhn Linux cn cha h tr tt vic ghi ln phn vng NTFS.
4

2.6 Windows NT v Linux: khi ng qua NT OS Loader

33

V MBR cha c g thay i, nn Windows NT s khi ng. Trong NT cn sao chp tp tin bootsect.lnx vo th mc gc ca a C:, hay chnh xc hn l vo th mc gc ca phn vng m t khi ng Windows NT. y c th l phn vng FAT16 hay phn vng NTFS. c im nhn ra phn vng ny l hai tp tin ntldr v boot.init cha trong (nhng tp tin ny c th n!). Tp tin bootsect.lnx c th t thuc tnh ch c (read-only). 7. Sau tm tp tin boot.ini v thm vo dng sau: C:\bootsect.lnx="LINUX" (tt nhin, trong du ngoc kp bn c c th t tn bt k.) 8. Vic cn li l khi ng li my tnh mt ln na, v trong trnh n chn h iu hnh s c LINUX. Nu chn LINUX, th LILO s c chy v sau n (LILO) s np Linux. Cn by gi chng ta s xem xt trng hp bn c (do v tnh hay c ) ci t LILO vo bn ghi khi ng chnh ca a (Master Boot Record, MBR). Trong trng hp ny bn ghi khi ng Windows NT (hay 2000) s b xa, v vic khi ng Windows NT (bc th 6 trn) l khng th. Nu nh bn c vn cn mun s dng trnh khi ng OS Loader ca NT, ch khng mun dng LILO, th nhng bc trn c thay i mt cht: thay cho bc th 6 cn lm cc thao tc sau. 1. Khi ng Windows NT t a mm khi ng ( to trc khi ci t Linux, nu khng c th bn c cn tm mt my khc ang chy Windows NT ri to). Trong trnh n (thc n) ca trnh khi ng cn chn lnh Recover, ri chn ch Command mode. Sau ng nhp vo ti khon nh qun tr (administrator). 2. Phc hi li bn ghi khi ng chnh ca a. S dng cu lnh fdisk /mbr. Tc gi dng lnh ny thnh cng, mc d trong mt s bi bo ni cch phc hi MBR nh vy khng phi lc no cng lm vic. Trong Windows 2000 c cc lnh chuyn dng fixboot v fixmbr (chy t console phc hi h thng). Chy hai lnh ny theo th t ch ra. Sau Windows 2000 s khi ng bnh thng. 3. Khi ng li my tnh t a mm khi ng Linux v ng nhp vo h thng vi quyn ngi dng root. 4. Nhp lnh cd /etc v m tp tin lilo.conf. u tp tin ny c lin kt n phn vng khi ng theo mc nh, v d, /dev/hda. 5. Dng bt k trnh son tho no, v d, CoolEdit ca Midnight Commander, thay th gi tr ny thnh phn vng ci Linux ln (chnh xc hn l thnh phn vng c gn nh gc (/) ca Linux). Nu Linux c ci vo phn vng /dev/hda3, th cn ghi ci , tc l thay th /dev/hda thnh /dev/hda3. Nu nh bn c khng nh ci Linux vo u, th hy chy cu lnh mount v tm kt qu tng t nh sau5 :
5

c ngha l tm phn vng gn vo th mc gc /, trong v d ny l /dev/hda3

34

Ci t HH Linux trn cng my tnh vi Windows /dev/hda3 on / type reiserfs (rw) 6. Chy lnh /sbin/lilo ghi trnh khi ng vo phn vng /dev/hda3 (cn chy lnh lilo khng c tham s). S c cnh bo v vic phn vng khng phi l u tin trn a. y chnh l iu chng ta cn, bn ghi khi ng ca Windows c gi nguyn vn. 7. Thc hin cc bc 6-8 nh trn.

D dng on ra rng, quy trnh phc tp vi hai ln khi ng li ch chuyn sector khi ng Linux t MBR vo sector u tin ca phn vng dnh cho Linux, v phc hi MBR ca Windows. Qu trnh ci t Linux kt thc y. Bn c c th chn HH s khi ng v iu khin my tnh ca mnh.

2.7

S dng trnh khi ng GRUB6

Nh ni trong phn la chn chng trnh khi ng, nu trn my ci Windows 98 vi h thng tp tin FAT16, th la chn tt hn cho trnh khi ng l chng trnh c trong thnh phn ca mi bn phn phi HH Linux GRUB (GRand Unified Bootloader).

2.7.1

Ci t GRUB

Cch d nht c th ci t trnh khi ng GRUB l chn dng trnh khi ng ny trong qu trnh ci t h thng Linux ca bn. Trong nhng phin bn mi ca cc bn phn phi Linux mi khi ny c th chn cu hnh cho nhng h iu hnh c trn my. Mt s bn phn phi, v d Xandros cn t ng tm thy nhng h iu hnh c ny v thm chng vo tp tin cu hnh ca GRUB. Nh sau khi ci t bn c th chn khi ng Linux hoc h iu hnh (thng l Windows) c. Mc d vic t ng cu hnh ny ht sc thun tin, nhng s c ch nu bn bit c cch cu hnh Linux x l nhng li c th xy ra v hn th na bit cch cu hnh khi ng h iu hnh mong mun khi khng c t ng cu hnh. Chng ta s xem xt cu hnh GRUB trong phn tip theo.

2.7.2

Cu hnh GRUB

GRUB c mt giao din trnh n t ngi dng c th chn mt mc (mt h iu hnh) bng cc phm mi tn ri nhn <Enter> khi ng. dng c trnh n , bn cn mt tp tin cu hnh menu.lst nm trong th mc khi ng /boot. Thng thng tp tin ny c to ra khi ci t. Hy xem v d mt tp tin nh vy di y:
# GRUB example configuration file on the teppis openSUSE system. # Modified by YaST2. Last modification on Sun Apr 2 22:22:11 MSD 2006
6

Phn v GRUB ny do ngi dch vit

2.7 S dng trnh khi ng GRUB

35

color white/blue black/light-gray default 0 timeout 8 ###Dont change this comment - YaST2 identifier: Original name:linux### title SUSE LINUX 9.3 kernel (hd0,0)/vmlinuz root=/dev/hda5 vga=0x31a selinux=0 splash=silent resume=/dev/hda7 showopts initrd (hd0,0)/initrd ###Dont change this comment - YaST2 identifier: Original name: windows### title Windows map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd1,0) makeactive chainloader +1 ###Dont change this comment - YaST2 identifier: Original name: xen### title XEN kernel (hd0,0)/xen.gz dom0_mem=196608 module (hd0,0)/vmlinuz-xen root=/dev/hda5 vga=0x31a selinux=0 splash=silent resume=/dev/hda7 showopts module (hd0,0)/initrd-xen ###Dont change this comment - YaST2 identifier: Original name: floppy### title Floppy root (fd0) chainloader +1

Tc gi ngh rng cn gii thch c th hn mt cht v tp tin ny. C th bn on ra nhng dng bt u bng k t # l nhng dng ch thch. Bn c th ghi bt k cu g mong mun vo dng ny v khng nh hng g n cng vic ca chng trnh. Ngoi dng ch thch GRUB cng b qua nhng dng trng. u tp tin l nhng thit lp chung (global options), nhng ty chn c lin quan n giao din ca trnh n. Chng c t trc cc mc bt u bng title. Ty chn default ch ra h iu hnh khi ng theo mc nh (nu khng ng vo bn phm khi khi ng). S 0 ch ra l h iu hnh th nht trong danh sch (tc l SuSE Linux 9.3). Hy nh li, trong GRUB vic nh s c bt u t 0 ch khng phi 1. Ty chn timeout cho bit GRUB s khi ng mt cch t ng sau khong thi gian ch ra (tnh theo giy) nu khng nhn phm no. Trong trng hp ny l sau 8 giy. Ty chn color dng chn mu cho trnh n (hy th n!). Sau nhng thit lp chung l phn thit lp cho tng h iu hnh c th. Mi phn u bt u bng lnh title theo sau l tn s hin th trong trnh n. V v lnh ny hin th tham s mt cch nguyn vn, nn bn c th nhp bt k th g vo pha sau. Nh bn thy trong tp tin cu hnh trn, phn u tin l khi ng SUSE LINUX 9.3, phn th hai Windows, v.v. . . Khc vi trng hp LILO, sau khi thay i cu GRUB khng cn phi chy bt k lnh no nhng thay i ny c hiu lc. Chng s c cp nht mt

36

Ci t HH Linux trn cng my tnh vi Windows

cch t ng trong ln khi ng sau. y l mt im mnh ca GRUB so vi LILO. Tt nhin y khng phi l tt c nhng kh nng s dng ca GRUB, nhng i vi ngi dng mi th nh vy l . Sau mt thi gian lm vic vi Linux v c kinh nghim bn s bit cch tm thm thng tin v trnh khi ng tuyt vi ny.

2.8
2.8.1

S dng trnh khi ng LILO


Ci t v cu hnh LILO

Ging nh trng hp Windows NT, chng ta s a ra cc bc cn thc hin c th khi ng nhiu HH. 1. Trc khi ci t Linux hy chun b a mm khi ng Windows. 2. Dng chng trnh Partition Magic ly phn khng gian a cn trng v trn to ra mt phn vng ext2(3) (h thng tp tin Linux) v mt phn vng swap. Cch chia a ni trn. Nu dung lng a cng vt qu 8,4 Gbyte th hy c k cc phn 2.3 v 2.5. 3. Ci t Linux theo ch dn i km vi bn phn phi. Cn nh rng, nu bn mun s dng trnh khi ng LILO, th trong qu trnh ci dt Linux cn chn phng n ci LILO vo bn ghi khi ng chnh (Master Boot Record). To cc a mm khi ng theo nguyn tc l khng bt buc, nhng tc gi khuyn bn c nn lm.7 4. Bc tip theo cn cu hnh LILO c th khi ng cc HH theo la chn. LILO c cu hnh bng tp tin /etc/lilo.conf v cu lnh /sbin/lilo. Cu lnh ny dng ci t (hay ci t li) LILO. Chng ta xem xt mt v d nh ca tp tin cu hnh LILO. Trong v d ny chng ta s coi nh thit b /dev/hda1 l phn vng vi DOS/Windows, cn phn vng /dev/hda2 cha Linux. Trong trng hp /etc/lilo.conf c dng gn nh sau: boot = /dev/hda2 compact delay = 50 # message = /boot/bootmesg.txt root = current image = /boot/vmlinuz-2.4.22 label = linux
Ghi ch. Trnh khi ng LILO khng bt buc phi ci t vo bn ghi khi ng chnh ca a, LILO c th nm bn ghi khi ng ca phn vng chnh c kch hot v cha th mc gc ca Linux hoc thm ch trn phn vng lgc trong phn vng m rng. Trong trng hp MBR cn phi c kh nng np LILO, v d khi MBR l trnh khi ng ca MS-DOS hay Windows. Tuy nhin tc gi cha nhn thy s cn thit ca ng dng ny (nu chn LILO lm trnh khi ng chnh th hy s dng cho trn b), v th chng ta s khng xem xt n.
7

2.8 S dng trnh khi ng LILO read-only other = /dev/hda1 table = /dev/hda label = dos Vi li gii thch cho v d: Dng boot cho bit thit b khi ng.

37

Dng compact bt ch nn tp tin map tp tin cha c tnh ca nhn c khi ng; tnh nng (nn) ny tng tc ca khi ng u. Cu lnh message dng a ra thng bo theo mun khi khi ng. Bt u t dng image l cc phn nh ca tp tin cu hnh, mi phn tng ng vi mt h iu hnh s khi ng theo la chn ca ngi dng. Trong mi phn nh vy c mt dng label. Trn dng ny ghi tn cn nhp vo du nhc LILO hay tn s hin th trong trnh n ca LILO c th chn HH mun khi ng. Nu nh tn khng c nhp sau khong thi gian ch trn dng delay (tnh theo phn mi giy cn nhn vi 0,1 giy), th s khi ng HH theo mc nh. Trong v d ny, s khi ng Linux theo mc nh, v phn cu hnh tng ng vi Linux nm u tin trong tp tin. C th ch ra h iu hnh c khi ng theo mc nh khi thm mt dng c dng default=dos, tc l s dng tn t trn dng label. Dng table=<device> cho bit tn thit b cha bng phn chia a. LILO s khng a thng tin v phn chia a cho h iu hnh c khi ng nu bin ny khng c a ra. (Mt s h iu hnh c cng c khc xc nh l c khi ng t phn vng no.) ng qun rng, cn thc hin cu lnh /sbin/lilo, sau khi thay i ch dn n bng phn chia a, tc l thay i bin table. Nu t dng (gi l phn nh th tt hn) other = /dev/hda1 trong tp tin /etc/lilo.conf, th trong th mc gc ca a /dev/hda1 (a C: trong h thng thut ng Microsoft) cn c trnh khi ng ph (khng phi l chnh). Trn mt my ca tc gi nm trnh khi ng NT Loader (v Windows NT c ci t trc Linux), v LILO khi ng thnh cng Windows NT. Ch cn t thi gian ch khi ng trong tp tin boot.ini bng khng, khng thy trnh n khi ng ca NT Loader. Tuy nhin, nu v mt l do no bn mun thy trnh n ny th gi tr timeout trong tp tin boot.ini cn t khc khng (thi gian ch c tnh theo giy). iu ny c th cn thit khi mun khi ng c Windows 98 t trnh n ca NT Loader (trong trng hp ny s c 3 HH: Linux, Windows NT v Windows 98, trong trnh n ca LILO nu chn dos th s hin ra trnh n ca NT Loader ri t chn mt trong hai HH Windows khi ng). Nu bn c mun khi ng Windows trc tip t LILO, th hy thm phn nh sau vo /etc/lilo.conf: other = /boot/bootsect.dos label = win trong bootsect.dos ly t th mc gc ca a cha NT Loader.

38

Ci t HH Linux trn cng my tnh vi Windows 5. Sau khi sa xong tp tin /etc/lilo.conf theo mun, cn chy cu lnh /sbin/lilo nhng thay i c hiu lc. Cu lnh ny (trong ti liu hng dn gi l map-installer) ci t trnh khi ng ph, m s c kch hot trong ln khi ng tip theo. Trc khi chy /sbin/lilo thay i bc khi ng, hy thc hin cu lnh ny vi tham s -t. Khi c tham s ny s thc hin tt c cc th tc ci t trnh khi ng, tr vic thay i tp tin map, bn ghi sector khi ng, v bng phn chia a, tc l ch chy th cu hnh mi. Nu cho thm ty chn -v, th bn c s c bit thm thng tin chi tit v nhng g lnh /sbin/lilo s thc hin. Khi /sbin/lilo ghi ni dung mi ln sector khi dng, th ni dung c ca sector ny s t ng c ghi nh vo mt tp tin. Theo mc nh l tp tin /boot/boot.NNNN, trong NNNN tng ng vi s ca thit b, v d, 0300 tng ng /dev/hda, 0800 /dev/sda, v.v. . . Nu tp tin ny c trn a, th n khng b ghi ln. Tuy nhin c th t mt tn khc ghi sector khi ng, khng nht thit phi dng /boot/boot.NNNN. Tp tin /boot/boot.NNNN c th s dng phc hi ni dung c ca sector khi ng, nu khng cn cch phc hi no khc n gin hn. Cu lnh thc hin c dng: [root:~#] dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1 hay [root:~#] dd if=/boot/boot.0800 of=/dev/hda bs=446 count=1 (bs=446 v ch phc hi chng trnh khi ng, v khng ng g n bng phn chia a). Cng c th phc hi MBR c khi cn thit bng cu lnh /sbin/lilo vi ty chn -u. Nhng cn bit rng, cu lnh ny ch lm vic ng vi iu kin l th mc LILO (tc l /boot) khng thay i k t khi ci t. MBR ca MS-DOS c th c phc hi bng cch khi ng vo DOS t a mm (CD) ri chy cu lnh fdisk /mbr (xem trn). Lnh ny ch thay i m chng trnh khi ng nm trong MBR, m khng thay i bng phn chia a. 6. Sau khi ci t li trnh khi ng cn khi ng li my tnh v th cc phng n khi ng khc nhau kim tra.

kt thc phn ni v LILO ny chng ta s xem xt vi kh khn c th xut hin khi s dng LILO, v cch khc phc (nu c th). Khi LILO c np, n a ra mn hnh t LILO. Khi ny mi ch ci biu th s kt thc mt hnh ng no hay kt thc mt bc np LILO. Nu khi ng b b ngng gia chng, th qua s ch ci a ra c th nhn nh v nguyn nhn xut hin vn .
Khng ch ci no hin ra khng c phn no ca LILO c np. Hoc LILO khng c ci t, hoc phn vng cha LILO cha c kch hot.

2.8 S dng trnh khi ng LILO

39

L [m li] trnh khi ng chnh c np v chy (tc l nhn c quyn iu khin), nhng n khng th np trnh khi ng ph. M li hai k t cho bit nguyn nhn c th ca vn (cch gii m cn tm trong ti liu k thut ca LILO). Thng thng th vn ny sinh do a xu (c khuyt tt) hay khng t ng cu trc hnh hc ca a. Nu LILO khng dng li y, m tip tc a ra mt chui v tn cc m li, th vn thng d gii quyt. LI trnh khi ng chnh np c trnh khi ng ph, nhng khng chy c n. C th l li a cu trc hnh hc ca a, hoc tp tin boot/boot.b b di chuyn m ngi dng qun khng chy /sbin/lilo. LIL trnh khi ng ph c chy, nhng n khng th np bng m t t tp tin map. Nguyn nhn thng do khuyt tt ca a hoc khng a ng cu trc hnh hc ca a. LIL? trnh khi ng ph c np vo a ch khng ng. Thng thng do li a ra cu trc hnh hc ca a hoc tp tin /boot/boot.b b di chuyn m ngi dng qun khng chy /sbin/lilo. LIL- bng m t trong tp tin map b ph hy. Thng thng do li a ra cu trc hnh hc ca a hoc tp tin /boot/boot.b b di chuyn m ngi dng qun khng chy /sbin/lilo. LILO tt c cc phn ca LILO c np thnh cng.

2.8.2

Ci t cc h iu hnh khc sau Linux

Khi ci t MS-DOS v Windows 95/98, trnh khi ng ca chng (khng ph thuc vo mun ca bn c) c ghi vo Master Boot Record (MBR), v du kch hot trong bng phn vng s c chuyn sang phn vng MS-DOS (Windows 95/98). M trnh khi ng MS-DOS v Windows 95/98 ch bit chuyn quyn iu khin cho sector u tin ca phn vng kch hot. Nh th, nu nh bn c u tin ci t Linux, v sau mi ci t Windows 95/98 hay MS-DOS, th Linux s khng th khi ng. C th phc hi li LILO bng cch chy lnh /sbin/lilo (nu LILO c ci vo MBR), hoc kch hot phn vng cha LILO (nu LILO c ci vo phn vng chnh). Khi c vn sau khi ci t mt h iu hnh khc sau Linux, thng c th gii quyt bng cch khi ng vo Linux bng a mm khi ng, sa li tp tin cu hnh LILO (thm phn nh cho HH mi), ri chy /sbin/lilo.

2.8.3

Chuyn th mc /boot ln phn vng DOS

Nhng phin bn nhn Linux mi nht h tr kh nng t cc tp tin cn thit trn giai on khi ng vo h thng tp tin MS-DOS (hay UMSDOS). V trong phn ln cc trng hp phn vng DOS chim cc vng a u (khng c hn ch ca BIOS), nn cho php gii quyt nhiu vn ca a ln, khi m th mc /boot khng th nm trn phn vng dnh cho Linux.

40

Ci t HH Linux trn cng my tnh vi Windows

thc hin phng n khi ng ny, cn phn vng DOS ch c/ghi, to trong mt th mc (v d, /dos/linux), v chuyn tt c cc tp tin t th mc /boot vo ; th mc /boot c chuyn thnh lin kt tng trng n th mc /dos/linux; v tr mi ca th mc /boot cn ch ra trong tp tin /etc/lilo.conf, v cui cng chy lnh /sbin/lilo.

2.9

Khi ng Linux t MS-DOS bng loadlin.exe

Khng ch cc tp tin khi ng v nhn c th nm trong phn vng DOS, m c tin trnh khi ng Linux ni chung c th c t chc t DOS. Kh nng ny thc hin nh chng trnh c bit loadlin.exe, do Hans Lermen (lermen@elserv.ffm.fgan.de) vit. Chng trnh ny thng c trn cc a ca bn phn phi.8 Loadlin.exe cung cp cch khi ng Linux t cng an ton nht, khi c phn vng kch hot l DOS hay Windows. Phng n khi ng ny c khuyn s dng cho ngi dng Linux mi. Phn ln ngi dng mi (v khng ch h) khng kin nhn c ti liu rt hay nhng rt di (v li vit trn ting Anh na) ca LILO. V th h thng s dng LILO khng ng cch, v kt qu l khng th khi ng c bt k h iu hnh no (tc gi cng ri vo trng hp nh vy). i vi nhng ngi dng mi th s thun tin hn khi s dng loadlin.exe khi ng v bt u tm hiu Linux. Tuy nhin, khng vo hang cp sao bt c cp. Chng trnh loadlin.exe khng yu cu phi ci t, ch cn t chng trnh tp tin loadlin.exe v nhn (nh ca nhn) ln mt trong cc a m DOS nhn ra. C th dng chng trnh ny khi ng Linux t CD hoc t a trong mng m khng cn s dng a mm khi ng. Kh nng ny bin loadlin.exe thnh mt cng c tuyt vi khi ng Linux khi c vn vi LILO. Phin bn 1.6 ca loadlin.exe lm vic vi mi cu hnh DOS v c rt t hn ch. Phin bn ny c th s dng b nh m rng; c th np cc nhn ln (cc bzImage) v cc nh a o (initrd) trc tip vo vng b nh nm trn. Vic s dng loadlin.exe khng c ngha l Linux lm vic di DOS, v chng trnh ny h tr khi ng lgc ca my tnh, v sau DOS c thay th hon ton bng Linux. Nu nh bn c mun quay tr li DOS, th phi khi ng li my tnh, v d, bng cu lnh reboot. Nh vy, cn lm g c th s dng chng trnh loadlin.exe.
Trn my tnh ca bn (tt nhin vi b x l 386 hoc cao hn) cn ci t DOS hay WINDOWS 95. Cn c nh nn ca nhn Linux (zImage, bzImage)9 . Chng trnh loadlin.exe. C th tm thy trn a phn phi dng khng nn hay trong gi LOADLIN16.TGZ. Gi nn ny cn cha hng dn
mt s bn phn phi cn c gi ci t cho chng trnh ny, thng thng ghi tp tin loadlin.exe vo th mc ca ngi dng root 9 Ghi ch. zImage l nh dng nh phn c ca nhn, bzImage l nh dng mi hn (s phin bn nhn ln hn 1.3.73) c kch thc ln ti 1 Mbyte, do , nhn khi gii nn c kch thc ln ti 2 Mbyte. Tip theo chng ta s ch ni v cc tp tin zImage, mc d bn c c th thay th zImage thnh bzImage
8

2.9 Khi ng Linux t MS-DOS bng loadlin.exe

41

s dng DOC\MANUAL.TXT, tp tin tham s v d DOC\TEST.PAR, v hng dn cch a cc tham s DOC\PARAMS.DOC (ng qun rng chng l nhng tp tin DOS). Nu bn chy loadlin.exe khng c tham s C:\LOADLIN> loadlin th s nhn c hng dn s dng ngn gn. Thun tin hn c hng dn ny khi chy chng trnh vi tham s more (ging trong Linux): C:\LOADLIN> loadlin | more By gi chng ta c th xem xt cc bc ci t Linux khi s dng loadlin.exe khi ng. 1. Chia cc phn vng cho Linux (cch lm xem phn 2.5) 2. Ci t Linux vo phn vng chia. LILO cn ci t vo sector u tin ca phn vng Linux khng ghi ln MBR v khng b mt kh nng khi ng vo Windows. 3. Sau khi kt thc phn ci t hy khi ng Linux (nu khng c cch no khc, hy s dng a mm khi ng). Gn phn vng DOS (gi thit l /dev/hda1, cn phn vng Linux l /dev/hda3): [root]# mount -t vfat /dev/hda1 /mnt/C To th mc /mnt/C/loadlin v gii nn tp tin LOADLIN16.TGZ vo . Ngoi ra sao chp t th mc /boot vo th mc c tp tin cha nh ca nhn Linux. C th tm tp tin cha nh ca nhn cn thit nh tp tin /etc/lilo.conf: tm trong tp tin cu hnh dng image=... v bn c s thy tn cn thit pha bn phi du bng. V d tn ca tp tin ny l vmlinuz-2.4.22. Sao chp tp tin vmlinuz-2.4.22 t /boot vo /mnt/C/loadlin v i tn thnh vmlinuz (vic i tn l khng nht thit, v ch c ngha thun tin cho s dng): [root]# cp /boot/vmlinuz-2.4.22 /mnt/C/loadlin/vmlinuz 4. By gii khi ng li my tnh vo DOS trc tip (nu bn c c Windows 95/98 th cn nhn phm <F8> khi khi ng hin th trnh n cho php chn DOS), hoc qua hp thoi la chn khi nhn lnh tt my (shutdown) Windows 95/98. Sau khi vo DOS hy chuyn sang th mc C:\LOADLIN: CD \LOADLIN ri thc hin lnh: C:\LOADLIN> LOADLIN vmlinuz /dev/hda3 ro vga=ask

42

Ci t HH Linux trn cng my tnh vi Windows hoc, nu bn c mun np nhn cng vi a RAM: C:\LOADLIN> LOADLIN vmlinuz /dev/ram rw initrd=diskimage Cn c th ghi tt c cc tham s ca lnh loadlin.exe vo tp tin (v d vi tn params) v gi cu lnh dng sau: C:\LOADLIN> LOADLIN @params Kh nng ny c bit c ch khi a nhiu tham s dng lnh v khi di ca dng lnh ln hn 127 k t. M t y tt c cc tham s ca cu lnh loadlin.exe c th tm thy trong tp tin PARAMS.DOC hoc Internet trn trang http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO. html v http://rsphy1.anu.edu/~gpg109/BootPrompt-HOWTO.html.

By gi bn c c th s dng cch ny khi ng Linux. Cng vic duy nht cn li l lm sao khng phi g lnh loadlin vi tt c cc tham s sau mi ln khi ng li. C th vit thm lnh gi loadlin vo tp tin autoexec.bat hoc to mt tp tin lnh (v d, linux.bat), v khi chy tp tin ny, my tnh s chuyn vo ch DOS trc, sau th chy Linux. Tc gi cho rng nhng thng tin a ra trn to tp tin bat cn thit. Cn ni thm rng, khng c khi ng Linux t giao din ha DOS/Windows v cn tt mt vi ty chn trong tp tin n C:\MSDOS.SYS (y l tp tin vn bn thng thng), bng cch thm vo hai dng sau (nu cha c): BootGUI=0 Logo=0 Dng u tin tt giao din ha, v DOS s c khi ng thay cho Windows 95/98. ( chy giao din ha, cn nhp cu lnh C:\> win). Dng Logo=0 tt vic hin th biu tng Windows (ca s). Vn ch, i vi mt s cc mn hnh Linux s a ra mt mn hnh trng rng sau khi khi ng, nu nh c hin th biu tng Windows.

Chng 3 Khi ng Linux ln u


Vn s khi u nan Trung Quc
Ngi dch: Sau khi ci t rt c th bn c s khng bit bc tip theo phi lm g. Bt my tnh ln, i h thng khi ng xong v ... ngi nhn. Phi lm g c th tip tc lm vic vi h thng Linux? Sau khi lm vic xong th tt my th no? C nhng chng trnh no nn bit? Trong khi lm vic c vn ny sinh th tm cu tr li u? Trong chng ny chng ta s tm thy cu tr li cho nhng cu hi trn.

3.1

Khi ng HH Linux

Nh vy l vic ci t Linux hon thnh1 . Nu ngi dng ci t GRUB lm trnh khi ng, th sau nhng dng ch BIOS thng a ra s xut hin mn hnh dng nh trong hnh 3.1. Nu khng chm vo bn phm, th trn mn hnh s xut hin rt nhiu thng bo m tm thi chng ta s khng xem xt ngha ca chng2 . Cui cng xut hin mn hnh cho php ngi dng ng nhp vo h thng. Nu bn chn t ng chy ch ho th hy nhn <Ctrl>+<Alt>+<F1> thy mn hnh ng nhp nh sau: ThinhQuyen login: Mn hnh ng nhp ny xut hin trn my ca tc gi khi khi ng Debian Linux. Tt nhin mn hnh ng nhp ca bn c s khc. Nu c kin nhn c ht cun sch ny, th bn s bit cch thay i mn hnh ny, v d a ra nhng cu cho dng Xin cho! Hm nay l 02 thng 09 nm 2006. Hy nhp vo tn ngi dng v mt khu. Tuy nhin by gi vn cn sm ni v vn ny. Nu khi ng bng a mm th qu trnh cng tng t nhng chm hn mt cht. Nu Linux khng phi l h iu hnh (HH) duy nht trn my tnh, th trn mn hnh khi ng GRUB s xut hin danh sch cc h iu hnh tm
Ngi dch: Thng tin trong phn ny ca bn gc ting Nga hi c v trnh khi ng bn gc s dng l LILO. Bn dch cp nht li v s dng trnh khi ng GRUB 2 Trong nhng bn phn phi Linux mi, v d SuSE Linux, c s dng mn hnh flash. Do c th bn c s khng thy nhng thng bo ny. Trong trng hp , hy nhn phm tng ng chuyn v mn hnh khi ng bnh thng. Phm ny thng l <Esc>.
1

44

Khi ng Linux ln u

Hnh 3.1: Mn hnh khi ng ca GRUB thy. C th chn HH mun khi ng bng cc phm <> v <> ri nhn phm <Enter>. Nu chn khi ng Linux th cui cng ngi dng phi thy dng login:, tc l dng mi nhp vo tn ng nhp.

3.2

ng nhp vo h thng

Nh bn bit, khi hin ra dng mi ny th u tin cn nhp vo tn ngi dng, sau nhp vo mt khu khi c yu cu vo h thng. Nu y l ln ng nhp u tin vo h thng ngay sau khi ci t, v trong khi ci t bn qun to thm ngi dng, th hy nhp vo tn ngi dng root (ngi dng cao cp). y l ngi dng duy nht lun lun c ti khon c to ra trong qu trnh ci t. Ngi dng ny l ch s hu c ton quyn i vi h thng by gi cng nh sau ny, tc l c quyn truy cp khng gii hn n cc ti nguyn, c th thm, xa nhng ngi dng khc, dng h thng v.v. . . Nhng thao tc khng cn thn ca ngi dng ny c th d dng dn n nhng hu qu kh lng, thm ch lm hng h thng. V th thng ch ng nhp di tn ngi dng ny khi thc hin cc cng vic qun tr h thng. Tuy nhin chng ta ang trong trng hp ny, v th hy nhp root vo dng login: ri nhn phm <Enter> (<Return>). H thng s a ra cu hi mt khu: Password: Tt nhin l bn cn nhp vo mt khu tng ng vi ngi dng a ra, y l mt khu ca root. Mt khu ny l mt khu a ra cho ngi dng root trong qu trnh ci t. Sau khi nhp mt khu cng nhn <Enter>. Nu sau khi nhp vo tn ngi dng ri rt lu sau khng vo mt khu, th h thng s t ng quay tr li dng hi tn ngi dng login:. Sau khi nhp

3.2 ng nhp vo h thng ng mt khu, bn s thy dng nh sau: [root@ThinhQuyen /root]#

45

Dng ny c gi l du nhc. Xut hin du nhc c ngha l h thng sn sng tip nhn v thc hin cu lnh ca ngi dng. thi im ny n c ngha l bn ng nhp vo h thng mt cch thnh cng. Trong MS-DOS v Windows(TM) mn hnh en v du nhc h thng thng c gi l ch dng lnh. Chng ta s gi ch ny l vn bn phn bit vi ch ho ca h thng X Window. Trong v d a ra du nhc gm tn ngi dng (root), tn h thng (ThinhQuyen) v th mc hin thi (/root). Sau ny bn c th thay i dng ca du nhc ny. Trong tt c cc v d tip theo chng ta s s dng du nhc ch gm c tn ngi dng. Trc khi ngh bn c nhp vo cu lnh u tin, cn ni rng trn bt k h thng UNIX no kiu ch cng u ng vai tr quan trng, tc l c phn bit ch hoa v ch thng. V th cn nhp vo tt c cc cu lnh cng nh tham s ca chng nh ch ra trong v d, k c kiu ch. Cu lnh u tin chng ta s nhp vo l useradd. Sau tn ca cu lnh cn khong trng v sau l tn ngi dng, v d, nhimlui: [root]# useradd nhimlui Ngay sau khi nhn phm <Enter> chy lnh ny, trn h thng s bit rng ngi dng nhimlui tn ti (chng ta ni, m ti khon cho ngi dng nhimlui). Tuy nhin vn cha th vo h thng (thng ni, ng nhp) di tn ngi dng ny. h thng cho php ngi dng mi nhimlui lm vic, cn phi to thm cho ngi dng ny mt khu bng cu lnh: [root]# passwd nhimlui S xut hin dng: Changing password for nhimlui. New Password: Hy nhp vo mt khu. Sau khi nhp xong, cng nhn phm <Enter>, h thng s hi nhp mt khu mt ln na kim tra. Reenter New Password: ng ngc nhin, bn s khng nhn thy mt khu vo v h thng s khng hin th g ra, k c du sao * nh thng thy. Nu bn nhp ng tt c, th s xut hin thng bo thnh cng dng: Password changed.

46

Khi ng Linux ln u

v s li xut hin du nhc ca h thng. Nu nhp vo mt khu khng tt (mt khu qu ngn hoc qu n gin), th s xut hin dng cnh bo (dng Bad password: too short), nhng h thng vn tip nhn mt khu v cho php ngi dng mi ng nhp vo h thng. Nh vy l bn c lm quen vi hai cu lnh u tin ca h thng Linux: useradd v passwd. Cu lnh tip theo m bt k ngi dng Linux no cng cn phi bit l cu lnh man. man l h thng tr gip lun lun i km vi h thng Linux. Cn phi nhp vo cu lnh ny vi mt tham s tn ca cu lnh khc hoc t kha. V d: [root]# man passwd Kt qu l bn s nhn c mt vn bn m t cu lnh tng ng hoc thng tin v ti m t kho a ra. V thng tin thng khng th nm gn trn mt mn hnh nn khi xem cn s dng cc phm <PageUp>, <PageDown>, v phm trng. Hy nhn phm <Q> bt k thi im no thot ra khi mn hnh xem man v quay li dng nhp lnh. By gi xin bn c hy th xem thng tin v hai cu lnh cp n trn login v passwd. Ch l c th xem thng tin v chnh bn thn cu lnh man. Hy chy lnh: [root]# man man Rt tic theo nh tc gi bit th hin thi cc trang thng tin man cn cha c dch sang ting Vit. Do bn s nhn c nhng trang ny bng ting Anh. Nu nh bn khng c kh nng c ting Anh, th hay kin nhn c cun sch ny hoc mt cun sch khc cng ti. Bn c cn c th th chy thm mt vi cu lnh na v theo di xem h thng lm g. V d, hy th nhng cu lnh lit k trong bng 3.1 (hy nhp chng cng vi nhng tham s c trong bng). Bng 3.1: Nhng cu lnh n gin ca Linux Cu lnh M t ngn gn whoami Thng bo tn ng nhp ca bn w hoc who Cho bit nhng ngi dng no hin ang lm vic trn h thng pwd Cho bit tn ca th mc hin thi ls -l Hin th danh sch tp tin v th mc con ca th mc hin thi cd tn_th_mc Chuyn th mc hin thi n tn_th_mc ps ax Hin th danh sch cc tin trnh ang chy Hy xem m t v nhng cu lnh ny bng man. Chng ta s khng xem xt chi tit danh sch tt c nhng cu lnh c th gp. V th nht, ngi dng s dn dn lm quen vi chng trong qu trnh c cun sch ny v thc hnh trn HH Linux ca mnh. Th hai, c th c v nhng cu lnh chnh trong bt k cun sch no ni v UNIX.

3.3 Console, terminal o v shell

47

3.3

Console, terminal o v shell

Nh vy l bn c c kinh nghim lm vic u tin ch vn bn (hay cn gi l knh giao tc console) ca h thng Linux. Chng ta s cn gp thng xuyn nhng khi nim trnh lnh terminal v console, do tc gi gii thch k hn nhng khi nim ny. Khi h thng UNIX u tin mi c to ra, my tnh cn rt to (mainframe) v ngi dng lm vic trn nhng my tnh ny qua mt h thng nhng giao din k tip nhau dng kt ni cc terminal xa. Terminal thit b dng giao tip gia ngi dng v my tnh, thng gm mn hnh v bn phm. My tnh c nhn ca bn c l my tnh th h mi, do chc s khng c terminal xa no kt ni ti, nhng vn c bn phm v mn hnh thc hin vai tr terminal i vi ngi dng. Ngoi ra thm vo thnh phn ca terminal by gi cn c chut. Mainframe c mt terminal c bit dnh cho nh qun tr (system administrator) h thng, c gi l console. Console thng kt ni ti my tnh khng qua giao din k tip nhau m qua mt cm ring (i khi thit b a ra khng phi l mn hnh m l mt thit b in). V trn cc h thng UNIX ngi ta thng tun theo cc truyn thng, do bn phm v mn hnh my tnh c nhn ngy nay lm vic ging nh console ngy xa. im mnh ca gii php ny ch tt c nhng chng trnh c dng qun tr h thng UNIX c th lm vic khng c vn g trn dng console mi ny. Tuy nhin, ngoi console Linux cn cho php kt ni cc terminal xa ti my tnh. V hn th na cn cung cp kh nng lm vic vi mt vi terminal o t mt console duy nht. Hy nhn t hp phm <Ctrl>+<Alt>+<F2>. Bn c s li thy dng mi ng nhp login:. Nhng y khng phi l lm vic li t u vi h thng m bn c ch chuyn sang mt terminal o khc. y bn c c th ng nhp di tn ngi dng khc. Hy th vo h thng bng tn ngi dng va mi to ra (nhimlui). Sau hy nhn t hp phm <Ctrl >+< Alt>+<F1>. Bn s quay li mn hnh ban u. Theo mc nh, hu ht cc bn phn phi Linux ln (Red Hat, SuSE, Debian,. . . ) m ra 6 phin lm vic song song (terminal o) nh vy khi khi ng. Nh vy rt thun tin cho s dng. chuyn gia cc terminal o chng ta s dng cc t hp phm <Ctrl>+<Alt>+<F1> <Ctrl>+<Alt>+<F6>. Cn ni thm l khi lm vic ch vn bn (khng phi ho) th cng c th s dng cc t hp phm <Alt>+<F1> <Alt>+<F6> v thu c kt qu tng t. Tuy nhin nu lm vic ch ho th khng th khng dng phm <Ctrl>. Do , tt hn ht l lm quen ngay t u vi t hp 3 phm. Nhn tin cng cn ni lun, nu trong qu trnh lm vic bn c khng nh ang nm trong terminal o no th hy s dng cu lnh tty. Lnh ny s a ra tn ca terminal dng: /dev/tty2. Xin ni ngay lp tc nu bn mun thot khi mt trong cc terminal th c th thc hin bng t hp phm <Ctrl>+<D>. Thao tc ny khng tt my v cng khng khi ng li h thng. ng qun rng Linux l HH nhiu tin trnh (multiproccess) v nhiu ngi dng (multiuser). Mt ngi dng no dng cng vic khng c ngha l cn phi tt my, cn c nhng ngi dng khc vn tip tc lm vic. T hp phm ni trn ch n gin l dng phin lm vic hin thi ca mt ngi dng, v h thng s hin th li trn terminal ny

48

Khi ng Linux ln u

du mi ng nhp (login:) m bn c thy. Cng c th dng phin lm vic bng mt trong hai cu lnh logout hoc exit. By gi khi bit cch bng u v kt thc phin lm vic trn h thng, xin bn hy thc hin nhng li khuyn trn, tc l vo h thng di tn ngi dng bnh thng (khng c quyn cao cp ca ngi dng root). Hy ng tt c nhng phin lm vic m root m ra, ri vo h thng di tn ngi dng mi to ra. Cn by gi cn ni vi dng v h v. H v hay shell (t ny thng khng dch m nguyn ting Anh) l chng trnh thc hin vic giao tip ca h thng vi ngi dng. Chnh shell nhn tt c nhng cu lnh m ngi dng nhp vo t bn phm v t chc vic thc hin nhng cu lnh ny. v th shell cn c th gi l b x l lnh (thut ng quen thuc i vi ngi dng DOS). Ni mt cch cht ch th cu h thng hin th du nhc l khng ng, v du nhc ny l do shell a ra i ngi dng nhp vo cu lnh tip theo. Mi ln ngi dng no vo h thng, cu lnh login s chy cho ngi dng ny mt b x l lnh shell. Nu bn c ng nhp vo h thng t terminal th hai di tn ngi dng nhimlui (hoc di tn ngi dng bn chn), th hy ch n s khc nhau trong du nhc ca hai ngi dng root v nhimlui. Du nhc ca ngi dng root c k t # cui, du nhc ca tt c nhng ngi dng cn li k t $. Khng ch duy nht lnh login c kh nng chy shell. Bn ch cn nhp vo lnh bash (y cng l tn ca chng trnh h v trn phn ln cc h thng Linux) v nh vy l chy mt shell mi. Khi thot khi h v mi ny (bng cu lnh exit hoc t hp phm <Ctrl>+<D>), bn s quay li h v ban u (h v m t bn chy lnh bash). H v bash khng ch l b x l lnh m cn l mt ngn ng lp trnh mnh. Trong bash c y cc cu lnh tch hp (ni b) v cc ton t, v ngoi ra cn c th s dng cc chng trnh khc nm trn a lm cu lnh. C th xem danh sch cc cu lnh tch hp trong bash bng lnh help. Hy th lnh ny! Xem thng tin chi tit v mt lnh no cng bng lnh help ny vi tham s l tn ca lnh, v d: help cd. V h v bash ng mt vai tr ht sc quan trng trong Linux, nn tc gi s dnh ring mt chng ca cun sch ny ni v n. Tt nhin l bn c th tm thy nhng thng tin tng t trong bt k cun sch no v UNIX. Cng cn lu l i vi cc h thng UNIX cc nh pht trin vit ra nhiu h v khc thay th cho bash. Cng c th s dng nhng h v ny trn Linux, nhng theo mc nh s chy bash. By gi chng ta s xem xt thm mt cu lnh na m bn c cn bit. My tnh ca ngi dng thng thng l my c nhn (personal computer hay ni gn l PC) d nh hay c quan. C ngha bn c cng l ngi dng root ca h thng. Nhng nh ni trn, ng nhp di tn ngi dng cao cp ny l khng nn, v mi thao tc khng cn thn ca ngi dng ny c th dn n nhng hu qu khng mong mun. Khi ng nhp di tn ngi dng thng thng, t nht bn c cng khng th xa hoc lm hng cc tp tin h thng (system files) do s khng cn thn ca mnh. Trong khi , c mt lot cc thao tc, v d gn h thng tp tin, ch c ngi dng cao cp mi c th thc hin. ng khi ng li my tnh mi ln nh vy! Cu lnh su gip gii quyt nhng trng hp nh vy. Ch cn nhp cu lnh su v shell hin

3.4 Son tho dng lnh. Lch s lnh

49

thi (hay ni khng ng l h thng) s chy mt shell mi m khi vo trong bn s chy tt c cc lnh vi quyn ca root. Tt nhin l c quyn ny bn cn nhp mt khu ca root vo dng yu cu hin ra (Password:). Sau khi thc hin xong cc cng vic qun tr h thng, hy thot khi h v v bn s tr thnh ngi dng bnh thng vi nhng quyn ca mnh. Bng cch tng t nh vo h thng di tn root trn, cn c th vo h thng di tn mt ngi dng bt k m bn bit mt khu3 (ni cch khc l chy mt h v shell mi di tn ngi dng khc). Nhng cn ch ra tn ca ngi dng ny trn dng lnh, v d: [user]$ su nhimlui Cu lnh su trc khng km theo tn no, theo mc nh s t tn ngi dng cao cp root vo. Nhng trong HH Linux cn c thm mt kh nng chuyn tm thi vo ti khon ca ngi dng root thc hin cc chc nng qun tr. Hy nh rng Linux l h thng nhiu ngi dng, trn h thng c th lm vic cng lc nhiu ngi dng. V th c th lm vic di tn ngi dng root trn terminal o th nht, cn trn terminal o th hai di tn ngi dng bnh thng. Nhng cng vic thng ngy (son tho vn bn, c th,. . . ) bn c th thc hin bng ti khon bnh thng, cn khi cn thc hin cc cng vic qun tr, bn s dng ti khon ngi dng cao cp (root). thc hin la chn ny bn ch cn nhn <Ctrl>+<Alt>+<F1> v s c ngay quyn ca nh qun tr. Sau khi lm xong nhng thao tc m ch c ngi dng cao cp mi c th lm, hy quay li ti khon ca ngi dng bnh thng ngay lp tc bng t hp phm <Ctrl>+<Alt>+<F2>. Nh vy bn c s khng c nguy c lm hng h thng khi cn cha c nhiu kinh nghim s dng Linux.

3.4

Son tho dng lnh. Lch s lnh

Trong nhng phn trc tc gi ngh bn c thc hin mt vi lnh ca HH Linux. Tc gi cho rng nu trong qu trnh nhp lnh c xy ra li th bn c th on c cch sa chng. Nhng d sao cng c ch nu a ra danh sch ngn gn nhng cu lnh (hay ni ng hn l phm v t hp phm) dng son tho dng lnh, cng nh gy nh hng n cch lm vic ca shell bng bn phm (bng 3.2, chng ta s ni v chut mt phn ring).
Ghi ch: Nu bn lm vic trong chng trnh Midnight Commander, th c th s khng th s dng nhng phm nh <>, <>, <Home>, <End>, <Del> lm cc cng vic nh bng trn, v chng c Midnight Commander dng di chuyn dng chiu sng trong bng4 hin thi. Nhng mt s t hp phm dng vi <Ctrl> v <Esc> th vn dng c bnh thng.

Danh sch nhng cu lnh (t hp phm) c th dng khng ch gii hn trong phm vi bng 3.2, nhng chng ta ch xem xt nhng cu lnh n gin v cn thit trong ln lm quen u tin vi Linux ny. c thm thng tin hy s dng cu lnh man bash hoc info bash.
3 4

Ngi dng root khng cn phi bit mt khu lm vic ny. panel

50

Khi ng Linux ln u

Phm <>, <Ctrl>+<F> <>, <Ctrl>+<B> <Esc>+<F> <Esc>+<B> <Home>, <Ctrl>+<A> <End>, <Ctrl>+<E> <Del>, <Ctrl>+<D> <Backspase> <Enter>, <Ctrl>+<M> <Ctrl>+<L> <Ctrl>+<T> <Esc>+<T> <Ctrl>+<K>

Bng 3.2: Nhng phm son tho dng lnh Phn ng ca h thng Di chuyn sang phi mt k t (trong khun kh nhng k t nhp cng thm mt k t s nhp) Di chuyn sang tri mt k t Di chuyn sang phi mt t Di chuyn sang tri mt t Di chuyn v u dng lnh Di chuyn v cui dng lnh Xa k t nm ti v tr con tr Xa k t nm bn tri con tr Bt u thc hin cu lnh Dn mn hnh v a dng lnh hin thi ln dng u tin i ch hai k t: k t nm ti v tr con tr v k t nm bn tri con tr, sau di chuyn con tr sang phi mt k t i ch hai t: t nm ti v tr con tr v t nm bn tri con tr Ct phn dng lnh bt u t k t nm ti v tr con tr n cui dng (phn dng lnh ct ra c lu trong b m v c th t vo v tr khc) Ct phn dng lnh bt u t k t nm bn tri con tr n u dng (phn dng lnh ct ra c lu tron b m v c th t vo v tr khc) Ct phn dng lnh bt u t v tr con tr n cui t (nu ti v tr con tr l du cch th ct ton b t nm bn phi n) Ct phn dng lnh bt u t v tr con tr n u t (nu ti v tr con tr l du cch th ct ton b t nm bn tri n) Ct phn dng lnh bt u t v tr con tr n du cch bn tri t (dn) on dng lnh ct cui cng vo v tr con tr Chuyn k t ti v tr con tr thnh vit hoa ri di chuyn con tr ti du cch u tin bn phi so vi t hin thi Chuyn tt c cc k t bt u t v tr con tr thnh vit HOA ri di chuyn con tr ti du cch u tin bn phi Chuyn tt c cc k t bt u t v tr con tr ti cui t thnh vit thng ri di chuyn con tr ti du cch u tin bn phi Nhng t hp phm ny cho php xem cc trang mn hnh hin th. S lng nhng trang ny ph thuc vo b nh ca cc mn hnh. C ch khi c cu lnh no a ra mn hnh rt nhiu thng tin chy nhanh qua mn hnh, ngi dng khng kp thy chng Dng thc hin cu lnh va chy (m vn ang chy) Thot ra khi h v bash

<Ctrl>+<U>

<Esc>+<D> <Esc>+<Del> <Ctrl>+<W> <Ctrl>+<Y> <Esc>+<C> <Esc>+<U> <Esc>+<L> <Shift>+ <PgUp>, <Shift>+ <PgDown> <Ctrl>+<C> <Ctrl>+<D>

3.5 Ngng lm vic vi Linux

51

Xin lu bn c trong h v bash c chng trnh tch hp gip d dnh nhp cu lnh trn dng lnh. Gi chng trnh con ny bng mt hoc hai ln nhn phm <Tab> sau khi nhp mt vi k t. Nu nhng k t ny l phn u ca t nht mt trong nhng cu lnh m bash bit, th c hai kh nng xy ra. Nu chng l phn u ca duy nht mt cu lnh, tc l bash ch tm thy c mt cu lnh ny, th h v s thm phn cn li ca cu lnh ny vo dng lnh. Nu bash tm thy nhiu cu lnh c phn u ny, th s hin th danh sch tt c nhng phng n c th chn. Nh ngi dng c kh nng nhp thm mt vi k t na lm gim s phng n chn xung cn 1 ri l dng phm <Tab> mt ln na. Nu s phng n chn l rt nhiu (v d nhn phm <Tab> hai ln khi dng lnh trng rng) th bn c s nghe thy ting bp sau ln nhn <Tab> u tin, v sau ln nhn <Tab> th hai s xut hin mt dng dng Display all 2627 possibilities? (y or n) (Hin th tt c 2627 kh nng? cn chn y c hoc n khng). Nu nhn hai ln phm <Tab> sau tn ca mt cu lnh v mt khong trng, th h v bash s coi nh bn ang tm tn tp tin dng lm tham s cho lnh ny, v bash s a ra danh sch tp tin ca th mc hin thi. y l tnh nng tr gip ca bash trong trng hp ngi dng qun tn tp tin trong khi lm vic cng thng. Cng ging nh trng hp cu lnh, nu nhp vo mt phn tn tp tin th phn cn li s c t ng thm vo. Tng t nh vy c th on phn cn li ca cc bin mi trng5 , ch cn s dng t hp phm <Esc>+<$> thay cho <Tab>. Trong khi lm vic vi h v s c ch nu bit rng, bash ghi nh mt s cu lnh (theo mc nh l 1000 lnh, gi tr ny c t trong bin HISTSIZE, xem chng 5) v cho php gi li chng bng cch chn t danh sch. y c gi l lch s lnh. C th xem lch s lnh bng cu lnh history. y bn cn s dng cc t hp phm <Shift>+<PgUp> v <Shift>+<PgDown> xem danh sch (c th) rt di ny. Lch s lnh c lu trong tp tin xc nh bi bin HISTFILE (thng l $HOME/.bash_history). lm vic vi lch s cu lnh trong h v bash ngi ta s dng nhng t hp phm trong bng 3.3.

3.5

Ngng lm vic vi Linux

Mc d my tnh lm vic di s iu khin ca HH Linux c th chy sut ngy m, nhng phn ln ngi dng my tnh c nhn quen vi vic tt my sau khi lm vic xong. Khi lm vic vi HH Linux khng th tt my bng cch ngt ngun in nh i vi MS-DOS. V trong bt k thi im no trn h thng cng c rt nhiu qu trnh ang lm vic. Bn c th thy iu ny bng cch thc hin lnh: [nhimlui]$ ps ax Thc hin li lnh ny mt ln na xem li. Nhng nguyn nhn quan trng hn l ch mt s tin trnh ny c th ang lm vic vi cc tp tin, v h thng cn cha ghi nh tt c cc thay i vi nhng tp tin ln a m ch lu
5

environment variable

52

Khi ng Linux ln u

Bng 3.3: T hp phm iu khin lch s lnh Phm Phn ng ca h thng <> hoc <Ctrl>+<P> Chuyn ti (gi vo dng lnh) cu lnh trc trong danh sch (di chuyn ngc li danh sch) <> hoc <Ctrl>+<N> Chuyn ti cu lnh tip theo trong danh sch (di chuyn theo danh sch) <PgUp> Chuyn ti cu lnh u tin trong danh sch lch s lnh <!>, <N> Thc hin (khng cn nhn <Enter> cu lnh th n trong danh sch <!>, <->, <N> Thc hin cu lnh th n tnh t cui danh sch <!>, dng_k_t Thc hin dng lnh, c phn u trng vi dng_k_t. Vic tm dng lnh cn thit s c thc hin t cui tp tin lch s v dng lnh u tin tm thy s c thc hin <Ctrl>+<O> Cng ging nh nhn phm <Enter>, sau hin th cu lnh tip theo trong lch s lnh tm chng trong b nh (cache). Nu ngt ngun in th nhng thay i ny s khng c lu v s b mt, i khi c th dn n khng khi ng c my trong ln sau. Do cn bit dng h thng mt cch ng n trc khi tt my. Cng vic ny do cu lnh (chng trnh) shutdown m nhim. Ch c ngi dng root mi c th thc hin cu lnh shutdown ny6 , do bn cn ng nhp vo h thng di tn ngi dng ny, hoc dng cu lnh su c quyn tng ng. Cu lnh shutdown c c php nh sau: [root]# shutdown <ty_chn> <thi_gian> <dng_thng_bo>
Ghi ch: Rt c th khi chy lnh, bn s nhn c cu tr li bash: shutdown: command not found. iu c ngha l bash khng bit tm chng trnh y. Trong trng hp bn cn nhp vo ng dn y n chng trnh, y l /sbin/shutdown, v tp tin chng trnh ca shutdown nm ti /sbin.

Thng s dng hai trong s cc ty chn ca chng trnh shutdown:


-h dng hon ton h thng (halt, s tt my) -r khi ng li h thng (reboot).

Tham s thi_gian dng hn gi thc hin cu lnh (khng nht thit phi thc hin cu lnh ngay lp tc). Thi gian hn gi c tnh t lc nhn phm <Enter>. V d, nu bn mun khi ng li sau 5 pht th hy nhp vo cu lnh: [root]# shutdown -r +5 Cu lnh ny c ngha l dng h thng sau 5 pht v khi ng li sau khi hon thnh cng vic. i vi chng ta th tm thi cu lnh sau s thch hp hn:
6

Cng c th cu hnh nhng ngi dng khc thc hin c shutdown, v d qua sudo.

3.6 Tr gip khi dng Linux [root]# shutdown -h now

53

Cu lnh ny s tt my ngay lp tc. Tng ng vi cu lnh ny l lnh halt. Sau khi nhn t hp phm ni ting <Ctrl>+<Alt>+<Del> trn Linux s thc hin cc hnh ng tng t vi lnh [root]# shutdown -r now Bng cch ny cng c th tt my, nhng cn ngt ngun in trong khi h thng bt u khi ng li.

3.6

Tr gip khi dng Linux

Nh vy l bn c kt thc phin lm vic u tin vi HH Linux v ti mong rng bn cha cn tr gip trong mt tnh hung no . Tc gi cng mong cun sch ny s thc hin vai tr tr gip trong thi gian u tin ny, nhng c th n khng gii quyt c tt c nhng vn ca bn. V th tc gi s a ra ngay lp tc nhng ngun thng tin khc. Nhng ti s phi i trc k v cch nhn thng tin tr gip trong giao din ho (X Window). Tc gi coi cch gii quyt ny l ng v ngi dng cn bit trc cch thot khi nhng trng hp kh khn.

3.6.1

Cc ngun thng tin tr gip

Nu ri vo tnh hung m bn khng bit phi lm g c c kt qu mong mun, th tt nht hy tm tr gip ngay trong h thng. Cc phin bn Linux c hng nghn trang ti liu dng tp tin, do cu tr li cho cu hi ca bn nm trong lng bn tay. C mt vi ngun c lp cha thng tin v hu ht cc mt ca h thng Linux:
cc trang tr gip man tr gip siu vn bn info ti liu i km vi phn mm HOWTO v FAQ ca d n The Linux Document Project (http://www. tldp.org) cu lnh locate

Cn ni ngay lp tc l phn ln thng tin t nhng ngun ny bng ting Anh. Cc d n dch chng sang ting Vit cn cha c t chc hoc cn cha c hon chnh. Do chng ta s xem xt tng ngun thng tin ny mt cch c th hn.

54

Khi ng Linux ln u

3.6.2

Cc trang tr gip man

Nh ni ngn gn trn v cu lnh man, bng cu lnh ny ngi dng trong hnh hung kh khn lun lun c th tm tr gip v bt k cu lnh no ca h thng, v nh dng tp tin, v v cc gi h thng (system call). y l cch nhn tr gip chnh trong tt c cc h thng UNIX. Cc trang tr gip man chia thnh cc phn sau: Bng 3.4: Cc phn chnh ca tr gip man Phn 0 1 8 2 3 4 5 6 7 9 n Ni dung Cc tp tin header (thng nm trong /usr/include) Chng trnh hoc cu lnh ca ngi dng Cu lnh dng qun tr h thng Gi h thng (system call, hm do nhn cung cp) Gi th vin (library call, chng trnh con, hm trong th vin ca ng dng) Thit b (tp tin c bit, thng nm trong /dev) nh dng tp tin v quy c, v d /etc/passwd Tr chi Khc (bao gm cc gi macro v quy c, v d man(7), groff(7) Nhn (kernel routines) cc lnh Tcl/Tk

Th t lit k y khng phi l s nhm ln. Vn ch cc tp tin cha thng tin ca tr gip man nm trong cc th mc con ca th mc /usr/share/man v khi cu lnh man tm kim thng tin cn thit, th n s xem cc th mc con ny theo th t ch ra trong bng 3.4. Nu bn chy lnh [user]$ man swapon th s nhn c tr gip v cu lnh swapon nm trong phn 8. V th nu mun xem tr gip v gi h thng swapon cn chy lnh [user]$ man 2 swapon ch ra s th t ca phn tr gip cn tm kim thng tin. Cc trang man c xem bng chng trnh less (hoc chng trnh xc nh bi bin PAGER), do c kh nng xem thng tin theo tng mn hnh v di chuyn mn hnh ny xung di v ln trn v di chuyn c th s dng cc phm nh trong chng trnh less. Nhng phm thng dng nht l: Nu bn khng thch c t mn hnh m cm tay c, th c th in ra trang man tng ng bng lnh [user]$ man tn_cu_lnh | lpr hoc nu my in l postscript th dng: [user]$ man -t tn_cu_lnh | lpr

3.6 Tr gip khi dng Linux

55

Bng 3.5: Phm s dng xem trang man Phm Chc nng <Q> Thot khi chng trnh <Enter> Xem tng dng <Space> Hin th mn hnh thng tin tip theo <B> Quay li mn hnh trc </>, dng k t, <Enter> Tm kim dng k t ch ra <N> Lp li tm kim va thc hin. Tuy nhin c th nhn c thng tin mong mun th cn cn phi bit ch tm thng tin . Trong trng hp ny c th dng hai cu lnh whatis v apropos. Cu lnh whatis tm kim t kha a ra trong c s d liu bao gm danh sch cc cu lnh v m t ngn gn ca chng. Lnh ny ch a ra nhng trng lp chnh xc vi t kha tm kim. Cu lnh apropos thc hin tm kim theo cc phn ca t kha. Tng t nh lnh apropos l cu lnh man vi tham s -k. Hy th chy lnh sau: [user]$ man -k net Cn phi ni lun l cho cc cu lnh man -k, whatis v apropos lm vic, th u tin cn to ra c s d liu v cc cu lnh c trn my bng cch chy lnh makewhatis. Trong trng hp ngc li khi tm kim bn s nhn c thng bo nothing appropriate. Ch c ngi dng root mi c quyn chy cu lnh makewhatis. Nu bn c my chy c m th tt nht chy cu lnh ny dng cng vic cho tin trnh cron7 . Cui cng tc gi mun ni rng, cc trang tr gip man khng dnh cho thi gian lm quen u tin vi Linux. Chng dnh cho nhng ngi dng c kinh nghim cn c s tay tra cu v nh dng, tu chn v c php ca lnh trong qu trnh lm vic khng phi nh mt s lng ln nhng thng tin ny trong u.

3.6.3

Cu lnh info

Cu lnh info l dng tr gip thay th v tng ng vi man. nhn thng tin v mt cu lnh no , th cng ging nh man, cn nhp vo info cng vi mt tham s l tn ca cu lnh quan tm. V d: [user]$ info man Thng tin mn bn s thy trn mn hnh trong phn ln trng hp s khc vi nhng g m cu lnh man a ra. V theo kin ca nhiu ngi dng l v chiu hng tt hn. Nhng s khc nhau c bn nht ch info a ra thng tin dng siu vn bn (hypertext) ging nh cc trang web. Nh bn c kh nng xem cc phn khc nhau ca tr gip m khng cn phi thot ra khi chng trnh xem ny. Trong khi lm vic ch vn bn, bn c th
7

cron l chng trnh chy t ng cc cng vic theo thi gian nh.

56

Khi ng Linux ln u

chy cu lnh info trn mt trong cc terminal o (hy nh n cc t hp phm <Ctrl>+<Alt>+<F2>, <Ctrl>+<Alt>+<F3> v.v. . . ) c th chuyn sang terminal o tm tr gip khi cn thit. Trong trng hp bn khng bit tm thng tin cn thit u th c th chuyn sang cc phn khc nhau bng cc siu lin kt (hyperlink) m info to ra. Nhng lin kt ny c nh du bng k t sao (*), khc vi cch nh du lin kt trn cc trang Web nhng vn gi nguyn c s thun li. C th di chuyn qua cc lin kt bng phm <Tab>. Sau khi di chuyn n lin kt mong mun, hy nhn phm <Enter>. Phm <P> a ngi dng tr li trang va xem, phm <N> a n trang tip theo, cn <U> chuyn ln trn mt bc trong cu trc phn bc ca cc trang ti liu ny. Ngoi ra, cn c th chuyn theo lin kt bng cch khc tng t nh h thng trnh n. u tin cn nhn phm <M>, sau nhp vo dng Menu item: cui mn hnh mt vi k t u tin ca tn ca phn tr gip cn thit. Tn ca nhng phn tr gip ny c hin th trn mn hnh. S k t phi sao cho ch tng ng vi mt phn tr gip, nu khng th chng trnh s yu cu nhp thm vo. Thot ra khi info bng phm <Q>.

3.6.4

Cu lnh help

Nh nhc n trn, h thng tr gip v cc lnh tch hp ca h v bash l cu lnh help. Nu chy lnh help khng c tham s th s nhn c danh sch ca tt c cc lnh tch hp ca bash. Nu chy help tn, trong tn l tn ca mt trong nhng cu lnh ni trn, th bn s nhn c gii thiu ngn gn v cch s dng cu lnh ny.

3.6.5

Ti liu i km vi bn phn phi v chng trnh ng dng

Nu trong qu trnh ci t khng b i nhng gi ti liu, th sau khi kt thc bn s tm thy trong th mc /usr/share/doc (hoc /usr/doc) cc th mc con HOWTO, FAQ,. . . Nhng th mc ny cha ti liu y v h thng Linux ni chung cng nh nhng phn ring r ca n. Nhng ti liu ny c dng vn bn ASCII v c th xem chng bng cc cu lnh more tn hoc less tn hoc bng chng trnh xem c trong Midnight Commander. Phn ln cc chng trnh ng dng c km theo ti liu hng dn ci t v s dng. Nu ci t chng trnh t gi (package) dng rpm (Fedora Core, SuSE, Mandriva,. . . ) th ti liu s nm trong th mc con tng ng ca th mc /usr/share/doc. Tn ca nhng th mc con ny tng ng vi tn ca chng trnh v phin bn ca n. V d, chng trnh nhp ting Vit m ti ang dng g nhng dng ny xvnkb phin bn 0.2.9 c th mc con tng ng xvnkb-0.2.9 nm trong /usr/share/doc sau khi ci t. i khi tm tp tin tr gip mong mun bn s cn n cu lnh locate. Cu lnh ny trong mt chng mc no tng t vi cc lnh whatis v apropos. Khi chy locate n s tm tt c nhng tp tin c tn cha t kha a ra. V d locate net s tm tt c nhng tn tp tin c tn cha net. Nhng tp tin ny c rt nhiu trn my. Trong t kha (mu) c th s dng cc k t thay th *, ?, []. Tuy nhin cu lnh locate khng tm kim theo cc

3.6 Tr gip khi dng Linux

57

th mc ca h thng tp tin, m theo c s d liu c bit cha tn cc tp tin c to ra (v i khi cn cp nht) bng lnh updatedb. Trong mt s bn phn phi locate c thay th bi slocate (secure locate). slocate t to cho mnh c s d liu ni trn sau khi chy vi tham s tng ng.

3.6.6

Cu lnh xman

y l chng trnh cho php xem cc trang tr gip man khi lm vic giao din ho (GUI). Vic tm kim v hin th cc trang tr gip c thc hin bng cch nhn cc nt v trnh n. Cn li (theo thng tin hin th) xman cng ging nh man.

3.6.7

Cu lnh helptool

Sau khi chy lnh helptool s hin ra mt ca s ho, c mt nhp vo ngi dng a ra thut ng ang quan tm. Chng trnh s xem tt c cc tp tin ti liu (bn c th cu hnh chn nhng ti liu no cn xem khi tm kim). Sau khi hon thnh tm kim chng trnh s hin ra danh sch nhng tp tin c cha thut ng ny. Nu nhn chut vo mt tp tin trong danh sch th s hin ra mt ca s khc ni dung ca tp tin chn. Khi ny tp tin s c hin th dng lu trn a: trang info, trang man, v.v. . .

3.6.8

Sch v Internet

Tt nhin, hc Linux d dng v n gin nht khi c mt cun sch tt. Trc tin bn cn c ti liu hng dn i km vi bn phn phi ca mnh. Cc bn phn phi ln nh Debian, SuSE, Fedora,. . . u c nhng ti liu ny (rt c th c dch sang ting Vit). Rt tic ngi dch cha c cun sch ting Vit no v Linux do khng th gii thiu vi bn c. Tt nhin nu bn c kt ni Internet (by gi khng cn qu xa x) v mt cht ting Anh th c th tm c cu tr li cho mi cu hi ca mnh. Ti xin a ra mt s a ch sau lm bc khi u cho bn c trong bin thng tin v b bn ny.

Cc trang ting Vit


1. http://vnoss.org trang web dnh cho ngi dng m ngun m (MNM) Vit Nam. C nhiu thng tin v Linux, ti liu v Linux, din n cho php bn t cu hi ca mnh. Trang web do bc Nguyn i Qu ang sng v lm vic ti B qun l. 2. http://vnoss.net tin tc v Linux v MNM. 3. http://vnlinux.org y l trang web dnh cho nhm ngi dng Linux Vit Nam (vietlug). Bn s tm thy nhiu thng tin c ch y v c th ng k tham gia nhm th vietlug t cu hi. Trang ny do anh Larry Nguyn, mt Vit Kiu M, qun l.

58

Khi ng Linux ln u 4. http://vnoss.net/dokuwiki/doku.php?id=linux:tailieutiengviet trn trang ny tng hp tt c nhng ti liu ting Vit v Linux, rt c th bn s tm thy ti liu v ti mnh cn tm hiu trn trang ny. 5. http://kde-vi.org trang web ca nhm dch giao din KDE sang ting Vit.

Cc trang ting Anh


1. http://www.linux.com 2. http://www.linux.org 3. http://www.linux.org.uk Trang web Linux ca Chu u. Do Allan Cox mt trong cc nh pht trin Linux h tr. 4. http://www.tldp.org Trang web chnh cha ti liu v Linux. Rt nhiu ti liu bao gm HOWTO, FAQ, sch. . . 5. http://freshmeat.net/ Thng bo hng ngy v nhng chng trnh ng dng mi ra dnh cho Linux. Kho phn mm khng l cho Linux. 6. http://www.li.org T chc Linux International. 7. http://www.linuxstart.com 8. http://oreilly.linux.co y bn s tm thy rt nhiu ti liu. 9. http://www.linuxplanet.com 10. http://www.kde.org Trang ch ca mi trng lm vic KDE. 11. http://www.gnu.org Cc ng dng dnh cho Linux, trong ni ting nht l trnh son tho Emacs (GNUs Not UNIX). 12. http://slashdot.org Nhng tin tc mi nht v cng ngh my tnh trong c Linux. C cc bi bo v li bnh ca ngi c (khng qua kim duyt). 13. http://www.linuxtoday.com Danh sch di nhng tin tc, thng bo qung co v cc thng tin khc. Xem trang ny bn s bit phn ln nhng s kin trong th gii Linux. 14. http://www.lwn.net Tin tc hng tun v Linux. Thng tin chia thnh tng hng mc: thng tin chung, thng mi, thng tin v nhn Linux, cng c pht trin chng trnh mi, chng trnh cho Linux, v.v. . . Nu bn mun tin tng rng Linux pht trin rt nhanh v mun nhn tr gip ca cc cng ty thng mi ln th nht nh phi thm trang ny. Tin tc trn tun bo ny c ban bin tp ch thch rt tt. 15. http://www.linuxnewbie.org Trang web tt cho nhng ngi dng mi.

3.6 Tr gip khi dng Linux

59

16. http://www.linuxjournal.com tp ch Linux. Thng ng nhng bi bo v nhiu ti. 17. http://www.linuxgazette.com t bo Linux ny s th v i vi c ngi dng mi v ngi dng c kinh nghim. 18. http://www.linuxfocus.org Tp ch phi thng mi ton cu. 19. http://www.linuxworld.com Mt trang web tt c rt nhiu bi bo hay. 20. http://www.linux-mag.com Linux Magazin, mt t tp ch rt th v. 21. http://www.penguinmagazine.com. Tt nhin y khng phi l danh sch y nhng trang web ni v Linux. Nhng trang ni trn ch l im khi u t bn s tm c nhng trang web khc trong bin thng tin Internet. i n u l ph thuc vo mun ca bn. Nu c vn trong lc ci t, th hy hi dch v khch hng ca phn phi a. Nu bn mua a ca mt cng ty chuyn mn th s c a ch lin lc ca dch v ny. Nu bn mua a ghi li hoc t ghi a t tp tin ISO nhn c qua Internet th rt c th li ci t l do khi ghi a gy ra. Hy s dng hp th in t. Bn nn ng k vi mt vi nhm th chung (mailing list) no , v d mailto:vietlug-users@userforge.net. Cch ng k cn ph thuc vo tng nhm th (ni chnh xc hn l ph thuc vo my ch iu khin nhm th ny). Nhng hin nay thng c hai cch ng k: gi th n mt a ch xc nh yu cu, ng k qua giao din web. Thng tin ny bn c th tm thy trn trang web gii thiu v nhm th chung. Tuy nhin bn cn bit l c c tt c th chung th cn rt nhiu thi gian, v cn phi c rt nhiu th ca nhng ngi dng mi khc (v d Console l g?), hoc thm ch c c nhng l th ng ngn (v d Hm nay dng Debian tht vui) v tt nhin l phi c c nhng th tr li cho nhng cu hi ny ca nhng ai bit mt cht g . Do nu mun bn c th xem kho lu tr nhng l th ny bng trnh duyt, rt c th c cu tr li cho cu hi ca bn . V nh vy bn khng cn phi ng k cng nh vit th vo nhm th chung na. Tt nhin nu khng tm thy th ng ngi ngn t cu hi. Ngi dng Linux ht sc vui lng tr li th ca bn. Bo m l bn s nhn c cu tr li, nu khng hiu th cn c th yu cu gii thch thm. Khi t cu hi c lin quan n h thng Linux ca bn, cn lun lun thm vo th ca mnh cng nhiu chi tit cng tt (nhng ng thm thng tin tha) bao gm: tn ca bn phn phi (Debian, SuSE, Fedora, hay mt ci no khc), phin bn nhn, c vn vi phn cng no (phin bn, dng ch ghi trn mch in t), thng bo no hin ra khi c vn . ng i hi ngi dng khc gi cu tr li thng n a ch ca bn, vit th vo nhm th chung l t th hin, vit th in t cng l s h tr k thut. Vit th th min ph, nhng s h tr k thut th khng. Xin hy lun nh iu !

Chng 4 Lm quen vi h thng tp tin ext3fs1


By gi bn bit cch khi ng v dng h thng Linux, n lc lm quen vi mt trong nhng thnh phn chnh v quan trng ca Linux l h thng tp tin. H thng tp tin l cu trc nh nhn ca h iu hnh c th cung cp cho ngi dng v cc tin trnh ti nguyn ca h thng dng b nh lu di trn cc a lu2 thng tin: a cng, a t, CD, DVD, v.v. . . Mi h thng tp tin, ging nh mt ci a n, c hai mt. Mt mt ca n lun quay v pha ngi dng (hay ni chnh xc hn l quay v pha ng dng), chng ta tm gi n l mt trc. T pha mt trc ny ngi dng thy h thng tp tin l mt cu trc lgc ca cc th mc v tp tin. Mt cn li, m ngi dng khng thy, quay v pha chnh bn thn a lu to thnh mt vng bn trong ca h thng tp tin i vi ngi dng, chng ta tm gi l mt sau. Mt ny ca h thng tp tin c cu trc khng n gin cht no. V y thc hin cc c ch ghi tp tin ln cc a lu khc nhau, thc hin vic truy cp (chn thng tin cn thit) v nhiu thao tc khc. Trong chng hin ti chng ta s xem xt mt quay v pha ngi dng ca h thng tp tin. Mt cn li s dnh cho mt chng sch sau. Cn ni thm l chng ta s xem xt mt h thng tp tin c th ext3fs, h thng tp tin c bn ca Linux n thi im hin nay. Cn c nhng h thng tp tin khc nhng chng ta s cp n chng mun hn.

4.1

Tp tin v tn ca chng

My tnh ch l cng c lm vic vi thng tin khng hn khng km. M thng tin trn mi HH c lu dng tp tin trn cc a lu. T pha ca HH th tp tin l mt chui lin tc cc byte vi chiu di xc nh. H iu hnh khng quan tm n nh dng bn trong ca tp tin. Nhng n cn t cho tp tin mt ci tn no ngi dng (hay ni ng hn l chng trnh ng dng) c th lm vic vi tp tin. Lm sao ngi dng c th lm vic vi tp tin l cng vic ca h thng tp tin, ngi dng thng khng cn quan tm n. V th, i vi ngi dng th h thng tp tin l mt cu trc lgc ca cc th mc v tp tin. Tn tp tin trong Linux c th di 255 k t bao gm bt k k t no tr k t c m bng 0 v k t du gch cho (/). Tuy nhin cn c nhiu k t na c
1 2

Chng ny do ngi dch vit Mt s tc gi thch dng thut ng vt cha y.

4.1 Tp tin v tn ca chng

61

ngha c bit trong h v shell v do khng nn dng t tn tp tin. l nhng k t sau: ! @ # $ & ~ % * ( ) [ ] { } " \ : ; > < du cch Nu tn tp tin cha mt trong nhng k t ny (khng khuyn dng nhng vn c th) th trc n phi t mt du gch cho ngc (\) (iu ny vn ng trong trng hp c chnh bn thn du gch cho ngc, tc l phi lp li du ny hai ln). V d: [user]$ mkdir \\mot\&hai s to th mc \mot&hai. Cn c th t tn tp tin hoc th mc vi nhng k t ni trn vo du ngc kp. V d, to th mc c tn mot hai ba chng ta cn dng cu lnh sau: [user]$ mkdir "mot hai ba" v cu lnh [user]$ mkdir mot hai ba s to ba th mc: mot, hai v ba. Lm tng t nh vy i vi nhng k t khc, tc l c th thm chng vo tn tp tin (th mc) nu a tn vo trong du ngoc kp hoc dng du gch cho ngc b i ngha c bit ca chng. Tuy nhin tt nht l khng s dng nhng k t ny k c du cch trong tn tp tin v th mc, bi v c th gy ra vn cho mt s ng dng khi cn s dng nhng tp tin nh vy v c khi di chuyn nhng tp tin ln h thng tp tin khc. i vi du chm th khng phi nh vy. Trong Linux ngi dng thng t nhiu du chm trong tn ca tp tin, v d xvnkb-0.2.9.tar.gz. Khi ny khi nim phn m rng tp tin (thng dng trong DOS) khng cn c ngha g, mc d vn dng phn cui cng ca tn tp tin sau du chm lm k hiu v cc dng tp tin c bit (.tar.gz dng k hiu cc tp tin nn3 ). Trn Linux cc tp tin chng trnh v tp tin bnh thng khng phn bit theo phn m rng ca tn (trong DOS tp tin chng trnh c phn m rng exe) m theo cc du hiu khc, chng ta s cp n sau. Du chm c ngha c bit trong tn tp tin. Nu n l du chm u tin trong tn, th tp tin ny s l n (thuc tnh hidden) i vi mt s cu lnh, v d, lnh ls khng hin th nhng tp tin nh vy.4 Nh ni chng trc trong Linux c phn bit cc k t vit hoa v vit thng. iu ny cng ng i vi tn tp tin. V th l4u-0.9.2.tar.gz v L4U-0.9.2.tar.gz c th nm trong cng mt th mc v l tn ca cc tp tin khc nhau. iu ny lc u c th gy kh khn cho ngi dng Windows nhng sau khi quen th bn s thy n tht s c ch. Chng ta quen vi vic tp tin c xc nh hon ton theo tn ca n. Tuy nhin nu nhn t pha h iu hnh v h thng tp tin th khng phi
3 4

thng gi theo ting lng l tarball, qu bng tar Nhng lnh ls -a s hin th. c thm ls(1) bit chi tit.

62

Lm quen vi h thng tp tin ext3fs

nh vy. Chng ta s ni k v mt sau ca h thng tp tin trong mt s chng sch sp ti, nhng by gi cng cn cp n mt cht v ch s inode. Vn ch mi tp tin trong Linux c mt ch s k hiu (index descriptor) tng ng, hay cn gi l inode (tm thi cha c thut ng ting Vit chnh xc nn xin nguyn t ting Anh). Chnh inode lu tt c nhng thng tin cn thit cho h thng tp tin v tp tin, bao gm thng tin v v tr ca cc phn ca tp tin trn a lu, thng tin v dng tp tin v nhiu thng tin khc. Cc ch s inode nm trong mt bng c bit gi l inode table. Bng ny c to ra trn a lu cng lc vi h thng tp tin. Mi a lu d l tht s hay lgc th u c mt bng cc ch s inode ca ring mnh. Cc inode trong bng c nh s theo th t, v chnh ch s ny mi l tn thc s ca tp tin trn h thng. Chng ta s gi ch s ny l ch s ca tp tin. Tuy nhin i vi ngi dng th nhng tn nh vy tht s khng thun tin. Khng phi ai cng c kh nng nh ghi g trong tp tin vi s 12081982 (ni chnh xc hn l ch c mt s rt t ngi c kh nng ny). V th cc tp tin cn c t thm mt tn thn thin vi ngi dng v hn th na cn c nhm vo cc th mc. Tc gi a ra nhng thng tin trn ch ni rng tn ca bt k tp tin no trong Linux khng phi g khc m chnh l lin kt n ch s inode ca tp tin. V th mi tp tin c th c bao nhiu tn ty thch. Nhng tn ny cn c gi l lin kt cng (hard link) (chng ta s lm quen k hn vi khi nim lin kt v cch to nhng lin kt ny trong chng sau). Khi bn c xa mt tp tin c nhiu tn (lin kt cng) th trn thc t ch xa i mt lin kt (m bn ch ra trn dng lnh xa). Thm ch c khi bn c xa i lin kt cui cng th cng khng c ngha l xa ni dung ca tp tin: nu tp tin ang c h thng hay mt ng dng no s dng, th n c lu n lc h thng (ng dng) gii phng n. c th thm tn khc cho tp tin hoc th mc (to lin kt cng), chng ta s dng cu lnh ln dng sau: ln tn__c tn_mi V d: [user]$ ln projects/l4u/l4u-0.9.2.pdf ~/l4u.pdf K t c ngha c bit, n ch th mc c nhn (home directory) ca ngi dng, chng ta s ni k hn v k t ny ngay sau y. By gi c th dng ~/l4u.pdf thay cho ng dn di hn projects/l4u/l4u-0.9.2.pdf. Chi tit v cu lnh ln bn c th c trong trang man ca n. C th tm ra s lng lin kt cng n tp tin (tc l s lng tn ca tp tin) bng lnh ls vi tham s -l5 . Ngay pha sau quyn truy cp n tp tin l mt s cho bit s lng nhng lin kt cng ny:
[user]$ ls tng 1280 -rw-r--r-drwxr-xr-x -rw-r--r--rw-r--r-5

-l 1 2 2 1 teppi82 teppi82 teppi82 teppi82 users 81409 2006-09-06 03:43 bash.tex users 4096 2006-09-06 02:16 images users 82686 2006-09-06 14:32 l4u-0.9.2.pdf users 3069 2006-09-06 13:52 l4u.tex

Nu bn dng SuSE Linux th c th nhp vo lnh ll.

4.2 Th mc (Danh sch b ct bt v khng cn thit).

63

4.2

Th mc

Nu nh cu trc tp tin khng cho php s dng g khc ngoi tn tp tin (tc l tt c cc tp tin nm trn mt danh sch chung ging nh cc ht ct trn bi bin) th thm ch c khi khng c gii hn v di ca tn, rt kh c th tm n tp tin cn thit. Hy tng tng bn c mt danh sch khong vi nghn tp tin! Xin ng nghi ng, mt h thng Linux hon chnh s c s lng tp tin cn ln hn th. V th m cc tp tin c t chc vo cc th mc, cc th mc c th nm trong cc th mc khc, v.v. . . Kt qu l chng ta thu c mt cu trc th mc c phn bc bt u t mt th mc gc. Mi th mc (con) c th cha cc tp tin ring l v cc th mc con ca n. Cu trc phn bc ca th mc thng c minh ho bng cy th mc, trn mi th mc l mt nt ca cy, cn tp tin l cc l. Trn MS Windows hoc DOS cu trc th mc nh vy c trn mi a (tc l chng ta c khng phi mt cy m mt rng th mc) v th mc gc ca mi cu trc tp tin c nh du bng mt ch ci Latinh (v do c mt s hn ch). Trn Linux v UNIX ni chung ch c mt cu trc th mc duy nht cho tt c cc a lu, v th mc gc duy nht ca cu trc ny c k hiu bng du gch cho /. C th a vo th mc gc ny mt s lng khng hn ch cc th mc nm trn cc a lu khc nhau (thng ni l gn h thng tp tin hoc gn a lu). Tn ca th mc cng c t theo nhng quy nh nh i vi tn tp tin. V ni chung ngoi cu trc bn trong ca mnh th th mc khng khc g so vi nhng tp tin thng thng, v d tp tin vn bn (text file). Tn y ca tp tin (hoc cn gi l ng dn6 n tp tin) l danh sch tn ca cc th mc bao gm th mc cha tp tin v cc th mc m, bt u t th mc gc / v kt thc l bn thn tn ca tp tin. Trong ng dn ny tn ca cc th mc con cch nhau bi du gch cho / dng k hiu th mc gc nh ni trn. V d /home/teppi82/projects/l4u/ext3fs.tex l tn y ca tp tin ti ang nhp vo trn my ca mnh. H v shell lu gi tr ca th mc hin thi, tc l th mc m ngi dng ang lm vic trong . C mt cu lnh cho bit tn ca th mc hin thi, l lnh pwd. Ghi ch: nu ni mt cch chnh xc, th th mc hin thi lun i lin vi mi tin trnh chy (trong c h v shell), v th i khi chy mt chng trnh no trong shell c th dn n vic thay i th mc hin thi sau khi chng trnh hon thnh cng vic. Ngoi th mc hin thi mi ngi dng cn c mt th mc nh (home directory, phng n dch th mc c nhn c u tin hn, v chng ta s dng thut ng ny trong cun sch l4u). l th mc trong ngi dng c ton quyn7 : c th to v xa cc tp tin, thay i quyn truy cp n chng, v.v. . . Trong cu trc th mc ca Linux nhng th mc c nhn ca ngi dng thng nm trong th mc /home v thng c tn trng vi tn ng nhp ca
6 7

y l ng dn tuyt i Ni chnh xc hn l: c ton quyn n khi no root cha thay i chng :).

64

Lm quen vi h thng tp tin ext3fs

ngi dng . V d: /home/nhimlui. Mi ngi dng c th lm vic vi th mc ca mnh bng k hiu ~, tc l ngi dng nhimlui c th lm vic vi th mc /home/nhimlui/hinhanh bng ~/hinhanh. Khi ngi dng vo h thng, th mc c nhn s tr thnh th mc hin thi ca ngi dng ny. Cu lnh cd dng thay i th mc hin thi. Tham s ca lnh ny l ng dn y hoc ng dn tng i n th mc m bn mun dng lm hin thi. Khi nim ng dn y (tuyt i) gii thch trn, by gi chng ta s ni r hn v khi nim ng dn tng i. ng dn tng i l danh sch cc th mc cn phi i qua trong cy th mc c th chuyn t th mc hin thi n th mc khc (chng ta gi n l th mc ch). Nu th mc ch nm pha di trong cu trc th mc, tc l nm trong mt th mc con, hoc chu, cht no ca th mc hin thi, th n gin: ch cn ch ra th mc con ca th mc hin thi, sau th mc con ca th mc con (th mc chu),. . . cho n khi no ti c th mc ch. Nu nh th mc ch nm cao hn trong cu trc th mc, hoc nm hon ton trn mt cnh khc ca cy th mc, th phc tp hn mt cht. Tt nhin trong bt k trng hp no cng c th s dng ng dn tuyt i, nhng khi cn phi nhp vo mt ng dn rt di. Vn ny c gii quyt nh sau: mi th mc (tr th mc gc) c duy nht mt th mc m trong cy th mc. Trong mi th mc c hai bn ghi c bit. Mt trong s chng c k hiu l du chm (.) v ch n chnh bn thn th mc ny, cn bn ghi th hai c k hiu l hai du chm n (..), n ch n th mc m. Chnh nhng du hai chm ny c dng ghi ng dn tng i. V d, dng th mc m lm th mc hin thi, th ch cn chy lnh: [user]$ cd .. Cn chuyn leo ln hai bc ca cy th mc, ri t h xung th mc vnoss/doc th cn chy lnh: [user]$ cd ../../vnoss/doc Cu lnh ls dng a ra mn hnh danh sch cc tp tin v th mc con ca th mc hin thi. Cn lu l trn thc tn cu lnh ls ch a ra ni dung ca tp tin m t th mc ny, v khng xy ra bt k no thao tc lm vic vi tp tin ca th mc. Nh ni trn, mi th mc ch l mt tp tin bnh thng, trong c lit k tt c nhng tp tin v th mc con ca th mc ny. Tc l khng c cc hp c bit cha cc tp tin, ch c cc danh sch tp tin thng thng xc nh tp tin hin thi thuc v mt th mc no . Nu chy cu lnh ls khng c tham s th chng ta ch thy tn ca cc tp tin ca th mc hin thi. Nu mun xem ni dung ca mt th mc khc, th cn phi a cho cu lnh ls ng dn tuyt i hoc tng i n th mc . V d: [user]$ ls projects BanTin drupal-vn bashscripts fluxbox chem-tex gnomevi debian HocTap KDE-vi l4u manvi mc mrtg others SuSE syslinux Xfce vim vnlinux vnoss

4.3 Cng dng ca cc th mc chnh

65

Bn ghi v tp tin trong th mc tng ng ngoi tn cn c rt nhiu thng tin v tp tin ny. thy c nhng thng tin chi tit , th cn dng cc tham s m rng khc ca cu lnh ls. Nu chy cu lnh ls vi tham s -l th khng ch c tn tp tin m s hin th c d liu v quyn truy cp n tp tin (chng ta s ni n sau); s lng lin kt cng hay s lng tn (nu l th mc th ngay t u c hai lin kt nh vy l . v .., do s ny bng s th mc con cng thm 2); tn ch s hu tp tin, tn nhm s hu tp tin (xin c gi tt l nhm tp tin mc d ti ngha); kch thc tp tin v thi gian sa i cui cng. Mt v d minh ha khc:
[user]$ ls tng 1316 -rw-r--r--rw-rw-r--rw-r--r--rw-r--r--rw-r--r-drwxr-xr-x -rw-r--r--l 1 1 1 1 1 2 1 teppi82 teppi82 teppi82 teppi82 teppi82 teppi82 teppi82 users users users users users users users 81629 98135 783 20778 2013 4096 3267 2006-09-08 2006-09-08 2006-09-08 2006-09-09 2006-09-08 2006-09-08 2006-09-08 22:11 13:54 21:58 02:48 21:34 14:25 23:13 bash.tex caidat.tex ChangeLog ext3fs.tex gioithieu.tex images l4u.tex

Nu a thm tham s -i th trong ct u tin s hin th ch s inode ca tp tin. Khi dng tham s -t vic sp xp c thc hin khng theo tn m theo thi gian sa i tp tin. Tham s -u dng hin th thi gian truy cp cui cng thay vo ch thi gian sa i. Tham s -r o ngc li trt t ca sp xp (cn phi s dng cng vi cc tham s -l hoc -t). Cn ch rng c th lit k cc tham s mt cch ring r nh th ny: [user]$ ls -l -i - r hoc gp li nh th ny: [user]$ ls -lir Chng ta dng m t ngn gn v cu lnh ls y (chi tit v lnh ny c th xem trn cc trang man hoc info tng ng) v chuyn sang xem xt cc th mc chnh ca cu trc tp tin trong Linux.

4.3

Cng dng ca cc th mc chnh

Nu nh bn c tng dng Windows (v d 2000 hay XP), th bit rng mc d ngi dng c ton quyn t chc cu trc th mc, nhng mt s truyn thng vn c tun theo. V d cc tp tin h thng thng nm trong th mc C:\Windows, cc chng trnh thng c ci t vo C:\Program Files, v.v. . . Trong Linux cng c mt cu trc th mc kiu nh vy v thm ch cn nghim ngt hn. Hn na c mt tiu chun xc nh cu trc th mc cho cc HH dng UNIX. Tiu chun ny c gi l Filesystem Hierarchy Standart (FHS). Nu c mong mun bn c th c ton b tiu chun ny ti a ch

66

Lm quen vi h thng tp tin ext3fs

http://www.pathname.com/fhs/. Cc bn phn phi Linux ln u tun theo tiu chun ny. Bng 4.1 di y a ra danh sch ngn gn nhng th mc chnh c to ra trong cu trc tp tin theo tiu chun ni trn. ct bn tri lit k cc th mc con ca th mc gc, cn ct th hai lit k mt vi (khng phi tt c) th mc con, cn ct th ba cui cng a ra m t ngn gn v cng dng ca nhng th mc ny. M t trong bng ny l ht sc ngn gn, chi tit hn bn c th c trong tiu chun FHS c trn http://www.pathname.com/fhs/. Bng 4.1: Cu trc th mc ca Linux Cng dng Th mc ny gm ch yu cc chng trnh, phn ln trong s chng cn cho h thng trong thi gian khi ng (hoc trong ch mt ngi dng khi bo tr h thng). y c lu rt nhiu nhng cu lnh thng dng ca Linux. /boot Gm cc tp tin c nh cn cho khi ng h thng, trong c nhn (kernel). Tp tin trong th mc ny ch cn trong thi gian khi ng8 . /dev Th mc cc tp tin c bit hoc cc tp tin thit b phn cng. Chng ta s ni n nhng tp tin ny ngay sau trong mt phn ring. Bn c c th xem qua man mknod (mknode(1)). /etc Th mc ny v cc th mc con ca n lu phn ln nhng d liu cn cho qu trnh khi ng ban u ca h thng v lu nhng tp tin cu hnh chnh. V d, trong /etc c tp tin inittab xc nh cu hnh khi ng, v tp tin ngi dng passwd. Mt phn cc tp tin cu hnh c th nm trong cc th mc con ca /usr. Th mc /etc khng c lu cc tp tin chng trnh (cn t chng trong /bin hoc /sbin. Di y chng ta s xem xt cng dng ca mt vi(!) th mc con ca th mc /etc. /etc/rc.d Th mc ny lu nhng tp tin s dng trong qu trnh khi ng h thng. Chng ta s cp chi tit v nhng tp tin ny v qu trnh khi ng ni ring trong mt vi chng sp ti. /etc/skel Khi to ngi dng mi, th nhng tp tin trong th mc ny s c sao chp vo th mc c nhn ca ngi dng . /etc/sysconfig Th mc lu mt vi (khng phi tt c) tp tin cu hnh h thng. /etc/X11 Th mc dnh cho cc tp tin cu hnh ca h thng X11 (v d, xorg.conf). /home Thng thng trong th mc ny l cc th mc c nhn ca ngi dng (tr root). Th mc /bin

do mt s nh qun tr khng t ng gn phn vng /boot vo trong qu trnh khi ng.

4.3 Cng dng ca cc th mc chnh Th mc /lib Cng dng Th mc ny lu cc th vin chia s ca cc hm m trnh bin dch C v cc mun (cc driver thit b) cn. Thm ch nu trn h thng khng c trnh bin dch C no, th cc th vin chia s vn cn thit, v chng c nhiu chng trnh s dng. Nhng th vin ny ch np vo b nh khi c nhu cu thc hin hm no , nh vy cho php gim kch thc m chng trnh nm trong b nh. Trong trng hp ngc li th cng mt m lp li nhiu ln trong cc chng trnh khc nhau. Th mc ny s dng phc hi h thng tp tin bng lnh fsck. Nu fsck tm ra tp tin m khng xc nh c th mc m th n s a tp tin vo th mc /lost+found. V th mc m b mt, nn tp tin s nhn c tn trng vi ch s inode ca n. y l im gn (mount) nhng h thng tp tin gn tm thi. Nu trn my tnh c ng thi Linux v Windows (DOS) th th mc ny thng dng gn cc h thng tp tin FAT. Nu bn thng gn mt vi a lu ng nh a mm, CD, DVD, a cng ngoi, flash,v.v. . . th c th to trong th mc ny cc th mc con cho tng a lu. Th mc dnh cho cc tp tin tm thi. bt k thi im ny ngi dng root cng c th xa tp tin khi th mc ny m khng lm nh hng ln n ngi dng khc. Tuy nhin khng nn xa nhng tp tin trong th mc ny, tr khi khi bn bit rng tp tin hoc nhm tp tin no ang gy nh hng n cng vic ca h thng. H thng s t ng dn dp th mc ny theo nh k, v th khng nn lu y nhng tp tin m bn c th s cn n. y l th mc c nhn ca ngi dng cao cp root. Hy ch l th mc ny khng nm cng ch vi th mc c nhn ca nhng ngi dng khc (trong /home). V th mc /bin ch yu lu cc tp tin thc thi (chng trnh v tin ch ca HH) s dng trong qu trnh khi ng v do nh qun tr chy. Trong tiu chun FHS c ni rng cn c trong th mc ny nhng tp tin thc thi s s dng sau khi gn thnh cng h thng tp tin /usr. t nht trong th mc ny phi c init, mkswap, swapon, swapoff, halt, reboot, shutdown, fdisk, fsck.*, mkfs.*, arp, ifconfig, route. y l im gn h thng tp tin proc cung cp thng tin v cc tin trnh ang chy, v nhn, v cc thit b tnh, v.v. . . y l h thng tp tin o. Chi tit bn c th c trong man 5 proc. Cc tp tin c bit ca th mc ny s dng nhn v gi d liu n nhn.

67

/lost+found

/mnt

/tmp

/root

/sbin

/proc

68 Th mc /usr

Lm quen vi h thng tp tin ext3fs Cng dng Th mc ny rt ln v cu trc ca n nhn chung lp li cu trc ca th mc gc. Trong cc th mc con ca /usr l tt c cc ng dng chnh. Theo tiu chun FHS th nn dnh cho th mc ny mt phn vng ring hoc t hon ton trn a s dng chung trong mng. Phn vng hoc a thng gn ch c v trn a (phn vng) l cc tp tin cu hnh cng nh tp tin thc thi dng chung, cc tp tin ti liu, cc tin ch h thng v c cc tp tin thm vo (tp tin dng include). Cc chng trnh (tin ch v ng dng) thng c ngi dng bnh thng s dng. /usr/bin/X11 l ni thng dng lu cc chng trnh chy trn X Window. V y cng thng l lin kt n /usr/X11R6/bin. Th mc con ny lu m ngun ca cc th vin tiu chun ca ngn ng C. Ngi dng cn c t nht l quyn c i vi th mc ny. D trong trng hp no cng ng sa nhng tp tin trong th mc ny, v chng c cc nh pht trin h thng kim duyt k cng (khng l bn bit v h thng tt hn cc nh pht trin). Trong th mc ny l cc th vin object ca cc chng trnh con, cc th vin ng (dynamic library), mt s chng trnh khng th gi trc tip. Cc h thng phc tp (v d Debian Linux) c th c cc th mc con ca mnh trong th mc ny. /usr/lib/X11 ni thng dng t cc tp tin c lin quan n X Window v cc tp tin cu hnh ca h thng X Window. Trn Linux thng l lin kt mm n th mc /usr/X11R6/lib/X11. y thng t cc chng trnh v cc th mc con (ni b) ch dnh cho my tnh ny, bao gm:
/usr/local/bin. y thng lu nhng chng trnh ng dng. /usr/local/doc cc ti liu i km vi chng trnh ng dng. /usr/local/lib th vin v tp tin ca cc chng trnh v h thng ni b. /usr/local/man cc trang tr gip man. /usr/local/sbin cc chng trnh dnh cho nh qun tr. /usr/local/src m ngun ca cc chng trnh.

/usr/bin

/usr/include

/usr/lib

/usr/local

/usr/sbin

Th mc ny gm cc chng trnh thc thi dnh cho nh qun tr v khng s dng trong thi gian khi ng.

4.3 Cng dng ca cc th mc chnh Th mc /usr/share Cng dng Th mc ny dng cho tt c cc tp tin d liu dng chung v c quyn truy cp l ch c. Thng dng chia s gia cc kin trc khc nhau ca HH, v d i386, Alpha, v PPC c th dng chung mt th mc /usr/share nm trn mt phn vng hoc a chia s trn mng. Cn ch l th mc ny khng dng chia s gia cc HH khc nhau hoc gia cc phin bn khc nhau ca cng mt HH. Tiu chun FHS khuyn dng th mc con cho mi chng trnh. Nhng th mc sau hoc lin kt mm sau phi c trong /usr/share: man (cc trang tr gip man), misc (nhng gi liu ty theo kin trc khc nhau). Chng ta xem xt mt vi th mc con ca th mc ny:
/usr/share/dict cc danh sch t (word list) ca ting Anh dng cho cc chng trnh kim tra chnh t nh ispell. /usr/share/man cc trang tr gip man. Mi phn ca man nm trong mt th mc con ring trong th mc ny. /usr/share/misc ( ni trn).

69

/usr/src /usr/tmp /usr/X11R6

M ngun ca cc thnh phn khc nhau ca Linux: nhn, ng dng. . . Mt ni na lu cc tp tin tm thi. Thng thng y l lin kt mm n /var/tmp. Cc tp tin thuc v h thng X Window.
/usr/X11R6/bin cc chng trnh ng dng ca h thng ny. /usr/X11R6/lib cc tp tin v th vin c lin quan n X-Window.

/var

/var/adm /var/lock /var/log

Trong th mc ny l cc tp tin lu cc d liu bin i (variable). Nhng d liu ny xc nh cu hnh ca mt s chng trnh trong ln chy sau hoc l nhng thng tin lu tm thi s s dng sau. Dung lng thng tin trong th mc ny c th thay i trong mt khong ln, v th mc gi cc tp tin nh bn ghi (log), spool, kha locking, cc tp tin tm thi, v.v. . . Lu cc thng tin v ti khon v thng tin chun on dnh cho nh qun tr. Cc tp tin iu khin h thng dng d tr ti nguyn. Cc tp tin bn ghi (log).

70 Th mc /var/run

Lm quen vi h thng tp tin ext3fs Cng dng Cc tp tin bin i trong thi gian thc hin cc chng trnh khc nhau. Chng lu thng tin v s tin trnh (PID) v ghi thng tin hin ghi (utmp). Tp tin trong th mc ny thng c dn sch trong thi gian khi ng Linux. Tp tin c t vo hng t ca cc chng trnh khc nhau, v d:
/var/spool/at cc cng vic m at chy. /var/spool/cron tp tin ca h thng Verb+cron+. /var/spool/lpd tp tin trong hng i in. /var/spool/mail tp tin thng th ca ngi dng. /var/spool/uucp tp tin ca h thng uucp.

/var/spool

/var/tmp

Cc tp tin tm thi.

4.4

Dng tp tin

Trong cc phn trc chng ta xem xt hai dng tp tin l tp tin thng thng v cc th mc. Nhng trn Linux cn c mt vi dng tp tin na. Chng ta s lm quen vi chng trong phn ny. Nh ni, i vi h iu hnh th tp tin ch l mt chui cc byte lin tc. Nh vy c th dng khi nim tp tin cho cc thit b v cc i tng khc. iu ny n gin ho s t chc v trao i cc d liu, v c th thc hin ghi d liu vo tp tin, chuyn d liu ln cc thit b v trao i d liu gia cc tin trnh bng cch tng t nh nhau. Trong tt c cc trng hp ny s dng cng mt phng php da trn tng chui cc byte. Do ngoi cc tp tin thng thng v th mc, nhng thnh phn sau cng c Linux coi l tp tin:
cc tp tin thit b cc ng (knh) c tn (named pipe) cc socket (t vi ngha nh t chim) cc lin kt mm (symlinks).

4.4.1

Cc tp tin thit b

Nh ni, i vi Linux th tt c cc thit b kt ni vo my tnh ( cng, tho ri, terminal, my in, my scan, mem, bn phm, chut, v.v. . . ) u l cc tp tin. V d, nu cn a ra mn hnh terminal th nht thng tin no , th h thng thc hin thao tc ghi vo tp tin /dev/tty1. C hai dng thit b: k t (hay cn gi l cc thit b trao i theo byte) v khi (trao i theo khi). S khc nhau gia hai dng ny nm cch c v ghi

4.4 Dng tp tin

71

thng tin vo cc thit b. Cc thit b k t trao i thng tin theo tng k t (theo tng byte) trong ch chui cc byte. V d thit b dng ny l terminal. Cn thng tin c c v ghi vo cc thit b khi theo cc khi. V d cc cng. Khng th c t a cng v ghi ln tng byte, trao i thng tin vi a ch c th theo tng khi. Trao i d liu vi cc thit b trn Linux do cc driver thit b m nhim. Nhng driver ny hoc nm trong nhn hoc nm ring dng mun v c th gn vo nhn sau. trao i vi cc phn khc ca h iu hnh mi driver to ra mt giao din lin lc c v ngoi ging nh tp tin. Phn ln nhng tp tin nh vy c to sn t trc v nm trong th mc dev. Nu nhn vo th mc /dev (tc l chuyn vo th mc bng lnh cd ri chy ls), th bn s thy mt lng khng l nhng tp tin thit b. Bng 4.2 cho bit nhng tp tin thng dng nht. Bng 4.2: Nhng tp tin thit b chnh Tp tin ngha /dev/console Console h thng tc l mn hnh v bn phm kt ni ti my tnh. /dev/hd Cc cng vi giao din IDE. Thit b /dev/hda1 tng ng vi phn vng u tin ca a cng u tin, a /dev/hda, tc l a Primary Master. /dev/sd cng vi giao din SCSI. /dev/fd Cc tp tin a mm. u tin l /dev/fd0, th hai l /dev/fd1. /dev/tty Cc tp tin h tr terminal ca ngi dng. Tn gi vn c lu k t khi kt ni teletype vo cc h thng UNIX lm terminal. Trn Linux nhng tp tin ny h tr cc terminal o (hy nh li chng trc). /dev/pty Cc tp tin h tr terminal gi. S dng cho cc kt ni t xa qua telnet. /dev/ttS Tp tin h tr lm vic vi cc cng kt tip nhau (cc cng COM). /dev/ttS0 tng ng vi COM1 trong DOS, /dev/ttS1 tng ng vi COM2. /dev/cua Cc tp tin cho mem. /dev/null Thit b ny c th gi l l en. Tt c nhng g ghi vo /dev/null s mt vnh vin. Nhng ngi vit script thng chuyn nhng thng bo khng cn thit vo thit b ny. Nu s dng /dev/null lm thit b nhp vo, th s thu c mt chui cc s 0, tc l trong trng hp ny tp tin c c bng 0. Mi dng thit b c th c mt vi tp tin thit b. V th cc tp tin thit b thng c hai s: ln (major) v nh (minor). S ln ca thit b cho nhn bit l tp tin ny thuc v driver no, cn s nh cho bit cn phi lm vic vi thit b c th no ca dng ny. i vi cc tp tin thit b, cu lnh ls -l cho bit s ln v s nh ni thay v kch thc ca tp tin.

4.4.2

Cc ng c tn (pipes)

Cn c mt dng tp tin thit b na l cc ng c tn, hay b m FIFO (First In First Out). Tp tin dng ny ch yu dng t chc trao i d liu gia

72

Lm quen vi h thng tp tin ext3fs

cc chng trnh khc nhau (pipe dch t ting Anh sang l ng, ng ng). ng l phng tin ht sc thun tin v s dng rng ri trao i thng tin gia cc tin trnh. Mt tin trnh c th c tt c nhng g m mt tin trnh khc t vo ng. Nu c hai tin trnh c sinh ra t cng mt tin trnh m trao i thng tin (thng xy ra), th ng c th khng c tn. Trong trng hp ngc li cn to ra mt ng c tn, v d bng chng trnh mkfifo. Khi ny bn thn tp tin ng ch tham gia vo s khi u trao i d liu.

4.4.3

Cc socket

Socket l kt ni gia cc tin trnh, cho php chng giao tip m khng chu nh hng ca cc tin trnh khc. Ni chung socket v s trao i qua socket ng vai tr ht sc quan trng trn tt c cc h thng UNIX, trong c Linux: socket l khi nim then cht ca TCP/IP v nh vy l da trn socket xy dng ton b Internet. Tuy nhin t pha h thng tp tin socket thc t khng khc cc ng c tn: ch l cc im cho php ni cc chng trnh vi nhau. Sau khi to ra kt ni, th trao i c thc hin m khng cn n socket: d liu do nhn chuyn trc tip t chng trnh ny n chng trnh khc. Mc d nhng tin trnh khc c th thy cc tp tin socket, nhng nhng tin trnh khng tham gia vo kt ni hin thi khng th thc hin bt k thao tc c hay ghi no ln tp tin socket. Trong s nhng h thng s dng socket cn k n X Window, h thng in v h thng syslog.

4.4.4

Lin kt mm

Trong phn v tn tp tin chng trc chng ta ni rng tp tin trong Linux c th c vi tn hay lin kt cng. Lin kt cng ch l mt tn khc cho tp tin ban u. N c ghi trong m t inode ca tp tin . Sau khi to lin kt cng khng th phn bit u l tn tp tin cn u l lin kt. Nu bn c xa mt trong s nhng tp tin ny (ni ng hn l mt trong s nhng tn ny), th tp tin vn cn c lu trn a cho n khi vn cn t nht mt tn. Rt kh phn bit tn u tin ca tp tin v nhng lin kt cng c to ra sau . V vy ch dng lin kt cng nhng ni khng cn bit s khc nhau. Mt trong nhng ng dng ca lin kt cng l ngn chn kh nng xa tp tin mt cch v tnh. im c bit ca lin kt cng l n ch thng n ch s inode, v do lin kt cng ch c th dng cho tp tin ca cng mt h thng tp tin, tc l trn cng mt phn vng (a lu). Nhng trn Linux cn c mt dng lin kt khc gi l (lin kt tng trng9 ). Nhng lin kt ny cng c th coi l tn ph cho tp tin, nhng chng l nhng tp tin khc nhng tp tin lin kt mm. Khc vi lin kt cng, lin kt mm c th ch n nhng tp tin nm trong h thng tp tin khc, v d trn nhng a lu ng, hoc thm ch trn mt my tnh khc. Nu tp tin ban u b xa, th lin kt mm tuy khng b xa nhng tr thnh v gi tr. Hy s dng lin kt mm trong nhng trng hp bn mun trnh s lm ln m lin kt cng c th gy ra, hoc khi tp tin nm trn mt h thng tp tin khc.
9

thut ng ny vn cha c thng nht, do a ra c hai trng hp c th gp.

4.5 Quyn truy cp n tp tin v th mc

73

Vic to bt k mt lin kt no cng ging nh sao chp tp tin, nhng khc ch l tn ban u ca tp tin cng nh lin kt cng ch n mt tp tin thc s trn a. V th nu bn c thay i tp tin qua mt tn no ca n, th s thy nhng thay i ny khi xem tp tin qua tn khc. to lin kt mm cn s dng cu lnh ln ni n v thm vo ty chn -s: [user]$ ln -s tn_tp_tin tn_lin_kt V d: [user]$ ln -s projects/l4u/l4u-0.9.2.pdf ~/l4u.pdf Sau khi thc hin cu lnh ny trong th mc c nhn ca ti xut hin tp tin l4u.pdf. V by gi nu xem danh sch tp tin trong th mc bng cu lnh ls -l, th trong danh sch s c mt dng nh sau:
lrwxrwxrwx 1 teppi82 users 20 2006-09-10 06:39 l4u.pdf -> projects/l4u/l4u-0.9.2.pdf

Hy ch n k t u tin ca dng ny, n cho chng ta bit tp tin l mt lin kt mm. Tt nhin iu ny c th thy r trong phn cui (phn tn tp tin), sau tn tp tin ca lin kt l mt mi tn ch n tp tin ban u. Nu bn to trong th mc mot mt lin kt mm ch n mt th mc khc, th c th di chuyn th mc mot i u ty thch, lin kt mm khi vn lm vic ng. Cng nh vy i vi chnh bn thn lin kt mm. Nhng khi to lin kt mm, hy hn ch s dng .. (lin kt n th mc m) trong tn tp tin ch n, bi v v tr ca lin kt mm c th thay i, m .. lun lun l th mc m ca th mc hin thi.

4.5

Quyn truy cp n tp tin v th mc

Bi v Linux l h iu hnh nhiu ngi dng, nn yu cu quy nh truy cp n cc tp tin v th mc l mt trong nhng yu cu thit yu nht m h iu hnh phi gii quyt. C ch quy nh truy cp c pht trin cho h thng UNIX vo nhng nm 70 ca th k trc rt n gin nhng c hiu qu n ni c s dng hn 30 nm, v hin thi vn cn c s dng gii quyt bi ton ny. C s ca c ch quy nh quyn truy cp l tn ngi dng v tn nhm ca ngi dng. Nh bn bit trong Linux mi ngi dng c mt tn ring khng lp li dng ng nhp vo h thng. Ngoi ra, trn h thng cn c cc nhm ngi dng, v Linux cho php mt ngi dng c th nm trong mt hoc nhiu nhm. To v xa cc nhm l cng vic ca ngi dng cao cp root, v root c th thay i thnh phn ca mt nhm no . Thnh vin ca cc nhm khc nhau c th c quyn truy cp khc nhau n tp tin, v d nhm cc nh qun tr c quyn nhiu hn so vi nhm cc nh lp trnh. Trong m t inode ca mi tp tin c ghi tn ca ch v nhm s hu tp tin. Ngy t u khi to tp tin ch ca n l ngi dng to ra n. Ni chnh xc hn l ngi dng m tin trnh to tp tin chy di tn h. Cng lc vi

74

Lm quen vi h thng tp tin ext3fs

ch s hu, tn ca nhm s hu cng c ghi vo theo thng tin tn nhm ca tin trnh to tp tin. C th thay i ch v nhm s hu trong qu trnh lm vic sau ny bng hai cu lnh chown v chgrp (chng ta s cp k hn v hai lnh ny ngay sau y). By gi hy thc hin mt ln na cu lnh ls -l, nhng c thm mt tham s na l tn ca mt tp tin c th no . V d tp tin chng trnh ca h v bash /bin/bash. Nhn tin, hy ch kh nng ny ca cu lnh ls -l hin th thng tin v mt tp tin c th no ch khng phi tt c cc tp tin trong th mc mt lc. [user]$ ls -l /bin/bash -rwxr-xr-x 1 root root 501804 2006-04-23 05:46 /bin/bash Nh bn c thy, trong trng hp ny ch s hu l ngi dng root, nhm s hu root. Nhng by gi trn dng ny chng ta s quan tm hn n vng u tin, vng xc nh dng tp tin v quyn truy cp n n. Vng ny trong v d trn l chui cc k t tm thi cha ni ln iu g -rwxr-xr-x. Nhng k t ny c th tm chia thnh bn nhm. Nhm th nht ch gm mt k t xc nh dng tp tin (mt trong bn dng nu phn trn). N c th l mt trong s nhng k t sau:
(gch ngang) tp tin thng thng d th mc b tp tin thit b khi c tp tin thit b k t s socket p ng c tn (pipe) l lin kt mm (symbolic link).

Sau k t xc nh dng tp tin l ba nhm, mi nhm gm ba k t xc nh quyn truy cp tng ng cho ch s hu, nhm s hu tp tin v cho nhng ngi dng khc. Trong v d ca chng ta quyn truy cp ca ch s hu l rwx, c ngha l ch s hu root c quyn c (r), ghi vo tp tin (w) v chy tp tin ny (x). Thay bt k k t no trong s nhng k t ny bng du gch ngang c ngha l ngi dng b tc mt quyn tng ng. Cng trong v d trn chng ta thy, tt c nhng ngi dng khc (k c nhng ngi dng ca nhm root) b tc mt quyn ghi vo tp tin ny, c ngha l h khng th sa tp tin v ni chung l khng th thay i tp tin bng cch no . Quyn truy cp v thng tin v dng tp tin trn cc h thng UNIX c lu trong m t inode dng cu trc 2 byte (16 bit). iu ny l tt nhin v my tnh ch lm vic da trn cc bit ch khng phi da trn cc k t r, w, x. Bn bit trong s 16 bit ny c dng cho bn ghi v dng tp tin. Ba bit tip theo xc nh cc tnh cht c bit ca tp tin thc thi (chng ta s ni n mt cht sau). V cui cng 9 bit cui cng xc nh quyn truy cp n tp tin. 9

4.5 Quyn truy cp n tp tin v th mc

75

bit ny chia thnh ba nhm, mi nhm 3 bit. Ba bit u tin xc nh quyn ca ch s hu, ba bit tip theo quyn ca nhm s hu, ba bit cui cng quyn ca nhng ngi dng cn li (tc l tt c nhng ngi dng, tr ch s hu v nhm s hu tp tin). Khi ny nu bit tng ng c gi tr bng 1, th c quyn , cn nu bng 0 th quyn b tc mt. dng ch ci th 1 c thay th bng cc ch ci tng ng (r, w hoc x), cn 0 th hin dng du gch ngang. Quyn c r tp tin c ngha l ngi dng c th xem ni dung tp tin bng cc chng trnh xem khc nhau, v d more, hoc bng cc trnh son tho vn bn. Nhng khi son tho bn s khng th lu nhng thay i trong tp tin ln a, nu khng c quyn ghi w vo tp tin ny. Quyn thc thi (ti thch dng thut ng quyn gi) c ngha l bn c c th np tp tin vo b nh v th chy m ny ging nh trng hp chng trnh. Tt nhin nu trn thc t tp tin khng phi l chng trnh (hoc cc script shell, perl, . . . ) th khng th gi tp tin, nhng ngc li nu tp tin l chng trnh m khng c quyn gi th cng khng th chy chng trnh . Nh vy l chng ta bit c trn Linux nhng tp tin no l c th thc thi. Bn thy khng, phn m rng ca tp tin y khng c lin quan g, tt c u do tnh cht thc thi t ra, v khc vi cc HH ca Microsoft khng phi ai cng c quyn gi tp tin. Nu vn thc hin cu lnh ls -l nhng tham s khng phi l tn tp tin m l tn th mc th chng ta s thy th mc cng c quyn truy cp v cng vn nhng ch ci r, w, x ni trn c dng xc nh quyn truy cp n th mc. V d, nu thc hin cu lnh: [user]$ ls -l /usr th s thy dng tng ng vi th mc share nh sau: drwxr-xr-x 128 root root 4096 2006-09-07 02:20 share

Tt nhin l i vi th mc th ngha ca cc khi nim quyn c, quyn ghi v quyn gi c thay i mt cht. Quyn c i vi th mc th ht sc d hiu, nu chng ta nh rng th mc cng ch l tp tin lu danh sch cc tp tin khc trong th mc . Cho nn nu ngi dng c quyn c th mc, th tc l c th xem ni dung ca th mc (c th ni khc l xem danh sch tp tin trong th mc). Quyn ghi cng d hiu. Khi c quyn ny, ngi dng c th to v xa cc tp tin trong th mc, tc l thm vo hoc xa khi th mc dng lu thng tin v mt tp tin no v cc lin kt tng ng. Quyn gi i vi th mc c hi kh hiu mt cht. Trong trng hp ny quyn gi ch quyn chuyn vo th mc ny. Nu bn c l ch s hu th mc v mun cho nhng ngi dng khc quyn xem mt tp tin no trong th mc ca mnh th cn phi cho h quyn truy cp (chuyn) vo th mc ny, tc l cho nhng ngi dng khc quyn gi (thc thi) th mc. Hn na cn cn phi cho ngi dng quyn gi i vi tt c cc th mc nm trc th mc ny trong cy th mc. Chnh v vy m theo mc nh tt c cc th mc c t quyn gi cho ch s hu cng nh nhm v nhng ngi dng khc. V tt nhin nu mun ngn chn truy cp vo th mc th ch cn b i quyn chuyn vo th mc (r) ca

76

Lm quen vi h thng tp tin ext3fs

tt c ngi dng (k c nhm s hu). ng tc b quyn ny ca chnh bn thn mnh, nu khng s phi phc hi li n trc khi c th c cc tp tin. Sau khi c on trn c th thy quyn c th mc l tha thi v khng cho ra tnh nng g mi so vi quyn gi. Tuy nhin vn c s khc nhau gia hai quyn ny. Nu ch a ra quyn gi, th ngi dng c th vo th mc, nhng s khng thy bt k mt tp tin no khi chy lnh ls (c th thy r hn nu bn s dng chng trnh Midnight Commander). Nu c quyn truy cp ti mt th mc con no ca th mc ny, th bn c th chuyn sang th mc con bng lnh cd, nhng cn phi nh tn ca th mc con ny, v s khng thy bt k danh sch v tp tin th mc no (trng hp ny ging nh khi chng ta i trong mn m khng thy ng, ch nh hng i). C ch kim tra quyn ngi dng khi s dng tp tin nh sau. u tin h thng kim tra xem tn ngi dng c trng vi tn ch s hu tp tin hay khng. Nu hai tn ny trng nhau (tc l ch s hu ang dng tp tin ca mnh), th kim tra xem ch s hu c cc quyn truy cp tng ng (c, ghi v gi) khng. ng ngc nhin khi ch s hu li khng c tt c mi quyn, ngi dng root c th tc b mt s quyn ca ch s hu tp tin. Nu c quyn truy cp , th s c cho php thc hin thao tc tng ng. Nu ch s hu khng c quyn no , th thm ch h thng khng kim tra quyn c th c nhm s hu v nhng ngi dng khc m a ra lun thng bo li khng th thchieejn c hnh ng yu cu (dng Permission denied). Nu tn ngi dng khng trng vi tn ch s hu th h thng kim tra xem ngi dng ny c nm trong nhm s hu hay khng. Nu c th kh nng truy cp n tp tin c xc nh bng quyn truy cp ca nhm, v khng ch n cc quyn ca ch s hu v nhng ngi dng cn li. Nu ngi dng khng phi l ch s hu v cng khng nm trong nhm s hu, th quyn ca h c xc nh bng nhm tnh cht th ba (nhm dnh cho nhng ngi dng cn li). Nh vy nhm tnh cht th ba trong quyn truy cp l dnh cho tt mi ngi dng, tr ch s hu v nhng ngi dng nm trong nhm s hu. thay i quyn truy cp ti tp tin ngi ta s dng lnh chmod (change mode). C hai cch s dng lnh ny. Khi dng cch th nht bn phi ch ra r rng thm quyn no cho ai hoc tc quyn no v ca ai nh sau: [user]$ chmod wXp tn_tp_tin Trong , ch k t w phi t mt trong cc k t sau:
u ch s hu g nhm s hu g o nhng ngi dng cn li a tt c bao gm ch s hu, nhm v nhng ngi dng cn li.

ch X l mt trong cc k t sau:
+ thm quyn tc b quyn

4.5 Quyn truy cp n tp tin v th mc


= dng quyn ch ra thay cho quyn c.

77

ch p l mt trong nhng k t sau:


r quyn c w quyn ghi x quyn gi (quyn thc hin.

Sau y l mt s v d s dng cu lnh chmod: [user]$ chmod a+x tn_tp_tin thm quyn gi tp tin tn_tp_tin cho mi ngi dng ca h thng. [user]$ chmod go-rw tn_tp_tin tc b quyn c v ghi ca mi ngi dng tr ch s hu tp tin. [user]$ chmod ugo+rwx tn_tp_tin [user]$ chmod a+rwx tn_tp_tin cho mi ngi dng quyn c, ghi v gi (thc hin). [user]$ chmod u=rwx,go=x tn_tp_tin cho ch s hu c tt c mi quyn (c, ghi, gi), nhng ngi dng cn li ch c quyn gi (thc hin). Nu khng ch ra ai c thm quyn truy cp, th s p dng cho tt c mi ngi dng, tc l c th dng lnh: [user]$ chmod +x tn_tp_tin thay cho [user]$ chmod a+x tn_tp_tin Phng n s dng th hai ca cu lnh chmod c kh hiu hn mt cht trong thi gian u s dng Linux, nhng li thng xuyn c cc nh qun tr cng nh ngi dng c kinh nghim dng. N da trn m ha quyn truy cp dng s. K t r c m ha bng s 4, w s 2, x s 1. xc nh quyn ca ngi dng cn cng cc s tng ng li vi nhau. Sau khi thu c ba gi tr s (cho ch s hu, nhm s hu v nhng ngi dng cn li), chng ta a ba s ny vo dng lm tham s cho lnh chmod. Chng ta cn t ba s ny pha sau tn lnh v pha trc tham s th hai (tn tp tin). V d, nu cn cho ch s hu mi quyn (4+2+1=7), cho nhm s hu quyn c v ghi (4+2=6) v nhng ngi dng cn li quyn gi (1=1), th dng lnh sau: [user]$ chmod 761 tn_tp_tin

78

Lm quen vi h thng tp tin ext3fs

Nu bn bit v m i ca h c s tm, th hiu rng nhng s ng sau tn lnh khng phi g khc m chnh l bn ghi h c s tm ca 9 bit xc nh quyn truy cp cho ch s hu, nhm s hu v nhng ngi dng cn li. Ch c ch s hu tp tin hoc ngi dng cao cp mi c kh nng thay i quyn truy cp bng cu lnh chmod. c th thay i quyn ca nhm s hu, th ch s hu (khng phi root) phi l thnh vin ca nhm . kt thc bi hc v quyn truy cp n tp tin cn ni thm v nhng tnh cht khc c th gp ca tp tin m cng xc nh bng lnh chmod. l nhng tnh cht cho cc tp tin thc thi. Trong m t inode, phn cu trc 2 byte xc nh tnh cht tp tin, chng chim cc v tr 5 7 ngay sau m cho bit dng tp tin. Tnh cht u tin l bit thay i ID10 ngi dng. ngha ca bit ny nh sau. Thng thng, khi ngi dng gi thc hin mt chng trnh no , th chng trnh ny nhn c nhng quyn truy cp n tp tin v th mc ca ngi dng chy n. Nu nh c t bit thay i ID ngi dng, th chng trnh nhn c quyn truy cp n tp tin v th mc ca ch s hu tp tin chng trnh. Nh vy bit ny cn c th gi l bit thay i ID ch s hu tin trnh. iu ny cho php gii quyt mt s vn kh thc hin. V d in hnh nht l cu lnh thay i mt khu passwd. Tt c mt khu c lu trong tp tin /etc/passwd (hoc mt tp tin m ha no khc, trong a s trng hp l /etc/shadow) m ch s hu l ngi dng cao cp root. V th chng trnh nu do ngi dng chy s khng th thc hin lnh ghi vo tp tin ny. C ngha l ngi dng khng th thay i mt khu ca mnh. Nhng tp tin /usr/bin/passwd c bit thay i ID ngi dng, v root l ch s hu tp tin chng trnh ny. Do chng trnh thay i mt khu passwd c chy vi quyn root v nhn c quyn ghi vo tp tin /etc/passwd. Tt nhin l trong chng trnh passwd c m ngi dng ch c php thay i mt dng trong tp tin ny dng ti khon ca ngi dng . Ngi dng cao cp root c th t bit thay i ID ngi dng bng lnh: [root]# chmod +s tn_tp_tin Tng t nh vy chng ta c bit thay i ID nhm. ngha ca bit ny cng ging nh trn nhng ch thay th ngi dng bng nhm. Mt tnh cht na ca tp tin thc thi l bit dnh (chnh xc hn l bit lu chng trnh) hay thut ng ting Anh l sticky bit. Chng ta s dng thut ng bit lu chng trnh v ng vi ng cnh ny hn. Bit ny ch h thng bit sau khi dng chng trnh cn lu li n trong b nh. Rt thun tin khi t bit ny cho nhng chng trnh thng gi, v trong trng hp ny s tit kim c thi gian np chng trnh vo b nh mi ln chy. Bit ny ch cn thit trn nhng my c. Trn nhng my top model (high end) hin i th rt him khi s dng. Nu s dng phng n xc nh tnh cht dng s ca lnh chmod, th gi tr ca ba tnh cht va ni phi nm trc nhng s xc nh quyn truy cp (tc l s u tin trong dy 4 s xc nh tt c cc tnh cht ca tp tin). V d:
Identificator, mi ngi dng c mt ID dng s nh vy. ID ca ngi dng l duy nht, khng trng lp. V d ID ca ngi dng cao cp root l 0.
10

4.6 Cc cu lnh c bn lm vic vi tp tin v th mc [root]# chmod 4775 tn_tp_tin

79

Khi ny cng vn s dng php cng nh i vi trng hp quyn truy cp v cc tnh cht c gi tr nh sau:
4 bit thay i ID ngi dng 2 bit thay i ID nhm 1 bit lu chng trnh (sticky bit).

Nu c (nhng) bit no trong s ba bit ny c t (nhn gi tr 1), th s c thay i ca kt qu ca lnh ls -l trong phn quyn truy cp (phn u tin). Nu bit thay i ID ngi dng bng 1, th k t x trong phn xc nh quyn truy cp ca ch s hu s c thay th bng k t s. Lc ny nu ch s hu c quyn gi tp tin th k t x c thay th bng ch ci s nh, cn ngc li (v d tp tin khng phi l chng trnh), th thay th x bng ch ci S ln. S thay th nh vy cng xy ra nu c t bit thay i ID nhm, tt nhin l s thay th k t x trong phn xc nh quyn truy cp ca nhm s hu. Nu bit lu chng trnh (sticky bit) bng 1, th thay th k t x trong phn xc nh quyn truy cp ca nhng ngi dng cn li bng k t t, nu nhng ngi dng cn li c quyn thc hin tp tin, bng k t T, nu ngc li. Nh vy, mc d trong kt qu ca lnh ls -l khng c nhng v tr ring hin th kt qu ca ba bit (bit thay i ID ngi dng, bit thay i ID nhm v bit lu chng trnh), chng ta vn c th thy c nhng thng tin ny. Mt vi v d: [user]$ ls -l /usr/bin/passwd /usr/bin/write -rwsr-xr-x 1 root shadow 72836 2006-05-02 12:50 /usr/bin/passwd -rwxr-sr-x 1 root tty 8936 2006-05-02 10:50 /usr/bin/write ( y chng ta thy c th lit k nhiu tp tin trn dng lnh ls -l, tc l dng nhiu tp tin lm tham s cho lnh ls.) [user]$ touch vidu [user]$ chmod 7766 vidu [user]$ ls -l vidu -rwsrwSrwT 1 teppi82 users 0 2006-09-11 12:46 vidu

4.6

Cc cu lnh c bn lm vic vi tp tin v th mc

Trong nhng phn trc chng ta cp n mt vi cu lnh lm vic vi tp tin v th mc, l pwd, cd, ls, ln, chmod. Trong phn ny chng ta s xem xt mt cch ngn gn mt vi cu lnh thng dng na.

80

Lm quen vi h thng tp tin ext3fs

4.6.1

Cu lnh chown v chgrp

Nhng cu lnh ny dng thay i ch s hu v nhm s hu tp tin. Ch c ngi dng cao cp root mi c quyn thay i ch s hu, cn thay i nhm s hu tp tin c th l root hoc ngi dng ch s hu. c quyn thay i nhm, th ch s hu cn phi l thnh vin ca nhm s s hu tp tin ny. C php ca hai cu lnh ny tng t nhau: [root]# chown tn_ngi_dng tn_tp_tin [root]# chgrp tn_nhm tn_tp_tin

4.6.2

Cu lnh mkdir

Cu lnh mkdir cho php to th mc con trong th mc hin thi. Tham s ca cu lnh ny l tn ca th mc mun to ra. Trong th mc va to s t ng to ra hai mc: . (lin kt n chnh bn thn th mc ny) v .. (lin kt n th mc m). to ra th mc con, bn c cn phi c quyn ghi vo th mc hin thi. C th to ra th mc con trong mt th mc khc th mc hin thi, nhng khi ny cn phi ch ra ng dn ti . V d: [user]$ mkdir ~/projects/l4u/images (hy nh li k hiu dng ch ca ngi dng). C th dng cc ty chn sau ca cu lnh mkdir:
-m mode xc nh quyn (ch ) truy cp cho th mc mi (v d: -m 700) -p to ra cc th mc trung gian ch ra trong ng dn (nu cha c chng). V d:
teppi82@ThinhQuyen:~> mkdir mot/hai mkdir: cannot create directory mot/hai: No such file or directory teppi82@ThinhQuyen:~> mkdir -p mot/hai teppi82@ThinhQuyen:~> ls -l mot tng 4 drwxr-xr-x 2 teppi82 users 4096 2006-09-11 13:36 hai

4.6.3

Cu lnh cat

Cu lnh cat thng dng to cc tp tin, mc d c th s dng lnh touch. Lnh cat cng a ra mn hnh (u ra) ni dung ca (cc) tp tin dng lm tham s ca n. Nu chuyn kt qu lm vic ca lnh cat vo mt tp tin no th c th to ra bn sao ca tp tin nh sau: [user]$ cat tp_tin1 > tp_tin2 Chnh bn thn cu lnh cat lc u c pht trin dng cho vic chuyn hng kt qu lm vic. V n c to ra cho s mc ni (concatenate, nu dng thut ng ca Ho hc l s cng cc tp tin), tc l s kt hp cc tp tin khc nhau vo mt:

4.6 Cc cu lnh c bn lm vic vi tp tin v th mc [user]$ cat tp_tin1 tp_tin2 ... tp_tinN > tp_tin_mi

81

V cng chnh kh nng chuyn hng kt qu ca cu lnh ny c dng to cc tp tin mi. Khi ny u vo ca lnh cat l dng d liu nhp t bn phm (u vo tiu chun), cn u ra s l tp tin mi: [user]$ cat > tp_tin_mi Sau khi nhp vo nhng g mun nhp, hy nhn t hp phm <Ctrl>+<D> hoc <Ctrl>+<C>, v tt c nhng g bn g s c lu li trong tp tin tp_tin_mi. Tt nhin l nh vy ch yu dng cat to cc tp tin vn bn ngn.

4.6.4

Cu lnh cp

Mc d i khi c th dng cu lnh cat sao chp cc tp tin, nhng trong Linux c mt cu lnh chuyn dng cho vic ny lnh cp. C th p dng mt trong hai dng ca lnh ny: [user]$ cp [ty_chn] ngun ch [user]$ cp [ty_chn] th_mc_ngun th_mc_mi Trong trng hp th nht sao chp tp tin (hoc th mc) ngun vo tp tin (hoc th mc) ch. Cn trong trng hp th hai th tp tin c trong th_mc_ngun s c sao chp vo th mc th_mc_mi. sao chp th cn c quyn c tp tin mun sao chp v quyn ghi vo th mc s sao chp n (th mc ch). Nu s dng mt tp tin c vo ch ca tp tin ch th ni dung ca n s b xa mt, do vy khi sao chp cn phi cn thn. V li c th s dng cu lnh cp vi ty chn -i. Khi trc khi ghi chn ln tp tin c h thng s hi li ngi dng. Rt nn dng ty chn ny. Cu lnh cp cn c mt vi ty chn c ch khc lit k trong bng 4.3. Bng 4.3: Nhng ty chn chnh ca lnh cp ngha Gi li thi gian sa i tp tin v c gi li nhng quyn truy cp c th gi li. Nu khng a ra ty chn ny th quyn truy cp ca tp tin s c thit lp theo quyn ca ngi dng chy lnh. R hoc r Nu ngun l th mc th sao chp th mc cng vi tt c nhng g (tp tin, th mc con) nm trong n, tc l gi li c cu trc ca th mc bn u (recursive). d Nu a ra ty chn ny th cc lin kt mm s vn l cc lin kt, nu khng th s sao chp tp tin (ni dung) m lin kt ny ch n. f Ghi chn tp tin khi sao chp m khng hi li hay cnh bo. Ty chn p

82

Lm quen vi h thng tp tin ext3fs

4.6.5

Cu lnh mv

Nu bn khng cn sao chp, m cn di chuyn tp tin t mt th mc ny vo mt th mc khc, th c th s dng cu lnh mv. C php ca lnh ny tng t nh c php ca cp. Hn na, lnh ny u tin sao chp tp tin (hay th mc), v sau mi xa tp tin (th mc) ban u. Cc ty chn ca n cng ging nh ca cp. Cu lnh mv khng ch dng di chuyn, m cn dng thay i tn tp tin v th mc, tc l di chuyn chng trong phm vi ca mt th mc. Ch cn t vo ch hai tham s tn c v tn mi ca tp tin nh th ny: [user]$ mv tn_c tn_mi Nhng hy ch l cu lnh mv khng cho php i tn mt vi tp tin cng lc bng cch s dng cc mu tn. Do cu lnh: [user]$ mv *.doc *.odt s khng lm vic. Khi s dng lnh mv cng ging nh khi s dng cp, ng quyn thm vo ty chn -i hin ra cnh bo khi c tp tin s b ghi chn.

4.6.6

Cu lnh rm v rmdir

xa nhng tp tin v th mc khng cn thit trn Linux c cc cu lnh rm (xa tp tin) v rmdir (xa th mc rng). s dng nhng cu lnh ny, bn c cn c quyn ghi vo th mc lu nhng tp tin hoc th mc mun xa. Khi ny quyn thay i chnh bn thn cc tp tin v th mc l khng cn thit. Nu mun cu hi xc nhn s cho php ca ngi dng xut hin trc khi xa tp tin, th hy dng ty chn -i (rt d nh, ty chn ny c nhng cu lnh cp, mv k trn). Nu dng cu lnh rm (khng c ty chn) xa th mc th s xut hin thng bo dng cannot remove l4u: Is a directory (khng th xa b, y l th mc). xa th mc th cn xa tt c nhng tp tin c trong n, sau xa bn thn th mc bng lnh rmdir. Tuy nhin c th xa th mc khng rng cng vi tt c nhng tp tin v th mc c trong n, nu s dng cu lnh rm vi ty chn -r. Nu chy lnh rm *, th s xa tt c nhng tp tin c trong th mc hin thi. Cc th mc con khng b ng ti. xa c tp tin v th mc con ca th mc hin thi cn dng ty chn -r k trn. Tuy nhin cn lun lun nh rng, trn Linux khng c cu lnh phc hi tp tin sau khi xa, thm ch c khi va xa xong11 . Theo ti ngh bt k ngi dng Linux no cng c th chia s vi bn cm gic b mt tp tin ngay trc mt. V th hy khi hai ln trc khi xa g v ng qun ty chn -i.
C mt s cch ph hi tp tin xa trn h thng tp tin c ext3fs, nhng chng ta l nhng ngi dng mi, do khng xem xt chng. Tt nhin bn c th tham kho ti liu HOWTO c trn http: //www.tldp.org ny trong trng hp khn cp.
11

4.6 Cc cu lnh c bn lm vic vi tp tin v th mc

83

4.6.7

Cu lnh more v less

Cu lnh cat cho php a ra mn hnh (u ra tiu chun) ni dung ca bt k tp tin ny, tuy nhin rt t khi lnh cat c s dng cho mc ch ny, v ch dng hin th nhng tp tin c dung lng rt nh. Nguyn nhn l ni dung ca tp tin ln s ngay lp tc chy qua mn hnh v ngi dng ch thy nhng dng cui cng ca tp tin. V th cat dng ch yu theo chc nng chnh ca n, tc l dng cng cc tp tin, cn xem ni dung ca cc tp tin vn bn chng ta dng cc lnh more v less hoc cc trnh son tho khc. Cu lnh (b lc) more a ni dung ca tp tin ra mn hnh theo tng trang c kch thc bng kch thc mn hnh (ni chnh xc th l gn bng, v c mt dng cui cng dnh cho hin th trng thi (status)). xem trang tip theo cn nhn vo phm trng <Space> (phm di nht trn bn phm hin nay). Nhn phm <Enter> c mt dng tip theo. Ngoi <Space> v <Enter> cn c mt vi phm iu khin khc, v d phm <B> quay li mn hnh trc, nhng chng ta s khng lit k y nhng phm ny y, v cng khng a ra danh sch cc ty chn ca lnh more. By gi bn c ch cn nh phm <Q> dng thot ra khi ch xem ca more, nu khng th bn s phi nhn phm <Space> cho n khi ht tp tin (chng may nu n qu di th bn s mt rt nhiu thi gian). Tt c cc tu chn ca lnh more bn c th c trong trang hng dn man (more(1)) hoc info ca n. Tin ch less l mt trong nhng chng trnh c d n GNU pht trin. less c tt c cc chc nng v lnh iu khin ca more, v c thm mt vi s m rng khc. V d, cho php s dng cc phm iu khin con tr (<>, <>, <>, <>, <Home>, <End>, <PgUp>, <PgDown>) di chuyn trong vn bn. Hy nh li, chng ta ni v iu ny khi ni v h thng tr gip man. Cc lnh more v less cho php tm kim t kha c trong tp tin ang xem, trong lnh less cho php tm kim theo hai hng: t trn xung di v ngc li. tm kim t kha string (mt cm k t no ) th u tin cn nhn / chuyn vo ch tm kim, sau nhp vo string vo dng / cui mn hnh. Nu tm thy t kha trong tp tin, th s hin th on vn bn tng ng sao cho dng tm thy nm trn cng. Nu mun tip tc tm kim hy nhn phm <N>, trong less c th dng t hp phm <Shift>+<N> tm kim theo hng ngc li.

4.6.8

Cu lnh tm kim find v mu tn tp tin

Cn c mt cu lnh thng dng lm vic vi tp tin trong Linux l cu lnh tm kim tp tin find. Cu lnh find c th tm kim tp tin theo tn, theo kch thc, thi gian to hoc thi gian sa i tp tin v theo cc tiu ch khc. C php chung ca cu lnh find c dng sau: find [danh_sch_th_mc] tiu_ch_tm_kim Trong tham s danh sch th mc xc nh ni tm kim tp tin mong mun. n gin nht l dng th mc gc / lm ni khi u tm kim. Tuy nhin trong trng hp tm kim c th ko di rt lu, v s lc sot tt cc th mc k c nhng h thng tp tin gn vo, trong c th c cc th mc mng

84

Lm quen vi h thng tp tin ext3fs

(v chuyn g xy ra nu tc ng truyn thp). C th lm s khi lng cng vic, nu dng mt danh sch nhng th mc, m tp tin c th nm trong, thay th cho th mc gc. V d: [user]$ find /usr/bin /sbin /bin /usr/local/bin -name cp Phn u ca tiu_ch_tm_kim xc nh xem chng trnh find phi tm ci g. Phn u ny l tham s bt u bng , (, ), , hoc !. Tt c cc tham s ng trc tiu_ch_tm_kim c coi l tn th mc cn lc sot. Nu khng ch ra mt th mc no, th tm kim s bt u t th mc hin thi v i su vo trong cc th mc con. Ngi dng thng thc hin tm kim theo tn tp tin nh v d trn, y tiu_ch_tm_kim c dng name tn_tp_tin. ch ty chn -name c th s dng ty chn -path, khi cu lnh s tm kim s tng ng ca tn tp tin y bao gm c ng dn ch ra. V d, cu lnh: [user]$ find . -path ./l*es s tm thy trong th mc hin thi th mc con l4u/images. Trong v d ny, ch tn ca tp tin hoc th mc chng ta s dng mt mu tn. V bi v mu tn tp tin khng ch s dng cho cu lnh find m cn s dng cng vi nhiu cu lnh khc (bao gm c nhng cu lnh ni n: chmod, chown, chgrp, cp, rm, cat, mv), nn chng ta cn ch v dnh thi gian nghin cu cc quy nh s dng v vit mu tn. Trong a s trng hp mu tn tp tin c to ra nh cc k t c bit * v ?. K t * s dng thay th cho bt k dng k t no. Trong Linux:
* tng ng vi tt c cc tp tin tr nhng tp tin n. .* tng ng vi tt c nhng tp tin n (trong c th mc hin thi . v th mc m ..). *.* ch tng ng vi nhng tp tin v th mc c du chm (.) gia tn hoc cui cng. a*p tng ng vi anhchup v anhchep. *a* tng ng vi May v march.

K t ? ch thay th mt k t bt k, v th taptin?.txt s tng ng vi cc tn sau (taptin1.txt, taptin2.txt, taptin9.txt. Ngoi * v ? trong Linux cn s dng cc du ngoc vung ([]) to mu tn. Trong hai du ngoc ny t danh sch cc k t (c th dng khong12 ) c th gp. V d [xyz]* tng ng vi tt c nhng tn tp tin bt u bng a, b, c. Cn *[G-K4-7] tng ng vi nhng tp tin c tn kt thc bng G, H, I, J, K, 4, 5, 6, 7. Hy ch l khng c khong trng trong c hai v d k trn. Tt nhin y ch a ra nhng thng tin tht ngn gn v mu tn tp tin v cc k t thay th. Bn c c th tm thy thng tin chi tit hn v mu
12

interval

4.6 Cc cu lnh c bn lm vic vi tp tin v th mc

85

Bng 4.4: Tiu ch tm kim ca cu lnh find. Gi tr Tm tp tin c tn tng ng vi mu_tn. Tm tp tin thuc v nhm ch ra. Tm tp tin c c bng s khi 512 byte 13 . Nu sau s c k t c th c ngha l kch thc c tnh theo byte (k t, charater), ch khng phi theo khi. mtime s_ngy Tm tp tin c thay i ln cui cng trc s_ngy ch ra. newer mu Tm tp tin c thay i sau khi thay i tp tin c trong mu. type dng_tp_tin Tm tp tin dng ch ra. Dng tp tin c xc nh bng mt trong cc k t sau: b (thit b khi), c (thit b k t), d (th mc), f (tp tin thng), p (ng c tn pipe), hoc l (lin kt mm). Ty chn name mu_tn group tn size s[c] tn tp tin trong ti liu IBM LPI tutorial bn dch ting Vit do nhm cng tc ca vnoss.org (trong c ti) thc hin c trn http://sourceforge.net/ projects/vnoss. Cn by gi sau khi lm quen vi mu tn tp tin, chng ta quay tr li vi cu lnh find v ni chi tit hn v nhng kh nng c th ca tiu ch tm kim. Mt vi v d n gin ca tiu ch tm kim c trong bng 4.4. Nhng tiu ch tm kim n gin khc bn c th tm thy trong trang man ca cu lnh find hoc trong ti liu LPI tutorial ni trn. Cn ni rng t nhng tiu ch n gin c th to ra nhng tiu ch phc tp hn nh cc php lgc and, or hoc php ph nh (k hiu l du chm than !). V d, nu bn mun tm tt c nhng tp tin c phn m rng14 l .odt v .tex, th c th dng tiu ch tm kim nh sau: (-name *.tex -or -name *.odt). C th s dng kt hp nh vy mt s lng bt k cc tiu ch k c tiu ch phc tp. Nu khng ch ra php lgc c th, th coi nh dng and, tc l c th dng mt trong hai cch ghi: (-name *.tex -and -name *.odt) hoc (-name *.tex -name *.odt). Nu ch dng mt php lgc and hoc !, th c th b i du ngoc, cn php lgc or v cc tiu ch phc tp hn th cn du ngoc. Trc du ngoc cn t mt du gch cho ngc (\), cn sau du ngoc cn t mt khong trng. V d, nu bn c mun tm th mc theo tn ca n th c th dng lnh: [user]$ find /usr/share -name man1 -type d hoc dng tiu ch phc tp: [user]$ find /usr/share \( -name man1 -and -type d \) Trong v d sau chng ta tm tp tin theo tiu ch nh sau: hoc tn tp tin c phn m rng *.tex, hoc kch thc tp tin nh hn 200KB.
[user]$ find ~/projects \( \( -name *.tex \) -or \( -size -200 \) \)
14

trong du ngoc v chng ta bit rng trong Linux khng c khi nim phn m rng tp tin.

86

Lm quen vi h thng tp tin ext3fs

Trong v d cui cng ny hy ch rng trc gi tr kch thc tp tin c du . Du ny c th s dng vi bt k tham s c gi tr s no trong tiu ch tm kim ca cu lnh find. C ngha rng cn tm tp tin c gi tr ca tham s nh hn s a ra. Tng t du + c ngha l cn tm tp tin c gi tr ca tham s ln hn s a ra. Nu khng c du + v du th tm tp tin c gi tr ca tham s bng s a ra. kt thc phn v cu lnh find ny, cn ni thm rng sau tiu ch tm kim c th a ra ngay thao tc x l tt c nhng tp tin tm thy. V d n gin nht l thao tc print. [user]$ find ~/projects -name *.tex -print dng a ra mn hnh danh sch tn ca tt c nhng tp tin tm thy cng vi ng dn y n tp tin. Thao tc ny c dng theo mc nh, tc l lun lun c dng khi khng ch ra thao tc no nh trong cc v d trc y. Mt v d khc l thao tc -exec cmd {}. Trong cmd l mt cu lnh bt k no ca h v shell. Trong trng hp ny s thc hin cu lnh cmd i vi tt c nhng tp tin tm thy. Sau cmd {} l du chm phy (;) c du gch cho ngc \ trc (chng ta s hiu r hn tc dng ca du gch cho ngc trong chng ngay sau). V d, nu bn mun xa tt c nhng tp tin trong th mc hin thi m ngi dng khng ng n trong vng 365 ngy hoc lu hn, th hy dng cu lnh sau: [user]$ find . -type f -atime +365 -exec rm {} \; ch -exec c th dng -ok, khi trc khi thc hin cu lnh cmd cho mi tp tin tm thy h thng s hi li xem bn c mun thc hin tht khng. Ni chung cu lnh cmd l mt cu lnh rt mnh, c ch v l mt cng c tm kim tt trong h thng tp tin. ng nhin l cha phi tt c nhng kh nng ca lnh ny c lit k ra y. Hy tm hiu trong trang tr gip man hoc mt cun sch dy cp no v Linux. V hy cn thn khi s dng nhng kh nng ca cu lnh ny nh gi nhng cu lnh khc thc hin trn tt c nhng tp tin tm thy. Hy nh rng s thay i thng l mt chiu.

4.6.9

Cu lnh split

i khi chng ta cn chia mt tp tin ln thnh tng phn nh. Ly v d bn c mt tp tin phim dng mpg ln, khong 1,2GB. V bn mun sao chp tp tin ny qua mt my khc nhng li khng c mt kt ni mng. V cng khng c ghi DVD m ch c ghi CD. Nhng tp tin ny khng th nm gn trn mt CD (dung lng khong 700MB). Do c th chia tp tin ny thnh hai phn mi phn nh hn 700MB sau s gp chng li. lm c vic ny chng ta c th s dng lnh split. Cu lnh split cho php sao chp tp tin bng cch chia chng ra thnh tng phn nh theo kch thc nh. Tham s ca lnh ny l tn ca tp tin ban u v phn u (prefix) tn ca cc tp tin s to ra. Cc tp tin thu c s c tn gm phn u (prefix) ny v hai ch thm vo chng khng trng

4.6 Cc cu lnh c bn lm vic vi tp tin v th mc

87

nhau: aa, ab, ac, ad, v.v. . . (khng c khong trng v cc du chm gia phn u v nhng ch ci ny). Nu khng a ra phn u, th theo mc nh s dng x, tc l s thu c cc tp tin xaa, xab, xac, xad v.v. . . Ngoi cc tham s c th thm vo ty chn -b xc nh kch thc ca cc tp tin to ra (tnh theo byte). Sau -b l mt s v sau l mt ch ci: k (kch thc tnh theo KB) hoc m (tnh theo MB). Nu khng a ra ty chn ny th theo mc nh kch thc ca tp tin thu c bng 1MB. gii quyt bi ton a lc u th cn chy lnh: [user]$ split -b 650m phim.mpg phim Sau dng chng trnh ghi a sao chp hai tp tin thu c (phimaa, phimab) ln hai a CD-R(W), ri a chng (c ngha l dng lnh cp) ln my th hai vo mt th mc no . Cui cng phc hi tp tin ban u bng lnh: [user]$ cat phim* > phim.mpg Sau c th xa i cc tp tin phimaa, phimab.

4.6.10

So snh cc tp tin v lnh patch

C th bn khng nhng khi lm vic vi my tnh cng vic so snh ni dung ca hai tp tin khc nhau gp mt cch thng xuyn. L v c th sao chp tp tin mt cch d dng, ri sau qun lun l tp tin no mi hn hoc tt hn. V th nhng cng c dng so snh tp tin l cn thit v tt nhin l c trong Linux. Cng c n gin nht trong s ny l lnh cmp (compare). Lnh ny ch so snh ni dung ca hai tp tin theo tng byte: [user]$ cmp tp_tin1 tp_tin2 Nu hai tp tin hon ton trng nhau, th lnh hon thnh cng vic m khng a ra thng bo g, cn nu chng khc nhau th a ra s th t ca dng v byte ch c s khc nhau. Tt nhin thng tin m lnh cmp a ra hi t c th quyt nh chn tp tin no trong s hai tp tin ny, tp tin no quan trng hn. V th cn c th s dng cu lnh diff bit c s khc nhau gia hai tp tin y l g. Ch cn cho cu lnh ny bit tn hai tp tin m bn mun so snh. V d: teppi82@ThinhQuyen:~> diff ChangeLog ChangeLog2 1c1 < 11 thng 09 nm 2006, phin bn 0.9.3 --> 18 thng 09 nm 2006, phin bn 0.9.3 Thng bo v s khc nhau s hin th trn mn hnh (u ra tiu chun). Chng ta c th chuyn hng bo co ny vo mt tp tin:

88

Lm quen vi h thng tp tin ext3fs

teppi@ThinhQuyen:~> diff ChangeLog ChangeLog2 > ChangeLog.diff teppi@ThinhQuyen:~> more ChangeLog.diff 1c1 < 11 thng 09 nm 2006, phin bn 0.9.3 --> 18 thng 09 nm 2006, phin bn 0.9.3 nh gi phin bn ca mt tp tin th thun tin hn nu s dng cu lnh sdiff. Kt qu so snh khi ny s hin th dng hai ct, phn cch nhau bi cc khong trng. Nu hai ct c cng s th t khc nhau, th chng s cch nhau bi mt du gch thng ng |. Nu mt dng no ch c trong tp tin th nht th n c nh du bng mt k t <, nu khng c trong tp tin th hai mt k t >. Cn c cu lnh diff3 cho php so snh 3 tp tin mt lc. Nhng thng s dng nht trn cc h thng UNIX v Linux vn l cu lnh diff. C th d dng hiu iu ny nu bit rng kt qu bo co ca diff v s khc nhau gia hai tp tin c th s dng cho cu lnh patch. Thng thng kh nng ny c dng khi phn phi bn cp nht ca chng trnh ng dng. Ly v d n gin (mt cch ngu ngc), mt chng trnh ng dng no c a cho ngi dng dng tp tin xvnkb-0.2.8.c, c cha m ngun ca chng trnh ny trn ngn ng C. Sau nh pht trin sa cc li v cp nht chng trnh ri lu m ngun trong mt tp tin khc xvnkb-0.2.9.c. By gi cn a nhng thay i lm n cho ngi dng. Tt nhin l ch cn gi cho ngi dng nhng thay i, tc l kt qu bo co to ra bng lnh: [chuoi]$ diff xvnkb-0.2.8.c xvnkb-0.2.9.c > xvnkb.c.diff Nh vy tt nhin l kch thc ca tp tin xvnkb.diff s nh hn nhiu so vi xvnkb-0.2.9.c, s tit kim c dung lng truyn ti qua mng Internet nu ch gi xvnkb.c.diff. Trong trng hp chng trnh ng dng ln th s tit kim ny l nh k. Tuy nhin tit kim cho ngi dng khng phi l ng dng chnh. M s pht trin ca ng dng m m mi l im chnh. Chng ta nh rng mt ng dng m m c pht trin bi c mt nhm cc nh pht trin v cng ng. Mi nh pht trin s ng gp on m ca mnh bng chnh cch ny. Tuy nhin sau khi nhn c tp tin *.diff th cn phi a nhng sa i lm vo phin bn hin thi. Bi ton ny l do patch gii quyt. c xvnkb-0.2.8.c v xvnkb.c.diff, ch cn chy lnh: [user]$ patch xvnkb-0.2.8.c xvnkb.c.diff > xvnkb-0.2.9.c s thu c tp tin xvnkb-0.2.9.c.

4.7

Cc cu lnh lu tr v nn tp tin

Khi s dng Linux rt c th bn s t lm vic vi phn ln cc lnh h v shell, v c nhng chng trnh tin ch nh Midnight Commander v cc

4.7 Cc cu lnh lu tr v nn tp tin

89

mi trng giao din ho nh KDE, GNOME. V cc tin ch v mi trng gip bn lm vic d dng vi cc tp tin nn s ni ti. Nhng l ngi dng Linux thc s bn cng nn bit nhng cu lnh nn v gii nn lm vic trong h v shell. Chng s gip bn lm vic nhanh hn vi nhng tp tin nn thng gp trong Internet. Phng tin chnh lm vic vi cc tp tin nn trong UNIX v Linux l hai chng trnh tar v gzip. Mc d khng ai cm bn s dng cc chng trnh arj, pkzip, lha, rar v.v. . . Nhng truyn thng ca Unix l tar v gzip v phn ln m ngun (v khng ch m ngun) ca cc chng trnh ng dng c phn phi dng ny. V th bit cch lm vic vi tar v gzip l danh d ca bt k ngi dng Linux no, cng ging nh samurai phi bit s dng kim vy.

4.7.1

Chng trnh tar

Nhng ngi dng quen vi nhng chng trnh nn dng winzip (a tt c tp tin vo mt kho ri sau nn chng) th c th s hi Ti sao li cn hai chng trnh?. Chng ta s tm thy cu tr li cho cu hi ny sau khi c xong hai phn ti y, v s thy y khng phi l mt yu im ca Linux m cn l im mnh nu bit cch kt hp nhp nhng hai chng trnh ny. Tn chng trnh tar c ngha l tape archiver, tc l chng trnh ny khng nn cc d liu m ch kt hp chng vo mt tp tin chung sau ghi tp tin ny ln cch bng nh (tape) thng dng lu tr thng tin. Nu mun to tp tin ny trn a cng, th cn s dng lnh tar vi ty chn f, sau ch ra tn tp tin. Chng trnh tar c 8 ty chn khc vi nhng ty chn cn li ch khi chy lnh tar th cn phi a ra mt trong s 8 ty chn ny. Tm ty chn ny xc nh cc chc nng chnh ca chng trnh (xem bng 4.5). Bng 4.5: Nhng ty chn chnh ca tar Ty chn ngha -A, --catenate, --concatenate Thm tp tin vo kho c. -c, --create To kho mi. -d, --diff, --compare Tm s khc nhau gia cc tp tin trong kho v trn h thng tp tin (so snh). --delete Xa tp tin khi kho (khng dng cho bng ghi). -r, --append Thm tp tin vo cui kho. -t, --list a ra danh sch cc tp tin trong kho. -u, --update Ch thm nhng tp tin mi hn bn sao trong kho (cp nht kho). -x, --extract, --get Ly tp tin ra khi kho (gii phng). Nu bn lm vic vi cc tp tin kho trn a ch khng phi vi bng ghi (y l a s trng hp s dng my tnh c nhn), th nht nh phi dng ty chn f. Nhng ty chn khc (tr 8 ty chn bt buc k trn) l khng cn thit, chng ch dng thm vo cc chc nng ph c th no . V d, ty chn v bt buc chng trnh phi a ra danh sch cc tp tin a vo kho.

90

Lm quen vi h thng tp tin ext3fs

C th lit k cc tu chn mt ch ci (c, f, . . . ) lin nhau v du gch ngang () pha trc c th dng nhng khng nht thit phi c. Chng ta s thy v d ti y. Ti s khng a ra m t tt c cc ty chn ca lnh tar, m ch cho bit mt s dng lnh cn thit nht lm vic vi cc kho tp tin. Nh vy s c ch hn trong thi gian ny. to mt kho tp tin tar t vi tp tin cn s dng mt trong hai lnh sau: [user]$ tar -cf tn_kho tp_tin1 tp_tin2 [user]$ tar cf tn_kho tp_tin1 tp_tin2 trong ty chn c (t by gi ti s b i du gch ngang pha trc tu chn) cho bit chng trnh cn to ra (create) kho tp tin, cn tu chn f cho bit l kho ny phi c to dng tp tin c tn tn_kho pha sau ty chn. Trong phn tn tp tin mun lu vo kho c th s dng cc mu tn, bao gm c cc k t thay th n gin nh * v ?. Nh vo tnh nng ny c th lu vo kho ngay lp tc nhiu tp tin bng mt cu lnh rt ngn. V d, to ra kho cha tt c cc tp tin ca mt th mc con ca th mc hin thi, gi s projects, th ch cn gi lnh: [user]$ tar cf projects.tar projects/* hoc thm ch cn n gin hn: [user]$ tar cf projects.tar projects Cu lnh ny s to ra kho projects.tar trong th mc hin thi. Kho ny khng ch lu tt c nhng tp tin c trong th mc projects m cn lu tt c nhng th mc con ca n cng vi tt c nhng tp tin nm trong chng (chng ta dng thut ng lu quy, hoc lu ton b cu trc th mc). Trong tp tin kho cu trc th mc ca projects vn c gi nguyn. Cn ch l trong v d trn nu ch * t *.* th s ch lu nhng tp tin nm trc tip trong th mc projects v nhng th mc con c du chm trong tn (t gp), nhng th mc con cn li ca projects s khng c lu. Cng trong v d ny nu khng ch ra tn th mc th s lu tt c cc tp tin v th mc con ca th mc hin thi. Nu chy lnh sau: [user]$ tar cvf tn_kho ./.* th khng ch lu tt c cc tp tin v th mc con ca th mc hin thi, m cn lu nhng tp tin ca th mc m. By gi bn c bit cch to kho tp tin. ly (gii phng) tt c tp tin ra khi kho, cn dng lnh: [user]$ tar xvf tn_kho Hin th danh sch cc tp tin trong kho bng lnh: [user]$ tar tvf tn_kho | less Gii phng mt tp tin no bng:

4.7 Cc cu lnh lu tr v nn tp tin [user]$ tar xvf tn_kho tn_tp_tin

91

Chng trnh tar l phng tin thun li to cc bn sao lu tr (sao lu) ca tp tin. Tt nhin cn c nhng tin ch sao lu chuyn dng khc, nhng c khi bn c khng bit nhng tin ch ny, th vn c th sao lu d liu qu bu ca mnh ln a mm bng: [user]$ tar Mcvf /dev/fd0 th_mc ri phc hi th mc bng lnh: [user]$ tar Mxpvf /dev/fd0 Hoc n gin hn, to mt tp tin kho cha: [user]$ tar cvf tn_kho th_mc

ri sao chp tp tin tn_kho ln mt thit b lu tho ri hoc th mc trn mng no (CD, DVD, flash, ftp,. . . ). Phc hi li bng lnh: [user]$ tar xpvf tn_kho Nu c kh khn khi s dng lnh tar, hy c tr gip man ca n hoc c nhng thng tin hin ra khi chy tar vi ty chn --help

4.7.2

Chng trnh gzip

Mc d chng trnh tar to ra kho tp tin, nhng nh ni trn, n khng nn kho ny li m ch kt hp cc tp tin ring r vo mt tp tin chung. nn tp tin ny li thng s dng cu lnh gzip. Trng hp n gin nht ca lnh ny trng nh sau: [user]$ gzip tn_tp_tin Trn dng lnh c th a ra cng lc vi tn hoc mu tn tp tin. Nhng khi ny mi tp tin s c nn ring r, ch khng to mt tp tin chung. gii nn tp tin hy dng mt trong hai cu lnh sau: [user]$ gzip -d tn_tp_tin hoc [user]$ gunzip tn_tp_tin Tp tin ban u sau khi nn s b xa, ch cn li tp tin nn. Cn khi gii nn th tp tin nn s b xa, ch cn li tp tin bnh thng. Chng ta c cm gic nh tp tin c a ra, a vo mt kho. Nhng l nhng tp tin hon ton khc nhau! Hy s dng lnh ls -i kim tra ch s inode ca chng. By gi chng ta s lit k mt vi ty chn c ch ca chng trnh gzip vo bng 4.6. Bi v chng trnh gzip khng c kh nng lu nhiu tp tin vo trong mt tp tin, nn thng dng gzip nn nhng kho tp tin do tar to ra. Hn na cn c th s dng kt hp hai chng trnh ny. Chng ta s xem xt vn ny ngay sau.

92

Lm quen vi h thng tp tin ext3fs

Bng 4.6: Nhng ty chn chnh ca chng trnh gzip Ty chn ngha -h, --help Hin th tr gip ngn gn v cch s dng chng trnh. -l, --list a ra tn tp tin nm trong tp tin nn, kch thc ca n v mc nn (tnh theo %). -L, --license Hin th s phin bn v bn quyn ca chng trnh. -N, --name Lu hoc phc hi tn ban u v thi gian to tp tin. -n, --no-name Khng lu hoc khng phc hi tn ban u v thi gian to tp tin. -q, --quiet B i nhng cnh bo. -r, --recursive Nn ton b ( quy) th mc. S dng trong trng hp c a ra mu tn tp tin. S .suf, -suffix Thm phn sau (suffix) vo tn tp tin nn. Theo mc nh .suf s dng phn sau l gz. Ch : nu s dng phn sau khc gz th khi gii nn chng trnh s a ra thng bo li dng unknown suffix ignored (phn sau khng bit l i). -t, --test Th (kim tra) tnh nguyn vn ca tp tin nn. -v, --verbose a ra cc thng bo ph trong khi lm vic. -V, --version Hin th phin bn ca chng trnh. -1, --fast Nn nhanh (mc nn thp). -9, --best Mc nn mnh hn. Kch thc tp tin thu c nh hn nhng tt nhin l s lu hn.

4.7.3

Chng trnh bzip2

Trong thi gian gn y ngi dng Linux thng s dng thm mt chng trnh nn na thay th cho gzip chng trnh bzip2. Chng trnh ny nn mnh hn (c mc nn cao hn, to ra cc tp tin nh hn) v lm vic nhanh hn. Cc bn phn phi Linux mi c ci t sn chng trnh ny. Chng trnh bzip2 lm vic tng t nh gzip, tc l thay th mi tp tin a vo dng lnh bng phin bn nn ca tp tin , nhng thm vo phn cui l .bz2. Tp tin nn c thi gian sa i, quyn truy cp v c th c ch s hu nh tp tin ban u. Do c kh nng phc hi nhng tnh cht ny ca tp tin khi gii nn. Trong mt s trng hp tp tin nn c th cn ln hn theo kch thc so vi tp tin ban u. iu ny c th xy ra i vi nhng tp tin c kch thc nh hn 100 byte, v c ch nn s dng phn u (head) c kch thc 50 byte. Nhng tp tin gm mt chui ngu nhin (random) ca cc k t, trong c cc tp tin nn, th kch thc ca tp tin tng ln khong 0,5%. Cu lnh bunzip2 hoc bzip2 d gii nn tp tin ch ra. Nu tp tin ny khng phi do bzip2 to ra th chng trnh s khng gii nn m a ra li cnh bo. Khi gii nn bzip2 s on tn ca tp tin s to ra theo quy lut sau:
tn_tp_tin.bz2 thay th bng tn_tp_tin tn_tp_tin.bz thay th bng tn_tp_tin

4.7 Cc cu lnh lu tr v nn tp tin


tn_tp_tin.tbz2 thay th bng tn_tp_tin.tar tn_tp_tin.tbz thay th bng tn_tp_tin.tar tn_tp_tin khc thay th bng tn_tp_tin.out.

93

V d: teppi82@ThinhQuyen:~> bzip2 2 teppi82@ThinhQuyen:~> mv 2.bz2 2.sj teppi82@ThinhQuyen:~> bunzip2 2.sj bunzip2: Cant guess original name for 2.sj -- using 2.sj.out Cc tu chn ca bzip2 rt ging vi ty chn ca gzip nhng khng phi tt c. Ti s a ra mt danh sch ngn nhng ty chn cn thit nht trong bng 4.7. Bng 4.7: Nhng ty chn chnh ca chng trnh bzip2 Ty chn ngha -d, --decompress Bt buc gii nn tp tin. Ty chn ny cn thit v trn thc t bzip2, bunzip2 v bzcat ch l mt chng trnh. Mi chng trnh tu theo phn m rng tp tin m quyt nh xem s lm g vi tp tin . Ty chn -d b i c ch ny v bt buc chng trnh phi gii nn tp tin ch ra. -z, --compress Bt buc nn tp tin (xem trn). -t, --test Th (kim tra) tnh nguyn vn ca tp tin nn. -f, --force Ghi chn ln tp tin c. Theo mc nh bzip2 khng ghi chn ln tp tin c trn a. Nu mun ghi chn th hy dng ty chn ny. -k, --keep Gi gn (khng xa) tp tin ban u khi nn hoc gii nn. -s, --small Gim yu cu i vi dung lng b nh cn s dng bng cch gim tc nn. Ch nn dng ty chn ny trn nhng my tnh c c t b nh (8MB hoc t hn). C l chng ta khng bao gi cn n ty chn ny hoc t nht l hy vng nh vy. -q, --quiet B i nhng cnh bo t ngha. -v, --verbose a ra cc thng bo ph trong khi lm vic (ch c ngha chun on). L, -license, V, Hin th s phin bn v bn quyn ca chng trnh. -version Tham s ng sau hai du gch ngang (--) v mt khong trng c coi l tn tp tin, d tham s c mt du gch ngang u. V d: [user]$ bzip2 -- -tn_tp_tin By gi n lc chng ta hc cch kt hp tar vi hai cu lnh gzip v bzip2 lm vic nhanh v c hiu qu hn.

94

Lm quen vi h thng tp tin ext3fs

4.7.4

S dng kt hp tar vi gzip v bzip2

Tt nhin khng ai ngn cn bn s dng ring r cc cu lnh tar vi gzip v bzip2, nhng s nhanh hn nu chng ta ch cn s dng mt cu lnh c th to ra mt tp tin nn, hay gii nn mt tp tin. Hy tng tng bn nhn c mt tp tin, v d xvnkb-0.2.9.tar.gz. gii nn tp tin ny thng thng bn cn dng hai cu lnh sau tip ni nhau: [user]$ gzip -d xvnkb-0.2.9.tar.gz [user]$ tar xvf xvnkb-0.2.9.tar Nhng trong s nhng ty chn ca chng trnh tar cn c mt tu chn c bit z cho php gii nn tp tin bng chng trnh gzip (thc hin vai tr ca lnh th nht trong hai lnh k trn). gii nn tp tin k trn ch cn dng mt cu lnh nh sau: [user]$ tar xzvf xvnkb-0.2.9.tar.gz Kt qu thu c l hon ton nh trn tr mt im: trong trng hp dng 2 cu lnh th trn a s gi li tp tin trung gian (xvnkb-0.2.9.tar). Nh vy cch th hai cn c mt u im na l khng gi li cc tp tin trung gian, ngi dng khng cn phi g thm mt lnh xo tp tin. Vic to tp tin bng cch s dng kt hp tar v gz cng c thc hin bng ty chn z: [user]$ tar czvf tn_tp_tin.tar.gz th_mc Cn ch rng trong trng hp ny chng trnh s khng t ng thm phn ui .gz vo tn ca tp tin thu c. Do cn t tn r rng cho n cng vi phn ui .tar.gz. S dng kt hp tar v bzip2 l hon ton tng t, nhng cn dng ty chn j ca tar thay cho tu chn z. Tc l, gii nn tp tin bng lnh: [user]$ tar xjvf tn_tp_tin.tar.bz2 v to tp tin nn bng: [user]$ tar cjvf tn_tp_tin.tar.bz2 th_mc Ti ngh rng nhng thng tin k trn lm vic mt cch c hiu qu vi cc chng trnh nn tar, gzip v bzip2. c thm thng tin hy tm hiu trang tr gip man hoc cc ti liu HOWTO tng ng. kt thc phn v nhng chng trnh lm vic vi tp tin nn ny, ti mun ni thm rng, nu khng may bn nhn c mt tp tin dng *.zip hay *.rar th cng ng vi chy sang nh mt my s dng Windows gii nn. Bn c th th cc chng trnh unzip v unrar c trn h thng Linux ca mnh. Cch s dng nhng lnh ny ht sc n gin, ch cn a vo dng lnh tn ca tp tin. Nu c g kh khn hy th unzip help hoc unrar help. Ti chc chn l bn s t gii quyt c vn . V ng qun ch to ra cc tp tin nn bng tar, gzip hoc bzip2 v bn l ngi dng Linux!

4.8 To v gn cc h thng tp tin

95

4.8

To v gn cc h thng tp tin

Trong nhng phn trc chng ta cp ngn gn mt s cu lnh chnh lm vic vi nhng h thng tp tin nh dng sn. By gi chng ta s dng li vn lm sao to ra h thng tp tin v cch thay i n. Cy th mc ca Linux c to ra t nhng cnh ring r tng ng vi cc a khc nhau. Thng ni l cy th mc c to thnh t cc h thng tp tin ring. Ni nh vy v trong UNIX (v Linux) khng c khi nim nh dng a m s dng khi nim to h thng tp tin. Khi chng ta c mt a lu mi, v d a cng, chng ta cn to trn a ny h thng tp tin. Tc l mi a c t tng ng vi h thng tp tin ring. c th s dng h thng tp tin ny ghi cc tp tin, th u tin cn kt ni n v cy th mc chung (chng ta s dng thut ng gn, mount). Nh vy l c th ni gn h thng tp tin hoc gn a lu cng vi cc h thng tp tin c trn n. Cn cn phi ni thm rng thng thng a cng c chia thnh cc phn vng, nht l i vi nhng a mi sn xut gn y c dung lng ln t vi chc n vi trm GB. Vic to nhng phn vng nh vy gip thc hin d dng cc thao tc nh: sao lu, xc nh quyn truy cp, ng thi tng hiu sut lm vic v lm gim kh nng mt thng tin do chng trnh gy ra. V th tip theo chng ta s ni v to h thng tp tin trn mt phn vng, nhng a khng b chia c th coi l mt phn vng. Cn mt im na cng cn ni n l Linux c th lm vic vi nhiu dng h thng tp tin khc nhau. Nhng h thng tp tin gc ca n l h thng tp tin m rng (extfs) phin bn 2 v 3. Ngoi hai h thng tp tin ny Linux cn c th lm vic vi cc phin bn khc nhau ca h thng tp tin FAT (FAT16 v FAT32), h thng tp tin ISO9660 s dng ghi thng tin trn CD-ROM v cc h thng tp tin khc (k c NTFS15 ). Tc l khi to v gn cc h thng tp tin cn lun lun nh rng dng h thng tp tin trn cc a lu khc nhau c th khng ging nhau. u tin chng ta s xem xt trng hp cn to h thng tp tin trn mt phn vng no ( c) ca a. V d h thng tp tin c dng ext3fs. To h thng tp tin dng ext3fs c ngha l to trn phn vng ny ca a mt siu khi (superblock), mt bng cc m t inode, v cc khi d liu. Thc hin tt c nhng vic ny bng lnh mkfs16 . Trong trng hp n gin nht ch cn chy lnh sau: [root]# mkfs -t ext3 /dev/hda2 Tt nhin l cn thay th /dev/hda2 bng tn ca phn vng trn my ca bn. Hy cn thn khi vit tn phn vng, nu ghi nhm bn s b mt d liu. Nu bn mun to h thng tp tin trn a mm th cn chy: [root]# mkfs -t ext3 /dev/fd0
S h tr c tt, tuy nhin s h tr ghi ln NTFS cha tht hon ho. Trn cc bn phn phi Linux mi cn c th s dng cc cu lnh mkfs.ext2, mkfs.ext3 v cc cu lnh tng t. Nu dng chng th ch cn b i phn -t ext3 hoc -t ext2.
16 15

96

Lm quen vi h thng tp tin ext3fs

C th ni rng chng ta nh dng a mm, nhng cn bit l vi h thng tp tin ext3fs th bn khng c c a mm ny trn DOS hoc Windows (nu khng dng chng trnh hoc driver c bit). to ra nhng a mm c th c trn DOS v Windows cn dng ty chn -t vi gi tr vfat hoc nhng tin ch c bit khc. Nu khng a ra ty chn -t th s dng dng h thng tp tin mc nh (hin nay l phin bn c ca ext ext2fs). Sau khi thc hin cu lnh mkfs, s to ra h thng tp tin dng ext3fs trong phn vng ch ra. Trong h thng tp tin mi s t ng to ra mt th mc vi tn lostfound+. Th mc ny c chng trnh fsck dng trong nhng trng hp khn cp, v vy ng xa n. bt u lm vic vi h thng tp tin mi, u tin cn kt ni (gn) n vo cy th mc chung bng lnh mount. Phi c t nht hai tham s cho cu lnh mount: thit b (device, tn phn vng) v im gn (mount point). im gn l mt th mc c trong cy th mc, v dng lm th mc gc i vi h thng tp tin gn vo (ging nh nt ni gia thn cy v cnh cy). V d, cu lnh: [root]# mount /dev/hda10 /mnt/diaC s gn h thng tp tin ca phn vng /dev/hda10 vo th mc /mnt/diaC. Cn phi c th mc /mnt/diaC trong cy th mc. Nu cha c hy to ra bng lnh mkdir. Cn ch l sau khi gn h thng tp tin vo th mc /mnt/diaC, th ngi dng khng cn truy cp c ti ni dung (bao gm c thng tin v ch s hu c v quyn truy cp ti chnh bn thn th mc) ca th mc ny na. Ni dung ny s ch quay tr li khi ngi dng b gn (unmount) h thng tp tin ra khi th mc. Ni dung c ca th mc khng b hu, b xa, m ch tm thi b giu i. V th tt nht l dng cc th mc rng chun b sn t trc lm im gn (v th m trong tiu chun FHS c cp n th mc /mnt, hy xem bng 4.1). Dng n gin nht trong v d trn ca lnh mount ch lm vic vi iu kin tt c nhng tham s cn thiu c th tm thy trong tp tin /etc/fstab. Nu khng c tp tin (ch khi no bn c tnh hoc v tnh xa) hoc trong tp tin khng c nhng d liu cn thit, th cn s dng dng y ca lnh mount, nh sau: [root]# mount -t dng_httt thit_b ng_dn trong dng_httt xc nh dng h thng tp tin trn thit_b (phn vng), cn ng_dn xc nh im gn. Tp tin cu hnh /etc/fstab ch yu dng gn t ng cc h thng tp tin trong qu trnh khi ng Linux. Mi dng ca tp tin ny cha thng tin v mt h thng tp tin v gm 6 vng phn cch nhau bi cc khong trng17 :
Tn thit b (phn vng). C th s dng tn thit b c trn my (v d /dev/hda10), cng nh tn ca h thng tp tin mng NFS (v d ThinhQuyen:/home/nhimlui th mc /home/nhimlui trn my c tn ThinhQuyen).
17

tin c cc vng thng sp cho thng hng, nhng iu l khng nht thit.

4.8 To v gn cc h thng tp tin

97

im gn. Tn y bao gm c ng dn ca th mc s gn tp tin vo. Dng h thng tp tin. Cc tu chn gn. Theo mc nh l rw (c v ghi). Mc dump. Vng ny c chng trnh sao lu dump s dng. Nu h thng tp tin cn c sao lu th y phi c s 1, nu khng s 0. C th c cc gi tr khc, hy xem trang man ca dump. Th t u tin kim tra h thng tp tin bng cu lnh fsck. H thng tp tin vi gi tr nh hn s c kim tra trc. Nu bng nhau th s kim tra song song (tt nhin nu c th).

Hin nay Linux h tr cc h thng tp tin sau: minix, ext, ext2, ext3, xia, msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs18 . ch dng h thng tp tin trong vng dng h thng tp tin v sau ty chn -t ca lnh mount c th t gi tr auto. Trong trng hp cu lnh mount th t xc nh dng ca h thng tp tin ang gn. Tuy nhin trong mt s trng hp c th dn n li, nn tt hn ht l ch ra dng mt cch chnh xc. Cn c th lit k mt s dng phn cch nhau bi du phy (,). Trong cu lnh mount cn c th a ra danh sch cc dng h thng tp tin khng cn gn bng c (flag) no. Kh nng ny c ch trong trng hp s dng cu lnh mount vi tham s -a (cu lnh mount vi tham s -a s gn tt c cc h thng tp tin lit k trong tp tin /etc/fstab). V d, cu lnh: [root]# mount -a -t nosmb,ext gn tt c cc h thng tp tin tr cc dng smb (Samba19 ) v ext Khi gn h thng tp tin c trong /etc/fstab, th ch cn a ra mt tham s: hoc tn ca thit b (phn vng) hoc im gn. Tt c cc tham s khc cu lnh mount s ly t tp tin /etc/fstab. Thng thng ch c ngi dng cao cp root mi c kh nng gn cc h thng tp tin, nhng nu trong vng cc ty chn gn c ch ra ty chn user, th tt c mi ngi dng s c kh nng gn (b gn) h thng tp tin . V d, nu trong tp tin /etc/fstab c dng: /dev/hdd /media/dvd auto noauto,user,sync 0 0

th bt k ngi dng no cng c quyn gn h thng tp tin trn a DVD ca mnh bng cu lnh: [user]$ mount /dev/hdd hoc: [user]$ mount /media/dvd

98

Lm quen vi h thng tp tin ext3fs

Bng 4.8: Nhng ty chn chnh ca cu lnh mount Ty chn ngha async Vo/ra (ghi/c) ca h thng tp tin thc hin khng ng b (khng tc thi). auto C th gn h thng bng cu lnh mount vi ty chn -a. defaults S dng cc tu chn theo mc nh: rw, suid, dev, exec, auto, nouser, async. dev Cc thit b khi v thit b k t (byte) trong h thng tp tin l nhng tp tin c bit. noauto Ch c th t gn h thng tp tin. Ty chn -a khng t ng gn h thng tp tin ny. exec Cho php thc hin cc tp tin chng trnh nm trn h thng tp tin ny. remount Cho php gn li h thng tp tin gn. Thng s dng thay i cc ty chn gn, c bit trong trng hp m rng quyn truy cp (v d thm quyn ghi cho h thng tp tin gn ch c). ro Gn h thng tp tin ch c. rw Gn h thng tp tin c v ghi. suid Cho php dng bit thay i ID ngi dng v bit thay i ID nhm. sync Vo/ra (ghi/c) ca h thng tp tin thc hin ng b (tc thi). user Cho php ngi dng bnh thng gn h thng tp tin. i vi nhng ngi dng ny lun lun gn vi cc ty chn noexec, nosuid, nodev. nodev Khng coi cc thit b khi v thit b k t (byte) trong h thng tp tin l nhng tp tin c bit. nosuid Khng cho php dng bit thay i ID ngi dng v bit thay i ID nhm. nouser Cm ngi dng bnh thng gn h thng tp tin. Trong bng 4.8 c a ra thm mt vi ty chn c th s dng trong cu lnh mount v trong tp tin/etc/fstab (vng cc ty chn gn). Nu mun gn mt h thng tp tin no v ch cho php c th cn ch ra ty chn r (read only) trn dng tng ng ca tp tin /etc/fstab (theo mc nh s dng rw, tc l c v ghi), hoc s dng cu lnh mount vi tham s -r Cu lnh mount v umount h tr bng cc h thng tp tin gn. Bng ny nm trn a dng tp tin /etc/mtab. C th xem trc tip tp tin ny bng cc chng trnh xem tp tin (less, more hoc bng cu lnh mount (khng c tham s). Trc khi b cc a tho ri (a mm, flash) ra khi my th cn tho (b gn) cc h thng tp tin c trn cc a tho ri ny. Thao tc ny c thc hin bng cu lnh umount (khng phi unmount!). Tham s ca cu lnh umount l tn thit b (phn vng) hoc im gn. Ch c ngi dng gn h thng tp tin v tt nhin c ngi dng cao
18 19

Hy xem trang man fs c m t ngn gn v nhng h thng tp tin ny. cc chia s trong mng ca Windows

4.8 To v gn cc h thng tp tin

99

cp root mi c quyn b gn n. bt k ngi dng no cng c th b gn h thng tp tin th trong tp tin /etc/fstab cn thay th ty chn user bng ty chn users (trong vng cc ty chn gn). Ch c th b gn h thng tp tin khi khng c tp tin no ca n m ra, khng tin trnh no ang chy t tp tin chng trnh nm trn h thng tp tin ny v trong h thng khng c tin trnh no s dng h thng tp tin ny. Tc l h thng tp tin khng c bn. Cn ni rng nu so vi Windows th lm vic vi cc a ri (a mm, CD, DVD, Zip, v.v. . . ) trn Linux c mt cht phc tp hn. V u tin bn cn gn cc a ny (ni chnh xc l h thng tp tin c trn a) vo cy th mc chung. thay mt a ri khc th u tin cn b gn (tho) a c ra ri mi gn tip a th hai. Tuy trn cc bn phn phi mi c cc dch v cho php t ng gn v t ng tho cc a ri, nhng bn cng cn bit cch lm vic vi cc a ri nu c vn xy ra vi cc dch v . Tt nht hy chun b sn cho mi a ri mt im gn ring. V d, nu bn c mt a mm, mt dvd v mt flash th hy to ba th mc floppy, dvd v flash trong /mnt lm im gn cho ba thit b ca mnh. Mt s bn phn phi (Debian, openSUSE) s to sn cho bn nhng im gn ny. y l tt c nhng g m ngi dng Linux mi (v rt mi) cn bit v h thng tp tin ext3fs. Xin nhc li l nhng g ni y ch dnh cho h thng tp tin ext3fs (mt s thng tin vn cn ng cho phin bn ext2fs), v mi ch cp n mt trc, mt quay v pha ngi dng ca h thng ny (ch yu l cu trc tp tin). Mt cn li, mt sau (cu trc bn trong), ch c ni n trong chng ny khi cn thit. Chng ta s xem xt k hn mt sau ny trong mt vi chng sp ti. Cn by gi bn c s chuyn sang nghin cu thnh phn quan trng th 2 trong 4 thnh phn chnh ca Linux h v bash.

Chng 5 Bash
Tt g hn tt nc sn ca dao tc ng Vit Nam
Trong phn ny chng ta s cp n vn lm vic vi Linux ch text, hay cn c gi l console hoc terminal. Nhng ngi dng Linux mi (newbie) thng ngh s chng bao gi lm vic ch ny, v c giao din ha. Tuy nhin y l mt kin sai lm, bi v rt nhiu cng vic c th thc hin nhanh v thun tin trong ch ny hn l s dng giao din ha. V d sao th ch text ca HH Linux khng phi l ch text mt tin trnh ca MS-DOS. V Linux l HH a tin trnh, nn ngay trong ch text c kh nng lm vic trong vi ca s. V son tho mt tp tin vn bn khng nht thit phi chy cc trnh son tho ln v chm chp (c bit trn cc my c cu hnh phn cng thp) ca mi trng ha.

5.1

H v l g?

Chng ta thng ni ngi dng lm vic vi h iu hnh. iu ny khng hon ton ng, v trn thc t lin h vi ngi dng c thc hin bi mt chng trnh c bit. C hai dng ca chng trnh cp - h v, hay shell, lm vic trong ch text (giao din dng lnh) v giao din ha GUI (Graphical User Interface), thc hin lin h vi ngi dng trong mi trng ha. Cn ni ngay rng, bt k chng trnh no trong Linux c th khi ng t dng lnh ca h v (nu my ch X chy), cng nh qua giao din ha. Chy chng trnh t dng lnh ca h v tng ng vi vic nhy (p) chut ln biu tng ca chng trnh trong GUI. a cc tham s cho chng trnh trn dng lnh tng ng vi vic chng ta ko v th ci g ln biu tng chng trnh trong mi trng ha. Nhng mt khc, mt s chng trnh khng th chy GUI v ch c th thc hin t dng lnh. Ni ngoi l mt cht, tn gi h v b phn i rt nhiu. Theo kin ca mt s chuyn gia ngn ng cng nh chuyn gia Linux th nn gi chng trnh ny mt cch ng hn l trnh x l lnh hay trnh bin dch lnh. Tuy nhin, tn gi h v (shell) c dng cho cc chng trnh dng bin dch lnh trong ch text trn mi h thng UNIX. Trn cc h thng UNIX u tin c mt chng trnh, gi l sh, vit tt ca shell. Sau , vi bin th ca sh c pht trin v lm tt hn, trong c Bourne shell - phin bn m rng ca sh, vit bi Steve

5.2 Cc k t c bit

101

Bourne. D n GNU (d n pht trin chng trnh ng dng ca Stallman, xem http://www.gnu.org/) sau cho ra i h v bash, tn gi ca n c gii m ra l Bourne-again shell, tc l li l h v ca Bourne. Trn ting Anh y l mt cch chi ch, v t Bourne c ging vi t borne (sinh ra, ra), v nh th bash cn c th gii m l shell c sinh ra ln hai. Tip theo chng ta s ch xem xt bash, v th di khi ni n h v, xin ngm hiu l bash T mt mnh bash khng thc hin mt cng vic ng dng no. Nhng n h tr vic thc thi mi chng trnh khc, t vic tm kim chng trnh c gi, chy chng n vic t chc d liu u vo/u ra. Ngoi ra, h v chu trch nhim v cng vic vi cc bin mi trng v thc hin mt vi bin i (th, hon i v tr) cc tham s lnh. Nhng tnh cht chnh ca h v, nh a h v tr thnh mt cng c mnh ca ngi dng, l n bao gm mt ngn ng lp trnh n gin. Trong ton hc t lu c chng minh rng, bt k mt thut ton no cng c th c xy dng t hai (ba) thao tc c bn v mt ton t iu kin. H v cung cp cc ton t iu kin v ton t vng lp. N s dng cc tin ch v chng trnh khc (c trong thnh phn h iu hnh, hay c ci t ring) lm cc thao tc c bn cho ngn ng lp trnh m n h tr. ng thi cho php a cc tham s cng nh kt qu lm vic ca mt chng trnh ti cc chng trnh khc hay ti ngi dng. Kt qu thu c l mt ngn ng lp trnh mnh. y cng l sc mnh v l mt trong cc chc nng chnh ca h v. Trc khi bt u phn ny, bn c nn bit cc t hp phm chnh, s dng iu khin vic nhp d liu trn dng lnh. Nn nh t nht cch s dng ca cc (t hp) phm <Ctrl>+<C>, <Ctrl>+<D>, <Tab> v cc phm c mi tn.

5.2

Cc k t c bit

H v bash s dng mt vi k t t b 256 k t ASCII cho cc mc nh ring, hoc biu th cc thao tc no , hoc bin i biu thc. Cc k t ny bao gm: ~ ! @ # $ % ^ & * ( ) _ -- [ ] { } : ; " / \ > < v k t vi m 0, k t hng mi (to ra khi nhn phm <Enter>) v k t khong trng. Ph thuc vo tnh hung cc k t c bit ny c th s dng vi ngha c bit ca n hay s dng nh mt k t thng thng. Nhng trong a s cc trng hp khng khuyn dng cc k t vi gi tr th hai. Trc ht l vic s dng chng trong tn tp tin v th mc. Tuy nhin cc k t _, - v . (du gch di, gch ngang v du chm) thng c s dng trong tn tp tin, v y l mt v d cho thy khng phi lc no chng cng c gi tr c bit. Trong tn tp tin ch du chm (.) v gch cho (/) c gi tr c bit. K hiu gch cho dng phn chia tn cc th mc trong ng dn, cn du chm c gi tr c bit khi n l k t u tin trong tn tp tin (cho bit tp tin l n). Vic a ngay tt c ngha c bit ca nhng k t ny v cc tnh hung s dng chng tm thi khng c ch. Chng ta s xem xt chng dn dn trong cc phn sau, khi cn s dng n. Tuy nhin, 3 k hiu c ngha ln v cn cp n u tin. K hiu \ (gch cho ngc) c th gi

102

Bash

l k hiu xa b ngha c bit cho bt k k t c bit no, ng ngay sau \. V d, nu mun s dng khong trng trong tn tp tin, th chng ta cn t d, cu lnh sau: trc k t khong trng mt du V teppi82@teppi:~$ cp lennon_imagine lennon\ imagine Cc k t v " (ngoc n v ngoc kp) c th gi l cc k t trch dn. Mi k t ny lun lun c s dng trong mt cp vi bn sao ca chnh n ng khung mt biu thc no , ging nh trong cc vn bn, sch bo, . . . thng thng. Nu nh mt on vn bn no t trong ngoc n, th tt c cc k t nm trong ngoc n ny c gi tr nh cc k t thng thng, khn mt k t no c ngha c bit. Tr li vi v d s dng khong trng trong tn tp tin trn, c th ni, nu mun t tp tin ci tn lennon imagine cn a tn vo du ngoc: teppi82@teppi:~$ cp lennon_imagine lennon imagine S khc nhau trong cch s dng k t v " l, trong ngoc n mt ngha c bit tt c cc k t, cn trong ngoc kp tt c chng ngoi tr $, v \ (du la, ngoc n v du gch ngc).

5.3

Thc thi cc cu lnh

Nh ni trn, mt trong cc chc nng chnh ca h v l t chc vic thc hin cc cu lnh m ngi dng a vo trn dng lnh. H v, ni ring, cung cp cho ngi dng hai thao tc c bit t chc vic a cc cu lnh trn dng lnh: ; v &.

5.3.1

Thao tc ;

Mc d ngi dng thng ch nhp trn dng lnh tng cu lnh mt, nhng cn c th a vo dng lnh ngay lp tc vi cu lnh, v chng s thc hin ln lt t cu lnh ny n cu lnh khc. lm c iu ny cn s dng k t c bit - ;. Nu dng k t ny phn chia cc cu lnh, th cu lnh tip theo s c coi nh tham s ca lnh pha trc. Nh vy, nu nhp vo dng lnh ci g ging nh sau: teppi82@teppi:~$ command1 ; command2 th h v u tin s thc hin cu lnh command1, ch cho lnh hon thnh, sau chy command2, ch lnh hon thnh, sau li a ra dng nhp lnh v ch cc hnh ng tip theo ca ngi dng.

5.4 u vo/u ra tiu chun

103

5.3.2

Thao tc &

Thao tc & c dng t chc vic thc hin cc cu lnh trong ch nn sau. Nu t du & ngay sau cu lnh, th h v s tr li quyn iu khin cho ngi dng ngay sau khi chy cu lnh, m khng i cho cu lnh hon thnh. V d, nu nhp vo dng lnh command1 & command2 &, th h v chy cu lnh command1, ngay lp tc chy lnh command2, v sau khng chm tr tr li dng nhp lnh cho ngi dng.

5.3.3

Thao tc && v ||

Cc thao tc && v || l nhng thao tc iu khin. Nu trn dng lnh l command1 && command2, th command2 s thc hin v ch thc hin trong trng hp trng thi thot ra ca lnh command1 bng khng (0), tc l lnh thc hin thnh cng. Mt cch tng t, nu dng lnh c dng command1 || command2, th command2 s thc hin v ch thc hin khi trng thi thot ca lnh command1 khc khng. Chng ta s khng xem xt mt k thut ca vic thc hin mt cu lnh no . Ch c th ni ngn gn rng, h v phi tm m (code) chng trnh, np m vo b nh, chuyn cc tham s nhp trn dng lnh vo cho cu lnh, v sau khi thc hin xong th theo mt cch no tr li kt qu thc hin lnh ny cho ngi dng hay tin trnh khc. Chng ta s xem xt qua cc bc ny. Bc u tin - tm kim cu lnh. Cc cu lnh chia thnh hai loi: ni tr (m ca chng c trong m ca chnh h v) v ngoi tr (m ca chng nm trong mt tp tin ring l trn a). H v lun lun tm thy lnh ni tr, cn tm cc lnh ngoi tr ngi dng, theo nguyn tc, phi ch cho h v ng dn y ti tp tin tng ng. Tuy nhin g gnh nng cho ngi dng h v bit cch tm lnh ngoi tr trong cc th mc, m c lit k trong ng dn tm kim. Ch khi (h v) khng th tm thy tp tin cn thit trong cc th mc , n mi quyt nh rng ngi dng nhm khi nhp tn lnh. V cch thm th mc vo ng dn tm kim chng ta s ni n di, cn by gi chng ta s xem xt cch h v t chc vic a d liu vo cho cu lnh ang thc hin v vic a kt qu ti cho ngi dng.

5.4
5.4.1

u vo/u ra tiu chun


Dng d liu vo ra

Khi mt chng trnh c thc hin, n c cung cp ba dng d liu (hay cn gi l knh):
u vo tiu chun (standard input hay stdin). Qua knh ny d liu c a vo cho chng trnh; u ra tiu chun (standard output hay stdout). Qua knh ny chng trnh a ra kt qu lm vic ca mnh;

104

Bash
knh thng bo li tiu chun (standard error hay stderr). Qua knh ny chng trnh a ra thng tin v li.

T u vo tiu chun chng trnh ch c th c, cn hai u ra v knh thng bo li c chng trnh s dng ch ghi. Theo mc nh u vo c lin kt1 vi bn phm, cn u ra v knh bo li hng n terminal ca ngi dng. Ni cch khc, ton b thng tin ca lnh hay chng trnh m ngi dng chy, v tt c nhng thng bo li, c a ra ca s terminal. Tuy nhin, chng ta s thy di, c th chuyn hng thng bo u ra (v d, vo tp tin). cho thy knh thng bo li tiu chun lm vic nh th no, hy thc hin cu lnh ls vi mt tham s khng ng, v d dng tham s l mt tn tp tin khng tn ti. Trong trng hp ny, ls a mt tin nhn bo li ra knh thng bo li tiu chun. Tuy nhin, i vi ngi dng th trong trng hp ny knh thng bo li tiu chun khng khc g vi u ra tiu chun, bi v chng ta cng thy thng bo li trn ca s terminal. Lm vic vi u vo v u ra tiu chun c minh ha tt nht qua v d cc lnh echo v cat.

5.4.2

Lnh echo

Cu lnh echo dng chuyn ti u ra tiu chun dng k t, m c a vo lm tham s cho n. Sau lnh ny a ra tn hiu chuyn dng v hon tt cng vic. Hy th thc hin cu lnh sau: [user]$ echo xin chao cac ban! Ti ngh rng li gii thch s l tha thi (ch xin hy s dng du ngoc n, nu khng kt qu c th s khc. Nu bn c ch th c th gii thch ti sao li khc).

5.4.3

Lnh cat

Chng ta s xem xt lnh cat y v lnh ny thng lm vic vi u vo v u ra tiu chun. Theo mc nh kt qu lm vic ca lnh cat hng ti u ra tiu chun. chng minh l lnh ny theo mc nh tip nhn dng d liu nhp vo, hy chy lnh cat khng c tham s. Kt qu l con tr chuyn ti mt dng mi, v hn na c v nh khng c g xy ra. Lc ny cu lnh ch cc k t n t u vo tiu chun. Hy nhp bt k k t no, v n s xut hin ngay lp tc trn mn hnh, tc l chng trnh ngay lp tc a chng ti u ra tiu chun. C th tip tc nhp cc k t, v chng cng s xut hin trn mn hnh. Thng thng bn phm c cu hnh nhp vo theo tng dng, v th nu bn nhn phm <Enter>, dng k t bn va nhp s c a ti lnh cat, v lnh ny s li a d liu ra mn hnh thng qua u ra tiu chun. Nh vy, mi dng k t nhp vo s c hin ra hay ln: mt ln khi g v ln th hai bi cu lnh cat. Nu nhn t hp phm <Ctrl>+<D>, m dng ngng vic nhp d liu, chng ta s qua li dng nhp lnh. Cng c th s dng t hp phm <Ctrl>+<C>, m l cu lnh trong h v dng chng trnh
1

ging lin kt ha hc

5.5 Chuyn hng u vo/u ra, ng ng v b lc

105

ang chy. Nu a tn mt tp tin vo lm tham s cho lnh cat, th ni dung ca lnh ny s c a ti u vo tiu chun, t lnh cat s c ni dung ny v a ti u ra tiu chun (xem s ). Ni dung tp tin --> u vo tiu chun (stdin) --cat--> u ra tiu chun (stdout) y ch l mt trng hp ring ca vic chuyn hng d liu u vo, mt c ch rt c ch ca h v. V tt nhin chng ta cn xem xt k hn c ch ny.

5.5

Chuyn hng u vo/u ra, ng ng v b lc

Mc d, nh ni trn, thng thng u vo/u ra ca mt chng trnh lin kt vi cc u vo/u ra tiu chun, trong h v cn c cc mi trng c bit cho php chuyn hng u vo/u ra.

5.5.1

S dng >, < v

chuyn hng u vo/ra, s dng cc k hiu >, < v . Thng s dng vic chuyn hng liu ra ca cu lnh vo tp tin. Di y l mt v d tng ng: maikhai@fpt:/some/where$ ls -l > /home/maikhai/ls.txt Theo lnh ny danh sch tp tin v th mc con ca th mc, m t ngi dng thc hin lnh ls2 s c ghi vo tp tin /home/maikhai/ls.txt; khi ny nu tp tin ls.txt khng tn ti, th n s c to ra; nu tp tin c, th ni dung ca n s b xa v ghi bi danh sch ni trn. Nu bn khng mun xa ni dung c m ghi thm d liu u ra vo cui tp tin, th cn s dng k hiu >> thay cho >. Khi ny khong trng trc v sau cc k hiu > hay >> khng c ngha v ch dng vi mc ch thun tin, d nhn. Bn c th chuyn hng khng ch vo tp tin, m cn ti u vo ca mt cu lnh khc hay ti mt thit b no (v d, my in). V d, a ni dung tp tin /home/maikhai/ls.txt va to trn ti ca s terminal th hai3 c th s dng lnh sau: maikhai@fpt:/sw$ cat /home/maikhai/ls.txt > /dev/tty2 Nh bn thy, > dng chuyn hng d liu ca u ra. Chc nng tng t i vi u vo c thc hin bi <. V d, c th m s t trong tp tin ls.txt nh sau (ch , y ch l mt v d minh ha, trn thc t thng s dng cu lnh n gin hn): maikhai@fpt:/sw$ wc -w < /home/maikhai/ls.txt
2 3

th mc hin thi bn cn dng t hp phm <Ctrl>+<Alt>+<F2> chuyn ti ca s terminal ny v ng nhp trc

106

Bash

Cch chuyn hng ny thng c s dng trong cc script, cho cc cu lnh m thng tip nhn (hay ch) d liu vo t bn phm. Trong script dng t ng ha mt thao tc no , c th a cc thng tin cn thit cho cu lnh t tp tin: trong tp tin ny ghi sn nhng g cn thc hin lnh . Bi v cc k hiu <, > v >> lm vic vi cc knh tiu chun (u vo hoc u ra), chng khng ch c dng theo cc cch quen thuc, thng dng, m cn c th theo cch khc, l mt hn. V d, cc cu lnh sau l tng ng: [user]$ [user]$ [user]$ [user]$ cat > file cat>file >file cat > file cat

Tuy nhin, t chng (khng c mt lnh no, tc l khng c knh tiu chun no cho lnh) cc k t chuyn hng ny khng th c s dng, nh th khng th, v d, nhp vo dng lnh sau: [user]$ file1 > file2 m thu c bn sao ca mt tp tin no . Nhng iu ny khng lm gim gi tr ca c ch ny, bi v cc knh tiu chun c cho mi cu lnh. Khi ny, c th chuyn hng khng ch u vo v u ra tiu chun, m cn cc knh khc. lm c iu ny, cn t trc k hiu chuyn hng s ca knh mun chuyn. u vo tiu chun stdin c s 0, u ra tiu chun stdout - s 1, knh thng bo li stderr - s 2. Tc l lnh chuyn hng c dng y nh sau (xin c nhc li, khong trng cnh > l khng nht thit): command N > M Trong , N v M - s ca knh tiu chun (0, 1, v 2) hoc tn tp tin. Trong mt vi trng hp c s dng cc k hiu <, > v >> m khng ch ra s knh hay tn tp tin, v vo ch cn thiu s t, theo mc nh, 1 nu dng >, tc l u ra tiu chun, hoc 0 nu dng <, tc l u vo tiu chun. Nh th, khi khng c s no ch ra, > s c bin dch l 1 >, cn < s c bin dch l 0 <. Ngoi vic chuyn hng cc knh tiu chun n gin nh vy, cn c kh nng khng nhng chuyn hng d liu vo knh ny hay knh khc, m cn sao chp ni dung ca cc knh tiu chun . K hiu & dng thc hin iu ny, khi t n (&) trc s ca knh s chuyn d liu n: command N > &M Lnh ny c ngha l, u ra ca knh vi s N c gi n c u ra tiu chun, v sao chp ti knh c s M. V d, sao chp thng bo li vo u ra tiu chun, cn dng lnh 2>&1, cn 1>&2 sao chp stdout vo stderr. Kh nng ny c bit c ch khi mun ghi u ra vo tp tin, v khi chng ta va c th nhn thy thng bo trn mn hnh, va ghi chng vo tp tin. V d, trng hp sau thng c ng dng trong cc script chy khi khi ng Linux: teppi82@teppi:~$ cat hiho > /dev/null cat: hiho: No such file or directory teppi82@teppi:~$ cat hiho > /dev/null 2>&1

5.5 Chuyn hng u vo/u ra, ng ng v b lc

107

5.5.2

S dng |

Mt trng hp c bit ca chuyn hng u ra l s t chc cc ng ng (ha y cn c th gi l knh gia cc chng trnh, hoc bng chuyn). Hai hay vi cu lnh, m u ra ca lnh trc dng lm u vo cho lnh sau, lin kt vi nhau (c th ni phn cch nhau, nu mun) bi k hiu gch thng ng |. Khi ny u ra tiu chun ca lnh ng bn tri so vi | dc chuyn n u vo tiu chun ca chng trnh, dng bn phi so vi |. V d: maikhai@fpt:/sw$ cat ls.txt | grep knoppix | wc -l Dng ny c ngha l kt qu ca lnh cat, tc l ni dung tp tin ls.txt, s c chuyn n u vo ca lnh grep, lnh ny s phn chia ni dung ni trn v ch ly ra nhng dng no c cha t knoppix. n lt mnh, kt qa ca lnh grep c chuyn ti u vo ca lnh wc -l, m tnh s nhng dng thu c. ng ng s dng kt hp vi chng trnh nh li vi nhau (mi chng trnh thc hin mt bin i xc nh no trn u vo) to thnh mt lnh tng qut, m kt qu ca n s l mt bin i phc tp. Cn ch rng, h v gi v thc hin tt c cc cu lnh c trong ng ng cng mt lc, chy mi lnh trong mt bn sao h v ring. V th ngay khi chng trnh th nht bt u a kt qu u ra, chng trnh tip theo bt u x l kt qu ny. Cng y nh vy, cc lnh tip theo thc hin cc cng vic ca mnh: ch d liu t lnh trc v a kt qu cho lnh tip theo, ging nh mt dy chuyn sn xut. Nu nh mun mt lnh no kt thc hon ton, trc khi thc hin lnh tip theo, bn c th s dng trn mt dng c k hiu dy chuyn |, cng nh du chp phy ;. Trc mi du chm phy, h v s dng li v ch cho n khi thc hin xong tt c cc cu lnh trc ca ng ng. Trng thi thot ra (gi tr lgc, m c tr li sau khi thc hin xong chng trnh) ca mt ng ng s trng vi trng thi thot ra ca cu lnh sau cng trong ng ng. trc cu lnh u tin ca ng ng c th t k hiu !, khi trng thi thot ra ca ng ng s l ph nh lgc ca trng tht thot ra ca lnh cui cng trong ng ng. Tc l nu trng thi thot ra ca lnh cui cng bng 0 th trng thi thot ra ca ng ng s bng 1 v ngc li. H v ch cho tt c cc cu lnh kt thc ri mi xc nh v a ra gi tr ny.

5.5.3

B lc

V d cui cng trn (v d vi cu lnh grep) c th dng minh ha cho mt khi nim qua trng khc, l, b lc chng trnh. B lc l lnh (hay chng trnh), m tip nhn d liu vo, thc hin mt vi bin i trn d liu ny v a ra kt qu u ra tiu chun (t y cn c th chuyn n ni no theo mun ca ngi dng). Cc cu lnh - b lc bao gm cc lnh ni n trn cat, more, less, wc, cmp, diff, v c nhng cu lnh c trong bng 5.1. Mt b lc c bit, cu lnh tee, nhn i d liu u vo, mt mt gi d liu ny n u ra tiu chun, mt khc ghi n (d liu) vo tp tin (ngi dng cn t tn). D thy rng theo chc nng ca mnh lnh tee tng t nh nhm k t chuyn hng 1>&file. Kh nng ca b lc c th m rng vi vic s dng

108

Bash

Bng 5.1: Cc cu lnh b lc Lnh M t ngn gn grep, fgrep, egrep Tm trong tp tin hay d liu u vo cc dng c cha mu vn bn c ch ra v a cc dng ny ti u ra tiu chun tr Trong d liu u vo thay th cc k t th nht bi cc k t tng ng th hai. Hy th g lnh tr abc ABC ri g vi dng cha cc k t abc! comm So snh hai tp tin theo tng dng mt v a vo u ra tiu chun 3 ct : mt - nhng dng ch gp tp tin th nht, hai - nhng dng ch gp tp tin th hai, v ba - nhng dng c trong c hai tp tin. pr nh dng tp tin hay ni dung ca u tiu chun in n. sed Trnh son tho tp tin theo dng, s dng thc hin mt vi bin i trn d liu u vo (ly t tp tin hay u vo tiu chun) cc biu thc chnh quy (iu khin), cho php, v d, t chc tm kim theo cc mu tm kim t n gin n phc tp v rt phc tp. Nu mun, chng ta c th ni rt nhiu v chuyn hng v b lc. Nhng ni dung ny c trong phn ln cc cun sch v UNIX v Linux (xem phn li kt). V vy, chng ta s dng y v chuyn sang mt phn khc, c gi l mi trng v cc bin mi trng to bi h v.

5.6

Tham bin v cc bin s. Mi trng ca h v

Khi nim tham bin trong h v bash tng ng vi khi nim bin s trong cc ngn ng lp trnh thng thng. Tn gi (hay ID) ca tham bin c th l mt t bao gm cc k t bng ch ci, ch s, du gch di (ch k t u tin ca t ny khng c l ch s), v c nhng k t sau: , , #, , - (gch ngang), $, , 0, _ (gch di). Chng ta ni rng, tham bin c xc nh hay c t ra, nu ngi dng gn cho n mt gi tr. Gi tr c th l mt dng trng rng. nhn thy gi tr ca tham bin, ngi ta s dng k t $ trc tn ca n. Nh vy, lnh: maikhai@fpt:/sm$ echo parameter hin th t parameter, cn lnh maikhai@fpt:/sm$ echo $parameter hin th gi tr ca tham bin parameter (tt nhin nu nh tham bin dc xc nh).

5.6.1

Cc dng tham bin khc nhau

Tham bin chia thnh ba dng: tham bin v tr, tham bin c bit (cc k t c bit ni trn chnh l tn ca nhng tham bin ny) v cc bin s ca h v. Tn (ID) ca tham bin v tr gm mt hay vi ch s (nhng khng c

5.6 Tham bin v cc bin s. Mi trng ca h v

109

tham bin v tr 0). Gi tr ca tham bin v tr l cc tham s cho lnh, c a ra khi chy h v (tham s u tin l gi tr ca tham bin 1, tham s th hai tham bin 2, v.v. . . ). C th dng cu lnh set thay i gi tr ca tham bin v tr. Gi tr ca cc tham bin ny cng thay i trong khi h v thc hin mt trong cc hm s (chng ta s xem xt vn ny di). Cc tham bin c bit khng g khc hn l cc mu, m s thay th (php th, php hon i) chng c thc hin nh trong bng 5.2: Bng 5.2: Thay th cc tham bin c bit Tham bin Quy lut thay th * Thay th bi cc tham bin v tr, bt u t tham bin th nht. Nu s thay th thc hin trong du ngoc kp, th tham bin ny s c thay bi mt t duy nht, m to ra t tt c cc tham bin v tr, phn cch nhau bi k t u tin ca bin s IFS (s ni n sau). Tc l $ tng ng vi $1c$2c. . . , trong c - k t u tin trong gi tr ca bin s IFS. Nu gi tr ca IFS trng, hoc khng c xc nh gi tr, th tham bin phn cch nhau bi cc khong trng. @ Thay th bi tham bin v tr, bt u t tham bin th nht. Nu thay th thc hin trong ngoc kp, th mi tham bin s c thay th bi mt t ring bit. Tc l, $@ tng ng vi $1 $2 . . . Nu khng c tham bin v tr, th gi tr s khng c thit lp (tham bin s b x # Thay th bi gi tr thp phn ca cc tham bin v tr. ? Thay th bi trng thi thot ra ca cu lnh cui cng trong ng ng, m c thc hin trong ch nn trc. - (gch ngang) Thay th bi gi tr cc c, flag, c t bi lnh ni tr set hay trong khi chy h v. $ Thay th bi s ca tin trnh (PID - process identificator) Thay th bi s ca tin trnh (PID) cui cng trong s cc cu lnh thc hin trong nn sau. 0 Thay th bi tn h v hay tn ca script ang chy. Nu bash chy mt tp tin lnh no , th $0 c gi tr bng tn ca tp tin ny. Trong trng hp ngc li gi tr ny bng ng dn u n h v (v d, /bin/bash _ (gch di) Thay th bi tham s cui cng ca cu lnh trc trong s cc cu lnh c thc hin (nu li l mt tham bin hay bin s, th s s dng gi tr ca n Cc tham bin c bit, c lit k bng trn, c mt im khc bit l ch c th nhc n chng, khng th gn cc gi tr cho cc tham bin ny. Bin mi trng, nhn t pha h v, l cc tham bin c t tn. Gi tr ca bin mi trng c gn nh thao tc c dng sau: [user]$ name=value Trong , name - tn ca bin, cn value - gi tr mun gn cho bin (c th l mt dng trng). Tn ca bin mi trng ch c th bao gm cc ch s, ch ci v khng c bt u bi mt ch s. (Tin rng sau khi c on vit v

110

Bash

tham bin v tr th cc bn hiu ti sao mt bin mi trng khng th bt u bi mt ch s.) Gi tr c th l bt k mt dng vn bn no. Nu gi tr c cha nhng k t c bit, th cn t n (gi tr) vo du ngoc. Gi tr tt nhin s khng cha cc du ngoc ny. Nu mt bin mi trng c xc nh, th cng c th b xa b bng lnh ni tr unset. Tp hp tt c cc bin ny cng vi cc gi tr gn cho chng gi l mi trng (enviroment) ca h v. C th xem n (mi trng) nh lnh set khi khng c tham s (c th cn dng ng ng set | less, nu mi trng ln, c nhiu bin). xem gi tr ca mt bin mi trng c th, thay v dng lnh set (khi ny cn tm trong kt qu ca n bin mun xem), c th s dng lnh echo: [user]$ echo $name Trong , cn thay name bi tn bin (nh vy, trong trng hp ny, bn li cn phi bit tn ca bin mun xem). Trong s cc bin, m bn s thy trong kt qu ca lnh set, c nhng bin rt th v. Xin hy ch n, v d, bin RANDOM. Nu th chy vi ln lin tip cu lnh sau: maikhai@fpt:/sw$ echo $RANDOM th mi ln bn s nhn c mt gi tr mi. Nguyn nhn l v bin ny tr li mt gi tr ngu nhin4 trong khong 0 - 32 768.

5.6.2

Du nhc ca h v

Mt trong cc bin rt quan trng c tn PS1. Bin ny cho bit dng ca du nhc, m bash a ra trong khi ch ngi dng nhp cu lnh tip theo. Theo mc nh th bin ny c gn gi tr \s-\v\$ , tuy nhin trn cc bn phn phi khc nhau thng c cc script khi ng (hay script ng nhp) xc nh li bin ny. Ni chung th trong bash c tt c bn du nhc, c s dng trong cc trng hp khc nhau. Bin PS1 a ra dng ca du nhc khi h v ch nhp lnh. Du nhc th hai, xc nh bi bin PS2, xut hin khi h v ch ngi dng nhp thm mt vi d liu cn thit no c th tip tc chy cu lnh (chng trnh) gi. Theo mc nh bin PS2 c gi tr >. Rt c th bn nhn thy du nhc ny, khi chy lnh cat a d liu vo t bn phm vo tp tin. Mt v d khc - lnh ftp, sau khi chy lnh ny du nhc s c dng nh ni. Du nhc, xc nh bi bin PS3, s dng trong lnh select. Du nhc, xc nh bi bin PS4, c a ra trc mi cu lnh, trong lc bash theo di qu trnh thc hin. Gi tr theo mc nh - +. Nu c mong mun, bn c th thay i cc bin PS1 v PS2. Khi ny c th s dng bt k k t no nhp t bn phm, cng nh mt vi k t chuyn dng xc nh dng du nhc nh trong bng 5.3 (ch a ra mt vi trong s chng lm v d, danh sch y xem trong trang man ca bash - g lnh man bash). S ca lnh (s th t ca lnh ang thc hin trong bui lm vic hin thi) c th khc vi s ca chnh n trong danh sch lch s cc cu lnh, bi v danh sch cn cha c nhng cu lnh c ghi li trong tp tin lch s. Sau
4

random l t ting Anh c ngha ngu nhin

5.6 Tham bin v cc bin s. Mi trng ca h v

111

Cm k t \a \d \h \H \t \T \@ \u \w \W \$ \nnn \n \s \# \\ \[ \] \!

Bng 5.3: K t xc nh dng du nhc Gi tr (kt qu thu c) Tn hiu m thanh (m ASCII 07) Thi gian dng Th, thng, ngy, v d, Sun, Dec, 26. Tn my (hostname) n du chm u tin. Tn my y , v d teppi.phanthinh.com Thi gian hin thi dng 24 gi: HH:MM:SS (gi:pht:giy) Thi gian hin thi dng 12 gi: HH:MM:SS Thi gian hin thi dng 12 gi am/pm (sng/chiu) Tn ngi dng chy h v, v d teppi Tn y ca th mc lm vic hin thi (bt u t gc), v d /home/teppi82/project/l4u Th mc hin thi (khng c ng dn) K t #, nu h v c chy bi ngi dng root, v k t $, nu h v c chy bi ngi dng thng. K t c m h tm nnn Dng mi (chuyn dng) Tn h v S hin thi ca cu lnh Du gch ngc (backslash) Sau k t ny tt c cc k t s khng c in ra. Kt thc chui cc k t khng c in ra. S th t ca lnh hin thi trong lch s cc cu lnh dng.

khi gi tr ca bin c h v c xong, s xy ra s thay th theo cc quy lut m rng trong bng trn, ng thi cn xy ra s thay th trong tn cc cu lnh, trong cc biu thc s hc, v s chia t (word splitting). Chng ta s ni n nhng s thay th ny di.V d, sau khi thc hin lnh (v trong dng vn bn c khong trng, nn nht thit phi c du ngoc): [user/root]$ PS1="[\u@\h \W]\$" th trong du nhc s c du m ngoc vung, tn ngi dng, k hiu , tn my, khong trng, tn ca th mc hin thi (khng c ng dn), du ng ngoc vung, v k hiu $ (nu trn h v ang lm vic ngi dng bnh thng) hay #(nu h v chy di ngi dng root).

5.6.3

Bin mi trng PATH

Cn mt bin cng quan trng na c tn PATH. Bin ny a ra danh sch ng dn n cc th mc, m bash s tm kim tp tin (trng hp ring l cc tp tin lnh) trong trng hp, ng dn y n tp tin khng c a ra. Cc th mc trong danh sch ny phn cch nhau bi du hai chm (:). Theo mc nh bin mi trng PATH bao gm cc th mc bin sau: /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin, tc l bin PATH trng nh th ny: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin. thm th mc vo danh sch ny, cn thc hin cu lnh sau:

112 [user]$ PATH=$PATH:new_path

Bash

Khi tm kim, h v lc li cc th mc theo ng th t lit k trong bin PATH. Mt ch nh, c th a vo danh sch ny th mc hin thi, khi thm vo bin PATH mt du chm (.). Tuy nhin, y l iu khng khuyn lm vi l do bo mt: ngi c c c th t vo th mc dng chung mt chng trnh no , c cng tn vi mt trong s nhng cu lnh thng dng bi root, nhng thc hin nhng chc nng khc hon ton (c bit nguy him nu th mc hin thi ng u danh sch tm kim).

5.6.4

Bin mi trng IFS

Bin ny xc nh k t (cm k t) phn cch (Internal Field Separator), s dng trong thao tc phn chia t ng khi bin i dng lnh, m h v thc hin trc khi chy mt cu lnh no (xem di). Gi tr theo mc nh ca bin ny <Khong_trng><Tab><K_t_hng_mi>. Nu th g lnh echo $IFS, bn s nhn c mt ngc nhin nh.

5.6.5

Th mc hin thi v th mc c nhn

Tn ca th mc hin thi ghi trong bin mi trng vi tn PWD, v gi tr ca bin ny thay i sau mi ln chy chng trnh cd (cng nh mi ln thay i th mc hin thi theo bt k cch no, v d, qua Midnight Commander). Tng t nh vy tn y (gm c ng dn) ca th mc c nhn ca ngi dng, chy tin trnh cho, ghi trong bin HOME.

5.6.6

Cu lnh export

Khi h v chy mt chng trnh hay cu lnh no , n (h v) cung cp cho chng mt phn bin mi trng. c th cung cp bin mi trng cho tin trnh chy t h v, cn gn gi tr cho bin ny vi lnh export, tc l thay v [user]$ name=value cn g: [user]$ export name=value Trong trng hp ny, tt c cc chng trnh chy t h v (k c bn sao th hai ca chnh h v) s c quyn truy cp ti cc bin c gn nh vy, tc l s dng gi tr ca chng qua tn.

5.7

Khai trin biu thc

Hay h v c cc cu lnh nh th no?. Khi h v nhn c mt dng lnh ny cn thc hin, n (h v) trc khi chy cu lnh thc hin vic phn tch ng php dng lnh ny (ging trong

5.7 Khai trin biu thc

113

ngn ng, phn tch ch ng, v ng). Mt trong nhng bc ca s phn tch ny l php m hay khai trin biu thc (expansion). Trong bash c by loi khai trin biu thc:
Khai trin du ngoc (brace expansion); Thay th du ng (tilde expansion); Php th cc tham bin v bin s; Php th cc cu lnh; Php th s hc (thc hin t tri sang phi); Php chia t (word splitting); Khai trin cc mu tn tp tin v th mc (pathname expansion).

Cc thao tc ny c thc hin theo ng th t lit k trn. Chng ta s xem xt chng theo t t ny.

5.7.1

Khai trin du ngoc

Khai trin du ngoc tt nht minh ha trn v d. Gi thit, chng ta cn to th mc con trong mt th mc no , hoc thay i ngi dng s hu ca vi tp tin cng mt lc. C th thc hin iu ny nh cc cu lnh sau: [user]$ mkdir /usr/src/unikey/{old,new,dist,bugs} [root]# chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex} Trong trng hp u, trong th mc /usr/src/unikey/ s to ra cc th mc con old,new,dist, v bugs. Trong trng hp th hai, ngi dng s hu ca cc tp tin sau s thay i (thnh root):
/usr/ucb/ex /usr/lib/ex?.? /usr/ucb/edit /usr/lib/ex?.? /usr/ucb/ex /usr/lib/how_ex /usr/ucb/edit /usr/lib/how_ex

114

Bash

Tc l vi mi cp du ngoc s to ra vi dng ring r (s nhng dng ny bng s t nng trong du ngoc) bng cch ghi thm vo trc mi t trong ngoc nhng g ng trc du ngoc, v ghi thm vo sau mi t ny nhng g ng sau du ngoc. Mt v d khc: dng a{d,c,b}e khi khai trin s thu c ba t ade ace abe. Khai trin du ngoc c thc hin trc cc dng khai trin khc trong dng lnh, hn na tt c cc k t c bit c trong dng lnh, k c nhng k t nm trong du ngoc, s c gi khng thay i (chng s c bin dch cc bc pha sau).

5.7.2

Thay th du ng (Tilde Expansion)

Nu nh t bt u vi k t du ng (), tt c cc k t ng trc du gch cho u tin (hay tt c cc k t nu nh khng c du gch cho) s c hiu l tn ngi dng (login name). Nu nh tn ny l mt dng rng (tc l du gch cho ng ngay pha sau du ng), th du ng s c thay th bi gi tr ca bin HOME. V nu gi tr ca bin HOME khng c gn th du ng s c thay th bi ng dn u n th mc c nhn ca ngi dng, m chy h v. Nu nh ngay sau du ng (v trc du gch cho) l mt t trng vi tn ca mt ngi dng hp php, th du ng cng vi tn ngi dng c thay th bi ng dn y n th mc c nhn ca ngi dng ny. Nu nh t ng sau du ng khng phi l tn ca mt ngi dng (v khng rng), th t khng b thay i. Nu nh sau du ng l +, hay k hiu ny s c thay th bi tn u ca th mc hin thi (tc l gi tr ca bin PWD). Nu dng sau du ng l -, th thay th gi tr ca bin OLDPWD (th mc c).

5.7.3

Php th cc tham bin v bin s

K t $ c s dng cho cc thao tc th tham bin, th cc cu lnh v th cc biu thc s hc. Biu thc hay tn ng sau $ c th c a vo ngoc, khng nht thit, nhng rt tin, v du ngoc phn cch biu thc vi cc t hay k t ng sau. Nh vy, gi gi tr ca tham bin ni chung cng nh bin mi trng ni ring trong dng lnh, cn t biu thc dng $parameter. Du ngoc ch cn thit, nu tn ca tham bin c cha vi ch s, hoc khi theo sau tn cn c cc k t khc, m chng ta khng mun h v hiu lm chng l mt phn ca tn tham bin. Trong tt c cc gi tr ca bin s xy ra php th du ng (), s khai trin tham bin v bin s, php th cc cu lnh, php th cc biu thc s hc, cng nh xa cc k t trch dn (xem di). S phn chia t khng xy ra, tr trng hp $ (li gii thch xem bng s 3). S khai trin cc mu tn tp tin v th mc cng khng c thc hin.

5.7.4

Php th cc cu lnh

Php th cc cu lnh l mt cng c rt mng ca bash. ngha ca n nm ch thay th tn cc cu lnh bi kt qu thc hin ca chng. C hai dng php th lnh: $(command) v command Nu ng dng dng th hai (ch y s dng du ngoc n ngc, phm cho n thng nm trn phm Tab), th du gch ngc (\) trong du ngoc s c chc nng nh mt k t thng

5.7 Khai trin biu thc

115

thng, tr trng hp, khi ng sau n (du gch ngc) l mt $, , hay mt \. Nu nh s dng dng $(command), th tt c cc k t ng trong ngoc to thnh mt cu lnh, khng c k t no c ngha c bit. Nu php th cu lnh xy ra pha trong ngoc kp, th trong kt qu ca php th s khng thc hin php phn chia t v s khai trin mu tn tp tin v th mc.

5.7.5

Php th s hc (Arithmetic Expansion)

Php th s hc cho php tnh gi tr ca mt biu thc s hc v thay th n (biu thc) bi kt qu thu c. C hai dng php th s hc: $[expression] ((expression)) Trong expression c hiu (c bash c) nh khi ng trong ngoc kp, nhng nhng du ngoc kp trong expression li c c nh mt k t thng. Pha trong expression c thc hin cc php th tham bin v th cu lnh. C php ca biu thc expression tng t nh c php ca biu thc s hc ca ngn ng C, c th hn v vn ny c th c trong phn ARITHMETIC EVALUATION ca trang man ca bash. V d, cu lnh [user]$ echo $((2 + 3 * 5)) cho kt qu bng 17. Nu biu thc khng chnh xc, bash s a ra thng bo li.

5.7.6

Phn chia t (word splitting)

Sau khi thc hin xong cc php th tham bin, th lnh, v th cc biu thc s hc, h v li phn tch dng lnh mt ln na (nhng dng thu c sau cc php th ni trn) v thc hin vic phn chia t (word splitting). Thao tc ny nm ch, h v tm trong dng lnh tt c cc k t phn chia, xc nh bi bin IFS (xem trn), v nh chia nh dng lnh thnh cc t ring r trong cc ch tng ng. Nu gi tr ca IFS bng mt dng trng, th vic phn chia t s khng xy ra. Nu trong dng lnh khng thc hin php th no trong cc php th k trn, th phn chia t cng khng xy ra.

5.7.7

Khai trin cc mu tn tp tin v th mc (Pathname Expansion)

Php th tn ng dn v tp tin (Pathname expansion) s dng ch nh mt mu nh gn m c th ch ra vi tp tin (hay th mc), tng ng vi mu ny. Sau khi phn chia t, v nu nh khng a ra ty chn -f, th bash s tm kim trong tng t ca dng lnh cc k t *, ?, v [. Nu tm thy t vi mt hay vi k t nh vy, th t ny s c xem nh mt mu, v cn thay th bi cc t trong danh sch ng dn, tng ng vi mu ny. Nu nh khng tm thy tn tng ng vi mu, v bin nullglob khng c a ra, th t s khng thay i, tc l cc k t c bit b mt gi tr v hiu nh cc k t thng. Nu nh bin ny c xc nh, m ng dn tng ng vi mu khng tm thy, th t s b xa khi dng lnh. Cc k t dng to mu c cc gi tr trong bng 5.4.

116

Bash

Bng 5.4: Cc k t to mu K t Quy lut thay th * Tng ng vi bt k dng k t no, k c dng rng. V d, v*.txt s c thay th bi vnoss.txt, vnlinux.txt v vntex.txt (nu cc tp tin ny tn ti), v *.png s tng ng tt c cc tp tin c phn m rng png (tp tin ha hai chiu). ? Tng ng bt k mt k t n no. V d, mu file?.txt s c thayth bi cc tn tp sau file1.txt, file2.txt, file3.txt, v filea.txt (nu chng tn ti), nhng file23.txt th khng. [...] Tng ng bt k k t no trong s cc k t nm trong du ngoc vung ny. Cp k t, phn cch nhau bi du tr (-), v d c-f, biu th mt dy; bt k k t no, theo t in, nm gia hai k t ny, k c hai k t to ra dy (c v f trong v d) cng tng ng vi mu. Nu k t u tin trong ngoc vung l hay , th mu ( v tr ny) s tng ng tt c cc k t, khng c ch ra trong ngo Mu tn tp tin rt thng xuyn s dng trong dng lnh c cha ls. Hy tng tng l bn mun xem thng tin ca mt th mc, trong c cha mt s lng ln cc tp tin cc dng, v d, tp tin hnh nh, phim vi dng gif, jpeg, avi, v.v. . . . thu c thng tin ch ca tp tin dng jpeg, c th dng cu lnh [user]$ ls *.jpg Nu trong th mc c nhiu tp tin, m tn ca chng l cc s gm bn ch s (th mc /proc l mt v d+), th lnh sau ch a ra danh sch cc tp tin c s t 0500 n 0999: [user]$ ls -l 0[5-9]??

5.7.8

Xa cc k t c bit

Sau khi lm xong tt c cc php th, cc k t \, v " cn li trong dng lnh (chng c s dng hu b gi tr c bit ca cc k t khc) s b xa ht.

5.8

Shell - mt ngn ng lp trnh

Nh ni trn, c th xy dng bt k gii thut no, cng cn c cc ton t kim tra iu kin. H v bash h tr cc ton t la chn if...then...else v case, cng nh cc ton t vng lp for, while, until, nh n (bash) tr thnh mt ngn ng lp trnh mnh.

5.8 Shell - mt ngn ng lp trnh

117

5.8.1

Ton t if v test (hoc [ ])

Cu trc ca ton t iu kin c dng thu gn nh sau: if list1 then list2 else list3 fi trong , list1, list2, v list3 l cc chui cu lnh, phn cch nhau bi du phy v kt thc bi mt du chm phy hay k t dng mi. Ngoi ra, cc chui ny c th c a vo du ngoc nhn: list. Ton t if kim tra gi tr c tr li bi cc cu lnh t list1. Nu trong danh sch c vi cu lnh, th kim tra gi tr c tr li bi cu lnh cui cng ca danh sch. Nu gi tr ny bng 0, th s thc hin cc lnh t list2; cn nu gi tr ny khc khng, th s thc hin nhng lnh t list3. Gi tr c tr li bi ton t if nh vy, trng vi gi tr m chui lnh thc hin (list2 hoc list3) a ra. Dng y ca lnh if nh sau: if list then list [ elif list then list ] ... [ else list ] fi ( y du ngoc vung ch c ngha l, nhng g nm trong n, ngoc vung, khng nht thit phi c). Biu thc ng sau if hay elif thng l cu lnh test, m c th c biu th bi du ngoc vung [ ]. Lnh test thc hin php tnh mt biu thc no , v tr li gi tr 0, nu biu thc l ng, v 1 trong trng hp ngc li. Biu thc c a ti chng trnh test nh mt tham s ca chng trnh. Thay v g test expression c th a biu thc expression vo ngoc vung: [ expression ] Cn ch rng, test v [ l hai tn ca ca cng mt chng trnh, ch khng phi l mt php bin ha thn thng no ca h v bash (ch l c php ca [ i hi phi c du ng ngoc). V cng cn ch rng ch ca test trong cu trc if c th s dng bt k chng trnh no. kt thc mc ny, chng ta a ra v d s dng if: if [ -x /usr/bin/unicode_start ] ; then unicode_start else echo "hello world" fi V ton t test (hay [...]) cn i su hn.

5.8.2

Ton t test v iu kin ca biu thc

Biu thc iu kin, s dng trong ton t test, c xy dng trn c s kim tra thuc tnh tp tin, so snh cc dng v cc so snh s hc thng thng. Biu thc phc tp hn c to ra t cc thao tc n v kp sau (nhng vin gch c s):
-a file ng nu tp tin c tn file tn ti.

118

Bash
-b file ng nu file tn ti, v l mt tp tin thit b khi (block device) c bit. -c file ng nu file tn ti, v l mt tp tin thit b k t (charater device) c bit. -d file ng nu file tn ti v l mt th mc. -e file ng nu tp tin c tn file tn ti. -f file ng nu tp tin c tn file tn ti v l mt tp tin thng thng. -g file ng nu tp tin c tn file tn ti v c t bit thay i nhm. -h file hay -L file ng nu tp tin c tn file tn ti v l lin kt mm (lin kt tng trng). -k file ng nu tp tin c tn file tn ti v c t bit sticky. -p file ng nu tp tin c tn file tn ti v l tn ca mt ng (knh FIFO). -p file ng nu tp tin c tn file tn ti v l tn ca mt ng (knh FIFO). -r file ng nu tp tin c tn file tn ti v c quyn c. -s file ng nu tp tin c tn file tn ti v kch thc ln hn khng. -t fd ng nu b m t ca tp tin (fd) m v ch ln terminal. -u file ng nu tp tin c tn file tn ti v c t bit thay i ngi dng. -w file ng nu tp tin c tn file tn ti v c quyn ghi. -x file ng nu tp tin c tn file tn ti v c quyn thc thi.

5.8 Shell - mt ngn ng lp trnh

119

-0 file ng, nu tp tin c tn file v ch s hu ca n l ngi dng m ID c hiu lc ch n. -G file ng, nu tp tin c tn file tn ti v thuc v nhm, xc nh bi ID nhm c hiu lc. -S file ng, nu tp tin c tn file tn ti v l socket. -N file ng, nu tp tin c tn file tn ti v thay i t ln c c cui cng. file1 -nt file2 ng, nu tp tin file1 c thi gian sa i mun hn file2. file1 -ot file2 ng, nu tp tin file1 gi hn file1 (trng hp ngc li ca trng hp trn). file1 -ef file2 ng, nu tp tin file1 v file2 c cng mt s thit b v ch s m t inode. -o optname ng, nu ty chn optname ca h v c kch hot. Chi tit xin xem trn trang man bash. -z string ng, nu di ca chui string bng khng. -n string ng, nu di ca chui khc khng. string1 == string2 ng, nu hai chui trng nhau. C th thay hai == bng mt =. string1 !== string2 ng, nu hai chui khng trng nhau. string1 < string2 ng, nu chui string1, theo t in, ng trc chui string2 (i vi ngn ng hin thi). string1 > string2 ng, nu chui string1, theo t in, ng sau chui string2 (i vi ngn ng hin thi). arg1 OP arg2 y OP l mt trong cc php so snh s hc: -eq (bng), -ne (khc, khng bng), -lt (nh hn), -le (nh hn hoc bng), -gt (ln hn), -ge

120

Bash (ln hn hoc bng). ch cc tham s arg1 v arg2 c th s dng cc s nguyn (m hoc dng).

T cc biu thc iu kin c bn ny c th xy dng cc biu thc phc tp theo mun nh cc php lgc thng thng PH NH, V (cng) v HOC:
!(expression) Php ph nh. ng, nu biu thc sai. expression1 -a expression2 Php cng lgic AND. ng nu c hai biu thc u ng. expression1 -o expression2 Php lgc hoc OR. ng nu mt trong hai biu thc ng.

5.8.3

Ton t case

Dng ca ton t case nh sau: case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac Cu lnh case u tin khai trin t word, v so snh n (word) vi mi t trong mu pattern theo th t. Sau khi tm thy s trng nhau u tin th dng vic so snh li, v thc hin danh sch list cc cu lnh ng sau mu tm thy. Gi tr tr li bi ton t ny, bng 0, nu khng tm thy s trng nhau no. Trong trng hp ngc li, tr li gi tr m cu lnh cui cng trong danh sch list a ra. V d s dng ton t case sau ly t script /etc/rc.d/rc.sysinit (FreeBSD-style): case "$UTC" in yes|true) CLOCKFLAGS="$CLOCKFLAGS -u"; CLOCKDEF="$CLOCKDEF (utc)"; ;; no|false) CLOCKFLAGS="$CLOCKFLAGS --localtime"; CLOCKDEF="$CLOCKDEF (localtime)"; ;; esac Nu bin s (UTC) nhn gi tr yes hoc true, th s thc hin cp lnh th nht, nhn gi tr no hoc false - cp th hai.

5.8.4

Ton t select

Ton t select cho php t chc hi thoi vi ngi dng. N c dng sau: select name [ in word; ] do list; done

5.8 Shell - mt ngn ng lp trnh

121

Lc u t mu word hnh thnh mt danh sch nhng t tng ng vi mu ny. Tp hp nhng t ny c a vo knh thng bo li tiu chun, hn na mi t c i km vi mt s th t. Nu mu word b b qua (khng c trong ton t select), th s a vo cc tham bin v tr (xem trn) theo mt cch tng t. Sau , du nhc PS3 c a ra, v h v ch chui nhp vo trn u vo tiu chun. Nu chui nhp vo c cha s, tng ng vi mt trong cc s hin ra, th bin name s c gn gi tr bng t i km vi s ny. Nu nhp vo mt dng rng, th s v t s c hin ra them mt ln na. Nu nhp vo bt k mt gi tr no khc, th bin name s nhn gi tr bng khng. Chui m ngi dng nhp vo, c ghi li trong bin REPLY. Danh sch lnh list c thc hin vi gi tr bin name chn. Sau y l mt script nh (xin hy g khng du nu console ca bn cha h tr vic hin th Ting Vit):
#!/bin/sh echo "Bn thch dng OS no?" select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris" "QNX" "Other"; do break done echo "Bn chn $var"

Ghi on trn vo mt tp tin (v d, select.sh), thay i tp tin thnh kh thi (v d, chmod 755 select.sh), v chy (./select.sh). Trn mn hnh s hin ra cu hi sau: Bn thch dng OS no? 1) Linux 3) Free BSD 2) Gnu Hurd 4) MacOSX #?

5) Solaris 6) QNX

7) Other

Hy nhn mt trong 7 s a ra (t 1 n 7). Nu bn nhp 4 (nhn c <Enter>), th s thy thng bo sau: Bn chn MacOSX

5.8.5

Ton t for

Ton t for lm vic c khc mt cht so vi for trong cc ngn ng lp trnh thng thng. Thay v tng hoc gim gi tr ca mt bin s no (ln hoc xung) mt n v sau mi vng lp, th n gn gi tr tip theo trong danh sch t a sn cho bin trong mi vng lp. Ni chung cu trc c dng sau: for name in words do list done Quy lut xy dng danh sch lnh (list) ging trong ton t if. V d. Script sau to cc tp tin fu1, fu2, v fu3:

122 for a in 1 2 3 ; do touch fu$a done

Bash

C th g ba dng ny trn mt dng lnh, kt qu thu c tng t vi script. Dng tng qut ca ton t for nh sau: for name [ in word; ] do list ; done u tin cng xy ra s khai trin t word theo quy lut khai trin biu thc (xem trn). Sau bin name ln lt c gn cc gi tr thu c t s khai trin ny, v thc hin danh sch lnh list trong mi ln nh vy. Nu khng c in word, th danh sch lnh list c thc hin mt ln cho mi tham bin v tr a ra. Trn Linux c chng trnh seq, tip nhn hai s nguyn lm tham s, v a ra chui tt c cc s nm gia hai s ny (cng thm c chng). Nh cu lnh ny c th s dng for ca bash lm vic nh ton t for trong cc ngn ng lp trnh thng thng. lm c iu ny ch cn vit vng lp for nh sau: for a in $( seq 1 6 ) ; do cat fu$a done Cu lnh (script) ny a ra mn hnh ni dung ca 10 tp tin (nu c): fu1, ..., fu10.

5.8.6

Ton t while v until

Ton t while lm vic tng t nh if, nhng vng lp cc cu lnh trong list2 ch thc hin khi iu kin cn ng, v s ngng khi iu kin khng tha mn. Cu trc c dng nh sau: while list1 do list2 done V d: while [ -d directory ] ; do ls -l directory >> logfile echo -- SEPARATOR -- >> logfile sleep 60 done Chng trnh (script) trn s theo di v ghi li ni dung ca th mc directory theo tng pht nu th mc cn tn ti. Ton t until tng t nh ton t while: until list1 do list2 done

5.8 Shell - mt ngn ng lp trnh

123

im khc bit nm ch, s dng gi tr ph nh ca iu kin list1, tc l list2 thc hin, nu cu lnh cui cng trong danh sch list1 tr li trng thi thot ra khc khng.

5.8.7

Cc hm s

C php H v bash cho php ngi dng to cc hm s cho mnh. Hm s


lm vic v c s dng ging nh cc cu lnh thng thng ca h v, tc l chng ta c th t to cc cu lnh mi. Hm s c cu trc nh sau: function name () { list } Hn na t function khng nht thit phi c, name xc nh tn ca hm (dng gi hm), cn phn thm ca hm s to bi danh sch cc cu lnh list, nm gia { v }. Cc cu lnh ny s c thc hin mi khi tn name c gi (ging nh mt lnh thng thng). Cn ch rng hm c th l qui, tc l gi hm s ngay trong phn thn ca n. Hm s thc hin trong phm vi h v hin thi: khng c tin trnh mi no c chy khi bin dch hm s (khc vi vic chy script).

5.8.8

Tham s

Khi hm s c gi thc hin, cc tham s ca hm s tr thnh cc tham bin v tr (positional parameters, xem trn) trong thi gian thc hin hm ny. Chng c t cc tn nh $n, trong n l s ca tham s m chng ta mun s dng. Vic nh s bt u t 1, nh vy $1 l tham s u tin. Cng c th s dng tt c cc tham s mt lc nh $*, v a ra s th t ca tham s nh $# Tham s v tr s 0 khng thay i. Trong khi thc hin nu gp cu lnh ni tr return (trong phn thn ca hm), th hm s s b dng li v quyn iu khin c trao cho cu lnh ng sau hm. Khi thc hin xong hm s, cc tham bin v tr v tham bin c bit # s c tr li cc gi tr m chng c trc khi chy hm.

5.8.9

Bin ni b (local)

Nu mun to mt tham bin a phng, c th s dng t kha local. C php a ra bin a phng ging ht cc tham bin khc, ch c iu cn ng sau t kha local: local name=value. Di y l mt v d hm s, thc hin cng vic ca lnh seq nhc n trn: seq() { local I=$1; while [ $2 != $I ]; do { echo -n "$I "; I=$(( $I + 1 ))

124 }; done; echo $2 }

Bash

Cn ch n ty chn -n ca echo, n (ty chn) hy b vic to dng mi. Mc d ty chn ny khng c nhiu ngha vi mc ch chng ta mun y, nhng s rt c ch trong cc hm s vi mc ch khc. Hm s tnh giai tha fact Mt v d khc: fact() { if [ $1 = 0 ]; then echo 1; else { echo $(( $1 * $( fact $(( $1 -- 1 )) ) )) }; fi } y l hm s giai tha, mt v d ca hm qui. Hy ch n s khai trin s hc, v php th cc cu lnh.

5.9

Script ca h v v lnh source

Script ca h v ch l cc tp tin c cha chui lnh. Tng t hm s script c th c thc hin nh mt cu lnh. C php truy cp n cc tham s cng nh hm s. Trong cc trng hp thng thng khi chy script s c mt tin trnh mi c chy. c th thc hin script trong bn bash hin thi, cn s dng cu lnh source, hay mt du chm . (ng ngha ca source). Trong trng hp ny script ch n gin l mt tham s ca lnh ni trn. Cu lnh s c dng: source filename [arguments] Cu lnh ny c v thc hin cc cu lnh c trong tp tin filename trong mi trng hin thi, v tr li gi tr, xc nh bi cu lnh cui cng ca filename. Nu filename khng cha du gch cho, th ng dn, lit k trong bin s PATH, s c s dng tm tp tin c tn filename. Tp tin ny khng nht thit phi kh thi (khng nht thit phi c bit x). Nu trong th mc, lit k trong PATH, khng tm thy tp tin cn, th s tm n (tp tin) trong th mc hin thi. Nu c cc tham s (a ra arguments, xem nh dng cu lnh trn), th trong thi gian thc hin script chng s thnh cc tham bin v tr. Nu khng c tham s, th tham bin v tr khng thay i. Gi tr (trng thi), m lnh source tr li, trng vi gi tr, tr li bi cu lnh cui cng trong script. Nu khng cu lnh no c thc hin, hoc khng tm thy tp tin filename, th trng thi thot bng 0.

5.10 Cu lnh sh

125

5.10

Cu lnh sh

Bn lun lun c th chy mt bn sao ca h v bash nh cu lnh bash hay sh. Khi ny c th bt bn sao ny chy mt script no , nu a tn ca script nh mt tham s cho lnh bash. Nh vy, thc hin script myscript cn a cu lnh sh myscript. Nu xem ni dung ca mt tp tin script no (nhng tp tin nh vy c rt nhiu trn h thng), bn s thy dng u tin c dng sau: #!/bin/sh. iu ny c ngha l, khi chng ta gi script thc hin nh mt lnh thng thng, th /bin/sh s gip chng ta thu xp mi th. C th thay th dng ny bi lin kt n bt k mt chng trnh no, m s c tp tin v thc hin cc cu lnh tng ng. V d, script trn ngn ng Perl bt u bi dng c dng !/bin/perl. Mt ch khc l k t # dng vit li ch thch trong script. Tt c nhng g ng sau k t ny n cui dng s c coi l ch thch v b bash b qua (tc l h v s khng xem dng ny l cu lnh). Nu bn mun kim chng li tc dng ca k t ny, th hy nhp vo dng lnh mt cu lnh bt k, v t trc n (cu lnh) k t #, v d # ls, bn s thy rng h v b qua cu lnh ny. Chng ta s dng bi hc ngn gn v bash ti y. Tt nhin, cn rt nhiu vn quan trng cn xem xt nhng nm ngoi phm vi ca bi hc, v d, qun l tin trnh, lch s cu lnh, m t v th vin readline, tn hiu, v.v. . . Cc bn s tm thy thng tin cn thit trong cc cun hng dn khc hoc trn trang man bash.

Chng 6 S dng Midnight Commander


Mi th u c vit ra cc nh lp trnh Nga.
Trong chng ny chng ta s hc cch s dng chng trnh Midnight Commander, mt trnh qun l tp tin mnh. Sau khi c xong chng ny bn c s c th s dng cc t hp phm cng nh giao din ca Midnight Commander thc hin rt nhiu cng vic c lin quan n h thng tp tin t nh b n nng nhc. u tin chng ta hy xem xt cch ci t chng trnh ny. . .

6.1

Ci t chng trnh Midnight Commander

Mc d iu khin h thng tp tin ni chung v lm vic vi cc tp tin ni ring c th s dng cc cu lnh ca h iu hnh, nh pwd, ls, cd, mv, mkdir, rmdir, cp, rm, cat, more v.v. . . nhng s thun tin hn khi s dng chng trnh Midnight Commander. Midnight Commander (hay thng rt gn thnh mc) l chng trnh cho php xem cu trc cy th mc v thc hin nhng thao tc iu khin h thng tp tin. Ni cch khc, y l trnh qun l tp tin (File Manager). Nu nh bn c c kinh nghim lm vic vi Norton Commander (nc) trong MS-DOS hay vi FAR trong Windows, th s lm vic vi mc mt cch d dng. Bi v thm ch nhng t hp phm nng chnh ca chng cng trng nhau. Trong trng hp ny, c th lm vic vi Midnight Commander bn c ch cn xem nhanh nhng ni dung pha di. Tc gi xin c li khuyn i vi nhng ai cn xa l vi NC hay FAR (nu nh c?): hy ch c v thc hnh chm ch, v Midnight Commander s gip rt nhiu trong khi lm vic vi h iu hnh.
Ghi ch: 1. Kin thc trong chng ny c vit s dng cho phin bn 4.6.1-pre31 , mc dng c th p dng cho nhng phin bn khc. 2. Kin thc a ra ch p dng c hon ton trong trng hp chng trnh chy t knh giao tc (console), hay cn gi l giao din text. Khi lm vic vi chng trnh qua trnh gi lp (emulator) ca terminal trong giao din ha, v d xterm, rxvt, v.v. . . th mt s m t hot ng ca chng trnh s khng cn
trong bn gc tc gi Kostromin dng phin bn 4.5.30, theo kin ngi dch l kh c v khng cn gp trong nhng bn phn phi Linux mi.
1

6.2 V ngoi ca mn hnh Midnight Commander

127

Hnh 6.1: Giao din ting Vit ca Midnight Commander


chnh xc na, v vic nhn phm b v ha chim ly. S khng tng ng nh vy thng gp nhng ch ni v phm nng.

Trong phn ln cc bn phn phi chng trnh Midnight Commander khng c t ng ci t cng vi h thng. Nhng cc gi (rpm, deb, tgz . . . ) ca Midnight Commander s c trn a, v vic ci t t cc gi ny l khng kh khn g. V bi v chng trnh ny s lm cho bn c d th hn, tc gi rt mun rng chng trnh s c ci t ngay sau khi ci xong h iu hnh.2

6.2

V ngoi ca mn hnh Midnight Commander

khi ng Midnight Commander, cn g vo dng lnh shell cu lnh mc v nhn <Enter>. Nu ng dng khng chy, th cn tm xem tp tin chng trnh mc nm u (c th dng cu lnh find / -name mc -type f), sau g vo dng lnh ng dn y ti tp tin , v d, trn my tc gi l /usr/bin/mc. Sau khi chy chng trnh, bn c s thy mn hnh mu da tri lm chng ta nh n mn hnh chng trnh Norton Commander cho MS-DOS hay chng trnh FAR cho Windows nh trong hnh 6.2. Gn nh ton b khng gian mn hnh khi lm vic vi Midnight Commander b chim bi hai bng3 hin th danh sch tp tin ca hai th mc. pha trn hai bng ny l trnh n (thc n). C th chuyn n trnh n chn cc lnh c trong bng phm <F9> hoc nh phm chut (nu nh sau khi khi
Ngoi ra ngi dch cun sch ny cng dch giao din ca Midnight Commander ra ting Vit. V th nu mun bn c th s dng giao din ting m ca Midnight Commander. 3 panel
2

128

S dng Midnight Commander

Hnh 6.2: V ngoi ca mn hnh Midnight Commander ng mc bn c khng nhn thy dng trnh n u, th cng ng bun, v c hin th trnh n hay khng c xc nh bi cu hnh chng trnh). Dng di cng l dy cc nt, mi nt tng ng vi mt phm chc nng <F1> <F10>. C th coi dng ny l li mch nc v cch s dng nhng phm chc nng ni, v cn c th chy trc tip cc cu lnh tng ng bng cch nhn chut vo cc nt ny. Vic hin th cc nt c th tt i, nu nh bn c mun tit kim khng gian mn hnh (cch lm s c sau ny khi chng ta ni v cu hnh chng trnh). S tit kim c hai l do. Th nht, bn c s nhanh chng nh c cng dng ca 10 phm ny, v li mch nc s tr thnh khng cn thit (v vic nhn chut ln cc nt khng phi lc no cng thun tin). Th hai, thm ch nu bn c khng nh phi dng phm no thc hin cng vic mong mun, th vn c th s dng trnh n File (Tp tin) trong trnh n chnh ca chng trnh (ch cn nh rng, phm chuyn vo trnh n chnh l <F9>). Qua trnh n File (Tp tin) c th thc hin bt k thao tc no m thng thng phi nh cc phm chc nng, ngoi tr <F1> v <F9>. Dng th hai t di ln l dng lnh ca chng trnh Midnight Commander (hay chnh xc hn l dng lnh ca shell hin thi). y c th nhp v thc hin bt k cu lnh no ca h thng. pha trn dng ny (nhng pha di cc bng) c th hin th nhng li khuyn c ch (hint4s). Cng c th b i dng li khuyn ny khi iu chnh cu hnh ca chng trnh. Mi bng gm phn u, danh sch tp tin ca mt th mc no v dng trng thi nh (mini-status, c th khng hin th nu t trong cu hnh chng trnh). Trong phn u ca mi bng l ng dn y n th mc c ni dung c hin th, v ng thi cn c ba nt <, v v > s dng iu khin chng trnh bng chut (nhng nt ny khng lm vic nu nh bn c chy mc trong trnh gi to (emulator) terminal). Trn dng trng thi nh c hin th mt vi d liu v tp tin hay th mc ang c thanh chiu sng ch n (v d, kch thc tp tin v quyn truy cp).

6.3 Tr gip

129

Ch mt trong hai bng l hin thi (hot ng). Bng hin thi c thanh chiu sng tn th mc phn u v thanh chiu sng mt trong nhng dng ca bng . Tng t, trong shell chy chng trnh Midnight Commander, th mc hin thi l th mc c hin th trong bng hot ng. Hu ht cc thao tc c thc hin trong th mc ny. Cc thao tc nh sao chp (<F5>) hay di chuyn (<F6>) tp tin s dng th mc c hin th trong bng th hai lm th mc ch n (s sao chp hay di chuyn n th mc ny). Trong bng hot ng mt dng c chiu sng. Thanh chiu sng c th di chuyn nh cc phm iu khin vic di chuyn. Chng trnh xem tp tin ni tr, chng trnh xem li mch nc v chng trnh xem th mc s dng cng mt m chng trnh iu khin vic di chuyn. V th vic di chuyn s dng mt b cc t hp phm (nhng trong mi chng trnh con c cc t hp phm ch p dng trong ni b m thi). Xin a ra mt bng ngn gn lit k cc t hp phm dng chung iu khin vic di chuyn. Bng 6.1: Cc t hp phm di chuyn dng chung Phm Di chuyn thc hin <> hoc <Ctrl>+<P> Di chuyn tr li (ln trn) mt dng <> hoc <Ctrl>+<N> Di chuyn v pha trc (xung di) mt dng <Page Up> hoc <Alt>+<V> Quay li mt trang <Page Down> hoc <Ctrl>+<V> Tin v trc mt trang <Home> Quay v dng u <End> Chuyn n dng cui cng

6.3

Tr gip

Khi lm vic vi chng trnh Midnight Commander, c th xem tr gip vo bt k lc no nh phm <F1>. Tr gip c t chc di dng siu vn bn, tc l trong vn bn c c nhng lin kt n nhng phn khc. Nhng lin kt c nh du bi nn mu xanh nht . Lin kt c chn hin thi s c nn mu xanh m . di chuyn trong ca s xem tr gip c th s dng nhng phm mi tn hoc chut. Ngoi nhng t hp phm di chuyn ni chung trong bng 6.1, chng trnh xem tr gip cn chp nhn nhng t hp phm s dng trong chng trnh con dng xem tp tin: Bng 6.2: Di chuyn trong trnh xem tp tin Phm Di chuyn thc hin <B> hoc <Ctrl>+<B> hoc <Ctrl>+<H> hoc Li li mt trang <Backspace> hoc <Delete> <Du cch> Tin ti mt trang <U> ( <D> ) Li li (tin ti) na trang <G> (<Shift>+<G>) i ti u (cui) danh sch

130

S dng Midnight Commander

Ngoi nhng t hp phm ch ra cn c th s dng nhng t hp ch lm vic khi xem tr gip (chng c lit k trong bng 6.3). Bng 6.3: Di chuyn khi xem tr gip Phm Di chuyn thc hin <Tab> i ti lin kt tip theo <Alt>+<Tab> Quay li lin kt trc <> i ti lin kt tip theo hoc ko ln mt dng <> Quay li lin kt trc hoc ko xung mt dng <> hoc <Enter> M trang m lin kt hin thi ch ti <> hoc <L> M trang tr gip va xem trc trang hin thi <F1> Tr gip s dng ca bn thn tr gip <N> Chuyn ti phn tip theo ca tr gip <P> Chuyn ti phn nm trc ca tr gip <C> Chuyn ti mc lc ca tr gip <F10>, <Esc> Thot khi tr gip Bn c th s dng phm trng (space) chuyn ti trang tr gip tip theo v phm <B> quay li mt trang. Chng trnh ghi nh th t di chuyn theo lin kt v cho php tr li phn xem trc bng phm <L>. Nu nh c h tr chut (xem phn 6.4), th c th s dng chut di chuyn. Nhn chut tri ln lin kt chuyn ti vn bn m lin kt ny ch ti. Chut phi s dng quay li phn xem trc .

6.4

S dng chut

Chng trnh Midnight Commander c h tr chut. Tnh nng ny c thc hin nu c chy driver gpm khng ph thuc vo ni ngi dng lm vic l trn knh giao tc Linux hay chy Midnight Commander trn xterm (hoc thm ch s dng kt ni t xa qua telnet, rlogin hay ssh). Bng cch nhn nt chut tri s c th di chuyn dng chiu sng ln bt k tp tin no trong cc bng. nh du (chn) tp tin no , ch cn nhn nt chut phi ln tn ca tp tin , khi ny tn tp tin s c mu khc (theo mc nh l mu vng ). b nh du th cng ch cn s dng nt chut phi . Nhn kp chut tri ln tn tp tin thc hin tp tin (nu y l mt chng trnh), hoc chy chng trnh c kh nng v c gn c tp tin ny. V d chng trnh xv c gn m cc tp tin hnh n *.jpg, th khi nhn kp chut tri ln tp tin screenshot.jpg, chng trnh xv s cho chng ta thy tp tin screenshot.jpg trng ra sao. Nhn chut (bt k nt no) ln cc nt chc nng (cc nt F1-F10 di cng) cng ng thi chy chng trnh tng ng vi nt . Nhn chut (bt k nt no) ln trnh n trn cng s m ra (ni ng hn l m xung di) trnh n con ca n. Nu nhn chut ln khung trn cng ca bng c mt danh sch cc tp tin rt di, th s thc hin di chuyn di 1 ct tp tin v pha u danh sch. Nhn

6.5 iu khin cc bng

131

chut ln khung nm di ca bng, th tng ng s thc hin di chuyn di 1 ct tp tin v pha cui danh sch. Phng php di chuyn ny cng lm vic khi xem tr gip v xem danh sch Cy th mc Nu chy mc vi h tr chut th ngi dng c th thc hin cc thao tc sao chp v dn vn bn khi gi phm <Shift>. lm c iu ny, bn cn nhn v gi phm <Shift>, chn on vn bn cn thit bng cch ko chut, sau th phm <Shift> ra, a con tr n ni cn dn, ri li nhn v gi phm <Shift> trong khi nhn chut phi. Cn ch rng tnh nng ny khng lm vic trong cc trnh gi lp terminal nh xterm.

6.5

iu khin cc bng

Cc bng ca Midnight Commander thng thng hin th nhng g c trong th mc ca h thng tp tin (v th thng c gi l bng th mc). Tuy nhin c th hin th nhng thng tin khc trn bng. Trong phn ny s ni n cch thay i dng ca bng hay cch hin th thng tin trn bng.

6.5.1

Dng danh sch tp tin

Dng bng trn hin th danh sch tp tin v th mc con c th thay i qua cc cu lnh ca thc n m ra khi chn Bng tri (Left) v Bng phi (Right). Nu bn c mun thay i dng hin th danh sch tp tin, th c th s dng cu lnh Dng danh sch... (Listing mode...) ca bng (tri hoc phi) tng ng. C 4 kh nng chn: y (Full), Thu gn (Brief), M rng (Long) v Ngi dng t xc nh (User).

Hnh 6.3: Hp thoi chn nh dng hin th


nh dng y (Full) hin th tn tp tin, kch thc ca n v thi gian sa i gn nht. nh dng Thu gn (Brief) ch hin th tn tp tin, do trn mi bng c hai ct v hin th c s tp tin nhiu gp i.

132

S dng Midnight Commander


nh dng M rng (Long) hin th tp tin nh khi thc hin cu lnh ls -l. Vi nh dng ny mt bng chim ht mn hnh. Nu chn nh dng Ngi dng t xc nh (User), th ngi dng cn a ra dng hin th t chn ca mnh.

Khi t a ra nh dng, th u tin cn ch ra kch thc ca bng: half (mt na mn hnh) hoc full (ton mn hnh). Sau kch thc bng c th ch ra l trn bng phi c hai ct bng cch thm s 2 vo dng nh dng. Tip theo cn lit k tn nhng vng hin th cng vi chiu rng ca vng. C th s dng nhng tn vng sau:
name tn tp tin. size kch thc tp tin. bsize kch thc dng khc, khi ch a ra kch thc tp tin, cn i vi th mc con th ch a ra dng ch SUB-DIR hoc UPDIR. type hin th dng tp tin (mt k t). K t ny c th l mt trong nhng gi tr m cu lnh ls -F a ra:

* (asterisk) cho tp tin chng trnh. / (slash) cho th mc. @ (at-sign) cho lin kt (links). = (giu bng) cho cc sockets. - (gch ngang) cho cc thit b trao i theo byte. + (du cng) cho cc thit b trao i theo block. | (pipe, ng) cho cc tp tin dng FIFO. (du sng) cho cc lin kt tng trng n th mc. ! (du chm than) cho cc lin kt tng trng hng (stalled) (lin kt ch n tp tin khng cn na).
mtime thi gian sa i tp tin cui cng. atime thi gian truy cp n tp tin ln cui. ctime thi gian to tp tin. perm dng ch ra quyn truy cp n tp tin. mode quyn truy cp dng s 8bit. nlink s lin kt n tp tin. ngid ch s xc nh ca nhm (GID). nuid ch s xc nh ca ngi dng (UID). owner ch s hu tp tin.

6.5 iu khin cc bng


group nhm s hu tp tin. inode ch mc inode ca tp tin.

133

ng thi cn c th s dng nhng tn vng sau t chc vic hin th thng tin ra mn hnh:
space chn khong trng. mark chn du sao * (asterisk) nu tp tin c chn, hoc khong trng nu ngc li. | chn ng thng ng.

c th xc nh chnh xc chiu rng ca mt vng, cn thm du hai chm :, sau ch ra s v tr (k t) cn gi cho vng ny. Nu sau s v tr c t du +, th s s c hiu l chiu rng nh nht ca vng, v nu mn hnh cho php th vng s c m rng. V d, nh dng y (Full) thc cht c xc nh bi dng:
half type,name,|,size,|,mtime

cn nh dng M rng (Long) th xc nh bi:


full perm, space, nlink, space, owner, space, group, space, size, space, mtime, space, name

Di y l v d dng hin th do ngi dng a ra:


half name,|,size:7,|,type,mode:3

Hin th danh sch tp tin trn mi bng cn c th sp xp theo mt trong 8 cch:


Theo tn Theo phn m rng Theo kch thc tp tin Theo thi gian sa i Theo thi gian truy cp ln cui Theo ch mc inode Khng sp xp.

C th chn cch sp xp bng cch chn cu lnh Th t sp xp (Sort order...) trong trnh n tng ng ca mi bng. Khi s hin ra mt hp thoi (hnh 6.4) ngoi vic cho php chn cch sp xp cn cho php chn sp xp theo th t ngc li (nh du tu chn Ngc li (Reverse)), hay sp xp c tnh n kiu ch thng ch hoa hay khng (ty chn Tnh n kiu ch (case sensitive)). Theo mc nh cc th mc con c hin th u danh sch, nhng cng c th thay i nu nh du ty chn Trn ln tt c tp tin (Mix all files) ca cu lnh Cu hnh... (Configuration...) thc n Cu hnh (Option). Ngi dng cng c th chn ch hin th trn bng nhng tp tin tng ng vi mt

134

S dng Midnight Commander

Hnh 6.4: Hp thoi sp xp mu no . Cu lnh Lc tp tin... (Filter...) trong thc n ca mi bng cho php a ra nhng mu m tn tp tin s hin th tng ng vi n (v d dng mu *.tar.gz ch hin th nhng tp tin nn tar.gz). Tn ca th mc con v ng dn n th mc con lun lun c hin th khng ph thuc vo mu a ra. Trong thc n ca mi bng cn c cu lnh Qut li (Rescan) (tng ng vi cu lnh Cp nht (Refresh) trong cc chng trnh khc). Cu lnh Qut li (phm nng <Ctrl>+<R>) cp nht li danh sch tp tin hin th trn bng. iu ny c ch khi nhng tin trnh khc to hay xa cc tp tin.

6.5.2

Nhng ch hin th khc

Ngoi vic a ra nh dng hin th danh sch tp tin trn bng, cn c th a bt k bng no vo mt trong nhng ch sau:
Ch Thng tin (Info). Trong ch ny (hnh 6.5) trn bng a ra thng tin v tp tin c chiu sng (c chn) trn bng bn cnh, v h thng tp tin hin thi (dng, kch thc ch trng v tng s ch mc inode cn trng). Ch Cy th mc (Tree). Trong ch ny trn mt bng hin th cy th mc dng ho (hnh 6.6). Ch ny tng t nh khi ngi dng chn cu lnh Cy th mc (Directory Tree) t thc n Cu lnh (Command), nh cu lnh sau hin th cy th mc mt ca s ring. Ch Xem nhanh (Quick View). Trong ch ny bng s hin th ni dung ca tp tin c chiu sng (c chn) trn bng bn cnh. V d trn hnh 6.7 l khi dng ch ny xem nhanh ni dung tp tin HISTORY ca gi chng trnh mediawiki.

ra bng xem nhanh ni dung tp tin s dng chng trnh xem tp tin c sn trong mc, v th nu dng phm <Tab> chuyn sang bng xem nhanh, th ngi dng c th s dng mi cu lnh iu khin vic xem, v d, nhng phm lit k trong bng 6.1 v bng 6.2.

6.5 iu khin cc bng

135

Hnh 6.5: Ch thng tin

Hnh 6.6: Ch cy th mc

136

S dng Midnight Commander

Hnh 6.7: Ch xem nhanh


Ch Kt ni FTP... (FTP link...) v Kt ni Shell... (Shell link...). Hai ch ny ch khc ch s dng hin th danh sch th mc nm trn my xa. Cn li mi th k c nh dng hin th thng tin u tng t nh nhng g s dng cho cc th mc ni b. Nu ngi dng mun bit thm v cch s dng nhng ch ny, xin hy xem tr gip ca mc.

6.5.3

Cc t hp phm iu khin bng

iu khin ch lm vic ca bng c th s dng cc cu lnh ca trnh n ni ti trn, nhng s thun tin hn nu s dng cc t hp phm iu khin.
<Tab> hoc <Ctrl>+<i>. Thay i bng hin thi (hot ng). Dng chiu sng s chuyn t bng ang l hin thi sang bng khc v nh vy bng sau s tr thnh hin thi. <Alt>+<G> hoc <Alt>+<R> hoc <Alt>+<J>. S dng di chuyn dng chiu sng tng ng ln tp tin trn u, nm gia hoc di cng trong s nhng tp tin ang hin th (ang thy) trn bng. <Alt>+<T>. Chuyn i vng quanh gia cc nh dng hin th danh sch tp tin ca th mc hin thi. Nh t hp phm ny c th chuyn i nhanh chng t ch hin th M rng (long) sang Thu gn hay ch do ngi dng xc nh. <Ctrl>+<\>. Hin th danh sch th mc thng dng v chuyn ti th mc la chn.

6.5 iu khin cc bng

137

<Home> hoc <Alt>+<<>. Chuyn dng chiu sng ti v tr u tin ca danh sch tp tin. <End> hoc <Alt>+<>>. Chuyn dng chiu sng ti v tr cui cng ca danh sch tp tin. <Alt>+<O>. Nu trong bng hin thi tn th mc c chiu sng, cn trn bng cn li hin th danh sch tp tin, th bng th hai s chuyn vo ch hin th cc tp tin ca th mc c chiu sng. Nu trong bng hin thi dng chiu sng l tn tp tin, th trn bng th hai s hin th ni dung ca th mc m ca tp tin . <Ctrl>+<PageUp>, <Ctrl>+<PageDown>. Ch khi mc c chy di knh giao tc (console) ca Linux: thc hin tng ng vic chuyn (chdir) ti th mc m (..) hoc ti th mc ang c chiu sng. <Alt>+<Y>. Chuyn ti th mc ngay trc trong s nhng th mc xem. Tng ng vi vic nhn chut ln k t < gc trn ca bng. <Alt>+<U>. Chuyn ti th mc ngay sau trong s nhng th mc xem. Tng ng vi vic nhn chut ln k t >.

You might also like