You are on page 1of 212

T hc s dng Linux

Phan Vnh Thnh Phin bn: 0.9.6 Ngy 14 thng 2 nm 2007

Dnh cho ngi dng mi v rt mi...

Mc lc
Li m u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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? . . . . . . . . . . . . . . . . . 1

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

3 . 3 . 3 . 4 . 7 . 9 . 12 . 13 14 14 16 17 17 18 20 22 23 23 24 26 27 27 27 30 31 34 34 34 36 36 39 39 40

2 Ci t h iu hnh Linux 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 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 bn phn phi v ng dng 3.6.6 Cu lnh xman . . . . . . . . . . . . . 3.6.7 Cu lnh helptool . . . . . . . . . . 3.6.8 Sch v Internet . . . . . . . . . . . .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

v 101 . 101 . 102 . 103 . 103 . 104 . 104 . 104 . 104 . 105 . 105 . 106 . 106 . 108 . 109 . 109 . 110 . 112 . 113 . 113 . 114 . 114 . 114 . 115 . 115 . 116 . 116 . 116 . 117 . 117 . 118 . 118 . 118 . 119 . 122 . 122 . 123 . 124 . 124 . 125 . 125 . 126 . 126

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

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

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

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

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

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

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

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

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 . . . . 6.6 Cc phm chc nng v thc n Tp tin . . . . 6.7 Mu tp tin khi sao chp hoc i tn . . . . . 6.8 Thng bo khi sao chp v di chuyn tp tin . . 6.9 Dng lnh ca h v . . . . . . . . . . . . . . . . 6.10 Trnh n Cu lnh . . . . . . . . . . . . . . . . 6.11 Cu hnh Midnight Commander . . . . . . . . . 6.12 Kt ni ti my xa . . . . . . . . . . . . . . . . 6.12.1 Kt ni FTP . . . . . . . . . . . . . . . . 6.12.2 Kt ni Shell . . . . . . . . . . . . . . . . 7 Giao din ho 7.1 X.Org . . . . . . . . . . . . . . . . . . . . . . . 7.2 Mt cht v h thng hnh nh ca my tnh 7.3 Cu hnh chng trnh ch X . . . . . . . . . 7.3.1 Thu thp thng tin cn thit . . . . . . 7.3.2 Cu trc ca tp tin cu hnh X . . . . 7.3.3 Th cu hnh /etc/X11/xorg.conf . . . . 7.4 Khi ng h thng X Window . . . . . . . . . 7.4.1 La chn trnh qun l ca s . . . . . 7.4.2 Mi trng lm vic KDE v GNOME 7.4.3 Mi trng lm vic Xfce . . . . . . . . 7.4.4 S dng trnh qun l mn hnh . . . 8 Lm vic trong mi trng KDE 8.1 Bt u lm vic vi KDE . . . . . 8.1.1 ng nhp vo KDE . . . . 8.1.2 V ngoi ca KDE . . . . . . 8.1.3 Trnh n KMenu . . . . . . 8.1.4 Trung tm iu khin KDE 8.1.5 Thay i v ngoi . . . . . . 8.1.6 iu khin phin lm vic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

MC LC 128 128 129 131 132 133 133 136 137 139 141 143 145 147 153 159 159 160 162 162 167 169 170 171 178 182 185 187 188 188

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

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

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

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

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

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

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

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

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

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

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

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

190 . 190 . 190 . 191 . 194 . 195 . 198 . 201

Danh sch hnh v


3.1 Mn hnh khi ng ca GRUB . . . . . . . . . . . . . . . . . . . . . 43 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15 6.16 6.17 6.18 6.19 6.20 6.21 6.22 7.1 7.2 7.3 7.4 7.5 8.1 8.2 8.3 8.4 8.5 8.6 8.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 . . . . . . . . . . . . . . . . . . Hp thoi i tn tp tin . . . . . . . . . . . . . . Ca s hi li . . . . . . . . . . . . . . . . . . . . . Ca s yu cu . . . . . . . . . . . . . . . . . . . . Dng nhp vo a ch IP ca my ch FTP . . . Bt u tm kim . . . . . . . . . . . . . . . . . . ang tm kim . . . . . . . . . . . . . . . . . . . . Tm kim tt c cc lin kt mm . . . . . . . . . Hp thoi danh sch th mc thng dng . . . iu khin cng vic nn sau . . . . . . . . . . . Cu hnh Midnight Commander . . . . . . . . . . Thay i v ngoi ca Midnight Commander . . Thay i bit hin th ca Midnight Commander . Thit lp cc hp thoi hi li ngi dng . . . . Th v cu hnh cc phm . . . . . . . . . . . . . Thit lp h thng tp tin o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 130 133 136 137 138 139 142 144 145 147 150 150 151 152 153 154 156 157 158 158 159 164 172 181 181 189 191 192 193 194 195 196 197

H thng ho X Window . . . . . . . . . . . . . . . . Cu hnh X.org qua xorgcfg . . . . . . . . . . . . . . Chng trnh xvidtune . . . . . . . . . . . . . . . . . Chng trnh xvidtune khng chu chnh hnh nh Mi trng lm vic Xfce . . . . . . . . . . . . . . . . . Mn hnh ng nhp KDM . . . . . . . . . V ngoi ca KDE . . . . . . . . . . . . . . Hp thoi chy chng trnh . . . . . . . . Tr gip c ch tooltips . . . . . . . . . . . Trnh n chnh ca KDE . . . . . . . . . Tm kim trong trnh n chnh ca KDE Trnh Thit lp c nhn ca KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

viii 8.8 8.9 8.10 8.11 8.12 8.13 8.14 8.15 8.16 Ci t phng ch mi . . . . . . . . . . . . . Chn phng ch dng cho text, trnh n, . . . Chn phng ch . . . . . . . . . . . . . . . . . Cnh bo khi c thay i cha p dng . . . . Trnh n ca thanh panel . . . . . . . . . . . Trnh n bi cnh ca nt . . . . . . . . . . Cu hnh cc thanh panel . . . . . . . . . . . Thay i mn hnh . . . . . . . . . . . . . . . Son tho trnh n chnh . . . . . . . . . . .

DANH SCH HNH V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 198 199 199 200 200 201 201 202

Danh sch bng


1.1 Yu cu i vi phn cng . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1 Cu trc ca sector khi ng chnh . . . . . . . . . . . . . . . . . . 20 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 6.1 6.2 6.3 6.4 6.5 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 94 99 109 111 112 118 131 131 132 140 148

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Cc t hp phm di chuyn dng chung Di chuyn trong trnh xem tp tin . . . Di chuyn khi xem tr gip . . . . . . Cc phm chc nng . . . . . . . . . . . Cc lnh iu khin dng nhp vo . .

Li m u
Trong tc phm ni ting th gii ca nh vn Nga Lev Tolstoi Chin tranh v ho bnh c a ra mt v d minh ho cho suy ngh ca tc gi v vai tr ca nhng ngi c ting (c th l Napoleon v Alecxandr nht) v qun chng trong lch s ni chung cng nh trong chin tranh chu u nhng nm u th k XIX. Nhn vt chnh trong v d minh ho ny l con ong. i vi cu b va b ong cn th mc ch ca con ong ch cn ngi. i vi mt nh th th mc ch ca con ong l thu vo mnh hng v ca nhng bng hoa. i vi ngi nui ong th mc ch ong l thu thp mt ong. Ngi nui ong c ci nhn su hn th cho rng ong thu thp bi phn hoa nui ong con v to ong cha, nh vy mc ch ca n l duy tr ni ging. Nh sinh hc khi quan st thy ong th phn cho hoa th quyt nh y chnh l mc ch ca loi ong. Ngi khc quan st qu trnh di c ca thc vt th cho rng ong tham gia vo qu trnh ny v l mc ch ca n. Tt nhin mc ch cui cng ca ong khng phi l nhng ci trn nm ring bit m l tt c chng cng li, v cn cng thm nhng g m tm thi b c quan st hn ch ca con ngi cn cha tm ra. Microsoft nhn thy Linux kh nng cnh tranh ln v nhiu khi coi Linux l k th ca mnh. Nhiu t chc chnh ph cng nh phi chnh ph nhn thy Linux mt h iu hnh nhiu ha hn v h tr cho Linux. Nhng nc cn ngho tm thy Linux mt cch gii quyt cho vn kinh t. Mt s cng ty thy c Linux mt ngun li ln v pht trin cng vic kinh doanh ca mnh t h iu hnh ny. i vi Linus Torvalds, Linux l nim am m v Just for fun. Cc nh lp trnh nhn (kernel) tm thy Linux s quyn r v cng vic pht trin ca h. Ngi dng th thy Linux mt h thng mnh, thun tin, c th iu chnh theo mun ca mnh v.v. . . Linux l h iu hnh pht trin mnh. Nhng nm u thp k th chn ca th k XX Linux mi ch l a con tinh thn cha bit ni ca Torvalds. Ch trong vi nm gn y c nhiu bn phn phi Linux chim lnh c mi trng my ch cng nh my bn ca ngi dng. Trn th trng my ch hin thi ch c mt vi tn tui ng ch . Linux cho my bn c phn a dng hn. Mi bn phn phi thch hp cho mt nhm ngi dng c th no t ngi dng mi n ngi dng cao cp (advanced) hay ni ng hn l mi ngi dng c quyn la chn cho mnh mt bn phn phi thch hp v chuyn sang s dng bn khc khi no mong mun. Lch s hnh thnh v pht trin Linux chng ta s thy ngay chng u tin ca cun sch ny. Linux ngay t ban u c xy dng da trn cng ng (ting Anh community), da trn s cng tc. Cng ng Linux khng ch cung cp cho ngi dng my tnh mt h iu hnh thn thin, d s dng m cn lun lun sn sng gip ngi dng mi, lun mong mun c thm my tnh chy di Linux. Vi kt ni mng Internet, bn s lun tm thy cu tr li cho vn ca mnh t s lng ln cc din n, nhm th, nhm tin tc, cc trang web cung cp tin tc, bi bo, sch v Linux. . . Tuy nhin nu bn mi bt u hc Linux th hy tm cho mnh mt cun sch gii thiu ngn gn v h iu hnh ny. Mt cun sch tham kho cm tay l khng th thiu trong thi gian u tm hiu Linux. Hy xem xt gi v ni dung cun sch trc khi mua. Nu khng

c kh nng tm c sch thch hp hoc bn thch cun sch T hc s dng Linux ny th c th in n ra tin c. Ti bt u hc Linux khi c trong tay 3 a CD RedHat 7.0 khong 4 nm trc y. V by gi Linux (c th l OpenSUSE Linux) l h thng duy nht lm vic trn my tnh ca ti. Khng phi l ti khng mun s dng v ght b h iu hnh Windows m n gin l ti quen lm vic trong mi trng KDE v Xfce, i khi trong console (dng lnh khng c ho). V hn na mi cng vic cn n my tnh ca ti c th gii quyt nhanh gn bng nhng chng trnh i km vi Linux. Nghe nhc bng Amarok, qun l hnh k thut s v ly chng ra t my hnh bng digiKam, son tho ti liu, c th l lun A vn tt nghip v cun sch ny, trong chng trnh Kile v bin dch m L TEX qua nhng chng trnh c trong gi teTeX, nhng ti liu khc c th son tho trong Openoffice.org, vi ngi dng khng chuyn th kh nng chnh sa nh ca The GIMP cn trn c , kh nng v ho vector ca Inkscape cn cho c nhng nh thit k chuyn. Ti khng phi l mt nh qun l mng hay lp trnh chuyn nghip v ni chung khng phi ngi hc theo chuyn ngnh cng ngh thng tin. Ngnh chnh ca ti l Ho hc, do xin ng mong i nhng kin thc cao siu trong sch ny. Nh trang th hai ca sch c ghi Dnh cho ngi dng mi v rt mi. . . . Nh vy, cun sch T hc s dng Linux c to ra vi hy vng s gip ngi dng mi lm quen vi h iu hnh tuyt vi c tn Linux v hnh tng trng l ch chim cnh ct (penguin) xinh p. Nhng thng tin bn c tm thy trong cun sch ny c th p dng cho hu ht ht cc bn phn phi ln, tuy nhin mt s phn c bit v d phn ni v ci t chng trnh t cc gi rpm ch p dng tt cho cc bn phn phi dng RedHat, l Fedora, Mandriva, OpenSUSE, v.v. . . Thng thng ngi dng mi bt u gia nhp vo th gii Linux bng nhng bn phn phi ny. Happy Using Linux! A Cng c to ra cun sch bn ang c l h thng sp ch L TEX. Bn c th tm bn phn phi teTeX hoc mt bn phn phi khc ca h thng ny trn hu ht cc b a ci t h iu hnh Linux. Sch ny c phn phi min ph theo bn quyn Creative Commons Public License 2.5 (http://creativecommons.org/licenses/by/2.5/). Cng nh nhng sn phm khc ca cng ng OSS, cun sch ny c to ra, sa i, thm v bt trong thi gian rnh ri ca ti, do i khi n s c cp nht thng xuyn, v c khi khng c cp nht c nm. Mi ngh sa i, thng bo li chnh t, li kin thc cng nh ngh gip (lun lun hoan nghng) xin gi cho Phan Vnh Thnh theo a ch teppi@vnoss.org. Xin cm n Kostromin A.V. (http://linux-ve.chat.ru) vit ra mt cun sch s dng Linux hay lm ti liu tham kho chnh cho cun sch ny, bc Nguyn i Qu (vnpenguin@vnoss.org) v anh Nguyn ng Hong Tun (tuanndh@gmail.com) gip ti trong khi son cun sch ny.

Released under Creative Commons Public License 2.5 (http://creativecommons.org/licenses/by/2.5/)

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


Just for fun Linus Torvalds.
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 m khng ngi ngn ng k nhn hiu thng mi bt k th g, k c Yoga m bt ngun t n .
1

HH Linux: lch s v cc bn phn phi

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

1.1 Th no l HH ni chung v Linux ni ring

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
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 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/oldversions/RELNOTES-0.01. Bn quyn c i sang GPL t phin bn 0.12, hy xem RELNOTES-0.12 theo a ch trn.
3

HH Linux: lch s v cc bn phn phi

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 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
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

1.1 Th no l HH ni chung v Linux ni ring

mi. 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

HH Linux: lch s v cc bn phn phi a cng (vo b nh). Mt s h thng Unix c v mt s h thng hin i (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 MS-DOS 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.

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

1.2 Bn phn phi Linux

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 Bn phn phi Linux h tr nhiu b x l nht cn phi k n Debian (http://www. debian.org)
8 7

10

HH Linux: lch s v cc bn phn phi

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.

1.2 Bn phn phi Linux

11

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
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

12

HH Linux: lch s v cc bn phn phi

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 xc 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, 256 1500 cc ng dng nm trong KOffice, OpenOffice.org). Nh vy Linux c mt u im ln l kh nng lm vic thm ch trn 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

1.4 Ly Linux u?

13

ngn cn vic dng cc my tnh c lm vic c li v d lm router10 ). 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. 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?

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 1 thng ri bn s nhn c chng. Theo ti ngh y l cch tt nht nu bn khng c iu kin mua a.

10

my gip chuyn hng cc gi mng

Chng 2 Ci t h iu hnh Linux


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; T my tnh khc trong mng ni b qua SMB; T my tnh xa (v d t Internet) qua giao thc FTP;

2.1 Chun b ci t 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. . . ); s nt; i vi chut cm vo cng ni tip th cn s th t ca cng . Cc mn hnh

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

Ci t h iu hnh Linux

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 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

2.3 Phn vng trn a v qu trnh khi ng

17

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.

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

18

Ci t h iu hnh Linux

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 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

2.3 Phn vng trn a v qu trnh khi ng

19

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 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

20

Ci t h iu hnh Linux

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. Bng 2.1: Cu trc ca sector khi ng chnh Dch chuyn 0x000 0x1BE 0x1FE Ni dung M ca trnh khi ng chnh Bng phn vng a S mu nhim (0xAA55)

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.

2.3 Phn vng trn a v qu trnh khi ng

21

Xin tr li vi qu trnh khi ng. Int 19h ca BIOS np trnh khi ng 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:
[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

22

Ci t h iu hnh Linux

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 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

2.4 La chn trnh khi ng

23

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 GRUB

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 cn rt nh1 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
1

hy so snh s phin bn ca GRUB v LILO

24

Ci t h iu hnh Linux

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.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:

2.4 La chn trnh khi ng

25

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. 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:

26 /boot/boot.b; /boot/map (to ra bi lnh /sbin/lilo);

Ci t h iu hnh Linux

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); 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.

2.5 Chun b cc phn vng trn a

27

Ngoi ra, tc gi cn thy ni n mt lot trnh khi ng khc (mt s c th tm thy trong th mc public/ftp/pub/Linux/system/boot/loaders ca ftp://metalab.unc.edu/. Nhng v ti 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.

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.

28

Ci t h iu hnh Linux

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 H iu hnh Windows 95 Windows 98 Windows NT Windows 2000 Linux Red Hat 6.2 (Workstation vi KDE) Yu cu 100 Mbyte 200 Mbyte 200 Mbyte 700 Mbyte 700 Mbyte

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. 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

2.5 Chun b cc phn vng trn a

29

nng. Trong tt c mi trng hp tt nht trnh dng swap v n chm hn RAM nhiu.2 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 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:
2

Xin cm n bc Tony L v mc ny

30

Ci t h iu hnh Linux 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. 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.

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

31

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 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

32

Ci t h iu hnh Linux 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.lnx3 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.
3

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 sau4 :
4

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

34 /dev/hda3 on / type reiserfs (rw)

Ci t h iu hnh Linux

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 GRUB

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 color white/blue black/light-gray

2.7 S dng trnh khi ng GRUB


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

35

###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 cch t ng trong ln khi ng sau. y l mt im mnh ca GRUB so vi LILO.

36

Ci t h iu hnh Linux

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.5 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 read-only other = /dev/hda1
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.
5

2.8 S dng trnh khi ng LILO 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. 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

38

Ci t h iu hnh Linux 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 h iu hnh Linux

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.6 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)7 .
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 7 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
6

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

41

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 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:

42

Ci t h iu hnh Linux C:\LOADLIN> LOADLIN vmlinuz /dev/hda3 ro vga=ask 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 dng lnh di 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
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 thnh. 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.

Hnh 3.1: Mn hnh khi ng ca GRUB

44

Khi ng Linux ln u

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 chng1 . 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 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 ng mt khu, bn s thy dng nh sau:
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

3.2 ng nhp vo h thng [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 trn 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. 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.

46

Khi ng Linux ln u

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

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

3.3 Console, terminal o v shell

47

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 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

48

Khi ng Linux ln u

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 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

3.4 Son tho dng lnh. Lch s lnh

49

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 khu2 (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 bng3 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. 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
2 3

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

50

Khi ng Linux ln u

Bng 3.2: Nhng phm son tho dng lnh


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> 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.

<Esc>+<T> <Ctrl>+<K>

<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

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 trng4 , 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 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.
4

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 Ch c ngi dng root mi c th thc hin cu lnh shutdown ny5 , 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
5

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

3.6 Tr gip khi dng Linux

53

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: [root]# shutdown -h now 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 nh trong bng 3.4. 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 thng6 (hm do nhn cung cp) Gi th vin7 (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 c s nhm ln no. Vn ch cc tp tin cha thng tin ca tr gip man nm trong cc th mc con manx (x l tn ca phn) 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 cron8 . 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
8

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 ng 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 c 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 ext3fs


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 lu1 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 ngha c bit trong h v shell v do khng nn dng t tn tp tin.
1

Mt s tc gi thch dng thut ng vt cha y.

4.1 Tp tin v tn ca chng l nhng k t sau: ! @ # $ & ~ % * ( ) [ ] { } " \ : ; > < du cch

61

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 nn2 ). 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.3 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
2 3

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 -l4 . 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-4

-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 dn5 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 quyn6 : 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
5 6

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 ng7 . /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

67

/lost+found

/mnt

/tmp

/root

/sbin

/proc

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.

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). 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/sbin /usr/lib Th mc ny gm cc chng trnh thc thi dnh cho nh qun tr v khng s dng trong thi gian khi ng. 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.

/usr/bin

/usr/include

/usr/local

4.3 Cng dng ca cc th mc chnh Th mc /usr/share

69

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).

/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/tmp Cc tp tin tm thi.

/var/spool

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.

72

Lm quen vi h thng tp tin ext3fs

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 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 trng8 ). 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,
8

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

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. 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.

74

Lm quen vi h thng tp tin ext3fs

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 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,

4.5 Quyn truy cp n tp tin v th mc

75

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 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

76

Lm quen vi h thng tp tin ext3fs

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 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:

4.5 Quyn truy cp n tp tin v th mc + thm quyn tc b quyn = dng quyn ch ra thay cho quyn c. 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

77

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:

78 [user]$ chmod 761 tn_tp_tin

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 ID9 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.
9

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 Ty chn ngha p 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.

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 xong10 . 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.
10

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 khong11 ) 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
11

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. Ty chn Gi tr name mu_tn Tm tp tin c tn tng ng vi mu_tn. group tn Tm tp tin thuc v nhm ch ra. size s[c] Tm tp tin c c bng s khi 512 byte (tc l bng 512B x s). 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). 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://vnoss.org/pub. 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 rng12 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.
12

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

[user]$ find ~/projects \( \( -name *.tex \) -or \( -size -200 \) \)

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

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

87

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 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

90

Lm quen vi h thng tp tin ext3fs

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. 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:

4.7 Cc cu lnh lu tr v nn tp tin [user]$ tar tvf tn_kho | less Gii phng mt tp tin no bng: [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

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 .suf mc nh 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. 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.

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.

4.7 Cc cu lnh lu tr v nn tp tin

93

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 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. 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. 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.

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:

94

Lm quen vi h thng tp tin ext3fs

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 Hin th s phin bn v bn quyn ca chng trnh. V, -version Ging nh --L. [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.

4.8 To v gn cc h thng tp tin

95

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

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

96

Lm quen vi h thng tp tin ext3fs

cc h thng tp tin khc (k c NTFS13 ). 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 mkfs14 . 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 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
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.
14 13

4.8 To v gn cc h thng tp tin

97

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 trng15 : 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). 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, ncpfs16 . 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:
15 16

tin c cc vng thng sp cho thng hng, nhng iu l khng nht thit. Hy xem trang man fs c m t ngn gn v nhng h thng tp tin ny.

98 [root]# mount -a -t nosmb,ext

Lm quen vi h thng tp tin ext3fs

gn tt c cc h thng tp tin tr cc dng smb (Samba17 ) 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 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 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
17

cc chia s trong mng ca Windows

4.8 To v gn cc h thng tp tin

99

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. 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

100

Lm quen vi h thng tp tin ext3fs

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 Bourne. D

102

Bash

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

5.3 Thc thi cc cu lnh

103

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 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 trc k t khong trng mt d, cu lnh sau: 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.

104

Bash

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;

5.4 u vo/u ra tiu chun

105

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.
1

ging lin kt ha hc

106

Bash

Nu nhn t hp phm <Ctrl>+<D> (dng ngng vic nhp d liu) chng ta s qua li dng nhp lnh. Cng c th s dng t hp phm <Ctrl>+<C> (cu lnh trong h v dng dng chng trnh 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
th mc hin thi bn cn dng t hp phm <Ctrl>+<Alt>+<F2> chuyn ti ca s terminal ny v ng nhp trc
3 2

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

107

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 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

108

Bash

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.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 | c 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.6 Tham bin v cc bin s. Mi trng ca h v

109

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. Bng 5.1: Cc cu lnh b lc Lnh M t ngn gn grep, fgrep, Tm trong tp tin hay d liu u vo cc dng c cha mu egrep 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) . 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 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

110

Bash

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 c 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 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: 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 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:

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

111

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 [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.
4

random l t ting Anh c ngha ngu nhin

112

Bash

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). 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.

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

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

113

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 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: [user]$ PATH=$PATH:new_path 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.

114

Bash

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 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 Khai trin biu thc

115

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 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

116

Bash

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 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.

5.7 Khai trin biu thc

117

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 th mc v tp tin5

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. 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

Pathname Expansion

118

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 thay th 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 ngoc.

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 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.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

5.8 Shell mt ngn ng lp trnh

119

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: 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. -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.

120 -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.

Bash

-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. -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.

5.8 Shell mt ngn ng lp trnh file1 -nt file2 ng, nu tp tin file1 c thi gian sa i mun hn file2.

121

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 (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.

122

Bash

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 (kiu t chc khi ng 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 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):

5.8 Shell mt ngn ng lp trnh


#!/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"

123

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: for a in 1 2 3 ; do touch fu$a done 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.

124

Bash

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 c tn directory theo tng pht nu th mc cn tn ti. Ton t until tng t nh ton t while: until list1 do list2 done 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

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 }

5.8 Shell mt ngn ng lp trnh

125

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 )) }; done; echo $2 } 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() {

126 if [ $1 = 0 ]; then echo 1; else { echo $(( $1 * $( fact $(( $1 -- 1 )) ) )) }; fi }

Bash

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

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

5.10 Cu lnh sh

127

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-pre3, mc d 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 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.

6.2 V ngoi ca mn hnh Midnight Commander

129

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.1

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.

Hnh 6.1: Giao din ting Vit ca Midnight Commander Gn nh ton b khng gian mn hnh khi lm vic vi Midnight Commander b chim bi hai bng2 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. 2 panel
1

130

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

131

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 <> hoc <Ctrl>+<P> <> hoc <Ctrl>+<N> <Page Up> hoc <Alt>+<V> <Page Down> hoc <Ctrl>+<V> <Home> <End> Di chuyn thc hin Di chuyn tr li (ln trn) mt dng Di chuyn v pha trc (xung di) mt dng Quay li mt trang Tin v trc mt trang Quay v dng u 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> Li li mt trang hoc <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

132

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 Di chuyn thc hin i ti lin kt tip theo 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 M trang m lin kt hin thi ch ti M trang tr gip va xem trc trang hin thi Tr gip s dng ca bn thn tr gip Chuyn ti phn tip theo ca tr gip Chuyn ti phn nm trc ca tr gip Chuyn ti mc lc ca tr gip Thot khi tr gip

Phm <Tab> <Alt>+<Tab> <> <> <> hoc <Enter> <> hoc <L> <F1> <N> <P> <C> <F10>, <Esc>

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

133

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.

134

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.

135

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)).

136

S dng Midnight Commander

Hnh 6.4: Hp thoi sp xp 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 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.

6.5 iu khin cc bng

137

Hnh 6.5: Ch thng tin 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. 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

138

S dng Midnight Commander

Hnh 6.6: Ch cy th mc 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. <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 >.

6.6 Cc phm chc nng v thc n Tp tin

139

Hnh 6.7: Ch xem nhanh

6.6

Cc phm chc nng v thc n Tp tin

T trc n gi chng ta mi xem xt n v ngoi ca mn hnh Midnight Commander v cch thay i v ngoi ny. By gi n lc cn bit cch lm vic vi tp tin nh chng trnh c ch ny. Rt nhiu thao tc thng dng trong Midnight Commander c thc hin qua cc phm chc nng <F1> <F10>. Xin a ra mt bng 6.4 tng hp nhng thao tc ny. Nhng thao tc (lnh) lit k trn khng ch c th thc hin bng cch nhn phm chc nng tng ng m cn bng cch nhn chut ln cc nt tng ng cng ca mn hnh hay bng cc lnh tng ng ca trnh n Tp tin (File). Trc khi thc hin mt thao tc no ch ra trong bng 6.4 hay lnh trong trnh n, cn chn nhng tp tin hay nhm tp tin thc hin thao tc ln. chn mt tp tin th ch cn t dng chiu sng trong bng hin thi ln n (tt nhin u tin cn chuyn ti th mc tng ng). Nu mun thc hin mt thao tc no ln nhiu tp tin mt lc, th cn nh du nhm tp tin ny. nh du tp tin t di dng chiu sng, hy dng phm <Insert> hoc t hp phm <Ctrl>+<T>. Khi ny tn ca tp tin s c mu khc. b chn tp tin th cng s dng t hp phm nh khi chn. Cn c th chn nhm tp tin cn c th dng cu lnh Chn nhm ca trnh n Tp tin (File), phm nng cho cu lnh ny l phm du cng <+>. Cu lnh ny c dng nh du nhm tp tin theo mu tng ng a ra. Khi chy cu lnh Midnight Commander s a ra hp thoi dng nhp biu thc chnh quy xc nh tn ca nhm tp tin mun nh du. Nu c bt ty chn Mu dng shell (xem trang 155, th cn vit biu thc chnh quy theo

140

S dng Midnight Commander

Bng 6.4: Cc phm chc nng Phm F# Hnh ng thc hin <F1> Gi tr gip ty thuc vo tnh hung <F2> Gi thc n do ngi dng to ra <F3> Xem tp tin t di dng chiu sng ca bng hin thi <F4> Gi trnh son tho trong sa tp tin t di dng chiu sng ca bng hin thi <F5> Sao chp tp tin hay nhm tp tin c nh du t th mc ca bng hin thi sang th mc ca bng cn li. Khi sao chp mt tp tin th cn c th i tn ca tp tin ny3 . ng thi trong hp thoi hin ra cn c th ch ra tn ca th mc mun sao chp cc tp tin n ( khi cn c th sao chp n th mc khc vi th mc hin ra trn bng th hai). <F6> Di chuyn tp tin hay nhm tp tin c nh du t th mc ca bng hin thi sang th mc ca bng cn li. Cng ging nh khi sao chp, c th thay i tn ca tp tin hay th mc di chuyn n. <F7> To th mc con trong th mc hin th trn bng hin thi <F8> Xa tp tin (th mc con) hay nhm cc tp tin nh du <F9> Gi trnh n chnh (hin th pha trn cc bng) <F10> Thot khi chng trnh cc quy lut nh trong shell (xem chng 5. Cn nu tt ty chn ny, th s nh du tp tin c thc hin theo quy lut ca cc biu thc chnh quy thng thng (hy xem hng dn man ed). Nu biu thc bt u hoc kt thc bng du gch cho (/), th s nh du cc th mc ch khng phi tp tin. Thao tc B chn (phm tt l phm du tr <> hoc gch cho ngc <\>) l thao tc ngc li i vi thao tc chn nhm tp tin v s dng cng cc quy lut vit mu nh khi chn. Thao tc ny dng b nh du khi nhm tp tin chn. Cn thao tc Chn ngc li (phm <*>) dng b chn nhng tp tin ang chn, ng thi chn nhng tp tin cn li ca th mc hin thi. Nu th mc hin thi c nhiu tp tin (do khng thy ht trn bng), th trc khi nh du tp tin cn tm n tp tin . Trong nhng trng hp cc t hp phm <Ctrl>+<S> v <Alt>+<S> s c ch. Sau khi nhn mt trong nhng t hp phm ny th mc s chy ch tm kim tn tp tin trong th mc hin thi theo nhng k t u tin ca tn. Trong ch ny nhng k t nhp vo s khng hin th dng lnh m hin th dng tm kim. Nu ch Hin trng thi mini (Show mini-status) c bt, th dng tm kim ny s hin th trn ch ca dng trng thi mini. Khi ny trong qu trnh nhp k t, dng chiu sng s di chuyn ti tp tin tip theo c tn bt u bng nhng k t nhp vo. C th dng cc phm <Backspace> hoc <Del> sa li. Nu nhn <Ctrl>+<S> thm mt ln na, th s tm kim tp tin tng ng tip theo. Cn ch l nu trong th mc hin thi khng c tp tin vi tn tng ng, th nhng k t nhp vo s khng hin th trn dng trng thi mini, tc l bn s

6.7 Mu tp tin khi sao chp hoc i tn

141

khng th tm thy tp tin mun tm. Sau khi chn v nh du tp tin lm vic ch cn nhn mt trong cc phm chc nng thc hin thao tc cn thit vi tp tin, v d, sao chp, di chuyn hay xa. So vi dng lnh th cc thao tc xem v son tho tp tin trong Midnight Commander thun tin hn, do trong Midnight Commander c tch hp sn cc chng trnh cho nhng vic ny. Nhng trong phn ny chng ta s khng xem n trnh son tho c sn, m dnh n chng ni v lm vic vi cc tp tin vn bn. Nh ni t trc, khng nht thit phi s dng cc phm chc nng gi cc cu lnh tng ng vi chng. Bt k cu lnh no trong s ny cng c th thc hin qua trnh n Tp tin (File). Ngoi cc cu lnh gn vi cc phm chc nng, trnh n Tp tin cn cha cc cu lnh sau (trong ngoc l cc phm tt tng ng). chmod (<Ctrl>+<X>,<C>). Cho php thay i quyn truy cp n (cc) tp tin c chn. chown (<Ctrl>+<X>,<O>). Thay i ch s hu bng cu lnh chown. chown nng cao. Cho php thay i quyn truy cp v s hu tp tin. Lin kt cng (<Ctrl>+<X>,<L>). To lin kt cng n tp tin hin thi. Lin kt mm (<Ctrl>+<X>,<S>). To lin kt mm n tp tin hin thi. Chng trnh Midnight Commander cho bit lin kt mm bng k hiu @ ng trc tn ca lin kt (tr lin kt n th mc con c nh du bi du sng ). Nu trn mn hnh c a ra dng trng thi mini (dng ty chn Hin trng thi mini), th trn dng ny s hin ln tn ca tp tin m lin kt ch n. cd nhanh (<Alt>+<C>). Hy s dng cu lnh ny nu bit ng dn y n th mc bn cn (v mun chuyn thnh th mc hin thi). Xem kt qu lnh (<Alt>+<!>). Khi chy cu lnh ny trn mn hnh s hin ra dng cho php nhp bt k cu lnh no cng vi tham s ca n (theo mc nh tham s s l tp tin ang c chiu sng). Kt qu thc hin lnh s hin ra trn mn hnh trong xem c sn ca Midnight Commander. Nh bn thy, trnh n Tp tin (File) c cha nhng cu lnh thng dng nht, cn thit cho ngi dng trong nhng thao tc c bn vi tp tin ca th mc hin thi. Tt nhin l nhng thao tc thng dng c gn vi cc phm chc nng. Do , chng ta s xem xt li cc cu lnh ny hiu r hn v chng. u tin l cu lnh sao chp v i tn.

6.7

Mu tp tin khi sao chp hoc i tn

Khi thc hin cc thao tc sao chp v di chuyn (hay i tn) tp tin ngi dng c kh nng thay i tn ca cc tp tin ang sao chp hay di chuyn. thc

142

S dng Midnight Commander

hin vic ny ngi dng cn a ra mu cho tn ca cc tp tin gc (gi l mu gc) v mu cho tn ca cc tp tin s c to (tp tin ch n, gi l mu ch). Thng thng mu tn th hai l mt vi k t thay th (wildcards) cui dng xc nh ch n ca cc tp tin to ra. Vic a ra mu c thc hin trn dng nhp vo hin th trong ca s m ra khi chy mt trong cc lnh sao chp hay di chuyn (hnh 6.8).

Hnh 6.8: Hp thoi i tn tp tin Tt c cc tp tin tho mn mu gc s c i tn (sao chp hoc di chuyn vi tn mi) tng ng vi mu ch. Nu c cc tp tin c nh du, th s ch sao chp (di chuyn) nhng tp tin c nh du v tng ng vi mu gc. Cn mt vi tu chn c nh hng n thc hin thao tc sao chp v di chuyn tp tin m c th thit lp cng ngay ca s a ra cc mu tn tp tin, hoc c th thit lp qua cu lnh ca trnh n Cu hnh | Cu hnh.... Ty chn i theo lin kt (Follow links) xc nh xem khi sao chp lin kt cng hay mm vo th mc ch n (hoc cc th mc con ca th mc ny) s to cc lin kt , hay sao chp tp tin (v th mc con) m nhng lin kt ny ch n. Ty chn Vo th mc con, nu c (Dive into subdirs) xc nh thao tc s lm nu trong th mc ch n c th mc c cng tn vi tn tp tin (hoc th mc) ang sao chp (ngun). Theo mc nh ty chn ny tt v tp tin (th mc) ngun s c sao chp vo th mc ch n. Nu ty chn ny c dng th s to ra trong th mc ch n mt th mc con c cng tn v cc tp tin (th mc) s c sao chp vo th mc mi ny. Chng ta s xem xt mt v d hiu hn tnh hung ny. Bn mun sao chp ni dung ca th mc one vo th mc /two/one c t trc. Thng thng (khi ty chn b tt) mc s ch sao chp tt c cc tp tin t one vo /two/one. Nu ty chn bt, th tt c cc tp tin s c sao chp vo /two/one/one. Ty chn Ghi nh thuc tnh (Preserve attributes) xc nh xem khi sao chp hoc di chuyn c gi li hay khng cc thuc tnh ca tp tin ban u, bao gm: quyn truy cp, cc nh du thi gian (truy cp v sa i), v nu ngi dng l root th cn c thuc tnh UID v GID. Nu ty chn khng c dng th cc thuc tnh s c t theo gi tr umask hin thi.

6.8 Thng bo khi sao chp v di chuyn tp tin

143

nh hng n qu trnh sao chp v di chuyn tp tin cn c ty chn Mu dng shell trong trnh n Cu hnh / Cu hnh.... Kh ty chn ny bt, th ngi dng c th s dng cc k t thay th (wildcards) * v ? trong mu ngun. Chng s c dng tng t nh trong shell. Trong mu ch ch cho php s dng * v \<ch s>. K t * u tin trong mu ch tng ng vi nhm k t thay th u tin trong mu ngun, k t * th hai tng ng vi nhm th hai v.v. . . Tng t, k t thay th \1 tng ng nhm k t thay th u tin trong mu ngun, k t \2 nhm th hai v.v. . . K t \0 tng ng vi ton b tn ca tp tin ngun. Chng ta xem xt mt vi v d hiu r hn. V d 1. Nu mu ngun l *.tar.gz, cn mu ch /two/*.tgz, v tn ca tp tin ang sao chp l foo.tar.gz, th tp tin thu c s c tn foo.tgz v nm trong th mc /two. V d 2. Ly v d bn cn i ch tn v phn m rng tp tin, file.c tr thnh c.file. Mu ngun s cn c dng *.*, cn mu ch s l \2.\1. Khi ty chn Mu dng shell (Use shell patterns) bt, th mc s khng thc hin vic nhm t ng. ch ra nhm cc k t trong mu ngun s tng ng vi cc k t thay th trong mu ch, bn cn s dng cc du ngoc \(. . . \). Cch ny mm do hn, nhng cn cn thn hn v nhiu cng sc khi nhp vo. Chng ta li xem xt tip hai v d. V d 3. Nu mu ngun c dng \(.*\)\.tar\.gz$, sao chp c thc hin vo /two/*.tgz v ang sao chp tp tin foo.tar.gz, th kt qu s l /two/foo.tgz. V d 4. Ly v d bn cn i ch tn v phn m rng tp tin, file.c tr thnh c.file. Mu ngun \(.*\)\.\(.*\)$, cn mu ch s l \2.\1. Khi thc hin cc thao tc sao chp v di chuyn ngi dng cn c th chuyn kiu ch hoa/thng trong tn tp tin. Nu s dng \u hoc \l trong mu ch, th k t tip theo ca tn s c chuyn tng ng thnh ch hoa hoc ch thng. Nu s dng trong mu ch \U hoc \L, th s chuyn i tt c cc k t pha sau n ln gp \U hoc \L tip theo hoc n cui tn tp tin. S dng \u v \l cung cp cc kh nng rng hn so vi \U v \L. V d trong mu ngun c * (ty chn Mu dng shell bt) hoc \(.*\)$ (ty chn Mu dng shell tt), cn mu ch c \L\u*, tn tp tin s c chuyn i sao cho cc ch ci u tin s l ch hoa, cn li l ch thng. K t \ trong cc mu dng hu b tc dng ca cc k t c bit. V d, \ \ c ngha l dng k t gch cho thng thng v \* c ngha l s dng mt k t du sao thng thng (asterisk).

6.8

Thng bo khi sao chp v di chuyn tp tin

Khi ngi dng thc hin cc thao tc sao chp, di chuyn hay xa tp tin, Midnight Commander hin th trn mn hnh hp thoi, trong cho bit trn (nhng) tp tin no s thc hin thao tc v qu trnh thc hin din ra nh th no. hin th qu trnh lm vic, trn mn hnh hin ra t mt n ba thanh biu (progress bars). Thanh th nht (file bar) cho bit thc hin (v d sao chp) c bao nhiu phn ca tp tin hin thi. Thanh th hai (count bar) cho bit n thi im hin thi thc hin c bao nhiu phn, tnh theo

144

S dng Midnight Commander

tng ci, ca nhng tp tin nh du. Thanh th ba (bytes bar) cho bit phn trm dung lng tnh theo byte lm xong. Nu tt i tu chn Thao tc vi thng tin di dng (xem Cu hnh / Cu hnh...), th hai thanh biu cui s khng c hin th. phn di ca hp thoi ny c hai nt. Nhn nt B qua s dn n vic b qua thao tc vi tp tin ny v tip tc thao tc tp tin sau nu c. Nhn nt Dng s kt thc thao tc, tt c nhng tp tin cn li s b b qua. Trong qu trnh thc hin cc thao tc vi tp tin ngi dng c th nhn thy 3 dng ca s na. 1. Ca s li a ra thng tin v li v ngh ba cch gii quyt. Thng thng ngi dng chn B qua khng thc hin thao tc vi tp tin ang c vn , hoc Dng khng thc hin hon ton thao tc a ra. Phng n th ba l Th li. Chn phng n ny nu ngi dng sa c li (v d, bng trnh lnh terminal khc). 2. Ca s hi li xut hin khi ngi dng ang thc hin thao tc dn n vic ghi chn ln tp tin c, tc l trong th mc sao chp hay di chuyn n c tp tin cng tn. Trong ca s hi li s hin ra thi gian to ra v kch thc ca tp tin ngun (ang c sao chp hay di chuyn) v ca tp tin ch (s b hu b nu ghi chn).

Hnh 6.9: Ca s hi li Di y a ra hai cu hi li 6.9. Cu hi th nht Ghi ln tp tin ny c ba cch tr li: ng (nt C) T chi, khng ghi chn (nt Khng) Ghi thm ni dung ca tp tin ang sao chp vo cui tp tin c (nt Thm vo cui)

6.9 Dng lnh ca h v

145

Cn tr li cho cu hi th hai Ghi ln mi tp tin ch? chng ta c 4 cch. Cch gii quyt c dng s lm vic vi tt c cc tp tin chn, o ca s hi li s khng hin ra mi ln c tp tin trng tn: Tt c ghi chn tt c cc tp tin chn, khng hi li. Cp nht ch ghi chn (ng n) nhng tp tin c to ra trc tp tin ngun. Khng khng ghi chn cc tp tin (nu khng c tp tin ch, th s thc hin sao chp). Nu kch thc khc nhau ch ghi chn nu kch thc cc tp tin khc nhau. Ngi dng cng c th dng thc hin thao tc nu nhn nt Dng cui ca s hi li. La chn nt mun nhn bng cc phm mi tn hoc phm <Tab>. 3. Ca s yu cu xa ton b ( 6.10) xut hin khi ngi dng ang thc hin thao tc xa mt th mc khng rng. Nhn nt C xa th mc cng vi tt c cc tp tin ca n, Khng khng xa th mc ny, chn Tt c nu bn nh du nhiu th mc v tin tng l mnh ng, Khng b qua, khng xa nhng th mc khng rng trong s chn, Dng c ngha l khng thc hin thao tc xa na. Ch chn C hoc Tt c khi bn thc s tin tng l mnh mun xa th mc cng vi ton b cc th mc con ca n.

Hnh 6.10: Ca s yu cu

Nu nh du nhm cc tp tin thao tc, th sau khi thc hin s b nh du khi nhng tp tin thao tc thnh cng. Nhng tp tin b b qua, tc l khng thao tc, s vn c nh du nh c.

6.9

Dng lnh ca h v

Nh ni khi m t v ngoi ca mn hnh Midnight Commander, phn di ca mn hnh lun lun c dng lnh ca h v. Trong thi gian lm vic vi Midnight Commander, c th chy mt cu lnh no ca h iu hnh, ngi dng cn g vo dng lnh tn ca chng

146

S dng Midnight Commander

trnh tng ng hoc chn chng trnh trong bng hin thi (a dng chiu sng ln tn tp tin chng trnh), sau g phm <Enter>. Nu ngi dng nhn phm <Enter> khi dng chiu sng nm trn tn tp tin khng phi l chng trnh, th Midnight Commander s so snh phn m rng ca tp tin ny vi phn m rng c trong tp tin cc phn m rng ~/mc.ext. Nu trong tp tin mc.ext c mt phn nh ch ra thao tc lm vic vi nhng tp tin c phn m rng nh tp tin chn, th s thc hin nhng cu lnh t trong phn nh ny. Trc khi chy cc lnh c thc hin nhng s thay th macro n gin. Thng thng vic nhp cc cu lnh i hi phi g rt nhiu cc k t, c bit trong trng hp phi ch ra cc tham s ca cu lnh, trong s c ng dn y cng vi tn ca tp tin cn lm vic. gip nhp cu lnh d dng hn trong Midnight Commander c mt vi t hp phm cho php gim s ln g bn phm trong thi gian nhp v sa i cu lnh trn dng lnh. <Alt>+<Enter>. Sao chp tn ca tp tin hay th mc ang c chiu sng vo dng lnh. <Ctrl>+<Enter>. Cng nh <Alt>+<Enter>. <Alt>+<Tab>. Thc hin thao tc t ng in thm4 tn tp tin, tn cu lnh, tn ngi dng hay tn my (ty theo nhng g ngi dng g v phn no ca cu lnh ang c nhp vo), tc l Midnight Commander s on nhng k t m ngi dng cn cha nhp vo da trn danh sch tp tin ca th mc hin thi, danh sch cu lnh, v.v. . . Tuy nhin nu bn lm vic trong giao din ho, v d trong mi trng KDE th rt c th s khng dng c t hp phm ny, do mi trng lm vic dng n cho thao tc khc (trong trng hp KDE th l chuyn gia cc ca s). Tt nhin bn c th thay i cu hnh ca mi trng lm vic, nhng l mt cu chuyn khc. <Ctrl>+<X>, <T>. Sao chp vo dng lnh tn ca cc tp tin c nh du trong bng hin thi, hoc tn ca tp tin ang c chiu sng nu khng c tp tin no c nh du. <Ctrl>+<X>, <Ctrl>+<T>. Sao chp vo dng lnh tn ca cc tp tin c nh du trong bng khng phi hin thi. <Ctrl>+<X>,<P>. Sao chp vo dng lnh tn ca th mc hin thi, tc l tn ca th mc ang c hin th trn bng hin thi. <Ctrl>+<X>, <Ctrl>+<P>. Sao chp vo dng lnh tn ca th mc ang hin th trn bng khng phi hin thi. <Ctrl>+<Q>. Chn nhng k t c chng trnh Midnight Commander bin dch theo mt cch no (v d k t +). <Alt>+<P>. Quay ngc li mt cu lnh theo danh sch nhng lnh chy (lch s lnh).
4

autocompletion

6.10 Trnh n Cu lnh <Alt>+<N>. i ti cu lnh tip theo trong danh sch lch s lnh.

147

<Alt>+<H>. Hin th lch s ca dng nhp vo hin thi, nu l dng lnh th hin th lch s lnh. Dng nhp vo khng ch l dng lnh ca h v shell m cn l nhng dng nhp vo ca cc hp thoi ca cc chng trnh con khc nhau. V d dng nhp vo a ch IP ca my ch FTP m bn mun kt ni ti nh trong hnh 6.11 (cu lnh Kt ni FTP... ca trnh n Bng phi hoc Bng tri). Trong bt k trng hp no, khi trn mn hnh xut hin dng nhp vo, th ngi dng c th s dng nhng t hp phm iu khin lit k trong bng 6.5.

Hnh 6.11: Dng nhp vo a ch IP ca my ch FTP

6.10

Trnh n Cu lnh

Trnh n Cu lnh cho php thc hin thm mt s thao tc iu khin h thng tp tin, ng thi thc hin nhng cu lnh thay i dng ca cc bng Midnight Commander cng nh nhng thng tin hin th trn chng. Khi chy cu lnh Cy th mc ca trnh n ny th s hin ra ca s cho thy cu trc th mc ca h thng tp tin. C th lm hin ra cy th mc bng hai cch: qua cu lnh Cy th mc ca trnh n Cu lnh v qua cu lnh Cy th mc ca trnh n Bng phi hoc bng tri. trnh mt thi gian to cy th mc, Midnight Commander ch to mt phn nh cy ny ch khng to ht. Nu th mc ngi dng mun xem khng c hin th th hy chuyn ti th mc m ca n ri nhn <Ctrl>+<R> hoc <F2>. Nu th mc khng c cha cc th mc con th s khng c g xy ra. Trong trng hp ngc li th s m ra mt nhnh con ca cy th mc. C hai ch hin th cy th mc. Trong ch tnh (static) di chuyn ti th mc mun xem (tc l di chuyn dng chiu sng ti tn ca th mc ) ch dng cc phm <> v <>. S hin th tt c cc th mc con m chng trnh c c ti thi im ny. Trong ch ng (dynamic) cc phm <> v <> c dng chuyn ti th mc bn cnh c cng cp bc. chuyn ti th mc m s dng phm <>, cn phm <> dng chuyn ti cc th mc con ca th mc hin thi, tc l chuyn ti mt cp bc thp hn. Khi ny ch hin th nhng th mc nm trn (bao gm c th mc m v cao hn), ccthuw mc bn cnh c cng cp bc v cc th mc con chnh thc ca th mc ny, khng hin th cc th mc chu, cht. Dng ca cy th mc t ng thay i sau mi ln di chuyn qua cy ny. iu khin xem cy th mc c th s dng nhng t hp phm sau:

148

S dng Midnight Commander

Bng 6.5: Cc lnh iu khin dng nhp vo


T hp phm <Ctrl>+<A> <Ctrl>+<E> <Ctrl>+<B> (<>) <Ctrl>+<F> (<>) <Alt>+<F> <Alt>+<B> <Ctrl>+<H> (<Backspace>) <Ctrl>+<D> (<Delete>) <Ctrl>+<@> <Ctrl>+<W> Hnh ng thc hin Di chuyn con tr ln u dng. Di chuyn con tr ti cui dng. Di chuyn con tr sang tri mt k t. Di chuyn con tr sang phi mt k t. Di chuyn con tr sang phi mt t. Di chuyn con tr sang tri mt t. Xa k t nm bn tri con tr. Xa k t nm ti ch con tr. nh du bt u phn vn bn mun ct (ghi vo b m). Sao chp vn bn nm gia con tr v nh du vo b m ng thi xa i vn bn khi dng nhp vo. Sao chp vn bn nm gia con tr v nh du vo b m m khng xa vn bn khi dng nhp vo. Dn ni dung ca b m vo dng nhp ti v tr nm trc (bn tri) con tr. Xa bn bn t v tr con tr ti cui dng. Nhng t hp phm ny dng di chuyn trong lch s lnh. <Alt>+<P> di chuyn ti nhng cu lnh nm trc, cn <Alt>+<N> ti nhng cu lnh nm sau. C th dng mt trong hai t hp phm ny xa t nm trc (bn tri) con tr. T c coi l mt cm k t nm gia hai khong trng. Thc hin thao tc t ng in thm (autocompletion) tn tp tin, tn cu lnh, tn ngi dng hay tn my.

<Alt>+<W> <Ctrl>+<Y> <Ctrl>+<K> <Alt>+<P> v <Alt>+<N>

<Ctrl>+<Alt>+<H> (<Alt>+<Backspace>) <Alt>+<Tab>

Nhng phm dng di chuyn lit k trong bng 6.1 <Enter>. Nhn phm ny trong ca s xem cy th mc thot khi ch xem v hin th danh sch tp tin ca th mc chn trong bng hin thi. Khi hin th cy th mc trn mt bng th nhn phm <Enter> s hin th th mc tng ng ln bng th hai, cn trn bng hin thi s l cy th mc. <Ctrl>+<R> hoc <F2>. c li ni dung ca th mc (cp nht, refresh). S dng trong trng hp khi cy th mc c hin th khng tng ng vi cu trc tht s ca n: mt s th mc con khng c hin th hoc hin th c nhng th mc con b xa. <F3>. Xa th mc hin thi ra khi cy th mc. Cu lnh ny ch s dng xa nhng nhnh cy hin th khng ng. Nu ngi dng xa th mc c trn a th s hin ra mt thng bo li. V th khi xem cy th mc th dng di cng (cho bit chc nng ca cc phm F) cho bit phm <F3> c chc nng Qun.

6.10 Trnh n Cu lnh

149

<F4> (Static/Dynamic). Chuyn i gia hai ch di chuyn trong cy th mc tnh (dng theo mc nh) v ng. <F5>. Sao chp th mc con (cn ch ra th mc mun sao chp ti trong dng nhp vo hin ra). <F6>. Di chuyn th mc. <F7>. To th mc con trong th mc hin thi. <F8>. Xa th mc t di dng chiu sng ra khi h thng tp tin. <Ctrl>+<S> hoc <Alt>+<S>. Tm th mc tip theo tng ng vi mu a ra. Nu khng c th mc , th s chuyn dng chiu sng xung di mt dng. <Ctrl>+<H> hoc <Backspace>. Xa k t cui cng trong dng (mu) tm kim. <Bt k k t no khc>. Thm k t ny vo mu tm kim v di chuyn dng chiu sng n tn ca th mc tip theo tho mn mu ny. Trong ch xem cy th mc th u tin cn chy ch tm kim bng t hp <Ctrl>+<S>. Mu tm kim s c hin th trn dng trng thi mini (nu c). Hnh ng sau ch c th thc hin trong ca s ang hin th cy th mc: <F1> (Help) Gi tr gip v hin th phn tr gip v ca s cy th mc. C th s dng chut trong ca s xem cy th mc. Nhn p chut c tc dng nh khi nhn phm <Enter>. Cu lnh Tm tp tin (phm nng <Meta>+<?> hoc <Esc>,<?>) ca trnh n Cu lnh cho php ngi dng tm trn a tp tin c tn a ra. Sau khi chn cu lnh ny s hin ra mt hp thoi hi th mc bt u tm kim, tn tp tin mun tm (xem hnh 6.12). Ngi dng c th chn th mc bt u tm kim trong cy th mc hin ra khi nhn nt Cy th mc ca hp thoi. Trong Ni dung (Contents) c th a ra cc biu thc chnh quy theo cc quy lut ca lnh egrep. C ngha l ng trc nhng k t c ngha c bit i vi egrep cn t k t \. V d, nu mun tm dng strcmp (, th ngi dng cn nhp vo Ni dung dng strcmp \. bt u tm kim, nhn vo nt ng . Trong thi gian tm kim c th tm dng bng nt Hon v tip tc bng nt Tip tc (hnh 6.13). C th xem danh sch nhng tp tin tm thy bng cc phm <> v <>. Nt Chuyn th mc dng chuyn ti th mc c cha tp tin ang c chiu sng. Nt Lp li dng nhp vo cc tham s cho tm kim mi. Nt Thot dng thot khi ch tm kim. Nhn nt Bng s hin th kt qu tm kim ln bng hin thi ngi dng c th thc hin cc thao tc khc vi nhng tp tin chn (xem, sao chp, di chuyn, xa, v.v. . . ). Sau khi a ra bng c th nhn <Ctrl>+<R> tr li danh sch tp tin thng thng. Ngoi ra, cn c kh nng a ra danh sch nhng th mc m cu lnh Tm tp tin s b qua trong khi tm kim (v d, nu ngi dng bit l tp tin ang tm khng c trn CD hay khng mun tm kim trong nhng th mc

150

S dng Midnight Commander

Hnh 6.12: Bt u tm kim

Hnh 6.13: ang tm kim kt ni qua NFS qua ng truyn rt chm). Cn phi ch ra nhng th mc mun b qua ny bng bin find_ignore_dirs trong phn Misc ca tp tin ~/.mc/ini. Tn th mc cch nhau bi du hai chm nh sau: [Misc] find_ignore_dirs=/cdrom:/nfs/wuarchive:/afs Bn c th s dng vic a kt qu lnh ln trn bng (c thm Bng ngoi di) thc hin nhng hnh ng tip ni nhau phc tp hn, cn Tm kim tp tin ch cho php thc hin nhng yu cu n gin. Cu lnh i ch hai bng (<Ctrl>+<U>) i ch ni dung ca bng tri v bng phi. Cu lnh Bt/tt bng (<Ctrl>+<O>) n i hai bng ca mc v hin th kt qu lm vic ca cc lnh shell. m li cc bng mc cng dng lnh (phm nng) ny. Lnh ny lm vic trn xterm v di console ca Linux. Cu lnh So snh th mc (<Ctrl-X>,<D>) so snh ni dung ca cc th mc ang c hin th trn bng tri v bng phi. C ba phng php so snh. Nu dng phng php nhanh th ch so snh kch thc v thi gian to cc tp tin

6.10 Trnh n Cu lnh

151

c cng tn. Kt qu l trong c hai th mc s chiu sng nhng tp tin khng c trong th mc cn li, hoc chiu sng nhng tp tin l phin bn mi hn. Sau ngi dng c th s dng cu lnh sao chp (<F5>) lm cho ni dung ca hai th mc ging nhau. Phng php theo byte s so snh ni dung ca cc tp tin (theo tng byte). Phng php ny khng dng c nu my khng h tr gi h thng (system call) mmap(2). Khi so snh theo kch thc th ch kim tra kch thc ca cc tp tin tng ng v khng kim tra ngy to ra. Cu lnh Bng ngoi (hay ng hn phi gi l a kt qu lm vic ca lnh ln trn bng) cho php ngi dng thc hin nhng chng trnh ngoi, ri a kt qu ca lnh ny thnh ni dung ca bng hin thi (v d in hnh l a kt qu ca lnh find). V d, nu bn mun thc hin mt hnh ng no (xa, sao chp, di chuyn,. . . ) vi tt c cc lin kt mm ca th mc hin thi, th bn c th s dng cu lnh Bng ngoi chy cu lnh find . -type l -print nh trong hnh 6.14.

Hnh 6.14: Tm kim tt c cc lin kt mm Sau khi thc hin cu lnh ny, trn bng hin thi s khng phi l ni dung ca th mc tng ng m ch c cc lin kt mm nm trong th mc ch ra. Nu mun ngi dng c th lu nhng cu lnh bng ngoi thng dng bng nhng tn ring c ngha c th gi nhanh nhng cu lnh ny theo tn ca chng. thc hin vic ny cn nhp cu lnh vo dng nhp vo (dng Cu lnh) ri nhn nt Thm mi. Sau bn cn nhp vo tn ca lnh . Ln sau bn ch cn chn tn tng ng trong danh sch m khng cn phi nhp li cu lnh t u5 . Cu lnh Lch s cu lnh hin ra ca s vi danh sch nhng lnh thc hin trc y. C th sao chp lnh ang c chiu sng (di chuyn dng chiu sng bng cc phm <> v <>) vo dng lnh ca h v bng phm <Enter>.
5

Tt nhin bn c th dng lch s cu lnh (xem trn hoc ngay di)

152

S dng Midnight Commander

Cn c th truy cp vo danh sch lch s cu lnh bng cc phm <Alt>+<P> hoc <Alt>+<N>, tuy nhin trong trng hp ny ngi dng s khng thy danh sch cc cu lnh. Thay vo trn dng lnh s hin th mt trong cc lnh ca danh sch v phm <Alt>+<P> s chuyn n thnh lnh nm trn, cn <Alt>+<N> s chuyn thnh lnh nm di trong danh sch. Cu lnh Th mc thng dng (<Ctrl>+<\>) cho php to danh sch nhng th mc thng c dng v cho php chuyn nhanh n nhng th mc trong danh sch ny (hnh 6.15). thc hin vic ny, mc to ra danh sch cc nh du (tn d nh) cho cc th mc thng dng ny. C th s dng danh sch ny chuyn nhanh n th mc cn thit. Cng trong hp thoi th mc thng dng bn c th thm nh du mi vo danh sch hoc xa nh du c. thm nh du mi cn c th s dng t hp phm (<Ctrl>+<X>, <H>), khi s thm th mc hin thi vo danh sch th mc thng dng. Chng trnh s hin ra yu cu nhp tn nh du cho th mc ny.

Hnh 6.15: Hp thoi danh sch th mc thng dng Cu lnh Cng vic nn sau cho php ngi dng iu khin nhng cng vic ang lm vic ch nn chy t Midnight Commander (v d thao tc sao chp v di chuyn tp tin). S dng cu lnh ny hoc phm nng <Ctrl>+ <X>,<J> bn c th dng, phc hi (tip tc chy) hoc dit bt k cng vic nn sau ny (xem hnh 6.16). Sau khi chn cu lnh Son tho tp tin phn m rng ngi dng c th sa i tp tin mc.ext xc nh dng chng trnh no m cc tp tin vi phn m rng (phn cui ca tn sau du chm cui cng) no. Chng trnh ny s c chy thao tc (xem, son tho hay thc hin) vi tp tin c phn m rng tng ng khi chuyn dng chiu sng ln tn tp tin ri nhn <Enter>. Cu lnh Son tho tp tin trnh n dng sa trnh n ca ngi dng ~/.mc/menu (trnh n hin ra sau khi nhn phm <F2>) hoc trnh n

6.11 Cu hnh Midnight Commander

153

Hnh 6.16: iu khin cng vic nn sau ca h thng, c th l /usr/share/mc/mc.menu. Tt nhin trong trng hp cui cng bn cn c quyn ghi ln tp tin tng ng.

6.11

Cu hnh Midnight Commander

Chng trnh Midnight Commander c nhiu cu hnh (ty chn). Mi ty chn c th c dng hoc khng. Vic dng hay khng dng ty chn c thc hin qua cc ca s hi thoi ca trnh n Cu hnh. Ty chn c dng nu c du x hoc du sao * (t vo bng phm trng) trong ngoc vung ng trc tn ca ty chn. By gi chng ta xem xt tng cu lnh ca trnh n Cu hnh bit c th dng hoc khng dng nhng ty chn no. Cu lnh u tin l Cu hnh. Khi chn cu lnh ny s hin ra mt hp thoi nh trong hnh 6.17. Nhng tham s cu hnh trong hp thoi ny chia thnh ba nhm: Cu hnh bng, Tm ngng sau khi chy... v Cu hnh khc. Trong vng Cu hnh bng, ngi dng c th a ra gi tr ca cc tham s sau: Hin th tp tin sao lu. Theo mc nh chng trnh Midnight Commander khng hin th nhng tp tin c tn kt thc bng (ging nh ty chn -B ca lnh ls). Hin th tp tin n. Theo mc nh Midnight Commander hin th tt c cc tp tin, trong c nhng tp tin c tn bt u bng u chm (ging nh ls-a). Nhn di chuyn xung. Khi ngi dng nh du tp tin (bng t hp phm <Ctrl>+<T> hoc <Insert>), th theo mc nh dng chiu sng tn tp tin s di chuyn xung di mt dng. y xung trnh n. Nu ty chn ny c dng, th khi gi trnh n chnh bng phm <F9> s hin th ngay lp tc danh sch cc cu lnh ca

154

S dng Midnight Commander

Hnh 6.17: Cu hnh Midnight Commander trnh n (Trnh n y xung). Trong trng hp ngc li, phm <F9> ch a ngi dng vo trnh n chnh v ngi dng phi t chn trnh n tng ng bng cc phm mi tn v dng phm <Enter> hoc ch ci u tin ca trnh n m (y xung) trnh n . V d, bn mun m trnh n Tp tin, th u tin cn nhn phm <F9> ri dng phm mi tn sang phi ri nhn phm <Enter>, hoc nhn phm <F9> ri nhn phm <T>. Trn ln tt c tp tin. Nu dng ty chn ny, th s hin th khng phn bit tp tin v th mc. Nu ty chn khng c dng th th mc (v ng dn n th mc) s c hin th u danh sch, cn tn tp tin sau tn ca tt c cc th mc. Np nhanh th mc. Theo mc nh ty chn ny khng c dng. Nu bn bt dng ty chn ny, th Midnight Commander s s dng cch (mo) sau hin th ni dung th mc: ch c li ni dung ca th mc trong trng hp thay i bn ghi inode ca th mc, tc l nu trong th mc to hoc xo i tp tin (th mc) no ; nu ch thay i bn ghi inode ca cc tp tin ca th mc ny ( thay i kch thc tp tin, quyn truy cp hoc ch s hu v.v. . . ) th s khng cp nht li ni dung ca th mc . Trong trng hp (nu ty chn ny c dng), th bn cn phi t cp nht li danh sch tp tin bng t hp phm <Ctrl>+<R>. Vng Tm ngng sau khi chy.... Sau khi thc hin cc cu lnh Midnight Commander c th tm ngng mt cht ngi dng c th xem v nghin cu kt qu lm vic ca nhng lnh ny. y c ba ty chn: Khng bao gi. C ngha l ngi dng khng mun xem kt qu lm vic ca lnh. Trn cc knh giao tc Linux hoc khi dng xterm ngi dng cn c th xem kt qu ny bng t hp phm <Ctrl>+<O>.

6.11 Cu hnh Midnight Commander

155

Trn nhng terminal ngu. S tm ngng trn nhng terminal khng c kh nng hin th kt qu lm vic ca lnh thc hin cui cng. Lun lun. Chng trnh Midnight Commander lun lun tm ngng sau khi thc hin bt k lnh no. Trong vng Cu hnh khc ngi dng c th t ra cc tham s sau: Thao tc vi thng bo di dng (Verbose operation). Ty chn ny xc nh c hin th hay khng cc ca s ph khi thc hin cc thao tc sao chp, di chuyn v xa. Nu bn ang dng mt terminal chm th khng nn dng ty chn ny. Ty chn ny cng t ng khng c dng nu tc lm vic ca terminal nh hn 9600 bps. Tnh tng kch thc (Compute totals). Nu ty chn ny c dng, th trc khi thc hin cc thao tc sao chp, di chuyn, xa Midnight Commander s tnh tng s tp tin v tng kch thc ca chng ng thi hin th qu trnh thao tc vi nhng tp tin ny dng cc dng biu (tuy nhin, tnh nng ny s lm chm qu trnh mt cht). Ty chn ny khng lm vic, nu khng dng ty chn Thao tc vi thng bo di dng trn. Mu dng shell (Shell Patterns). Theo mc nh cc lnh chn (select) v b chn (unselect) nhm tp tin v hin th tp tin theo b lc (Filter) s dng cc biu thc chnh quy ging nh trong h v shell. c th t c kt qu nh trong shell, th chng trnh thc hin nhng bin i sau: thay th * bng .* (khng hoc vi k t); thay th ? bng . (chnh xc mt k t) v thay th . bng mt du chm thng thng (literal dot). Nu ty chn ny khng c dng, th cn dng biu thc chnh quy theo cc lut vit trong man 1 ed. T ng ghi nh cu hnh. Nu dng ty chn ny, th khi thot khi chng trnh Midnight Commander, gi tr ca cc tham s thit lp s c lu vo tp tin ~/.mc/ini. Trnh n t ng. Nu dng ty chn ny, th trnh n ca ngi dng s t ng hin th ln mn hnh mi khi chy chng trnh. Tnh nng ny c ch khi trn my lm vic ngi dng c t kinh nghim (ngi thao tc) v ch thc hin nhng thao tc n gin. S dng son tho ni b. Nu dng ty chn ny, th son tho cc tp tin Midnight Commander s dng trnh son tho ca mnh (mcedit). Nu khng dng ty chn ny th Midnight Commander s gi trnh son tho c ch ra trong bin mi trng EDITOR. Nu khng t bin ny th s dng vi. Trnh xem ni b. Nu dng ty chn ny, th Midnight Commander s s dng chng trnh xem tp tin ca mnh khi xem tp tin. Nu khng dng ty chn ny, th s gi chng trnh ch ra trong bin PAGER. Nu khng ch ra bin ny th s dng lnh view.

156

S dng Midnight Commander T ng hon thnh: hin tt c. Trong qu trnh nhp lnh Midnight Commander c th t ng hon thnh cu lnh , tc l th on phn cn li ca cu lnh ang nhp, khi nhn phm <Alt>+<Tab>. Theo mc nh khi nhn <Alt>+<Tab> th nht chng trnh s tm tt c nhng phng n hon thnh, v nu nh c nhiu phng n th chng trnh s to ra tip bp. Khi nhn t hp phm <Alt>+<Tab> ln th hai s hin th tt c cc kh nng hon thnh. Nu mun thy cc phng n hon thnh ngay sau ln nhn <Alt>+<Tab> u tin th hy bt dng ty chn ny. Ci ch quay. Nu dng ty chn ny, th Midnight Commander hin th gc trn bn phi vch quay dng lm ch th cho bit chng trnh ang thc hin cng vic (thao tc) no . Di chuyn ging trong Lynx. Nu dng ty chn ny, ngi dng c kh nng dng cc phm <> chuyn vo th mc ang c chiu sng v <> chuyn ln th mc m ca th mc hin thi (vi iu kin l dng lnh trng). Theo mc nh ty chn ny khng c dng. cd theo lin kt. Dng ty chn ny th Midnight Commander s tun theo chui cc th mc con lgc khi thay i th mc theo lin kt, ging nh khi dng lnh cd. Theo mc nh bash cng lm vic nh vy. Nu khng dng ty chn ny th Midnight Commander s chuyn th mc theo cu trc tht s ca cc th mc. Tc l nu ngi dng vo th mc hin thi theo lin kt n n, th lnh cd .. s a ngi dng vo th mc m ca th mc hin thi, ch khng phi vo th mc cha lin kt. Xa mt cch an ton. Dng ty chn ny s ngn chn c phn no vic xa tp tin mt cch v tnh. Nu dng ty chn, th trong hp thoi hi li vic xa tp tin theo mc nh nt c chn s chuyn t C sang Khng. Theo mc nh ty chn ny khng c dng.

Cu lnh th hai l V ngoi, cho php thay i mt s tham s hin th ca s chnh ca chng trnh Midnight Commander trn mn hnh (xem hnh 6.18). Bn c th hin th hoc khng hin th dng trnh n chnh trn u mn hnh, dng lnh, dng gi (nm trn dng lnh), dng gip nh v cng dng ca cc phm chc nng cui mn hnh. Trn cc knh giao tc (console) Linux hoc SCO cn c th t s dng dnh hin th kt qu lm vic ca lnh. Ngoi ra cn c th ch ra t th nm ca bng l nm ngang hay dc, v c th thay i kch thc ca nhng bng ny. Theo mc nh tt c cc thng tin c hin th bng mt mu, nhng bn c th thay i quyn truy cp v dng tp tin c mu khc. Nu dng phn bit mu cho quyn truy cp, th nhng perm v mode cho bit quyn truy cp ca ngi dng chy chng trnh Midnight Commander s c mu xc nh bng t kha selected trong phn [Colors] ca tp tin khi ng ~/.mc/ini. Nu dng phn bit mu cho cc dng tp tin, th Midnight Commander s s dng cc mu khc nhau cho th mc, cc tp tin core (dump ca b nh), cc tp tin thc hin v.v. . . Nu dng ty chn Hin trng thi mini, th trong phn di

6.11 Cu hnh Midnight Commander

157

Hnh 6.18: Thay i v ngoi ca Midnight Commander ca mi bng s c mt dng cho bit thng tin v tp tin ang c chiu sng hoc th mc hin thi. Trong hp thoi Bt hin th (hnh 6.19), ngi dng ch ra nh dng terminal s s dng x l (nhp vo v hin th trn mn hnh) thng tin dng cc byte, v d, thng tin trong cc tp tin.

Hnh 6.19: Thay i bit hin th ca Midnight Commander Bit (bng m) c chn s c hin th trong hp thoi ny, trong trng hp hnh 6.19 th bit c chn l 8 bit khc. Nhn vo nt La chn bn cnh s hin th danh sch cc bng m c. Dng cc phm mi tn ln, xung chn bng m thch hp sau nhn <Enter>. Dng ty chn u vo 8 bit y ch c ngha trn cc terminal c kh nng hin th tt c cc k t 8bit (v d cc k t ca ting Vit). Bng cu lnh Xc nhn c th cu hnh chn c hin th hay khng hp thoi hi li ngi dng trc khi thc hin cc thao tc xa, ghi chn v chy chng trnh, cng nh trc khi thot khi chng trnh mc. Khng hin th nhng hp thoi ny s gy t nhiu nguy him n h thng (hnh 6.20). Cu lnh Th phm (Learn keys) gi hp thoi, trong ngi dng c th th mt s phm (<F1> <F20>, <Home>, <End>), v nhng phm ny khng phi lm vic trn mi dng terminal. Trong hp thoi hin ra s xut hin mt

158

S dng Midnight Commander

Hnh 6.20: Thit lp cc hp thoi hi li ngi dng bng vi tn ca cc phm c th th. Bn c th di chuyn dng chiu sng qua cc phm ny bng <Tab> hoc cc phm dng trong trnh son tho vi (<h> sang tri, <j> xung di, <k> ln trn, <l> sang phi). Nu nhn vo cc phm mi tn v sau bn cnh tn ca chng xut hin du OK, th cng c th s dng chng iu khin dng chiu sng (hnh 6.21).

Hnh 6.21: Th v cu hnh cc phm th mt phm cn nhn tng phm trong bng. Nu n lm vic bnh thng th bn cnh s xut hin du OK. Sau khi xut hin du ny th phm s bt u lm vic ch bnh thng. V d, ln nhn phm <F1> u tin s lm xut hin du OK (nu phm lm vic bnh thng), cn nhng ln nhn tip theo s gi ca s tr gip. Tng t i vi cc phm mi tn. Phm <Tab> lun lun lm vic. Nu c phm no khng lm vic, th sau khi nhn ln phm khng xut hin du OK. Trong trng hp c th dng phm khc thay th. thay th cn chuyn dng chiu sng n tn ca phm khng lm vic (bng chut, cc phm mi tn hoc phm <Tab>) ri nhn <Enter> hoc phm trng. Sau s hin ra mt hp thoi mu yu cu ngi dng nhn phm s dng thay cho phm khng lm vic. Nu khng mun thay th na th hy nhn <Esc> ri i cho hp thoi mu bin mt (hoc nhn phm <Enter>). Khi

6.12 Kt ni ti my xa

159

hon thnh vic th nghim v cu hnh tt c cc phm, ngi dng c th chn lu nhng cu hnh ny vo phn [terminal:TERM] ca tp tin ~/.mc/ini ca mnh (trong TERM l tn gi ca terminal ang dng) hoc khng lu nhng thay i ny. Tt nhin nu tt c cc phm lm vic bnh thng th khng cn phi lu g ht. Cu lnh FS o gi hp thoi cho php ngi dng t cc gi tr ca mt s tham s c lin quan n s dng h thng tp tin o (hnh 6.22).

Hnh 6.22: Thit lp h thng tp tin o Cu lnh Ghi nh cu hnh lu tt c nhng gi tr chn vo tp tin ini ca chng trnh.

6.12
6.12.1

Kt ni ti my xa
Kt ni FTP

Chng trnh Midnight Commander s dng H thng tp tin FTP (ftpfs) cho php ngi dng iu khin cc tp tin xa qua giao thc FTP. s dng c tnh nng ny bn c th dng cu lnh Kt ni FTP ca trnh n Bng tri hoc Bng phi tng ng hoc dng cu lnh cd chuyn ti th mc c ng dn dng nh sau: /#ftp:[!][user[:pass]@]machine[:port][remote-dir] Cc thnh phn user, port v remote-dir l khng bt buc. Nu ngi dng a ra user, th Midnight Commander s ng nhp vo my xa vi tn ngi dng , nu khng s dng ng nhp anonymous (ng nhp chung) hoc dng tn ng nhp c trong tp tin ~/.netrc. Thnh phn pass l mt khu dng kt ni, ch cn thit nu c thnh phn user. Khng nn a thng mt khu vo ng dn ti th mc ca ftpfs, v bt k ai cng c th thy mt khu ny trn mn hnh, v mt khu s c lu dng vn bn thng

160

S dng Midnight Commander

thng trong lch s cc th mc thm. Chng trnh Midnight Commander s t ng hi mt khu trong trng hp khng c thnh phn pass v c tn ngi dng (c user). s dng FTP proxy, hy thm mt du chm than (!) vo pha trc tn my. V d: /#ftp:192.168.10.128/linux/SuSE /#ftp:people.vnoss.org/public/wiki /#ftp:!people.vnoss.org/public/wiki /#ftp:teppi@people.vnoss.org:67/public/wiki /#ftp:teppi:abcdef@people.vnoss.org/public/wiki Hp thoi ca cu lnh Kt ni FTP c dng nh trong hnh 6.11. Trong tn my ngi dng cn nhp tt c cc thnh phn ca ng dn ti ftpfs nh trn tr phn u (/#ftp:). V d: 192.168.10.128/linux/SuSE people.vnoss.org/public/wiki !people.vnoss.org/public/wiki teppi@people.vnoss.org:67/public/wiki teppi:abcdef@people.vnoss.org/public/wiki y bn c cng c th s dng lch s (phm <Alt>+<H>). thay i cc ty chn ca ftpfs chng ta cn dng cu lnh FS o ca trnh n Cu hnh (xem hnh 6.22).

6.12.2

Kt ni Shell

Ngoi FTP trong cc phin bn mi ca mnh chng trnh Midnight Commander cn h tr giao thc SSH v truyn ti tp tin qua H thng tp tin shell (file transfer over shell filesystem). H thng tp tin fish l h thng tp tin da trn mng my tnh, n cho php ngi dng iu khin tp tin trn cc my xa ging nh khi chng nm trn my ca mnh. s dng tnh nng ny, trn my xa phi c chy my ch fish hoc c mt h v shell tng thch vi bash. kt ni ti my xa, bn c th dng cu lnh Kt ni Shell ca trnh n Bng tri hoc Bng phi tng ng hoc dng cu lnh cd chuyn ti th mc c bit c tn dng nh sau: /#sh:[user@]machine[:options]/[remote-dir] Cc thnh phn user, options v remote-dir l khng bt buc. Nu ngi dng a ra user, th Midnight Commander s ng nhp vo my xa vi tn ngi dng , nu khng s dng tn ngi dng ca bn. Cc ty chn options c th l C nn thng tin truyn ti v rsh dng rsh thay cho ssh. Nu c thnh phn remote-dir th sau khi kt ni th mc hin thi trn my xa s l th mc ny. V d:

6.12 Kt ni ti my xa /#sh:192.168.10.128:r/linux/SuSE /#sh:people.vnoss.org:C/public/wiki /#sh:teppi@people.vnoss.org/projects

161

Tc gi hy vng rng nhng thng tin trong chng ny c th gip bn bt u lm vic vi chng trnh Midnight Commander. Tuy nhin kh nng ca chng trnh ny cn rng hn so vi nhng g cp n y. Cc bn c th c thm tr gip ca chng trnh ny mi khi cn bng phm <F1>.
Ghi ch: Bn dch ting Vit cho giao din ca Midnight Commander i km vi chng trnh c th khng phi l bn dch mi nht. Bn lun lun c th ly bn dch mi nht v t kho CVS ca Midnight Commander (tp tin vi.po trong th mc po) hoc t http://cvs.savannah.gnu.org/viewcvs/*checkout*/mc/ mc/po/vi.po. Cch cp nht mt bn dch giao din cho h thng s cp n trong chng ni v ting Vit trn Linux hoc nu mun bn c th c trong bn tin s 3 VnOSS c trn http://vnoss.org (tp tin bantin-so3-092006.pdf).

Chng 7 Giao din ho

Mc d Linux l h iu hnh mnh v pht trin, nhng nu ch lm vic qua giao din dng lnh th Linux tr thnh kh s dng v khng th hp dn c nhiu ngi dng. Ngi dng s phi nh mt danh sch di cc cu lnh. Do ngay t nhng ngy u pht trin ca Linux c mt giao din khc thn thin vi ngi dng hn, l giao din ho. Trong giao din ho ngi dng c th chy cc chng trnh trong cc ca s khc nhau, khng cn nh danh sch cc cu lnh v c kh nng chy chng bng h thng trnh n (menu), h thng cc biu tng trn mn hnh, v ngoi ra cn c kh nng s dng chut sp xp khng gian mn hnh ca mnh. Hin nay cc mi trng lm vic ln nh KDE, GNOME cn c sn nhng ng dng i km gip ngi dng khng mt nhiu thi gian la chn. Mi th c sn. Chng ta s xem xt mt trong hai mi trng lm vic ny, KDE, trong mt chng sch ring ngay sau chng ny. Trong chng ny chng ta s xem xt cch lm vic ca giao din ho v cch cu hnh n. cui chng s c m t s lc mt vi mi trng lm vic v cch khi ng vo chng.

7.1

X.Org

Giao din ho trong Linux c xy dng da trn c s ca tiu chun X Window System (cn ch l Window ch khng phi Windows, xin ng nhm!) hay cn gi n gin l X (ch-x). Tiu chun ny u tin c vit ra ti trng i hc cng ngh Massachuset. Bt u t phin bn th hai tiu chun ny c cngxoocxiom X h tr. Cngxoocxiom X c t chc vo nm 1988 vi mc ch tiu chun ha giao din ha cho cc h iu hnh UNIX. Bt u t nm 1997 cngxoocxiom X chuyn thnh X Open Group v sau l X.Org Foundation (http://www.x.org). Hin thi c phin bn 11 bn pht hnh 7 ca tiu chun X Window System cho h thng ho ca UNIX, k hiu ngn gn l X11R7. Tuy nhin trn cc bn phn phi Linux vn cn s dng bn pht hnh th 6, tc l X11R6. Cch y khng lu cc bn phn phi Linux vn cn s dng XFree86, mt phn mm ng dng t do tun theo tiu chun X11R6 cho cc h thng UNIX

7.1 X.Org

163

vi b x l 80386/80486/Pentium. XFree86 c mt nhm cc nh lp trnh to ra, ngi khi u nhm ny l David Wexelblat. XFree86 c s dng khng ch trn Linux m cn trn cc h thng System V/386, 386BSD, FreeBSD v cc phin bn UNIX khc cho Intel x86. Tuy nhin cch y mt thi gian (cui nm 2003 u nm 2004), cc phin bn Linux ng lot chuyn sang mt bn X khc da trn tiu chun X Window System (do c vn vi bn quynca XFree86 phin bn 4.4.0) l XOrg, mt nhnh pht trin mi ca XFree86. XOrg do t chc cng tn X.Org Foundation cung cp dng ng dng m ngun m ca X Window System. Qu trnh pht trin XOrg hin ang l mt phn ca cng ng freedesktop.org. Phn ln cc nh pht trin, nh phn phi v nh cung cp phn cng ca d n XFree86 trc y ngng tham gia XFree86 v chuyn sn phm ca mnh gia nhp vo X.org Foundation. Do i khi chng ta khng thy c s khc nhau v c bn. Hin thi X.Org Foudation l mt cng ty khoa hc vi ban lnh o bao gm nhng guru1 hng u trong th gii m ngun m: Stuart Anderson (Free Standards Group), Egbert Eich (SuSE), Jim Gettys (HP), Stuart Kreitman (SUN), Kevin Martin (Red Hat), Jim McQuillan (Linux Terminal Server Project), Keith Packard (HP), Leon Shiman (Shiman Associates). Nu mun bn c th tm hiu thm v t chc X.Org trn trang web chnh ca t chc ti a ch http://x.org. Cn by gi chng ta s ni i dng v cch t chc lm vic giao din phn mm da trn tiu chun X Window System. H thng X Window c xy dng trn c s m hnh ch/khch (thut ng ting Anh hay c dng hn trong giao tip: server/client) thng gp trong th gii vi tnh hin nay. Tuy nhin m hnh ny trong trng hp X Window c dng dng quay ngc li 180 . Ni nh vy l v chng trnh my ch (xin c gi tt l chng trnh ch) X lm vic trn my tnh ca ngi dng (v hin th hnh nh trn mn hnh my tnh) ch khng phi trn mt my (ch) no xa. Chng trnh ch X lm vic trc tip vi phn cng: vi h thng vi- (cc hnh,. . . ), vi cc thit b nhp vo (bn phm, chut,. . . ) v m thanh. Rt c th i vi mt s bn c s d hiu hn nu coi chng trnh ny l mt driver ca h thng hnh nh, chuyn iu khin h thng ny. Chng trnh ch X chim lnh tt c cc thit b phn cng v cung cp cc kh nng ca thit b cho cc chng trnh khc dng ti nguyn ring2 theo mt giao thc (protocol)
1 2

nhng ngi c kinh nghim lm vic nhiu nm chnh v th m chng trnh X c coi l ch

164

Giao din ho

c bit, gi l giao thc X hay giao thc kt ni mng X (X Network Protocol). My tnh ch dng chy chng trnh ch X c gi l my X terminal. Nhng bn thn chng trnh ch X khng to ra (v ra) hnh nh trn mn hnh m ch cung cp hnh nh cho driver cc hnh. Nu ch chy chng trnh ch X th bn s ch thy mt mn hnh mu xm vi mt du X gia. C th di chuyn du X ny quanh mn hnh chut. V l tt c nhng g bn c th lm. Nhn cc nt chut v bn phm khng em li li ch g. Tuy nhin ngay lc ny chng trnh ch X sn sng chuyn nhng tn hiu (nhn phm, nhn chut) n cc chng trnh khch, nhng tm thi cha c chng trnh khch no. Lc ny vn c mt s t hp phm c X x l. l <Ctrl>+<Alt>+<Backspace> dng dng lm vic chng trnh ch X (nu khng b i kh nng ny trong cu hnh), <Ctrl>+<Alt>+<+> v <Ctrl>+<Alt>+<> chuyn nhanh gia cc ch hin th, tc l phn gii v tn s mn hnh v cc t hp phm quen thuc <Control>+<Alt>+<Fm> chuyn v ch vn bn vo terminal o s m. a ra mn hnh mt hnh nh no c ngha hn th ch mt mnh chng trnh ch X l khng . Ngoi n ra chng ta cn chy mt trnh qun l ca s v t nht mt chng trnh khch to hnh nh trn mn hnh. Chng trnh khch ca ch X c th l cc ng dng lm vic di X Window, v d chng trnh son tho vn bn OpenOffice.org Writer, chng trnh ho GIMP, cc chng trnh gi lp terminal nh xterm, urxvt, konsole,. . . Nm gia chng trnh khch v chng trnh ch X cn c hai thnh phn quan trng na ca giao din ho, l th vin cc hm ho Xlib v trnh qun l ca s (xem hnh 7.1). Th vin Xlib gm cc hm ha cho php thc hin cc thao tc bc thp vi cc hnh mu ho. Trnh qun l ca s gi cc hm trong Xlib iu khin mn hnh v thc hin bt k thao tc chuyn i hnh nh no trong cc ca s.

Hnh 7.1: Kin trc ca h thng ho X Window System3 .

Khi mt ng dng X khi ng, ca s s chuyn quyn iu khin n trnh qun l ca s. Trnh qun l ca s cung cp cc phng tin thc hin tt c cc thao tc vi cc ca s, bao gm: v khung ngoi, trnh n (menu), cc

7.1 X.Org

165

biu tng, thanh cun ln, xung v cc thnh phn khc ca ca s, ng thi cn cung cp kh nng thay i dng v v tr cc ca s trong qu trnh lm vic ty theo nhu cu ca ngi dng. Trnh qun l ca s cn gi cc hm tng ng cho cc chng trnh khch trong trng hp ngi dng thao tc vi cc ng dng bng bn phm v chut. Chnh v th khi cu hnh X.org ngoi cc mn hnh cn phi a ra cc tham s ca chut v bn phm. Trnh qun l mn hnh cn bit cc tham s ca cc thit b ny thc hin cng vic ca mnh. Cc mi trng lm vic ho m rng nh KDE, GNOME, Xfce4, CDE, GNUStep, v.v. . . khng thay th nhng thnh phn k trn ca h thng X Window, m ch m rng v thm vo. V d, KDE thm vo th vin cc hm ho QT b sung cho Xlib. GNOME s dng th vin GTK+ (by gi l GTK2+). Chnh th vin ny l nn tng ca chng trnh ho GIMP. Ngoi ra trong GNOME cn c cc th vin khc nh Imlib cho php m rng cc kh nng ca h thng ha. Bi v ch v khch l cc tin trnh ring, nn chng c th chy trn cc my tnh khc nhau v trao i vi nhau qua mng. V d cc chng trnh ng dng c th chy trn mt my ch mnh (mainframe), cn hnh nh s hin th trn mn hnh my tnh c nhn. c im rt mnh ny ca h thng X Window l mt trong nhng khc bit ca n so vi giao din ho ca cc h iu hnh dng Windows. Ngoi ra trn Linux v UNIX ni chung khng c s phn bit r rng gia cc chng trnh giao din ho v giao din vn bn (dng lnh) nh trong Windows. i vi h thng th khng c s khc nhau gia chng trnh lm vic trong ch ho v trong ch bnh thng. Chng trnh cho ch ho cng c chy nh cc chng trnh bnh thng, tc l t dng lnh, t chng trnh Midnight Commander, v.v. . . iu kin duy nht cn phi c l chng trnh ch X phi lm vic. Nu cn chng trnh s t tm n chng trnh ch X qua TCP/IP ni chung v qua socket ni b khi chng trnh ch v khch lm vic trn cng mt my. Chng trnh thc hin vic ny bng cch gi cc hm th vin trong Xlib. Tt c nhng g chng trnh cn bit lm vic l ni tm chng trnh ch X. Tm kim chng trnh ch X c thc hin qua bin mi trng DISPLAY hoc qua ty chn trn dng lnh. Ngoi ra cn c nhng chng trnh c th lm vi c chng trnh ch X v vi c terminal thng thng. V d chng trnh son vn bn emacs t ng chn ch lm vic ( ho hay vn bn) khi khi ng. Tt nhin nhng g a ra trong hnh 7.1 ch l tng i. V d chng ta ni rng trao i gia th vin Xlib vi chng trnh ch X trong trng hp chung c thc hin qua giao thc TCP/IP. Nh vy l trong hnh v b qua nhng chng trnh ng dng ca giao thc TCP/IP. V cn mt ti nguyn quan trng khc ca h thng ho l phng ch. Chng trnh ch X c th thao tc vi phng ch mt cch trc tip, hoc c mt chng trnh khc chuyn dng cho vic ny (c gi l chng trnh ch phng ch), v cng cn phi thm vo hnh v trn. X.org c mt chng trnh ch X cho phn ln cc mn hnh. Chng trnh ny c gi l xorg v nm trong th mc /usr/X11R6/bin. Thng thng c mt lin kt n chng trnh ch ny vi tn X, do c th chy chng trnh

166 ch X bng cu lnh: [user]$ X

Giao din ho

Trnh qun l ca s th c rt nhiu, bn c c th chn bt k chng trnh no trong s chng. La chn trnh qun l ca s no ph thuc nhiu vo cu hnh my tnh ca bn (my mnh hay yu, cc mn hnh c nhiu b nh hay khng), v yu cu cng vic. Xin a ra y mt vi v d trnh qun l ca s thng dng: IceWM (http://www.icewm.org) trnh qun l ca s nh nh v lm vic rt nhanh. Trnh qun l ca s ny ang c rt nhiu ngi dng c kinh nghim a chung. Fluxbox (http://www.fluxbox.org) mt trnh qun l ca s gn nh khc, lm vic tng i nhanh v cng c ngi dng c kinh nghim a chung. Chnh trnh qun l ca s ny c dng trn nhiu bn phn phi Linux dng LiveCD (Linux sng v lm vic trn CD) nh: Damn Small Linux, Insert. WindowMaker (http://www.windowmaker.org) trnh qun l ca s gn nh nhiu mu sc v mm do trong cu hnh k tha ca AfterStep. Mt c im th v ca WindowMaker l cc trnh nh applet thc hin nhiu chc nng khc nhau: theo di h thng, theo di mng, ng h, v.v. . . Nu mun v c s h tr th bn c th s dng nhng trnh nh applet ny trong cc trnh qun l ca s khc nh Fluxbox. enlightment (http://www.enlightment.org) trnh qun l ca s p nht hin nay, c rt nhiu ty chn cu hnh bn c th thay i. fvwm2 (Free Virtual Window Manager 2) phin bn nng cp ca trnh qun l ca s fvwm cho php s dng cc sc thi (theme) khc nhau v trnh n ng. Trang ch ca FVWM v FVWM2 nm ti a ch http: //fvwm.org/. Cc trnh qun l ca s khc nhau c th cho ra dng ca s khc nhau bng cch s dng cc khung v trnh n ca s khc nhau. Nhng tt c chng u s dng cng mt tin ch ho c s ca X Window, l chng trnh ch X. Nh vy l bn c bit c giao din ho trn Linux c to ra t nhng thnh phn g. Nh bn thy giao din ho trn Linux c to ra theo nguyn tc mun, v c th t xy dng nhiu kiu giao din ho t cc thnh phn khc nhau. Nhng i vi ngi dng mi (v rt mi) th y khng phi l cch d nht. Rt may l khng nht thit phi chn cch ny, v c trn tt c cc bn phn phi ln cc mi trng lm vic ho. Ni ting nht trong s cc mi trng ho ny cn k n KDE (http://www.kde.org) m chng ta s nghin cu su hn trong chng sch tip theo v GNOME (http://www.gnome.org). Ngoi ra cng cn ni n mi trng lm vic ho gn nh hn v cng chim c s yu mn ca rt nhiu ngi dng, l Xfce4 (http://www.xfce.org). Tt c nhng mi trng lm vic ho ny

7.2 Mt cht v h thng hnh nh ca my tnh

167

u c h tr ting Vit tt (hoc cn cha tt), do cng d dng hn (hoc kh khn hn cho ai ?) cho bn c trong khi s dng. Nn tng ca mi trng lm vic ho KDE (K Desktop Enviroment) l th vin cc hm ho m rng Qt ca cng ty Troll Tech (http://www.qt.com). Bng th vin ny cc nh pht trin KDE vit ra trnh qun l ca s ring kwm, trnh qun l tp tin kfm, trung tm iu khin KDE v rt nhiu thnh phn khc bao gm c gi chng trnh ng dng cho vn phng KOffice. Tt nhin iu ny khng c ngha l tt c cc thnh phn ca mi trng KDE l do mt cng ty no vit ra v pht trin, m nhiu nh lp trnh cng s dng mt cch mt tng pht trin chung to ra cc ng dng khc nhau. Kt qu thu c l mt b y cc chng trnh ng dng cho php gii quyt tt c cc nhu cu iu khin my tnh v lm vic ca ngi dng. Trong cc phin bn mi ca KDE cn c thm trnh qun l tp tin v cng l trnh duyt web Konqueror (http://konqueror.kde.org) c nhiu kh nng mnh trong vic truy cp n cc tp tin. Ngoi ra Konqueror cn cho php xem trc tip cc tp tin c nh dng (phn m rng) bit, kh nng duyt web cng khng thua km cc trnh duyt khc nh Internet Explorer.4 Mt mi trng lm vic ho c cng ng cp vi KDE l GNOME (GNU Network Object Model Environment). GNOME c pht trin trong khun kh ca d n GNU, c ngha l chng trnh ng dng t do. GNOME c xy dng da trn th vin cc hm ho GTK+ (by gi l GTK2+, phin bn 2 ca th vin GTK). Cn c nhiu mi trng lm vic ho khc nhng cha t c mc pht trin mnh nh KDE v GNOME. Trong s chng cn ni n Xfce4 (http://www.xfce.org). Phin bn 4.4 ca Xfce4 ha hn nhiu thay i ln, trong s cn k n trnh qun l tp tin Thunar v cc m rng (plugin) ca n. Cc bn phn phi Linux mi hin nay cho php ci t v cu hnh giao din ho mt cch d dng hn rt nhiu so vi trc y. Chng trnh ci t ca Debian Linux, openSUSE Linux, Fedora Core, v.v. . . c kh nng t ng xc nh dng cc hnh, dng mn hnh v t ng chn cc tham s ( phn gii, tn s cp nht) thch hp. Tuy nhin ti xin a ra y mt vi li khuyn khi cu hnh X Window v rt c th bn c s gp vn no , v d chng trnh ci t xc nh dng mn hnh khng ng v do dng nhng tham s khng thch hp. u tin chng ta cn bit mt cht v cng vic ca h thng hnh nh ca my tnh.

7.2

Mt cht v h thng hnh nh ca my tnh

Nh bn c hiu khi thy u ca phn ny, y khng phi l hng dn chi tit dnh cho cc nh chuyn mn, m ch l nhng kin thc c bn v h thng hnh nh ca my tnh gip ngi dng mi v rt mi hiu c cch lm vic ca h thng hnh nh, th no l tn s, phn gii mn hnh,
Cch y mt thi gian KDE c cng nhn l phn mm t do. Vn ny xy ra trc y l do th vin Qt thuc v cng ty thng mi. Nhng cng ty Troll Tech a ra thng bo cho php dng th vin ny vnh vin min ph pht trin cc ng dng m ngun m.
4

168

Giao din ho

v.v. . . c th chn cc tham s thch hp trong khi cu hnh. H thng hnh nh ca my tnh bao gm cc hnh (video card) v mn hnh (monitor), chng ta s ch xem xt trng hp mn hnh ng in t (CRT) m khng xem xt mn hnh tinh th lng (LCD). Nh bn c bit, hnh nh trn mn hnh c to ra t cc im ring bit. im c to ra nh cc chui electron v cc im nm dng dng nm ngang. Mn hnh thc hin hai cng vic ring bit: tri cc chui (tia) electron v chiu sng cc im ring bit to ra hnh nh. iu khin mn hnh c ngha l a ra s im trn mt dng ( phn gii theo chiu ngang), s dng trn mn hnh ( phn gii theo chiu dc) v cng (intensity) ca mi mu (trong s ba mu chnh) trn tng im. Chc nng iu khin mn hnh l do cc hnh thc hin. Cc hnh chuyn ti mn hnh 3 tn hiu: tn hiu hnh (RGB), ng b dng (HS) v ng b nh (ct, VS). Khi c tn hiu ng b dng (theo chiu ngang) tia electron s c chuyn t cui mi dng ti u dng tip theo, cn khi c tn hiu ng b nh (theo chiu dc) th s chuyn tia electron t gc di bn phi v gc trn bn tri. Cn phi bit tn s to ra hai tn hiu ny, tnh theo s tn hiu trong mt giy, c th cu hnh ng chng trnh ch X. Gi tr tn s ng b ngang v dc ny nht nh c trong ti liu i km vi mn hnh. Tn s ng b dc thng k hiu l VSF v c n v l Hz (Hc), gi tr ca VSF nm trong khong 50 180 Hz. Tn s ng b ngang, HSF, c n v l KHz (1kilhc = 1000 hc) v nhn gi tr trong khong t 31 n 135 KHz. Nhng mn hnh mi thng l mn hnh c nhiu tn s hay cn ni l c gii tn s rng, c ngha l bn c th chn cc tn s dc v ngang t mt vng cc gi tr cho php no . Mt s mn hnh nht l mn hnh r tin c th ch c mt vi gi tr tn s cho php. Tt nhin tt nht l chn gi tr ln nht trong s c th dng, nhng hy cn thn v nu chn gi tr cao qu mc th c th lm hng mn hnh. Cn c mt tn s quan trng khc na, l s im c th hin th trn mn hnh trong mt giy. Tia electron di chuyn qua mn hnh theo mt vn tc c hn do b vi x l ca cc hnh xc nh. Tn s ny c gi l DCF (Dot Clock Frequency tn s lm vic ca cc hnh). Mt tham s cng quan trng na l tn s cp nht mn hnh SRR (Screen Refresh Rate). Gi tr ny cng cao bao nhiu th mt ca ngi dng cng t mi mt by nhiu trong khi lm vic vi my tnh, v khi s gim mc nhp nhy ca mn hnh. Khng nn chn tn s cp nht mn hnh nh hn 60Hz, khi n hunh quang s nhp nhy rt mnh. Tiu chun VESA khuyn chn gi tr ny ln hn hoc bng 72Hz. Nhng cng khng th a ra mt tn s cp nht mn hnh qu ln, v tn s ny khng th ln hn gi tr ca phn s:
DCF (s im trn dng) * (s ct trn mn hnh)

tc l c s ph thuc vi phn gii (resolution) ca mn hnh. Trn thc t tn s cp nht cn nh hn na v cn mt thi gian di chuyn cc tia electron t dng ny sang dng khc, t cui mn hnh ln u mn hnh. Ngoi ra to ra hnh nh sc nt trn mn hnh, tia electron cn di chuyn qu sang tri, sang phi, ln cao, xung thp hn mt cht so vi hnh nh (to ra 4 dng v ct ti xung quanh hnh nh). Cn ni thm tn s cp nht mn hnh bng tn

7.3 Cu hnh chng trnh ch X

169

s ng b dc (SRR = VSF). Nh vy, tn s ng b dc VSF v tn s lm vic ca cc hnh DCF xc nh gi tr gii hn (ln nht) ca phn gii. Cn c mt gii hn na ph thuc vo dung lng b nh ca cc hnh s lng mu ca hnh nh. Trn cc mn hnh mu, mi im c chiu sng ng thi bi 3 tia electron. Mu ca im c xc nh bi s pha trn ca ba mu c bn: (Red), xanh l cy (Green) v xanh da tri (Blue) RGB. Cng ca mi mu ny li c xc nh bi mc ca tn hiu trong tia tng ng. Hnh nh s a ra mn hnh c to ra trong b nh ca cc hnh. B nh ny nm trn cc hnh nhng thuc v khng gian b nh chung ca c my tnh. Hnh nh c lu trong b nh dng s v s chuyn i hnh nh v dng tn hiu tng t (analog) RGB l mt trong nhng cng vic chnh ca cc hnh. Cng vic ny l do mt b phn trn cc hnh m nhim, l b chuyn i s tng t. S lng mu c th dng cho mi im c gii hn bi dung lng b nh cc hnh cng nh s mc tn hiu m cc hnh c th to ra cho mi tia electron. Nhng thng thng cc hnh c th to ra mt s lng mc tn hiu hin th hnh nh, do tham s quyt nh y l dung lng b nh. Cng thc xc nh gii hn phn gii v s lng mu trn hnh nh rt n gin:
(Dung lng b nh, byte) (S im trn dng) * (s ct trn mn hnh) * (s byte trn mt im)

V d, nu bn c mun chn phn gii mn hnh 1280 x 1024 v c 32 triu mu cho mi im, tc l 8 byte cho mi im, th cn c mt cc hnh vi dung lng b nh t nht l 1280 1024 4 = 10485760 byte (10Mb). Tt c nhng cc hnh mi p ng c (thm ch cn vt qu) yu cu ny. Nu c mt cc hnh c vi dung lng b nh t hn th cn phi chn phn gii nh hn hoc chn s lng mu t hn. Ti ngh rng bn c th t la chn mt phn gii v s lng mu thch hp cho my tnh ca mnh. Cn by gi chng ta s xem xt phn thc hnh ca nhng l thuyt a ra, tc l cu hnh giao din ca Linux.

7.3

Cu hnh chng trnh ch X

Chng ta s xem xt trng hp sau khi ci t Linux bn khng th chuyn vo ch ho (rt him khi xy ra vi cc bn phn phi Linux mi), hoc khng hi lng vi nhng g mnh thy trn mn hnh giao din ho. Nu bn ri vo tnh hung th nht trong qu trnh khi ng my, th hy chn khi ng vo ch mt ngi dng c kh nng thay i cu hnh X. Chng ta s bit c cch chuyn ch khi ng trong mt vi chng ti. Nu bn khng hi lng vi hnh nh ca giao din ho, hoc khng th vo ch ho, nhng vn c th truy cp ti my tnh bng ch vn bn (giao din dng lnh), th vn c th s dng mt cu lnh v chng trnh ca Linux cu hnh li chng trnh ch X. Chng ny coi nh bn ci t X.org, v tt c nhng tp tin (chng trnh) ni n pha sau c trn a. Nu khng th u tin bn phi ci t gi chng trnh X.org. Cch ci t chng trnh s c trong chng khc dnh ring cho phn ci t chng

170

Giao din ho

trnh. Hy vng rng nhng thng tin di y gip bn cu hnh thnh cng giao din ho, hoc n gin l gip bn hiu hn v giao din ny v cch cu hnh n nu bn c mt h thng X Window lm vic tt. Nhng xin bn hy lun nh l cun sch bn ang c s dng bn quyn Creative Commons Public License 2.5 (http://creativecommons.org/licenses/by/2. 5/). Tc gi khng chu trch nhim v nhng g s xy ra. Hy cn thn trong khi lm vic!

7.3.1

Thu thp thng tin cn thit

c th cu hnh bn cn mt vi d liu sau: Tn ca hng sn xut cc hnh v mn hnh. Thng ly t ti liu i km vi chng, nu khng c th cng c th xem trc tip trn thit b. Dng ca b x l trn cc hnh (chp). Cn xc nh dng chp chn mun ng cho cc hnh. V d, chp ca hng Nvidia thng cn np mun nv. Dung lng b nh ca cc hnh. Khong tn s ng b ngang v dc cho php dng ca mn hnh. Ly t ti liu i km vi mn hnh, nu khng c ti liu th bn cn tm nhng thng tin ny trn Internet, d dng nht l trn trang web ca nh sn xut. Hai tham s ny l quan trng. Dng chut v bn phm. Lm vic trong giao din ho m khng c chut th khng thun tin cht no, v nu khng bn phm th cng khng th lm vic vi my tnh ni chung. V th cn phi cu hnh chng trnh ch X s dng nhng thit b ny. C nhiu cch ly nhng thng tin ny. Cch d dng nht cho ngi dng mi l khi trn my c mt h iu hnh Windows. Nhng thng tin bn cn c trong Trnh qun l cc thit b. Cch chy chng trnh ny khng thuc vo phm vi ca cun sch ny v chng ta ang ni v h iu hnh Linux. Bn c th tm thy thng tin trong bt k cun sch no ni v h iu hnh Windows. Nu trn my ca bn cha c bt k h iu hnh no th hy s dng mt h iu hnh Linux LiveCD (chy thng t CD) c kh nng nhn dng phn cng tt nh Knoppix. Sau khi khi ng Knoppix thnh cng hy sao chp tp tin cu hnh chng trnh ch X ca Knoppix (thng nm ti /etc/X11/xorg.conf ln a mm hoc flash sau ny c th c li. V cch c thng tin t tp tin cu hnh X.org (cu trc ca tp tin ny) chng ta s xem xt ngay di y. Ngoi ra c nhng chng trnh chuyn dng cho vic ly cc d liu cn thit k trn, v d bash script mkxf86config do cc nh pht trin Gentoo vit ra. Bn c th tm thy script ny trn mng Internet. Tuy nhin ti hy vng l cc bn s khng phi s dng n nhng tin ch ny cng nh nhng phng n k trn (s dng h iu hnh khc, s dng Knoppix): tt c nhng thng tin bn cn c trong ti liu i km vi my tnh.

7.3 Cu hnh chng trnh ch X

171

7.3.2

Cu trc ca tp tin cu hnh X

Tp tin cu hnh chng trnh ch X thng nm ti /etc/X11/xorg.conf. Khi khi ng v nu khng ch r tp tin cu hnh trn dng lnh th chng trnh ch X u tin s tm tp tin cu hnh ti th mc ca ngi dng, tc l ti /xorg.conf. Nu khng thy tp tin ny th chng trnh ch X s dng cu hnh chung ca ton b h thng nm trong th mc /etc nh ni trn (nu c). Tp tin cu hnh X ch l mt tp tin vn bn (text file) bnh thng, do c th s dng bt k trnh son tho vn bn no thay i n. V y cng chnh l cch cc nh qun tr h thng c kinh nghim s dng cu hnh giao din ho. Tuy nhin, c nhng chng trnh, tin ch chuyn dng cho vic ny, v chng ta s s dng chng trong thi gian u mi lm quen vi Linux. Cng khng cn phi to tp tin xorg.conf t u. Nu trong khi ci t bn c chn ci t giao din ho X th trn my c tp tin cha cu hnh X ng (v c th khng). Nu v nguyn nhn no bn ci t X.org ring sau khi ci t Linux, th hy chy mt trong nhng chng trnh cho php bn to ra tp tin ny. to ra tp tin cu hnh X mt cch t ng hy s dng chng trnh Xorg vi ty chn -configure. Ch cn chy cu lnh sau (hy ch l cn c quyn ngi dng root: [root]# Xorg -configure Cu lnh ny s lm vic mt cch im lng, sau khi hon thnh n s to ra tp tin xorg.conf v t tp tin ny vo th mc /etc/X11. Xin ng qun cu lnh Xorg khc vi cu lnh xorg! Nh ni t trc trn Linux ch thng v ch hoa c s khc nhau r rng. Tuy nhin rt c th bn s mun t to cho mnh mt tp tin cu hnh ring, hoc n gin l mun kim sot qu trnh ny. Trong XFree86 phin bn th 4, tin ch chnh dng t to mt tp tin cu hnh (XF86Config-4) l chng trnh xf86config (i khi xf86cfg). Trong X.org chng trnh ny c thay th bng xorgconfig. Trn thc t theo ti thy th hai chng trnh ny khng c g khc nhau, ch c iu xorgconfig sau khi hon thnh cng vic s to ra xorg.conf ch khng phi XF86Config-4 nh trng hp xf86config. Trn dng lnh hy chy: [root]# xorgconfig ri tr li nhng cu hi m chng trnh ny t ra. Nu khng mun tip tc th hy nhn <Ctrl>+<C> thot ra. Cn mt tin ch khc c th dng cu hnh my ch X, l xorgcfg. Nhng chng trnh l ng dng ho, tc l ch chy trn nn mt my ch X chy no (hnh 7.2), do khng c ch trong trng hp bn cha c mt cu hnh X no. Hy c cc trang hng dn s dng man tng ng xorgconfig(1) v xorgcfg(1) bit thm chi tit. Ngoi ra, mi bn phn phi hin i c mt cng c cu hnh ring ca mnh, i khi rt mnh. V d bn phn phi OpenSUSE c sax2. Hy s dng nhng chng trnh ny. Chng s gip bn tit kim c nhiu thi gian.

172

Giao din ho

Hnh 7.2: Cu hnh X.org qua xorgcfg

Bng mt trong nhng cng c trn bn to ra c tp tin cu hnh xorg.conf. Chng ta s xem tp tin ny trng nh th no (c ngha l dng cu lnh xem tp tin more hoc less hoc dng mt chng trnh son tho vn bn nh vim m n). Di y l v d mt tp tin xorg.conf c trn my ca ti sau khi ci t openSUSE Linux 10.1:
# # # # # Version: 7.1 Contact: Marcus Schaefer <sax@suse.de>, 2005 Contact: SaX-User list <https://lists.berlios.de/mailman/listinfo/sax-users> Automatically generated by [ISaX] (7.1)

Section "Files" InputDevices "/dev/gpmdata" InputDevices "/dev/input/mice" FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/local" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1" FontPath "/usr/X11R6/lib/X11/fonts/URW" FontPath "/usr/X11R6/lib/X11/fonts/truetype" FontPath "/usr/X11R6/lib/X11/fonts/uni:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/CID" FontPath "/opt/kde3/share/fonts" FontPath "/usr/local/share/fonts" EndSection

7.3 Cu hnh chng trnh ch X


Section "ServerFlags" Option "AllowMouseOpenFail" "on" EndSection Section "Module" Load "dbe" Load "type1" Load "freetype" Load "extmod" Load "glx" Load "v4l" EndSection Section "InputDevice" Driver "kbd" Identifier "Keyboard[0]" Option "Protocol" "Standard" Option "XkbLayout" "us" Option "XkbModel" "pc104" Option "XkbRules" "xfree86" EndSection Section "InputDevice" Driver "mouse" Identifier "Mouse[1]" Option "Buttons" "10" Option "Device" "/dev/input/mice" Option "Name" "Logitech USB Receiver" Option "Protocol" "explorerps/2" Option "Vendor" "Sysp" Option "ZAxisMapping" "4 5" EndSection Section "Monitor" DisplaySize 345 259 HorizSync 30-96 Identifier "Monitor[0]" ModelName "SYNCMASTER 757NF(T)/707NF/700NF" Option "DPMS" VendorName "SAMSUNG" VertRefresh 50-160 UseModes "Modes[0]" EndSection

173

Section "Modes" Identifier "Modes[0]" Modeline "1280x1024" 167.32 1280 1376 1512 1744 1024 1025 1028 1078 Modeline "1280x1024" 165.29 1280 1376 1512 1744 1024 1025 1028 1077 Modeline "1280x1024" 163.41 1280 1376 1512 1744 1024 1025 1028 1077 Modeline "1024x768" 135.41 1024 1104 1216 1408 768 769 772 822 Modeline "1024x768" 132.57 1024 1096 1208 1392 768 769 772 821 Modeline "1024x768" 131.43 1024 1096 1208 1392 768 769 772 821 Modeline "800x600" 97.59 800 856 944 1088 600 601 604 650 Modeline "800x600" 96.89 800 856 944 1088 600 601 604 650 Modeline "800x600" 96.18 800 856 944 1088 600 601 604 650 EndSection

174
Section "Screen" DefaultDepth 24 SubSection "Display" Depth 15 Modes "1280x1024" "1024x768" EndSubSection SubSection "Display" Depth 16 Modes "1280x1024" "1024x768" EndSubSection SubSection "Display" Depth 24 Modes "1280x1024" "1024x768" EndSubSection SubSection "Display" Depth 8 Modes "1280x1024" "1024x768" EndSubSection Device "Device[0]" Identifier "Screen[0]" Monitor "Monitor[0]" EndSection

Giao din ho

"800x600"

"800x600"

"800x600"

"800x600"

Section "Device" BoardName "GeForce4 MX 440 with AGP8X" BusID "1:0:0" Driver "nvidia" Identifier "Device[0]" VendorName "NVidia" EndSection Section "ServerLayout" Identifier "Layout[all]" InputDevice "Keyboard[0]" "CoreKeyboard" InputDevice "Mouse[1]" "CorePointer" Option "Clone" "off" Option "Xinerama" "off" Screen "Screen[0]" EndSection Section "DRI" Group Mode EndSection

"video" 0660

Section "Extensions" EndSection

Cn phi ni rng nhng thng tin m chng trnh ci t ca openSUSE d tm ra l chnh xc. C th bn c nhn thy l trn Linux nhng tp tin cu hnh c cu trc tng t nh nhau. Nhng dng u tin thng l nhng dng ch thch khng c nh hng g n chng trnh. Nhng dng ny c k t u tin l # v mt khong trng sau k t ny. Tp tin xorg.conf bao gm mt vi phn nh hn, mi phn c cu trc nh sau:

7.3 Cu hnh chng trnh ch X


Section "tn_ca_phn_ny" SectionEntry1 SectionEntry2 SectionEntry3 EndSection

175

Cc phn c th nm trong tp tin cu hnh theo th t bt k. Trong tp tin cu hnh c th c cc phn sau (khng nht thit phi c tt c chng): Files ng dn n cc tp tin. ServerFlags ty chn ca chng trnh ch. Module cc mun np t ng. InputDevice m t cc thit b nhp vo. Monitor m t mn hnh. Modes m t cc ch hnh nh. Screen cu hnh mn hnh. Device m t cc hnh (video card). ServerLayout cu hnh chung. DRI cu hnh DRI. Vendor cu hnh cho cc thit b ca cc nh sn xut c th no . Extensions phn cu hnh m rng. Cng c th gp hai phn hoc nhiu hn c cng mt dng (V d Screen), tuy nhin khi chng phi c tn ring khng trng nhau. Phn ServerLayout c u tin cao nht, tc l chng trnh ch X bt u c tp tin cu hnh xorg.conf t y. Phn ny xc nh nhng thit b vo/ra (input/output) no s c s dng trong giao din ho X. Thit b nhp vo thng l bn phm v chut, chng c xc nh trong cc phn InputDevice, mi phn cho mt thit b. Thit b ra gm cc thnh phn ring bit l cc hnh v mn hnh thng c nhm li vi nhau trong phn Screen. Trong phn ServerLayout phi c cc dng ch n cc phn ca thit b va ni n. Nh vy, phn ServerLayout phi cha t nht nhng dng sau: Section "ServerLayout" Identifier "Layout[all]" InputDevice "Keyboard[0]" "CoreKeyboard" InputDevice "Mouse[1]" "CorePointer" Screen "Screen[0]" EndSection

176

Giao din ho

Phn Screen xc nh mn hnh v cc hnh s dng, ng thi a ra cc ch lm vic ca mn hnh ( phn gii v s lng mu). Phn ny c dng nh sau: Section "Screen" DefaultDepth 24 SubSection "Display" Depth 15 Modes "1280x1024" "1024x768" EndSubSection SubSection "Display" Depth 16 Modes "1280x1024" "1024x768" EndSubSection SubSection "Display" Depth 24 Modes "1280x1024" "1024x768" EndSubSection SubSection "Display" Depth 8 Modes "1280x1024" "1024x768" EndSubSection Device "Device[0]" Identifier "Screen[0]" Monitor "Monitor[0]" EndSection

"800x600"

"800x600"

"800x600"

"800x600"

Nh bn thy, phn ny cho bit cc mn hnh c dng l thit b c tn Device[0], tc l GeForce4 MX 440 with AGP8X c xc nh trong phn Device, v mn hnh c s dng c tn Screen[0] (SAMSUNG SYNCMASTER 757NF(T)/707NF/700NF), xc nh trong phn Monitor. Phn Screen cn c th cha mt vi phn con (Subsection) Display tng ng vi mt gi tr su mu5 mn hnh.6 Trong mi phn con, ngi dng cn t nhng ch hin th mun dng vi su mu tng ng. Cc ch c lit k theo tn ly t phn Modes, tn ny nm ngay sau t Modeline, v d, "1280x1024", "1024x768", "800x600". Nh vy, i vi ngi dng th ngha ca ch hin th trng vi phn gii ca mn hnh. My ch X s s dng ch u tin nm trong danh sch theo mc nh. chuyn sang s dng nhng ch khc hy th nhn cc t hp phm <Ctrl>+<Alt>+<+> v <Ctrl>+<Alt>+<>, trong phm <+> v phm <> nm trn bn phm s. Phn Monitor xc nh tham s ca mn hnh cng c hai ty chn (hai dng) quan trng, l:
color depth su mu mn hnh thng tnh theo bit v thng nhn cc gi tr 8, 15, 16, 24. Gi tr ny cng cao th s lng mu c th hin th cng ln v hnh nh cng p. Tuy nhin cc mn hnh v bn thn mn hnh phi tt c th h tr nhng gi tr su mu ln. su mu mc nh nm trn dng DefaultDepth.
6 5

7.3 Cu hnh chng trnh ch X HorizSync VertRefresh 30-96 50-160

177

xc nh tn s cp nht ngang (HorizSync) v dc (VertRefresh). y tn s cp nht ngang v dc c th nm tng ng trong khong 3096, 50160. Nu mun t mt s c th no thay cho nhng khong th c th sa thnh: HorizSync VertRefresh hoc: HorizSync VertRefresh 80, 90 124, 138 80 100

nu mun c thm hai la chn hoc nhiu hn. Tn s cp nht mn hnh theo chiu ngang HorizSync tnh theo KHz cn tn s cp nht dc VertRefresh tnh theo Hz. Cn phi xem xt ti liu ca mn hnh a ra nhng gi tr chnh xc. Nu khng c ti liu ny th hy tm kim trn CD i km hoc trn trang Web ca nh sn xut. Phn tip theo l Device m t cc mn hnh ca bn. Trong phn ny quan trng nht l dng ch ra driver. Trn my ca ti dng ny c dng: Driver "nvidia"

Tc l ti s dng cc mn hnh vi chip ca hng NVIDIA v ci t driver ly v t trang Web ca hng ny. Driver gc ca X.org cho cc cc mn hnh nvidia c tn ngn hn nv. Hai phn InputDevice xc nh chut v bn phm. Hin nay ph bin cc bn phm c 104 phm v Linux h tr tt cc bn phm ny, do ty chn Option "XkbModel" "pc104" lm vic trong a s trng hp. Cc mi trng lm vic nh KDE, GNOME, Xfce u c cc cng c la chn kiu bn phm, thay i cc thuc tnh ca bn phm nh tc lp li (repeat rate), t li gi tr ca cc phm, do lc ny khng cn thit phi tm hiu su v cu hnh k cho phn ny. Cng ni lun, g ting Vit th tt nht l s dng mt chng trnh chuyn dng nh xvnkb, x-unikey hoc scim. Chng ta s quay tr li vi ting Vit trong mt chng sau. Trong phn InputDevice tng ng vi chut hy ch n 3 dng (ty chn) sau: Option Option Option "ZAxisMapping" "4 5" "Protocol" "PS/2" "Device" "/dev/input/mice"

Nu khng c tu chn ZAxisMapping vi gi tr 4 5, th chng ta s khng dng c nt bnh xe ca chut ko ln ko xung cc trang Web. Ty chn Protocol xc nh giao thc lin lc vi chut. Nu chut c kt ni vo mt cng dnh ring cho n, th tham s Protocol s c gi tr l PS/2 hoc mt t di hn kt thc bng PS/2. Trong trng hp ca ti l explorerps/2. Nhng

178

Giao din ho

giao thc cn li s dng cho chut kt ni qua cng tip ni (cng COM). Nu chut mi c sn xut th cn c th dng gi tr Auto (t ng xc nh) y. Khng cn gii thch chc bn cng nhn ra l ty chn Device xc nh tn tp tin thit b ca chut. Cui cng, phn Files ca tp tin xorg.conf thng nm u tp tin ny v xc nh ng dn n cc th mc phng ch. C mt vi cch a ra nhng th mc ny. Tuy nhin trc khi thm mt th mc phng ch mi cn kim tra li xem th mc ny c tn ti khng v c phi l th mc phng ch khng7 . Nu khi chy my ch X khng tm thy mt th mc phng ch no trong phn Files, th n s a ra cnh bo. y khng phi l li nghim trng phi dng lm vic, nhng ngi dng cn bit gii quyt nhng trng hp nh khng tm thy phng ch mong mun.

7.3.3

Th cu hnh /etc/X11/xorg.conf

Nh ni trn, c nhiu cch to ra xorg.conf, bng cu lnh: [root]# Xorg -configure to mt cch t ng hoc [root]# xorgconfig c th kim sot qu trnh ny. Sau khi to tp tin xorg.conf thng thng s nm trong th mc /etc/X11. y l th mc tiu chun (chuyn dng) cho nhng cu hnh c lin quan n my ch X. By gi hy th chy giao din ho bng cu lnh X (vit hoa). Xin ch y ch l lin kt mm n chng trnh my ch Xorg8 , do cn phi c lin kt mm ny hoc c th th chy thng: [user]$ Xorg Nu thnh cng, bn s thy mt con tr chut hnh ch X gia mn hnh v c th b qua nhng dng di y. Nu thy mt mn hnh mu en, hoc mn hnh nhp nhy, tc l cu hnh va to c vn , hy nhn t hp phm <Ctrl>+<Alt>+<Backspace> quay v ch vn bn. T hp phm ny s gip bn dng chy my ch X trong nhng trng hp c vn , v d khi my ch X khng tr li (khng lm vic), do hy nh n. Tuy nhin ng vi vng s dng t hp phm <Ctrl>+<Alt>+<Backspace>, v rt c th cn mt cht thi gian chuyn vo giao din ho. C kh nng nhng tham s khng ng s lm hng mn hnh ca bn hoc dn n nhng hu qu khng lng trc, do khng nn th cu hnh X.org bng cch k trn tr khi bn chc chn l mnh ng. Tt hn ht l kim tra tp tin cu hnh xorg.conf to ra xem c nhng li nguy him no khng. thc hin cng vic kim tra ch cn dng cu lnh:
Th mc phng ch phi c tp tin fonts.dir thng do cu lnh mkfontdir trc tip hoc dn tip to ra. Cu lnh file fonts.dir cho bit fonts.dir ch l mt tp tin vn bn thng thng nhng khng nn t sa i n. Hy dng chng trnh va nhc ti lm vic ny 8 Bn c th kim tra li iu ny bng cu lnh ls -l
7

7.3 Cu hnh chng trnh ch X [user]$ X -probeonly -verbose 1 > xprobe.log 2>&1

179

Cu lnh ny chy my ch X ch th v a kt qu th vo tp tin xprobe.log sau ny c th c d dng hn. Nu khng ch ra tp tin xprobe.log th kt qu th s hin ra trn mn hnh. Sau khi chy cu lnh ny mn hnh s nhp nhy, sau s li thy dng lnh ca h v v trong th mc hin thi s c thm tp tin xprobe.log. Trong tp tin ny c rt nhiu thng tin c ch v h thng X Window. Cn ni rng trong tp tin bn ghi /var/log/Xorg.0.log cn c nhiu thng tin hn, nhng trong a s trng hp, chng ta ch cn nhng thng tin trong xprobe.log. Nhng dng u tin cho bit mt vi d liu v X.org. Di nhng dng ny l thng tin v phin bn ca X Window System, ngy pht hnh, tn ca h iu hnh, phin bn nhn Linux v mt vi thng tin khc. Sau l thng bo v ni t tp tin bn ghi (thng l /var/log/Xorg.0.log) v tn ca tp tin cu hnh c s dng: (==) Log file: "/var/log/Xorg.0.log", Time: Wed Jan 31 22:25:09 2007 (==) Using config file: "/etc/X11/xorg.conf" Trong tp tin xprobe.log ny chng ta cn thy li gii thch cho nhng k hiu s dng di cng nh trong tp tin bn ghi Xorg.0.log:
Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown.

Nh vy: () c ngha l nhng gi tr tng ng thu c khi th (probe). (**) c ngha l tham s ly t trong tp tin cu hnh (v d xorg.conf). (==) c ngha l s dng tham s theo mc nh. (++) c ngha l tham s ly t dng lnh chy my ch X. (!!) sau du hiu ny l nhng ch . (II) sau du hiu ny l nhng thng tin khc nhau. (WW) sau du hiu ny l nhng cnh bo. (EE) sau du hiu ny l nhng thng bo li. (NI) sau du hiu ny l thng bo v nhng tham s cn cha c pht trin trong X.org. ?? nhng thng tin khng r ngun gc. Li v cnh bo tm thy trong xprobe.log chng ta s sa bng cch thay i tham s tng ng trong tp tin /etc/X11/xorg.conf. Nhng tm thi chng ta s tip tc xem xt xprobe.log va to ra. Trong tp tin ny cn c mt vi dng thng tin hin th mi quan h gia cc phn trong tp tin cu hnh:

180 (==) (**) (**) (**) (**) (**) ServerLayout "Layout[all]" |-->Screen "Screen[0]" (0) | |-->Monitor "Monitor[0]" | |-->Device "Device[0]" |-->Input Device "Keyboard[0]" |-->Input Device "Mouse[1]"

Giao din ho

trong tp tin ny rt c th chng ta s gp nhng cnh bo v th mc cha phng ch ni phn trc, c dng sau: (WW) The directory "/usr/share/fonts/local" does not exist. Entry deleted from font path. (WW) The directory "/usr/share/fonts/PEX" does not exist. Entry deleted from font path. (WW) The directory "/usr/share/fonts/baekmuk" does not exist. Entry deleted from font path. (WW) The directory "/usr/share/fonts/japanese" does not exist. Entry deleted from font path. (WW) The directory "/usr/share/fonts/kwintv" does not exist. Entry deleted from font path. Ti thi im ny, nhng cnh bo tng t nh trn khng nh hng nhiu n vic s dng X Window. Hy c gng sa ht nhng li ((EE) tm thy, kim tra li bng: [user]$ X -probeonly -verbose 1 > xprobe.log 2>&1 ri nhn vo tp tin xprobe.log xem c cn li no khng. Nu khng cn na th c th mnh dn chy ch ho bng cu lnh X nh ni u phn ny. Tt nhin, bn cn bit rng, khng c li tm thy trong xprob.log cha bo m vic chy thnh cng ch ho. Do nu vn thy mt mn hnh en, th hy quay tr li dng lnh bng t hp phm <Ctrl>+<Alt>+<Backspace> ri kim tra k cng kt qu ca cu lnh: [user]$ X -probeonly -verbose 1 > xprobe.log 2>&1 i khi c th th chn mt phn gii hoc su mu nh hn. V d chn phn gii 1024x768 v su mu 16 thay v 1600x1200 v 24. Ni v ch lm vic ca mn hnh khng th khng k n mt tin ch nh nhng c ch l xvidtune. S dng tin ch ny bn s tm c ch hin th thch hp cho mn hnh ca mnh. Tin ch ny chy trong giao din ho, do hy chy X bng startx ri chy xvidtune t mt trnh lnh no (v d xterm). Chng ta s thy mt ca s hin ra nh trong hnh 7.3, sau khi ng ca s cnh bo cho bit cc nh pht trin khng chu trch nhim v vic s dng xvidtune gy ra. Nhng cnh bo nh vy bn s thng xuyn gp khi s dng cc sn phm c lin quan n Linux nh chng trnh, sch, bo, hng dn,. . . v trn xterm s xut hin mt vi dng thng tin:

7.3 Cu hnh chng trnh ch X

181

Hnh 7.3: Chng trnh xvidtune

Vendor: SAMSUNG, Model: SYNCMASTER 757NF(T)/707NF/700NF Num hsync: 1, Num vsync: 1 hsync range 0: 30.00 - 96.00 vsync range 0: 50.00 - 160.00 Nt Show cho bit ch hin th ang c s dng dng: "1280x1024" 167.32 1280 1376 1512 1744 1024 1025 1028 1078 Chnh nhng dng thng tin dng ny c s dng trn cc dng Modline ca phn Modes tp tin cu hnh xorg.conf. chnh hnh nh trn mn hnh, v d di chuyn sang phi, hy s dng (nhn vo) nt Right (khi ny cc s tng ng pha trn s thay i), ri nhn nt Apply. Tng t nh vy s dng cch nt Left di chuyn sang tri, Up ln trn, Down xung di, Taller, Wider tng kch thc hnh nh theo chiu cao, v b ngang hoc gim chng xung bng Narrower v Shorter. Trong ln chy th xvidtune cui cng, ti khng s dng c nhng chc nng chnh sa k trn v nhn c thng bo khng th thc thi (hnh 7.4).

Hnh 7.4: Chng trnh xvidtune khng chu chnh hnh nh

182

Giao din ho

Thit lp ban u c th phc hi bng nt Restore. Kh nng ny c ch khi hnh nh thu c sau khi chnh sa khng lm bn hi lng bng lc u. Nt Fetch dng yu cu nhng gi tr thit lp hin thi ca mn hnh. Nt Auto dng chuyn gia hai ch khng t ng v t ng. T ng c ngha l ngi dng khng cn nhn vo nt Apply c th thy nhng thay i na m s thy chng ngay lp tc khi c chnh sa no c thc hin. Nt Test dng th tm thi nhng gi tr t ra. Nt Show dng a ra cc gi tr nh ni trn. Hai nt Next v Prev dng chuyn cc ch hin th, ging nh hai t hp phm <Ctrl>+<Alt>+<+> v <Ctrl>+<Alt>+<>. Sau khi chn xong cc gi tr thch hp, hy nhn nt Show ri ghi ln giy nhng gi tr ny, v ng qun thm vo hai gi tr tn s cp nht mn hnh Horizontal Sync v Vertical Sync nm gc phi pha di ca ca s xvidtune. Cui cng hy m tp tin xorg.conf, kim tra li cc dng Modeline v ghi vo cc gi tr tng ng. Vi nhng thng tin gii thiu v ng dng xvidtune chng ta kt thc phn cu hnh chng trnh ch X. Xin hy lu l cc phin bn mi ca cc bn phn phi Linux c kh nng cu hnh X rt tt ngay trong qu trnh ci t, do hy vng l bn s khng phi t mnh chnh sa tp tin xorg.conf. Tuy nhin nhng thng tin trong phn ny s c ch khi c vn g xy ra, hoc n gin l khi bn mun tm hiu v to cho mnh mt cu hnh chng trnh ch X ring. Cn by gi chng ta s xem xt qu trnh khi ng ton b h thng X Window v cch tc ng ln qu trnh ny.

7.4

Khi ng h thng X Window

C th khi ng h thng X Window bng nhiu cch. Trong khi ci t h iu hnh Linux, c th ngi dng ng vi ngh ca trnh ci t t ng chy h thng ny. Nu vic ci t v cu hnh X.org bnh thng, th ngay sau khi khi ng h iu hnh, bn s chuyn vo ch ho. Cch khi ng ny c mt vi im bt li: th nht, v s dng b nh v s dng ti nguyn ni chung (trnh qun l mn hnh s n mt mt phn b nh, v nhiu cng vic ca bn c th thc hin trong ch vn bn m bn li phi i trong khi khi ng X); th hai, khi c vn xy ra c th bn s khng bit phi gii quyt nh th no ngoi vic ci t li. Do mc d nhng bn phn phi mi lm vic rt tt phng din ch ha, ti vn chn khi ng vo ch vn bn (bng cch t gi tr initdefault bng 3 trong tp tin /etc/inittab) v ch chy X Window khi cn thit. Lm th no khi ng c ch ho theo cch khc? Nh bn bit t nhng phn trc, u tin chng ta cn khi ng my ch X. iu ny c th thc hin bng cch chy thng chng trnh Xorg (hoc lin kt mm X) t th mc /usr/bin/X11/. Bn bit kt qu thu c l mt mn hnh trng vi con tr hnh cho nm gia. Nhng ngoi ra th khng cn c g khc v bn khng th thc hin thm mt thao tc no tr di chuyn con tr bng chut. l bi v cha c mt trnh qun l ca s no v cha c mt chng trnh khch (client) no c chy. V th hy nhn t hp phm <Ctrl>+<Alt>+<Backspace> dng chy my ch X v quay v ch vn bn.

7.4 Khi ng h thng X Window

183

C mt cch tt hn (nhng khng phi l tt nht) chuyn vo ch ho l chy cu lnh xinit. Cu lnh xinit, cng nm trong th mc /usr/bin/X11 nh Xorg, dng chy my ch X v t nht mt chng trnh khch. Theo mc nh xinit thc hin script X :0 tc l chy chng trnh my ch X trn mn hnh s 0. Nu trn dng lnh chy xinit khng ch ra chng trnh khch cn chy, th chng trnh xinit s tm tp tin .xinitrc c trong th mc ca ngi dng thc hin tp tin ny ging nh cc script khc, tc l chy nhng cu lnh c trong .xinitrc. Nu khng c tp tin .xinitrc , th theo mc nh xinit s thc hin cu lnh sau: xterm -geometry +1+1 -n login -display :0 Kt qu l ngi dng s thy mt mn hnh trng khng vi mt ca s trnh lnh xterm duy nht. V bi v cha c trnh qun l ca s no c chy nn bn s khng th lm g (di chuyn, thay i kch thc, v.v. . . ) c vi ca s ny, nhng c th dng n thc hin nhng chng trnh khc k c trnh qun l ca s. V d, hy th chy cu lnh twm hoc fvwm (mt trong hai trnh qun l ca s ny thng c ci t theo mc nh). Sau bn s thy ca s xterm c thay i v c th di chuyn bng cch ko thanh trn u ca n. Nu trn my ca bn c ci cc trnh qun l ca s v mi trng lm vic khc, v d fluxbox, icewm, Xfce4, KDE v GNOME, th hy th chy mt trong cc cu lnh sau: [user]$ [user]$ [user]$ [user]$ [user]$ fluxbox icewm-session xfce4-session startkde gnome-session

Nu dng li cch khi ng giao din ho ny, th mi ln chng ta s phi lp i lp li mt s cu lnh, l chng ta cn cha k n nhng mt yu khc ca cch ny. Do , ngi dng cn s dng kh nng to ra tp tin script .xinitrc t ng ha nhng cng vic lp li n nhm chn ny. Vi mc ch hc tp, ti xin a ra di y v d mt script .xinitrc dng chy ng h, hai ca s xterm v cui cng chy trnh qun l ca s twm. #!/bin/sh xrdb -load $HOME/.Xresources xsetroot -solid gray & xclock -g 100x100-0+0 -bw 0 & xload -g 50x50-100+0 -bw 0 & xterm -g 80x24+0+0 & xterm -g 80x24+0-0 & exec twm

184

Giao din ho

Cn ch l nhng chng trnh chy t .xinitrc phi c thc hin trong ch nn (background), nu nh chng khng kt thc ngay lp tc. Trong trng hp ngc li, nhng chng trnh ny s ngn cn khng cho chy nhng chng trnh nm pha sau. Tuy nhin mt trong nhng chng trnh ny (thng l trnh qun l ca s hoc trnh lnh dng xterm) phi c thc hin ch bnh thng (foreground), cho vic chy script khng b kt thc. Chng trnh khch ny c tn gi c bit l magic client. Khi ngi dng ng magic client, chng trnh xinit bit l cng vic hon thnh v n s t tt. Trong v d trn, nu trnh qun l ca s c cu hnh ng, th c th dng phin lm vic (session) vi giao din ha, ngi dng phi chn mc Exit trong thc n ca twm. C th dng nhng tham s dng lnh ca xinit thay cho script .xinitrc. Trn dng lnh c th ch ra chng trnh khch. Chng trnh khch phi l tham s u tin ca dng lnh gi xinit. Tn ca chng trnh khch phi bt u bng du gch cho (/) hoc du chm (.), nu khng chng trnh s coi chng nh l cc tham s cn phi thm vo chng trnh khch nm pha trc. Bng cch ny c th thm tham s vo cho cc chng trnh (v d mu nn v mu ch cho xterm) m khng cn phi g li dng lnh t u. Tt c nhng g nm sau du gch cho i () s c thm vo dng lnh gi chng trnh ch X. V d du hai chm v mt ch s no (:n) dng ch ra mt mn hnh c s th t khc 0 (theo mc nh). Tng kt mt s v d gi chng trnh xinit: [user]$ xinit Cu lnh ny s chy my ch X, thc hin script .xinitrc nu c trong th mc ca ngi dng, nu khng s ch chy xterm. [user]$ xinit -- :1 Chy my ch X trn mn hnh s 1. C ch th cu hnh mi khi c my ch X chy trn mn hnh mc nh (s 0). [user]$ xinit -geometry 80x25+0+0 -fg white -bg black Chy my ch X, v chng trnh xterm chy theo mc nh s nhn c cc tham s lit k trn dng lnh. Script .xinitrc s khng c thc hin. [user]$ xinit -e widgets -- :2 Chy my ch X trn mn hnh c s 2 v a ti chng trnh khch xterm tham s e widgets. V ngi dng mi thng khng c kh nng to ra mt tp tin script .xinitrc tt, nn trn cc bn phn phi lun c cc script do cc nh pht trin vit sn thc hin chc nng ny. V d mt trong nhng script ny l startx nm cng ch vi Xorg (/usr/bin/X11/). Script ny c mt trang hng dn s dng startx(1) ring. Cu trc ca startx c th rt phc tp v khng d dng cho ngi dng mi cha quen vi ngn ng lp trnh ca Bash, nhng nu nhn k th script ny thc hin 3 cu lnh chnh sau:

7.4 Khi ng h thng X Window xauth add $display . $mcookie xauth add hostname -f $display .$mcookie xinit $client $clientargs -- $server $display $serverargs

185

Tc l cui cng th startx cng gi cu lnh xinit m chng ta va xem xt v ch c t trc cc gi tr cn thit cho tham s dng trn dng lnh ca xinit m thi. V d, tham s tn tp tin script .xinitrc c xc nh bng bin clientargs. Nu c tp tin .xinitrc trong th mc ca ngi dng th s s dng n, tc l clientargs = $HOME/.xinitrc, nu khng s ly tp tin xinitrc ca h thng, tc l clientargs = /etc/X11/xinit/xinitrc. Vic t gi tr cho cc tham s khc cng xy ra tng t. Cu lnh xauth v ty chn auth $HOME/.Xauthority dng xc nhn ngi dng ang chy ch ha. Nh vy ngay sau khi ci t ngi dng c th dng cu lnh startx khi ng h thng X Window thay cho lnh xinit vi cc tham s kh nh. Nhng lm th no la chn trnh qun l ca s (mi trng lm vic) thch hp?

7.4.1

La chn trnh qun l ca s

Mt khi lm c cho h thng X Window chy thnh cng, th bn c rt nhiu kh nng cu hnh, ty chnh n theo ca mnh. Nhng kh nng cu hnh, ty chnh ny li ph thuc rt nhiu vo trnh qun l ca s m bn s dng. Nh ni ngay t u, c rt nhiu trnh qun l ca s cng nh mi trng lm vic da trn nhng trnh qun l ca s ny. Ngi dng c th la chn mt trong nhng trnh qun l ca s ngay t lc bt u chy ch ha. V d c th thc hin iu ny bng tp tin .xinitrc di y: #!/bin/sh # $HOME/.xinitrc # dng Xfce4 theo mc nh WMGR="xfce4-session" # tt xscreensaver xset s noblank # chy screensaver sau 10 pht xset s 600 2 # chy xterm xterm -bg black -fg white -fn 7x14 -geometry 80x24+57+0 & # nu a ra mt Window Manager khc # th dng n thay cho Xfce4 if [ "$1" != "" ] ; then WMGR=$1 fi exec $WMGR Mc d khng cn thit, nhng c th chuyn tp tin ny thnh c th thc thi bng cu lnh chmod quen thuc: [user]$ chmod u+x .xinitrc

186

Giao din ho

Tp tin .xinitrc ny cho php ngi dng la chn trnh qun l ca s (hoc mi trng lm vic) khi khi ng h thng X Window bng cu lnh startx. V d khi ng KDE, u tin chng ta tm xem startkde nm u ri t n vo lm tham s cho startx nh sau: [user]$ which startkde /opt/kde3/bin/startkde [user]$ startx /opt/kde3/bin/startkde Tng t nh vy i vi GNOME: [user]$ which gnome-session /opt/gnome/bin/gnome-session [user]$ startx /opt/gnome/bin/gnome-session Ch l nu ch chy startx khng c tham s th Xfce4 s c khi ng theo mc nh. Tt nhin bn c th to cho mi trnh qun l ca s v mi trng lm vic mt tp tin .xinitrc ring, v d cho KDE tp tin .xinitrc-kde: #!/bin/sh #$HOME/.xinitrc-kde # Chy mt s chng trnh #xset b off & # t mt s bin, v d th vin m # xvnkb cn #export LD_PRELOAD=/usr/local/lib/xvnkb.so # Dng export export export cch nhp SCIM lm mc nh XMODIFIERS=@im=SCIM GTK_IM_MODULE=scim QT_IM_MODULE=scim

# Chy mi trng lm vic exec /opt/kde3/bin/startkde Thm thuc tnh c th thc thi cho n: [user]$ chmod u+x .xinitrc-kde Tng t nh vy c th to cc tp tin .xinitrc-gnome, .xinitrc-xfce, .xinitrc-fluxbox, . . . bng cch thay th dng cui cng ca tp tin k trn tng ng bng mt trong nhng dng di y: exec /opt/gnome/bin/gnome-session exec /usr/bin/xfce4-session exec /usr/bin/fluxbox V khi cn khi ng mt trnh qun l ca s no , th ch cn sao chp tp tin tng ng vo v tr ca .xinitrc, v d khi ng Xfce4: [user]$ cp .xinitrc-xfce .xinitrc

7.4 Khi ng h thng X Window

187

7.4.2

Mi trng lm vic KDE v GNOME

Mi ngi dng my tnh d c nhiu kinh nghim hay t u c gng to cho mnh mt mi trng lm vic quen thuc cho bn thn c th lm vic nhanh hn (c hiu sut hn) bng nhng thao tc c th n gin nh to ng dn n nhng chng trnh v th mc thng dng, thay i nh nn, hay phc tp hn nh chn phm nng (k c bng bn phm v bng chut) m nhanh mt chng trnh hoc thc hin mt thao tc no trong chng trnh ang m, la chn cc ng dng thch hp cho cng vic. Trn h iu hnh Linux, ngi dng hn bao gi ht c th to cho mnh mt mi trng lm vic c mt khng hai, v d bng cch chn mt trnh qun l ca s a thch nht ri sau chn cc chng trnh ng dng ring, cn cho cng vic ca mnh. Tuy nhin, cch k trn khng phi lc no cng thun tin v quan trng hn l khng phi lc no cng d dng. Ngi dng cn th qua nhng trnh qun l ca s chnh ri sau mi a ra c la chn cho mnh, cha k n s lng cc chng trnh ng dng cho Linux l khng th m c. Do u tin nn xem xt kh nng la chn mt trong nhng mi trng lm vic ang pht trin trong nhng nm gn y. Trong thut ng ting Anh thng dng k hiu vit tt GUI Graphical User Interface, tc l giao din ha ca ngi dng. Chng ta s s dng cm k t vit tt ny dng gc ca n GUI. GUI l mt b cc chng trnh ng dng c kim tra v nhm li vi nhau lm vic trong ch ho, bao gm trnh qun l ca s v cc chng trnh khc v c cng mt giao din chung. S dng GUI thay cho mt mi trng lm vic t to ra c nhiu u im: u tin l tit kim c nhiu thi gian; th hai l s d dng, mi th c sn ch cn ci t v s dng; th ba, chng ta s thu c cc chng trnh vi mt giao din chung, iu ny cng ht sc quan trng nu khng ni l im khc bit quan trng nht ca GUI. C mt vi mi trng lm vic ha min ph (t do), cng nh thng mi. Trong s cc mi trng t do th KDE v GNOME ph bin rng ri nht. C th gi KDE v GNOME l hai ng ln trong th gii GUI. Cu hi mi trng no trong s hai mi trng ny tt hn hoc cn la chn KDE hay GNOME vt qu khun kh ca cun sch ny, v trn mng c rt nhiu cuc tranh ci cng nh bi bo xung quanh vn ny. Fan ca GNOME th ni GNOME tt hn, fan ca KDE th ni ngc li. Bn thn ti thch dng KDE hn v l do s dng GNOME trc y khng c thnh cng lm, ng dng ca GNOME lin tc b li crash (v). Theo nh nhiu ngun thng tin th ng dng GNOME by gi chy n nh hn, nhng ti vn trung thnh vi KDE. Ti thch KDE v giao din p v c th (ni chnh xc l cn thit) chnh sa p hn. Cn cng bng m ni rng nhng phin bn gn y ca GNOME cng c v p khng km KDE. Cch khi ng vo mi trng lm vic KDE (GNOME) qua cu lnh startx bn bit t phn nm ngay trc. Nu mun s dng KDE lm mi trng lm vic mc nh cho ton b h thng th hy m tp tin cu hnh h thng, thng l /etc/sysconfig/windowmanager, v thay th gi tr c ca DEFAULT_WM thnh kde (tc l thu c dng DEFAULT_WM="kde" (tc l nu mun s dng GNOME, th ch cn t vo gi tr gnome). Trong chng ti chng ta s nghin cu k hn v mi trng lm vic

188

Giao din ho

KDE. Nhng nu mun ngay by gi bn c th xem thng tin v mi trng ny t trang ch ca n http://www.kde.org hoc t trang ting Vit http: //www.kde-vi.org (rt tic l trang KDE-vi khng c cp nht kp thi v nhiu l do). Trang ch ca GNOME nm ti a ch http://www.gnome.org.

7.4.3

Mi trng lm vic Xfce

Mi trng lm vic Xfce, cng ging nh KDE v GNOME, thuc vo s mi trng t do, m ngun m. im khc chnh ca Xfce l s nh gn v lm vic nhanh, v cng v vy m c t s lng chng trnh ng dng cng nh kh nng cu hnh hn so vi hai ng ln k trn. Tuy nhin ng v vy m nh gi thp kh nng ca Xfce. Nu cn thit bn c th chy cc ng dng KDE v GNOME trong Xfce. Mi trng Xfce cn t b nh hn, dnh b nh cho nhng ng dng khc. Mi trng Xfce khng i hi phi c mt b x l mnh. Do , Xfce thch hp vi nhng my tnh c cu hnh bnh thng, khng c kh nng lm vic vi KDE v GNOME hoc lm vic rt chm. Tt c nhng u im ca Xfce dn n s ph bin ca n trong s nhng ngi dng c cht kinh nghim lm vic vi Linux. Phin bn hin thi ca Xfce l 4 v c mt trnh qun l tp tin ring (Thunar), mt trnh gii nn (Xarchiver), trnh lnh (Terminal), trnh xem phim, h tr panel, v.v. . . Bn c th xem nh chp Xfce sau khi sa cht t trn hnh 7.5 hoc lm quen gn hn vi Xfce qua trang ch ca n http://www. xfce.org.

7.4.4

S dng trnh qun l mn hnh

Nh bn bit, c th t ng chy h thng X Window ngay khi khi ng my tnh bng cch s dng chng trnh c tn gi trnh qun l mn hnh (Display Manager), v d X Display Manager xdm. Trong trng hp ny, ngi dng thy ngay giao din ha GUI, m khng cn phi khi ng n bng lnh startx. Khi ny vn c kh nng chuyn v giao din console bng t hp phm <Ctrl>+<Alt>+<F#> (# y bng t 1 n 6), sau chuyn quay li vo mi trng ha bng t hp <Ctrl>+<Alt>+<F7>. t ng chy trnh qun l mn hnh (v d xdm), cn sa tp tin cu hnh khi ng /etc/inittab. Tm trong tp tin ny dng id:3:initdefault: xc nh cp khi ng (runlevel) theo mc nh, v sa n thnh id:5:initdefault: S thay i ny s khin Linux chuyn sang khi ng cp 5. Trn trnh qun l mn hnh nh xdm cng c login ngi dng a vo tn ng nhp ca mnh v password a vo mt khu. Sau khi nhp xong login v password ngi dng cn nhn <Enter> vo mi trng ha mc nh ca h thng.

7.4 Khi ng h thng X Window

189

Hnh 7.5: Mi trng lm vic Xfce

Nu bn c chn ci t KDE hoc GNOME th rt c th h thng s s dng kdm (KDE Display Manager) hoc gdm (GNOME Display Manager) thay cho xdm. kdm v gdm thc hin cng vic tng t nh ca xdm cho php ngi dng ng nhp vo h thng, nhng c mm do hn: c th chn sc thi, tc l thay i v ngoi theo mnh, c th chn mi trng lm vic (trnh qun l ca s) v ngn ng trc tip trc khi vo, c th thc hin cc thao tc khc nh tt my, khi ng li,. . . Ch l nu dng mt trnh qun l mn hnh nh kdm hay gdm th t hp phm <Ctrl>+<Alt>+<Backspace> s khng dng my ch X nh bnh thng, m s thc hin thao tc khi ng li my ch X. Tc l khi ny c th dng <Ctrl>+<Alt>+<Backspace> cp nht nhng thay i to ra trong cu hnh my ch X cng nh ton b h thng X Window.

Chng 8 Lm vic trong mi trng KDE

Conquer your Desktop! konqueror


Nh ni trong chng trc, mi trng lm vic KDE cng vi GNOME hin ang ph bin trong th gii ngi dng Linux. KDE, GNOME v Xfce c th ni l hnh thnh mt ci king ba chn bn vng, trn nn tng X.org, cho mi trng ho ca Linux. Trong chng ny chng ta s tm hiu k hn v mi trng GUI vi tn KDE. Thng tin c trong chng ny gip bn lm quen vi KDE, bit cch cu hnh n theo mnh, v tt nhin l lm quen vi mt thnh phn rt quan trng ca KDE, l nhng ng dng i km gip ngi dng thc hin nhng cng vic thng ngy nh son tho vn bn, nghe nhc, xem phim, lm ha . . . cui chng bn s tm thy mt s ngun thng tin khc gip bn tip tc tm hiu KDE. iu ny l cn thit v mt chng sch ngn khng th ni ht v mi trng mnh ny.

8.1

Bt u lm vic vi KDE

KDE l vit tt ca K Desktop Environment mt mi trng ha cho Linux v nhng phin bn UNIX khc, bao gm hng trm ng dng v h tr trn 60 ngn ng khc nhau. KDE c pht trin trong khun kh ca cng ng m ngun m (Open Source Software hay vit tt l OSS), tc l c phn phi mt cch t do (min ph) cng vi m ngun. KDE c cc tnh cht ca mt mi trng lm vic hin i: y tnh nng, s dng thun tin v thit k p mt. Phin bn hin thi ca KDE l 3.5.6, v cc nh pht trin KDE ang lm vic ngy m cho ra i phin bn 4.0, mt phin bn mang y mong i vi nhng tnh nng mi ca bn thn mi trng KDE, cng nh cc ng dng ca n. Nhng hnh chp cng nh m t di y thuc v phin bn 3.5.6, nhng cng c th p dng cho nhng phin bn khc.

8.1.1

ng nhp vo KDE

Trong chng trc bn bit cch khi ng vo mi trng KDE, s dng .xinitrc hoc tp tin cu hnh /etc/sysconfig/windowmanager cng vi script startx. Nhng thng thng khi ci t KDE, ngi dng s ci t c trnh qun l mn hnh KDM. V nu chn chy vo ch ho ngay sau khi

8.1 Bt u lm vic vi KDE

191

khi ng h thng th bn s thy mt mn hnh nh trn hnh 8.1 hin ra. Nh

Hnh 8.1: Mn hnh ng nhp KDM vy, mn hnh ng nhp mc nh ca KDM c hai ngi dng g vo tn ng nhp (username) v mt khu (password) hoc chn tn ng nhp ca mnh bn tri hai ny, ngoi ra c th chn cc mc sau: Session Type Ch ra mi trng lm vic (trnh qun l ca s) mun dng khi ng nhp vo. Nu c nhng mi trng lm vic khc trn h thng th chng s c lit k trong mt danh sch hin ra. Ch s dng mc ny khi bn mun dng mt mi trng lm vic khc vi mi trng mc nh (thng l KDE). System Thc hin cc cng vic c lin quan n h thng, nh khi ng li hoc tt my. Remote Login (ng nhp t xa) gip bn ng nhp vo mi trng lm vic trn mt my khc qua mng. khi ng mi trng lm vic mc nh KDE, ch cn nhp vo tn ngi dng, mt khu ri g <Enter>.

8.1.2

V ngoi ca KDE

Nu bn tng khi ng vo KDE, th lm quen vi v ngoi ca mn hnh sau khi chy mi trng ny. V d, hnh 8.2 l mn hnh KDE trn my ca ti

192

Lm vic trong mi trng KDE

Hnh 8.2: V ngoi ca mn hnh sau khi chy KDE

sau khi c cu hnh, chnh sa mt cht. Nh bn thy, mn hnh c th chia thnh hai phn: Cc thanh panel Cc thanh panel thng nm phn ngoi cng (ng bin) ca mn hnh, tc l trn cng, di cng, bn tri hoc bn phi. Panel dng chy cc ng dng thng dng, chuyn qua li gia cc khng gian lm vic. Trn thanh panel chnh cn c nt gi l KMenu trnh n chnh ca h thng KDE, thng nm u bn tri ca thanh panel. Nt ny c biu tng hnh ch K theo mc nh, nhng mi bn phn phi c th t vo v tr ny mt biu tng khc nhau. Nh trn hnh 8.2, biu tng l hnh con tc k hoa, biu tng ca OpenSUSE Linux. Nt KMenu dng m ra mt trnh n cc ng dng m KDE tm thy trn h thng, gip ngi dng chy nhng ng dng ny bao gm c nhng chng trnh khng c biu tng trn thanh panel no. Mn hnh (Desktop) y l ton b phn cn li ca mn hnh, trn c th t cc biu tng khc nhau dng chy cc ng dng (shortcut) hoc t cc tp tin, th mc thng dng. Trong trng hp ca mnh, ti b i tt c nhng biu tng , tuy nhin minh ha ti to ra hai ci l l4u, digikam.

8.1 Bt u lm vic vi KDE

193

y cn ni thm mt cht v khi nim khng gian lm vic nhc n trn. KDE, cng nh hu ht cc mi trng lm vic v trnh qun l ca s ca Linux, c h tr mt s lng khng gian lm vic. Nh c khng gian lm vic ngi dng c th t cc ng dng thuc v mt cng vic trn mt mn hnh ring. Do khng b ri khi c nhiu ng dng cng chy. Nu coi mi trng lm vic KDE l mt ngi nh ln, th mi khng gian lm vic l mt cn phng trong nh , v tt c phng trong nh ny c chc nng nh nhau, mc d c th c mu sn, trang tr khc nhau. chuyn qua li gia cc khng gian lm vic, th cn nhn vo tng ng vi khng gian trn trnh nh (applet) KPager nm trn thanh panel. Trn hnh 8.2, bn s thy trnh nh c hai khng gian lm vic l Lm vic v Gii tr. S lng cng nh tn gi v mt vi cu hnh khc ca khng gian lm vic c th thay i theo mun ca ngi dng. Tuy nhin, theo kinh nghim ca ti th ngi dng bnh thng khng cn qu 3 khng gian. V i khi cu hnh my tnh (b x l, s lng RAM) khng cho php m qu nhiu ng dng mt lc cn phi s dng nhiu khng gian lm vic. Sau mt thi gian lm vic bn s tm thy s lng cn thit cho mnh. Thng thng, phn khng gian chnh ca thanh panel l vng thanh cng c (taskbar). Thanh cng c dng hin th tn gi, biu tng ca nhng ng dng ang chy v chuyn qua li gia chng. Mi ng dng ang chy c mt th ring trn thanh cng c. Khi ngi dng nhn chut vo th ny, th ng dng s c hin th trn mn hnh, ngi ta ni ng dng c a vo trng thi hot ng hay (active). gc bn phi ca thanh panel thng c ng h. hai u c th c cc nt c hnh mi tn tam gic. Khi nhn vo nt ny, thanh panel s b n i, ging nh b ko v gc tng ng ca mn hnh. Khi ny trn mn hnh ch cn li mi tn tam gic . Nhn vo mi tn ny s a thanh panel quay tr li. Thanh panel ca KDE cn c tn gi Kicker, v tp tin chng trnh tng ng l kicker. Nu chng may c li g , v thanh panel ca bn t nhin bin mt, th bn c th phc hi a n tr li bng cch chy cu lnh (trn xterm hoc konsole hoc mt trnh lnh khc): [user]$ kicker & hoc nhn <Alt>+<F2> m hp thoi chy chng trnh (hnh 8.3) ri g vo kicker v <Enter>. Mt tnh nng quan trng khc ca KDE l h thng

Hnh 8.3: Hp thoi chy chng trnh

194

Lm vic trong mi trng KDE

tr gip trc tip trn mn hnh. Nu bn a chut ln mt biu tng, mt nt no trn mn hnh hoc trn thanh panel, th s c mt ca s nh hin ra cho bit nt hay biu tng c tn l g v c cng dng g, tc l m t v n. Thut ng ting Anh dng cho tr gip loi ny l tooltips. V d v tooltips c trn hnh 8.4.

Hnh 8.4: Tr gip c ch tooltips

Kh nng s dng chut ca cc mi trng lm vic hin i l ti a. Nt chut phi trong KDE phc v cho vic m mt trnh n c ni dung ph thuc vo hon cnh (context menu). Trnh n ny s hin ra khi nhn chut phi ln bt k mt thnh phn no ca mn hnh, k c phn mn hnh trng (nn mn hnh). Trong trnh n ny ngi dng c th chn mt trong nhng hnh ng c th p dng cho phn t ca mn hnh. V d, khi nhn chut phi ln nn mn hnh, c th chn cc cu lnh cu hnh n: to biu tng mi, cp nht, cu hnh nh nn, . . .

8.1.3

Trnh n KMenu

m ra trnh n chnh ca mi trng lm vic KDE (KMenu), chng ta cn nhn vo biu tng ca n. Biu tng ny theo mc nh c hnh ch K nh biu tng u chng sch ny. Tuy nhin cc bn phn phi Linux thng thay th n bng biu tng logo ca mnh. Sau khi nhn vo biu tng ca KMenu mt trnh n nh trong hnh 8.5 s hin ra. Cch khc m KMenu l dng t hp phm <Alt>+<F1>. Trnh n ny c s thay i ln so vi trnh n c in ca KDE, c th nghim ln u trn OpenSUSE. Cc nh pht trin KDE s dng s thay i ny trong phin bn 4.0 sp ti, cho nn ti s m t v KMenu kiu mi ny y. Trong KMenu mi cc biu tng c mt im g chung c nhm li vi nhau v t vo tng th (tab) ring. Trn hnh 8.5 chng ta thy c 5 th nh vy: Favorites (nhng ng dng a thch), History (nhng ng dng, tp tin mi m gn y), Computer (nhng th mc, a, ng dn chnh ca my tnh), Applications (nhng ng dng c trn h thng, c l y l phn quan trng nht i vi bn) v Leave (dng thot ra khi h thng v thc hin mt s hnh ng khc). Trong phn Applications bn s tm thy rt nhiu ng dng c ch. Nhng ng dng ny li c sp xp trong mt h thng trnh n c trt t, mi ng dng nm trong mt nhm thc hin mt chc nng chung, nh Internet, Graphics, Multimedia, Office. Nhm ng dng s c hnh mi tn tam gic cui. m mt nhm ng dng chng ta cn nhn chut vo tn ca n. Khi ny s m ra nhng ng dng (v c th c nhm ng dng) thuc vo nhm ny. Mun quay li th nhn chut vo thanh c hnh mi tn tam gic nm bn tri. Nu mun thm mt chng trnh no vo danh sch ca th Favorites, th

8.1 Bt u lm vic vi KDE

195

Hnh 8.5: Trnh n chnh ca KDE

cn nhn chut phi vo tn (biu tng ca chng trnh tng ng ri chn cu lnh Add to Favorites. Mt tnh nng mi c bit hu ch ca trnh n KDE l tnh nng tm kim. V d bn mun tm ng dng c tn amarok. Hy nhp tn vo tm kim nm bn cnh ch Search, ri nhn <Enter> hoc i mt cht. Kt qu tm kim s hin th ngay trong trnh n KMenu (hnh 8.6). Ngoi ng dng, trong kt qu hin th cn c th c thm mt vi tp tin c lin quan n t tm kim. Mun chy (m) kt qu no , th ch cn nhn vo dng tng ng. ng dng tm thy nm trong phn Application ca kt qu. Tnh nng tm kim ny c xy dng mt phn da trn h thng Kerry/Beagle. Ngoi ra trn trnh n chnh cn c hin th tn ng nhp v tn my. Thng tin ny c ch khi bn ng nhp vo bng tn ca ngi dng khc hoc ng nhp vo my xa. Bn s lun lun bit c mnh l ai v ang u.

8.1.4

Trung tm iu khin KDE

Tn Trung tm iu khin ca KDE trong nhng phin bn gn y c thay th bng tn mi Thit lp c nhn (Personal Settings). S thay i ny khng c g quan trng m ch c ngha tn gi, chc nng ca chng trnh l hon ton nh c: trong Thit lp c nhn ngi dng c th thay i hu ht cc cu hnh ca mi trng lm vic KDE. Thit lp c nhn (Personal Settings) c th chy qua trnh n chnh, qua

196

Lm vic trong mi trng KDE

Hnh 8.6: Tm kim trong trnh n chnh ca KDE

biu tng trn thanh panel, hoc t dng lnh bng cch g tn chng trnh l kcontrol. Chng ta s thy mt ca s nh trn hnh 8.7 hin ra. bn tri l danh sch dng cy ca nhng mun c trong Personal Settings, cn bn phi l nhng th v nhng ty chn thuc v mun ang c chn bn tri. Mi mun nm trong mt nhm no . V d, mun Panels nm trong nhm Desktop. Trong s nhng mun ca Personal Settings chng ta s xem xt mt vi mun lm v d, nhng mun cn li bn s t t tm hiu khi s dng KDE, v s lng ca chng ln. Th nht, lm p KDE th thng thng ti thay i cc ty chn sc thi, tc l thay i nhng mun ca nhm Appearance & Themes: thay i trc tip sc thi bng Theme Manager, sau thay i cc biu tng bng Icons, kiu dng bng Style, . . . v cui cng chn nhng phng ch cho thch hp (Fonts). Trc khi chn phng ch cn s dng n mun Font Installer nu mun thm nhng ci mi mi. C th ni y l trnh ci t phng ch vi giao din ha ca KDE (xem hnh 8.8. Nh vy mun ny lit k nhng phng c trong th mc c nhn ca bn (thng l ~/.fonts) bn tri, bn phi l xem phng c chn. Nu mun thm mt phng no th cn nhn vo nt Add Fonts . . . ri tm n tp tin cha n. Nu mun thm phng ch cho ton b h thng th hy chuyn vo ch qun tr h thng bng nt Administrator Mode . . . (khi ny bn cn nhp vo mt khu ca root). Phng ch cho cc thnh phn khc nhau ca KDE c la chn trong mun Fonts (hnh 8.9 cho thy phn bn phi ca Personal Settings khi nhn vo

8.1 Bt u lm vic vi KDE

197

Hnh 8.7: Trnh Thit lp c nhn ca KDE

mun ny). thay i mt phng ch no cn nhn vo nt Choose . . . tng ng vi n. Khi s hin ra ca s nh trn hnh 8.10. Sau khi chn c phng ch thch hp cng vi kiu dng (Font style) v kch thc (Size), cn nhn vo OK chp nhn n. Nhng nh vy phng ch vn cha c dng trong KDE. Bn cn lm thm mt thao tc na l nhn vo nt Apply hoc OK ca mun KDE bit chc chn l bn mun s dng phng ny. Thao tc cui cng ny l cn thit i vi c nhng mun khc. Khi ngi dng thc hin mt thay i no trong mt mun (v d chn phng ch khc), cha p dng n m chuyn sang mun khc th s c mt hp thoi cnh bo hin ra nh trong hnh 8.11. ngha ca cc nt ca hp thoi xin c gii thch mt ln y, chng s lp li nhng trng hp khc. Apply p dng nhng thay i, Discard khng p dng chng, tc l bn ch mun th nghim ch khng mun thay i g, Cancel ng hp thoi cnh bo ny v quay v mun c thay i xem xt li. Quay li vi mun chn phng ch. Trong mun ny bn c th thc hin thm mt s thao tc na. l chn tt c cc phng ch cng mt lc bng nt Adjust All Fonts . . . , dng anti-aliasing cho phng hin th p hn (nh du vo vung cnh dng Use anti-aliasing for fonts), v dng phn gii t chn (Force fonts DPI). thay i nhng phm nng dng trong KDE, cn s dng mun Keyboard Shortcuts. y c th thay i, thm cc phm nng chy mt chng trnh no , m trnh n chnh, v.v . . . Ni n phm nng khng th khng k n mt tnh nng mi ca KDE l kh nng s dng chut (bn phm) thc hin mt thao tc nht nh no trong mt chng trnh, hoc trn nn mn hnh. V d, bn c th dng nt chut gia (bnh xe) v ln mn hnh mt hnh g , v d hnh ch nht, v khi chng trnh OpenOffice.org Writer s chy. Hoc trong chng trnh Konqueror, cng bng nt bnh xe v hnh ch L v Konqueror s m mt th mc xc nh (chng ta s ni k hn

198

Lm vic trong mi trng KDE

Hnh 8.8: Ci t phng ch mi

Hnh 8.9: Chn phng ch dng cho text, trnh n, . . .

v Konqueror sau). Nhng cu hnh ny c thc hin trong mun Input Actions nm cng nhm vi mun va k trn. By gi chng ta s nghin cu c th hn cch thay i v ngoi ca KDE, tc l thay i nn mn hnh, trnh n chnh v cc thanh panel.

8.1.5

Thay i v ngoi

Hai thnh phn chnh ca mn hnh l nn v cc thay panel c th thay i mt cch d dng bng cch nhn chut phi ln chng v chn cc cu lnh tng ng trong trnh n m ra (trong sch ny chng ta s tm gi n l trnh n bi cnh, dch t ting Anh context menu). Ngi dng cc h iu hnh c giao din ho khc chc chn l s s dng trnh n bi cnh mt cch d dng. Khi nhn chut phi ln phn trng ca thanh panel s m ra mt trnh n ca panel ny (hnh 8.12), bao gm cc mc sau: Add Applet to Panel . . . Thm cc trnh nh c ch, nh trnh theo di mng, ng h, vo thanh panel. Add Application to Panel Thm biu tng (nhm) chng trnh vo

8.1 Bt u lm vic vi KDE

199

Hnh 8.10: Chn phng ch

Hnh 8.11: Cnh bo khi c thay i cha p dng

thanh panel c th tm (chng) n nhanh hn. Trong danh sch hin ra bn cn chn chng trnh hoc ton b nhm chng trnh bng Add this Menu. Remove From Panel G b chng trnh hoc applet (ang c) khi thanh panel. Add New Panel Thm thanh panel mi. V d, bn c th thm mt thanh panel ng biu tng nhng ng dng thng chy. Remove Panel G b mt thanh panel no cng vi tt c nhng g c trn thanh panel ny. Lock Panels Mt trong nhng ci mi ca KDE, tnh nng ny cho php tm thi kha panel khng thay i n mt cch v tnh. Configure Panel . . . Cu hnh thanh panel. Khi chn cu lnh ny, s m ra mt ca s cho php thay i cc ty chn cu hnh ca panel. Help Tr gip v panel. Ngoi ra, nu nhn chut phi vo mt biu tng chng trnh hoc applet c trn thanh panel th s m ra mt trnh n bi cnh c khc mt cht, nh chng ta c th thy trn hnh 8.13. ngha ca cc cu lnh ti ngh khng cn gii thch. Trong quan trng nhn c l l lnh Configure XXX Button . . . t tn cho nt ca chng trnh XXX, cu lnh ca chng trnh s chy v mt vi cu hnh khc. Nh ni trn, khi chn cu lnh Configure Panel . . . ca trnh n bi cnh ca panel hoc chn mun Panels (nhm Desktop) ca Personal Settings, s hin ra ca s chnh sa cc thanh panel nh trn hnh 8.14. C 4 th tab (Arrangement, Hiding, Menus v Appearance)

200

Lm vic trong mi trng KDE

Hnh 8.12: Trnh n ca thanh panel

Hnh 8.13: Trnh n bi cnh ca nt

cng nhiu ty chn nhng chng ta ch ch n mt s trong . u tin cn chn thanh panel mun cu hnh bng cch nhn vo nm sau dng Settings for (th Arrangement) ri chn panel tng ng. Sau di c th chn v tr t thanh panel (Position), chiu di ca n tnh theo % so vi cnh ca mn hnh (Length) v cao tnh theo pixel (Size). Trn th Appearance, c th chn thanh panel tr thnh trong sui (p hn?) bng ty chn Enable transparency. Nu mun bn c th b i cc nt giu thanh panel (hnh mi tn tam gic) bng cch b i cc du X trong cc ca Panel-Hiding Buttons (th Hiding). Sau mi ln thay i ng qun p dng n bng nt Apply. Tng t nh cc thanh panel, khi nhn chut phi ln phn trng ca nn mn hnh s m ra mt trnh n bi cnh ca mn hnh. Trong trnh n ny cng c nhiu cu lnh bn c th nghin cu dn dn. Cu lnh Configure Desktop . . . l lnh chng ta quan tm. Lnh ny dng cu hnh khng gian lm vic cng nh nn mn hnh (nh thay i nh nn). Khi chn lnh ny s hin ra ca s nh trn hnh 8.15. Trong ca s ny ngi dng c th chn khng dng nh nn (ch dng mu), chn mt nh lm nn hoc chn mt nhm nh thay phin nhau sau mt khong thi gian nht nh (slide show). S lng v tn gi ca cc khng gian lm vic c th thc hin qua th Multiple Desktops. thay i trnh n chnh ca KDE (KMenu), ngi dng c th s dng chng trnh Menu Editor. Khi nhn chut phi ln biu tng ca trnh n chnh bn s thy mt cu lnh c cng tn vi chng trnh ny. Nhn vo chy chng trnh son tho trnh n. Hoc t dng lnh chy cu lnh kmenuedit. Kt qu thu c l nh nhau (hnh 8.16). Cui cng, thm biu tng ln mn hnh, mc d theo ti l khng thc s cn thit, bn cn s dng cu lnh Create New (trong trnh n bi cnh hin ra khi nhn chut phi ln mn hnh nh ni trn) v chn mc tng ng ca lnh ny. Sau khi kt thc cng vic bn cn bit cch thot khi KDE cng nh giao din ho, hoc tt my hon ton.

8.1 Bt u lm vic vi KDE

201

Hnh 8.14: Cu hnh cc thanh panel

Hnh 8.15: Thay i mn hnh

8.1.6

iu khin phin lm vic1

Phin lm vic (ting Anh l session) c th tm nh ngha l qu trnh lm vic ca ngi dng bt u t lc vo mi trng lm vic n lc thot ra. iu khin phin lm vic, mi trng KDE c mt chng trnh ring Session Manager (Trnh qun l phin lm vic). Chng trnh ny chy ngay sau khi tn ngi dng v mt khu c h thng xc nhn l ng. Trnh qun l phin lm vic cho php bn lu li cc thit lp hin thi cho mi phin lm vic, v ng thi cho php phc hi trng thi ca phin lm vic cui cng trong ln ng nhp sau. Trnh qun l phin lm vic c th phc hi cc thit lp sau: Cc thit lp trang tr v tnh nng, nh phng ch, nh nn, mu v thit lp chut. ng dng ang chy, nh Konsole, t in Stardict hay OpenOffice.org.
1

Session

202

Lm vic trong mi trng KDE

Hnh 8.16: Son tho trnh n chnh

Tuy nhin, cn ch l bn khng th lu v phc hi nhng ng dng m Session Manager khng qun l. V d, nu bn chy cu lnh trnh son tho vim t mt ca s terminal, th Session Manager khng th phc hi trnh son tho ny. Mi cu lnh iu khin trc tip phin lm vic nm trong th Leave ca trnh n chnh. 1. Lock kha mn hnh ca bn. Bn c th s dng phm nng xc nh trong Personal Settings, thng thng l <Ctrl>+<Alt>+<Del> hoc dng nt Lock trn thanh panel (nu c). Khi kha mn hnh, chng trnh bo v mn hnh2 bt u chy. m kha mn hnh, cn nhn chut hoc nhn bn phm hin ra hp thoi m kha. hp thoi ny bn cn nhp vo mt khu ca mnh. 2. Save Session lu trng thi ca phin lm vic hin ti. Trng thi ny s c phc hi vo ln ng nhp sau. 3. Logout thot ra khi KDE khi kt thc cng vic hoc ng nhp vo mi trng lm vic khc. Nu s dng KDM ng nhp vo th bn s c mt vi la chn khc: tt my, khi ng li. Phm nng theo mc nh thot khi KDE l <Ctrl>+<Alt>+<Del> (chng trnh s hi li bn c chc chn mun thot ra khng) hoc <Ctrl>+<Alt>+<Shift>+<Del> (thot thng, chng trnh khng hi li). Trn thanh panel nt thot ra thng nm cnh nt Lock.

Screen Saver

You might also like