You are on page 1of 212

T h c s d ng Linux

Phan Vnh Th nh Phin b n: 0.9.6 Ngy 14 thng 2 nm 2007

Dnh cho ng i dng m i v r t m i...

M cl c
L im u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 HH Linux: l ch s v cc b n phn ph i 1.1 Th no l HH ni chung v Linux ni ring 1.1.1 Cc h i u hnh d ng UNIX . . . . . . 1.1.2 M t cht v l ch s . . . . . . . . . . . . 1.1.3 c i m chnh c a HH Linux . . . . 1.2 B n phn ph i Linux . . . . . . . . . . . . . . . 1.3 Yu c u i v i my tnh . . . . . . . . . . . . . 1.4 L y 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 i u hnh Linux 2.1 Chu n b ci t . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Phng xa v nh ng l i khuyn . . . . . . . . . . . . . . . . . 2.3 Phn vng trn a v qu trnh kh i ng . . . . . . . . . 2.3.1 Th no l c u trc hnh h c c a a . . . . . . . . 2.3.2 Phn vng v b ng phn vng c a a . . . . . . . . 2.3.3 Qu trnh kh i ng cc HH c a cng ty Microsoft 2.3.4 V n v i cc a l n . . . . . . . . . . . . . . . . . . 2.4 L a ch n trnh kh i ng . . . . . . . . . . . . . . . . . . . . 2.4.1 Trnh kh i ng GRUB . . . . . . . . . . . . . . . . . 2.4.2 Trnh kh i ng LILO . . . . . . . . . . . . . . . . . 2.4.3 Cc trnh kh i ng khc . . . . . . . . . . . . . . . . 2.4.4 Cc phng n kh i ng . . . . . . . . . . . . . . . 2.5 Chu n b cc phn vng trn a . . . . . . . . . . . . . . . 2.5.1 L i khuyn khi t o phn vng . . . . . . . . . . . . . 2.5.2 Chng trnh phn chia a . . . . . . . . . . . 2.6 Windows NT v Linux: kh i ng qua NT OS Loader . . . 2.7 S d ng trnh kh i ng GRUB . . . . . . . . . . . . . . . . 2.7.1 Ci t GRUB . . . . . . . . . . . . . . . . . . . . . . 2.7.2 C u hnh GRUB . . . . . . . . . . . . . . . . . . . . . 2.8 S d ng trnh kh i ng LILO . . . . . . . . . . . . . . . . 2.8.1 Ci t v c u hnh LILO . . . . . . . . . . . . . . . 2.8.2 Ci t cc h i u hnh khc sau Linux . . . . . . 2.8.3 Chuy n th m c /boot ln phn vng DOS . . . . . 2.9 Kh i ng Linux t MS-DOS b ng loadlin.exe . . . . . . .

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

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

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

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

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

iv 3 Kh 3.1 3.2 3.3 3.4 3.5 3.6 i ng Linux l n u Kh i ng HH Linux . . . . . . . . . ng nh p vo h th ng . . . . . . . . Console, terminal o v shell . . . . . So n th o dng l nh. L ch s l nh . . Ng ng lm vi c v i Linux . . . . . . . Tr gip khi dng Linux . . . . . . . . 3.6.1 Cc ngu n thng tin tr gip . 3.6.2 Cc trang tr gip man . . . . . 3.6.3 Cu l nh info . . . . . . . . . . 3.6.4 Cu l nh help . . . . . . . . . . 3.6.5 Ti li u b n phn ph i v ng d 3.6.6 Cu l nh xman . . . . . . . . . . 3.6.7 Cu l nh helptool . . . . . . . 3.6.8 Sch v Internet . . . . . . . . .

M CL C 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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ng . . . . . . . . .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4 Lm quen v i h th ng t p tin ext3fs 4.1 T p tin v tn c a chng . . . . . . . . . . . . . . . . 4.2 Th m c . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Cng d ng c a cc th m c chnh . . . . . . . . . . . 4.4 D ng t p tin . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Cc t p tin thi t b . . . . . . . . . . . . . . . 4.4.2 Cc ng c tn (pipes) . . . . . . . . . . . . . . 4.4.3 Cc socket . . . . . . . . . . . . . . . . . . . . 4.4.4 Lin k t m m . . . . . . . . . . . . . . . . . . 4.5 Quy n truy c p n t p tin v th m c . . . . . . . . 4.6 Cc cu l nh c b n lm vi c v i t p tin v th m 4.6.1 Cu l nh chown v chgrp . . . . . . . . . . . 4.6.2 Cu l nh mkdir . . . . . . . . . . . . . . . . . 4.6.3 Cu l nh cat . . . . . . . . . . . . . . . . . . 4.6.4 Cu l nh cp . . . . . . . . . . . . . . . . . . . 4.6.5 Cu l nh mv . . . . . . . . . . . . . . . . . . . 4.6.6 Cu l nh rm v rmdir . . . . . . . . . . . . . 4.6.7 Cu l nh more v less . . . . . . . . . . . . 4.6.8 Cu l nh tm ki m find v m u tn t p tin . 4.6.9 Cu l nh split . . . . . . . . . . . . . . . . . 4.6.10 So snh cc t p tin v l nh patch . . . . . . 4.7 Cc cu l nh lu tr v nn t p tin . . . . . . . . . . 4.7.1 Chng trnh tar . . . . . . . . . . . . . . . . 4.7.2 Chng trnh gzip . . . . . . . . . . . . . . . 4.7.3 Chng trnh bzip2 . . . . . . . . . . . . . . 4.7.4 S d ng k t h p tar v i gzip v bzip2 . . . 4.8 T o v g n cc h th ng t p tin . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

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

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

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

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

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

M CL C 5 Bash 5.1 H v l g? . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Cc k t c bi t . . . . . . . . . . . . . . . . . . . . 5.3 Th c thi cc cu l nh . . . . . . . . . . . . . . . . . . 5.3.1 Thao tc ; . . . . . . . . . . . . . . . . . . . . . 5.3.2 Thao tc & . . . . . . . . . . . . . . . . . . . . 5.3.3 Thao tc && v || . . . . . . . . . . . . . . . 5.4 u vo/ u ra tiu chu n . . . . . . . . . . . . . . . 5.4.1 Dng d li u vo ra . . . . . . . . . . . . . . 5.4.2 L nh echo . . . . . . . . . . . . . . . . . . . . 5.4.3 L nh cat . . . . . . . . . . . . . . . . . . . . . 5.5 Chuy n h ng u vo/ u ra, ng ng v b l c . 5.5.1 S d ng >, < v >> . . . . . . . . . . . . . . . 5.5.2 S d ng | . . . . . . . . . . . . . . . . . . . . 5.5.3 B l c . . . . . . . . . . . . . . . . . . . . . . . 5.6 Tham bi n v cc bi n s . Mi tr ng c a h v . . . 5.6.1 Cc d ng tham bi n khc nhau . . . . . . . . 5.6.2 D u nh c c a h v . . . . . . . . . . . . . . . 5.6.3 Bi n mi tr ng PATH . . . . . . . . . . . . . . 5.6.4 Bi n mi tr ng IFS . . . . . . . . . . . . . . 5.6.5 Th m c hi n th i v th m c c nhn . . . 5.6.6 Cu l nh export . . . . . . . . . . . . . . . . 5.7 Khai tri n bi u th c . . . . . . . . . . . . . . . . . . . 5.7.1 Khai tri n d u ngo c . . . . . . . . . . . . . . 5.7.2 Thay th d u ng (Tilde Expansion) . . . . . 5.7.3 Php th cc tham bi n v bi n s . . . . . . 5.7.4 Php th cc cu l nh . . . . . . . . . . . . . . 5.7.5 Php th s h c (Arithmetic Expansion) . . . 5.7.6 Phn chia t (word splitting) . . . . . . . . . 5.7.7 Khai tri n cc m u tn th m c v t p tin . 5.7.8 Xa cc k t c bi t . . . . . . . . . . . . . . 5.8 Shell m t ngn ng l p trnh . . . . . . . . . . . . 5.8.1 Ton t if v test (ho c [ ]) . . . . . . . . . 5.8.2 Ton t test v i u ki n c a bi u th c . . . 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 Bi n n i b (local) . . . . . . . . . . . . . . . . 5.9 Script c a h v v l nh source . . . . . . . . . . . . 5.10 Cu l nh 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 d ng Midnight Commander 6.1 Ci t chng trnh Midnight Commander . . 6.2 V ngoi c a mn hnh Midnight Commander 6.3 Tr gip . . . . . . . . . . . . . . . . . . . . . . . 6.4 S d ng chu t . . . . . . . . . . . . . . . . . . . 6.5 i u khi n cc b ng . . . . . . . . . . . . . . . . 6.5.1 D ng danh sch t p tin . . . . . . . . . . 6.5.2 Nh ng ch hi n th khc . . . . . . . 6.5.3 Cc t h p phm i u khi n b ng . . . . 6.6 Cc phm ch c nng v th c n T p tin . . . . 6.7 M u t p tin khi sao chp ho c i tn . . . . . 6.8 Thng bo khi sao chp v di chuy n t p tin . . 6.9 Dng l nh c a h v . . . . . . . . . . . . . . . . 6.10 Trnh n Cu l nh . . . . . . . . . . . . . . . . 6.11 C u hnh Midnight Commander . . . . . . . . . 6.12 K t n i t i my xa . . . . . . . . . . . . . . . . 6.12.1 K t n i FTP . . . . . . . . . . . . . . . . 6.12.2 K t n i Shell . . . . . . . . . . . . . . . . 7 Giao di n ho 7.1 X.Org . . . . . . . . . . . . . . . . . . . . . . . 7.2 M t cht v h th ng hnh nh c a my tnh 7.3 C u hnh chng trnh ch X . . . . . . . . . 7.3.1 Thu th p thng tin c n thi t . . . . . . 7.3.2 C u trc c a t p tin c u hnh X . . . . 7.3.3 Th c u hnh /etc/X11/xorg.conf . . . . 7.4 Kh i ng h th ng X Window . . . . . . . . . 7.4.1 L a ch n trnh qu n l c a s . . . . . 7.4.2 Mi tr ng lm vi c KDE v GNOME 7.4.3 Mi tr ng lm vi c Xfce . . . . . . . . 7.4.4 S d ng trnh qu n l mn hnh . . . 8 Lm vi c trong mi tr ng KDE 8.1 B t u lm vi c v i KDE . . . . . 8.1.1 ng nh p vo KDE . . . . 8.1.2 V ngoi c a KDE . . . . . . 8.1.3 Trnh n KMenu . . . . . . 8.1.4 Trung tm i u khi n KDE 8.1.5 Thay i v ngoi . . . . . . 8.1.6 i u khi n phin lm vi c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

M CL C 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 kh i ng c a 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 ti ng Vi t . . . . . . . . . Mn hnh Midnight Commander . . . . . . . . . H p tho i ch n nh d ng hi n th . . . . . . . . H p tho i s p x p . . . . . . . . . . . . . . . . . . Ch thng tin . . . . . . . . . . . . . . . . . . . Ch cy th m c . . . . . . . . . . . . . . . . . Ch xem nhanh . . . . . . . . . . . . . . . . . . H p tho i i tn t p tin . . . . . . . . . . . . . . C as h il i. . . . . . . . . . . . . . . . . . . . . C a s yu c u . . . . . . . . . . . . . . . . . . . . Dng nh p vo a ch IP c a my ch FTP . . . B t u tm ki m . . . . . . . . . . . . . . . . . . ang tm ki m . . . . . . . . . . . . . . . . . . . . Tm ki m t t c cc lin k t m m . . . . . . . . . H p tho i danh sch th m c th ng dng . . . i u khi n cng vi c n n sau . . . . . . . . . . . C u hnh Midnight Commander . . . . . . . . . . Thay i v ngoi c a Midnight Commander . . Thay i bit hi n th c a Midnight Commander . Thi t l p cc h p tho i h i l i ng i dng . . . . Th v c u hnh cc phm . . . . . . . . . . . . . Thi t l p h th ng t p tin o . . . . . . . . . . . . H th ng ho X Window . . . . . C u hnh X.org qua xorgcfg . . . Chng trnh xvidtune . . . . . . Chng trnh xvidtune khng ch Mi tr ng lm vi c Xfce . . . . . . Mn hnh ng nh p KDM . . . . V ngoi c a KDE . . . . . . . . . H p tho i ch y chng trnh . . . Tr gip c ch tooltips . . . . . . Trnh n chnh c a KDE . . . . Tm ki m trong trnh n chnh c Trnh Thi t l p c nhn c a KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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

. . . . . . . . . . . . . . . . . . . . . . . . . . . u ch nh hnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . nh . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . a KDE . . . . .

viii 8.8 8.9 8.10 8.11 8.12 8.13 8.14 8.15 8.16 Ci t phng ch m i . . . . . . . . . . . . . Ch n phng ch dng cho text, trnh n, . . . Ch n phng ch . . . . . . . . . . . . . . . . . C nh bo khi c thay i cha p d ng . . . . Trnh n c a thanh panel . . . . . . . . . . . Trnh n b i c nh c a nt . . . . . . . . . . C u hnh cc thanh panel . . . . . . . . . . . Thay i mn hnh . . . . . . . . . . . . . . . So n th o trnh n chnh . . . . . . . . . . .

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

Danh sch b ng
1.1 Yu c u i v i ph n c ng . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1 C u trc c a sector kh i ng chnh . . . . . . . . . . . . . . . . . . 20 2.2 Nhu c u s d ng khng gian a c a 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 Nh ng cu l nh n gi n c a Linux Nh ng phm so n th o dng l nh . . T h p phm i u khi n l ch s l nh Cc ph n chnh c a tr gip man . . Phm s d ng 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

C u trc th m c c a Linux . . . . . . . . . . . Nh ng t p tin thi t b chnh . . . . . . . . . . . Nh ng ty ch n chnh c a l nh cp . . . . . . . Tiu ch tm ki m c a cu l nh find. . . . . . . Nh ng ty ch n chnh c a tar . . . . . . . . . Nh ng ty ch n chnh c a chng trnh gzip Nh ng ty ch n chnh c a chng trnh bzip2 Nh ng ty ch n chnh c a cu l nh mount . . Cc cu l nh b l c . . . . . . Thay th cc tham bi n c bi K t xc nh d ng d u nh c Cc k t t o m u . . . . . . . . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Cc t h p phm di chuy n dng chung Di chuy n trong trnh xem t p tin . . . Di chuy n khi xem tr gip . . . . . . Cc phm ch c nng . . . . . . . . . . . Cc l nh i u khi n dng nh p vo . .

L im u
Trong tc ph m n i ti ng th gi i c a nh vn Nga Lev Tolstoi Chi n tranh v ho bnh c a ra m t v d minh ho cho suy ngh c a tc gi v vai tr c a nh ng ng i c ti ng (c th l Napoleon v Alecxandr nh t) v qu n chng trong l ch s ni chung cng nh trong chi n tranh chu u nh ng nm u th k XIX. Nhn v t chnh trong v d minh ho ny l con ong. i v i c u b v a b ong c n th m c ch c a con ong ch c n ng i. i v i m t nh th th m c ch c a con ong l thu vo mnh hng v c a nh ng bng hoa. i v i ng i nui ong th m c ch ong l thu th p m t ong. Ng i nui ong c ci nhn su hn th cho r ng ong thu th p b i ph n hoa nui ong con v t o ong cha, nh v y m c ch c a n l duy tr ni gi ng. Nh sinh h c khi quan st th y ong th ph n cho hoa th quy t nh y chnh l m c ch c a loi ong. Ng i khc quan st qu trnh di c c a th c v t th cho r ng ong tham gia vo qu trnh ny v l m c ch c a n. T t nhin m c ch cu i cng c a ong khng ph i l nh ng ci trn n m ring bi t m l t t c chng c ng l i, v cn c ng thm nh ng g m t m th i b c quan st h n ch c a con ng i cn cha tm ra. Microsoft nhn th y Linux kh nng c nh tranh l n v nhi u khi coi Linux l k th c a mnh. Nhi u t ch c chnh ph cng nh phi chnh ph nhn th y Linux m t h i u hnh nhi u h a h n v h tr cho Linux. Nh ng n c cn ngho tm th y Linux m t cch gi i quy t cho v n kinh t . M t s cng ty th y c Linux m t ngu n l i l n v pht tri n cng vi c kinh doanh c a mnh t h i u hnh ny. i v i Linus Torvalds, Linux l ni m am m v Just for fun. Cc nh l p trnh nhn (kernel) tm th y Linux s quy n r v cng vi c pht tri n c a h . Ng i dng th th y Linux m t h th ng m nh, thu n ti n, c th i u ch nh theo mu n c a mnh v.v. . . Linux l h i u hnh pht tri n m nh. Nh ng nm u th p k th chn c a th k XX Linux m i ch l a con tinh th n cha bi t ni c a Torvalds. Ch trong vi nm g n y c nhi u b n phn ph i Linux chi m lnh c mi tr ng my ch cng nh my bn c a ng i dng. Trn th tr ng my ch hi n th i ch c m t vi tn tu i ng ch . Linux cho my bn c ph n a d ng hn. M i b n phn ph i thch h p cho m t nhm ng i dng c th no t ng i dng m i n ng i dng cao c p (advanced) hay ni ng hn l m i ng i dng c quy n l a ch n cho mnh m t b n phn ph i thch h p v chuy n sang s d ng b n khc khi no mong mu n. L ch s hnh thnh v pht tri n Linux chng ta s th y ngay chng u tin c a cu n sch ny. Linux ngay t ban u c xy d ng d a trn c ng ng (ti ng Anh community), d a trn s c ng tc. C ng ng Linux khng ch cung c p cho ng i dng my tnh m t h i u hnh thn thi n, d s d ng m cn lun lun s n sng gip ng i dng m i, lun mong mu n c thm my tnh ch y d i Linux. V i k t n i m ng Internet, b n s lun tm th y cu tr l i cho v n c a mnh t s l ng l n cc di n n, nhm th, nhm tin t c, cc trang web cung c p tin t c, bi bo, sch v Linux. . . Tuy nhin n u b n m i b t u h c Linux th hy tm cho mnh m t cu n sch gi i thi u ng n g n v h i u hnh ny. M t cu n sch tham kh o c m tay l khng th thi u trong th i gian u tm hi u Linux. Hy xem xt gi v n i dung cu n sch tr c khi mua. N u khng

c kh nng tm c sch thch h p ho c b n thch cu n sch T h c s d ng Linux ny th c th in n ra ti n c. Ti b t u h c Linux khi c trong tay 3 a CD RedHat 7.0 kho ng 4 nm tr c y. V by gi Linux (c th l OpenSUSE Linux) l h th ng duy nh t lm vi c trn my tnh c a ti. Khng ph i l ti khng mu n s d ng v ght b h i u hnh Windows m n gi n l ti quen lm vi c trong mi tr ng KDE v Xfce, i khi trong console (dng l nh khng c ho ). V hn n a m i cng vi c c n n my tnh c a ti c th gi i quy t nhanh g n b ng nh ng chng trnh i km v i Linux. Nghe nh c b ng Amarok, qu n l hnh k thu t s v l y chng ra t my hnh b ng digiKam, so n th o ti li u, c th l lu n A vn t t nghi p v cu n sch ny, trong chng trnh Kile v bin d ch m L TEX qua nh ng chng trnh c trong gi teTeX, nh ng ti li u khc c th so n th o trong Openoffice.org, v i ng i dng khng chuyn th kh nng ch nh s a nh c a The GIMP cn trn c , kh nng v ho vector c a Inkscape cn cho c nh ng nh thi t k chuyn. Ti khng ph i l m t nh qu n l m ng hay l p trnh chuyn nghi p v ni chung khng ph i ng i h c theo chuyn ngnh cng ngh thng tin. Ngnh chnh c a ti l Ho h c, do xin ng mong i nh ng ki n th c cao siu trong sch ny. Nh trang th hai c a sch c ghi Dnh cho ng i dng m i v r t m i. . . . Nh v y, cu n sch T h c s d ng Linux c t o ra v i hy v ng s gip ng i dng m i lm quen v i h i u hnh tuy t v i c tn Linux v hnh t ng trng l ch chim cnh c t (penguin) xinh p. Nh ng thng tin b n c tm th y trong cu n sch ny c th p d ng cho h u h t h t cc b n phn ph i l n, tuy nhin m t s ph n c bi t v d ph n ni v ci t chng trnh t cc gi rpm ch p d ng t t cho cc b n phn ph i dng RedHat, l Fedora, Mandriva, OpenSUSE, v.v. . . Thng th ng ng i dng m i b t u gia nh p vo th gi i Linux b ng nh ng b n phn ph i ny. Happy Using Linux! A Cng c t o ra cu n sch b n ang c l h th ng s p ch L TEX. B n c th tm b n phn ph i teTeX ho c m t b n phn ph i khc c a h th ng ny trn h u h t cc b a ci t h i u hnh Linux. Sch ny c phn ph i mi n ph theo b n quy n Creative Commons Public License 2.5 (http://creativecommons.org/licenses/by/2.5/). Cng nh nh ng s n ph m khc c a c ng ng OSS, cu n sch ny c t o ra, s a i, thm v b t trong th i gian r nh r i c a ti, do i khi n s c c p nh t th ng xuyn, v c khi khng c c p nh t c nm. M i ngh s a i, thng bo l i chnh t , l i ki n th c cng nh ngh gip (lun lun hoan nghng) xin g i cho Phan Vnh Th nh theo a ch teppi@vnoss.org. Xin c m n Kostromin A.V. (http://linux-ve.chat.ru) vi t ra m t cu n sch s d ng Linux hay lm ti li u tham kh o chnh cho cu n sch ny, bc Nguy n i Qu (vnpenguin@vnoss.org) v anh Nguy n ng Hong Tun (tuanndh@gmail.com) gip ti trong khi so n cu n sch ny.

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

Chng 1 HH Linux: l ch s v cc b n phn ph i


Just for fun Linus Torvalds.
L ch s lun l i m kh i u khi nghin c u m t ngnh khoa h c no . Khng c ngo i l i v i Ton h c, V t l, mn chuyn ngnh c a ti Ho h c v t t nhin c HH Linux. Trong chng u tin c a cu n sch T h c s d ng Linux ny chng ta s tr l i ng n g n cho cu h i Linux l g?. ng th i ni i dng v nh ng i m c bi t c a Linux, yu c u c a Linux i v i ph n c ng, khi ni m b n phn ph i Linux, v cch c c nh ng b n phn ph i ny. Hn th n a b n c s hi u t nhi u v OpenSource, GNU v FSF.

1.1
1.1.1

Th no l HH ni chung v Linux ni ring


Cc h i u hnh d ng UNIX

H i u hnh (HH) l m t b cc chng trnh h tr vi c i u khi n ph n c ng c a my tnh, t ch c lm vi c v i cc t p tin (trong c ch y v i u khi n vi c th c hi n c a cc chng trnh), v ng th i th c thi s giao ti p v i ng i dng, t c l d ch cc cu l nh c a ng i dng v hi n th k t qu lm vi c c a nh ng l nh ny. Khng c h i u hnh th my tnh khng th c hi n c ch c nng c a mnh. Trong tr ng h p my tnh ch l m t t p h p cc thi t b i n t khng lm vi c, khng hi u l lm g. n th i i m hi n nay th cc h i u hnh n i ti ng nh t cho my tnh l Microsoft Windows (C) v UNIX. Windows b t ngu n t h i u hnh MS-DOS tr c y lm vi c trn cc my tnh c a hng IBM. H i u hnh UNIX do nhm cc nh pht tri n Bell Labs vi t ra vo nm 1969 d i s i u khi n c a Dennis Ritchie, Ken Thompson v Brian Kernighan. Nhng by gi khi ni n h i u hnh UNIX th ng c khng ni c th m t h i u hnh c th no m l m t nhm cc h i u hnh dng UNIX (UNIX-liked OS). Chnh b n thn t UNIX (vi t hoa t t c cc ch ci) tr thnh nhn hi u thng m i c a t ng cng ty AT&T.1
Ng i m khng ng i ng n ng k nhn hi u thng m i b t k th g, k c Yoga m b t ngu n t n .
1

HH Linux: l ch s v cc b n phn ph i

Vo cu i nh ng nm 70 c a th k tr c (th k XX) cc nh pht tri n c a tr ng i h c California Berkeley thm vo m ngu n c a UNIX r t nhi u s c i ti n trong c h tr giao th c2 TCP/IP (giao th c m ng chnh hi n nay). S n ph m ny n i ti ng d i tn BSD ("Berkeley Systems Distribution"). i u c bi t ch b n quy n c a s n ph m cho php ng i khc pht tri n v c i ti n v chuy n k t qu thu c n ng i th ba (cng v i m ngu n ho c khng) v i i u ki n l ph i ch ra ph n no c a m c pht tri n Berkeley. H i u hnh dng UNIX, trong c BSD, lc u c pht tri n lm vi c v i cc my tnh nhi u ng i dng cc mainframe. Nhng d n d n c u hnh trang thi t b c a my tnh c nhn cng m nh ln v hi n nay c kh nng cao hn so v i nh ng mainframe c a nh ng nm 70 th k tr c. V v u nh ng nm 90 m t sinh vin c a tr ng i h c Helsinki (Ph n Lan), Linus Torvalds, b t u pht tri n m t HH ki u UNIX cho cc my tnh c nhn tng thch v i IBM (IBM-compatible PC).

1.1.2

M t cht v l ch s

HH Linux v a k ni m sinh nh t l n th 15 c a mnh. y l b c th m Linus g i vo nhm tin t c comp.os.minix ngy 25 thng 8 nm 1991 ( c coi l ngy sinh nh t c a 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 bi t anh ang pht tri n m t h i u hnh t do cho cc my tnh i 386 (486) v yu c u nh ng ai quan tm cho bi t nh ng thnh ph n no c a h th ng cho ng i dng c n ph i c u tin. Nh ng ng i dng trong nhm tin t c ny lm vi c d i h i u hnh Minux do gio s Andy
2

protocol

1.1 Th no l HH ni chung v Linux ni ring

Tanenbaum vi t ra lm cng c h c t p cho cc sinh vin l p trnh. Minux lm vi c trn cc my tnh v i b x l 286 v c Linus dng lm m hnh cho HH m i. T p tin phin b n u tin c a Linux (phin b n 0.01) c cng b trn Internet ngy 17 thng 09 nm 1991. Linus Torvalds vi t: 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 tr c y, 0.01 khng i km theo binary no: n ch l m ngu n cho nh ng ai mu n bi t linux trng ra sao. Ch r ng khng c thng bo cho b n 0.01: ti khng t ho l m v n, v th ch g i thng bo n t t c nh ng ai mu n th hi n s quan tm.)3 Sau ngy 05 thng 10 nm 1991 phin b n 0.02 ra i. y l phin b n c th lm vi c trn my. N u b n c quan tm n l ch s c a HH ny th hy c trang web sau: http://www.li.org/linuxhistory.php. b n s nh n c thng tin chi ti t v l ch s xu t hi n v pht tri n Linux. Linus Torvalds khng ng k b ng sng ch cng nh khng gi i h n vi c phn ph i HH m i ny. Ngay t u Linux c phn ph i theo i u ki n c a b n quy n General Public License (GPL)4 th ng dng cho cc ph n m m ng d ng Open Source v d n GNU. Theo ti ng lng c a Linux th b n quy n ny i khi c g i l Copyleft. V b n quy n ny, Open Source v d n GNU c n ph i ni n m t cch c bi t. Vo nm 1984 nh bc h c ng i m Richard Stallman sng l p ra T ch c ph n m m t do (FSF, Free Software Foundation) c trang ch n m t i a ch http://www.fsf.org. M c ch c a t ch c ny l lo i tr t t c nh ng i u c m on v h n ch phn ph i, sao chp, s a i, nghin c u chng trnh ng d ng. B i v tnh n th i i m b t u xy d ng t ch c th cc cng ty thng m i gi r t c n th n cc chng trnh ng d ng c a mnh, b o v n b ng cc b ng sng ch , cc d u hi u b o v quy n tc gi , gi b m t nghim ng t m ngu n c a chng trnh vi t trn cc ngn ng b c cao (nh C++). Stallman cho r ng vi c ny r t c h i i v i pht tri n chng trnh ng d ng, d n n vi c gi m ch t l ng chng trnh v s c m t c a r t nhi u l i khng xc nh c trong nh ng chng trnh ny. T i t nh t l lm ch m qu trnh trao i t ng trong ngnh l p trnh, lm ch m qu trnh t o ng d ng m i v m i nh l p trnh s ph i vi t l i t u m t ng d ng thay v dng o n m ngu n c trong ng d ng khc. Trong khun kh T ch c ph n m m t do b t u lm vi c d n GNU (http://www.gnu.org) d n t o chng trnh ng dng mi n ph. GNU l
R t th v l sau khi Linus Torvalds pht tri n HH c a mnh th gi a anh v gio s Andy Tanenbaum n ra m t cu c tranh ci. N u b n c quan tm th c th tm c nh ng th m hai ng i ny g i cho nhau trong nhm tin t c ni trn, ho c tm c cu n Linux: Just for fun, m t cu n sch ni v i t c a Linus Torvalds n th i i m anh lm cho Transmeta v vi c pht tri n HH Linux. 4 Th t ra lc u nhn Linux c phn ph i theo b n quy n m FSF khng khng nh n l t do v nghim c m phn ph i thng m i. B n quy n ny c th tm th y trong nh ng phin b n u tin c a nhn trn ftp.kernel.org, v d ftp://ftp.kernel.org/pub/linux/kernel/Historic/oldversions/RELNOTES-0.01. B n quy n c i sang GPL t phin b n 0.12, hy xem RELNOTES-0.12 theo a ch trn.
3

HH Linux: l ch s v cc b n phn ph i

t vi t t t c a GNUs Not Unix, t c l nh ng g thu c v d n GNU khng ph i l m t ph n c a Unix (vo th i gian th m ch t UNIX tr thnh thng hi u, do khng cn t do). Trong Manifesto GNU (http://www.gnu.org/ gnu/manifesto.html) vo nm 1985 Stallman vi t r ng ng l c ng sng l p ra FSF v d n GNU l s kh ch u trong quy n s h u c a m t s ng i i v i chng trnh ng d ng. Nh ng g do d n GNU pht tri n l t do, nhng khng c ngha l chng c phn ph i khng c b n quy n v khng c lu t php b o v . Nh ng chng trnh Open Source (M ngu n m ) c phn ph i theo i u ki n c a b n quy n General Public License (GPL). B n c th c b n quy n ny theo a ch http://www.gnu.org/copyleft/gpl.html. B n d ch ti ng Vi t khng chnh th c n m t i http://vi.openoffice.org/gplv.html. N u nh ni m t cch th t ng n g n th b n ch t c a GPL nh sau. Chng trnh ng d ng phn ph i theo GPL c quy n pht tri n, s a i, chuy n ho c bn cho ng i khc khng h n ch v i m t i u ki n l k t qu thu c cng ph i phn ph i theo b n quy n copyleft. i u ki n cu i l quan tr ng v then ch t c a b n quy n ny. N b o m r ng k t qu lao ng c a cc nh pht tri n ph n m m t do s lun lun m v khng tr thnh m t ph n c a s n ph m no dng b n quy n bnh th ng ( ni s n ph m ng). i u ki n ny cng phn bi t ph n m m t do v i ph n m m phn ph i mi n ph. Ni nh cc nh sng l p ra FSF, th b n quy n GPL lm cho chng trnh ng d ng t do v m b o l chng trnh ny s t do5 . G n nh t t c cc chng trnh ng d ng phn ph i theo i u ki n GPL c th coi l mi n ph i v i ng i dng (trong ph n l n cc tr ng h p nh n c n b n ch ph i tr ti n a CD, DVD ho c k t n i Internet). i u khng c ngha l cc nh l p trnh khng cn nh n c ph n th ng (ti n) cho cng vi c c a mnh. t ng chnh c a Stallman l ch khng ph i bn chng trnh ng d ng, m bn chnh s c lao ng c a nh l p trnh. y c n ph i a ra v d b n c hi u r hn: ngu n thu nh p c th l cc s n ph m i km ho c d ch v ci t v c u hnh cho nh ng my tnh m i ho c pht tri n cho nh ng i u ki n lm vi c m i, d y cch s d ng, v.v. . . M t ph n th ng t t n a l khi chng trnh tr ln n i ti ng th tc gi c a chng trnh s c i u ki n tm m t cng vi c c lng cao. Cc nh pht tri n xvnkb (http://xvnkb.sf.net), unikey (http://unikey.org) v pdfLaTeX (http://www.tug.org), l nh ng ng i hi u r nh t i u ny. Hy vi t th cho h h c h i kinh nghi m! Trong khun kh c a ho t ng Open Source ni chung v d n GNU ni ring, pht tri n m t l ng ng k cc chng trnh ng d ng, n i ti ng nh t trong s chng l trnh so n th o Emacs v trnh bin d ch GCC (GNU C Compliler) trnh bin d ch ngn ng C t t nh t hi n nay. Vi c m m ngu n ng th i nng cao r t nhi u ch t l ng c a chng trnh ng d ng: t t c nh ng g t t nh t, nh ng t ng v cch gi i quy t m i c phn ph i r ng ri ngay l p t c, cn cc l i s c nh n ra v s a nhanh chng. y chng ta g p l i c ch o th i (hay t t hn l ch n l c) t nhin nh trong thuy t sinh h c c a Darwin. C ch ny b km nn trong th gi i chng trnh ng d ng thng
B n c cng nn bi t l s p t i s c phin b n th 3 c a GPL (GPLv3). Cng v i s ra i c a phin b n th 3 ny n y ra r t nhi u tranh ci xung quanh tnh t do c a b n quy n. Tham gia vo tranh ci c c ng i vi t ra nhn Linux u tin Linus Torvalds.
5

1.1 Th no l HH ni chung v Linux ni ring

m i. Tuy nhin by gi xin quay l i v i l ch s c a Linux. C n ni r ng Linus Torvalds ch pht tri n ph n nhn (kernel) c a h i u hnh. Nhn ny u ng vo mi n t lnh, v trong d n GNU pht tri n s l ng l n cc ti n ch khc nhau. Nhng chuy n GNU thnh m t HH hon ch nh th ch cn thi u nhn. D n GNU cng b t u pht tri n nhn cho ring mnh ( c g i l Hurd), nhng v l do no b ch m l i. V th s xu t hi n c a nhn Linux l r t ng lc. N ng ngha v i vi c ra i c a m t h i u hnh m i t do phn ph i cng v i m ngu n m . Stallman t t nhin ng khi i h i h i u hnh Linux ph i c g i l GNU/Linux. Nhng thnh l ng i dng th ng s d ng tn g i c a nhn lm tn g i c a h i u hnh, v chng ta cng lm nh v y trong cu n sch ny.

1.1.3

c i m chnh c a HH Linux

Do m ngu n Linux phn ph i t do v mi n ph, nn ngay t u c r t nhi u nh l p trnh tham gia vo qu trnh pht tri n h th ng. Nh n th i i m hi n nay Linux l h i u hnh hi n i, b n v ng v pht tri n nhanh nh t, h tr cc cng ngh m i g n nh ngay l p t c. Linux c t t c cc kh nng, c trng cho cc h i u hnh y tnh nng dng UNIX. Xin a ra y danh sch ng n g n nh ng kh nng ny. 1. Nhi u ti n trnh th t s T t c cc ti n trnh l c l p, khng m t ti n trnh no c c n tr cng vi c c a ti n trnh khc. lm c i u ny nhn th c hi n ch phn chia th i gian c a b x l trung tm, l n l t chia cho m i ti n trnh m t kho ng th i gian th c hi n. Cch ny hon ton khc v i ch nhi u ti n trnh y nha c th c hi n trong Windows 95, khi m t ti n trnh ph i nh ng b x l cho cc ti n trnh khc (v c th lm ch m tr r t lu vi c th c hi n). 2. Truy c p nhi u ng i dng Linux khng ch l HH nhi u ti n trnh, Linux h tr kh nng nhi u ng i dng lm vi c cng lc. Khi ny Linux c th cung c p t t c cc ti nguyn h th ng cho ng i dng lm vi c qua cc terminal xa khc nhau. 3. Swap b nh ln a Swap b nh cho php lm vi c v i Linux khi dung l ng b nh c h n. N i dung c a m t s ph n (trang) b nh c ghi ln vng a c ng xc nh t tr c. Vng a c ng ny c coi l b nh ph thm vo. Vi c ny c lm gi m t c lm vi c, nhng cho php ch y cc chng trnh c n b nh dung l ng l n m th c t khng c trn my tnh. 4. T H N d s ch c b nh theo trang th ng b nh Linux c t ch c d ng cc trang v i dung l ng 4K. u b nh y, th HH s tm nh ng trang b nh lu khng c s ng chuy n chng t b nh ln a c ng. N u c trang no trong nh ng trang ny l i tr thnh c n thi t, th Linux s ph c h i chng t

HH Linux: l ch s v cc b n phn ph i a c ng (vo b nh ). M t s h th ng Unix c v m t s h th ng hi n i (bao g m c Microsoft Windows) chuy n ln a t t c n i dung c a b nh thu c v nh ng ng d ng khng lm vi c t i th i i m hi n th i (t c l T T C cc trang b nh thu c v ng d ng s c lu ln a khi khng b nh ) v nh v y km hi u qu hn. 5. N p mun th c hi n theo yu c u Nhn Linux h tr vi c cung c p cc trang b nh theo yu c u, khi ny ch ph n m c n thi t c a chng trnh m i n m trong b nh , cn nh ng ph n m khng s d ng t i th i i m hi n t i th n m l i trn a. 6. Cng s d ng chng trnh N u c n ch y m t lc nhi u b n sao c a cng m t ng d ng no 6 , th Linux ch n p vo b nh m t b n sao c a m chng trnh v t t c cc ti n trnh gi ng nhau cng s d ng m t m ny. 7. Th vi n chung Th vi n b cc qu trnh (thao tc) c chng trnh dng lm vi c v i d li u. C m t s th vi n tiu chu n c dng cng lc cho vi ti n trnh. Trn cc h th ng c nh ng th vi n n m trong m i t p tin chng trnh, v th c hi n cng lc nh ng chng trnh ny d n n hao h t b nh khng ng c. Trn cc h th ng m i (bao g m Linux) c h tr lm vi c v i cc th vi n ng (dynamic) v tnh (static) c chia ra, v nh v y cho php gi m kch th c b nh b ng d ng chi m. 8. B m ng c a a B m c a a l m t ph n b nh c a h th ng dng lm ni lu nh ng d li u th ng dng c a a, nh nng cao r t nhi u t c truy c p t i nh ng chng trnh v ti n trnh th ng dng. Ng i dng MS-DOS s nh n chng trnh SmartDrive, chng trnh ny d tr m t ph n b nh c kch th c xc nh lm b m cho a. Linux s d ng h th ng m linh ng hn: b nh c d tr cho m c tng ln khi b nh khng c s d ng, v s gi m xu ng khi h th ng hay ti n trnh c n nhi u b nh hn. 9. 100% tng ng v i tiu chu n POSIX 1003.1. H tr m t ph n cc kh nng c a System V v BSD POSIX 1003.1 (Portable Operating System Interface giao di n c a h i u hnh lu ng) a ra giao di n tiu chu n cho cc h th ng Unix, l m t b cc th t c ngn ng C. Ngy nay giao di n ny c t t c cc h i u hnh m i h tr . Microsoft Windows NT cng h tr POSIX 1003.1. Linux 100% tng ng v i tiu chu n POSIX 1003.1. Thm vo Linux cn h tr cc kh nng c a System V v BSD tng tnh tng thch. 10. System V IPC Linux s d ng cng ngh IPC (InterProcess Communication) trao i thng tin gi a cc ti n trnh, s d ng tn hi u v b nh chung.

ho c m t ng i dng ch y vi ti n trnh gi ng nhau, ho c nhi u ng i dng ch y cng m t chng trnh

1.2 B n phn ph i Linux

11. Kh nng ch y chng trnh c a HH khc Trong l ch s Linux khng ph i l h i u hnh u tin. Ng i ta vi t ra hng lo t cc chng trnh ng d ng, trong c c nh ng chng trnh c ch v khng n n i t i, cho cc HH pht tri n tr c Linux, bao g m DOS, Windows, FreeBSD v OS/2. ch y nh ng chng trnh nh v y d i Linux pht tri n cc trnh gi l p (emulator) cho DOS, Windows 3.1, Windows 95 v Wine. Ngoi ra, cn c m t lo t cc chng trnh t o my o7 m ngu n m cng nh s n ph m thng m i: qemu, bochs, pearpc, vmware,. . . HH Linux cn c kh nng ch y chng trnh dnh cho b x l Intel c a cc h th ng Unix khc, n u h th ng p ng tiu chu n iBCS2 (intel Binary Compatibility). 12. H tr cc nh d ng h th ng t p tin khc nhau Linux h tr m t s l ng l n cc nh d ng h th ng t p tin, bao g m cc h th ng t p tin DOS v OS/2, v c cc h th ng t p tin m i, nh reiserfs, HFS,. . . . Trong khi h th ng t p tin chnh c a Linux, c g i l Second Extended File System (ext2fs) v Third Extended File System (ext3fs) cho php s d ng khng gian a m t cch c hi u qu . 13. Kh nng h tr m ng Linux c th g n vo b t k m ng n i b no. H tr t t c cc d ch v Unix, bao g m Networked File System (NFS), k t n i t xa (telnet, rlogin, ssh), lm vi c trong cc m ng TCP/IP, truy c p dial-up qua cc giao th c SLIP v PPP,v.v. . . ng th i c h tr dng Linux l my ch ho c my khch cho m ng khc, trong c chia s (dng chung, sharing) cc t p tin v in t xa trong cc m ng Macintosh, NetWare v Windows. 14. Lm vi c trn cc ph n c ng khc nhau M c d u tin HH Linux c pht tri n cho my tnh c nhn (PC) trn n n t ng Intel 386/486, by gi n c th lm vi c trn t t c cc b vi x l Intel b t u t 386 v k t thc l cc h th ng nhi u b x l Pentium IV, bao g m c cc b x l 64bit. ng th i Linux cn lm vi c trn r t nhi u b x l tng thch v i Intel c a cc nh s n xu t khc, nh AMD. Trong Internet cn c nh ng thng bo ni r ng trn cc b x l Athlon v Duron c a AMD Linux cn lm vi c t t hn so v i trn Intel. Ngoi ra cn c phin b n Linux cho cc b x l khc bao g m ARM, DEC Alpha, SUN Sparc, M68000 (Atari v Amiga), MIPS, PowerPC v nh ng b x l khc8 . Xin c ni lun l trong cu n sch ny chng ta ch xem xt tr ng h p Linux cho cc my tnh tng thch v i IBM.

1.2

B n phn ph i Linux

Trong b t k h i u hnh no cng c th chia ra 4 ph n chnh: nhn, c u trc (h th ng) t p tin, trnh d ch l nh ng i dng v cc ti n ch. Nhn l
cho php s d ng nhi u h i u hnh trn m t my B n phn ph i Linux h tr nhi u b x l nh t c n ph i k n Debian (http://www. debian.org)
8 7

10

HH Linux: l ch s v cc b n phn ph i

thnh ph n chnh, nng c t c a HH, n i u khi n cc thi t b ph n c ng v i u khi n vi c th c hi n chng trnh. C u trc t p tin (h th ng t p tin) l h th ng lu t p tin trn cc thi t b lu. Trnh d ch l nh hay h v (shell) l chng trnh t ch c giao ti p gi a my tnh v ng i dng. V cu i cng cc ti n ch n gi n l cc chng trnh ring l , ni chung khng khc so v i nh ng chng trnh bnh th ng khc m ng i dng c th ch y, nhng c ch c nng chnh l th c hi n cc cng vi c d ch v (service). Nh ni trn, n u chnh xc th t Linux ch c ngha l nhn. V th khi ni v h i u hnh ni chnh xc hn s l h i u hnh d a trn nhn Linux. Nhn c a HH Linux hi n th i ang c pht tri n d i s lnh o c a Linus Torvalds v phn ph i m t cch t do (v i b n quy n GPL) gi ng nh m t s l ng kh ng l cc chng trnh ng d ng v ti n ch khc. M t trong nh ng k t qu c a vi c phn ph i t do chng trnh ng d ng cho Linux l c nhi u cng ty cng nh nhm cc nh pht tri n c l p pht hnh ra cc b n Linux khc nhau c g i l b n phn ph i Linux. B n phn ph i l m t b cc chng trnh ng d ng bao g m t t c b n ph n chnh c a HH, t c l nhn, h th ng t p tin, h v shell v cc ti n ch, ng th i cn c thm cc chng trnh cho cng vi c hng ngy c a ng i dng. Thng th ng t t c nh ng chng trnh n m trong b n phn ph i Linux u dng b n quy n GPL. R t c th xu t hi n trong b n c ngh r ng b t k ai cng c kh nng cho ra b n phn ph i Linux, hay ni ng hn l b t k ng i no khng l i su t p cc chng trnh t do. V suy ngh c ph n no ng. Tuy nhin cc nh pht tri n c a m t b n phn ph i Linux c n t o ra t nh t m t chng trnh ci t a HH ln my tnh tr ng khng cha c HH no. Ngoi ra, c n tm cch gi i quy t s ph thu c v mu thu n gi a cc gi (v gi a cc phin b n c a gi) chng trnh. V nh chng ta s th y sau khng ph i l bi ton n gi n. Tuy v y, trn th gi i ang c hng trm (hng nghn?) b n phn ph i Linux v m i ngy l i xu t hi n cc b n m i. C th tm th y danh sch tng i y cng v i c i m ng n g n c a m i b n phn ph i trn http://www. linuxhq.com (cn c m t s b n phn ph i khc ti ng Anh). Ngoi ra, trn trang cng nh nhi u trang web khc cn c lin k t n nh ng danh sch b n phn ph i khc, v th n u mu n c th tm th y t t c nh ng g c trn th gi i (h u h t nh ng trang ny dng ti ng Anh v cc b n phn ph i Vi t Nam t c ni n). M t vi tc gi th phn lo i cc b n phn ph i d a trn nh ng tiu ch khc nhau: c u trc h th ng t p tin chng trnh ci t phng ti n dng ci t cc gi chng trnh thnh ph n c a cc ti n ch v chng trnh ng d ng c trong b n phn ph i. M c d h u h t cc tc gi cho r ng s khc nhau gi a cc b n phn ph i l khng c b n. Nhng hi n nay c th chia t nh t 3 nhm b n phn ph i, m i di n c a m i nhm l Red Hat, Slackware v Debian.

1.2 B n phn ph i Linux

11

V y th c n l a ch n b n phn ph i theo tiu chu n no? Theo ki n c a tc gi th i v i ng i dng Vi t Nam c hai tiu chu n: th nh t ph i c giao di n ng i dng ti ng Vi t v th hai ph i c m t nhm cc nh pht tri n h tr b n phn ph i ny. V t t nh t n u nhm cc nh pht tri n ny nh n c ngu n l i t s n ph m Linux c a mnh, t c l lm vi c nh m t cng ty thng m i. Th m ch ch trong kho ng th i gian khng lu m ti s d ng Linux (kho ng 5 nm) c nhi u b n phn ph i Vi t Nam cng nh n c ngoi cho t m bi t th gi i Linux v nhm h tr c a chng khng thu c nhi u l i nhu n v sau m t th i gian ng ng h tr tc ph m c a mnh. i v i ng i dng Linux Vi t Nam hi n th i c hai l a ch n: th nh t, s d ng cc s n ph m Linux ti ng Vi t do m t s ng i t nguy n duy tr; th hai, s d ng cc s n ph m Linux l n c h tr ti ng Vi t. Chng ta s ni n hai s l a ch n ny m t cch k cng hn. L a ch n th nh t, theo ki n c a ti khng c u tin y. L do chnh l cha t c tiu chu n th hai nu trn. Hi n th i c m t b n phn ph i nh v y: vnlinux-CD (cng v i m t vi bi n th ) do anh Larry Nguy n, m t Vi t ki u M duy tr. L a ch n th hai l s d ng cc b n phn ph i h tr ti ng Vi t t t nh Debian, Ubuntu v Mandriva, openSuSE cng ang d n d n h tr ti ng Vi t (http://vi.opensuse.org). L a ch n th hai ny c u tin v: chng c h tr ti ng Vi t v cng ngy cng hon thi n chng c trnh ci t t t, h tr nhi u ph n c ng khc nhau c th ci t thm cc ph n m m khc m t cch d dng ph n l n chng trnh c bin d ch s n cho m i yu c u c a ng i dng nh ng b n phn ph i ny c m t nhm cc nh pht tri n duy tr, c p nh t th ng xuyn thng th ng l theo m t l ch nh s n. Ngoi ra cn m b o l b n s nh n c phin b n m i c a n trong tng lai. Khng s tr ng h p em con b ch . k t thc cu chuy n v l a ch n b n phn ph i Linux c n ni thm l g n y bc Nguy n i Qu (http://vnoss.org) cho ra i m t b n phn ph i m i h ng v ng i dng Vi t Nam FCxVnOSS. B n phn ph i ny d a trn n n t ng c a FC c ng thm giao di n ti ng Vi t v m t s ng d ng mang tnh Vi t Nam nh chng trnh g ti ng Vi t, t i n ti ng Vi t,. . . C n ni vi l i v nh s phin b n. C n phn bi t s phin b n c a b n phn ph i v s phin b n c a nhn. Khi ni n phin b n c a Linux th ng c l phin b n nhn (v m t h i u hnh l Linux ch khi n s d ng nhn Linux). V Linus Torvalds ti p t c i u hnh vi c pht tri n nhn, nn phin b n c a nhn tng ln theo th t , ch khng phn nhnh v nhn ln gi ng nh tr ng h p b n phn ph i. Phin b n nhn Linux th ng c k hi u b ng ba s 9 , phn cch nhau b i d u ch m. V d , b n phn ph i openSuSE Linux 10.1 c d a trn nhn phin b n 2.6.16.13, t c l Linux phin b n 2.6.16.13. Phin b n nhn v i s th hai
i u ny ch ng v i cc phin b n nhn tr c 2.6. T 2.6 tr i Linus v cc nh pht tri n khc th nghi m dng b n s .
9

12

HH Linux: l ch s v cc b n phn ph i

l (v d , 2.5.0) th ng khng c s d ng t o cc b n phn ph i, v l phin b n th nghi m (ch dnh cho pht tri n). Chng c dnh cho nh ng ng i tnh nguy n c mong mu n th nghi m tm ra cc l i. T t nhin phin b n nh v y c th lm vi c, nhng khng b n v ng. Phin b n v i s th hai ch n (v d 2.6.16.13) c coi l lm vi c n nh. T t nhin l b n c th ci t b t k phin b n no, nhng i v i ng i dng m i th nn ch n phin b n nhn v i s th hai trong phin b n l ch n. N u ci t m t b n phn ph i y th ng nhin l a ch n nhn c cc nh pht tri n lm gim b n c, nhng c n bi t cch nh s phin b n n u khi no b n mu n c p nh t nhn Linux c a mnh.

1.3

Yu c u i v i my tnh

Ti c u ni r ng c nh ng phin b n Linux c bi t, lm vi c th m ch trn b x l 8086 v i 512Kbyte b nh , cn phin b n c bi t c th ch y t m t ho c hai a m m khng c n a c ng th ti g p. V th n u b n c m t ci my tnh c, trn khng th ch y n i Windows, th c th s d ng n h c Linux v r t c th s ng c nhin v kh nng c a HH ny. Nhng trong cu n sch ny chng ta s khng xem xt nh ng tr ng h p c bi t nh v y. V HH Linux s d ng ch b o v c a b vi x l, nn ci t HH ny c n t nh t l m t my tnh c b x l 386. Theo cc ngu n thng tin khc nhau th t t c cc bi n th u dng t t: SX, DX v.v. . . Xin ng lo l ng, nh ng my tnh s n xu t g n y p ng c ton b nh ng yu c u a ra v s a ra d i y. Yu c u i v i ph n c ng c a h th ng mu n ci t Linux cn c xc nh b i l a ch n ph n m m c a ng i dng (v t c l s ph thu c vo phin b n c a cc ph n m m v t nhi u vo b n phn ph i). B ng 1.1 d i y s a ra m t vi con s ch v i m c ch gip b n c lm quen, nh ng con s ny l khng chnh xc nhng khng khc bi t nhi u gi a cc b n Linux khc nhau. B ng 1.1: Yu c u i v i ph n c ng Mong mu n c a ng i dng Yu c u, MB B nh a c ng Yu c u nh nh t: ch lm vi c trong giao di n vn 8 200 b n v i dng l nh c a shell, c m t s ng d ng ng i dng nh vim, emacs,. . . Dng c giao di n ho X Window cng v i m t 32 400 s trnh qu n l c a s nh nh nh icewm, fluxbox, windowmaker. Dng mi tr ng lm vi c ho KDE. 128 1000 Ch y cc ng d ng c n nhi u b nh (nh GIMP, 256 1500 cc ng d ng n m trong KOffice, OpenOffice.org). Nh v y Linux c m t u i m l n l kh nng lm vi c th m ch trn nh ng my r t c, m tr c y ch c th dng MS DOS (t t nhin l trong tr ng h p ny chng ta ch thu c ch dng l nh, nhng i u ny khng

1.4 L y Linux

u?

13

ngn c n vi c dng cc my tnh c lm vi c c l i v d lm router10 ). b t u h c Linux th ch c n c m t my tnh v i b x l 486, 16MB b nh v c ng kho ng 300MB. T t nhin i v i dung l ng b nh cng nh c u hnh my ni chung th my cng m nh, cng nhi u b nh , c ng cng r ng th cng t t. Khng c g l th a thi. k t thc xin a ra y tr ng h p c u hnh my c a ti: b x l 686, b nh 256Mb (+256Mb swap), 10GB c ng dnh cho ci t Linux, ph n cn l i dnh cho d li u. Ti hi n s d ng openSuSE Linux 10.1 v i mi tr ng lm vi c KDE. C th lm vi c ng th i nhi u ng d ng yu c u: OpenOffice.org, KBabel, Kile (dng vi t nh ng dng ny), StarDict (chng trnh t i n), Konqueror, GIMP. N u my tnh c a b n c th lm vi c v i cc h i u hnh Windows 2000 v Windows XP th vi c ch y Linux trn n s khng c g kh khn.

1.4

L y Linux

u?

V trong ph n cu i c a chng th nh t chng ta s tr l i ng n g n cho cu h i L y Linux u?. Nh ni trn, Linux cng v i m t s l ng kh ng l cc chng trnh ng d ng c phn ph i g n nh mi n ph. C ngha l ng i dng khng c nh thay i chng trnh ho c mua bn nh ng chng trnh ny, th c ton quy n sao chp ton b b n phn ph i Linux ho c m t ph n b t k c a n ch ng i quen, ho c t i xu ng t Internet ho c mua a CD (DVD) Linux ch nh ng ng i bn hng u trn h ph m khng s b truy c u v vi ph m b n quy n (cc chng trnh c b n quy n thng m i th ng dng t s ng gi a ng i dng v nh phn ph i) c a cc nh (cng ty) pht tri n. Trong s ba phng n k trn th i v i ng i dng Linux Vi t Nam phng n mua CD, DVD l t t nh t. C n ni thm l nh ng a ghi v a h th ng c l i v c th gy m t d li u ho c lm h ng ph n c ng. T t hn h t l nn mua a c a m t cng ty my tnh ho c qua m t c a hng trn m ng. Khi cn c kh nng l a ch n v c b o m l s i c a x u. T t nhin l chnh l nh gi thnh a ph i khng qu cao, gi thnh bn Linux bao nhiu l quy n c a ng i bn (ngoi ra gi thnh cao cn c cc b n phn ph i chuyn nghi p nh Xandros, Novell Desktop,. . . ). Hi n gi trn m ng Vi t Nam xu t hi n m t vi c a hng bn a Linux. a ch c th xin khng a ra y v qu ng co trong th gi i hi n i khng cn l mi n ph. V vi c gi u a ch khng lm nh h ng n nh ng ai c mong mu n mua Linux nghin c u. C n ni ring v h th ng pht a v i b n phn ph i Ubuntu m t cch mi n ph. Ch c n vo a ch http://shipit.ubuntu.com ng k s l ng a b n c n, t t nhin c km theo a ch bu i n, sau m t th i gian kho ng 1 thng 1 thng r i b n s nh n c chng. Theo ti ngh y l cch t t nh t n u b n khng c i u ki n mua a.

10

my gip chuy n h ng cc gi m ng

Chng 2 Ci t h i u hnh Linux


Software is like sex, its good when its free Linus Torvalds.
Thng th ng trn cc a c a b n phn ph i Linux c h ng d n ng n g n cch ci t Linux. Ngoi ra, trn Internet b n c th tm th y r t nhi u cu n sch n v v n ny. V t t c cc b n phn ph i l n (Debian, Slackware, Fedora, Mandrake, ...) u c cu n h ng d n ci t r t chi ti t, cho m i tnh hu ng s d ng. Hy ch i v hy v ng trong tng lai khng xa s c b n d ch Ti ng Vi t c a nh ng cu n sch ny. Chnh v v y trong cu n sch ny, tc gi s khng a ra cc b c c th c a vi c ci t, m xin b n c hy tm cc cu n h ng d n tng ng. Thay vo l nh ng g b n c n bi t v chu n b tr c khi ci t, ng th i, tc gi s i c th v chi ti t vo nh ng g c bi t khi ci t Linux trn my tnh c m t trong cc h i u hnh (HH) Windows cng nh vi c kh i ng nhi u h i u hnh.

V n ch , ph n l n ng i dng Vi t Nam tr c khi b t u h c Linux lm quen v r t c th c kinh nghi m s d ng cc HH dng Windows nh Windows 98, Windows 2000 v Windows XP. V trn th c t th t m th i Linux kh c th l HH u tin m ng i dng lm quen. Nh th , m t cch t nhin, n u ng i dng lm vi c v i HH Windows v quy t nh th nghi m v i Linux, th h khng mu n m t i mi tr ng lm vi c quen thu c c a mnh, cng v i nh ng g t o ra v c u hnh d i d i Windows. R t may l khng nh t thi t ph i nh m t t t c nh ng th . B i v trn m t my tnh c th cng chung s ng ha bnh hai HH v th m ch nhi u hn n a (n u c ch trn a!). Chnh v th , pha d i s ni cch ci t HH Linux trn my tnh ci t m t trong cc h i u hnh c a hng Microsoft.

2.1
T

Chu n b ci t
a CD-ROM a c ng

C th ci t Linux b ng m t trong cc cch sau:

T b n sao chp Linux trn

T my ch t p tin c a m ng n i b qua NFS; T my tnh khc trong m ng n i b qua SMB; T my tnh xa (v d t Internet) qua giao th c FTP;

2.1 Chu n b ci t T m t my ch WWW qua giao th c HTTP.

15

Theo ki n c nhn c a tc gi th thu n ti n v c tnh th c t nh t l ci t Linux t CD-ROM, hn n a vi c mua cc a CD by gi khng gy kh khn g. Tr c khi b t u ci t, hy thu th p (hy vi t ln m t t gi y) t t c nh ng thng tin c u hnh c n thi t c a my tnh. N u nh my tnh c a b n t m th i v n cn lm vi c d i HH Windows 95/98/2000/XP, th b n s tm th y r t nhi u thng tin n u nh n chu t ph i vo bi u t ng My Computer, ch n l nh Properties. y b n c th tm th y g n h t t t c thng tin c n thi t. N u nh b n khng th y thng tin no , th c n tm ki m theo cc cch khc, k c vi c m v my v c nh ng dng ch trn thi t b . gip b n c, xin c a ra y danh sch nh ng thng tin c n thu th p. Xin ng l i bi ng v hy c g ng ghi cng nhi u d li u v m t thi t b cng t t (t t c nh ng thng tin c th tm th y), nh ng d li u ny s c n n khi ci t v c u hnh, khi m vi c tm ki m chng s kh khn hn. BIOS: nh s n xu t; s hi u phin b n. Controller a c ng: lo i (IDE hay SCSI) v dung l ng c a a (n u nh b n c dng a IDE, th c n ki m tra xem BIOS c h tr vi c truy c p 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 s n xu t v s m u m c a adapter SCSI (n u c). Dung l ng c a b nh (tnh b ng Kilobyte CD-ROM: Giao di n (IDE, SCSI, hay giao di n khc); i v i cc a CD-ROM khng ph i IDE, cng nh SCSI - nh s n xu t v s m u m. Chu t: lo i chu t (serial, PS/2, hay bus mouse); giao th c (Microsoft, Logitech, MouseMan, v.v. . . ); s nt; i v i chu t c m vo c ng n i ti p th c n s th t c a c ng . C c mn hnh

16 nh s n xu t; s m u m (hay chipset s d ng) dung l ng b nh ; Mn hnh nh s n xu t s m u m;

Ci t h i u hnh Linux

cc gi tr gi i h n (min, max) c a t n s lm m i theo chi u d c v theo chi u ngang (nh ng gi tr ny b n c ch c th tm th y trong ti li u i km v i mn hnh, Windows khng hi n th nh ng gi tr ny, v chng r t quan tr ng trong khi c u hnh giao di n h a). N u nh b n c mu n k t n i m ng (m UNIX ni chung l HH dnh cho m ng), th hy ghi l i nh ng d li u sau: nh s n xu t v s m u m c c m ng; a ch IP c a mnh; tn c a my tnh trong m ng; m t n m ng con (subnet mask); a ch IP c a gateway; a ch IP c a cc my ch tn mi n (DNS server); a ch IP c a my ch WINS(Windows Internet Name Service); tn mi n c a cng ty b n c. Lo i v nh s n xu t c c m thanh v game controller (n u nh c)

2.2

Phng xa v nh ng l i khuyn

Tr c khi ci t HH Linux sau Windows, r t nn th c hi n vi thao tc phng xa (phng chy hn ch a chy). V r t c th b n c s ph i phn vng l i a, thay i b n ghi kh i ng (Boot Record) v lm vi c v i cc t p tin kh i ng cng nh cc t p tin c u hnh. Cc thao tc ny khng ph i lc no cng em l i em l i m t k t qu theo mu n, v trong tr ng h p x u c th my tnh c a b n c s khng kh i ng n a. C bi t cch thot ra kh i tnh hu ng ny v ph c h i d li u c n thi t khng cn l m t cu h i. Nhng ri vo tnh hu ng nh v y h t s c d dng nh t l v i ng i dng l n u tin ci t Linux. Chnh v v y, u tin, c n t o m t a m m kh i ng hay m t a m m gip ph c h i h th ng (n u b n c cn cha t o). Th hai, c n ghi l i nh ng d li u c gi tr (backup). V th ba, chu n b cc t p tin (a m m, CD) ci t cho h th ng c. M t l i khuyn quan tr ng khc: n u c g x y ra khng theo mu n th khng nn hoang mang. Xin chia s m t kinh nghi m bu n: khi l n u tin tc gi ci Linux trn my tnh c Windows NT, v k t qu l my tnh khng th kh i ng c. Khng hi u h t v n tc gi ngh l khng cn cch g khc ngoi nh d ng l i a v ci t l i t u. By gi th tc gi

2.3 Phn vng trn a v qu trnh kh i ng

17

hi u l c th ph c h i l i n u nh khng quy t nh qu v i vng. V v y c th ni r ng Werner Almesberger ng, khi trong h ng d n s d ng LILO c a ra nh ng l i khuyn sau cho ng i dng khi ri vo tr ng h p kh khn nh v y: Khng ho ng h t. N u nh c g khng lm vi c, hy th m i cch tm ra nguyn nhn, ki m tra l i nhi u l n thao tc c a mnh. Ch sau khi m i th c hi n cc b c s a l i. Hy c ti li u. c bi t trong cc tr ng h p, khi h th ng lm nh ng g b n c khng mong i. Xin thm m t l i khuyn ph bi n sau: * Hy xem cc t p tin log, t c l cc t p tin ghi l i s ki n c a h th ng (c n tm chng trong th m c /var/log). Nh ni trn, qu trnh ci t HH Linux ni ring khng ph i l ti c a cu n sch. Ng i dng c n tm cc cu n h ng d n tng ng. Tuy nhin, tc gi cng mu n a ra vi l i khuyn gip ng i dng a ra quy t nh trong khi ci t. Th nh t, ng v i vng v hy ch c nh ng thng bo s hi n th trn mn hnh, v hy suy ngh k khi ch n cu tr l i. minh ch ng cho l i khuyn ny xin c k l i tr ng h p khi tc gi ci Red Hat 7.1, v t ng nh n ln nt Next, v cho r ng phng n theo m c nh l . K t qu l tc gi khng th truy c p c n my ny qua cc giao th c m ng (telnet, ftp, NFS, Samba), m c d c u hnh giao di n m ng cho my. Nguyn nhn l trong phng n theo m c nh th t ng l a c ci t, v t ng l a ng h t cc truy c p t m ng. m truy c p ny, th trong qu trnh ci t c n ch r cc d ch v c m . Nhng chng ta qu v i vng! Th hai, tc gi khuyn khng nn ng v i vi c t ng kh i ng vo giao di n h a. V cu i cng ng i dng khng kh khn g khi g cu l nh startx, cn vi c c u hnh giao di n h a (n u c g lm vi c khng ng) v i ng i dng m i r t kh thnh cng. Sau khi lm xong cc cng vi c phng xa, c n quy t nh s t ch c kh i ng nhi u HH nh th no, chu n b cc a (phn vng) ci t, t c l c n chia a thnh s phn vng c n thi t. Nhng tr c khi chuy n sang cc b c c th chu n b a, xin c ni qua m t cht v c u trc c a a v qu trnh kh i ng HH. N u ai khng kin nh n c ph n l thuy t ny, th c th b qua chng v chuy n th ng n v n ch n chng trnh kh i ng.

2.3
2.3.1

Phn vng trn a v qu trnh kh i ng


Th no l c u trc hnh h c c a a

Nh b n c bi t, a c ng g m vi a c ph l p t tnh, n m trn cng m t tr c v quay v i v n t c l n. c/Ghi d li u c th c hi n b i cc u c n m gi a cc a ny, di chuy n t tm a ra ra ngoi c a a. Vng trn u c v ra trn cc a khi quay quanh chng g i l rnh (track), cn t p h p cc rnh n m ch ng ln nhau g i l cylinder. M i rnh l i chia thnh cc sector, v c

18

Ci t h i u hnh Linux

th ghi vo m i sector 512 byte thng tin. V th c i m c a m t a th ng l t p h p ba s: s cylinder/s rnh trong cylinder/s sector trn rnh hay cn vi t t t l C/H/S (ba ch ci u tin c a cc thu t ng Ti ng Anh tng ng: Cyliner/Head/Sector). Ba s ny g i l c u trc hnh h c c a a. a v i c u trc hnh h c C/H/S c dung l ng C*H*S*512 byte. a c ng l cc thi t b kh i, t l c v ghi thng tin theo cc kh i, v kch th c nh nh t c a kh i b ng m t sector (512 byte). c th ghi thng tin ln a, c n t u a ng v tr, t c l ch cho controller bi t c n 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 b ng phn vng c a a

Trong cc h th ng Intel a th ng c chia thnh cc phn vng. R t c th nguyn nhn c a vi c phn vng l nguyn nhn l ch s : cc phin b n MS-DOS u tin khng th s d ng c cc a l n, m dung l ng a l i pht tri n nhanh hn kh nng c a DOS. Khi ngh ra vi c chia a thnh cc phn vng. lm c i u ny, trong sector s 0 c a a (sector s 0 c a rnh u tin trong cylinder s 0) ghi nh b ng chia a thnh cc phn vng (partition table). M i phn vng c dng nh m t a v t l ring r . M t tr ng h p ni ring l trong cc phn vng khc nhau c th ci t cc h i u hnh khc nhau. B ng phn vng ch a 4 b n ghi 16 byte cho 4 phn vng chnh. M i b n ghi c c u trc nh sau:
struct partition { char active; /* char begin[3]; /* char type; /* char end[3]; /* int start; /* int length; /* }; 0x80: phn vng kch ho t, 0: khng kch ho t */ CHS sector u tin, 24 bit lo i phn vng (v d , 83 -- LINUX_NATIVE) */ CHS sector cu i cng, 24 bit */ s c a sector u tin (32-bit, tnh t 0) */ s sector c trong phn vng (32 bit) */

B ng phn vng a th ng c t o b i chng trnh fdisk. Trn HH Linux ngoi chng trnh fdisk truy n th ng (tuy v y r t khc so v i chng trnh fdisk trong MS-DOS v Windows), cn c hai chng trnh lm vi c v i phn vng a: cfdisk v sfdisk. Chng trnh cfdisk, gi ng nh fdisk ch dnh lm vi c v i b ng phn vng a: n khng quan tm ch n thng tin c trn a. Ch khc bi t v i fdisk giao di n thu n ti n: ch d n s d ng l nh v h th ng trnh n (th c n). Chng trnh sfdisk c vi kh nng cao hn, v d , cho php thao tc trn cc phn vng c c a a. DOS s d ng tr ng begin v end c a b ng phn vng v Interrupt 13 c a BIOS (Int 13h) truy c p t i a, v th khng th s d ng a c dung l ng l n hn 8,4 Gbyte, ngay c v i cc BIOS m i (v v n ny s ni n sau), cn phn vng th khng th l n hn 2,1 Gbyte (nhng y l do h n ch c a h th ng t p tin FAT16). Linux th ch s d ng tr ng start v length c a b ng phn vng a v h tr cc phn vng ch a n 232 sector, t c l dung l ng c th t 2 Tbyte

2.3 Phn vng trn a v qu trnh kh i ng

19

V trong b ng chia a ch c 4 dng cho cc phn vng, s phn vng chnh trn a ngay t u d h n ch : khng th l n hn 4. Khi m 4 phn vng tr thnh t, th ng i ta sng ch ra phn vng lgc. M t trong s cc phn vng chnh tr thnh m r ng (lo i phn vng - 5 hay F hay 85 trong h c s m i su). V trong phn vng m r ng ng i ta t o ra cc phn vng lgc. Phn vng m r ng khng c s d ng tr c ti p m ch dng ghi cc phn vng lgc. Sector u tin c a phn vng m r ng ghi nh b ng phn vng v i b n u vo: m t dng cho phn vng lgc, m t cho phn vng m r ng khc, cn hai ci cn l i khng c s d ng. M i phn vng m r ng c m t b ng chia c a mnh, trong b ng ny, cng gi ng nh trong phn vng m r ng chnh, ch s d ng c hai dng a ra m t phn vng lgc v m t phn vng m r ng. Nh v y, thu c m t chu i cc m t xch t b ng phn vng, m t xch u tin m t ba phn vng chnh, v m i m t xch ti p theo m t phn vng lgc v v tr c a b ng ti p theo. Chng trnh sfdisk trn Linux cho th y ton b chu i 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 t c khng h n ch , v m i phn vng lgc c th ch a b ng phn vng v cc phn vng lgc c a mnh. Tuy nhin trn th c th v n c nh ng h n ch . V d , Linux khng th lm vi c v i hn 15 phn vng trn cc a SCSI v hn 63 phn vng trn a IDE. Phn vng m r ng trn m t a v t l, hay trong m t phn vng m r ng ch a n (c th g i l m ) ch c th lm m t: khng m t chng trnh phn chia a no trong s c (fdisk v tng t ) c th t o thm m t phn vng m r ng th hai. a trn Linux ni ring ( a v t l) c truy c p qua tn c a thi t b : /dev/hda, /dev/hdb, /dev/sda, v.v. . . Cc phn vng chnh c thm s 14 trong tn thi t b : /dev/hda1, /dev/hda2, /dev/hda3, cn phn vng lgc th c cc tn: /dev/hda5, /dev/hda6, /dev/hda7 . . . (b t u t s 5). T nh ng g c p n trn c th suy ra t i sao l i c th b qua cc tn nh /dev/hda3 hay /dev/hda4 (n gi n l phn vng chnh th ba v th t

20

Ci t h i u hnh Linux

khng c t o ra) v ngay sau /dev/hda2 b n c th y /dev/hda5 (phn vng lgc trong phn vng m r ng /dev/hda2), v sau th vi c nh s l i theo th t thng th ng. Trong Windows cc phn vng lgc nh n c tn (ch ci), b t u t ch ci cu i dng dnh cho phn vng chnh. V d n u m t a c ng c hai phn vng chnh (C: v D:) v m t phn vng m r ng, trong phn vng m r ng t o ra hai phn vng lgc, th nh ng 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 c a cc phn vng a.

2.3.3

Qu trnh kh i ng cc HH c a cng ty Microsoft

D h i u hnh c l g, th c th b t u i u khi n my tnh, c n n p HH vo b nh . V th hy xem xt qua qu trnh kh i ng c a cc HH khc nhau. Chng ta ch quan tm n vi c kh i ng t a c ng, nn s khng xem xt n vi c kh i ng t a m m, CD-ROM v qua m ng. Hy b t u t MS-DOS v MS Windows c (xin ng qun r ng, vi c pht tri n v hon thi n my tnh c nhn song song v i s pht tri n c a HH c a Microsoft v nh ng quy t nh s d ng trong cc HH ny c nh h ng m nh n quy t nh c a cc nh pht tri n thi t b ). Nh b n c bi t, khi b t my tnh u tin s ch y chng trnh POST (Power On Self Test). Chng trnh xc nh dung l ng b nh , th nghi m b nh , v xc nh cc thnh ph n khc (bn phm, c ng. . . ), kh i ng cc th adaptor. Trn mn hnh th ng xu t hi n cc thng bo v dung l ng b nh , v vi c th nghi m b nh , danh sch cc thi t b nh n ra ( a c ng v m m, b x l, c ng COM v v.v. . . ). Sau khi hon thnh vi c th nghi m POST g i Int 19h. Cng vi c c a Int 19h l tm thi t b kh i ng. Vi c tm ki m th c hi n theo th t xc nh trong Setup BIOS v theo cch thm d sector s 0 c a cc thi t b tng ng. N u a c th kh i ng, th trong sector s 0 c a a c b n ghi kh i ng chnh Master Boot Record (MBR). Hai byte cu i cng c a MBR s mu nhi m, l d u hi u cho bi t sector c MBR, v theo a c th kh i ng. Ngoi s mu nhi m MBR cn ch a b ng phn vng a ni trn, v m t chng trnh nh trnh kh i ng chnh, kch th c ch c 446 (0x1BE) byte. B ng 2.1 cho th y c u trc c a sector kh i ng chnh sau khi ci t Windows. B ng 2.1: C u trc c a sector kh i ng chnh D ch chuy n 0x000 0x1BE 0x1FE N i dung M c a trnh kh i ng chnh B ng phn vng a S mu nhi m (0xAA55)

MS-DOS, Windows95 v NT ghi nh DOS MBR trong khi ci t. Ngoi ra cng c th t o MBR c a MS v i cu l nh DOS sau: fdisk /mbr.

2.3 Phn vng trn a v qu trnh kh i ng

21

Xin tr l i v i qu trnh kh i ng. Int 19h c a BIOS n p trnh kh i ng chnh vo b nh my tnh v chuy n quy n i u khi n cho chng trnh ny. Nhng chng trnh b nh ny khng kh nng kh i ng HH; t t c nh ng g m n c th lm l n p vo b nh chng trnh m nh hn trnh kh i ng th hai. lm c i u ny, n tm trong b ng phn vng kch ho t v c vo b nh trnh kh i ng th hai, b t u t sector lgc u tin c a phn vng kch ho t. Hy ch n c m t b t u t . V trnh kh i ng th hai trn cc h th ng khc nhau c di khc nhau. Trong phn vng c nh d ng d i h th ng t p tin FAT, trnh kh i ng th hai chi m m t sector (512 byte). Trong phn vng nh d ng d i h th ng t p tin NTFS, trnh kh i ng th hai chi m vi sector. Trnh kh i ng th hai n p l p chng trnh u tin, c n thi t cho vi c kh i ng h i u hnh. Trong tr ng h p MS DOS chng trnh kh i ng ng n p IO.SYS theo a ch 700h, sau MSDOS.SYS v chuy n quy n i u khi n cho SYSINIT c a mun IO.SYS. N u v l do no khng tm th y trn a phn vng kch ho t, th qu trnh kh i ng s ti p t c v i vi c x l Int 18h. Tr ng h p ny trn th c t r t hi m khi s d ng, nhng kh nng ny c th c ch trong tr ng h p no . Trong khi kh i ng t xa, khi h i u hnh kh i ng t my ch , th Int ny c POST chuy n h ng ln ROM c a c c m ng. i v i cc HH khc c a Microsoft th qu trnh kh i ng di n ra tng t . Windows95 kh i ng gi ng nh DOS nhng thay th IO.SYS v MSDOS.SYS b i cc t p tin c a mnh. Cc t p tin DOS c gi l i d i cc tn tng ng IO.DOS v MSDOS.DOS. Khi b n c ch n kh i ng DOS, Windows95 s i tn cc t p tin c a mnh v i ph n m r ng w40 v ph c h i tn ban u c a cc t p tin h th ng c a DOS. Qu trnh kh i ng ti p t c v i vi c n p IO.SYS. Nh th , sector kh i ng c a DOS v Windows95 l nh nhau. Windows NT4 s d ng MBR DOS, nhng thay th b n ghi kh i ng c a phn vng kch ho t b ng cch thay th NTLDR vo ch IO.SYS. y l m t chng trnh m ng v c th lm c nhi u th . V d , c th tm t p tin boot.ini v n u nh tham s timeout l n hn 0, th a ra trnh n (th c n) kh i ng. M i dng c a ph n [operating systems] trong t p tin boot.ini xc nh m t phng n (m t HH) kh i ng v c vi t theo m u sau: a_ch _trnh_kh i_ ng_th _hai=tn_g i_c a_phng_n a ch c a trnh kh i ng th hai c th l m t phn vng c th no c a a cng nh t p tin kh i ng. D i y l m t v d t p 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"

N u ng i dng ch n NT, th s kh i ng theo a ch phn vng c ch trn dng u tin. Trn dng tng ng v i phng n Microsoft Windows, ch

22

Ci t h i u hnh Linux

a ra C:\, v tn c a t p tin kh i ng c l y theo m c nh: bootsect.dos. T p tin c n p vo b nh v qu trnh kh i ng c ti p t c gi ng nh khi b n ghi kh i ng c n p b i m chng trnh t MBR. i v i vi c kh i ng cc h th ng khc, c th s d ng cch . Ch c n thm vo boot.ini cc dng ch a lin k t n t p tin kh i ng khc. Khi ch n cc dng ny s kh i ng HH tng ng. Trong v d trn Linux cng c kh i ng theo cc ny. Trong t p tin C:\BOOTSECT.LNX c n ghi n i dung c a b n ghi kh i ng, t o b i Linux (ni ng hn LILO, trnh kh i ng tiu chu n c a Linux).

2.3.4

V n v i cc a l n

Trn MS-DOS v cc phin b n u tin c a Windows truy c p t i a (trong c c b c kh i ng u tin c a HH) c t ch c qua Int 13 (Int 13h) c a BIOS. Khi ny s d ng s nh a ch sector trn a trn c s C/H/S (xem trn). Chnh xc hn: AH ch n thao tc; CH 8 bit nh hn c a s cylinder; CL 7-6 bit tng ng bit l n c a s cylinder, 5-0 tng ng s sector; DH s c a u c; DL s c a a(80h hay 81h). (C n lu r ng vi c nh s cylinder v t l v rnh th ng b t u t 0, cn sector trn rnh nh s b t u t 1). Tuy nhin trn th c 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 v n khng th lm vi c v i a dung l ng l n hn 1024*63*16*512 = 528 Mbyte. v t qua h n ch ny, ng i ta p d ng nhi u cch lu c khc nhau. V d , Extended CHS (ECHS) hay Large disk support (i khi cn g i l Large) s d ng ba bit cha dng n c a s th t u c tng s cylinder. Cch ny cho pehsp s d ng c u trc hnh h c gi m o c a a v i 1024 cylinder, 128 u c v 63 sector/rnh. Bi n i Extended CHS thnh a ch CHS th c (c th ch a n 8192 cylinder) c BIOS th c hi n. Cch ny cho php lm vi c v i a c dung l ng n 8192*16*63*512 = 4 227 858 432 byte hay 4,2 Gbyte. Nhng cc nh pht tri n cng ngy cng tng m t ghi c a a, s a v s rnh, v cn pht minh ra cc phng php khc tng dung l ng a. V d , s sector trn rnh khng cn c nh m tr thnh khc nhau trn cc rnh khc nhau (trn cc rnh n m g n ra ngoi c a a, di hn, s sector c tng ln). K t qu l b ba s C/H/S khng cn ph n nh ng c u trc hnh h c c a a, v cc phin b n BIOS c khng th h tr truy c p t i ton b khng gian a. Khi ng i ta ngh ra phng php khc lm vi c v i cc a ln qua Int 13h - nh a ch cc kh i theo ng th ng (Linear Block Addressing hay LBA). Khng i su vo chi ti t, c th ni r ng t t c sector trn a c nh

2.4 L a ch n trnh kh i ng

23

s m t cch tu n t , b t u t sector u tin trn rnh s 0 c a cylinder s 0. Thay vo ch a ch CHS m i sector nh n c m t a ch lgc s th t c a sector trong t ng s t t c sector. Vi c nh s sector lgc b t u t 0, trong sector s 0 ch a b n ghi kh i ng chnh (MBR). Trong Setup BIOS h tr bi n i s th t theo ng th ng thnh a ch CHS c d ng H tr LBA. Nh v y, trong cc phin b n BIOS m i th ng c l a ch n v i ba phng n: Large, LBA, v Normal (phng n cu i cng c ngha l khng th c hi n bi n i a ch ). Tuy nhin trong ch LBA vi c s d ng a v t l v n c th c hi n qua Int 13h, m Int 13h v n s d ng b 3D (C,H,S). V nguyn nhn ny xu t hi n h n ch ln dung l ng c a a: BIOS, v theo , MS-DOS v cc phin b n Windows u tin khng th nh a ch cc a c dung l ng l n hn 8,4 Gbyte. C n ch r ng h n ch ni trn ch p d ng v i cc a c giao di n IDE. Trong cc controller c a a SCSI, s c a sector c chuy n vo cc l nh SCSI, v sau t a tm ra v tr c n thi t, v th h n ch ln dung l ng a khng xu t hi n. M t l n n a mu n nh c l i r ng, t t c nh ng h n ch ni trn ch c ngha trong giai o n kh i ng HH. B i v Linux v cc phin b n Windows m i nh t khi lm vi c v i a khng cn s d ng Int 13 c a BIOS, m s d ng driver ring c a mnh. Nhng tr c khi c th s d ng driver c a mnh, h th ng ph i c n p. V th trong giai o n kh i ng u tin b t k h th ng no cng c n s d ng BIOS. i u ny h n ch vi c t nhi u h th ng ra ngoi vng 8 Gbyte a u tin: chng khng th kh i ng t , m c d sau khi kh i ng th c th lm vi c v i cc a c dung l ng l n hn nhi u. c th hi u cch thot kh i nh ng h n ch ny, chng ta c n m t cht ki n th c v qu trnh kh i ng c a HH Linux.

2.4
2.4.1

L a ch n trnh kh i ng
Trnh kh i ng GRUB

GRUB (GRand Unified Bootloader) trnh kh i ng h t s c m nh c kh nng kh i ng r t nhi u HH mi n ph cng nh HH thng m i. GRUB c Erich Boleyn vi t vo nm 1995 kh i ng h th ng GNU Mach, v khng th s d ng nh ng trnh kh i ng khc. Sau vo nm 1999 Gordon Matzigkeit v Yoshinori K. Okuji chuy n GRUB thnh m t gi chng trnh GNU, a chng trnh ny thnh m t ph n m m m ngu n m . M c d m i ra i v s phin b n cn r t nh 1 nhng y l s l a ch n t t i v i ph n l n ng i dng my tnh c nhn. N u khng c nhu c u c bi t no th b n nn ch n trnh kh i ng ny. Cc b n phn ph i Linux l n (Debian, SuSE, Fedora,. . . ) cng chuy n sang s d ng GRUB lm l a ch n theo m c nh. M t trong nh ng tnh nng quan tr ng c a GRUB l tnh m m d o. GRUB c th hi u cc h th ng t p tin v nh d ng th c thi c a nhn, v th b n c th n p HH theo cch a thch. Ngoi ra, n u khng mu n dng giao di n
1

hy so snh s phin b n c a GRUB v LILO

24

Ci t h i u hnh Linux

dng l nh, th b n c th ci t v s d ng giao di n th c n v thay i giao di n th c n theo mong mu n c a mnh. M t i m m nh khc c a GRUB l grub shell c th ch y khi b t u kh i ng ho c sau khi kh i ng xong h th ng. B ng grub shell b n c th gi l p (emulate) trnh kh i ng ny v ci t GRUB. By gi chng ta xem xt ng n g n v tn g i thi t b dng trong GRUB, v c php thi t b trong trnh kh i ng ny c khc m t cht so v i nh ng g m b n th y trn nh ng h th ng c a mnh. B n c n hi u c php ny bi t cch ch ra m t a hay phn vng no . V d m t c php l: (fd0) Tr c tin c n ni GRUB yu c u t t c cc tn thi t b ph i t trong ngo c ( v ). Ph n fd c ngha l a m m. S 0 ch ra s th t c a , m b t u t 0. V d 2: (hd0,1) y hd c ngha l c ng. S nguyn 0 u tin cho bi t s th t c a , t c l c ng th nh t. S nguyn th hai (1) cho bi t s th t c a phn vng (chng ta khng xem xt cc HH khc Linux). Xin nh c l i m t l n n a l cc s m u b t u t s khng 0. Trong tr ng h p ny y l phn vng th hai c a c ng th nh t. GRUB s d ng m t phn vng c a a ch khng ph i ton b a. V d 3: (hd0,4) y l phn vng m r ng (extended partition) th nh t c a a c ng th nh t. Ch r ng cc phn vng m r ng c m b t u t 4 khng ph thu c vo s phn vng chnh (primary partition) th c t c trn a. C n ch thm l GRUB khng phn bi t IDE v SCSI. N m s th t b t u t 0 khng ph thu c vo d ng a. Lm sao ch ra m t t p tin? Hy xem v d sau y: (hd0,0)/vmlinuz Dng ny ch ra t p tin vmlinuz n m trn phn vng u tin c a c ng u tin. H t s c n gi n! Thng tin trong ph n ny s gip b n hi u c c u hnh c a GRUB s ni n s p t i y.

2.4.2

Trnh kh i ng LILO

Trnh kh i ng LILO c vi t b i Werner Almesberber. LILO c th kh i ng nhn Linux t a m m, a c ng, v cng c th kh i ng cc h i u 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 ch n n 16 h i u hnh khc nhau kh i ng. LILO khng ph i l chng trnh n l m l m t b g m nhi u chng trnh: trnh kh i ng, cc chng trnh s d ng ci t v c u hnh trnh kh i ng, v cc t p tin ph c v :

2.4 L a ch n trnh kh i ng

25

chng trnh /sbin/lilo, ch y d i Linux, ph c v ghi t t c thng tin c n thi t trong giai o n kh i ng vo cc ch tng ng. C n ch y chng trnh ny sau m i l n c thay i trong nhn hay trong t p tin c u hnh LILO; cc t p tin ph c v , c n cho LILO trong th i gian kh i ng. Nh ng t p tin ny th ng n m trong th m c /boot. Quan tr ng nh t trong s chng l b n thn trnh kh i ng (xem pha d i) v t p tin map (/boot/map); trong t p tin ny c ch ra v tr c a nhn. M t t p tin quan tr ng khc t p tin c u hnh LILO; th ng c tn /etc/lilo.conf; trnh kh i ng y l ph n LILO c n p vo b nh u tin qua Int c a BIOS; trnh kh i ng n p nhn Linux hay sector kh i ng c a h i u hnh khc. Trnh kh i ng g m c hai ph n. Ph n th nh t c ghi vo sector kh i ng v ph c v n p ph n th hai, c kch th c l n hn r t nhi u. C hai ph n th ng c ghi trn a trong t p tin /boot/boot.b. C n nh r ng, nh d ng c a sector kh i ng t o ra b i LILO khc v i nh d ng MBR c a DOS. V th n u ghi sector kh i ng LILO vo MBR, th cc h i u hnh ci c a Microsoft s ng ng kh i ng (n u nh khng c cc bi n php b sung). Sector kh i ng c a LILO c th c thi t k s d ng nh sector kh i ng c a phn vng, trong c ch cho b ng phn vng. Sector kh i ng c a LILO trong khi ci t c th t vo nh ng ch sau: sector kh i ng c a a m m trong nh d ng Linux (/dev/fd0, . . . ); MBR c a a c ng u tin (/dev/hda, /dev/sda, . . . ); sector kh i ng c a phn vng chnh v i h th ng t p tin Linux trn a c ng u tin (/dev/hda1, /dev/hda2, . . . ); sector kh i ng c a phn vng lgc trong phn vng m r ng a c ng u tin (/dev/hda5, . . . ). S th t l ph n l n chng trnh d ng fdisk khng ra kh nng kh i ng kh i ng t phn vng m r ng v t ch i vi c kch ho t phn vng ny. V v y trong thnh ph n LILO c ch a m t chng trnh c bi t (activate) cho php v t qua h n ch ny. Tuy nhin chng trnh fdisk c a b n phn ph i Linux h tr kh nng kch ho t phn vng m r ng. C n s d ng ty ch n -b ho c bi n BOOT. Sector kh i ng c a LILO khng th t vo cc ch sau: sector kh i ng c a a m m hay phn vng chnh, v i nh d ng h th ng t p tin khc Linux; trong phn vng swap c a Linux; trn a c ng th hai. Ngoi ra, c n nh r ng, LILO trong th i gian kh i ng c n nh ng t p tin sau:

26 /boot/boot.b; /boot/map (t o ra b i l nh /sbin/lilo);

Ci t h i u hnh Linux

t t c phin b n nhn kh i ng (n u b n c ch n phin b n nhn khi kh i ng); sector kh i ng c a cc h i u hnh khc m b n c mu n kh i ng qua LILO; t p tin ch a cc thng bo a ra khi kh i ng (n u c xc nh). Nh v y, sector kh i ng LILO cng nh nh ng t p tin li t k (trong s c cc t p tin b n c s ci t sau ny) c n n m trong ph m vi 1024 cylinder u tin c a a c ng, b i v chng c n c truy c p qua BIOS. Xem ph n ni v h n ch c a BIOS trn. B t u t phin b n 21, LILO a ra mn hnh trnh n (th c n) cho php ch n h th ng kh i ng (tr c y c n nh n phm Tab g i trnh n ny).

2.4.3

Cc trnh kh i ng khc

Ngoi GRUB v LILO kh i ng Linux c th kh i ng cc trnh kh i ng khc. N u nh tr c khi ci t Linux c HH Windows NT/2000/XP, th trnh kh i ng b n c c th s d ng l OS Loader c a NT. So snh v i LILO th trnh kh i ng OS Loader c t nh t hai u th . Th nh t, t t c c u hnh c khng b m t (chng ta c th ch n kh i ng Windows hay Linux theo l a ch n), v th hai, c th ci t Linux ln a m LILO khng th kh i ng, v d , a th hai trn controller th hai (Secondary Slave). N u nh tr c khi ci t Linux b n 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 n u nh v m t l do no b n c khng mu n ci t LILO, th c th s ng chng trnh kh i ng loadlin.exe (th ng i km v i b n phn ph i Linux); Th i gian g n y trong thnh ph n b n phn ph i Linux th ng c chng trnh kh i ng GRUB. Trong thnh ph n OS/2 c a cng ty IBM c chng trnh kh i ng Boot Manager. Trong r t nhi u h ng d n ng i ta khuyn dng chng trnh ny t i ch c kh i ng nhi u HH. Trong cc ngu n thng tin khc nhau cn nh c n chng trnh System Commander; Thm m t trnh kh i ng khc c trong thnh ph n gi PartitionMagic c a cng ty Power Quest. Chng ta s ni v chng trnh ny trong ph n nh ti p theo.

2.5 Chu n b cc phn vng trn a

27

Ngoi ra, tc gi cn th y ni n m t lo t trnh kh i ng khc (m t s c th tm th y trong th m c public/ftp/pub/Linux/system/boot/loaders c a ftp://metalab.unc.edu/. Nhng v ti khng s d ng nh ng chng trnh ny, nn khng th ni c th cch s d ng chng. V t t c nh ng l i khuyn dng sau c a tc gi s d a trn vi c s d ng LILO, NT Loader v loadlin.exe. N u nh c mu n ci t chng trnh kh i ng khc, th b n c c n c h ng d n ci t v s d ng c a n.

2.4.4

Cc phng n kh i ng

Nh v y, theo ki n c a tc gi c cc phng n kh i ng sau: N u trn my ch c m t h i u hnh Linux duy nh t, hy dng GRUB. N u ci t Windows NT hay Windows 2000/XP, th hy s d ng GRUB. N u c Windows 95 hay Windows 98 trn FAT16, v b n c khng mu n ci t chng trnh kh i ng no khc, th c th s d ng GRUB ho c LILO, ho c u tin ch y DOS v sau kh i ng Linux nh chng trnh loadlin.exe (hay m t chng trnh tng t , c vi chng trnh nh v y, nhng chng ta s khng xt n). N u ci t Windows 95 OSR2 hay Windows 98 trn FAT32, v b n c khng mu n ci t thm chng trnh kh i ng, th c n s d ng loadlin.exe. R t nhi u HOWTO kh ng nh r ng khng c n s ng LILO, n u nh phn vng kch ho t c nh d ng FAT32, m c d tc gi khng r nguyn nhn. Tuy nhin th nghi m kh i ng Linux qua NT Loader, ci t trn phn vng FAT32, c a tc gi k t thc khng thnh cng. V th , trong tr ng h p ny tc gi ph i s d ng chng trnh loadlin.exe. Chng trnh ny hon thnh t t nhi m v , v t o cho tc gi m t n t ng t t, v th tc gi khuyn b n c s d ng loadlin.exe kh i ng Linux. Trong nh ng ph n ti p theo tc gi s cho bi t cch ci t Linux, s d ng t t c b n phng n kh i ng: qua trnh kh i ng NT Loader, trnh kh i ng GRUB, trnh kh i ng LILO v trnh kh i ng loadlin.exe. Tuy nhin tr c khi ci t trnh kh i ng c n chu n b cc phn vng trn a, hay t nh t l ngh cch t ch c chng.

2.5
2.5.1

Chu n b cc phn vng trn a


L i khuyn khi t o phn vng

a ra l i khuyn y khng ph i l vi c d dng, v phn vng a ph c thu c r t nhi u vo thch v nhu c u c a ch nhn a. Nhng cng xin th a ra vi ngh sau. Tc gi s t tn a v phn vng theo tiu chu n c a Linux, t c l /dev/hda, /dev/hdb, v.v. . . i v i a v /dev/hda1, /dev/hda2, v.v. . . i v i cc phn vng.

28

Ci t h i u hnh Linux

Vi c phn chia a thnh cc phn vng l c n thi t, b i v Windows v Linux s d ng cc cch lu tr thng tin trn a v sau c chng t a khc nhau. Chnh v th t t hn h t l dnh cho m i h i u hnh m t (ho c th m ch m t vi nh chng ta s th y d i) phn vng ring. u tin chng ta hy xem xt m t tr ng h p n gi n dung l ng a c a b n c khng v t qu 8,4 Gbyte (ni chnh xc hn s cylinder khng v t qu 1024). Trong tr ng h p ny m i th u n gi n: b n c ch vi c chia a lm sao ch cho h i u hnh s ci t. C th s d ng d li u cho bi t kch th c a nh nh t c n thi t ci t h i u hnh v i c u hnh c b n trong b ng 2.2. B ng 2.2: Nhu c u s d ng khng gian a c a HH H i u hnh Windows 95 Windows 98 Windows NT Windows 2000 Linux Red Hat 6.2 (Workstation v i KDE) Yu c u 100 Mbyte 200 Mbyte 200 Mbyte 700 Mbyte 700 Mbyte

Tuy nhin xin hy nh r ng, khng nh ng ph i tnh kch th c cc t p tin c a b n thn h i u hnh, m cn ph i tnh c kch th c c a cc chng trnh b n c d tnh ch y. V cn ph i dnh m t ph n d tr khng nh cho cc chng trnh s ci t sau ny (khng th trnh kh i!). Hy tnh r ng, 700 Mbyte dnh cho Linux trong b ng ni trn ch dnh cho cc chng trnh ci t cng v i Linux theo m c nh, trong s c, v d , chng trnh so n th o r t m nh Lyx. i v i Windows cng tng t nh v y. Theo kinh nghi m c a tc gi th lm vi c v i Windows 95/98, Windows NT v Linux cc phn vng v i kch th c 800-1000 Mbyte l (t t nhin, n u b n c khng ci t cc gi chng trnh l n, nh OpenOffice.Org), cn i v i Windows 200 th c n phn vng l n hn. By gi chng ta s xem xt v n chia cc phn vng cho Linux. y khng th ch chia m t phn vng. Th nh t, c n chia m t phn vng swap ring bi t cho Linux. Khi xc nh dung l ng c a phn vng swap Linux c n tnh n nh ng y u t sau: Trong Linux, RAM v khng gian swap h p l i t o thnh b nh o chung. V d , n u b n c c 256 MByte RAM v 128 Mbyte khng gian swap, th s c 384 Mbyte b nh o. lm vi c v i Linux c n t nh t 16 Mbyte b nh o, v th n u b n c ch c 4 Mbyte RAM, th c n phn vng swap khng nh hn 12 Mbyte. Kch th c c a phn vng swap c th l n bao nhiu ty thch, tuy nhin khng c n c u hnh qu nhi u n u khng c n thi t. Thng th ng ch c n dng swap khi my t b nh RAM ho c ch y my ch v i nhi u ng d ng

2.5 Chu n b cc phn vng trn a

29

n ng. Trong t t c m i tr ng h p t t nh t trnh dng swap v n ch m hn RAM nhi u.2 Khi tnh kch th c c a khng gian swapping, c n nh r ng kch th c qu l n c th l v ch. Trn my tnh v i 16 Mbyte RAM khi ci t Linux v i c u hnh chu n v cc chng trnh ng d ng chu n th 48 Mbyte khng gian swapping l . Cn n u ci t Linux v i c u hnh nh nh t, th khng c n n khng gian swap. T t nhin, kch th c chnh xc c a khng gian swap ph thu c l n vo chng trnh s c ci t. Ni chung, ch nn suy ngh v v n dung l ng c a phn vng swap khi c m t a nh v t b nh RAM. Trong tr ng h p ng c l i hy phn chia t ng s dung l ng c a b nh o (g m RAM v phn vng swap) khng nh hn 128 Mbyte. Cn n u nh b n c c 128 Mbyte RAM hay nhi u hn, th phn vng ny c th khng c n thi t. T t c cc ph n cn l i c a Linux v cc chng trnh h tr theo nguyn t c c th t vo m t phn vng. Tuy nhin, vi c t h th ng t p tin Linux ln vi phn vng ring r l c ngha. V d , c nh chuyn gia khuyn nn dnh cho h th ng t p tin Linux ba phn vng (n u tnh c swap th thnh 4). Phn vng th nh t (theo ki n c nhn tc gi , 1 Gbyte l ) s ch a h th ng t p tin g c (/). Phn vng th hai dnh cho th m c /home. Cn phn vng th ba c g n vo th m c /usr. Vi c phn chia nh v y d a trn nh ng l l sau. D HH Linux c n nh v ng tin c y n u, th th nh tho ng cng c n ci t l i. V d , b n c mu n c p nh t phin b n m i c a b n phn ph i, ho c v t kinh nghi m s d ng nn lm h ng t p tin h th ng quan tr ng, ho c n gi n l mu n ci t m t b n phn ph i khc. N u nh t t c c ci t vo m t phn vng, th khi ci t l i nh ng d li u lm ra v ghi nh trong th m c c nhn s b m t (n u khng c b n sao chp). Ngoi ra, s b m t c nh ng chng trnh ci t m ngu n, hay ci b ng phng php khc. Ph n l n nh ng gi chng trnh ny c ci vo th m c /usr. N u dnh cho th m c ny m t phn vng ring v khi ci t khng nh d ng l i chng, th nh ng chng trnh ni trn s c gi l i v c th s lm vi c (r t c th c n vi c u hnh nh ) sau khi ci t l i h th ng. Trong tiu chu n v h th ng t p tin c a Linux FHS (c th xin xem chng ??) cng c l i khuyn v vi c t th m c /usr ln m t phn vng ring. Theo tc gi th y, nh ng ki n ni trn b n c t tm ra phng n phn chia a c a mnh, trong tr ng h p ch c m t a nh . By gi chng ta xem xt tr ng h p a v i s cylinder l n hn 1024. T nh ng g ni n ph n tr c (h n ch dung l ng a c ng), c n t chng trnh kh i ng trong ph m vi 1024 cylinder u tin. Nhn ti n, NT Loader khng nh t thi t ph i t vo phn vng NTFS, cng nh khng nh t thi t ph i t vo phn vng ch a cc t p tin khc c a HH. Nh ni trn, i v i Linux c th t th m c g c cng v i th m c con /boot vo cc cylinder th p (trong vng 1024 u tin), cn cc th m c khc ch no ty thch. Nh v y trong tr ng h p ny, nh ng ngh c a tc gi cho ra b ng t ng k t sau:
2

Xin cm n bc Tony L v m c ny

30

Ci t h i u hnh Linux ph n kh i ng c a t t c cc h th ng Microsoft t vo phn vng chnh u tin c a a, v i nh d ng FAT16 (DOS); phn vng chnh ti p theo dnh cho th m c g c (/), kch th c kho ng 1 Gbyte; phn vng chnh th ba dnh cho swap c a Linux (l i khuyn v kch th c c a phn vng ny xem trn); ph n cn l i c a a t thnh phn vng m r ng; trong phn vng m r ng t o cc phn vng lgc cho m i HH s ci t: Windows 98, Windows NT/2000/XP, v ng th i cho cc h th ng t p tin /home v /usr c a HH Linux (trong /home s t cc t p tin ring c a ng i dng, cn trong /usr chng trnh s ci t).

T t nhin, n u nh b n c ch c Windows 95 v i FAT16, th c th Windows trn phn vng u tin. N u nh trn my ci t Windows NT hay c FAT32, th m t phn vng FAT16 cng khng th a. Th nh t, k c trong tr ng h p h th ng c v n , b n c c th kh i ng t a m m DOS (t m th i khi cha lm quen v i Linux m t cch t ng t n) v th y c r ng a c ng lm vi c bnh th ng. Th hai, h th ng t p tin FAT16 c h tr trn m i HH, trong c Linux, v th phn vng ny c th ph c v cho vi c trao i t p tin gi a cc h th ng. Nhng khng nn phn vng ny l n, v FAT16 s d ng khng gian a r t khng h p l. Chnh v v y hy dnh cho phn vng ny kho ng 256 ho c 512 Mbyte. Nh ng l i khuyn ny a ra v i gi thi t r ng, b n c ch c m t a c ng. N u nh b n c c 2, th v n s d ng c nh ng l i khuyn ny, ch c i u phn vng swap t t hn t trn a khc v i a dnh cho Linux. Ng i ta ni r ng nh v y tng t c lm vi c trong Linux (cng d hi u v u c t ph i ch y hn).

2.5.2

Chng trnh phn chia

Sau khi hon thnh k t ho ch chia a, c n l a ch n cng c a k ho ch ny thnh hi n th c. Chng trnh phn chia a c bi t n nhi u nh t l fdisk; trn m i h i u hnh u c phin b n ring c a chng trnh ny. V khng c n g hn ngoi chng trnh ny, n u nh phn chia a tr ng, khng ch a b t k d li u no. Nhng chng ta ang xem xt tr ng h p c HH no trn a v c n phn chia a m khng lm m t thng tin. fdisk khng thch h p cho nh ng m c ch nh v y. Trong thnh ph n cc b n phn ph i Red Hat v BlackCat (r t c th trong cc b n phn ph i khc) c chng trnh fips, ph c v cho phn chia a. Tuy nhin, theo ki n c a ng i dng th khng nn s d ng chng trnh ny. V th l i khuyn c a tc gi v i b n c, nh ng ng i dng Linux m i n u nh mu n phn chia l i a m khng lm m t thng tin, th hy tm chng trnh Partition Magic c a cng ty Power Quest (http://www.powerquest.com) v s d ng chng trnh ny.

2.6 Windows NT v Linux: kh i ng qua NT OS Loader

31

Th nh t, chng trnh ny cho php phn chia l i a m khng lm m t thng tin (t c l, t t c nh ng ci t v c u hnh tr c s c ghi l i). Khi ny, khng ch t o c phn vng m i t ch tr ng trn a, m cn c th di chuy n cc phn vng c theo mu n. Th hai, chng trnh ny (th m ch trong phin b n dnh cho DOS) cung c p m t giao di n h a d s d ng c h tr chu t, v m i thao tc cng nh thay i u th y r rng. i u ny r t quan tr ng v i ng i dng m i. Khi t o phn vng c n khng cho ranh gi i gi a cc phn vng c t l n nhau. Tc gi cho r ng, nh ng thng tin a b n c l p k ho ch v th c hi n vi c phn chia a thnh cc phn vng. V th ti p theo chng ta s xem xt cc phng n ci t hai HH trn m t my tnh.

2.6

Windows NT v Linux: kh i ng qua NT OS Loader

Trong ph n ny, khi ni v Windows NT xin ng m hi u c Windows 2000 v NT, v quan h c a chng i v i vi c ci t Linux hon ton gi ng nhau. Chng ta gi thi t l Windows NT c ci vo phn vng /dev/hda2 (n u nh b n c nh , /dev/hda1 s dnh cho phn vng FAT16). N u HH Windows NT c ci t, ngha l trnh kh i ng OS Loader cng c ci t. V nh th c th s d ng chng trnh ny kh i ng Linux. Tc gi hy v ng r ng b n c sao lu nh ng thng tin c gi tr c a mnh. Cc b c ci t c th m t nh sau: 1. N u nh b n c cha ci t Linux bao gi , th tr c khi b t u c n chu n b a m m kh i ng v ph c h i Windows NT. t o a m m kh i ng ch c n nh d ng l i a m m, r i sao chp ln cc t p tin ntldr, ntdetect.com v boot.ini t th m c g c c a a kh i ng NT. Chng trnh t o a ph c h i Windows 2000/XP c th ch y t trnh n h th ng (l nh Backup trong Start/Program/Accessories). 2. Dng chng trnh Partition Magic l y m t ph n a tr ng v t t o ra phn vng v i d ng ext2(3) (h th ng t p tin Linux) v phn vng swap. Cch tnh kch th c c a chng ni trn. 3. Ci t Linux theo ch d n c a b n phn ph i. Trong khi ci t c n ch n nh ng i m sau: th nh t, trong qu trnh ci t nh t nh ph i t o ra cc a m m kh i ng Linux. T c l c n tr l i Yes, make a BOOT DISK (hay tng t th , ty thu c vo b n phn ph i) khi c h i c t o a m m kh i ng hay khng. a m m ny s c dng n sau. Ngoi ra, c th s d ng a m m ny kh i ng Linux. y cng l m t phng n kh i ng, v hn n a khc v i a m m kh i ng DOS, sau khi kh i ng h th ng khng cn yu c u a m m n a, c th b n ra kh i , s d ng c cc a m m khc. Tuy nhin

32

Ci t h i u hnh Linux cch kh i ng ny cng c i u ti n, v th khng nn s d ng th ng xuyn. Ch s d ng trong tr ng h p b t c d. a m m ny cn c n thi t cho c u hnh kh i ng nhi u HH. th hai, khi ci t Linux c n ci LILO vo sector u tin c a phn vng dnh cho th m c g c (/) c a Linux, ch khng ph i vo sector kh i ng chnh c a a (MBR). Chng ta gi thi t Linux c ci vo phn vng /dev/hda3. Nh v y LILO s c ci vo sector u tin c a /dev/hda3 Theo nguyn t c, n u nh b n c ci LILO vo MBR, th khng ph i m i th h ng h t. K t qu cu i cng (kh i ng qua NT Loader) v n c th t c nhng c n b ra m t cht cng s c. V n ch , nh d ng MBR t o b i LILO v Windows (DOS) khc nhau. V th n u b n c ci LILO vo MBR, th c u ph c h i l i MBR c a Windows. Tc gi cng s ni cch ph c h i, nhng t t hn h t l b n c ci LILO ngay l p t c vo sector u tin c a phn vng ci Linux. 4. Sau khi ci t xong, kh i ng Linux b ng a m m (n u nh b n c ci LILO vo phn vng c a Linux v khng ng g n MBR, th y l kh nng duy nh t). 5. Sao chp sector kh i ng c a Linux vo m t t p tin; t p tin ny s c n trnh kh i ng Windows NT/2000 c th kh i ng Linux. Vi c sao chp th c hi n nh sau: u tin g n m t a m m tr ng (m i mua th cng t t), [root]# mount -t vfat /dev/fd0 /mnt/floppy chuy n vo th m c /mnt/floppy [root]# cd /mnt/floppy v th c hi n cu l nh
[root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1

ghi n i dung sector kh i ng c a a /dev/hda3 vo t p tin /mnt/floppy/bootsect.lnx3 6. Ti p theo c n kh i ng l i vo Windows NT, b ng cu l nh: [root]# shutdown -h now
Ghi ch: n u a C: (/dev/hda1) c nh d ng FAT, th c th t o t p tin bootsect.lnx trong th m c g c c a a C:. Tc gi khng bi t (cha th ) c th kh i ng khng c n a m m khng, n u phn vng chnh u tin c nh d ng NTFS. Tuy nhin y cng khng c v n g, ch c n sao chp sector kh i ng qua a m m nh ang trnh by. T m th i nhn Linux cn cha h tr t t vi c ghi ln phn vng NTFS.
3

2.6 Windows NT v Linux: kh i ng qua NT OS Loader

33

V MBR cha c g thay i, nn Windows NT s kh i ng. Trong NT c n sao chp t p tin bootsect.lnx vo th m c g c c a a C:, hay chnh xc hn l vo th m c g c c a phn vng m t kh i ng Windows NT. y c th l phn vng FAT16 hay phn vng NTFS. c i m nh n ra phn vng ny l hai t p tin ntldr v boot.init ch a trong (nh ng t p tin ny c th n!). T p tin bootsect.lnx c th t thu c tnh ch c (read-only). 7. Sau tm t p tin boot.ini v thm vo dng sau: C:\bootsect.lnx="LINUX" (t t nhin, trong d u ngo c kp b n c c th t tn b t k.) 8. Vi c cn l i l kh i ng l i my tnh m t l n n a, v trong trnh n ch n h i u hnh s c LINUX. N u ch n LINUX, th LILO s c ch y v sau n (LILO) s n p Linux. Cn by gi chng ta s xem xt tr ng h p b n c (do v tnh hay c ) ci t LILO vo b n ghi kh i ng chnh c a a (Master Boot Record, MBR). Trong tr ng h p ny b n ghi kh i ng Windows NT (hay 2000) s b xa, v vi c kh i ng Windows NT (b c th 6 trn) l khng th . N u nh b n c v n cn mu n s d ng trnh kh i ng OS Loader c a NT, ch khng mu n dng LILO, th nh ng b c trn c thay i m t cht: thay cho b c th 6 c n lm cc thao tc sau. 1. Kh i ng Windows NT t a m m kh i ng ( t o tr c khi ci t Linux, n u khng c th b n c c n tm m t my khc ang ch y Windows NT r i t o). Trong trnh n (th c n) c a trnh kh i ng c n ch n l nh Recover, r i ch n ch Command mode. Sau ng nh p vo ti kho n nh qu n tr (administrator). 2. Ph c h i l i b n ghi kh i ng chnh c a a. S d ng cu l nh fdisk /mbr. Tc gi dng l nh ny thnh cng, m c d trong m t s bi bo ni cch ph c h i MBR nh v y khng ph i lc no cng lm vi c. Trong Windows 2000 c cc l nh chuyn dng fixboot v fixmbr (ch y t console ph c h i h th ng). Ch y hai l nh ny theo th t ch ra. Sau Windows 2000 s kh i ng bnh th ng. 3. Kh i ng l i my tnh t a m m kh i ng Linux v ng nh p vo h th ng v i quy n ng i dng root. 4. Nh p l nh cd /etc v m t p tin lilo.conf. u t p tin ny c lin k t n phn vng kh i ng theo m c nh, v d , /dev/hda. 5. Dng b t k trnh so n th o no, v d , CoolEdit c a Midnight Commander, thay th gi tr ny thnh phn vng ci Linux ln (chnh xc hn l thnh phn vng c g n nh g c (/) c a Linux). N u Linux c ci vo phn vng /dev/hda3, th c n ghi ci , t c l thay th /dev/hda thnh /dev/hda3. N u nh b n c khng nh ci Linux vo u, th hy ch y cu l nh mount v tm k t qu tng t nh sau4 :
4

c ngha l tm phn vng g n vo th m c g c /, trong v d ny l /dev/hda3

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

Ci t h i u hnh Linux

6. Ch y l nh /sbin/lilo ghi trnh kh i ng vo phn vng /dev/hda3 (c n ch y l nh lilo khng c tham s ). S c c nh bo v vi c phn vng khng ph i l u tin trn a. y chnh l i u chng ta c n, b n ghi kh i ng c a Windows c gi nguyn v n. 7. Th c hi n cc b c 6-8 nh trn.

D dng on ra r ng, quy trnh ph c t p v i hai l n kh i ng l i ch chuy n sector kh i ng Linux t MBR vo sector u tin c a phn vng dnh cho Linux, v ph c h i MBR c a Windows. Qu trnh ci t Linux k t thc y. B n c c th ch n HH s kh i ng v i u khi n my tnh c a mnh.

2.7

S d ng trnh kh i ng GRUB

Nh ni trong ph n l a ch n chng trnh kh i ng, n u trn my ci Windows 98 v i h th ng t p tin FAT16, th l a ch n t t hn cho trnh kh i ng l chng trnh c trong thnh ph n c a m i b n phn ph i HH Linux GRUB (GRand Unified Bootloader).

2.7.1

Ci t GRUB

Cch d nh t c th ci t trnh kh i ng GRUB l ch n dng trnh kh i ng ny trong qu trnh ci t h th ng Linux c a b n. Trong nh ng phin b n m i c a cc b n phn ph i Linux m i khi ny c th ch n c u hnh cho nh ng h i u hnh c trn my. M t s b n phn ph i, v d Xandros cn t ng tm th y nh ng h i u hnh c ny v thm chng vo t p tin c u hnh c a GRUB. Nh sau khi ci t b n c th ch n kh i ng Linux ho c h i u hnh (th ng l Windows) c. M c d vi c t ng c u hnh ny h t s c thu n ti n, nhng s c ch n u b n bi t c cch c u hnh Linux x l nh ng l i c th x y ra v hn th n a bi t cch c u hnh kh i ng h i u hnh mong mu n khi khng c t ng c u hnh. Chng ta s xem xt c u hnh GRUB trong ph n ti p theo.

2.7.2

C u hnh GRUB

GRUB c m t giao di n trnh n t ng i dng c th ch n m t m c (m t h i u hnh) b ng cc phm mi tn r i nh n <Enter> kh i ng. dng c trnh n , b n c n m t t p tin c u hnh menu.lst n m trong th m c kh i ng /boot. Thng th ng t p tin ny c t o ra khi ci t. Hy xem v d m t t p tin nh v y d i 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 d ng trnh kh i 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 r ng c n gi i thch c th hn m t cht v t p tin ny. C th b n on ra nh ng dng b t u b ng k t # l nh ng dng ch thch. B n c th ghi b t k cu g mong mu n vo dng ny v khng nh h ng g n cng vi c c a chng trnh. Ngoi dng ch thch GRUB cng b qua nh ng dng tr ng. u t p tin l nh ng thi t l p chung (global options), nh ng ty ch n c lin quan n giao di n c a trnh n. Chng c t tr c cc m c b t u b ng title. Ty ch n default ch ra h i u hnh kh i ng theo m c nh (n u khng ng vo bn phm khi kh i ng). S 0 ch ra l h i u hnh th nh t trong danh sch (t c l SuSE Linux 9.3). Hy nh l i, trong GRUB vi c nh s c b t u t 0 ch khng ph i 1. Ty ch n timeout cho bi t GRUB s kh i ng m t cch t ng sau kho ng th i gian ch ra (tnh theo giy) n u khng nh n phm no. Trong tr ng h p ny l sau 8 giy. Ty ch n color dng ch n mu cho trnh n (hy th n!). Sau nh ng thi t l p chung l ph n thi t l p cho t ng h i u hnh c th . M i ph n u b t u b ng l nh title theo sau l tn s hi n th trong trnh n. V v l nh ny hi n th tham s m t cch nguyn v n, nn b n c th nh p b t k th g vo pha sau. Nh b n th y trong t p tin c u hnh trn, ph n u tin l kh i ng SUSE LINUX 9.3, ph n th hai Windows, v.v. . . Khc v i tr ng h p LILO, sau khi thay i c u GRUB khng c n ph i ch y b t k l nh no nh ng thay i ny c hi u l c. Chng s c c p nh t m t cch t ng trong l n kh i ng sau. y l m t i m m nh c a GRUB so v i LILO.

36

Ci t h i u hnh Linux

T t nhin y khng ph i l t t c nh ng kh nng s d ng c a GRUB, nhng i v i ng i dng m i th nh v y l . Sau m t th i gian lm vi c v i Linux v c kinh nghi m b n s bi t cch tm thm thng tin v trnh kh i ng tuy t v i ny.

2.8
2.8.1

S d ng trnh kh i ng LILO
Ci t v c u hnh LILO

Gi ng nh tr ng h p Windows NT, chng ta s a ra cc b c c n th c hi n c th kh i ng nhi u HH. 1. Tr c khi ci t Linux hy chu n b a m m kh i ng Windows. 2. Dng chng trnh Partition Magic l y ph n khng gian a cn tr ng v trn t o ra m t phn vng ext2(3) (h th ng t p tin Linux) v m t phn vng swap. Cch chia a ni trn. N u dung l ng a c ng v t qu 8,4 Gbyte th hy c k cc ph n 2.3 v 2.5. 3. Ci t Linux theo ch d n i km v i b n phn ph i. C n nh r ng, n u b n mu n s d ng trnh kh i ng LILO, th trong qu trnh ci d t Linux c n ch n phng n ci LILO vo b n ghi kh i ng chnh (Master Boot Record). T o cc a m m kh i ng theo nguyn t c l khng b t bu c, nhng tc gi khuyn b n c nn lm.5 4. B c ti p theo c n c u hnh LILO c th kh i ng cc HH theo l a ch n. LILO c c u hnh b ng t p tin /etc/lilo.conf v cu l nh /sbin/lilo. Cu l nh ny dng ci t (hay ci t l i) LILO. Chng ta xem xt m t v d nh c a t p tin c u hnh LILO. Trong v d ny chng ta s coi nh thi t b /dev/hda1 l phn vng v i DOS/Windows, cn phn vng /dev/hda2 ch a Linux. Trong tr ng h p /etc/lilo.conf c d ng g n 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 kh i ng LILO khng b t bu c ph i ci t vo b n ghi kh i ng chnh c a a, LILO c th n m b n ghi kh i ng c a phn vng chnh c kch ho t v ch a th m c g c c a Linux ho c th m ch trn phn vng lgc trong phn vng m r ng. Trong tr ng h p MBR c n ph i c kh nng n p LILO, v d khi MBR l trnh kh i ng c a MS-DOS hay Windows. Tuy nhin tc gi cha nhn th y s c n thi t c a ng d ng ny (n u ch n LILO lm trnh kh i ng chnh th hy s d ng cho tr n b ), v th chng ta s khng xem xt n.
5

2.8 S d ng trnh kh i ng LILO table = /dev/hda label = dos Vi l i gi i thch cho v d : Dng boot cho bi t thi t b kh i ng.

37

Dng compact b t ch nn t p tin map t p tin ch a c tnh c a nhn c kh i ng; tnh nng (nn) ny tng t c c a kh i ng u. Cu l nh message dng a ra thng bo theo mu n khi kh i ng. B t u t dng image l cc ph n nh c a t p tin c u hnh, m i ph n tng ng v i m t h i u hnh s kh i ng theo l a ch n c a ng i dng. Trong m i ph n nh v y c m t dng label. Trn dng ny ghi tn c n nh p vo d u nh c LILO hay tn s hi n th trong trnh n c a LILO c th ch n HH mu n kh i ng. N u nh tn khng c nh p sau kho ng th i gian ch trn dng delay (tnh theo ph n m i giy c n nhn v i 0,1 giy), th s kh i ng HH theo m c nh. Trong v d ny, s kh i ng Linux theo m c nh, v ph n c u hnh tng ng v i Linux n m u tin trong t p tin. C th ch ra h i u hnh c kh i ng theo m c nh khi thm m t dng c d ng default=dos, t c l s d ng tn t trn dng label. Dng table=<device> cho bi t tn thi t b ch a b ng phn chia a. LILO s khng a thng tin v phn chia a cho h i u hnh c kh i ng n u bi n ny khng c a ra. (M t s h i u hnh c cng c khc xc nh l c kh i ng t phn vng no.) ng qun r ng, c n th c hi n cu l nh /sbin/lilo, sau khi thay i ch d n n b ng phn chia a, t c l thay i bi n table. N u t dng (g i l ph n nh th t t hn) other = /dev/hda1 trong t p tin /etc/lilo.conf, th trong th m c g c c a a /dev/hda1 (a C: trong h th ng thu t ng Microsoft) c n c trnh kh i ng ph (khng ph i l chnh). Trn m t my c a tc gi n m trnh kh i ng NT Loader (v Windows NT c ci t tr c Linux), v LILO kh i ng thnh cng Windows NT. Ch c n t th i gian ch kh i ng trong t p tin boot.ini b ng khng, khng th y trnh n kh i ng c a NT Loader. Tuy nhin, n u v m t l do no b n mu n th y trnh n ny th gi tr timeout trong t p tin boot.ini c n t khc khng (th i gian ch c tnh theo giy). i u ny c th c n thi t khi mu n kh i ng c Windows 98 t trnh n c a NT Loader (trong tr ng h p ny s c 3 HH: Linux, Windows NT v Windows 98, trong trnh n c a LILO n u ch n dos th s hi n ra trnh n c a NT Loader r i t ch n m t trong hai HH Windows kh i ng). N u b n c mu n kh i ng Windows tr c ti p t ph n nh sau vo /etc/lilo.conf: other = /boot/bootsect.dos label = win trong bootsect.dos l y t th m c g c c a a ch a NT Loader. LILO, th hy thm

5. Sau khi s a xong t p tin /etc/lilo.conf theo mu n, c n ch y cu l nh /sbin/lilo nh ng thay i c hi u l c. Cu l nh ny (trong ti li u

38

Ci t h i u hnh Linux h ng d n g i l map-installer) ci t trnh kh i ng ph , m s c kch ho t trong l n kh i ng ti p theo. Tr c khi ch y /sbin/lilo thay i b c kh i ng, hy th c hi n cu l nh ny v i tham s -t. Khi c tham s ny s th c hi n t t c cc th t c ci t trnh kh i ng, tr vi c thay i t p tin map, b n ghi sector kh i ng, v b ng phn chia a, t c l ch ch y th c u hnh m i. N u cho thm ty ch n -v, th b n c s c bi t thm thng tin chi ti t v nh ng g l nh /sbin/lilo s th c hi n. Khi /sbin/lilo ghi n i dung m i ln sector kh i d ng, th n i dung c c a sector ny s t ng c ghi nh vo m t t p tin. Theo m c nh l t p tin /boot/boot.NNNN, trong NNNN tng ng v i s c a thi t b , v d , 0300 tng ng /dev/hda, 0800 /dev/sda, v.v. . . N u t p tin ny c trn a, th n khng b ghi ln. Tuy nhin c th t m t tn khc ghi sector kh i ng, khng nh t thi t ph i dng /boot/boot.NNNN. T p tin /boot/boot.NNNN c th s d ng ph c h i n i dung c c a sector kh i ng, n u khng cn cch ph c h i no khc n gi n hn. Cu l nh th c hi n c d ng: [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 ph c h i chng trnh kh i ng, v khng ng g n b ng phn chia a). Cng c th ph c h i MBR c khi c n thi t b ng cu l nh /sbin/lilo v i ty ch n -u. Nhng c n bi t r ng, cu l nh ny ch lm vi c ng v i i u ki n l th m c LILO (t c l /boot) khng thay i k t khi ci t. MBR c a MS-DOS c th c ph c h i b ng cch kh i ng vo DOS t a m m (CD) r i ch y cu l nh fdisk /mbr (xem trn). L nh ny ch thay i m chng trnh kh i ng n m trong MBR, m khng thay i b ng phn chia a. 6. Sau khi ci t l i trnh kh i ng c n kh i ng l i my tnh v th cc phng n kh i ng khc nhau ki m tra.

k t thc ph n ni v LILO ny chng ta s xem xt vi kh khn c th xu t hi n khi s d ng LILO, v cch kh c ph c (n u c th ). Khi LILO c n p, n a ra mn hnh t LILO. Khi ny m i ch ci bi u th s k t thc m t hnh ng no hay k t thc m t b c n p LILO. N u kh i ng b b ngng gi a ch ng, th qua s ch ci a ra c th nh n nh v nguyn nhn xu t hi n v n . Khng ch ci no hi n ra khng c ph n no c a LILO c n p. Ho c LILO khng c ci t, ho c phn vng ch a LILO cha c kch ho t.

2.8 S d ng trnh kh i ng LILO

39

L [m l i] trnh kh i ng chnh c n p v ch y (t c l nh n c quy n i u khi n), nhng n khng th n p trnh kh i ng ph . M l i hai k t cho bi t nguyn nhn c th c a v n (cch gi i m c n tm trong ti li u k thu t c a LILO). Thng th ng th v n n y sinh do a x u (c khuy t t t) hay khng t ng c u trc hnh h c c a a. N u LILO khng d ng l i y, m ti p t c a ra m t chu i v t n cc m l i, th v n th ng d gi i quy t. LI trnh kh i ng chnh n p c trnh kh i ng ph , nhng khng ch y c n. C th l l i a c u trc hnh h c c a a, ho c t p tin boot/boot.b b di chuy n m ng i dng qun khng ch y /sbin/lilo. LIL trnh kh i ng ph c ch y, nhng n khng th n p b ng m t t t p tin map. Nguyn nhn th ng do khuy t t t c a a ho c khng a ng c u trc hnh h c c a a. LIL? trnh kh i ng ph c n p vo a ch khng ng. Thng th ng do l i a ra c u trc hnh h c c a a ho c t p tin /boot/boot.b b di chuy n m ng i dng qun khng ch y /sbin/lilo. LIL- b ng m t trong t p tin map b ph h y. Thng th ng do l i a ra c u trc hnh h c c a a ho c t p tin /boot/boot.b b di chuy n m ng i dng qun khng ch y /sbin/lilo. LILO t t c cc ph n c a LILO c n p thnh cng.

2.8.2

Ci t cc h i u hnh khc sau Linux

Khi ci t MS-DOS v Windows 95/98, trnh kh i ng c a chng (khng ph thu c vo mu n c a b n c) c ghi vo Master Boot Record (MBR), v d u kch ho t trong b ng phn vng s c chuy n sang phn vng MS-DOS (Windows 95/98). M trnh kh i ng MS-DOS v Windows 95/98 ch bi t chuy n quy n i u khi n cho sector u tin c a phn vng kch ho t. Nh th , n u nh b n c u tin ci t Linux, v sau m i ci t Windows 95/98 hay MS-DOS, th Linux s khng th kh i ng. C th ph c h i l i LILO b ng cch ch y l nh /sbin/lilo (n u LILO c ci vo MBR), ho c kch ho t phn vng ch a LILO (n u LILO c ci vo phn vng chnh). Khi c v n sau khi ci t m t h i u hnh khc sau Linux, th ng c th gi i quy t b ng cch kh i ng vo Linux b ng a m m kh i ng, s a l i t p tin c u hnh LILO (thm ph n nh cho HH m i), r i ch y /sbin/lilo.

2.8.3

Chuy n th m c /boot ln phn vng DOS

Nh ng phin b n nhn Linux m i nh t h tr kh nng t cc t p tin c n thi t trn giai o n kh i ng vo h th ng t p tin MS-DOS (hay UMSDOS). V trong ph n l n cc tr ng h p phn vng DOS chi m cc vng a u (khng c h n ch c a BIOS), nn cho php gi i quy t nhi u v n c a a l n, khi m th m c /boot khng th n m trn phn vng dnh cho Linux.

40

Ci t h i u hnh Linux

th c hi n phng n kh i ng ny, c n phn vng DOS ch c/ghi, t o trong m t th m c (v d , /dos/linux), v chuy n t t c cc t p tin t th m c /boot vo ; th m c /boot c chuy n thnh lin k t t ng trng n th m c /dos/linux; v tr m i c a th m c /boot c n ch ra trong t p tin /etc/lilo.conf, v cu i cng ch y l nh /sbin/lilo.

2.9

Kh i ng Linux t MS-DOS b ng loadlin.exe

Khng ch cc t p tin kh i ng v nhn c th n m trong phn vng DOS, m c ti n trnh kh i ng Linux ni chung c th c t ch c t DOS. Kh nng ny th c hi n nh chng trnh c bi t loadlin.exe, do Hans Lermen (lermen@elserv.ffm.fgan.de) vi t. Chng trnh ny th ng c trn cc a c a b n phn ph i.6 Loadlin.exe cung c p cch kh i ng Linux t c ng an ton nh t, khi c phn vng kch ho t l DOS hay Windows. Phng n kh i ng ny c khuyn s d ng cho ng i dng Linux m i. Ph n l n ng i dng m i (v khng ch h ) khng kin nh n c ti li u r t hay nhng r t di (v l i vi t trn ti ng Anh n a) c a LILO. V th h th ng s d ng LILO khng ng cch, v k t qu l khng th kh i ng c b t k h i u hnh no (tc gi cng ri vo tr ng h p nh v y). i v i nh ng ng i dng m i th s thu n ti n hn khi s d ng loadlin.exe kh i ng v b t u tm hi u Linux. Tuy nhin, khng vo hang c p sao b t c c p. Chng trnh loadlin.exe khng yu c u ph i ci t, ch c n t chng trnh t p tin loadlin.exe v nhn ( nh c a nhn) ln m t trong cc a m DOS nh n ra. C th dng chng trnh ny kh i ng Linux t CD ho c t a trong m ng m khng c n s d ng a m m kh i ng. Kh nng ny bi n loadlin.exe thnh m t cng c tuy t v i kh i ng Linux khi c v n v i LILO. Phin b n 1.6 c a loadlin.exe lm vi c v i m i c u hnh DOS v c r t t h n ch . Phin b n ny c th s d ng b nh m r ng; c th n p cc nhn l n (cc bzImage) v cc nh a o (initrd) tr c ti p vo vng b nh n m trn. Vi c s d ng loadlin.exe khng c ngha l Linux lm vi c d i DOS, v chng trnh ny h tr kh i ng lgc c a my tnh, v sau DOS c thay th hon ton b ng Linux. N u nh b n c mu n quay tr l i DOS, th ph i kh i ng l i my tnh, v d , b ng cu l nh reboot. Nh v y, c n lm g c th s d ng chng trnh loadlin.exe. Trn my tnh c a b n (t t nhin v i b x l 386 ho c cao hn) c n ci t DOS hay WINDOWS 95. C n c nh nn c a nhn Linux (zImage, bzImage)7 .
m t s b n phn ph i cn c gi ci t cho chng trnh ny, thng th ng ghi t p tin loadlin.exe vo th m c c a ng i dng root 7 Ghi ch. zImage l nh d ng nh phn c c a nhn, bzImage l nh d ng m i hn (s phin b n nhn l n hn 1.3.73) c kch th c ln t i 1 Mbyte, do , nhn khi gi i nn c kch th c ln t i 2 Mbyte. Ti p theo chng ta s ch ni v cc t p tin zImage, m c d b n c c th thay th zImage thnh bzImage
6

2.9 Kh i ng Linux t MS-DOS b ng loadlin.exe

41

Chng trnh loadlin.exe. C th tm th y trn a phn ph i d ng khng nn hay trong gi LOADLIN16.TGZ. Gi nn ny cn ch a h ng d n s d ng DOC\MANUAL.TXT, t p tin tham s v d DOC\TEST.PAR, v h ng d n cch a cc tham s DOC\PARAMS.DOC ( ng qun r ng chng l nh ng t p tin DOS). N u b n ch y loadlin.exe khng c tham s C:\LOADLIN> loadlin th s nh n c h ng d n s d ng ng n g n. Thu n ti n hn c h ng d n ny khi ch y chng trnh v i tham s more (gi ng trong Linux): C:\LOADLIN> loadlin | more By gi chng ta c th xem xt cc b c ci t Linux khi s d ng loadlin.exe kh i ng. 1. Chia cc phn vng cho Linux (cch lm xem ph n 2.5) 2. Ci t Linux vo phn vng chia. LILO c n ci t vo sector u tin c a phn vng Linux khng ghi ln MBR v khng b m t kh nng kh i ng vo Windows. 3. Sau khi k t thc ph n ci t hy kh i ng Linux (n u khng c cch no khc, hy s d ng a m m kh i ng). G n phn vng DOS (gi thi t l /dev/hda1, cn phn vng Linux l /dev/hda3): [root]# mount -t vfat /dev/hda1 /mnt/C T o th m c /mnt/C/loadlin v gi i nn t p tin LOADLIN16.TGZ vo . Ngoi ra sao chp t th m c /boot vo th m c c t p tin ch a nh c a nhn Linux. C th tm t p tin ch a nh c a nhn c n thi t nh t p tin /etc/lilo.conf: tm trong t p tin c u hnh dng image=... v b n c s th y tn c n thi t pha bn ph i d u b ng. V d tn c a t p tin ny l vmlinuz-2.4.22. Sao chp t p tin vmlinuz-2.4.22 t /boot vo /mnt/C/loadlin v i tn thnh vmlinuz (vi c i tn l khng nh t thi t, v ch c ngha thu n ti n cho s d ng): [root]# cp /boot/vmlinuz-2.4.22 /mnt/C/loadlin/vmlinuz 4. By gi i kh i ng l i my tnh vo DOS tr c ti p (n u b n c c Windows 95/98 th c n nh n phm <F8> khi kh i ng hi n th trnh n cho php ch n DOS), ho c qua h p tho i l a ch n khi nh n l nh t t my (shutdown) Windows 95/98. Sau khi vo DOS hy chuy n sang th m c C:\LOADLIN: CD \LOADLIN r i th c hi n l nh:

42

Ci t h i u hnh Linux C:\LOADLIN> LOADLIN vmlinuz /dev/hda3 ro vga=ask ho c, n u b n c mu n n p nhn cng v i a RAM:

C:\LOADLIN> LOADLIN vmlinuz /dev/ram rw initrd=diskimage Cn c th ghi t t c cc tham s c a l nh loadlin.exe vo t p tin (v d v i tn params) v g i cu l nh d ng sau: C:\LOADLIN> LOADLIN @params Kh nng ny c bi t c ch khi a nhi u tham s dng l nh v khi dng l nh di hn 127 k t . M t y t t c cc tham s c a cu l nh loadlin.exe c th tm th y trong t p tin PARAMS.DOC ho c Internet trn trang http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html v http://rsphy1.anu.edu/~gpg109/BootPrompt-HOWTO.html. By gi b n c c th s d ng cch ny kh i ng Linux. Cng vi c duy nh t cn l i l lm sao khng ph i g l nh loadlin v i t t c cc tham s sau m i l n kh i ng l i. C th vi t thm l nh g i loadlin vo t p tin autoexec.bat ho c t o m t t p tin l nh (v d , linux.bat), v khi ch y t p tin ny, my tnh s chuy n vo ch DOS tr c, sau th ch y Linux. Tc gi cho r ng nh ng thng tin a ra trn t o t p tin bat c n thi t. C n ni thm r ng, khng c kh i ng Linux t giao di n h a DOS/Windows v c n t t m t vi ty ch n trong t p tin n C:\MSDOS.SYS (y l t p tin vn b n thng th ng), b ng cch thm vo hai dng sau (n u cha c): BootGUI=0 Logo=0 Dng u tin t t giao di n h a, v DOS s c kh i ng thay cho Windows 95/98. ( ch y giao di n h a, c n nh p cu l nh C:\> win). Dng Logo=0 t t vi c hi n th bi u t ng Windows (c a s ). V n ch , i v i m t s c c mn hnh Linux s a ra m t mn hnh tr ng r ng sau khi kh i ng, n u nh c hi n th bi u t ng Windows.

Chng 3 Kh i ng Linux l n u
V n s kh i u nan Trung Qu c
Sau khi ci t r t c th b n c s khng bi t b c ti p theo ph i lm g. B t my tnh ln, i h th ng kh i ng xong v ... ng i nhn. Ph i lm g c th ti p t c lm vi c v i h th ng Linux? Sau khi lm vi c xong th t t my th no? C nh ng chng trnh no nn bi t? Trong khi lm vi c c v n n y sinh th tm cu tr l i u? Trong chng ny chng ta s tm th y cu tr l i cho nh ng cu h i trn.

3.1

Kh i ng HH Linux

Nh v y l vi c ci t Linux hon thnh. N u ng i dng ci t GRUB lm trnh kh i ng, th sau nh ng dng ch BIOS th ng a ra s xu t hi n mn hnh d ng nh trong hnh 3.1.

Hnh 3.1: Mn hnh kh i ng c a GRUB

44

Kh i ng Linux l n u

N u khng ch m vo bn phm, th trn mn hnh s xu t hi n r t nhi u thng bo m t m th i chng ta s khng xem xt ngha c a chng1 . Cu i cng xu t hi n mn hnh cho php ng i dng ng nh p vo h th ng. N u b n ch n t ng ch y ch ho th hy nh n <Ctrl>+<Alt>+<F1> th y mn hnh ng nh p nh sau: ThinhQuyen login: Mn hnh ng nh p ny xu t hi n trn my c a tc gi khi kh i ng Debian Linux. T t nhin mn hnh ng nh p c a b n c s khc. N u c kin nh n c h t cu n sch ny, th b n s bi t cch thay i mn hnh ny, v d a ra nh ng cu cho d ng Xin cho! Hm nay l 02 thng 09 nm 2006. Hy nh p vo tn ng i dng v m t kh u. Tuy nhin by gi v n cn s m ni v v n ny. N u kh i ng b ng a m m th qu trnh cng tng t nhng ch m hn m t cht. N u Linux khng ph i l h i u hnh (HH) duy nh t trn my tnh, th trn mn hnh kh i ng GRUB s xu t hi n danh sch cc h i u hnh tm th y. C th ch n HH mu n kh i ng b ng cc phm <> v <> r i nh n phm <Enter>. N u ch n kh i ng Linux th cu i cng ng i dng ph i th y dng login:, t c l dng m i nh p vo tn ng nh p.

3.2

ng nh p vo h th ng

Nh b n bi t, khi hi n ra dng m i ny th u tin c n nh p vo tn ng i dng, sau nh p vo m t kh u khi c yu c u vo h th ng. N u y l l n ng nh p u tin vo h th ng ngay sau khi ci t, v trong khi ci t b n qun t o thm ng i dng, th hy nh p vo tn ng i dng root (ng i dng cao c p). y l ng i dng duy nh t lun lun c ti kho n c t o ra trong qu trnh ci t. Ng i dng ny l ch s h u c ton quy n i v i h th ng by gi cng nh sau ny, t c l c quy n truy c p khng gi i h n n cc ti nguyn, c th thm, xa nh ng ng i dng khc, d ng h th ng v.v. . . Nh ng thao tc khng c n th n c a ng i dng ny c th d dng d n n nh ng h u qu kh l ng, th m ch lm h ng h th ng. V th th ng ch ng nh p d i tn ng i dng ny khi th c hi n cc cng vi c qu n tr h th ng. Tuy nhin chng ta ang trong tr ng h p ny, v th hy nh p root vo dng login: r i nh n phm <Enter> (<Return>). H th ng s a ra cu h i m t kh u: Password: T t nhin l b n c n nh p vo m t kh u tng ng v i ng i dng a ra, y l m t kh u c a root. M t kh u ny l m t kh u a ra cho ng i dng root trong qu trnh ci t. Sau khi nh p m t kh u cng nh n <Enter>. N u sau khi nh p vo tn ng i dng r i r t lu sau khng vo m t kh u, th h th ng s t ng quay tr l i dng h i tn ng i dng login:. Sau khi nh p ng m t kh u, b n s th y dng nh sau:
Trong nh ng b n phn ph i Linux m i, v d SuSE Linux, c s d ng mn hnh flash. Do c th b n c s khng th y nh ng thng bo ny. Trong tr ng h p , hy nh n phm tng ng chuy n v mn hnh kh i ng bnh th ng. Phm ny th ng l <Esc>.
1

3.2 ng nh p vo h th ng [root@ThinhQuyen /root]#

45

Dng ny c g i l d u nh c. Xu t hi n d u nh c c ngha l h th ng s n sng ti p nh n v th c hi n cu l nh c a ng i dng. th i i m ny n c ngha l b n ng nh p vo h th ng m t cch thnh cng. Trong MS-DOS v Windows(TM) mn hnh en v d u nh c h th ng th ng c g i l ch dng l nh. Chng ta s g i ch ny l vn b n phn bi t v i ch ho c a h th ng X Window. Trong v d a ra trn d u nh c g m tn ng i dng (root), tn h th ng (ThinhQuyen) v th m c hi n th i (/root). Sau ny b n c th thay i d ng c a d u nh c ny. Trong t t c cc v d ti p theo chng ta s s d ng d u nh c ch g m c tn ng i dng. Tr c khi ngh b n c nh p vo cu l nh u tin, c n ni r ng trn b t k h th ng UNIX no ki u ch cng u ng vai tr quan tr ng, t c l c phn bi t ch hoa v ch th ng. V th c n nh p vo t t c cc cu l nh cng nh tham s c a chng nh ch ra trong v d , k c ki u ch . Cu l nh u tin chng ta s nh p vo l useradd. Sau tn c a cu l nh c n kho ng tr ng v sau l tn ng i dng, v d , nhimlui: [root]# useradd nhimlui Ngay sau khi nh n phm <Enter> ch y l nh ny, trn h th ng s bi t r ng ng i dng nhimlui t n t i (chng ta ni, m ti kho n cho ng i dng nhimlui). Tuy nhin v n cha th vo h th ng (th ng ni, ng nh p) d i tn ng i dng ny. h th ng cho php ng i dng m i nhimlui lm vi c, c n ph i t o thm cho ng i dng ny m t kh u b ng cu l nh: [root]# passwd nhimlui S xu t hi n dng: Changing password for nhimlui. New Password: Hy nh p vo m t kh u. Sau khi nh p xong, cng nh n phm <Enter>, h th ng s h i nh p m t kh u m t l n n a ki m tra. Reenter New Password: ng ng c nhin, b n s khng nhn th y m t kh u vo v h th ng s khng hi n th g ra, k c d u sao * nh th ng th y. N u b n nh p ng t t c , th s xu t hi n thng bo thnh cng d ng: Password changed. v s l i xu t hi n d u nh c c a h th ng. N u nh p vo m t kh u khng t t (m t kh u qu ng n ho c qu n gi n), th s xu t hi n dng c nh bo (d ng Bad password: too short), nhng h th ng v n ti p nh n m t kh u v cho php ng i dng m i ng nh p vo h th ng.

46

Kh i ng Linux l n u

Nh v y l b n c lm quen v i hai cu l nh u tin c a h th ng Linux: useradd v passwd. Cu l nh ti p theo m b t k ng i dng Linux no cng c n ph i bi t l cu l nh man. man l h th ng tr gip lun lun i km v i h th ng Linux. C n ph i nh p vo cu l nh ny v i m t tham s tn c a cu l nh khc ho c t kha. V d : [root]# man passwd K t qu l b n s nh n c m t vn b n m t cu l nh tng ng ho c thng tin v ti m t kho a ra. V thng tin th ng khng th n m g n trn m t mn hnh nn khi xem c n s d ng cc phm <PageUp>, <PageDown>, v phm tr ng. Hy nh n phm <Q> b t k th i i m no thot ra kh i mn hnh xem man v quay l i dng nh p l nh. By gi xin b n c hy th xem thng tin v hai cu l nh c p n trn login v passwd. Ch l c th xem thng tin v chnh b n thn cu l nh man. Hy ch y l nh: [root]# man man R t ti c theo nh tc gi bi t th hi n th i cc trang thng tin man cn cha c d ch sang ti ng Vi t. Do b n s nh n c nh ng trang ny b ng ti ng Anh. N u nh b n khng c kh nng c ti ng Anh, th hay kin nh n c cu n sch ny ho c m t cu n sch khc cng ti. B n c cn c th th ch y thm m t vi cu l nh n a v theo di xem h th ng lm g. V d , hy th nh ng cu l nh li t k trong b ng 3.1 (hy nh p chng cng v i nh ng tham s c trong b ng). B ng 3.1: Nh ng cu l nh n gi n c a Linux Cu l nh M t ng n g n whoami Thng bo tn ng nh p c a b n w ho c who Cho bi t nh ng ng i dng no hi n ang lm vi c trn h th ng pwd Cho bi t tn c a th m c hi n th i ls -l Hi n th danh sch t p tin v th m c con c a th m c hi n th i cd tn_th_m c Chuy n th m c hi n th i n tn_th_m c ps ax Hi n th danh sch cc ti n trnh ang ch y Hy xem m t v nh ng cu l nh ny b ng man. Chng ta s khng xem xt chi ti t danh sch t t c nh ng cu l nh c th g p. V th nh t, ng i dng s d n d n lm quen v i chng trong qu trnh c cu n sch ny v th c hnh trn HH Linux c a mnh. Th hai, c th c v nh ng cu l nh chnh trong b t k cu n sch no ni v UNIX.

3.3

Console, terminal o v shell

Nh v y l b n c c kinh nghi m lm vi c u tin ch vn b n (hay cn g i l knh giao tc console) c a h th ng Linux. Chng ta s cn g p

3.3 Console, terminal o v shell

47

th ng xuyn nh ng khi ni m trnh l nh terminal v console, do tc gi gi i thch k hn nh ng khi ni m ny. Khi h th ng UNIX u tin m i c t o ra, my tnh cn r t to (mainframe) v ng i dng lm vi c trn nh ng my tnh ny qua m t h th ng nh ng giao di n k ti p nhau dng k t n i cc terminal xa. Terminal thi t b dng giao ti p gi a ng i dng v my tnh, th ng g m mn hnh v bn phm. My tnh c nhn c a b n c l my tnh th h m i, do ch c s khng c terminal xa no k t n i t i, nhng v n c bn phm v mn hnh th c hi n vai tr terminal i v i ng i dng. Ngoi ra thm vo thnh ph n c a terminal by gi cn c chu t. Mainframe c m t terminal c bi t dnh cho nh qu n tr (system administrator) h th ng, c g i l console. Console th ng k t n i t i my tnh khng qua giao di n k ti p nhau m qua m t c m ring (i khi thi t b a ra khng ph i l mn hnh m l m t thi t b in). V trn cc h th ng UNIX ng i ta th ng tun theo cc truy n th ng, do bn phm v mn hnh my tnh c nhn ngy nay lm vi c gi ng nh console ngy xa. i m m nh c a gi i php ny ch t t c nh ng chng trnh c dng qu n tr h th ng UNIX c th lm vi c khng c v n g trn d ng console m i ny. Tuy nhin, ngoi console Linux cn cho php k t n i cc terminal xa t i my tnh. V hn th n a cn cung c p kh nng lm vi c v i m t vi terminal o t m t console duy nh t. Hy nh n t h p phm <Ctrl>+<Alt>+<F2>. B n c s l i th y dng m i ng nh p login:. Nhng y khng ph i l lm vi c l i t u v i h th ng m b n c ch chuy n sang m t terminal o khc. y b n c c th ng nh p d i tn ng i dng khc. Hy th vo h th ng b ng tn ng i dng v a m i t o ra (nhimlui). Sau hy nh n t h p phm <Ctrl >+< Alt>+<F1>. B n s quay l i mn hnh ban u. Theo m c nh, h u h t cc b n phn ph i Linux l n (Red Hat, SuSE, Debian,. . . ) m ra 6 phin lm vi c song song (terminal o) nh v y khi kh i ng. Nh v y r t thu n ti n cho s d ng. chuy n gi a cc terminal o chng ta s d ng cc t h p phm <Ctrl>+<Alt>+<F1> <Ctrl>+<Alt>+<F6>. C n ni thm l khi lm vi c ch vn b n (khng ph i ho ) th cng c th s d ng cc t h p phm <Alt>+<F1> <Alt>+<F6> v thu c k t qu tng t . Tuy nhin n u lm vi c ch ho th khng th khng dng phm <Ctrl>. Do , t t hn h t l lm quen ngay t u v i t h p 3 phm. Nhn ti n cng c n ni lun, n u trong qu trnh lm vi c b n c khng nh ang n m trong terminal o no th hy s d ng cu l nh tty. L nh ny s a ra tn c a terminal d ng: /dev/tty2. Xin ni ngay l p t c n u b n mu n thot kh i m t trong cc terminal th c th th c hi n b ng t h p phm <Ctrl>+<D>. Thao tc ny khng t t my v cng khng kh i ng l i h th ng. ng qun r ng Linux l HH nhi u ti n trnh (multiproccess) v nhi u ng i dng (multiuser). M t ng i dng no d ng cng vi c khng c ngha l c n ph i t t my, cn c nh ng ng i dng khc v n ti p t c lm vi c. T h p phm ni trn ch n gi n l d ng phin lm vi c hi n th i c a m t ng i dng, v h th ng s hi n th l i trn terminal ny d u m i ng nh p (login:) m b n c th y. Cng c th d ng phin lm vi c b ng m t trong hai cu l nh logout ho c exit. By gi khi bi t cch b ng u v k t thc phin lm vi c trn h th ng, xin b n hy th c hi n nh ng l i khuyn trn, t c l vo h th ng d i tn ng i

48

Kh i ng Linux l n u

dng bnh th ng (khng c quy n cao c p c a ng i dng root). Hy ng t t c nh ng phin lm vi c m root m ra, r i vo h th ng d i tn ng i dng m i t o ra. Cn by gi c n ni vi dng v h v . H v hay shell (t ny th ng khng d ch m nguyn ti ng Anh) l chng trnh th c hi n vi c giao ti p c a h th ng v i ng i dng. Chnh shell nh n t t c nh ng cu l nh m ng i dng nh p vo t bn phm v t ch c vi c th c hi n nh ng cu l nh ny. v th shell cn c th g i l b x l l nh (thu t ng quen thu c i v i ng i dng DOS). Ni m t cch ch t ch th cu h th ng hi n th d u nh c l khng ng, v d u nh c ny l do shell a ra i ng i dng nh p vo cu l nh ti p theo. M i l n ng i dng no vo h th ng, cu l nh login s ch y cho ng i dng ny m t b x l l nh shell. N u b n c ng nh p vo h th ng t terminal th hai d i tn ng i dng nhimlui (ho c d i tn ng i dng b n ch n), th hy ch n s khc nhau trong d u nh c c a hai ng i dng root v nhimlui. D u nh c c a ng i dng root c k t # cu i, d u nh c c a t t c nh ng ng i dng cn l i k t $. Khng ch duy nh t l nh login c kh nng ch y shell. B n ch c n nh p vo l nh bash (y cng l tn c a chng trnh h v trn ph n l n cc h th ng Linux) v nh v y l ch y m t shell m i. Khi thot kh i h v m i ny (b ng cu l nh exit ho c t h p phm <Ctrl>+<D>), b n s quay l i h v ban u (h v m t b n ch y l nh bash). H v bash khng ch l b x l l nh m cn l m t ngn ng l p trnh m nh. Trong bash c y cc cu l nh tch h p (n i b ) v cc ton t , v ngoi ra cn c th s d ng cc chng trnh khc n m trn a lm cu l nh. C th xem danh sch cc cu l nh tch h p trong bash b ng l nh help. Hy th l nh ny! Xem thng tin chi ti t v m t l nh no cng b ng l nh help ny v i tham s l tn c a l nh, v d : help cd. V h v bash ng m t vai tr h t s c quan tr ng trong Linux, nn tc gi s dnh ring m t chng c a cu n sch ny ni v n. T t nhin l b n c th tm th y nh ng thng tin tng t trong b t k cu n sch no v UNIX. Cng c n lu l i v i cc h th ng UNIX cc nh pht tri n vi t ra nhi u h v khc thay th cho bash. Cng c th s d ng nh ng h v ny trn Linux, nhng theo m c nh s ch y bash. By gi chng ta s xem xt thm m t cu l nh n a m b n c c n bi t. My tnh c a ng i dng thng th ng l my c nhn (personal computer hay ni g n l PC) d nh hay c quan. C ngha b n c cng l ng i dng root c a h th ng. Nhng nh ni trn, ng nh p d i tn ng i dng cao c p ny l khng nn, v m i thao tc khng c n th n c a ng i dng ny c th d n n nh ng h u qu khng mong mu n. Khi ng nh p d i tn ng i dng thng th ng, t nh t b n c cng khng th xa ho c lm h ng cc t p tin h th ng (system files) do s khng c n th n c a mnh. Trong khi , c m t lo t cc thao tc, v d g n h th ng t p tin, ch c ng i dng cao c p m i c th th c hi n. ng kh i ng l i my tnh m i l n nh v y! Cu l nh su gip gi i quy t nh ng tr ng h p nh v y. Ch c n nh p cu l nh su v shell hi n th i (hay ni khng ng l h th ng) s ch y m t shell m i m khi vo trong b n s ch y t t c cc l nh v i quy n c a root. T t nhin l c quy n ny b n c n nh p m t kh u c a root vo dng yu c u hi n ra (Password:). Sau khi th c hi n xong cc cng vi c qu n tr h th ng, hy thot kh i h v v b n

3.4 So n th o dng l nh. L ch s l nh

49

s tr thnh ng i dng bnh th ng v i nh ng quy n c a mnh. B ng cch tng t nh vo h th ng d i tn root trn, cn c th vo h th ng d i tn m t ng i dng b t k m b n bi t m t kh u2 (ni cch khc l ch y m t h v shell m i d i tn ng i dng khc). Nhng c n ch ra tn c a ng i dng ny trn dng l nh, v d : [user]$ su nhimlui Cu l nh su tr c khng km theo tn no, theo m c nh s t tn ng i dng cao c p root vo. Nhng trong HH Linux cn c thm m t kh nng chuy n t m th i vo ti kho n c a ng i dng root th c hi n cc ch c nng qu n tr . Hy nh r ng Linux l h th ng nhi u ng i dng, trn h th ng c th lm vi c cng lc nhi u ng i dng. V th c th lm vi c d i tn ng i dng root trn terminal o th nh t, cn trn terminal o th hai d i tn ng i dng bnh th ng. Nh ng cng vi c th ng ngy (so n th o vn b n, c th,. . . ) b n c th th c hi n b ng ti kho n bnh th ng, cn khi c n th c hi n cc cng vi c qu n tr , b n s dng ti kho n ng i dng cao c p (root). th c hi n l a ch n ny b n ch c n nh n <Ctrl>+<Alt>+<F1> v s c ngay quy n c a nh qu n tr . Sau khi lm xong nh ng thao tc m ch c ng i dng cao c p m i c th lm, hy quay l i ti kho n c a ng i dng bnh th ng ngay l p t c b ng t h p phm <Ctrl>+<Alt>+<F2>. Nh v y b n c s khng c nguy c lm h ng h th ng khi cn cha c nhi u kinh nghi m s d ng Linux.

3.4

So n th o dng l nh. L ch s l nh

Trong nh ng ph n tr c tc gi ngh b n c th c hi n m t vi l nh c a HH Linux. Tc gi cho r ng n u trong qu trnh nh p l nh c x y ra l i th b n c th on c cch s a chng. Nhng d sao cng c ch n u a ra danh sch ng n g n nh ng cu l nh (hay ni ng hn l phm v t h p phm) dng so n th o dng l nh, cng nh gy nh h ng n cch lm vi c c a shell b ng bn phm (b ng 3.2, chng ta s ni v chu t m t ph n ring).
Ghi ch: N u b n lm vi c trong chng trnh Midnight Commander, th c th s khng th s d ng nh ng phm nh <>, <>, <Home>, <End>, <Del> lm cc cng vi c nh b ng trn, v chng c Midnight Commander dng di chuy n dng chi u sng trong b ng3 hi n th i. Nhng m t s t h p phm dng v i <Ctrl> v <Esc> th v n dng c bnh th ng.

Danh sch nh ng cu l nh (t h p phm) c th dng khng ch gi i h n trong ph m vi b ng 3.2, nhng chng ta ch xem xt nh ng cu l nh n gi n v c n thi t trong l n lm quen u tin v i Linux ny. c thm thng tin hy s d ng cu l nh man bash ho c info bash. Xin lu b n c trong h v bash c chng trnh tch h p gip d dnh nh p cu l nh trn dng l nh. G i chng trnh con ny b ng m t ho c hai l n nh n phm <Tab> sau khi nh p m t vi k t . N u nh ng k t ny l ph n
2 3

Ng i dng root khng c n ph i bi t m t kh u lm vi c ny. panel

50

Kh i ng Linux l n u

B ng 3.2: Nh ng phm so n th o dng l nh


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> Ph n ng c a h th ng Di chuy n sang ph i m t k t (trong khun kh nh ng k t nh p c ng thm m t k t s nh p). Di chuy n sang tri m t k t . Di chuy n sang ph i m t t . Di chuy n sang tri m t t . Di chuy n v u dng l nh. Di chuy n v cu i dng l nh. Xa k t n m t i v tr con tr . Xa k t n m bn tri con tr . B t u th c hi n cu l nh. D n mn hnh v a dng l nh hi n th i ln dng u tin. i ch hai k t : k t n m t i v tr con tr v k t n m bn tri con tr , sau di chuy n con tr sang ph i m t k t . i ch hai t : t n m t i v tr con tr v t n m bn tri con tr . C t ph n dng l nh b t u t k t n m t i v tr con tr n cu i dng (ph n dng l nh c t ra c lu trong b m v c th t vo v tr khc). C t ph n dng l nh b t u t k t n m bn tri con tr n u dng (ph n dng l nh c t ra c lu tron b m v c th t vo v tr khc). C t ph n dng l nh b t u t v tr con tr n cu i t (n u t i v tr con tr l d u cch th c t ton b t n m bn ph i n). C t ph n dng l nh b t u t v tr con tr n u t (n u t i v tr con tr l d u cch th c t ton b t n m bn tri n). C t ph n dng l nh b t u t v tr con tr n d u cch bn tri. t (dn) o n dng l nh c t cu i cng vo v tr con tr . Chuy n k t t i v tr con tr thnh vi t hoa r i di chuy n con tr t i d u cch u tin bn ph i so v i t hi n th i. Chuy n t t c cc k t b t u t v tr con tr thnh vi t HOA r i di chuy n con tr t i d u cch u tin bn ph i. Chuy n t t c cc k t b t u t v tr con tr t i cu i t thnh vi t th ng r i di chuy n con tr t i d u cch u tin bn ph i. Nh ng t h p phm ny cho php xem cc trang mn hnh hi n th . S l ng nh ng trang ny ph thu c vo b nh c a c c mn hnh. C ch khi c cu l nh no a ra mn hnh r t nhi u thng tin ch y nhanh qua mn hnh, ng i dng khng k p th y chng. D ng th c hi n cu l nh v a ch y (m v n ang ch y). Thot ra kh i 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 Ng ng lm vi c v i Linux

51

u c a t nh t m t trong nh ng cu l nh m bash bi t, th c hai kh nng x y ra. N u chng l ph n u c a duy nh t m t cu l nh, t c l bash ch tm th y c m t cu l nh ny, th h v s thm ph n cn l i c a cu l nh ny vo dng l nh. N u bash tm th y nhi u cu l nh c ph n u ny, th s hi n th danh sch t t c nh ng phng n c th ch n. Nh ng i dng c kh nng nh p thm m t vi k t n a lm gi m s phng n ch n xu ng cn 1 r i l dng phm <Tab> m t l n n a. N u s phng n ch n l r t nhi u (v d nh n phm <Tab> hai l n khi dng l nh tr ng r ng) th b n c s nghe th y ti ng bp sau l n nh n <Tab> u tin, v sau l n nh n <Tab> th hai s xu t hi n m t dng d ng Display all 2627 possibilities? (y or n) (Hi n th t t c 2627 kh nng? c n ch n y c ho c n khng). N u nh n hai l n phm <Tab> sau tn c a m t cu l nh v m t kho ng tr ng, th h v bash s coi nh b n ang tm tn t p tin dng lm tham s cho l nh ny, v bash s a ra danh sch t p tin c a th m c hi n th i. y l tnh nng tr gip c a bash trong tr ng h p ng i dng qun tn t p tin trong khi lm vi c cng th ng. Cng gi ng nh tr ng h p cu l nh, n u nh p vo m t ph n tn t p tin th ph n cn l i s c t ng thm vo. Tng t nh v y c th on ph n cn l i c a cc bi n mi tr ng4 , ch c n s d ng t h p phm <Esc>+<$> thay cho <Tab>. Trong khi lm vi c v i h v s c ch n u bi t r ng, bash ghi nh m t s cu l nh (theo m c nh l 1000 l nh, gi tr ny c t trong bi n HISTSIZE, xem chng 5) v cho php g i l i chng b ng cch ch n t danh sch. y c g i l l ch s l nh. C th xem l ch s l nh b ng cu l nh history. y b n c n s d ng cc t h p phm <Shift>+<PgUp> v <Shift>+<PgDown> xem danh sch (c th ) r t di ny. L ch s l nh c lu trong t p tin xc nh b i bi n HISTFILE (th ng l $HOME/.bash_history). lm vi c v i l ch s cu l nh trong h v bash ng i ta s d ng nh ng t h p phm trong b ng 3.3.

3.5

Ng ng lm vi c v i Linux

M c d my tnh lm vi c d i s i u khi n c a HH Linux c th ch y su t ngy m, nhng ph n l n ng i dng my tnh c nhn quen v i vi c t t my sau khi lm vi c xong. Khi lm vi c v i HH Linux khng th t t my b ng cch ng t ngu n i n nh i v i MS-DOS. V trong b t k th i i m no trn h th ng cng c r t nhi u qu trnh ang lm vi c. B n c th th y i u ny b ng cch th c hi n l nh: [nhimlui]$ ps ax Th c hi n l i l nh ny m t l n n a xem l i. Nhng nguyn nhn quan tr ng hn l ch m t s ti n trnh ny c th ang lm vi c v i cc t p tin, v h th ng cn cha ghi nh t t c cc thay i v i nh ng t p tin ln a m ch lu t m chng trong b nh (cache). N u ng t ngu n i n th nh ng thay i ny s khng c lu v s b m t, i khi c th d n n khng kh i ng c my trong l n sau. Do c n bi t d ng h th ng m t cch ng n tr c khi t t my. Cng vi c ny do cu l nh (chng trnh) shutdown m nhi m.
4

environment variable

52

Kh i ng Linux l n u

B ng 3.3: T h p phm i u khi n l ch s l nh Phm Ph n ng c a h th ng <> ho c <Ctrl>+<P> Chuy n t i (g i vo dng l nh) cu l nh tr c trong danh sch (di chuy n ng c l i danh sch) <> ho c <Ctrl>+<N> Chuy n t i cu l nh ti p theo trong danh sch (di chuy n theo danh sch) <PgUp> Chuy n t i cu l nh u tin trong danh sch l ch s l nh <!>, <N> Th c hi n (khng c n nh n <Enter> cu l nh th n trong danh sch <!>, <->, <N> Th c hi n cu l nh th n tnh t cu i danh sch <!>, dng_k_t Th c hi n dng l nh, c ph n u trng v i dng_k_t . Vi c tm dng l nh c n thi t s c th c hi n t cu i t p tin l ch s v dng l nh u tin tm th y s c th c hi n <Ctrl>+<O> Cng gi ng nh nh n phm <Enter>, sau hi n th cu l nh ti p theo trong l ch s l nh Ch c ng i dng root m i c th th c hi n cu l nh shutdown ny5 , do b n c n ng nh p vo h th ng d i tn ng i dng ny, ho c dng cu l nh su c quy n tng ng. Cu l nh shutdown c c php nh sau: [root]# shutdown <ty_ch n> <th i_gian> <dng_thng_bo>
Ghi ch: R t c th khi ch y l nh, b n s nh n c cu tr l i bash: shutdown: command not found. i u c ngha l bash khng bi t tm chng trnh y. Trong tr ng h p b n c n nh p vo ng d n y n chng trnh, y l /sbin/shutdown, v t p tin chng trnh c a shutdown n m t i /sbin.

Th ng s d ng hai trong s cc ty ch n c a chng trnh shutdown: -h d ng hon ton h th ng (halt, s t t my) -r kh i ng l i h th ng (reboot). Tham s th i_gian dng h n gi th c hi n cu l nh (khng nh t thi t ph i th c hi n cu l nh ngay l p t c). Th i gian h n gi c tnh t lc nh n phm <Enter>. V d , n u b n mu n kh i ng l i sau 5 pht th hy nh p vo cu l nh: [root]# shutdown -r +5
5

Cng c th c u hnh nh ng ng i dng khc th c hi n c shutdown, v d qua sudo.

3.6 Tr gip khi dng Linux

53

Cu l nh ny c ngha l d ng h th ng sau 5 pht v kh i ng l i sau khi hon thnh cng vi c. i v i chng ta th t m th i cu l nh sau s thch h p hn: [root]# shutdown -h now Cu l nh ny s t t my ngay l p t c. Tng ng v i cu l nh ny l l nh halt. Sau khi nh n t h p phm n i ti ng <Ctrl>+<Alt>+<Del> trn Linux s th c hi n cc hnh ng tng t v i l nh [root]# shutdown -r now B ng cch ny cng c th t t my, nhng c n ng t ngu n i n trong khi h th ng b t u kh i ng l i.

3.6

Tr gip khi dng Linux

Nh v y l b n c k t thc phin lm vi c u tin v i HH Linux v ti mong r ng b n cha c n tr gip trong m t tnh hu ng no . Tc gi cng mong cu n sch ny s th c hi n vai tr tr gip trong th i gian u tin ny, nhng c th n khng gi i quy t c t t c nh ng v n c a b n. V th tc gi s a ra ngay l p t c nh ng ngu n thng tin khc. Nhng ti s ph i i tr c k v cch nh n thng tin tr gip trong giao di n ho (X Window). Tc gi coi cch gi i quy t ny l ng v ng i dng c n bi t tr c cch thot kh i nh ng tr ng h p kh khn.

3.6.1

Cc ngu n thng tin tr gip

N u ri vo tnh hu ng m b n khng bi t ph i lm g c c k t qu mong mu n, th t t nh t hy tm tr gip ngay trong h th ng. Cc phin b n Linux c hng nghn trang ti li u d ng t p tin, do cu tr l i cho cu h i c a b n n m trong lng bn tay. C m t vi ngu n c l p ch a thng tin v h u h t cc m t c a h th ng Linux: cc trang tr gip man tr gip siu vn b n info ti li u i km v i ph n m m HOWTO v FAQ c a d n The Linux Document Project (http://www. tldp.org) cu l nh locate C n ni ngay l p t c l ph n l n thng tin t nh ng ngu n ny b ng ti ng Anh. Cc d n d ch chng sang ti ng Vi t cn cha c t ch c ho c cn cha c hon ch nh. Do chng ta s xem xt t ng ngu n thng tin ny m t cch c th hn.

54

Kh i ng Linux l n u

3.6.2

Cc trang tr gip man

Nh ni ng n g n trn v cu l nh man, b ng cu l nh ny ng i dng trong hnh hu ng kh khn lun lun c th tm tr gip v b t k cu l nh no c a h th ng, v nh d ng t p tin, v v cc g i h th ng (system call). y l cch nh n tr gip chnh trong t t c cc h th ng UNIX. Cc trang tr gip man chia thnh cc ph n nh trong b ng 3.4. B ng 3.4: Cc ph n chnh c a tr gip man
Ph n 0 1 8 2 3 4 5 6 7 9 n N i dung Cc t p tin header (th ng n m trong /usr/include) Chng trnh ho c cu l nh c a ng i dng Cu l nh dng qu n tr h th ng G i h th ng6 (hm do nhn cung c p) G i th vi n7 (chng trnh con, hm trong th vi n c a ng d ng) Thi t b (t p tin c bi t, th ng n m trong /dev) nh d ng t p tin v quy c, v d /etc/passwd Tr chi Khc (bao g m cc gi macro v quy c, v d man(7), groff(7) Nhn (kernel routines) cc l nh Tcl/Tk

Th t li t k y khng c s nh m l n no. V n ch cc t p tin ch a thng tin c a tr gip man n m trong cc th m c con manx (x l tn c a ph n) c a th m c /usr/share/man v khi cu l nh man tm ki m thng tin c n thi t, th n s xem cc th m c con ny theo th t ch ra trong b ng 3.4. N u b n ch y l nh [user]$ man swapon th s nh n c tr gip v cu l nh swapon n m trong ph n 8. V th n u mu n xem tr gip v g i h th ng swapon c n ch y l nh [user]$ man 2 swapon ch ra s th t c a ph n tr gip c n tm ki m thng tin. Cc trang man c xem b ng chng trnh less (ho c chng trnh xc nh b i bi n PAGER), do c kh nng xem thng tin theo t ng mn hnh v di chuy n mn hnh ny xu ng d i v ln trn v di chuy n c th s d ng cc phm nh trong chng trnh less. Nh ng phm th ng dng nh t l: N u b n khng thch c t mn hnh m c m tay c, th c th in ra trang man tng ng b ng l nh [user]$ man tn_cu_l nh | lpr ho c n u my in l postscript th dng: [user]$ man -t tn_cu_l nh | lpr

3.6 Tr gip khi dng Linux

55

B ng 3.5: Phm s d ng xem trang man Phm Ch c nng <Q> Thot kh i chng trnh <Enter> Xem t ng dng <Space> Hi n th mn hnh thng tin ti p theo <B> Quay l i mn hnh tr c </>, dng k t , <Enter> Tm ki m dng k t ch ra <N> L p l i tm ki m v a th c hi n. Tuy nhin c th nh n c thng tin mong mu n th cn c n ph i bi t ch tm thng tin . Trong tr ng h p ny c th dng hai cu l nh whatis v apropos. Cu l nh whatis tm ki m t kha a ra trong c s d li u bao g m danh sch cc cu l nh v m t ng n g n c a chng. L nh ny ch a ra nh ng trng l p chnh xc v i t kha tm ki m. Cu l nh apropos th c hi n tm ki m theo cc ph n c a t kha. Tng t nh l nh apropos l cu l nh man v i tham s -k. Hy th ch y l nh sau: [user]$ man -k net C n ph i ni lun l cho cc cu l nh man -k, whatis v apropos lm vi c, th u tin c n t o ra c s d li u v cc cu l nh c trn my b ng cch ch y l nh makewhatis. Trong tr ng h p ng c l i khi tm ki m b n s nh n c thng bo nothing appropriate. Ch c ng i dng root m i c quy n ch y cu l nh makewhatis. N u b n c my ch y c m th t t nh t ch y cu l nh ny d ng cng vi c cho ti n trnh cron8 . Cu i cng tc gi mu n ni r ng, cc trang tr gip man khng dnh cho th i gian lm quen u tin v i Linux. Chng dnh cho nh ng ng i dng c kinh nghi m c n c s tay tra c u v nh d ng, tu ch n v c php c a l nh trong qu trnh lm vi c khng ph i nh m t s l ng l n nh ng thng tin ny trong u.

3.6.3

Cu l nh info

Cu l nh info l d ng tr gip thay th v tng ng v i man. nh n thng tin v m t cu l nh no , th cng gi ng nh man, c n nh p vo info cng v i m t tham s l tn c a cu l nh quan tm. V d : [user]$ info man Thng tin mn b n s th y trn mn hnh trong ph n l n tr ng h p s khc v i nh ng g m cu l nh man a ra. V theo ki n c a nhi u ng i dng l v chi u h ng t t hn. Nhng s khc nhau c b n nh t ch info a ra thng tin d ng siu vn b n (hypertext) gi ng nh cc trang web. Nh b n c kh nng xem cc ph n khc nhau c a tr gip m khng c n ph i thot ra kh i chng trnh xem ny. Trong khi lm vi c ch vn b n, b n c th
8

cron l chng trnh ch y t ng cc cng vi c theo th i gian nh.

56

Kh i ng Linux l n u

ch y cu l nh info trn m t trong cc terminal o (hy nh n cc t h p phm <Ctrl>+<Alt>+<F2>, <Ctrl>+<Alt>+<F3> v.v. . . ) c th chuy n sang terminal o tm tr gip khi c n thi t. Trong tr ng h p b n khng bi t tm thng tin c n thi t u th c th chuy n sang cc ph n khc nhau b ng cc siu lin k t (hyperlink) m info t o ra. Nh ng lin k t ny c nh d u b ng k t sao (*), khc v i cch nh d u lin k t trn cc trang Web nhng v n gi nguyn c s thu n l i. C th di chuy n qua cc lin k t b ng phm <Tab>. Sau khi di chuy n n lin k t mong mu n, hy nh n phm <Enter>. Phm <P> a ng i dng tr l i trang v a xem, phm <N> a n trang ti p theo, cn <U> chuy n ln trn m t b c trong c u trc phn b c c a cc trang ti li u ny. Ngoi ra, cn c th chuy n theo lin k t b ng cch khc tng t nh h th ng trnh n. u tin c n nh n phm <M>, sau nh p vo dng Menu item: cu i mn hnh m t vi k t u tin c a tn c a ph n tr gip c n thi t. Tn c a nh ng ph n tr gip ny c hi n th trn mn hnh. S k t ph i sao cho ch tng ng v i m t ph n tr gip, n u khng th chng trnh s yu c u nh p thm vo. Thot ra kh i info b ng phm <Q>.

3.6.4

Cu l nh help

Nh nh c n trn, h th ng tr gip v cc l nh tch h p c a h v bash l cu l nh help. N u ch y l nh help khng c tham s th s nh n c danh sch c a t t c cc l nh tch h p c a bash. N u ch y help tn, trong tn l tn c a m t trong nh ng cu l nh ni trn, th b n s nh n c gi i thi u ng n g n v cch s d ng cu l nh ny.

3.6.5

Ti li u i km v i b n phn ph i v chng trnh ng d ng

N u trong qu trnh ci t khng b i nh ng gi ti li u, th sau khi k t thc b n s tm th y trong th m c /usr/share/doc (ho c /usr/doc) cc th m c con HOWTO, FAQ,. . . Nh ng th m c ny ch a ti li u y v h th ng Linux ni chung cng nh nh ng ph n ring r c a n. Nh ng ti li u ny c d ng vn b n ASCII v c th xem chng b ng cc cu l nh more tn ho c less tn ho c b ng chng trnh xem c trong Midnight Commander. Ph n l n cc chng trnh ng d ng c km theo ti li u h ng d n ci t v s d ng. N u ci t chng trnh t gi (package) d ng rpm (Fedora Core, SuSE, Mandriva,. . . ) th ti li u s n m trong th m c con tng ng c a th m c /usr/share/doc. Tn c a nh ng th m c con ny tng ng v i tn c a chng trnh v phin b n c a n. V d , chng trnh nh p ti ng Vi t m ti ang dng g nh ng dng ny xvnkb phin b n 0.2.9 c th m c con tng ng xvnkb-0.2.9 n m trong /usr/share/doc sau khi ci t. i khi tm t p tin tr gip mong mu n b n s c n n cu l nh locate. Cu l nh ny trong m t ch ng m c no tng t v i cc l nh whatis v apropos. Khi ch y locate n s tm t t c nh ng t p tin c tn ch a t kha a ra. V d locate net s tm t t c nh ng tn t p tin c tn ch a net. Nh ng t p tin ny c r t nhi u trn my. Trong t kha (m u) c th s d ng cc k t thay th *, ?, []. Tuy nhin cu l nh locate khng tm ki m theo cc

3.6 Tr gip khi dng Linux

57

th m c c a h th ng t p tin, m theo c s d li u c bi t ch a tn cc t p tin c t o ra (v i khi c n c p nh t) b ng l nh updatedb. Trong m t s b n phn ph i locate c thay th b i slocate (secure locate). slocate t t o cho mnh c s d li u ni trn sau khi ch y v i tham s tng ng.

3.6.6

Cu l nh xman

y l chng trnh cho php xem cc trang tr gip man khi lm vi c giao di n ho (GUI). Vi c tm ki m v hi n th cc trang tr gip c th c hi n b ng cch nh n cc nt v trnh n. Cn l i (theo thng tin hi n th ) xman cng gi ng nh man.

3.6.7

Cu l nh helptool

Sau khi ch y l nh helptool s hi n ra m t c a s ho , c m t nh p vo ng i dng a ra thu t ng ang quan tm. Chng trnh s xem t t c cc t p tin ti li u (b n c th c u hnh ch n nh ng ti li u no c n xem khi tm ki m). Sau khi hon thnh tm ki m chng trnh s hi n ra danh sch nh ng t p tin c ch a thu t ng ny. N u nh n chu t vo m t t p tin trong danh sch th s hi n ra m t c a s khc n i dung c a t p tin ch n. Khi ny t p tin s c hi n th d ng lu trn a: trang info, trang man, v.v. . .

3.6.8

Sch v Internet

T t nhin, h c Linux d dng v n gi n nh t khi c m t cu n sch t t. Tr c tin b n c n c ti li u h ng d n i km v i b n phn ph i c a mnh. Cc b n phn ph i l n nh Debian, SuSE, Fedora,. . . u c nh ng ti li u ny (r t c th c d ch sang ti ng Vi t). R t ti c ng i d ch cha c cu n sch ti ng Vi t no v Linux do khng th gi i thi u v i b n c. T t nhin n u b n c k t n i Internet (by gi khng cn qu xa x ) v m t cht ti ng Anh th c th tm c cu tr l i cho m i cu h i c a mnh. Ti xin a ra m t s a ch sau lm b c kh i u cho b n c trong bi n thng tin v b b n ny.

Cc trang ti ng Vi t
1. http://vnoss.org trang web dnh cho ng i dng ng d ng m ngu n m (MNM) Vi t Nam. C nhi u thng tin v Linux, ti li u v Linux, di n n cho php b n t cu h i c a mnh. Trang web do bc Nguy n i Qu ang s ng v lm vi c t i B qu n l. 2. http://vnoss.net tin t c v Linux v MNM. 3. http://vnlinux.org y l trang web dnh cho nhm ng i dng Linux Vi t Nam (vietlug). B n s tm th y nhi u thng tin c ch y v c th ng k tham gia nhm th vietlug t cu h i. Trang ny do anh Larry Nguy n, m t Vi t Ki u M , qu n l.

58

Kh i ng Linux l n u 4. http://vnoss.net/dokuwiki/doku.php?id=linux:tailieutiengviet trn trang ny c t ng h p t t c nh ng ti li u ti ng Vi t v Linux, r t c th b n s tm th y ti li u v ti mnh c n tm hi u trn trang ny. 5. http://kde-vi.org trang web c a nhm d ch giao di n KDE sang ti ng Vi t.

Cc trang ti ng Anh
1. http://www.linux.com 2. http://www.linux.org 3. http://www.linux.org.uk Trang web Linux c a Chu u. Do Allan Cox m t trong cc nh pht tri n Linux h tr . 4. http://www.tldp.org Trang web chnh ch a ti li u v Linux. R t nhi u ti li u bao g m HOWTO, FAQ, sch. . . 5. http://freshmeat.net/ Thng bo hng ngy v nh ng chng trnh ng d ng m i ra dnh cho Linux. Kho ph n m m kh ng l cho Linux. 6. http://www.li.org T ch c Linux International. 7. http://www.linuxstart.com 8. http://oreilly.linux.co 9. http://www.linuxplanet.com 10. http://www.kde.org Trang ch c a mi tr ng lm vi c KDE. 11. http://www.gnu.org Cc ng d ng dnh cho Linux, trong n i ti ng nh t l trnh so n th o Emacs (GNUs Not UNIX). 12. http://slashdot.org Nh ng tin t c m i nh t v cng ngh my tnh trong c Linux. C cc bi bo v l i bnh c a ng i c (khng qua ki m duy t). 13. http://www.linuxtoday.com Danh sch di nh ng tin t c, thng bo qu ng co v cc thng tin khc. Xem trang ny b n s bi t ph n l n nh ng s ki n trong th gi i Linux. 14. http://www.lwn.net Tin t c hng tu n v Linux. Thng tin chia thnh t ng h ng m c: thng tin chung, thng m i, thng tin v nhn Linux, cng c pht tri n chng trnh m i, chng trnh cho Linux, v.v. . . N u b n mu n tin t ng r ng Linux pht tri n r t nhanh v mu n nh n tr gip c a cc cng ty thng m i l n th nh t nh ph i thm trang ny. Tin t c trn tu n bo ny c ban bin t p ch thch r t t t. 15. http://www.linuxnewbie.org Trang web t t cho nh ng ng i dng m i. y b n s tm th y r t nhi u ti li u.

3.6 Tr gip khi dng Linux

59

16. http://www.linuxjournal.com t p ch Linux. Th ng ng nh ng bi bo v nhi u ti. 17. http://www.linuxgazette.com t bo Linux ny s th v i v i c ng i dng m i v ng i dng c kinh nghi m. 18. http://www.linuxfocus.org T p ch phi thng m i ton c u. 19. http://www.linuxworld.com M t trang web t t c r t nhi u bi bo hay. 20. http://www.linux-mag.com Linux Magazin, m t t t p ch r t th v . 21. http://www.penguinmagazine.com. T t nhin y khng ph i l danh sch y nh ng trang web ni v Linux. Nh ng trang ni trn ch l i m kh i u t b n s tm c nh ng trang web khc trong bi n thng tin Internet. i n u l ph thu c vo mu n c a b n. N u c v n trong lc ci t, th hy h i d ch v khch hng c a phn ph i a. N u b n mua a c a m t cng ty chuyn mn th s c a ch lin l c c a d ch v ny. N u b n mua a ghi l i ho c t ghi a t t p tin ISO nh n c qua Internet th r t c th l i ci t l do khi ghi a gy ra. Hy s d ng h p th i n t . B n nn ng k v i m t vi nhm th chung (mailing list) no , v d mailto:vietlug-users@userforge.net. Cch ng k cn ph thu c vo t ng nhm th (ni chnh xc hn l ph thu c vo my ch i u khi n nhm th ny). Nhng hi n nay th ng c hai cch ng k: g i th n m t a ch xc nh yu c u, ng k qua giao di n web. Thng tin ny b n c th tm th y trn trang web gi i thi u v nhm th chung. Tuy nhin b n c n bi t l c c t t c th chung th c n r t nhi u th i gian, v cn ph i c r t nhi u th c a nh ng ng i dng m i khc (v d Console l g?), ho c th m ch c c nh ng l th ng ng n (v d Hm nay dng Debian th t vui) v t t nhin l ph i c c nh ng th tr l i cho nh ng cu h i ny c a nh ng ai bi t m t cht g . Do n u mu n b n c th xem kho lu tr nh ng l th ny b ng trnh duy t, r t c th c cu tr l i cho cu h i c a b n . V nh v y b n khng c n ph i ng k cng nh vi t th vo nhm th chung n a. T t nhin n u khng tm th y th ng ng i ng n t cu h i. Ng i dng Linux h t s c vui lng tr l i th c a b n. B o m l b n s nh n c cu tr l i, n u khng hi u th cn c th yu c u gi i thch thm. Khi t cu h i c lin quan n h th ng Linux c a b n, c n lun lun thm vo th c a mnh cng nhi u chi ti t cng t t (nhng ng thm thng tin th a) bao g m: tn c a b n phn ph i (Debian, SuSE, Fedora, hay m t ci no khc), phin b n nhn, c v n v i ph n c ng no (phin b n, dng ch ghi trn m ch i n t ), thng bo no hi n ra khi c v n . ng i h i ng i dng khc g i cu tr l i th ng n a ch c a b n, vi t th vo nhm th chung l t th hi n, vi t th i n t cng l s h tr k thu t. Vi t th th mi n ph, nhng s h tr k thu t th khng. Xin hy lun nh i u !

Chng 4 Lm quen v i h th ng t p tin ext3fs


By gi b n bi t cch kh i ng v d ng h th ng Linux, n lc lm quen v i m t trong nh ng thnh ph n chnh v quan tr ng c a Linux l h th ng t p tin. H th ng t p tin l c u trc nh nhn c a h i u hnh c th cung c p cho ng i dng v cc ti n trnh ti nguyn c a h th ng d ng b nh lu di trn cc a lu1 thng tin: a c ng, a t , CD, DVD, v.v. . . M i h th ng t p tin, gi ng nh m t ci a n, c hai m t. M t m t c a n lun quay v pha ng i dng (hay ni chnh xc hn l quay v pha ng d ng), chng ta t m g i n l m t tr c. T pha m t tr c ny ng i dng th y h th ng t p tin l m t c u trc lgc c a cc th m c v t p tin. M t cn l i, m ng i dng khng th y, quay v pha chnh b n thn a lu t o thnh m t vng bn trong c a h th ng t p tin i v i ng i dng, chng ta t m g i l m t sau. M t ny c a h th ng t p tin c c u trc khng n gi n cht no. V y th c hi n cc c ch ghi t p tin ln cc a lu khc nhau, th c hi n vi c truy c p (ch n thng tin c n thi t) v nhi u thao tc khc. Trong chng hi n t i chng ta s xem xt m t quay v pha ng i dng c a h th ng t p tin. M t cn l i s dnh cho m t chng sch sau. C n ni thm l chng ta s xem xt m t h th ng t p tin c th ext3fs, h th ng t p tin c b n c a Linux n th i i m hi n nay. Cn c nh ng h th ng t p tin khc nhng chng ta s c p n chng mu n hn.

4.1

T p tin v tn c a chng

My tnh ch l cng c lm vi c v i thng tin khng hn khng km. M thng tin trn m i HH c lu d ng t p tin trn cc a lu. T pha c a HH th t p tin l m t chu i lin t c cc byte v i chi u di xc nh. H i u hnh khng quan tm n nh d ng bn trong c a t p tin. Nhng n c n t cho t p tin m t ci tn no ng i dng (hay ni ng hn l chng trnh ng d ng) c th lm vi c v i t p tin. Lm sao ng i dng c th lm vi c v i t p tin l cng vi c c a h th ng t p tin, ng i dng th ng khng c n quan tm n. V th , i v i ng i dng th h th ng t p tin l m t c u trc lgc c a cc th m c v t p tin. Tn t p tin trong Linux c th di 255 k t bao g m b t k k t no tr k t c m b ng 0 v k t d u g ch cho (/). Tuy nhin cn c nhi u k t n a c ngha c bi t trong h v shell v do khng nn dng t tn t p tin.
1

M t s tc gi thch dng thu t ng v t ch a

y.

4.1 T p tin v tn c a chng l nh ng k t sau: ! @ # $ & ~ % * ( ) [ ] { } " \ : ; > < d u cch

61

N u tn t p tin ch a m t trong nh ng k t ny (khng khuyn dng nhng v n c th ) th tr c n ph i t m t d u g ch cho ng c (\) (i u ny v n ng trong tr ng h p c chnh b n thn d u g ch cho ng c, t c l ph i l p l i d u ny hai l n). V d : [user]$ mkdir \\mot\&hai s t o th m c \mot&hai. Cn c th t tn t p tin ho c th m c v i nh ng k t ni trn vo d u ng c kp. V d , t o th m c c tn mot hai ba chng ta c n dng cu l nh sau: [user]$ mkdir "mot hai ba" v cu l nh [user]$ mkdir mot hai ba s t o ba th m c: mot, hai v ba. Lm tng t nh v y i v i nh ng k t khc, t c l c th thm chng vo tn t p tin (th m c) n u a tn vo trong d u ngo c kp ho c dng d u g ch cho ng c b i ngha c bi t c a chng. Tuy nhin t t nh t l khng s d ng nh ng k t ny k c d u cch trong tn t p tin v th m c, b i v c th gy ra v n cho m t s ng d ng khi c n s d ng nh ng t p tin nh v y v c khi di chuy n nh ng t p tin ln h th ng t p tin khc. i v i d u ch m th khng ph i nh v y. Trong Linux ng i dng th ng t nhi u d u ch m trong tn c a t p tin, v d xvnkb-0.2.9.tar.gz. Khi ny khi ni m ph n m r ng t p tin (th ng dng trong DOS) khng cn c ngha g, m c d v n dng ph n cu i cng c a tn t p tin sau d u ch m lm k hi u v cc d ng t p tin c bi t (.tar.gz dng k hi u cc t p tin nn2 ). Trn Linux cc t p tin chng trnh v t p tin bnh th ng khng phn bi t theo ph n m r ng c a tn (trong DOS t p tin chng trnh c ph n m r ng exe) m theo cc d u hi u khc, chng ta s c p n sau. D u ch m c ngha c bi t trong tn t p tin. N u n l d u ch m u tin trong tn, th t p tin ny s l n (thu c tnh hidden) i v i m t s cu l nh, v d , l nh ls khng hi n th nh ng t p tin nh v y.3 Nh ni chng tr c trong Linux c phn bi t cc k t vi t hoa v vi t th ng. i u ny cng ng i v i tn t p tin. V th l4u-0.9.2.tar.gz v L4U-0.9.2.tar.gz c th n m trong cng m t th m c v l tn c a cc t p tin khc nhau. i u ny lc u c th gy kh khn cho ng i dng Windows nhng sau khi quen th b n s th y n th t s c ch. Chng ta quen v i vi c t p tin c xc nh hon ton theo tn c a n. Tuy nhin n u nhn t pha h i u hnh v h th ng t p tin th khng ph i
2 3

th ng g i theo ti ng lng l tarball, qu bng tar Nhng l nh ls -a s hi n th . c thm ls(1) bi t chi ti t.

62

Lm quen v i h th ng t p tin ext3fs

nh v y. Chng ta s ni k v m t sau c a h th ng t p tin trong m t s chng sch s p t i, nhng by gi cng c n c p n m t cht v ch s inode. V n ch m i t p tin trong Linux c m t ch s k hi u (index descriptor) tng ng, hay cn g i l inode (t m th i cha c thu t ng ti ng Vi t chnh xc nn xin nguyn t ti ng Anh). Chnh inode lu t t c nh ng thng tin c n thi t cho h th ng t p tin v t p tin, bao g m thng tin v v tr c a cc ph n c a t p tin trn a lu, thng tin v d ng t p tin v nhi u thng tin khc. Cc ch s inode n m trong m t b ng c bi t g i l inode table. B ng ny c t o ra trn a lu cng lc v i h th ng t p tin. M i a lu d l th t s hay lgc th u c m t b ng cc ch s inode c a ring mnh. Cc inode trong b ng c nh s theo th t , v chnh ch s ny m i l tn th c s c a t p tin trn h th ng. Chng ta s g i ch s ny l ch s c a t p tin. Tuy nhin i v i ng i dng th nh ng tn nh v y th t s khng thu n ti n. Khng ph i ai cng c kh nng nh ghi g trong t p tin v i s 12081982 (ni chnh xc hn l ch c m t s r t t ng i c kh nng ny). V th cc t p tin cn c t thm m t tn thn thi n v i ng i dng v hn th n a cn c nhm vo cc th m c. Tc gi a ra nh ng thng tin trn ch ni r ng tn c a b t k t p tin no trong Linux khng ph i g khc m chnh l lin k t n ch s inode c a t p tin. V th m i t p tin c th c bao nhiu tn ty thch. Nh ng tn ny cn c g i l lin k t c ng (hard link) (chng ta s lm quen k hn v i khi ni m lin k t v cch t o nh ng lin k t ny trong chng sau). Khi b n c xa m t t p tin c nhi u tn (lin k t c ng) th trn th c t ch xa i m t lin k t (m b n ch ra trn dng l nh xa). Th m ch c khi b n c xa i lin k t cu i cng th cng khng c ngha l xa n i dung c a t p tin: n u t p tin ang c h th ng hay m t ng d ng no s d ng, th n c lu n lc h th ng ( ng d ng) gi i phng n. c th thm tn khc cho t p tin ho c th m c (t o lin k t c ng), chng ta s d ng cu l nh ln d ng sau: ln tn__c tn_m i V d : [user]$ ln projects/l4u/l4u-0.9.2.pdf ~/l4u.pdf K t c ngha c bi t, n ch th m c c nhn (home directory) c a ng i dng, chng ta s ni k hn v k t ny ngay sau y. By gi c th dng ~/l4u.pdf thay cho ng d n di hn projects/l4u/l4u-0.9.2.pdf. Chi ti t v cu l nh ln b n c th c trong trang man c a n. C th tm ra s l ng lin k t c ng n t p tin (t c l s l ng tn c a t p tin) b ng l nh ls v i tham s -l4 . Ngay pha sau quy n truy c p n t p tin l m t s cho bi t s l ng nh ng lin k t c ng ny:
[user]$ ls t ng 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

N u b n dng SuSE Linux th c th nh p vo l nh ll.

4.2 Th m c (Danh sch b c t b t v khng c n thi t).

63

4.2

Th m c

N u nh c u trc t p tin khng cho php s d ng g khc ngoi tn t p tin (t c l t t c cc t p tin n m trn m t danh sch chung gi ng nh cc h t ct trn bi bi n) th th m ch c khi khng c gi i h n v di c a tn, r t kh c th tm n t p tin c n thi t. Hy t ng t ng b n c m t danh sch kho ng vi nghn t p tin! Xin ng nghi ng , m t h th ng Linux hon ch nh s c s l ng t p tin cn l n hn th . V th m cc t p tin c t ch c vo cc th m c, cc th m c c th n m trong cc th m c khc, v.v. . . K t qu l chng ta thu c m t c u trc th m c c phn b c b t u t m t th m c g c. M i th m c (con) c th ch a cc t p tin ring l v cc th m c con c a n. C u trc phn b c c a th m c th ng c minh ho b ng cy th m c, trn m i th m c l m t nt c a cy, cn t p tin l cc l. Trn MS Windows ho c DOS c u trc th m c nh v y c trn m i a (t c l chng ta c khng ph i m t cy m m t r ng th m c) v th m c g c c a m i c u trc t p tin c nh d u b ng m t ch ci Latinh (v do c m t s h n ch ). Trn Linux v UNIX ni chung ch c m t c u trc th m c duy nh t cho t t c cc a lu, v th m c g c duy nh t c a c u trc ny c k hi u b ng d u g ch cho /. C th a vo th m c g c ny m t s l ng khng h n ch cc th m c n m trn cc a lu khc nhau (th ng ni l g n h th ng t p tin ho c g n a lu). Tn c a th m c cng c t theo nh ng quy nh nh i v i tn t p tin. V ni chung ngoi c u trc bn trong c a mnh th th m c khng khc g so v i nh ng t p tin thng th ng, v d t p tin vn b n (text file). Tn y c a t p tin (ho c cn g i l ng d n5 n t p tin) l danh sch tn c a cc th m c bao g m th m c ch a t p tin v cc th m c m , b t u t th m c g c / v k t thc l b n thn tn c a t p tin. Trong ng d n ny tn c a cc th m c con cch nhau b i d u g ch cho / dng k hi u th m c g c nh ni trn. V d /home/teppi82/projects/l4u/ext3fs.tex l tn y c a t p tin ti ang nh p vo trn my c a mnh. H v shell lu gi tr c a th m c hi n th i, t c l th m c m ng i dng ang lm vi c trong . C m t cu l nh cho bi t tn c a th m c hi n th i, l l nh pwd. Ghi ch: n u ni m t cch chnh xc, th th m c hi n th i lun i li n v i m i ti n trnh ch y (trong c h v shell), v th i khi ch y m t chng trnh no trong shell c th d n n vi c thay i th m c hi n th i sau khi chng trnh hon thnh cng vi c. Ngoi th m c hi n th i m i ng i dng cn c m t th m c nh (home directory, phng n d ch th m c c nhn c u tin hn, v chng ta s dng thu t ng ny trong cu n sch l4u). l th m c trong ng i dng c ton quy n6 : c th t o v xa cc t p tin, thay i quy n truy c p n chng, v.v. . . Trong c u trc th m c c a Linux nh ng th m c c nhn c a ng i dng th ng n m trong th m c /home v th ng c tn trng v i tn ng nh p c a
5 6

y l ng d n tuy t i Ni chnh xc hn l: c ton quy n n khi no root cha thay i chng :).

64

Lm quen v i h th ng t p tin ext3fs

ng i dng . V d : /home/nhimlui. M i ng i dng c th lm vi c v i th m c c a mnh b ng k hi u ~, t c l ng i dng nhimlui c th lm vi c v i th m c /home/nhimlui/hinhanh b ng ~/hinhanh. Khi ng i dng vo h th ng, th m c c nhn s tr thnh th m c hi n th i c a ng i dng ny. Cu l nh cd dng thay i th m c hi n th i. Tham s c a l nh ny l ng d n y ho c ng d n tng i n th m c m b n mu n dng lm hi n th i. Khi ni m ng d n y (tuy t i) gi i thch trn, by gi chng ta s ni r hn v khi ni m ng d n tng i. ng d n tng i l danh sch cc th m c c n ph i i qua trong cy th m c c th chuy n t th m c hi n th i n th m c khc (chng ta g i n l th m c ch). N u th m c ch n m pha d i trong c u trc th m c, t c l n m trong m t th m c con, ho c chu, ch t no c a th m c hi n th i, th n gi n: ch c n ch ra th m c con c a th m c hi n th i, sau th m c con c a th m c con (th m c chu),. . . cho n khi no t i c th m c ch. N u nh th m c ch n m cao hn trong c u trc th m c, ho c n m hon ton trn m t cnh khc c a cy th m c, th ph c t p hn m t cht. T t nhin trong b t k tr ng h p no cng c th s d ng ng d n tuy t i, nhng khi c n ph i nh p vo m t ng d n r t di. V n ny c gi i quy t nh sau: m i th m c (tr th m c g c) c duy nh t m t th m c m trong cy th m c. Trong m i th m c c hai b n ghi c bi t. M t trong s chng c k hi u l d u ch m (.) v ch n chnh b n thn th m c ny, cn b n ghi th hai c k hi u l hai d u ch m n (..), n ch n th m c m . Chnh nh ng d u hai ch m ny c dng ghi ng d n tng i. V d , dng th m c m lm th m c hi n th i, th ch c n ch y l nh: [user]$ cd .. Cn chuy n leo ln hai b c c a cy th m c, r i t h xu ng th m c vnoss/doc th c n ch y l nh: [user]$ cd ../../vnoss/doc Cu l nh ls dng a ra mn hnh danh sch cc t p tin v th m c con c a th m c hi n th i. C n lu l trn th c t n cu l nh ls ch a ra n i dung c a t p tin m t th m c ny, v khng x y ra b t k no thao tc lm vi c v i t p tin c a th m c. Nh ni trn, m i th m c ch l m t t p tin bnh th ng, trong c li t k t t c nh ng t p tin v th m c con c a th m c ny. T c l khng c cc h p c bi t ch a cc t p tin, ch c cc danh sch t p tin thng th ng xc nh t p tin hi n th i thu c v m t th m c no . N u ch y cu l nh ls khng c tham s th chng ta ch th y tn c a cc t p tin c a th m c hi n th i. N u mu n xem n i dung c a m t th m c khc, th c n ph i a cho cu l nh ls ng d n tuy t i ho c tng i n th m c . 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 d ng c a cc th m c chnh

65

B n ghi v t p tin trong th m c tng ng ngoi tn cn c r t nhi u thng tin v t p tin ny. th y c nh ng thng tin chi ti t , th c n dng cc tham s m r ng khc c a cu l nh ls. N u ch y cu l nh ls v i tham s -l th khng ch c tn t p tin m s hi n th c d li u v quy n truy c p n t p tin (chng ta s ni n sau); s l ng lin k t c ng hay s l ng tn (n u l th m c th ngay t u c hai lin k t nh v y l . v .., do s ny b ng s th m c con cng thm 2); tn ch s h u t p tin, tn nhm s h u t p tin (xin c g i t t l nhm t p tin m c d t i ngha); kch th c t p tin v th i gian s a i cu i cng. M t v d minh h a khc:
[user]$ ls t ng 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

N u a thm tham s -i th trong c t u tin s hi n th ch s inode c a t p tin. Khi dng tham s -t vi c s p x p c th c hi n khng theo tn m theo th i gian s a i t p tin. Tham s -u dng hi n th th i gian truy c p cu i cng thay vo ch th i gian s a i. Tham s -r o ng c l i tr t t c a s p x p (c n ph i s d ng cng v i cc tham s -l ho c -t). C n ch r ng c th li t k cc tham s m t cch ring r nh th ny: [user]$ ls -l -i - r ho c g p l i nh th ny: [user]$ ls -lir Chng ta d ng m t ng n g n v cu l nh ls y (chi ti t v l nh ny c th xem trn cc trang man ho c info tng ng) v chuy n sang xem xt cc th m c chnh c a c u trc t p tin trong Linux.

4.3

Cng d ng c a cc th m c chnh

N u nh b n c t ng dng Windows (v d 2000 hay XP), th bi t r ng m c d ng i dng c ton quy n t ch c c u trc th m c, nhng m t s truy n th ng v n c tun theo. V d cc t p tin h th ng th ng n m trong th m c C:\Windows, cc chng trnh th ng c ci t vo C:\Program Files, v.v. . . Trong Linux cng c m t c u trc th m c ki u nh v y v th m ch cn nghim ng t hn. Hn n a c m t tiu chu n xc nh c u trc th m c cho cc HH dng UNIX. Tiu chu n ny c g i l Filesystem Hierarchy Standart (FHS). N u c mong mu n b n c th c ton b tiu chu n ny t i a ch

66

Lm quen v i h th ng t p tin ext3fs

http://www.pathname.com/fhs/. Cc b n phn ph i Linux l n u tun theo tiu chu n ny. B ng 4.1 d i y a ra danh sch ng n g n nh ng th m c chnh c t o ra trong c u trc t p tin theo tiu chu n ni trn. c t bn tri li t k cc th m c con c a th m c g c, cn c t th hai li t k m t vi (khng ph i t t c ) th m c con, cn c t th ba cu i cng a ra m t ng n g n v cng d ng c a nh ng th m c ny. M t trong b ng ny l h t s c ng n g n, chi ti t hn b n c th c trong tiu chu n FHS c trn http://www.pathname.com/fhs/. B ng 4.1: C u trc th m c c a Linux Cng d ng Th m c ny g m ch y u cc chng trnh, ph n l n trong s chng c n cho h th ng trong th i gian kh i ng (ho c trong ch m t ng i dng khi b o tr h th ng). y c lu r t nhi u nh ng cu l nh th ng dng c a Linux. /boot G m cc t p tin c nh c n cho kh i ng h th ng, trong c nhn (kernel). T p tin trong th m c ny ch c n trong th i gian kh i ng7 . /dev Th m c cc t p tin c bi t ho c cc t p tin thi t b ph n c ng. Chng ta s ni n nh ng t p tin ny ngay sau trong m t ph n ring. B n c c th xem qua man mknod (mknode(1)). /etc Th m c ny v cc th m c con c a n lu ph n l n nh ng d li u c n cho qu trnh kh i ng ban u c a h th ng v lu nh ng t p tin c u hnh chnh. V d , trong /etc c t p tin inittab xc nh c u hnh kh i ng, v t p tin ng i dng passwd. M t ph n cc t p tin c u hnh c th n m trong cc th m c con c a /usr. Th m c /etc khng c lu cc t p tin chng trnh (c n t chng trong /bin ho c /sbin. D i y chng ta s xem xt cng d ng c a m t vi(!) th m c con c a th m c /etc. /etc/rc.d Th m c ny lu nh ng t p tin s d ng trong qu trnh kh i ng h th ng. Chng ta s c p chi ti t v nh ng t p tin ny v qu trnh kh i ng ni ring trong m t vi chng s p t i. /etc/skel Khi t o ng i dng m i, th nh ng t p tin trong th m c ny s c sao chp vo th m c c nhn c a ng i dng . /etc/sysconfig Th m c lu m t vi (khng ph i t t c ) t p tin c u hnh h th ng. /etc/X11 Th m c dnh cho cc t p tin c u hnh c a h th ng X11 (v d , xorg.conf). /home Thng th ng trong th m c ny l cc th m c c nhn c a ng i dng (tr root). Th m c /bin

do m t s nh qu n tr khng t ng g n phn vng /boot vo trong qu trnh kh i ng.

4.3 Cng d ng c a cc th m c chnh Th m c /lib

67

/lost+found

/mnt

/tmp

/root

/sbin

/proc

Cng d ng Th m c ny lu cc th vi n chia s c a cc hm m trnh bin d ch C v cc mun (cc driver thi t b ) c n. Th m ch n u trn h th ng khng c trnh bin d ch C no, th cc th vi n chia s v n c n thi t, v chng c nhi u chng trnh s d ng. Nh ng th vi n ny ch n p vo b nh khi c nhu c u th c hi n hm no , nh v y cho php gi m kch th c m chng trnh n m trong b nh . Trong tr ng h p ng c l i th cng m t m l p l i nhi u l n trong cc chng trnh khc nhau. Th m c ny s d ng ph c h i h th ng t p tin b ng l nh fsck. N u fsck tm ra t p tin m khng xc nh c th m c m th n s a t p tin vo th m c /lost+found. V th m c m b m t, nn t p tin s nh n c tn trng v i ch s inode c a n. y l i m g n (mount) nh ng h th ng t p tin g n t m th i. N u trn my tnh c ng th i Linux v Windows (DOS) th th m c ny th ng dng g n cc h th ng t p tin FAT. N u b n th ng g n m t vi a lu ng nh a m m, CD, DVD, a c ng ngoi, flash,v.v. . . th c th t o trong th m c ny cc th m c con cho t ng a lu. Th m c dnh cho cc t p tin t m th i. b t k th i i m ny ng i dng root cng c th xa t p tin kh i th m c ny m khng lm nh h ng l n n ng i dng khc. Tuy nhin khng nn xa nh ng t p tin trong th m c ny, tr khi khi b n bi t r ng t p tin ho c nhm t p tin no ang gy nh h ng n cng vi c c a h th ng. H th ng s t ng d n d p th m c ny theo nh k, v th khng nn lu y nh ng t p tin m b n c th s c n n. y l th m c c nhn c a ng i dng cao c p root. Hy ch l th m c ny khng n m cng ch v i th m c c nhn c a nh ng ng i dng khc (trong /home). V th m c /bin ch y u lu cc t p tin th c thi (chng trnh v ti n ch c a HH) s d ng trong qu trnh kh i ng v do nh qu n tr ch y. Trong tiu chu n FHS c ni r ng c n c trong th m c ny nh ng t p tin th c thi s s d ng sau khi g n thnh cng h th ng t p tin /usr. t nh t trong th m c ny ph i c init, mkswap, swapon, swapoff, halt, reboot, shutdown, fdisk, fsck.*, mkfs.*, arp, ifconfig, route. y l i m g n h th ng t p tin proc cung c p thng tin v cc ti n trnh ang ch y, v nhn, v cc thi t b tnh, v.v. . . y l h th ng t p tin o. Chi ti t b n c th c trong man 5 proc. Cc t p tin c bi t c a th m c ny s d ng nh n v g i d li u n nhn.

68 Th m c /usr

Lm quen v i h th ng t p tin ext3fs Cng d ng Th m c ny r t l n v c u trc c a n nhn chung l p l i c u trc c a th m c g c. Trong cc th m c con c a /usr l t t c cc ng d ng chnh. Theo tiu chu n FHS th nn dnh cho th m c ny m t phn vng ring ho c t hon ton trn a s d ng chung trong m ng. Phn vng ho c a th ng g n ch c v trn a (phn vng) l cc t p tin c u hnh cng nh t p tin th c thi dng chung, cc t p tin ti li u, cc ti n ch h th ng v c cc t p tin thm vo (t p tin d ng include). Cc chng trnh (ti n ch v ng d ng) th ng c ng i dng bnh th ng s d ng. /usr/bin/X11 l ni th ng dng lu cc chng trnh ch y trn X Window. V y cng th ng l lin k t n /usr/X11R6/bin. Th m c con ny lu m ngu n c a cc th vi n tiu chu n c a ngn ng C. Ng i dng c n c t nh t l quy n c i v i th m c ny. D trong tr ng h p no cng ng s a nh ng t p tin trong th m c ny, v chng c cc nh pht tri n h th ng ki m duy t k cng (khng l b n bi t v h th ng t t hn cc nh pht tri n). y th ng t cc chng trnh v cc th m c con (n i b ) ch dnh cho my tnh ny, bao g m: /usr/local/bin. ng d ng. y th ng lu nh ng chng trnh

/usr/bin

/usr/include

/usr/local

/usr/local/doc cc ti li u i km v i chng trnh ng d ng. /usr/local/lib th vi n v t p tin c a cc chng trnh v h th ng n i b . /usr/local/man cc trang tr gip man. /usr/local/sbin cc chng trnh dnh cho nh qu n tr . /usr/local/src m ngu n c a cc chng trnh. /usr/sbin /usr/lib Th m c ny g m cc chng trnh th c thi dnh cho nh qu n tr v khng s d ng trong th i gian kh i ng. Trong th m c ny l cc th vi n object c a cc chng trnh con, cc th vi n ng (dynamic library), m t s chng trnh khng th g i tr c ti p. Cc h th ng ph c t p (v d Debian Linux) c th c cc th m c con c a mnh trong th m c ny. /usr/lib/X11 ni th ng dng t cc t p tin c lin quan n X Window v cc t p tin c u hnh c a h th ng X Window. Trn Linux th ng l lin k t m m n th m c /usr/X11R6/lib/X11.

4.3 Cng d ng c a cc th m c chnh Th m c /usr/share

69

Cng d ng Th m c ny dng cho t t c cc t p tin d li u dng chung v c quy n truy c p l ch c. Th ng dng chia s gi a cc ki n trc khc nhau c a HH, v d i386, Alpha, v PPC c th dng chung m t th m c /usr/share n m trn m t phn vng ho c a chia s trn m ng. C n ch l th m c ny khng dng chia s gi a cc HH khc nhau ho c gi a cc phin b n khc nhau c a cng m t HH. Tiu chu n FHS khuyn dng th m c con cho m i chng trnh. Nh ng th m c sau ho c lin k t m m sau ph i c trong /usr/share: man (cc trang tr gip man), misc (nh ng gi li u ty theo ki n trc khc nhau). Chng ta xem xt m t vi th m c con c a th m c ny: /usr/share/dict cc danh sch t (word list) c a ti ng Anh dng cho cc chng trnh ki m tra chnh t nh ispell. /usr/share/man cc trang tr gip man. M i ph n c a man n m trong m t th m c con ring trong th m c ny. /usr/share/misc ( ni trn).

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

M ngu n c a cc thnh ph n khc nhau c a Linux: nhn, ng d ng. . . M t ni n a lu cc t p tin t m th i. Thng th ng y l lin k t m m n /var/tmp. Cc t p tin thu c v h th ng X Window. /usr/X11R6/bin cc chng trnh th ng ny. ng d ng c a h

/usr/X11R6/lib cc t p tin v th vi n c lin quan n X-Window. /var Trong th m c ny l cc t p tin lu cc d li u bi n i (variable). Nh ng d li u ny xc nh c u hnh c a m t s chng trnh trong l n ch y sau ho c l nh ng thng tin lu t m th i s s d ng sau. Dung l ng thng tin trong th m c ny c th thay i trong m t kho ng l n, v th m c gi cc t p tin nh b n ghi (log), spool, kha locking, cc t p tin t m th i, v.v. . . Lu cc thng tin v ti kho n v thng tin chu n on dnh cho nh qu n tr . Cc t p tin i u khi n h th ng dng d tr ti nguyn. Cc t p tin b n ghi (log).

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

70 Th m c /var/run

Lm quen v i h th ng t p tin ext3fs Cng d ng Cc t p tin bi n i trong th i gian th c hi n cc chng trnh khc nhau. Chng lu thng tin v s ti n trnh (PID) v ghi thng tin hi n gh i (utmp). T p tin trong th m c ny th ng c d n s ch trong th i gian kh i ng Linux. T p tin c t vo hng t c a cc chng trnh khc nhau, v d : /var/spool/at cc cng vi c m at ch y. /var/spool/cron t p tin c a h th ng Verb+cron+. /var/spool/lpd t p tin trong hng i in. /var/spool/mail t p tin thng th c a ng i dng. /var/spool/uucp t p tin c a h th ng uucp. /var/tmp Cc t p tin t m th i.

/var/spool

4.4

D ng t p tin

Trong cc ph n tr c chng ta xem xt hai d ng t p tin l t p tin thng th ng v cc th m c. Nh ng trn Linux cn c m t vi d ng t p tin n a. Chng ta s lm quen v i chng trong ph n ny. Nh ni, i v i h i u hnh th t p tin ch l m t chu i cc byte lin t c. Nh v y c th dng khi ni m t p tin cho cc thi t b v cc i t ng khc. i u ny n gi n ho s t ch c v trao i cc d li u, v c th th c hi n ghi d li u vo t p tin, chuy n d li u ln cc thi t b v trao i d li u gi a cc ti n trnh b ng cch tng t nh nhau. Trong t t c cc tr ng h p ny s d ng cng m t phng php d a trn t ng chu i cc byte. Do ngoi cc t p tin thng th ng v th m c, nh ng thnh ph n sau cng c Linux coi l t p tin: cc t p tin thi t b cc ng (knh) c tn (named pipe) cc socket (t v i ngha nh t chim) cc lin k t m m (symlinks).

4.4.1

Cc t p tin thi t b

Nh ni, i v i Linux th t t c cc thi t b k t n i vo my tnh ( c ng, tho r i, terminal, my in, my scan, mem, bn phm, chu t, v.v. . . ) u l cc t p tin. V d , n u c n a ra mn hnh terminal th nh t thng tin no , th h th ng th c hi n thao tc ghi vo t p tin /dev/tty1. C hai d ng thi t b : k t (hay cn g i l cc thi t b trao i theo byte) v kh i (trao i theo kh i). S khc nhau gi a hai d ng ny n m cch c v ghi

4.4 D ng t p tin

71

thng tin vo cc thi t b . Cc thi t b k t trao i thng tin theo t ng k t (theo t ng byte) trong ch chu i cc byte. V d thi t b d ng ny l terminal. Cn thng tin c c v ghi vo cc thi t b kh i theo cc kh i. V d cc c ng. Khng th c t a c ng v ghi ln t ng byte, trao i thng tin v i a ch c th theo t ng kh i. Trao i d li u v i cc thi t b trn Linux do cc driver thi t b m nhi m. Nh ng driver ny ho c n m trong nhn ho c n m ring d ng mun v c th g n vo nhn sau. trao i v i cc ph n khc c a h i u hnh m i driver t o ra m t giao di n lin l c c v ngoi gi ng nh t p tin. Ph n l n nh ng t p tin nh v y c t o s n t tr c v n m trong th m c dev. N u nhn vo th m c /dev (t c l chuy n vo th m c b ng l nh cd r i ch y ls), th b n s th y m t l ng kh ng l nh ng t p tin thi t b . B ng 4.2 cho bi t nh ng t p tin th ng dng nh t. B ng 4.2: Nh ng t p tin thi t b chnh T p tin ngha /dev/console Console h th ng t c l mn hnh v bn phm k t n i t i my tnh. /dev/hd Cc c ng v i giao di n IDE. Thi t b /dev/hda1 tng ng v i phn vng u tin c a a c ng u tin, a /dev/hda, t c l a Primary Master. /dev/sd c ng v i giao di n SCSI. /dev/fd Cc t p tin a m m. u tin l /dev/fd0, th hai l /dev/fd1. /dev/tty Cc t p tin h tr terminal c a ng i dng. Tn g i v n c lu k t khi k t n i teletype vo cc h th ng UNIX lm terminal. Trn Linux nh ng t p tin ny h tr cc terminal o (hy nh l i chng tr c). /dev/pty Cc t p tin h tr terminal gi . S d ng cho cc k t n i t xa qua telnet. /dev/ttS T p tin h tr lm vi c v i cc c ng k t ti p nhau (cc c ng COM). /dev/ttS0 tng ng v i COM1 trong DOS, /dev/ttS1 tng ng v i COM2. /dev/cua Cc t p tin cho mem. /dev/null Thi t b ny c th g i l l en. T t c nh ng g ghi vo /dev/null s m t vnh vi n. Nh ng ng i vi t script th ng chuy n nh ng thng bo khng c n thi t vo thi t b ny. N u s d ng /dev/null lm thi t b nh p vo, th s thu c m t chu i cc s 0, t c l trong tr ng h p ny t p tin c c b ng 0. M i d ng thi t b c th c m t vi t p tin thi t b . V th cc t p tin thi th ng c hai s : l n (major) v nh (minor). S l n c a thi t b cho nhn bi t p tin ny thu c v driver no, cn s nh cho bi t c n ph i lm vi c v i thi c th no c a d ng ny. i v i cc t p tin thi t b , cu l nh ls -l cho bi l n v s nh ni thay v kch th c c a t p tin. tb t l tb ts

72

Lm quen v i h th ng t p tin ext3fs

4.4.2

Cc ng c tn (pipes)

Cn c m t d ng t p tin thi t b n a l cc ng c tn, hay b m FIFO (First In First Out). T p tin d ng ny ch y u dng t ch c trao i d li u gi a cc chng trnh khc nhau (pipe d ch t ti ng Anh sang l ng, ng ng). ng l phng ti n h t s c thu n ti n v s d ng r ng ri trao i thng tin gi a cc ti n trnh. M t ti n trnh c th c t t c nh ng g m m t ti n trnh khc t vo ng. N u c hai ti n trnh c sinh ra t cng m t ti n trnh m trao i thng tin (th ng x y ra), th ng c th khng c tn. Trong tr ng h p ng c l i c n t o ra m t ng c tn, v d b ng chng trnh mkfifo. Khi ny b n thn t p tin ng ch tham gia vo s kh i u trao i d li u.

4.4.3

Cc socket

Socket l k t n i gi a cc ti n trnh, cho php chng giao ti p m khng ch u nh h ng c a cc ti n trnh khc. Ni chung socket v s trao i qua socket ng vai tr h t s c quan tr ng trn t t c cc h th ng UNIX, trong c Linux: socket l khi ni m then ch t c a TCP/IP v nh v y l d a trn socket xy d ng ton b Internet. Tuy nhin t pha h th ng t p tin socket th c t khng khc cc ng c tn: ch l cc i m cho php n i cc chng trnh v i nhau. Sau khi t o ra k t n i, th trao i c th c hi n m khng c n n socket: d li u do nhn chuy n tr c ti p t chng trnh ny n chng trnh khc. M c d nh ng ti n trnh khc c th th y cc t p tin socket, nhng nh ng ti n trnh khng tham gia vo k t n i hi n th i khng th th c hi n b t k thao tc c hay ghi no ln t p tin socket. Trong s nh ng h th ng s d ng socket c n k n X Window, h th ng in v h th ng syslog.

4.4.4

Lin k t m m

Trong ph n v tn t p tin chng tr c chng ta ni r ng t p tin trong Linux c th c vi tn hay lin k t c ng. Lin k t c ng ch l m t tn khc cho t p tin ban u. N c ghi trong m t inode c a t p tin . Sau khi t o lin k t c ng khng th phn bi t u l tn t p tin cn u l lin k t. N u b n c xa m t trong s nh ng t p tin ny (ni ng hn l m t trong s nh ng tn ny), th t p tin v n cn c lu trn a cho n khi v n cn t nh t m t tn. R t kh phn bi t tn u tin c a t p tin v nh ng lin k t c ng c t o ra sau . V v y ch dng lin k t c ng nh ng ni khng c n bi t s khc nhau. M t trong nh ng ng d ng c a lin k t c ng l ngn ch n kh nng xa t p tin m t cch v tnh. i m c bi t c a lin k t c ng l n ch th ng n ch s inode, v do lin k t c ng ch c th dng cho t p tin c a cng m t h th ng t p tin, t c l trn cng m t phn vng (a lu). Nhng trn Linux cn c m t d ng lin k t khc g i l (lin k t t ng trng8 ). Nh ng lin k t ny cng c th coi l tn ph cho t p tin, nhng chng l nh ng t p tin khc nh ng t p tin lin k t m m. Khc v i lin k t c ng, lin k t m m c th ch n nh ng t p tin n m trong h th ng t p tin khc, v d trn nh ng a lu ng, ho c th m ch trn m t my tnh khc. N u t p tin ban u b xa,
8

thu t ng ny v n cha c th ng nh t, do a ra c hai tr ng h p c th g p.

4.5 Quy n truy c p n t p tin v th m c

73

th lin k t m m tuy khng b xa nhng tr thnh v gi tr . Hy s d ng lin k t m m trong nh ng tr ng h p b n mu n trnh s l m l n m lin k t c ng c th gy ra, ho c khi t p tin n m trn m t h th ng t p tin khc. Vi c t o b t k m t lin k t no cng gi ng nh sao chp t p tin, nhng khc ch l tn ban u c a t p tin cng nh lin k t cng ch n m t t p tin th c s trn a. V th n u b n c thay i t p tin qua m t tn no c a n, th s th y nh ng thay i ny khi xem t p tin qua tn khc. t o lin k t m m c n s d ng cu l nh ln ni n v thm vo ty ch n -s: [user]$ ln -s tn_t p_tin tn_lin_k t V d : [user]$ ln -s projects/l4u/l4u-0.9.2.pdf ~/l4u.pdf Sau khi th c hi n cu l nh ny trong th m c c nhn c a ti xu t hi n t p tin l4u.pdf. V by gi n u xem danh sch t p tin trong th m c b ng cu l nh ls -l, th trong danh sch s c m t 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 c a dng ny, n cho chng ta bi t t p tin l m t lin k t m m. T t nhin i u ny c th th y r trong ph n cu i (ph n tn t p tin), sau tn t p tin c a lin k t l m t mi tn ch n t p tin ban u. N u b n t o trong th m c mot m t lin k t m m ch n m t th m c khc, th c th di chuy n th m c mot i u ty thch, lin k t m m khi v n lm vi c ng. Cng nh v y i v i chnh b n thn lin k t m m. Nhng khi t o lin k t m m, hy h n ch s d ng .. (lin k t n th m c m ) trong tn t p tin ch n, b i v v tr c a lin k t m m c th thay i, m .. lun lun l th m c m c a th m c hi n th i.

4.5

Quy n truy c p n t p tin v th m c

B i v Linux l h i u hnh nhi u ng i dng, nn yu c u quy nh truy c p n cc t p tin v th m c l m t trong nh ng yu c u thi t y u nh t m h i u hnh ph i gi i quy t. C ch quy nh truy c p c pht tri n cho h th ng UNIX vo nh ng nm 70 c a th k tr c r t n gi n nhng c hi u qu n n i c s d ng hn 30 nm, v hi n th i v n cn c s d ng gi i quy t bi ton ny. C s c a c ch quy nh quy n truy c p l tn ng i dng v tn nhm c a ng i dng. Nh b n bi t trong Linux m i ng i dng c m t tn ring khng l p l i dng ng nh p vo h th ng. Ngoi ra, trn h th ng cn c cc nhm ng i dng, v Linux cho php m t ng i dng c th n m trong m t ho c nhi u nhm. T o v xa cc nhm l cng vi c c a ng i dng cao c p root, v root c th thay i thnh ph n c a m t nhm no . Thnh vin c a cc nhm khc nhau c th c quy n truy c p khc nhau n t p tin, v d nhm cc nh qu n tr c quy n nhi u hn so v i nhm cc nh l p trnh.

74

Lm quen v i h th ng t p tin ext3fs

Trong m t inode c a m i t p tin c ghi tn c a ch v nhm s h u t p tin. Ngy t u khi t o t p tin ch c a n l ng i dng t o ra n. Ni chnh xc hn l ng i dng m ti n trnh t o t p tin ch y d i tn h . Cng lc v i ch s h u, tn c a nhm s h u cng c ghi vo theo thng tin tn nhm c a ti n trnh t o t p tin. C th thay i ch v nhm s h u trong qu trnh lm vi c sau ny b ng hai cu l nh chown v chgrp (chng ta s c p k hn v hai l nh ny ngay sau y). By gi hy th c hi n m t l n n a cu l nh ls -l, nhng c thm m t tham s n a l tn c a m t t p tin c th no . V d t p tin chng trnh c a h v bash /bin/bash. Nhn ti n, hy ch kh nng ny c a cu l nh ls -l hi n th thng tin v m t t p tin c th no ch khng ph i t t c cc t p tin trong th m c m t lc. [user]$ ls -l /bin/bash -rwxr-xr-x 1 root root 501804 2006-04-23 05:46 /bin/bash Nh b n c th y, trong tr ng h p ny ch s h u l ng i dng root, nhm s h u root. Nhng by gi trn dng ny chng ta s quan tm hn n vng u tin, vng xc nh d ng t p tin v quy n truy c p n n. Vng ny trong v d trn l chu i cc k t t m th i cha ni ln i u g -rwxr-xr-x. Nh ng k t ny c th t m chia thnh b n nhm. Nhm th nh t ch g m m t k t xc nh d ng t p tin (m t trong b n d ng nu ph n trn). N c th l m t trong s nh ng k t sau: (g ch ngang) t p tin thng th ng d th m c b t p tin thi t b kh i c t p tin thi t b k t s socket p ng c tn (pipe) l lin k t m m (symbolic link). Sau k t xc nh d ng t p tin l ba nhm, m i nhm g m ba k t xc nh quy n truy c p tng ng cho ch s h u, nhm s h u t p tin v cho nh ng ng i dng khc. Trong v d c a chng ta quy n truy c p c a ch s h u l rwx, c ngha l ch s h u root c quy n c (r), ghi vo t p tin (w) v ch y t p tin ny (x). Thay b t k k t no trong s nh ng k t ny b ng d u g ch ngang c ngha l ng i dng b t c m t quy n tng ng. Cng trong v d trn chng ta th y, t t c nh ng ng i dng khc (k c nh ng ng i dng c a nhm root) b t c m t quy n ghi vo t p tin ny, c ngha l h khng th s a t p tin v ni chung l khng th thay i t p tin b ng cch no . Quy n truy c p v thng tin v d ng t p tin trn cc h th ng UNIX c lu trong m t inode d ng c u trc 2 byte (16 bit). i u ny l t t nhin v my tnh ch lm vi c d a trn cc bit ch khng ph i d a trn cc k t r, w,

4.5 Quy n truy c p n t p tin v th m c

75

x. B n bit trong s 16 bit ny c dng cho b n ghi v d ng t p tin. Ba bit ti p theo xc nh cc tnh ch t c bi t c a t p tin th c thi (chng ta s ni n m t cht sau). V cu i cng 9 bit cu i cng xc nh quy n truy c p n t p tin. 9 bit ny chia thnh ba nhm, m i nhm 3 bit. Ba bit u tin xc nh quy n c a ch s h u, ba bit ti p theo quy n c a nhm s h u, ba bit cu i cng quy n c a nh ng ng i dng cn l i (t c l t t c nh ng ng i dng, tr ch s h u v nhm s h u t p tin). Khi ny n u bit tng ng c gi tr b ng 1, th c quy n , cn n u b ng 0 th quy n b t c m t. d ng ch ci th 1 c thay th b ng cc ch ci tng ng (r, w ho c x), cn 0 th hi n d ng d u g ch ngang. Quy n c r t p tin c ngha l ng i dng c th xem n i dung t p tin b ng cc chng trnh xem khc nhau, v d more, ho c b ng cc trnh so n th o vn b n. Nhng khi so n th o b n s khng th lu nh ng thay i trong t p tin ln a, n u khng c quy n ghi w vo t p tin ny. Quy n th c thi (ti thch dng thu t ng quy n g i) c ngha l b n c c th n p t p tin vo b nh v th ch y m ny gi ng nh tr ng h p chng trnh. T t nhin n u trn th c t t p tin khng ph i l chng trnh (ho c cc script shell, perl, . . . ) th khng th g i t p tin, nhng ng c l i n u t p tin l chng trnh m khng c quy n g i th cng khng th ch y chng trnh . Nh v y l chng ta bi t c trn Linux nh ng t p tin no l c th th c thi. B n th y khng, ph n m r ng c a t p tin y khng c lin quan g, t t c u do tnh ch t th c thi t ra, v khc v i cc HH c a Microsoft khng ph i ai cng c quy n g i t p tin. N u v n th c hi n cu l nh ls -l nhng tham s khng ph i l tn t p tin m l tn th m c th chng ta s th y th m c cng c quy n truy c p v cng v n nh ng ch ci r, w, x ni trn c dng xc nh quy n truy c p n th m c. V d , n u th c hi n cu l nh: [user]$ ls -l /usr th s th y dng tng ng v i th m c share nh sau: drwxr-xr-x 128 root root 4096 2006-09-07 02:20 share

T t nhin l i v i th m c th ngha c a cc khi ni m quy n c, quy n ghi v quy n g i c thay i m t cht. Quy n c i v i th m c th h t s c d hi u, n u chng ta nh r ng th m c cng ch l t p tin lu danh sch cc t p tin khc trong th m c . Cho nn n u ng i dng c quy n c th m c, th t c l c th xem n i dung c a th m c (c th ni khc l xem danh sch t p tin trong th m c). Quy n ghi cng d hi u. Khi c quy n ny, ng i dng c th t o v xa cc t p tin trong th m c, t c l thm vo ho c xa kh i th m c dng lu thng tin v m t t p tin no v cc lin k t tng ng. Quy n g i i v i th m c c hi kh hi u m t cht. Trong tr ng h p ny quy n g i ch quy n chuy n vo th m c ny. N u b n c l ch s h u th m c v mu n cho nh ng ng i dng khc quy n xem m t t p tin no trong th m c c a mnh th c n ph i cho h quy n truy c p (chuy n) vo th m c ny, t c l cho nh ng ng i dng khc quy n g i (th c thi) th m c. Hn n a cn c n ph i cho ng i dng quy n g i i v i t t c cc th m c n m tr c th m c ny trong cy th

76

Lm quen v i h th ng t p tin ext3fs

m c. Chnh v v y m theo m c nh t t c cc th m c c t quy n g i cho ch s h u cng nh nhm v nh ng ng i dng khc. V t t nhin n u mu n ngn ch n truy c p vo th m c th ch c n b i quy n chuy n vo th m c (r) c a t t c ng i dng (k c nhm s h u). ng t c b quy n ny c a chnh b n thn mnh, n u khng s ph i ph c h i l i n tr c khi c th c cc t p tin. Sau khi c o n trn c th th y quy n c th m c l th a thi v khng cho ra tnh nng g m i so v i quy n g i. Tuy nhin v n c s khc nhau gi a hai quy n ny. N u ch a ra quy n g i, th ng i dng c th vo th m c, nhng s khng th y b t k m t t p tin no khi ch y l nh ls (c th th y r hn n u b n s d ng chng trnh Midnight Commander). N u c quy n truy c p t i m t th m c con no c a th m c ny, th b n c th chuy n sang th m c con b ng l nh cd, nhng c n ph i nh tn c a th m c con ny, v s khng th y b t k danh sch v t p tin th m c no (tr ng h p ny gi ng nh khi chng ta i trong mn m khng th y ng, ch nh h ng i). C ch ki m tra quy n ng i dng khi s d ng t p tin nh sau. u tin h th ng ki m tra xem tn ng i dng c trng v i tn ch s h u t p tin hay khng. N u hai tn ny trng nhau (t c l ch s h u ang dng t p tin c a mnh), th ki m tra xem ch s h u c cc quy n truy c p tng ng ( c, ghi v g i) khng. ng ng c nhin khi ch s h u l i khng c t t c m i quy n, ng i dng root c th t c b m t s quy n c a ch s h u t p tin. N u c quy n truy c p , th s c cho php th c hi n thao tc tng ng. N u ch s h u khng c quy n no , th th m ch h th ng khng ki m tra quy n c th c nhm s h u v nh ng ng i dng khc m a ra lun thng bo l i khng th th chieejn c hnh ng yu c u (d ng Permission denied). N u tn ng i dng khng trng v i tn ch s h u th h th ng ki m tra xem ng i dng ny c n m trong nhm s h u hay khng. N u c th kh nng truy c p n t p tin c xc nh b ng quy n truy c p c a nhm, v khng ch n cc quy n c a ch s h u v nh ng ng i dng cn l i. N u ng i dng khng ph i l ch s h u v cng khng n m trong nhm s h u, th quy n c a h c xc nh b ng nhm tnh ch t th ba (nhm dnh cho nh ng ng i dng cn l i). Nh v y nhm tnh ch t th ba trong quy n truy c p l dnh cho t t m i ng i dng, tr ch s h u v nh ng ng i dng n m trong nhm s h u. thay i quy n truy c p t i t p tin ng i ta s d ng l nh chmod (change mode). C hai cch s d ng l nh ny. Khi dng cch th nh t b n ph i ch ra r rng thm quy n no cho ai ho c t c quy n no v c a ai nh sau: [user]$ chmod wXp tn_t p_tin Trong , ch k t w ph i t m t trong cc k t sau:

u ch s h u g nhm s h u g o nh ng ng i dng cn l i a t t c bao g m ch s h u, nhm v nh ng ng i dng cn l i. ch X l m t trong cc k t sau:

4.5 Quy n truy c p n t p tin v th m c + thm quy n t c b quy n = dng quy n ch ra thay cho quy n c. ch p l m t trong nh ng k t sau: r quy n c w quy n ghi x quy n g i (quy n th c hi n. Sau y l m t s v d s d ng cu l nh chmod: [user]$ chmod a+x tn_t p_tin thm quy n g i t p tin tn_t p_tin cho m i ng i dng c a h th ng. [user]$ chmod go-rw tn_t p_tin t c b quy n c v ghi c a m i ng i dng tr ch s h u t p tin. [user]$ chmod ugo+rwx tn_t p_tin [user]$ chmod a+rwx tn_t p_tin cho m i ng i dng quy n c, ghi v g i (th c hi n). [user]$ chmod u=rwx,go=x tn_t p_tin

77

cho ch s h u c t t c m i quy n ( c, ghi, g i), nh ng ng i dng cn l i ch c quy n g i (th c hi n). N u khng ch ra ai c thm quy n truy c p, th s p d ng cho t t c m i ng i dng, t c l c th dng l nh: [user]$ chmod +x tn_t p_tin thay cho [user]$ chmod a+x tn_t p_tin Phng n s d ng th hai c a cu l nh chmod c kh hi u hn m t cht trong th i gian u s d ng Linux, nhng l i th ng xuyn c cc nh qu n tr cng nh ng i dng c kinh nghi m dng. N d a trn m ha quy n truy c p d ng s . K t r c m ha b ng s 4, w s 2, x s 1. xc nh quy n c a ng i dng c n c ng cc s tng ng l i v i nhau. Sau khi thu c ba gi tr s (cho ch s h u, nhm s h u v nh ng ng i dng cn l i), chng ta a ba s ny vo dng lm tham s cho l nh chmod. Chng ta c n t ba s ny pha sau tn l nh v pha tr c tham s th hai (tn t p tin). V d , n u c n cho ch s h u m i quy n (4+2+1=7), cho nhm s h u quy n c v ghi (4+2=6) v nh ng ng i dng cn l i quy n g i (1=1), th dng l nh sau:

78 [user]$ chmod 761 tn_t p_tin

Lm quen v i h th ng t p tin ext3fs

N u b n bi t v m i c a h c s tm, th hi u r ng nh ng s ng sau tn l nh khng ph i g khc m chnh l b n ghi h c s tm c a 9 bit xc nh quy n truy c p cho ch s h u, nhm s h u v nh ng ng i dng cn l i. Ch c ch s h u t p tin ho c ng i dng cao c p m i c kh nng thay i quy n truy c p b ng cu l nh chmod. c th thay i quy n c a nhm s h u, th ch s h u (khng ph i root) ph i l thnh vin c a nhm . k t thc bi h c v quy n truy c p n t p tin c n ni thm v nh ng tnh ch t khc c th g p c a t p tin m cng xc nh b ng l nh chmod. l nh ng tnh ch t cho cc t p tin th c thi. Trong m t inode, ph n c u trc 2 byte xc nh tnh ch t t p tin, chng chi m cc v tr 5 7 ngay sau m cho bi t d ng t p tin. Tnh ch t u tin l bit thay i ID9 ng i dng. ngha c a bit ny nh sau. Thng th ng, khi ng i dng g i th c hi n m t chng trnh no , th chng trnh ny nh n c nh ng quy n truy c p n t p tin v th m c c a ng i dng ch y n. N u nh c t bit thay i ID ng i dng, th chng trnh nh n c quy n truy c p n t p tin v th m c c a ch s h u t p tin chng trnh. Nh v y bit ny cn c th g i l bit thay i ID ch s h u ti n trnh. i u ny cho php gi i quy t m t s v n kh th c hi n. V d i n hnh nh t l cu l nh thay i m t kh u passwd. T t c m t kh u c lu trong t p tin /etc/passwd (ho c m t t p tin m ha no khc, trong a s tr ng h p l /etc/shadow) m ch s h u l ng i dng cao c p root. V th chng trnh n u do ng i dng ch y s khng th th c hi n l nh ghi vo t p tin ny. C ngha l ng i dng khng th thay i m t kh u c a mnh. Nhng t p tin /usr/bin/passwd c bit thay i ID ng i dng, v root l ch s h u t p tin chng trnh ny. Do chng trnh thay i m t kh u passwd c ch y v i quy n root v nh n c quy n ghi vo t p tin /etc/passwd. T t nhin l trong chng trnh passwd c m ng i dng ch c php thay i m t dng trong t p tin ny dng ti kho n c a ng i dng . Ng i dng cao c p root c th t bit thay i ID ng i dng b ng l nh: [root]# chmod +s tn_t p_tin Tng t nh v y chng ta c bit thay i ID nhm. ngha c a bit ny cng gi ng nh trn nhng ch thay th ng i dng b ng nhm. M t tnh ch t n a c a t p tin th c thi l bit dnh (chnh xc hn l bit lu chng trnh) hay thu t ng ti ng Anh l sticky bit. Chng ta s dng thu t ng bit lu chng trnh v ng v i ng c nh ny hn. Bit ny ch h th ng bi t sau khi d ng chng trnh c n lu l i n trong b nh . R t thu n ti n khi t bit ny cho nh ng chng trnh th ng g i, v trong tr ng h p ny s ti t ki m c th i gian n p chng trnh vo b nh m i l n ch y. Bit ny ch c n thi t trn nh ng my c. Trn nh ng my top model (high end) hi n i th r t hi m khi s d ng. N u s d ng phng n xc nh tnh ch t d ng s c a l nh chmod, th gi tr c a ba tnh ch t v a ni ph i n m tr c nh ng s xc nh quy n truy c p (t c l s u tin trong dy 4 s xc nh t t c cc tnh ch t c a t p tin). V d :
Identificator, m i ng i dng c m t ID d ng s nh v y. ID c a ng i dng l duy nh t, khng trng l p. V d ID c a ng i dng cao c p root l 0.
9

4.6 Cc cu l nh c b n lm vi c v i t p tin v th m c [root]# chmod 4775 tn_t p_tin

79

Khi ny cng v n s d ng php c ng nh i v i tr ng h p quy n truy c p v cc tnh ch t c gi tr nh sau: 4 bit thay i ID ng i dng 2 bit thay i ID nhm 1 bit lu chng trnh (sticky bit). N u c (nh ng) bit no trong s ba bit ny c t (nh n gi tr 1), th s c thay i c a k t qu c a l nh ls -l trong ph n quy n truy c p (ph n u tin). N u bit thay i ID ng i dng b ng 1, th k t x trong ph n xc nh quy n truy c p c a ch s h u s c thay th b ng k t s. Lc ny n u ch s h u c quy n g i t p tin th k t x c thay th b ng ch ci s nh , cn ng c l i (v d t p tin khng ph i l chng trnh), th thay th x b ng ch ci S l n. S thay th nh v y cng x y ra n u c t bit thay i ID nhm, t t nhin l s thay th k t x trong ph n xc nh quy n truy c p c a nhm s h u. N u bit lu chng trnh (sticky bit) b ng 1, th thay th k t x trong ph n xc nh quy n truy c p c a nh ng ng i dng cn l i b ng k t t, n u nh ng ng i dng cn l i c quy n th c hi n t p tin, b ng k t T, n u ng c l i. Nh v y, m c d trong k t qu c a l nh ls -l khng c nh ng v tr ring hi n th k t qu c a ba bit (bit thay i ID ng i dng, bit thay i ID nhm v bit lu chng trnh), chng ta v n c th th y c nh ng thng tin ny. M t 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 th y c th li t k nhi u t p tin trn dng l nh ls -l, t c l dng nhi u t p tin lm tham s cho l nh 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 l nh c b n lm vi c v i t p tin v th m c

Trong nh ng ph n tr c chng ta c p n m t vi cu l nh lm vi c v i t p tin v th m c, l pwd, cd, ls, ln, chmod. Trong ph n ny chng ta s xem xt m t cch ng n g n m t vi cu l nh th ng dng n a.

80

Lm quen v i h th ng t p tin ext3fs

4.6.1

Cu l nh chown v chgrp

Nh ng cu l nh ny dng thay i ch s h u v nhm s h u t p tin. Ch c ng i dng cao c p root m i c quy n thay i ch s h u, cn thay i nhm s h u t p tin c th l root ho c ng i dng ch s h u. c quy n thay i nhm, th ch s h u cn ph i l thnh vin c a nhm s s h u t p tin ny. C php c a hai cu l nh ny tng t nhau: [root]# chown tn_ng i_dng tn_t p_tin [root]# chgrp tn_nhm tn_t p_tin

4.6.2

Cu l nh mkdir

Cu l nh mkdir cho php t o th m c con trong th m c hi n th i. Tham s c a cu l nh ny l tn c a th m c mu n t o ra. Trong th m c v a t o s t ng t o ra hai m c: . (lin k t n chnh b n thn th m c ny) v .. (lin k t n th m c m ). t o ra th m c con, b n c c n ph i c quy n ghi vo th m c hi n th i. C th t o ra th m c con trong m t th m c khc th m c hi n th i, nhng khi ny c n ph i ch ra ng d n t i . V d : [user]$ mkdir ~/projects/l4u/images (hy nh l i k hi u dng ch c a ng i dng). C th dng cc ty ch n sau c a cu l nh mkdir: -m mode xc nh quy n (ch ) truy c p cho th m c m i (v d : -m 700) -p t o ra cc th m c trung gian ch ra trong ng d n (n u 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 t ng 4 drwxr-xr-x 2 teppi82 users 4096 2006-09-11 13:36 hai

4.6.3

Cu l nh cat

Cu l nh cat th ng dng t o cc t p tin, m c d c th s d ng l nh touch. L nh cat cng a ra mn hnh ( u ra) n i dung c a (cc) t p tin dng lm tham s c a n. N u chuy n k t qu lm vi c c a l nh cat vo m t t p tin no th c th t o ra b n sao c a t p tin nh sau: [user]$ cat t p_tin1 > t p_tin2 Chnh b n thn cu l nh cat lc u c pht tri n dng cho vi c chuy n h ng k t qu lm vi c. V n c t o ra cho s mc n i (concatenate, n u dng thu t ng c a Ho h c l s c ng cc t p tin), t c l s k t h p cc t p tin khc nhau vo m t:

4.6 Cc cu l nh c b n lm vi c v i t p tin v th m c [user]$ cat t p_tin1 t p_tin2 ... t p_tinN > t p_tin_m i

81

V cng chnh kh nng chuy n h ng k t qu c a cu l nh ny c dng t o cc t p tin m i. Khi ny u vo c a l nh cat l dng d li u nh p t bn phm ( u vo tiu chu n), cn u ra s l t p tin m i: [user]$ cat > t p_tin_m i Sau khi nh p vo nh ng g mu n nh p, hy nh n t h p phm <Ctrl>+<D> ho c <Ctrl>+<C>, v t t c nh ng g b n g s c lu l i trong t p tin t p_tin_m i. T t nhin l nh v y ch y u dng cat t o cc t p tin vn b n ng n.

4.6.4

Cu l nh cp

M c d i khi c th dng cu l nh cat sao chp cc t p tin, nhng trong Linux c m t cu l nh chuyn dng cho vi c ny l nh cp. C th p d ng m t trong hai d ng c a l nh ny: [user]$ cp [ty_ch n] ngu n ch [user]$ cp [ty_ch n] th_m c_ngu n th_m c_m i Trong tr ng h p th nh t sao chp t p tin (ho c th m c) ngu n vo t p tin (ho c th m c) ch. Cn trong tr ng h p th hai th t p tin c trong th_m c_ngu n s c sao chp vo th m c th_m c_m i. sao chp th c n c quy n c t p tin mu n sao chp v quy n ghi vo th m c s sao chp n (th m c ch). N u s d ng m t t p tin c vo ch c a t p tin ch th n i dung c a n s b xa m t, do v y khi sao chp c n ph i c n th n. V l i c th s d ng cu l nh cp v i ty ch n -i. Khi tr c khi ghi chn ln t p tin c h th ng s h i l i ng i dng. R t nn dng ty ch n ny. Cu l nh cp cn c m t vi ty ch n c ch khc li t k trong b ng 4.3. B ng 4.3: Nh ng ty ch n chnh c a l nh cp Ty ch n ngha p Gi l i th i gian s a i t p tin v c gi l i nh ng quy n truy c p c th gi l i. N u khng a ra ty ch n ny th quy n truy c p c a t p tin s c thi t l p theo quy n c a ng i dng ch y l nh. R ho c r N u ngu n l th m c th sao chp th m c cng v i t t c nh ng g (t p tin, th m c con) n m trong n, t c l gi l i c c u trc c a th m c b n u (recursive). d N u a ra ty ch n ny th cc lin k t m m s v n l cc lin k t, n u khng th s sao chp t p tin (n i dung) m lin k t ny ch n. f Ghi chn t p tin khi sao chp m khng h i l i hay c nh bo.

82

Lm quen v i h th ng t p tin ext3fs

4.6.5
N m t m gi

Cu l nh mv

u b n khng c n sao chp, m c n di chuy n t p tin t m t th m c ny vo t th m c khc, th c th s d ng cu l nh mv. C php c a l nh ny tng nh c php c a cp. Hn n a, l nh ny u tin sao chp t p tin (hay th c), v sau m i xa t p tin (th m c) ban u. Cc ty ch n c a n cng ng nh c a cp. Cu l nh mv khng ch dng di chuy n, m cn dng thay i tn t p tin v th m c, t c l di chuy n chng trong ph m vi c a m t th m c. Ch c n t vo ch hai tham s tn c v tn m i c a t p tin nh th ny: [user]$ mv tn_c tn_m i

Nhng hy ch l cu l nh mv khng cho php i tn m t vi t p tin cng lc b ng cch s d ng cc m u tn. Do cu l nh: [user]$ mv *.doc *.odt s khng lm vi c. Khi s d ng l nh mv cng gi ng nh khi s d ng cp, ng quy n thm vo ty ch n -i hi n ra c nh bo khi c t p tin s b ghi chn.

4.6.6

Cu l nh rm v rmdir

xa nh ng t p tin v th m c khng c n thi t trn Linux c cc cu l nh rm (xa t p tin) v rmdir (xa th m c r ng). s d ng nh ng cu l nh ny, b n c c n c quy n ghi vo th m c lu nh ng t p tin ho c th m c mu n xa. Khi ny quy n thay i chnh b n thn cc t p tin v th m c l khng c n thi t. N u mu n cu h i xc nh n s cho php c a ng i dng xu t hi n tr c khi xa t p tin, th hy dng ty ch n -i (r t d nh , ty ch n ny c nh ng cu l nh cp, mv k trn). N u dng cu l nh rm (khng c ty ch n) xa th m c th s xu t hi n thng bo d ng cannot remove l4u: Is a directory (khng th xa b , y l th m c). xa th m c th c n xa t t c nh ng t p tin c trong n, sau xa b n th n th m c b ng l nh rmdir. Tuy nhin c th xa th m c khng r ng cng v i t t c nh ng t p tin v th m c c trong n, n u s d ng cu l nh rm v i ty ch n -r. N u ch y l nh rm *, th s xa t t c nh ng t p tin c trong th m c hi n th i. Cc th m c con khng b ng t i. xa c t p tin v th m c con c a th m c hi n th i c n dng ty ch n -r k trn. Tuy nhin c n lun lun nh r ng, trn Linux khng c cu l nh ph c h i t p tin sau khi xa, th m ch c khi v a xa xong10 . Theo ti ngh b t k ng i dng Linux no cng c th chia s v i b n c m gic b m t t p tin ngay tr c m t. V th hy khi hai l n tr c khi xa g v ng qun ty ch n -i.
C m t s cch ph h i t p tin xa trn h th ng t p tin c ext3fs, nhng chng ta l nh ng ng i dng m i, do khng xem xt chng. T t nhin b n c th tham kh o ti li u HOWTO c trn http://www.tldp.org ny trong tr ng h p kh n c p.
10

4.6 Cc cu l nh c b n lm vi c v i t p tin v th m c

83

4.6.7

Cu l nh more v less

Cu l nh cat cho php a ra mn hnh ( u ra tiu chu n) n i dung c a b t k t p tin ny, tuy nhin r t t khi l nh cat c s d ng cho m c ch ny, v ch dng hi n th nh ng t p tin c dung l ng r t nh . Nguyn nhn l n i dung c a t p tin l n s ngay l p t c ch y qua mn hnh v ng i dng ch th y nh ng dng cu i cng c a t p tin. V th cat dng ch y u theo ch c nng chnh c a n, t c l dng c ng cc t p tin, cn xem n i dung c a cc t p tin vn b n chng ta dng cc l nh more v less ho c cc trnh so n th o khc. Cu l nh (b l c) more a n i dung c a t p tin ra mn hnh theo t ng trang c kch th c b ng kch th c mn hnh (ni chnh xc th l g n b ng, v c m t dng cu i cng dnh cho hi n th tr ng thi (status)). xem trang ti p theo c n nh n vo phm tr ng <Space> (phm di nh t trn bn phm hi n nay). Nh n phm <Enter> c m t dng ti p theo. Ngoi <Space> v <Enter> cn c m t vi phm i u khi n khc, v d phm <B> quay l i mn hnh tr c, nhng chng ta s khng li t k y nh ng phm ny y, v cng khng a ra danh sch cc ty ch n c a l nh more. By gi b n c ch c n nh phm <Q> dng thot ra kh i ch xem c a more, n u khng th b n s ph i nh n phm <Space> cho n khi h t t p tin (ch ng may n u n qu di th b n s m t r t nhi u th i gian). T t c cc tu ch n c a l nh more b n c th c trong trang h ng d n man (more(1)) ho c info c a n. Ti n ch less l m t trong nh ng chng trnh c d n GNU pht tri n. less c t t c cc ch c nng v l nh i u khi n c a more, v c thm m t vi s m r ng khc. V d , cho php s d ng cc phm i u khi n con tr (<>, <>, <>, <>, <Home>, <End>, <PgUp>, <PgDown>) di chuy n trong vn b n. Hy nh l i, chng ta ni v i u ny khi ni v h th ng tr gip man. Cc l nh more v less cho php tm ki m t kha c trong t p tin ang xem, trong l nh less cho php tm ki m theo hai h ng: t trn xu ng d i v ng c l i. tm ki m t kha string (m t c m k t no ) th u tin c n nh n / chuy n vo ch tm ki m, sau nh p vo string vo dng / cu i mn hnh. N u tm th y t kha trong t p tin, th s hi n th o n vn b n tng ng sao cho dng tm th y n m trn cng. N u mu n ti p t c tm ki m hy nh n phm <N>, trong less c th dng t h p phm <Shift>+<N> tm ki m theo h ng ng c l i.

4.6.8

Cu l nh tm ki m find v m u tn t p tin

Cn c m t cu l nh th ng dng lm vi c v i t p tin trong Linux l cu l nh tm ki m t p tin find. Cu l nh find c th tm ki m t p tin theo tn, theo kch th c, th i gian t o ho c th i gian s a i t p tin v theo cc tiu ch khc. C php chung c a cu l nh find c d ng sau: find [danh_sch_th_m c] tiu_ch_tm_ki m Trong tham s danh sch th m c xc nh ni tm ki m t p tin mong mu n. n gi n nh t l dng th m c g c / lm ni kh i u tm ki m. Tuy nhin trong tr ng h p tm ki m c th ko di r t lu, v s l c sot t t cc th m c k c nh ng h th ng t p tin g n vo, trong c th c cc th m c m ng

84

Lm quen v i h th ng t p tin ext3fs

(v chuy n g x y ra n u t c ng truy n th p). C th lm s kh i l ng cng vi c, n u dng m t danh sch nh ng th m c, m t p tin c th n m trong, thay th cho th m c g c. V d : [user]$ find /usr/bin /sbin /bin /usr/local/bin -name cp Ph n u c a tiu_ch_tm_ki m xc nh xem chng trnh find ph i tm ci g. Ph n u ny l tham s b t u b ng , (, ), , ho c !. T t c cc tham s ng tr c tiu_ch_tm_ki m c coi l tn th m c c n l c sot. N u khng ch ra m t th m c no, th tm ki m s b t u t th m c hi n th i v i su vo trong cc th m c con. Ng i dng th ng th c hi n tm ki m theo tn t p tin nh v d trn, y tiu_ch_tm_ki m c d ng name tn_t p_tin. ch ty ch n -name c th s d ng ty ch n -path, khi cu l nh s tm ki m s tng ng c a tn t p tin y bao g m c ng d n ch ra. V d , cu l nh: [user]$ find . -path ./l*es s tm th y trong th m c hi n th i th m c con l4u/images. Trong v d ny, ch tn c a t p tin ho c th m c chng ta s d ng m t m u tn. V b i v m u tn t p tin khng ch s d ng cho cu l nh find m cn s d ng cng v i nhi u cu l nh khc (bao g m c nh ng cu l nh ni n: chmod, chown, chgrp, cp, rm, cat, mv), nn chng ta c n ch v dnh th i gian nghin c u cc quy nh s d ng v vi t m u tn. Trong a s tr ng h p m u tn t p tin c t o ra nh cc k t c bi t * v ?. K t * s d ng thay th cho b t k dng k t no. Trong Linux: * tng ng v i t t c cc t p tin tr nh ng t p tin n. .* tng ng v i t t c nh ng t p tin n (trong c th m c hi n th i . v th m c m ..). *.* ch tng ng v i nh ng t p tin v th m c c d u ch m (.) ho c cu i cng. a*p tng ng v i anhchup v anhchep. *a* tng ng v i May v march. K t ? ch thay th m t k t b t k, v th taptin?.txt s tng ng v i cc tn sau (taptin1.txt, taptin2.txt, taptin9.txt. Ngoi * v ? trong Linux cn s d ng cc d u ngo c vung ([]) t o m u tn. Trong hai d u ngo c ny t danh sch cc k t (c th d ng kho ng11 ) c th g p. V d [xyz]* tng ng v i t t c nh ng tn t p tin b t u b ng a, b, c. Cn *[G-K4-7] tng ng v i nh ng t p tin c tn k t thc b ng G, H, I, J, K, 4, 5, 6, 7. Hy ch l khng c kho ng tr ng trong c hai v d k trn. T t nhin y ch a ra nh ng thng tin th t ng n g n v m u tn t p tin v cc k t thay th . B n c c th tm th y thng tin chi ti t hn v m u
11

gi a tn

interval

4.6 Cc cu l nh c b n lm vi c v i t p tin v th m c

85

B ng 4.4: Tiu ch tm ki m c a cu l nh find. Ty ch n Gi tr name m u_tn Tm t p tin c tn tng ng v i m u_tn. group tn Tm t p tin thu c v nhm ch ra. size s [c] Tm t p tin c c b ng s kh i 512 byte (t c l b ng 512B x s ). N u sau s c k t c th c ngha l kch th c c tnh theo byte (k t , charater), ch khng ph i theo kh i. mtime s _ngy Tm t p tin c thay i l n cu i cng tr c s _ngy ch ra. newer m u Tm t p tin c thay i sau khi thay i t p tin c trong m u. type d ng_t p_tin Tm t p tin d ng ch ra. D ng t p tin c xc nh b ng m t trong cc k t sau: b (thi t b kh i), c (thi t b k t ), d (th m c), f (t p tin th ng), p ( ng c tn pipe), ho c l (lin k t m m). tn t p tin trong ti li u IBM LPI tutorial b n d ch ti ng Vi t do nhm c ng tc c a vnoss.org (trong c ti) th c hi n c trn http://vnoss.org/pub. Cn by gi sau khi lm quen v i m u tn t p tin, chng ta quay tr l i v i cu l nh find v ni chi ti t hn v nh ng kh nng c th c a tiu ch tm ki m. M t vi v d n gi n c a tiu ch tm ki m c trong b ng 4.4. Nh ng tiu ch tm ki m n gi n khc b n c th tm th y trong trang man c a cu l nh find ho c trong ti li u LPI tutorial ni trn. C n ni r ng t nh ng tiu ch n gi n c th t o ra nh ng tiu ch ph c t p hn nh cc php lgc and, or ho c php ph nh (k hi u l d u ch m than !). V d , n u b n mu n tm t t c nh ng t p tin c ph n m r ng12 l .odt v .tex, th c th dng tiu ch tm ki m nh sau: (-name *.tex -or -name *.odt). C th s d ng k t h p nh v y m t s l ng b t k cc tiu ch k c tiu ch ph c t p. N u khng ch ra php lgc c th , th coi nh dng and, t c l c th dng m t trong hai cch ghi: (-name *.tex -and -name *.odt) ho c (-name *.tex -name *.odt). N u ch dng m t php lgc and ho c !, th c th b i d u ngo c, cn php lgc or v cc tiu ch ph c t p hn th c n d u ngo c. Tr c d u ngo c c n t m t d u g ch cho ng c (\), cn sau d u ngo c c n t m t kho ng tr ng. V d , n u b n c mu n tm th m c theo tn c a n th c th dng l nh: [user]$ find /usr/share -name man1 -type d ho c dng tiu ch ph c t p: [user]$ find /usr/share \( -name man1 -and -type d \) Trong v d sau chng ta tm t p tin theo tiu ch nh sau: ho c tn t p tin c ph n m r ng *.tex, ho c kch th c t p tin nh hn 200KB.
12

trong d u ngo c v chng ta bi t r ng trong Linux khng c khi ni m ph n m r ng t p

tin.

86

Lm quen v i h th ng t p tin ext3fs

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

Trong v d cu i cng ny hy ch r ng tr c gi tr kch th c t p tin c d u . D u ny c th s d ng v i b t k tham s c gi tr s no trong tiu ch tm ki m c a cu l nh find. C ngha r ng c n tm t p tin c gi tr c a tham s nh hn s a ra. Tng t d u + c ngha l c n tm t p tin c gi tr c a tham s l n hn s a ra. N u khng c d u + v d u th tm t p tin c gi tr c a tham s b ng s a ra. k t thc ph n v cu l nh find ny, c n ni thm r ng sau tiu ch tm ki m c th a ra ngay thao tc x l t t c nh ng t p tin tm th y. V d n gi n nh t l thao tc print. [user]$ find ~/projects -name *.tex -print dng a ra mn hnh danh sch tn c a t t c nh ng t p tin tm th y cng v i ng d n y n t p tin. Thao tc ny c dng theo m c nh, t c l lun lun c dng khi khng ch ra thao tc no nh trong cc v d tr c y. M t v d khc l thao tc -exec cmd {}. Trong cmd l m t cu l nh b t k no c a h v shell. Trong tr ng h p ny s th c hi n cu l nh cmd i v i t t c nh ng t p tin tm th y. Sau cmd {} l d u ch m ph y (;) c d u g ch cho ng c \ tr c (chng ta s hi u r hn tc d ng c a d u g ch cho ng c trong chng ngay sau). V d , n u b n mu n xa t t c nh ng t p tin trong th m c hi n th i m ng i dng khng ng n trong vng 365 ngy ho c lu hn, th hy dng cu l nh sau: [user]$ find . -type f -atime +365 -exec rm {} \; ch -exec c th dng -ok, khi tr c khi th c hi n cu l nh cmd cho m i t p tin tm th y h th ng s h i l i xem b n c mu n th c hi n th t khng. Ni chung cu l nh cmd l m t cu l nh r t m nh, c ch v l m t cng c tm ki m t t trong h th ng t p tin. ng nhin l cha ph i t t c nh ng kh nng c a l nh ny c li t k ra y. Hy tm hi u trong trang tr gip man ho c m t cu n sch dy c p no v Linux. V hy c n th n khi s d ng nh ng kh nng c a cu l nh ny nh g i nh ng cu l nh khc th c hi n trn t t c nh ng t p tin tm th y. Hy nh r ng s thay i th ng l m t chi u.

4.6.9

Cu l nh split

i khi chng ta c n chia m t t p tin l n thnh t ng ph n nh . L y v d b n c m t t p tin phim d ng mpg l n, kho ng 1,2GB. V b n mu n sao chp t p tin ny qua m t my khc nhng l i khng c m t k t n i m ng. V cng khng c ghi DVD m ch c ghi CD. Nhng t p tin ny khng th n m g n trn m t CD (dung l ng kho ng 700MB). Do c th chia t p tin ny thnh hai ph n m i ph n nh hn 700MB sau s g p chng l i. lm c vi c ny chng ta c th s d ng l nh split. Cu l nh split cho php sao chp t p tin b ng cch chia chng ra thnh t ng ph n nh theo kch th c nh. Tham s c a l nh ny l tn c a t p tin

4.6 Cc cu l nh c b n lm vi c v i t p tin v th m c

87

ban u v ph n u (prefix) tn c a cc t p tin s t o ra. Cc t p tin thu c s c tn g m ph n u (prefix) ny v hai ch thm vo chng khng trng nhau: aa, ab, ac, ad, v.v. . . (khng c kho ng tr ng v cc d u ch m gi a ph n u v nh ng ch ci ny). N u khng a ra ph n u, th theo m c nh s d ng x, t c l s thu c cc t p tin xaa, xab, xac, xad v.v. . . Ngoi cc tham s c th thm vo ty ch n -b xc nh kch th c c a cc t p tin t o ra (tnh theo byte). Sau -b l m t s v sau l m t ch ci: k (kch th c tnh theo KB) ho c m (tnh theo MB). N u khng a ra ty ch n ny th theo m c nh kch th c c a t p tin thu c b ng 1MB. gi i quy t bi ton a lc u th c n ch y l nh: [user]$ split -b 650m phim.mpg phim Sau dng chng trnh ghi a sao chp hai t p tin thu c (phimaa, phimab) ln hai a CD-R(W), r i a chng (c ngha l dng l nh cp) ln my th hai vo m t th m c no . Cu i cng ph c h i t p tin ban u b ng l nh: [user]$ cat phim* > phim.mpg Sau c th xa i cc t p tin phimaa, phimab.

4.6.10

So snh cc t p tin v l nh patch

C th b n khng nhng khi lm vi c v i my tnh cng vi c so snh n i dung c a hai t p tin khc nhau g p m t cch th ng xuyn. L v c th sao chp t p tin m t cch d dng, r i sau qun lun l t p tin no m i hn ho c t t hn. V th nh ng cng c dng so snh t p tin l c n thi t v t t nhin l c trong Linux. Cng c n gi n nh t trong s ny l l nh cmp (compare). L nh ny ch so snh n i dung c a hai t p tin theo t ng byte: [user]$ cmp t p_tin1 t p_tin2 N u hai t p tin hon ton trng nhau, th l nh hon thnh cng vi c m khng a ra thng bo g, cn n u chng khc nhau th a ra s th t c a dng v byte ch c s khc nhau. T t nhin thng tin m l nh cmp a ra hi t c th quy t nh ch n t p tin no trong s hai t p tin ny, t p tin no quan tr ng hn. V th cn c th s d ng cu l nh diff bi t c s khc nhau gi a hai t p tin y l g. Ch c n cho cu l nh ny bi t tn hai t p tin m b n mu n so snh. V d : teppi82@ThinhQuyen:~> diff ChangeLog ChangeLog2 1c1 < 11 thng 09 nm 2006, phin b n 0.9.3 --> 18 thng 09 nm 2006, phin b n 0.9.3 Thng bo v s khc nhau s hi n th trn mn hnh ( u ra tiu chu n). Chng ta c th chuy n h ng bo co ny vo m t t p tin:

88

Lm quen v i h th ng t p tin ext3fs

teppi@ThinhQuyen:~> diff ChangeLog ChangeLog2 > ChangeLog.diff teppi@ThinhQuyen:~> more ChangeLog.diff 1c1 < 11 thng 09 nm 2006, phin b n 0.9.3 --> 18 thng 09 nm 2006, phin b n 0.9.3 nh gi phin b n c a m t t p tin th thu n ti n hn n u s d ng cu l nh sdiff. K t qu so snh khi ny s hi n th d ng hai c t, phn cch nhau b i cc kho ng tr ng. N u hai c t c cng s th t khc nhau, th chng s cch nhau b i m t d u g ch th ng ng |. N u m t dng no ch c trong t p tin th nh t th n c nh d u b ng m t k t <, n u khng c trong t p tin th hai m t k t >. Cn c cu l nh diff3 cho php so snh 3 t p tin m t lc. Nhng th ng s d ng nh t trn cc h th ng UNIX v Linux v n l cu l nh diff. C th d dng hi u i u ny n u bi t r ng k t qu bo co c a diff v s khc nhau gi a hai t p tin c th s d ng cho cu l nh patch. Thng th ng kh nng ny c dng khi phn ph i b n c p nh t c a chng trnh ng d ng. L y v d n gi n (m t cch ngu ng c), m t chng trnh ng d ng no c a cho ng i dng d ng t p tin xvnkb-0.2.8.c, c ch a m ngu n c a chng trnh ny trn ngn ng C. Sau nh pht tri n s a cc l i v c p nh t chng trnh r i lu m ngu n trong m t t p tin khc xvnkb-0.2.9.c. By gi c n a nh ng thay i lm n cho ng i dng. T t nhin l ch c n g i cho ng i dng nh ng thay i, t c l k t qu bo co t o ra b ng l nh: [chuoi]$ diff xvnkb-0.2.8.c xvnkb-0.2.9.c > xvnkb.c.diff Nh v y t t nhin l kch th c c a t p tin xvnkb.diff s nh hn nhi u so v i xvnkb-0.2.9.c, s ti t ki m c dung l ng truy n t i qua m ng Internet n u ch g i xvnkb.c.diff. Trong tr ng h p chng trnh ng d ng l n th s ti t ki m ny l nh k . Tuy nhin ti t ki m cho ng i dng khng ph i l ng d ng chnh. M s pht tri n c a ng d ng m m m i l i m chnh. Chng ta nh r ng m t ng d ng m m c pht tri n b i c m t nhm cc nh pht tri n v c ng ng. M i nh pht tri n s ng gp o n m c a mnh b ng chnh cch ny. Tuy nhin sau khi nh n c t p tin *.diff th c n ph i a nh ng s a i lm vo phin b n hi n th i. Bi ton ny l do patch gi i quy t. c xvnkb-0.2.8.c v xvnkb.c.diff, ch c n ch y l nh: [user]$ patch xvnkb-0.2.8.c xvnkb.c.diff > xvnkb-0.2.9.c s thu c t p tin xvnkb-0.2.9.c.

4.7

Cc cu l nh lu tr

v nn t p tin

Khi s d ng Linux r t c th b n s t lm vi c v i ph n l n cc l nh h v shell, v c nh ng chng trnh ti n ch nh Midnight Commander v cc

4.7 Cc cu l nh lu tr

v nn t p tin

89

mi tr ng giao di n ho nh KDE, GNOME. V cc ti n ch v mi tr ng gip b n lm vi c d dng v i cc t p tin nn s ni t i. Nhng l ng i dng Linux th c s b n cng nn bi t nh ng cu l nh nn v gi i nn lm vi c trong h v shell. Chng s gip b n lm vi c nhanh hn v i nh ng t p tin nn th ng g p trong Internet. Phng ti n chnh lm vi c v i cc t p tin nn trong UNIX v Linux l hai chng trnh tar v gzip. M c d khng ai c m b n s d ng cc chng trnh arj, pkzip, lha, rar v.v. . . Nhng truy n th ng c a Unix l tar v gzip v ph n l n m ngu n (v khng ch m ngu n) c a cc chng trnh ng d ng c phn ph i d ng ny. V th bi t cch lm vi c v i tar v gzip l danh d c a b t k ng i dng Linux no, cng gi ng nh samurai ph i bi t s d ng ki m v y.

4.7.1

Chng trnh tar

Nh ng ng i dng quen v i nh ng chng trnh nn d ng winzip (a t t c t p tin vo m t kho r i sau nn chng) th c th s h i T i sao l i c n hai chng trnh?. Chng ta s tm th y cu tr l i cho cu h i ny sau khi c xong hai ph n t i y, v s th y y khng ph i l m t y u i m c a Linux m cn l i m m nh n u bi t cch k t h p nh p nhng hai chng trnh ny. Tn chng trnh tar c ngha l tape archiver, t c l chng trnh ny khng nn cc d li u m ch k t h p chng vo m t t p tin chung sau ghi t p tin ny ln cch bng nh (tape) th ng dng lu tr thng tin. N u mu n t o t p tin ny trn a c ng, th c n s d ng l nh tar v i ty ch n f, sau ch ra tn t p tin. Chng trnh tar c 8 ty ch n khc v i nh ng ty ch n cn l i ch khi ch y l nh tar th c n ph i a ra m t trong s 8 ty ch n ny. Tm ty ch n ny xc nh cc ch c nng chnh c a chng trnh (xem b ng 4.5). B ng 4.5: Nh ng ty ch n chnh c a tar Ty ch n ngha -A, --catenate, --concatenate Thm t p tin vo kho c. -c, --create T o kho m i. -d, --diff, --compare Tm s khc nhau gi a cc t p tin trong kho v trn h th ng t p tin (so snh). --delete Xa t p tin kh i kho (khng dng cho bng ghi). -r, --append Thm t p tin vo cu i kho. -t, --list a ra danh sch cc t p tin trong kho. -u, --update Ch thm nh ng t p tin m i hn b n sao trong kho (c p nh t kho). -x, --extract, --get L y t p tin ra kh i kho (gi i phng). N u b n lm vi c v i cc t p tin kho trn a ch khng ph i v i bng ghi (y l a s tr ng h p s d ng my tnh c nhn), th nh t nh ph i dng

90

Lm quen v i h th ng t p tin ext3fs

ty ch n f. Nh ng ty ch n khc (tr 8 ty ch n b t bu c k trn) l khng c n thi t, chng ch dng thm vo cc ch c nng ph c th no . V d , ty ch n v b t bu c chng trnh ph i a ra danh sch cc t p tin a vo kho. C th li t k cc tu ch n m t ch ci (c, f, . . . ) li n nhau v d u g ch ngang () pha tr c c th dng nhng khng nh t thi t ph i c. Chng ta s th y v d t i y. Ti s khng a ra m t t t c cc ty ch n c a l nh tar, m ch cho bi t m t s dng l nh c n thi t nh t lm vi c v i cc kho t p tin. Nh v y s c ch hn trong th i gian ny. t o m t kho t p tin tar t vi t p tin c n s d ng m t trong hai l nh sau: [user]$ tar -cf tn_kho t p_tin1 t p_tin2 [user]$ tar cf tn_kho t p_tin1 t p_tin2 trong ty ch n c (t by gi ti s b i d u g ch ngang pha tr c tu ch n) cho bi t chng trnh c n t o ra (create) kho t p tin, cn tu ch n f cho bi t l kho ny ph i c t o d ng t p tin c tn tn_kho pha sau ty ch n. Trong ph n tn t p tin mu n lu vo kho c th s d ng cc m u tn, bao g m c cc k t thay th n gi n nh * v ?. Nh vo tnh nng ny c th lu vo kho ngay l p t c nhi u t p tin b ng m t cu l nh r t ng n. V d , t o ra kho ch a t t c cc t p tin c a m t th m c con c a th m c hi n th i, gi s projects, th ch c n g i l nh: [user]$ tar cf projects.tar projects/* ho c th m ch cn n gi n hn: [user]$ tar cf projects.tar projects Cu l nh ny s t o ra kho projects.tar trong th m c hi n th i. Kho ny khng ch lu t t c nh ng t p tin c trong th m c projects m cn lu t t c nh ng th m c con c a n cng v i t t c nh ng t p tin n m trong chng (chng ta dng thu t ng lu quy, ho c lu ton b c u trc th m c). Trong t p tin kho c u trc th m c c a projects v n c gi nguyn. C n ch l trong v d trn n u ch * t *.* th s ch lu nh ng t p tin n m tr c ti p trong th m c projects v nh ng th m c con c d u ch m trong tn (t g p), nh ng th m c con cn l i c a projects s khng c lu. Cng trong v d ny n u khng ch ra tn th m c th s lu t t c cc t p tin v th m c con c a th m c hi n th i. N u ch y l nh sau: [user]$ tar cvf tn_kho ./.* th khng ch lu t t c cc t p tin v th m c con c a th m c hi n th i, m cn lu nh ng t p tin c a th m c m . By gi b n c bi t cch t o kho t p tin. l y (gi i phng) t t c t p tin ra kh i kho, c n dng l nh: [user]$ tar xvf tn_kho Hi n th danh sch cc t p tin trong kho b ng l nh:

4.7 Cc cu l nh lu tr

v nn t p tin

91

[user]$ tar tvf tn_kho | less Gi i phng m t t p tin no b ng: [user]$ tar xvf tn_kho tn_t p_tin Chng trnh tar l phng ti n thu n l i t o cc b n sao lu tr (sao lu) c a t p tin. T t nhin cn c nh ng ti n ch sao lu chuyn dng khc, nhng c khi b n c khng bi t nh ng ti n ch ny, th v n c th sao lu d li u qu bu c a mnh ln a m m b ng: [user]$ tar Mcvf /dev/fd0 th_m c r i ph c h i th m c b ng l nh: [user]$ tar Mxpvf /dev/fd0 Ho c n gi n hn, t o m t t p tin kho ch a: [user]$ tar cvf tn_kho th_m c

r i sao chp t p tin tn_kho ln m t thi t b lu tho r i ho c th m c trn m ng no (CD, DVD, flash, ftp,. . . ). Ph c h i l i b ng l nh: [user]$ tar xpvf tn_kho N u c kh khn khi s d ng l nh tar, hy c tr gip man c a n ho c c nh ng thng tin hi n ra khi ch y tar v i ty ch n --help

4.7.2

Chng trnh gzip

M c d chng trnh tar t o ra kho t p tin, nhng nh ni trn, n khng nn kho ny l i m ch k t h p cc t p tin ring r vo m t t p tin chung. nn t p tin ny l i th ng s d ng cu l nh gzip. Tr ng h p n gi n nh t c a l nh ny trng nh sau: [user]$ gzip tn_t p_tin Trn dng l nh c th a ra cng lc vi tn ho c m u tn t p tin. Nhng khi ny m i t p tin s c nn ring r , ch khng t o m t t p tin chung. gi i nn t p tin hy dng m t trong hai cu l nh sau: [user]$ gzip -d tn_t p_tin ho c [user]$ gunzip tn_t p_tin

92

Lm quen v i h th ng t p tin ext3fs

B ng 4.6: Nh ng ty ch n chnh c a chng trnh gzip Ty ch n ngha -h, --help Hi n th tr gip ng n g n v cch s d ng chng trnh. -l, --list a ra tn t p tin n m trong t p tin nn, kch th c c a n v m c nn (tnh theo %). -L, --license Hi n th s phin b n v b n quy n c a chng trnh. -N, --name Lu ho c ph c h i tn ban u v th i gian t o t p tin. -n, --no-name Khng lu ho c khng ph c h i tn ban u v th i gian t o t p tin. -q, --quiet B i nh ng c nh bo. -r, --recursive Nn ton b ( quy) th m c. S d ng trong tr ng h p c a ra m u tn t p tin. S .suf, -suffix Thm ph n sau (suffix) vo tn t p tin nn. Theo .suf m c nh s d ng ph n sau l gz. Ch : n u s d ng ph n sau khc gz th khi gi i nn chng trnh s a ra thng bo l i d ng unknown suffix ignored (ph n sau khng bi t l i). -t, --test Th (ki m tra) tnh nguyn v n c a t p tin nn. -v, --verbose a ra cc thng bo ph trong khi lm vi c. -V, --version Hi n th phin b n c a chng trnh. -1, --fast Nn nhanh (m c nn th p). -9, --best M c nn m nh hn. Kch th c t p tin thu c nh hn nhng t t nhin l s lu hn. T p tin ban u sau khi nn s b xa, ch cn l i t p tin nn. Cn khi gi i nn th t p tin nn s b xa, ch cn l i t p tin bnh th ng. Chng ta c c m gic nh t p tin c a ra, a vo m t kho. Nhng l nh ng t p tin hon ton khc nhau! Hy s d ng l nh ls -i ki m tra ch s inode c a chng. By gi chng ta s li t k m t vi ty ch n c ch c a chng trnh gzip vo b ng 4.6. B i v chng trnh gzip khng c kh nng lu nhi u t p tin vo trong m t t p tin, nn th ng dng gzip nn nh ng kho t p tin do tar t o ra. Hn n a cn c th s d ng k t h p hai chng trnh ny. Chng ta s xem xt v n ny ngay sau.

4.7.3

Chng trnh bzip2

Trong th i gian g n y ng i dng Linux th ng s d ng thm m t chng trnh nn n a thay th cho gzip chng trnh bzip2. Chng trnh ny nn m nh hn (c m c nn cao hn, t o ra cc t p tin nh hn) v lm vi c nhanh hn. Cc b n phn ph i Linux m i c ci t s n chng trnh ny.

4.7 Cc cu l nh lu tr

v nn t p tin

93

Chng trnh bzip2 lm vi c tng t nh gzip, t c l thay th m i t p tin a vo dng l nh b ng phin b n nn c a t p tin , nhng thm vo ph n cu i l .bz2. T p tin nn c th i gian s a i, quy n truy c p v c th c ch s h u nh t p tin ban u. Do c kh nng ph c h i nh ng tnh ch t ny c a t p tin khi gi i nn. Trong m t s tr ng h p t p tin nn c th cn l n hn theo kch th c so v i t p tin ban u. i u ny c th x y ra i v i nh ng t p tin c kch th c nh hn 100 byte, v c ch nn s d ng ph n u (head) c kch th c 50 byte. Nh ng t p tin g m m t chu i ng u nhin (random) c a cc k t , trong c cc t p tin nn, th kch th c c a t p tin tng ln kho ng 0,5%. Cu l nh bunzip2 ho c bzip2 d gi i nn t p tin ch ra. N u t p tin ny khng ph i do bzip2 t o ra th chng trnh s khng gi i nn m a ra l i c nh bo. Khi gi i nn bzip2 s on tn c a t p tin s t o ra theo quy lu t sau: tn_t p_tin.bz2 thay th b ng tn_t p_tin tn_t p_tin.bz thay th b ng tn_t p_tin tn_t p_tin.tbz2 thay th b ng tn_t p_tin.tar tn_t p_tin.tbz thay th b ng tn_t p_tin.tar tn_t p_tin khc thay th b ng tn_t p_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 ch n c a bzip2 r t gi ng v i ty ch n c a gzip nhng khng ph i t t c . Ti s a ra m t danh sch ng n nh ng ty ch n c n thi t nh t trong b ng 4.7. Tham s ng sau hai d u g ch ngang (--) v m t kho ng tr ng c coi l tn t p tin, d tham s c m t d u g ch ngang u. V d : [user]$ bzip2 -- -tn_t p_tin By gi n lc chng ta h c cch k t h p tar v i hai cu l nh gzip v bzip2 lm vi c nhanh v c hi u qu hn.

4.7.4

S d ng k t h p tar v i gzip v bzip2

T t nhin khng ai ngn c n b n s d ng ring r cc cu l nh tar v i gzip v bzip2, nhng s nhanh hn n u chng ta ch c n s d ng m t cu l nh c th t o ra m t t p tin nn, hay gi i nn m t t p tin. Hy t ng t ng b n nh n c m t t p tin, v d xvnkb-0.2.9.tar.gz. gi i nn t p tin ny thng th ng b n c n dng hai cu l nh sau ti p n i nhau:

94

Lm quen v i h th ng t p tin ext3fs

B ng 4.7: Nh ng ty ch n chnh c a chng trnh bzip2 Ty ch n ngha -d, --decompress B t bu c gi i nn t p tin. Ty ch n ny c n thi t v trn th c t bzip2, bunzip2 v bzcat ch l m t chng trnh. M i chng trnh tu theo ph n m r ng t p tin m quy t nh xem s lm g v i t p tin . Ty ch n -d b i c ch ny v b t bu c chng trnh ph i gi i nn t p tin ch ra. -z, --compress B t bu c nn t p tin (xem trn). -t, --test Th (ki m tra) tnh nguyn v n c a t p tin nn. -f, --force Ghi chn ln t p tin c. Theo m c nh bzip2 khng ghi chn ln t p tin c trn a. N u mu n ghi chn th hy dng ty ch n ny. -k, --keep Gi gn (khng xa) t p tin ban u khi nn ho c gi i nn. -s, --small Gi m yu c u i v i dung l ng b nh c n s d ng b ng cch gi m t c nn. Ch nn dng ty ch n ny trn nh ng my tnh c c t b nh (8MB ho c t hn). C l chng ta khng bao gi c n n ty ch n ny ho c t nh t l hy v ng nh v y. -q, --quiet B i nh ng c nh bo t ngha. -v, --verbose a ra cc thng bo ph trong khi lm vi c (ch c ngha chu n on). L, -license Hi n th s phin b n v b n quy n c a chng trnh. V, -version Gi ng nh --L. [user]$ gzip -d xvnkb-0.2.9.tar.gz [user]$ tar xvf xvnkb-0.2.9.tar Nhng trong s nh ng ty ch n c a chng trnh tar cn c m t tu ch n c bi t z cho php gi i nn t p tin b ng chng trnh gzip (th c hi n vai tr c a l nh th nh t trong hai l nh k trn). gi i nn t p tin k trn ch c n dng m t cu l nh nh sau: [user]$ tar xzvf xvnkb-0.2.9.tar.gz K t qu thu c l hon ton nh trn tr m t i m: trong tr ng h p dng 2 cu l nh th trn a s gi l i t p tin trung gian (xvnkb-0.2.9.tar). Nh v y cch th hai cn c m t u i m n a l khng gi l i cc t p tin trung gian, ng i dng khng c n ph i g thm m t l nh xo t p tin. Vi c t o t p tin b ng cch s d ng k t h p tar v gz cng c th c hi n b ng ty ch n z: [user]$ tar czvf tn_t p_tin.tar.gz th_m c C n ch r ng trong tr ng h p ny chng trnh s khng t ng thm ph n ui .gz vo tn c a t p tin thu c. Do c n t tn r rng cho n cng v i ph n ui .tar.gz.

4.8 T o v g n cc h th ng t p tin

95

S d ng k t h p tar v bzip2 l hon ton tng t , nhng c n dng ty ch n j c a tar thay cho tu ch n z. T c l, gi i nn t p tin b ng l nh: [user]$ tar xjvf tn_t p_tin.tar.bz2 v t o t p tin nn b ng: [user]$ tar cjvf tn_t p_tin.tar.bz2 th_m c Ti ngh r ng nh ng thng tin k trn lm vi c m t cch c hi u qu v i cc chng trnh nn tar, gzip v bzip2. c thm thng tin hy tm hi u trang tr gip man ho c cc ti li u HOWTO tng ng. k t thc ph n v nh ng chng trnh lm vi c v i t p tin nn ny, ti mu n ni thm r ng, n u khng may b n nh n c m t t p tin d ng *.zip hay *.rar th cng ng v i ch y sang nh m t my s d ng Windows gi i nn. B n c th th cc chng trnh unzip v unrar c trn h th ng Linux c a mnh. Cch s d ng nh ng l nh ny h t s c n gi n, ch c n a vo dng l nh tn c a t p tin. N u c g kh khn hy th unzip help ho c unrar help. Ti ch c ch n l b n s t gi i quy t c v n . V ng qun ch t o ra cc t p tin nn b ng tar, gzip ho c bzip2 v b n l ng i dng Linux!

4.8

T o v g n cc h th ng t p tin

Trong nh ng ph n tr c chng ta c p ng n g n m t s cu l nh chnh lm vi c v i nh ng h th ng t p tin nh d ng s n. By gi chng ta s d ng l i v n lm sao t o ra h th ng t p tin v cch thay i n. Cy th m c c a Linux c t o ra t nh ng cnh ring r tng ng v i cc a khc nhau. Th ng ni l cy th m c c t o thnh t cc h th ng t p tin ring. Ni nh v y v trong UNIX (v Linux) khng c khi ni m nh d ng a m s d ng khi ni m t o h th ng t p tin. Khi chng ta c m t a lu m i, v d a c ng, chng ta c n t o trn a ny h th ng t p tin. T c l m i a c t tng ng v i h th ng t p tin ring. c th s d ng h th ng t p tin ny ghi cc t p tin, th u tin c n k t n i n v cy th m c chung (chng ta s d ng thu t ng g n, mount). Nh v y l c th ni g n h th ng t p tin ho c g n a lu cng v i cc h th ng t p tin c trn n. Cn c n ph i ni thm r ng thng th ng a c ng c chia thnh cc phn vng, nh t l i v i nh ng a m i s n xu t g n y c dung l ng l n t vi ch c n vi trm GB. Vi c t o nh ng phn vng nh v y gip th c hi n d dng cc thao tc nh: sao lu, xc nh quy n truy c p, ng th i tng hi u su t lm vi c v lm gi m kh nng m t thng tin do chng trnh gy ra. V th ti p theo chng ta s ni v t o h th ng t p tin trn m t phn vng, nh ng a khng b chia c th coi l m t phn vng. Cn m t i m n a cng c n ni n l Linux c th lm vi c v i nhi u d ng h th ng t p tin khc nhau. Nhng h th ng t p tin g c c a n l h th ng t p tin m r ng (extfs) phin b n 2 v 3. Ngoi hai h th ng t p tin ny Linux cn c th lm vi c v i cc phin b n khc nhau c a h th ng t p tin FAT (FAT16 v FAT32), h th ng t p tin ISO9660 s d ng ghi thng tin trn CD-ROM v

96

Lm quen v i h th ng t p tin ext3fs

cc h th ng t p tin khc (k c NTFS13 ). T c l khi t o v g n cc h th ng t p tin c n lun lun nh r ng d ng h th ng t p tin trn cc a lu khc nhau c th khng gi ng nhau. u tin chng ta s xem xt tr ng h p c n t o h th ng t p tin trn m t phn vng no ( c) c a a. V d h th ng t p tin c d ng ext3fs. T o h th ng t p tin d ng ext3fs c ngha l t o trn phn vng ny c a a m t siu kh i (superblock), m t b ng cc m t inode, v cc kh i d li u. Th c hi n t t c nh ng vi c ny b ng l nh mkfs14 . Trong tr ng h p n gi n nh t ch c n ch y l nh sau: [root]# mkfs -t ext3 /dev/hda2 T t nhin l c n thay th /dev/hda2 b ng tn c a phn vng trn my c a b n. Hy c n th n khi vi t tn phn vng, n u ghi nh m b n s b m t d li u. N u b n mu n t o h th ng t p tin trn a m m th c n ch y: [root]# mkfs -t ext3 /dev/fd0 C th ni r ng chng ta nh d ng a m m, nhng c n bi t l v i h th ng t p tin ext3fs th b n khng c c a m m ny trn DOS ho c Windows (n u khng dng chng trnh ho c driver c bi t). t o ra nh ng a m m c th c trn DOS v Windows c n dng ty ch n -t v i gi tr vfat ho c nh ng ti n ch c bi t khc. N u khng a ra ty ch n -t th s dng d ng h th ng t p tin m c nh (hi n nay l phin b n c c a ext ext2fs). Sau khi th c hi n cu l nh mkfs, s t o ra h th ng t p tin d ng ext3fs trong phn vng ch ra. Trong h th ng t p tin m i s t ng t o ra m t th m c v i tn lostfound+. Th m c ny c chng trnh fsck dng trong nh ng tr ng h p kh n c p, v v y ng xa n. b t u lm vi c v i h th ng t p tin m i, u tin c n k t n i (g n) n vo cy th m c chung b ng l nh mount. Ph i c t nh t hai tham s cho cu l nh mount: thi t b (device, tn phn vng) v i m g n (mount point). i m g n l m t th m c c trong cy th m c, v dng lm th m c g c i v i h th ng t p tin g n vo (gi ng nh nt n i gi a thn cy v cnh cy). V d , cu l nh: [root]# mount /dev/hda10 /mnt/diaC s g n h th ng t p tin c a phn vng /dev/hda10 vo th m c /mnt/diaC. C n ph i c th m c /mnt/diaC trong cy th m c. N u cha c hy t o ra b ng l nh mkdir. C n ch l sau khi g n h th ng t p tin vo th m c /mnt/diaC, th ng i dng khng cn truy c p c t i n i dung (bao g m c thng tin v ch s h u c v quy n truy c p t i chnh b n thn th m c) c a th m c ny n a. N i dung ny s ch quay tr l i khi ng i dng b g n (unmount) h th ng t p tin ra kh i th m c. N i dung c c a th m c khng b hu , b xa, m ch t m th i b gi u i. V th t t nh t l dng cc th m c r ng chu n b s n t tr c
S h tr c t t, tuy nhin s h tr ghi ln NTFS cha th t hon h o. Trn cc b n phn ph i Linux m i cn c th s d ng cc cu l nh mkfs.ext2, mkfs.ext3 v cc cu l nh tng t . N u dng chng th ch c n b i ph n -t ext3 ho c -t ext2.
14 13

4.8 T o v g n cc h th ng t p tin

97

lm i m g n (v th m trong tiu chu n FHS c c p n th m c /mnt, hy xem b ng 4.1). D ng n gi n nh t trong v d trn c a l nh mount ch lm vi c v i i u ki n t t c nh ng tham s cn thi u c th tm th y trong t p tin /etc/fstab. N u khng c t p tin (ch khi no b n c tnh ho c v tnh xa) ho c trong t p tin khng c nh ng d li u c n thi t, th c n s d ng d ng y c a l nh mount, nh sau: [root]# mount -t d ng_httt thi t_b ng_d n

trong d ng_httt xc nh d ng h th ng t p tin trn thi t_b (phn vng), cn ng_d n xc nh i m g n. T p tin c u hnh /etc/fstab ch y u dng g n t ng cc h th ng t p tin trong qu trnh kh i ng Linux. M i dng c a t p tin ny ch a thng tin v m t h th ng t p tin v g m 6 vng phn cch nhau b i cc kho ng tr ng15 : Tn thi t b (phn vng). C th s d ng tn thi t b c trn my (v d /dev/hda10), cng nh tn c a h th ng t p tin m ng NFS (v d ThinhQuyen:/home/nhimlui th m c /home/nhimlui trn my c tn ThinhQuyen). i m g n. Tn y bao g m c ng d n c a th m c s g n t p tin vo. D ng h th ng t p tin. Cc tu ch n g n. Theo m c nh l rw ( c v ghi). M c dump. Vng ny c chng trnh sao lu dump s d ng. N u h th ng t p tin c n c sao lu th y ph i c s 1, n u khng s 0. C th c cc gi tr khc, hy xem trang man c a dump. Th t u tin ki m tra h th ng t p tin b ng cu l nh fsck. H th ng t p tin v i gi tr nh hn s c ki m tra tr c. N u b ng nhau th s ki m tra song song (t t nhin n u c th ). Hi n nay Linux h tr cc h th ng t p tin sau: minix, ext, ext2, ext3, xia, msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs16 . ch d ng h th ng t p tin trong vng d ng h th ng t p tin v sau ty ch n -t c a l nh mount c th t gi tr auto. Trong tr ng h p cu l nh mount th t xc nh d ng c a h th ng t p tin ang g n. Tuy nhin trong m t s tr ng h p c th d n n l i, nn t t hn h t l ch ra d ng m t cch chnh xc. Cn c th li t k m t s d ng phn cch nhau b i d u ph y (,). Trong cu l nh mount cn c th a ra danh sch cc d ng h th ng t p tin khng c n g n b ng c (flag) no. Kh nng ny c ch trong tr ng h p s d ng cu l nh mount v i tham s -a (cu l nh mount v i tham s -a s g n t t c cc h th ng t p tin li t k trong t p tin /etc/fstab). V d , cu l nh:
15 16

ti n c cc vng th ng s p cho th ng hng, nhng i u l khng nh t thi t. Hy xem trang man fs c m t ng n g n v nh ng h th ng t p tin ny.

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

Lm quen v i h th ng t p tin ext3fs

g n t t c cc h th ng t p tin tr cc d ng smb (Samba17 ) v ext Khi g n h th ng t p tin c trong /etc/fstab, th ch c n a ra m t tham s : ho c tn c a thi t b (phn vng) ho c i m g n. T t c cc tham s khc cu l nh mount s l y t t p tin /etc/fstab. Thng th ng ch c ng i dng cao c p root m i c kh nng g n cc h th ng t p tin, nhng n u trong vng cc ty ch n g n c ch ra ty ch n user, th t t c m i ng i dng s c kh nng g n (b g n) h th ng t p tin . V d , n u trong t p tin /etc/fstab c dng: /dev/hdd /media/dvd auto noauto,user,sync 0 0

th b t k ng i dng no cng c quy n g n h th ng t p tin trn a DVD c a mnh b ng cu l nh: [user]$ mount /dev/hdd ho c: [user]$ mount /media/dvd Trong b ng 4.8 c a ra thm m t vi ty ch n c th s d ng trong cu l nh mount v trong t p tin/etc/fstab (vng cc ty ch n g n). N u mu n g n m t h th ng t p tin no v ch cho php c th c n ch ra ty ch n r (read only) trn dng tng ng c a t p tin /etc/fstab (theo m c nh s d ng rw, t c l c v ghi), ho c s d ng cu l nh mount v i tham s -r Cu l nh mount v umount h tr b ng cc h th ng t p tin g n. B ng ny n m trn a d ng t p tin /etc/mtab. C th xem tr c ti p t p tin ny b ng cc chng trnh xem t p tin (less, more ho c b ng cu l nh mount (khng c tham s ). Tr c khi b cc a tho r i (a m m, flash) ra kh i my th c n tho (b g n) cc h th ng t p tin c trn cc a tho r i ny. Thao tc ny c th c hi n b ng cu l nh umount (khng ph i unmount!). Tham s c a cu l nh umount l tn thi t b (phn vng) ho c i m g n. Ch c ng i dng g n h th ng t p tin v t t nhin c ng i dng cao c p root m i c quy n b g n n. b t k ng i dng no cng c th b g n h th ng t p tin th trong t p tin /etc/fstab c n thay th ty ch n user b ng ty ch n users (trong vng cc ty ch n g n). Ch c th b g n h th ng t p tin khi khng c t p tin no c a n m ra, khng ti n trnh no ang ch y t t p tin chng trnh n m trn h th ng t p tin ny v trong h th ng khng c ti n trnh no s d ng h th ng t p tin ny. T c l h th ng t p tin khng c b n. C n ni r ng n u so v i Windows th lm vi c v i cc a r i (a m m, CD, DVD, Zip, v.v. . . ) trn Linux c m t cht ph c t p hn. V u tin b n c n g n cc a ny (ni chnh xc l h th ng t p tin c trn a) vo cy th m c chung. thay m t a r i khc th u tin c n b g n (tho) a c ra r i m i g n
17

cc chia s trong m ng c a Windows

4.8 T o v g n cc h th ng t p tin

99

B ng 4.8: Nh ng ty ch n chnh c a cu l nh mount Ty ch n ngha async Vo/ra (ghi/ c) c a h th ng t p tin th c hi n khng ng b (khng t c th i). auto C th g n h th ng b ng cu l nh mount v i ty ch n -a. defaults S d ng cc tu ch n theo m c nh: rw, suid, dev, exec, auto, nouser, async. dev Cc thi t b kh i v thi t b k t (byte) trong h th ng t p tin l nh ng t p tin c bi t. noauto Ch c th t g n h th ng t p tin. Ty ch n -a khng t ng g n h th ng t p tin ny. exec Cho php th c hi n cc t p tin chng trnh n m trn h th ng t p tin ny. remount Cho php g n l i h th ng t p tin g n. Th ng s d ng thay i cc ty ch n g n, c bi t trong tr ng h p m r ng quy n truy c p (v d thm quy n ghi cho h th ng t p tin g n ch c). ro G n h th ng t p tin ch c. rw G n h th ng t p tin c v ghi. suid Cho php dng bit thay i ID ng i dng v bit thay i ID nhm. sync Vo/ra (ghi/ c) c a h th ng t p tin th c hi n ng b (t c th i). user Cho php ng i dng bnh th ng g n h th ng t p tin. i v i nh ng ng i dng ny lun lun g n v i cc ty ch n noexec, nosuid, nodev. nodev Khng coi cc thi t b kh i v thi t b k t (byte) trong h th ng t p tin l nh ng t p tin c bi t. nosuid Khng cho php dng bit thay i ID ng i dng v bit thay i ID nhm. nouser C m ng i dng bnh th ng g n h th ng t p tin. ti p a th hai. Tuy trn cc b n phn ph i m i c cc d ch v cho php t ng g n v t ng tho cc a r i, nhng b n cng c n bi t cch lm vi c v i cc a r i n u c v n x y ra v i cc d ch v . T t nh t hy chu n b s n cho m i a r i m t i m g n ring. V d , n u b n c m t a m m, m t dvd v m t flash th hy t o ba th m c floppy, dvd v flash trong /mnt lm i m g n cho ba thi t b c a mnh. M t s b n phn ph i (Debian, openSUSE) s t o s n cho b n nh ng i m g n ny. y l t t c nh ng g m ng i dng Linux m i (v r t m i) c n bi t v h th ng t p tin ext3fs. Xin nh c l i l nh ng g ni y ch dnh cho h th ng t p tin ext3fs (m t s thng tin v n cn ng cho phin b n ext2fs), v m i ch c p n m t tr c, m t quay v pha ng i dng c a h th ng ny (ch y u l c u trc t p tin). M t cn l i, m t sau (c u trc bn trong), ch c ni n trong chng ny khi c n thi t. Chng ta s xem xt k hn m t sau ny trong

100

Lm quen v i h th ng t p tin ext3fs

m t vi chng s p t i. Cn by gi b n c s chuy n sang nghin c u thnh ph n quan tr ng th 2 trong 4 thnh ph n chnh c a Linux h v bash.

Chng 5 Bash
T t g hn t t n c sn ca dao t c ng Vi t Nam
Trong ph n ny chng ta s c p n v n lm vi c v i Linux ch text, hay cn c g i l console ho c terminal. Nh ng ng i dng Linux m i (newbie) th ng ngh s ch ng bao gi lm vi c ch ny, v c giao di n h a. Tuy nhin y l m t ki n sai l m, b i v r t nhi u cng vi c c th th c hi n nhanh v thu n ti n trong ch ny hn l s d ng giao di n h a. V d sao th ch text c a HH Linux khng ph i l ch text m t ti n trnh c a MS-DOS. V Linux l HH a ti n trnh, nn ngay trong ch text c kh nng lm vi c trong vi c a s . V so n th o m t t p tin vn b n khng nh t thi t ph i ch y cc trnh so n th o l n v ch m ch p ( c bi t trn cc my c c u hnh ph n c ng th p) c a mi tr ng h a.

5.1

H v l g?

Chng ta th ng ni ng i dng lm vi c v i h i u hnh. i u ny khng hon ton ng, v trn th c t lin h v i ng i dng c th c hi n b i m t chng trnh c bi t. C hai d ng c a chng trnh c p - h v , hay shell, lm vi c trong ch text (giao di n dng l nh) v giao di n h a GUI (Graphical User Interface), th c hi n lin h v i ng i dng trong mi tr ng h a. C n ni ngay r ng, b t k chng trnh no trong Linux c th kh i ng t dng l nh c a h v (n u my ch X ch y), cng nh qua giao di n h a. Ch y chng trnh t dng l nh c a h v tng ng v i vi c nhy (p) chu t ln bi u t ng c a chng trnh trong GUI. a cc tham s cho chng trnh trn dng l nh tng ng v i vi c chng ta ko v th ci g ln bi u t ng chng trnh trong mi tr ng h a. Nhng m t khc, m t s chng trnh khng th ch y GUI v ch c th th c hi n t dng l nh. Ni ngoi l m t cht, tn g i h v b ph n i r t nhi u. Theo ki n c a m t s chuyn gia ngn ng cng nh chuyn gia Linux th nn g i chng trnh ny m t cch ng hn l trnh x l l nh hay trnh bin d ch l nh. Tuy nhin, tn g i h v (shell) c dng cho cc chng trnh dng bin d ch l nh trong ch text trn m i h th ng UNIX. Trn cc h th ng UNIX u tin c m t chng trnh, g i l sh, vi t t t c a shell. Sau , vi bi n th c a sh c pht tri n v lm t t hn, trong c Bourne shell phin b n m r ng c a sh, vi t b i Steve Bourne. D

102

Bash

n GNU (d n pht tri n chng trnh ng d ng c a Stallman, xem http: //www.gnu.org/) sau cho ra i h v bash, tn g i c a n c gi i m ra l Bourne-again shell, t c l l i l h v c a Bourne. Trn ti ng Anh y l m t cch chi ch , v t Bourne c gi ng v i t borne (sinh ra, ra), v nh th bash cn c th gi i m l shell c sinh ra l n hai. Ti p theo chng ta s ch xem xt bash, v th d i khi ni n h v , xin ng m hi u l bash. T m t mnh bash khng th c hi n m t cng vi c ng d ng no. Nhng n h tr vi c th c thi m i chng trnh khc, t vi c tm ki m chng trnh c g i, ch y chng n vi c t ch c d li u u vo/ u ra. Ngoi ra, h v ch u trch nhi m v cng vi c v i cc bi n mi tr ng v th c hi n m t vi bi n i (th , hon i v tr) cc tham s l nh. Nhng tnh ch t chnh c a h v , nh a h v tr thnh m t cng c m nh c a ng i dng, l n bao g m m t ngn ng l p trnh n gi n. Trong ton h c t lu c ch ng minh r ng, b t k m t thu t ton no cng c th c xy d ng t hai (ba) thao tc c b n v m t ton t i u ki n. H v cung c p cc ton t i u ki n v ton t vng l p. N s d ng cc ti n ch v chng trnh khc (c trong thnh ph n h i u hnh, hay c ci t ring) lm cc thao tc c b n cho ngn ng l p trnh m n h tr . ng th i cho php a cc tham s cng nh k t qu lm vi c c a m t chng trnh t i cc chng trnh khc hay t i ng i dng. K t qu thu c l m t ngn ng l p trnh m nh. y cng l s c m nh v l m t trong cc ch c nng chnh c a h v . Tr c khi b t u ph n ny, b n c nn bi t cc t h p phm chnh, s d ng i u khi n vi c nh p d li u trn dng l nh. Nn nh t nh t cch s d ng c a cc (t h p) phm <Ctrl>+<C>, <Ctrl>+<D>, <Tab> v cc phm c mi tn.

5.2

Cc k t c bi t

H v bash s d ng m t vi k t t b 256 k t ASCII cho cc m c nh ring, ho c bi u th cc thao tc no , ho c bi n i bi u th c. Cc k t ny bao g m: ~ ! @ # $ % ^ & * ( ) _ - [ ] { } : ; " / \ > < v k t v i m 0, k t hng m i (t o ra khi nh n phm <Enter>) v k t kho ng tr ng. Ph thu c vo tnh hu ng cc k t c bi t ny c th s d ng v i ngha c bi t c a n hay s d ng nh m t k t thng th ng. Nhng trong a s cc tr ng h p khng khuyn dng cc k t v i gi tr th hai. Tr c h t l vi c s d ng chng trong tn t p tin v th m c. Tuy nhin cc k t _, v . (d u g ch d i, g ch ngang v d u ch m) th ng c s d ng trong tn t p tin, v y l m t v d cho th y khng ph i lc no chng cng c gi tr c bi t. Trong tn t p tin ch d u ch m (.) v g ch cho (/) c gi tr c bi t. K hi u g ch cho dng phn chia tn cc th m c trong ng d n, cn d u ch m c gi tr c bi t khi n l k t u tin trong tn t p tin (cho bi t t p tin l n). Vi c a ngay t t c ngha c bi t c a nh ng k t ny v cc tnh hu ng s d ng chng t m th i khng c ch. Chng ta s xem xt chng d n d n trong

5.3 Th c thi cc cu l nh

103

cc ph n sau, khi c n s d ng n. Tuy nhin, 3 k hi u c ngha l n v c n c p n u tin. K hi u \ (g ch cho ng c) c th g i l k hi u xa b ngha c bi t cho b t k k t c bi t no, ng ngay sau \. V d , n u mu n s d ng kho ng tr ng trong tn t p tin, th chng ta c n t tr c k t kho ng tr ng m t d u V d , cu l nh sau: teppi82@teppi:~$ cp lennon_imagine lennon\ imagine Cc k t v " (ngo c n v ngo c kp) c th g i l cc k t trch d n. M i k t ny lun lun c s d ng trong m t c p v i b n sao c a chnh n ng khung m t bi u th c no , gi ng nh trong cc vn b n, sch bo, . . . thng th ng. N u nh m t o n vn b n no t trong ngo c n, th t t c cc k t n m trong ngo c n ny c gi tr nh cc k t thng th ng, khn m t k t no c ngha c bi t. Tr l i v i v d s d ng kho ng tr ng trong tn t p tin trn, c th ni, n u mu n t t p tin ci tn lennon imagine c n a tn vo d u ngo c: teppi82@teppi:~$ cp lennon_imagine lennon imagine S khc nhau trong cch s d ng k t v " l, trong ngo c n m t ngha c bi t t t c cc k t , cn trong ngo c kp t t c chng ngo i tr $, v \ (d u la, ngo c n v d u g ch ng c).

5.3

Th c thi cc cu l nh

Nh ni trn, m t trong cc ch c nng chnh c a h v l t ch c vi c th c hi n cc cu l nh m ng i dng a vo trn dng l nh. H v , ni ring, cung c p cho ng i dng hai thao tc c bi t t ch c vi c a cc cu l nh trn dng l nh: ; v &.

5.3.1

Thao tc ;

M c d ng i dng th ng ch nh p trn dng l nh t ng cu l nh m t, nhng cn c th a vo dng l nh ngay l p t c vi cu l nh, v chng s th c hi n l n l t t cu l nh ny n cu l nh khc. lm c i u ny c n s d ng k t c bi t - ;. N u dng k t ny phn chia cc cu l nh, th cu l nh ti p theo s c coi nh tham s c a l nh pha tr c. Nh v y, n u nh p vo dng l nh ci g gi ng nh sau: teppi82@teppi:~$ command1 ; command2 th h v u tin s th c hi n cu l nh command1, ch cho l nh hon thnh, sau ch y command2, ch l nh hon thnh, sau l i a ra dng nh p l nh v ch cc hnh ng ti p theo c a ng i dng.

104

Bash

5.3.2

Thao tc &

Thao tc & c dng t ch c vi c th c hi n cc cu l nh trong ch n n sau. N u t d u & ngay sau cu l nh, th h v s tr l i quy n i u khi n cho ng i dng ngay sau khi ch y cu l nh, m khng i cho cu l nh hon thnh. V d , n u nh p vo dng l nh command1 & command2 &, th h v ch y cu l nh command1, ngay l p t c ch y l nh command2, v sau khng ch m tr tr l i dng nh p l nh cho ng i dng.

5.3.3

Thao tc && v ||

Cc thao tc && v || l nh ng thao tc i u khi n. N u trn dng l nh l command1 && command2, th command2 s th c hi n v ch th c hi n trong tr ng h p tr ng thi thot ra c a l nh command1 b ng khng (0), t c l l nh th c hi n thnh cng. M t cch tng t , n u dng l nh c d ng command1 || command2, th command2 s th c hi n v ch th c hi n khi tr ng thi thot c a l nh command1 khc khng. Chng ta s khng xem xt m t k thu t c a vi c th c hi n m t cu l nh no . Ch c th ni ng n g n r ng, h v ph i tm m (code) chng trnh, n p m vo b nh , chuy n cc tham s nh p trn dng l nh vo cho cu l nh, v sau khi th c hi n xong th theo m t cch no tr l i k t qu th c hi n l nh ny cho ng i dng hay ti n trnh khc. Chng ta s xem xt qua cc b c ny. B c u tin - tm ki m cu l nh. Cc cu l nh chia thnh hai lo i: n i tr (m c a chng c trong m c a chnh h v ) v ngo i tr (m c a chng n m trong m t t p tin ring l trn a). H v lun lun tm th y l nh n i tr, cn tm cc l nh ngo i tr ng i dng, theo nguyn t c, ph i ch cho h v ng d n y t i t p tin tng ng. Tuy nhin g gnh n ng cho ng i dng h v bi t cch tm l nh ngo i tr trong cc th m c, m c li t k trong ng d n tm ki m. Ch khi (h v ) khng th tm th y t p tin c n thi t trong cc th m c , n m i quy t nh r ng ng i dng nh m khi nh p tn l nh. V cch thm th m c vo ng d n tm ki m chng ta s ni n d i, cn by gi chng ta s xem xt cch h v t ch c vi c a d li u vo cho cu l nh ang th c hi n v vi c a k t qu t i cho ng i dng.

5.4
5.4.1

u vo/ u ra tiu chu n


Dng d li u vo ra

Khi m t chng trnh c th c hi n, n c cung c p ba dng d li u (hay cn g i l knh): u vo tiu chu n (standard input hay stdin). Qua knh ny d li u c a vo cho chng trnh; u ra tiu chu n (standard output hay stdout). Qua knh ny chng trnh a ra k t qu lm vi c c a mnh;

5.4 u vo/ u ra tiu chu n

105

knh thng bo l i tiu chu n (standard error hay stderr). Qua knh ny chng trnh a ra thng tin v l i. T u vo tiu chu n chng trnh ch c th c, cn hai u ra v knh thng bo l i c chng trnh s d ng ch ghi. Theo m c nh u vo c lin k t1 v i bn phm, cn u ra v knh bo l i h ng n terminal c a ng i dng. Ni cch khc, ton b thng tin c a l nh hay chng trnh m ng i dng ch y, v t t c nh ng thng bo l i, c a ra c a s terminal. Tuy nhin, chng ta s th y d i, c th chuy n h ng thng bo u ra (v d , vo t p tin). cho th y knh thng bo l i tiu chu n lm vi c nh th no, hy th c hi n cu l nh ls v i m t tham s khng ng, v d dng tham s l m t tn t p tin khng t n t i. Trong tr ng h p ny, ls a m t tin nh n bo l i ra knh thng bo l i tiu chu n. Tuy nhin, i v i ng i dng th trong tr ng h p ny knh thng bo l i tiu chu n khng khc g v i u ra tiu chu n, b i v chng ta cng th y thng bo l i trn c a s terminal. Lm vi c v i u vo v u ra tiu chu n c minh h a t t nh t qua v d cc l nh echo v cat.

5.4.2

L nh echo

Cu l nh echo dng chuy n t i u ra tiu chu n dng k t , m c a vo lm tham s cho n. Sau l nh ny a ra tn hi u chuy n dng v hon t t cng vi c. Hy th th c hi n cu l nh sau: [user]$ echo xin chao cac ban! Ti ngh r ng l i gi i thch s l th a thi (ch xin hy s d ng d u ngo c n, n u khng k t qu c th s khc. N u b n c ch th c th gi i thch t i sao l i khc).

5.4.3

L nh cat

Chng ta s xem xt l nh cat y v l nh ny th ng lm vi c v i u vo v u ra tiu chu n. Theo m c nh k t qu lm vi c c a l nh cat h ng t i u ra tiu chu n. ch ng minh l l nh ny theo m c nh ti p nh n dng d li u nh p vo, hy ch y l nh cat khng c tham s . K t qu l con tr chuy n t i m t dng m i, v hn n a c v nh khng c g x y ra. Lc ny cu l nh ch cc k t n t u vo tiu chu n. Hy nh p b t k k t no, v n s xu t hi n ngay l p t c trn mn hnh, t c l chng trnh ngay l p t c a chng t i u ra tiu chu n. C th ti p t c nh p cc k t , v chng cng s xu t hi n trn mn hnh. Thng th ng bn phm c c u hnh nh p vo theo t ng dng, v th n u b n nh n phm <Enter>, dng k t b n v a nh p s c a t i l nh cat, v l nh ny s l i a d li u ra mn hnh thng qua u ra tiu chu n. Nh v y, m i dng k t nh p vo s c hi n ra hay l n: m t l n khi g v l n th hai b i cu l nh cat.
1

gi ng lin k t ha h c

106

Bash

N u nh n t h p phm <Ctrl>+<D> (dng ng ng vi c nh p d li u) chng ta s qua l i dng nh p l nh. Cng c th s d ng t h p phm <Ctrl>+<C> (cu l nh trong h v dng d ng chng trnh ang ch y). N u a tn m t t p tin vo lm tham s cho l nh cat, th n i dung c a l nh ny s c a t i u vo tiu chu n, t l nh cat s c n i dung ny v a t i u ra tiu chu n (xem s ). N i dung t p tin --> u vo tiu chu n (stdin) --cat--> u ra tiu chu n (stdout) y ch l m t tr ng h p ring c a vi c chuy n h ng d li u u vo, m t c ch r t c ch c a h v . V t t nhin chng ta c n xem xt k hn c ch ny.

5.5

Chuy n h ng u vo/ u ra, ng ng v b l c

M c d, nh ni trn, thng th ng u vo/ u ra c a m t chng trnh lin k t v i cc u vo/ u ra tiu chu n, trong h v cn c cc mi tr ng c bi t cho php chuy n h ng u vo/ u ra.

5.5.1

S d ng >, < v >>

chuy n h ng u vo/ra, s d ng cc k hi u >, < v >>. Th ng s d ng vi c chuy n h ng li u ra c a cu l nh vo t p tin. D i y l m t v d tng ng: maikhai@fpt:/some/where$ ls -l > /home/maikhai/ls.txt Theo l nh ny danh sch t p tin v th m c con c a th m c, m t ng i dng th c hi n l nh ls2 s c ghi vo t p tin /home/maikhai/ls.txt; khi ny n u t p tin ls.txt khng t n t i, th n s c t o ra; n u t p tin c, th n i dung c a n s b xa v ghi b i danh sch ni trn. N u b n khng mu n xa n i dung c m ghi thm d li u u ra vo cu i t p tin, th c n s d ng k hi u >> thay cho >. Khi ny kho ng tr ng tr c v sau cc k hi u > hay >> khng c ngha v ch dng v i m c ch thu n ti n, d nhn. B n c th chuy n h ng khng ch vo t p tin, m cn t i u vo c a m t cu l nh khc hay t i m t thi t b no (v d , my in). V d , a n i dung t p tin /home/maikhai/ls.txt v a t o trn t i c a s terminal th hai3 c th s d ng l nh sau: maikhai@fpt:/sw$ cat /home/maikhai/ls.txt > /dev/tty2
th m c hi n th i b n c n dng t h p phm <Ctrl>+<Alt>+<F2> chuy n t i c a s terminal ny v ng nh p tr c
3 2

5.5 Chuy n h ng u vo/ u ra, ng ng v b l c

107

Nh b n th y, > dng chuy n h ng d li u c a u ra. Ch c nng tng t i v i u vo c th c hi n b i <. V d , c th m s t trong t p tin ls.txt nh sau (ch , y ch l m t v d minh h a, trn th c t th ng s d ng cu l nh n gi n hn): maikhai@fpt:/sw$ wc -w < /home/maikhai/ls.txt Cch chuy n h ng ny th ng c s d ng trong cc script, cho cc cu l nh m th ng ti p nh n (hay ch ) d li u vo t bn phm. Trong script dng t ng ha m t thao tc no , c th a cc thng tin c n thi t cho cu l nh t t p tin: trong t p tin ny ghi s n nh ng g c n th c hi n l nh . B i v cc k hi u <, > v >> lm vi c v i cc knh tiu chu n ( u vo ho c u ra), chng khng ch c dng theo cc cch quen thu c, th ng dng, m cn c th theo cch khc, l m t hn. V d , cc cu l nh sau l tng ng: [user]$ [user]$ [user]$ [user]$ cat > file cat>file >file cat > file cat

Tuy nhin, t chng (khng c m t l nh no, t c l khng c knh tiu chu n no cho l nh) cc k t chuy n h ng ny khng th c s d ng, nh th khng th , v d , nh p vo dng l nh sau: [user]$ file1 > file2 m thu c b n sao c a m t t p tin no . Nhng i u ny khng lm gi m gi tr c a c ch ny, b i v cc knh tiu chu n c cho m i cu l nh. Khi ny, c th chuy n h ng khng ch u vo v u ra tiu chu n, m cn cc knh khc. lm c i u ny, c n t tr c k hi u chuy n h ng s c a knh mu n chuy n. u vo tiu chu n stdin c s 0, u ra tiu chu n stdout - s 1, knh thng bo l i stderr - s 2. T c l l nh chuy n h ng c d ng y nh sau (xin c nh c l i, kho ng tr ng c nh > l khng nh t thi t): command N > M Trong , N v M - s c a knh tiu chu n (0, 1, v 2) ho c tn t p tin. Trong m t vi tr ng h p c s d ng cc k hi u <, > v >> m khng ch ra s knh hay tn t p tin, v vo ch cn thi u s t, theo m c nh, 1 n u dng >, t c l u ra tiu chu n, ho c 0 n u dng <, t c l u vo tiu chu n. Nh th , khi khng c s no ch ra, > s c bin d ch l 1 >, cn < s c bin d ch l 0 <. Ngoi vi c chuy n h ng cc knh tiu chu n n gi n nh v y, cn c kh nng khng nh ng chuy n h ng d li u vo knh ny hay knh khc, m cn sao chp n i dung c a cc knh tiu chu n . K hi u & dng th c hi n i u ny, khi t n (&) tr c s c a knh s chuy n d li u n: command N > &M

108

Bash

L nh ny c ngha l, u ra c a knh v i s N c g i n c u ra tiu chu n, v sao chp t i knh c s M. V d , sao chp thng bo l i vo u ra tiu chu n, c n dng l nh 2>&1, cn 1>&2 sao chp stdout vo stderr. Kh nng ny c bi t c ch khi mu n ghi u ra vo t p tin, v khi chng ta v a c th nhn th y thng bo trn mn hnh, v a ghi chng vo t p tin. V d , tr ng h p sau th ng c ng d ng trong cc script ch y khi kh i 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 d ng |

M t tr ng h p c bi t c a chuy n h ng u ra l s t ch c cc ng ng (ha y cn c th g i l knh gi a cc chng trnh, ho c bng chuy n). Hai hay vi cu l nh, m u ra c a l nh tr c dng lm u vo cho l nh sau, lin k t v i nhau (c th ni phn cch nhau, n u mu n) b i k hi u g ch th ng ng |. Khi ny u ra tiu chu n c a l nh ng bn tri so v i | c chuy n n u vo tiu chu n c a chng trnh, d ng bn ph i so v i |. V d : maikhai@fpt:/sw$ cat ls.txt | grep knoppix | wc -l Dng ny c ngha l k t qu c a l nh cat, t c l n i dung t p tin ls.txt, s c chuy n n u vo c a l nh grep, l nh ny s phn chia n i dung ni trn v ch l y ra nh ng dng no c ch a t knoppix. n l t mnh, k t q a c a l nh grep c chuy n t i u vo c a l nh wc -l, m tnh s nh ng dng thu c. ng ng s d ng k t h p vi chng trnh nh l i v i nhau (m i chng trnh th c hi n m t bi n i xc nh no trn u vo) t o thnh m t l nh t ng qut, m k t qu c a n s l m t bi n i ph c t p. C n ch r ng, h v g i v th c hi n t t c cc cu l nh c trong ng ng cng m t lc, ch y m i l nh trong m t b n sao h v ring. V th ngay khi chng trnh th nh t b t u a k t qu u ra, chng trnh ti p theo b t u x l k t qu ny. Cng y nh v y, cc l nh ti p theo th c hi n cc cng vi c c a mnh: ch d li u t l nh tr c v a k t qu cho l nh ti p theo, gi ng nh m t dy chuy n s n xu t. N u nh mu n m t l nh no k t thc hon ton, tr c khi th c hi n l nh ti p theo, b n c th s d ng trn m t dng c k hi u dy chuy n |, cng nh d u ch p ph y ;. Tr c m i d u ch m ph y, h v s d ng l i v ch cho n khi th c hi n xong t t c cc cu l nh tr c c a ng ng. Tr ng thi thot ra (gi tr lgc, m c tr l i sau khi th c hi n xong chng trnh) c a m t ng ng s trng v i tr ng thi thot ra c a cu l nh sau cng trong ng ng. tr c cu l nh u tin c a ng ng c th t k hi u !, khi tr ng thi thot ra c a ng ng s l ph nh lgc c a tr ng tht thot ra c a l nh cu i cng trong ng ng. T c l n u tr ng thi thot ra c a l nh cu i cng b ng 0 th tr ng thi thot ra c a ng ng s b ng 1 v ng c l i. H v ch cho t t c cc cu l nh k t thc r i m i xc nh v a ra gi tr ny.

5.6 Tham bi n v cc bi n s . Mi tr ng c a h v

109

5.5.3

B l c

V d cu i cng trn (v d v i cu l nh grep) c th dng minh h a cho m t khi ni m qua tr ng khc, l, b l c chng trnh. B l c l l nh (hay chng trnh), m ti p nh n d li u vo, th c hi n m t vi bi n i trn d li u ny v a ra k t qu u ra tiu chu n (t y cn c th chuy n n ni no theo mu n c a ng i dng). Cc cu l nh - b l c bao g m cc l nh ni n trn cat, more, less, wc, cmp, diff, v c nh ng cu l nh c trong b ng 5.1. B ng 5.1: Cc cu l nh b l c L nh M t ng n g n grep, fgrep, Tm trong t p tin hay d li u u vo cc dng c ch a m u egrep vn b n c ch ra v a cc dng ny t i u ra tiu chu n. tr Trong d li u u vo thay th cc k t th nh t b i cc k t tng ng th hai. Hy th g l nh tr abc ABC r i g vi dng ch a cc k t abc! comm So snh hai t p tin theo t ng dng m t v a vo u ra tiu chu n 3 c t : m t nh ng dng ch g p t p tin th nh t, hai nh ng dng ch g p t p tin th hai, v ba nh ng dng c trong c hai t p tin. pr nh d ng t p tin hay n i dung c a u tiu chu n in n. sed Trnh so n th o t p tin theo dng, s d ng th c hi n m t vi bi n i trn d li u u vo (l y t t p tin hay u vo tiu chu n) . M t b l c c bi t, cu l nh tee, nhn i d li u u vo, m t m t g i d li u ny n u ra tiu chu n, m t khc ghi n (d li u) vo t p tin (ng i dng c n t tn). D th y r ng theo ch c nng c a mnh l nh tee tng t nh nhm k t chuy n h ng 1>&file. Kh nng c a b l c c th m r ng v i vi c s d ng cc bi u th c chnh quy (i u khi n), cho php, v d , t ch c tm ki m theo cc m u tm ki m t n gi n n ph c t p v r t ph c t p. N u mu n, chng ta c th ni r t nhi u v chuy n h ng v b l c. Nhng n i dung ny c trong ph n l n cc cu n sch v UNIX v Linux (xem ph n l i k t). V v y, chng ta s d ng y v chuy n sang m t ph n khc, c g i l mi tr ng v cc bi n mi tr ng t o b i h v .

5.6

Tham bi n v cc bi n s . Mi tr ng c a h v

Khi ni m tham bi n trong h v bash tng ng v i khi ni m bi n s trong cc ngn ng l p trnh thng th ng. Tn g i (hay ID) c a tham bi n c th l m t t bao g m cc k t b ng ch ci, ch s , d u g ch d i (ch k t u tin c a

110

Bash

t ny khng c l ch s ), v c nh ng k t sau: , , #, , - (g ch ngang), $, , 0, _ (g ch d i). Chng ta ni r ng, tham bi n c xc nh hay c t ra, n u ng i dng g n cho n m t gi tr . Gi tr c th l m t dng tr ng r ng. nhn th y gi tr c a tham bi n, ng i ta s d ng k t $ tr c tn c a n. Nh v y, l nh: maikhai@fpt:/sm$ echo parameter hi n th t parameter, cn l nh maikhai@fpt:/sm$ echo $parameter hi n th gi tr c a tham bi n parameter (t t nhin n u nh tham bi n c xc nh).

5.6.1

Cc d ng tham bi n khc nhau

Tham bi n chia thnh ba d ng: tham bi n v tr, tham bi n c bi t (cc k t c bi t ni trn chnh l tn c a nh ng tham bi n ny) v cc bi n s c a h v . Tn (ID) c a tham bi n v tr g m m t hay vi ch s (nhng khng c tham bi n v tr 0). Gi tr c a tham bi n v tr l cc tham s cho l nh, c a ra khi ch y h v (tham s u tin l gi tr c a tham bi n 1, tham s th hai tham bi n 2, v.v. . . ). C th dng cu l nh set thay i gi tr c a tham bi n v tr. Gi tr c a cc tham bi n ny cng thay i trong khi h v th c hi n m t trong cc hm s (chng ta s xem xt v n ny d i). Cc tham bi n c bi t khng g khc hn l cc m u, m s thay th (php th , php hon i) chng c th c hi n nh trong b ng 5.2: Cc tham bi n c bi t, c li t k b ng trn, c m t i m khc bi t l ch c th nh c n chng, khng th gn cc gi tr cho cc tham bi n ny. Bi n mi tr ng, nhn t pha h v , l cc tham bi n c t tn. Gi tr c a bi n mi tr ng c gn nh thao tc c d ng sau: [user]$ name=value Trong , name - tn c a bi n, cn value - gi tr mu n gn cho bi n (c th l m t dng tr ng). Tn c a bi n mi tr ng ch c th bao g m cc ch s , ch ci v khng c b t u b i m t ch s . (Tin r ng sau khi c o n vi t v tham bi n v tr th cc b n hi u t i sao m t bi n mi tr ng khng th b t u b i m t ch s .) Gi tr c th l b t k m t dng vn b n no. N u gi tr c ch a nh ng k t c bi t, th c n t n (gi tr ) vo d u ngo c. Gi tr t t nhin s khng ch a cc d u ngo c ny. N u m t bi n mi trng c xc nh, th cng c th b xa b b ng l nh n i tr unset. T p h p t t c cc bi n ny cng v i cc gi tr gn cho chng g i l mi tr ng (enviroment) c a h v . C th xem n (mi tr ng) nh l nh set khi khng c tham s (c th c n dng ng ng set | less, n u mi tr ng l n, c nhi u bi n). xem gi tr c a m t bi n mi tr ng c th , thay v dng l nh set (khi ny c n tm trong k t qu c a n bi n mu n xem), c th s d ng l nh echo:

5.6 Tham bi n v cc bi n s . Mi tr ng c a h v

111

B ng 5.2: Thay th cc tham bi n c bi t Tham bi n Quy lu t thay th * Thay th b i cc tham bi n v tr, b t u t tham bi n th nh t. N u s thay th th c hi n trong d u ngo c kp, th tham bi n ny s c thay b i m t t duy nh t, m t o ra t t t c cc tham bi n v tr, phn cch nhau b i k t u tin c a bi n s IFS (s ni n sau). T c l $ tng ng v i $1c$2c. . . , trong c - k t u tin trong gi tr c a bi n s IFS. N u gi tr c a IFS tr ng, ho c khng c xc nh gi tr , th tham bi n phn cch nhau b i cc kho ng tr ng. @ Thay th b i tham bi n v tr, b t u t tham bi n th nh t. N u thay th th c hi n trong ngo c kp, th m i tham bi n s c thay th b i m t t ring bi t. T c l, $@ tng ng v i $1 $2 . . . N u khng c tham bi n v tr, th gi tr s khng c thi t l p (tham bi n s b x # Thay th b i gi tr th p phn c a cc tham bi n v tr. ? Thay th b i tr ng thi thot ra c a cu l nh cu i cng trong ng ng, m c th c hi n trong ch n n tr c. (g ch ngang) Thay th b i gi tr cc c , flag, c t b i l nh n i tr set hay trong khi ch y h v . $ Thay th b i s c a ti n trnh (PID - process identificator) Thay th b i s c a ti n trnh (PID) cu i cng trong s cc cu l nh th c hi n trong n n sau. 0 Thay th b i tn h v hay tn c a script ang ch y. N u bash ch y m t t p tin l nh no , th $0 c gi tr b ng tn c a t p tin ny. Trong tr ng h p ng c l i gi tr ny b ng ng d n u n h v (v d , /bin/bash _ (g ch d i) Thay th b i tham s cu i cng c a cu l nh tr c trong s cc cu l nh c th c hi n (n u l i l m t tham bi n hay bi n s , th s s d ng gi tr c a n [user]$ echo $name Trong , c n thay name b i tn bi n (nh v y, trong tr ng h p ny, b n l i c n ph i bi t tn c a bi n mu n xem). Trong s cc bi n, m b n s th y trong k t qu c a l nh set, c nh ng bi n r t th v . Xin hy ch n, v d , bi n RANDOM. N u th ch y vi l n lin ti p cu l nh sau: maikhai@fpt:/sw$ echo $RANDOM th m i l n b n s nh n c m t gi tr m i. Nguyn nhn l v bi n ny tr l i m t gi tr ng u nhin4 trong kho ng 0 - 32 768.
4

random l t ti ng Anh c ngha ng u nhin

112

Bash

5.6.2

D u nh c c a h v

M t trong cc bi n r t quan tr ng c tn PS1. Bi n ny cho bi t d ng c a d u nh c, m bash a ra trong khi ch ng i dng nh p cu l nh ti p theo. Theo m c nh th bi n ny c gn gi tr \s-\v\$ , tuy nhin trn cc b n phn ph i khc nhau th ng c cc script kh i ng (hay script ng nh p) xc nh l i bi n ny. Ni chung th trong bash c t t c b n d u nh c, c s d ng trong cc tr ng h p khc nhau. Bi n PS1 a ra d ng c a d u nh c khi h v ch nh p l nh. D u nh c th hai, xc nh b i bi n PS2, xu t hi n khi h v ch ng i dng nh p thm m t vi d li u c n thi t no c th ti p t c ch y cu l nh (chng trnh) g i. Theo m c nh bi n PS2 c gi tr >. R t c th b n nhn th y d u nh c ny, khi ch y l nh cat a d li u vo t bn phm vo t p tin. M t v d khc - l nh ftp, sau khi ch y l nh ny d u nh c s c d ng nh ni. D u nh c, xc nh b i bi n PS3, s d ng trong l nh select. D u nh c, xc nh b i bi n PS4, c a ra tr c m i cu l nh, trong lc bash theo di qu trnh th c hi n. Gi tr theo m c nh +. N u c mong mu n, b n c th thay i cc bi n PS1 v PS2. Khi ny c th s d ng b t k k t no nh p t bn phm, cng nh m t vi k t chuyn dng xc nh d ng d u nh c nh trong b ng 5.3 (ch a ra m t vi trong s chng lm v d , danh sch y xem trong trang man c a bash - g l nh man bash). B ng 5.3: K t xc nh d ng d u nh c Gi tr (k t qu thu c) Tn hi u m thanh (m ASCII 07) Th i gian d ng Th , thng, ngy, v d , Sun, Dec, 26. Tn my (hostname) n d u ch m u tin. Tn my y , v d teppi.phanthinh.com Th i gian hi n th i d ng 24 gi : HH:MM:SS (gi :pht:giy) Th i gian hi n th i d ng 12 gi : HH:MM:SS Th i gian hi n th i d ng 12 gi am/pm (sng/chi u) Tn ng i dng ch y h v , v d teppi Tn y c a th m c lm vi c hi n th i (b t u t g c), v d /home/teppi82/project/l4u Th m c hi n th i (khng c ng d n) K t #, n u h v c ch y b i ng i dng root, v k t $, n u h v c ch y b i ng i dng th ng. K t c m h tm nnn Dng m i (chuy n dng) Tn h v S hi n th i c a cu l nh D u g ch ng c (backslash) Sau k t ny t t c cc k t s khng c in ra. K t thc chu i cc k t khng c in ra. S th t c a l nh hi n th i trong l ch s cc cu l nh dng.

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

5.6 Tham bi n v cc bi n s . Mi tr ng c a h v

113

S c a l nh (s th t c a l nh ang th c hi n trong bu i lm vi c hi n th i) c th khc v i s c a chnh n trong danh sch l ch s cc cu l nh, b i v danh sch cn ch a c nh ng cu l nh c ghi l i trong t p tin l ch s . Sau khi gi tr c a bi n c h v c xong, s x y ra s thay th theo cc quy lu t m r ng trong b ng trn, ng th i cn x y ra s thay th trong tn cc cu l nh, trong cc bi u th c s h c, v s chia t (word splitting). Chng ta s ni n nh ng s thay th ny d i. V d , sau khi th c hi n l nh (v trong dng vn b n c kho ng tr ng, nn nh t thi t ph i c d u ngo c): [user/root]$ PS1="[\u@\h \W]\$" th trong d u nh c s c d u m ngo c vung, tn ng i dng, k hi u , tn my, kho ng tr ng, tn c a th m c hi n th i (khng c ng d n), d u ng ngo c vung, v k hi u $ (n u trn h v ang lm vi c ng i dng bnh th ng) hay #(n u h v ch y d i ng i dng root).

5.6.3

Bi n mi tr ng PATH

Cn m t bi n cng quan tr ng n a c tn PATH. Bi n ny a ra danh sch ng d n n cc th m c, m bash s tm ki m t p tin (tr ng h p ring l cc t p tin l nh) trong tr ng h p, ng d n y n t p tin khng c a ra. Cc th m c trong danh sch ny phn cch nhau b i d u hai ch m (:). Theo m c nh bi n mi tr ng PATH bao g m cc th m c bin sau: /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin, t c l bi n PATH trng nh th ny: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin. thm th m c vo danh sch ny, c n th c hi n cu l nh sau: [user]$ PATH=$PATH:new_path Khi tm ki m, h v l c l i cc th m c theo ng th t li t k trong bi n PATH. M t ch nh , c th a vo danh sch ny th m c hi n th i, khi thm vo bi n PATH m t d u ch m (.). Tuy nhin, y l i u khng khuyn lm v i l do b o m t: ng i c c c th t vo th m c dng chung m t chng trnh no , c cng tn v i m t trong s nh ng cu l nh th ng dng b i root, nhng th c hi n nh ng ch c nng khc hon ton ( c bi t nguy hi m n u th m c hi n th i ng u danh sch tm ki m).

5.6.4

Bi n mi tr ng IFS

Bi n ny xc nh k t (c m k t ) phn cch (Internal Field Separator), s d ng trong thao tc phn chia t ng khi bi n i dng l nh, m h v th c hi n tr c khi ch y m t cu l nh no (xem d i). Gi tr theo m c nh c a bi n ny <Kho ng_tr ng><Tab><K_t _hng_m i>. N u th g l nh echo $IFS, b n s nh n c m t ng c nhin nh .

114

Bash

5.6.5

Th m c hi n th i v th m c c nhn

Tn c a th m c hi n th i ghi trong bi n mi tr ng v i tn PWD, v gi tr c a bi n ny thay i sau m i l n ch y chng trnh cd (cng nh m i l n thay i th m c hi n th i theo b t k cch no, v d , qua Midnight Commander). Tng t nh v y tn y (g m c ng d n) c a th m c c nhn c a ng i dng, ch y ti n trnh cho, ghi trong bi n HOME.

5.6.6

Cu l nh export

Khi h v ch y m t chng trnh hay cu l nh no , n (h v ) cung c p cho chng m t ph n bi n mi tr ng. c th cung c p bi n mi tr ng cho ti n trnh ch y t h v , c n gn gi tr cho bi n ny v i l nh export, t c l thay v [user]$ name=value c n g: [user]$ export name=value Trong tr ng h p ny, t t c cc chng trnh ch y t h v (k c b n sao th hai c a chnh h v ) s c quy n truy c p t i cc bi n c gn nh v y, t c l s d ng gi tr c a chng qua tn.

5.7

Khai tri n bi u th c

Hay h v c cc cu l nh nh th no?. Khi h v nh n c m t dng l nh ny c n th c hi n, n (h v ) tr c khi ch y cu l nh th c hi n vi c phn tch ng php dng l nh ny (gi ng trong ngn ng , phn tch ch ng , v ng ). M t trong nh ng b c c a s phn tch ny l php m hay khai tri n bi u th c (expansion). Trong bash c b y lo i khai tri n bi u th c: Khai tri n d u ngo c (brace expansion); Thay th d u ng (tilde expansion); Php th cc tham bi n v bi n s ; Php th cc cu l nh; Php th s h c (th c hi n t tri sang ph i); Php chia t (word splitting); Khai tri n cc m u tn t p tin v th m c (pathname expansion). Cc thao tc ny c th c hi n theo ng th t li t k trn. Chng ta s xem xt chng theo t t ny.

5.7 Khai tri n bi u th c

115

5.7.1

Khai tri n d u ngo c

Khai tri n d u ngo c t t nh t minh h a trn v d . Gi thi t, chng ta c n t o th m c con trong m t th m c no , ho c thay i ng i dng s h u c a vi t p tin cng m t lc. C th th c hi n i u ny nh cc cu l nh sau: [user]$ mkdir /usr/src/unikey/{old,new,dist,bugs} [root]# chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex} Trong tr ng h p u, trong th m c /usr/src/unikey/ s t o ra cc th m c con old,new,dist, v bugs. Trong tr ng h p th hai, ng i dng s h u c a cc t p 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 T c l v i m i c p d u ngo c s t o ra vi dng ring r (s nh ng dng ny b ng s t n ng trong d u ngo c) b ng cch ghi thm vo tr c m i t trong ngo c nh ng g ng tr c d u ngo c, v ghi thm vo sau m i t ny nh ng g ng sau d u ngo c. M t v d khc: dng a{d,c,b}e khi khai tri n s thu c ba t ade ace abe. Khai tri n d u ngo c c th c hi n tr c cc d ng khai tri n khc trong dng l nh, hn n a t t c cc k t c bi t c trong dng l nh, k c nh ng k t n m trong d u ngo c, s c gi khng thay i (chng s c bin d ch cc b c pha sau).

5.7.2

Thay th d u ng (Tilde Expansion)

N u nh t b t u v i k t d u ng (), t t c cc k t ng tr c d u g ch cho u tin (hay t t c cc k t n u nh khng c d u g ch cho) s c hi u l tn ng i dng (login name). N u nh tn ny l m t dng r ng (t c l d u g ch cho ng ngay pha sau d u ng), th d u ng s c thay th b i gi tr c a bi n HOME. V n u gi tr c a bi n HOME khng c gn th d u ng s c thay th b i ng d n u n th m c c nhn c a ng i dng, m ch y h v . N u nh ngay sau d u ng (v tr c d u g ch cho) l m t t trng v i tn c a m t ng i dng h p php, th d u ng c ng v i tn ng i dng c thay th b i ng d n y n th m c c nhn c a ng i dng ny. N u nh t

116

Bash

ng sau d u ng khng ph i l tn c a m t ng i dng (v khng r ng), th t khng b thay i. N u nh sau d u ng l +, hay k hi u ny s c thay th b i tn u c a th m c hi n th i (t c l gi tr c a bi n PWD). N u d ng sau d u ng l -, th thay th gi tr c a bi n OLDPWD (th m c c).

5.7.3

Php th cc tham bi n v bi n s

K t $ c s d ng cho cc thao tc th tham bi n, th cc cu l nh v th cc bi u th c s h c. Bi u th c hay tn ng sau $ c th c a vo ngo c, khng nh t thi t, nhng r t ti n, v d u ngo c phn cch bi u th c v i cc t hay k t ng sau. Nh v y, g i gi tr c a tham bi n ni chung cng nh bi n mi tr ng ni ring trong dng l nh, c n t bi u th c d ng $parameter. D u ngo c ch c n thi t, n u tn c a tham bi n c ch a vi ch s , ho c khi theo sau tn cn c cc k t khc, m chng ta khng mu n h v hi u l m chng l m t ph n c a tn tham bi n. Trong t t c cc gi tr c a bi n s x y ra php th d u ng (), s khai tri n tham bi n v bi n s , php th cc cu l nh, php th cc bi u th c s h c, cng nh xa cc k t trch d n (xem d i). S phn chia t khng x y ra, tr tr ng h p $ (l i gi i thch xem b ng s 3). S khai tri n cc m u tn t p tin v th m c cng khng c th c hi n.

5.7.4

Php th cc cu l nh

Php th cc cu l nh l m t cng c r t m ng c a bash. ngha c a n n m ch thay th tn cc cu l nh b i k t qu th c hi n c a chng. C hai d ng php th l nh: $(command) v command N u ng d ng d ng th hai (ch y s d ng d u ngo c n ng c, phm cho n th ng n m trn phm Tab), th d u g ch ng c (\) trong d u ngo c s c ch c nng nh m t k t thng th ng, tr tr ng h p, khi ng sau n (d u g ch ng c) l m t $, , hay m t \. N u nh s d ng d ng $(command), th t t c cc k t ng trong ngo c t o thnh m t cu l nh, khng c k t no c ngha c bi t. N u php th cu l nh x y ra pha trong ngo c kp, th trong k t qu c a php th s khng th c hi n php phn chia t v s khai tri n m u tn t p tin v th m c.

5.7.5

Php th s h c (Arithmetic Expansion)

Php th s h c cho php tnh gi tr c a m t bi u th c s h c v thay th n (bi u th c) b i k t qu thu c. C hai d ng php th s h c: $[expression] ((expression)) Trong expression c hi u ( c bash c) nh khi ng trong ngo c kp, nhng nh ng d u ngo c kp trong expression l i c c nh m t k t th ng. Pha trong expression c th c hi n cc php th tham bi n v th cu l nh.

5.7 Khai tri n bi u th c

117

C php c a bi u th c expression tng t nh c php c a bi u th c s h c c a ngn ng C, c th hn v v n ny c th c trong ph n ARITHMETIC EVALUATION c a trang man c a bash. V d , cu l nh [user]$ echo $((2 + 3 * 5)) cho k t qu b ng 17. N u bi u th c khng chnh xc, bash s a ra thng bo l i.

5.7.6

Phn chia t (word splitting)

Sau khi th c hi n xong cc php th tham bi n, th l nh, v th cc bi u th c s h c, h v l i phn tch dng l nh m t l n n a (nhng d ng thu c sau cc php th ni trn) v th c hi n vi c phn chia t (word splitting). Thao tc ny n m ch , h v tm trong dng l nh t t c cc k t phn chia, xc nh b i bi n IFS (xem trn), v nh chia nh dng l nh thnh cc t ring r trong cc ch tng ng. N u gi tr c a IFS b ng m t dng tr ng, th vi c phn chia t s khng x y ra. N u trong dng l nh khng th c hi n php th no trong cc php th k trn, th phn chia t cng khng x y ra.

5.7.7

Khai tri n cc m u tn th m c v t p tin5

Php th tn ng d n v t p tin (Pathname expansion) s d ng ch nh m t m u nh g n m c th ch ra vi t p tin (hay th m c), tng ng v i m u ny. Sau khi phn chia t , v n u nh khng a ra ty ch n -f, th bash s tm ki m trong t ng t c a dng l nh cc k t *, ?, v [. N u tm th y t v i m t hay vi k t nh v y, th t ny s c xem nh m t m u, v c n thay th b i cc t trong danh sch ng d n, tng ng v i m u ny. N u nh khng tm th y tn tng ng v i m u, v bi n nullglob khng c a ra, th t s khng thay i, t c l cc k t c bi t b m t gi tr v hi u nh cc k t th ng. N u nh bi n ny c xc nh, m ng d n tng ng v i m u khng tm th y, th t s b xa kh i dng l nh. Cc k t dng t o m u c cc gi tr trong b ng 5.4. M u tn t p tin r t th ng xuyn s d ng trong dng l nh c ch a ls. Hy t ng t ng l b n mu n xem thng tin c a m t th m c, trong c ch a m t s l ng l n cc t p tin cc d ng, v d , t p tin hnh nh, phim v i d ng gif, jpeg, avi, v.v. . . . thu c thng tin ch c a t p tin d ng jpeg, c th dng cu l nh [user]$ ls *.jpg N u trong th m c c nhi u t p tin, m tn c a chng l cc s g m b n ch s (th m c /proc l m t v d +), th l nh sau ch a ra danh sch cc t p tin c s t 0500 n 0999: [user]$ ls -l 0[5-9]??
5

Pathname Expansion

118

Bash

K t *

[...]

B ng 5.4: Cc k t t o m u Quy lu t thay th Tng ng v i b t k dng k t no, k c dng r ng. V d , v*.txt s c thay th b i vnoss.txt, vnlinux.txt v vntex.txt (n u cc t p tin ny t n t i), v *.png s tng ng t t c cc t p tin c ph n m r ng png (t p tin h a hai chi u). Tng ng b t k m t k t n no. V d , m u file?.txt s c thay th b i cc tn t p sau file1.txt, file2.txt, file3.txt, v filea.txt (n u chng t n t i), nhng file23.txt th khng. Tng ng b t k k t no trong s cc k t n m trong d u ngo c vung ny. C p k t , phn cch nhau b i d u tr (-), v d c-f, bi u th m t dy; b t k k t no, theo t i n, n m gi a hai k t ny, k c hai k t t o ra dy (c v f trong v d ) cng tng ng v i m u. N u k t u tin trong ngo c vung l ! hay ^, th m u ( v tr ny) s tng ng t t c cc k t , khng c ch ra trong ngo c.

5.7.8

Xa cc k t c bi t

Sau khi lm xong t t c cc php th , cc k t \, v " cn l i trong dng l nh (chng c s d ng hu b gi tr c bi t c a cc k t khc) s b xa h t.

5.8

Shell m t ngn ng l p trnh

Nh ni trn, c th xy d ng b t k gi i thu t no cng c n c ton t ki m tra i u ki n. H v bash h tr cc ton t l a ch n if...then...else v case, cng nh cc ton t vng l p for, while, until, nh n (bash) tr thnh m t ngn ng l p trnh m nh.

5.8.1

Ton t if v test (ho c [ ])

C u trc c a ton t i u ki n c d ng thu g n nh sau: if list1 then list2 else list3 fi trong , list1, list2, v list3 l cc chu i cu l nh, phn cch nhau b i d u ph y v k t thc b i m t d u ch m ph y hay k t dng m i. Ngoi ra, cc chu i ny c th c a vo d u ngo c nh n: list. Ton t if ki m tra gi tr c tr l i b i cc cu l nh t list1. N u trong danh sch c vi cu l nh, th ki m tra gi tr c tr l i b i cu l nh cu i cng c a danh sch. N u gi tr ny b ng 0, th s th c hi n cc l nh t list2; cn n u gi tr ny khc khng, th s th c hi n nh ng l nh t list3. Gi tr

5.8 Shell m t ngn ng l p trnh

119

c tr l i b i ton t if nh v y, trng v i gi tr m chu i l nh th c hi n (list2 ho c list3) a ra. D ng y c a l nh if: if list then list [ elif list then list ] ... [ else list ] fi ( y d u ngo c vung ch c ngha l, nh ng g n m trong n, ngo c vung, khng nh t thi t ph i c). Bi u th c ng sau if hay elif th ng l cu l nh test, m c th c bi u th b i d u ngo c vung [ ]. L nh test th c hi n php tnh m t bi u th c no , v tr l i gi tr 0, n u bi u th c l ng, v 1 trong tr ng h p ng c l i. Bi u th c c a t i chng trnh test nh m t tham s c a chng trnh. Thay v g test expression c th a bi u th c expression vo ngo c vung: [ expression ] C n ch r ng, test v [ l hai tn c a c a cng m t chng trnh, ch khng ph i l m t php bi n ha th n thng no c a h v bash (ch l c php c a [ i h i ph i c d u ng ngo c). V cng c n ch r ng ch c a test trong c u trc if c th s d ng b t k chng trnh no. k t thc m c ny, chng ta a ra v d s d ng if: if [ -x /usr/bin/unicode_start ] ; then unicode_start else echo "hello world" fi V ton t test (hay [...]) c n i su hn.

5.8.2

Ton t test v i u ki n c a bi u th c

Bi u th c i u ki n, s d ng trong ton t test, c xy d ng trn c s ki m tra thu c tnh t p tin, so snh cc dng v cc so snh s h c thng th ng. Bi u th c ph c t p hn c t o ra t cc thao tc n v kp sau (nh ng vin g ch c s ): -a file ng n u t p tin c tn file t n t i. -b file ng n u file t n t i, v l m t t p tin thi t b kh i (block device) c bi t. -c file ng n u file t n t i, v l m t t p tin thi t b k t (charater device) c bi t. -d file ng n u file t n t i v l m t th m c.

120 -e file ng n u t p tin c tn file t n t i. -f file ng n u t p tin c tn file t n t i v l m t t p tin thng th ng. -g file ng n u t p tin c tn file t n t i v c t bit thay i nhm.

Bash

-h file hay -L file ng n u t p tin c tn file t n t i v l lin k t m m (lin k t t ng trng). -k file ng n u t p tin c tn file t n t i v c t bit sticky. -p file ng n u t p tin c tn file t n t i v l tn c a m t ng (knh FIFO). -p file ng n u t p tin c tn file t n t i v l tn c a m t ng (knh FIFO). -r file ng n u t p tin c tn file t n t i v c quy n c. -s file ng n u t p tin c tn file t n t i v kch th c l n hn khng. -t fd ng n u b m t c a t p tin (fd) m v ch ln terminal. -u file ng n u t p tin c tn file t n t i v c t bit thay i ng i dng. -w file ng n u t p tin c tn file t n t i v c quy n ghi. -x file ng n u t p tin c tn file t n t i v c quy n th c thi. -0 file ng, n u t p tin c tn file v ch s h u c a n l ng i dng m ID c hi u l c ch n. -G file ng, n u t p tin c tn file t n t i v thu c v nhm, xc nh b i ID nhm c hi u l c. -S file ng, n u t p tin c tn file t n t i v l socket. -N file ng, n u t p tin c tn file t n t i v thay i t l n c c cu i cng.

5.8 Shell m t ngn ng l p trnh file1 -nt file2 ng, n u t p tin file1 c th i gian s a i mu n hn file2.

121

file1 -ot file2 ng, n u t p tin file1 gi hn file1 (tr ng h p ng c l i c a tr ng h p trn). file1 -ef file2 ng, n u t p tin file1 v file2 c cng m t s thi t b v ch s m t inode. -o optname ng, n u ty ch n optname c a h v c kch ho t. Chi ti t xin xem trn trang man bash. -z string ng, n u di c a chu i string b ng khng. -n string ng, n u di c a chu i khc khng. string1 == string2 ng, n u hai chu i trng nhau. C th thay hai == b ng m t =. string1 !== string2 ng, n u hai chu i khng trng nhau. string1 < string2 ng, n u chu i string1, theo t i n, ng tr c chu i string2 ( i v i ngn ng hi n th i). string1 > string2 ng, n u chu i string1, theo t i n, ng sau chu i string2 ( i v i ngn ng hi n th i). arg1 OP arg2 y OP l m t trong cc php so snh s h c: -eq (b ng), -ne (khc, khng b ng), -lt (nh hn), -le (nh hn ho c b ng), -gt (l n hn), -ge (l n hn ho c b ng). ch cc tham s arg1 v arg2 c th s d ng cc s nguyn (m ho c dng). T cc bi u th c i u ki n c b n ny c th xy d ng cc bi u th c ph c t p theo mu n nh cc php lgc thng th ng PH NH, V (c ng) v HO C: !(expression) Php ph nh. ng, n u bi u th c sai. expression1 -a expression2 Php c ng lgic AND. ng n u c hai bi u th c u ng. expression1 -o expression2 Php lgc ho c OR. ng n u m t trong hai bi u th c ng.

122

Bash

5.8.3

Ton t case

D ng c a ton t case nh sau: case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac Cu l nh case u tin khai tri n t word, v so snh n (word) v i m i t trong m u pattern theo th t . Sau khi tm th y s trng nhau u tin th d ng vi c so snh l i, v th c hi n danh sch list cc cu l nh ng sau m u tm th y. Gi tr tr l i b i ton t ny, b ng 0, n u khng tm th y s trng nhau no. Trong tr ng h p ng c l i, tr l i gi tr m cu l nh cu i cng trong danh sch list a ra. V d s d ng ton t case sau l y t script /etc/rc.d/rc.sysinit (ki u t ch c kh i ng FreeBSD style): case "$UTC" in yes|true) CLOCKFLAGS="$CLOCKFLAGS -u"; CLOCKDEF="$CLOCKDEF (utc)"; ;; no|false) CLOCKFLAGS="$CLOCKFLAGS --localtime"; CLOCKDEF="$CLOCKDEF (localtime)"; ;; esac N u bi n s (UTC) nh n gi tr yes ho c true, th s th c hi n c p l nh th nh t, nh n gi tr no ho c false - c p th hai.

5.8.4

Ton t select

Ton t select cho php t ch c h i tho i v i ng i dng. N c d ng sau: select name [ in word; ] do list; done Lc u t m u word hnh thnh m t danh sch nh ng t tng ng v i m u ny. T p h p nh ng t ny c a vo knh thng bo l i tiu chu n, hn n a m i t c i km v i m t s th t . N u m u word b b qua (khng c trong ton t select), th s a vo cc tham bi n v tr (xem trn) theo m t cch tng t . Sau , d u nh c PS3 c a ra, v h v ch chu i nh p vo trn u vo tiu chu n. N u chu i nh p vo c ch a s , tng ng v i m t trong cc s hi n ra, th bi n name s c gn gi tr b ng t i km v i s ny. N u nh p vo m t dng r ng, th s v t s c hi n ra them m t l n n a. N u nh p vo b t k m t gi tr no khc, th bi n name s nh n gi tr b ng khng. Chu i m ng i dng nh p vo, c ghi l i trong bi n REPLY. Danh sch l nh list c th c hi n v i gi tr bi n name ch n. Sau y l m t script nh (xin hy g khng d u n u console c a b n cha h tr vi c hi n th Ti ng Vi t):

5.8 Shell m t ngn ng l p trnh


#!/bin/sh echo "B n thch dng OS no?" select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris" "QNX" "Other"; do break done echo "B n ch n $var"

123

Ghi o n trn vo m t t p tin (v d , select.sh), thay i t p tin thnh kh thi (v d , chmod 755 select.sh), v ch y (./select.sh). Trn mn hnh s hi n ra cu h i sau: B n thch dng OS no? 1) Linux 3) Free BSD 2) Gnu Hurd 4) MacOSX #?

5) Solaris 6) QNX

7) Other

Hy nh n m t trong 7 s a ra (t <Enter>), th s th y thng bo sau: B n ch n MacOSX

1 n 7). N u b n nh p 4 (nh n c

5.8.5

Ton t for

Ton t for lm vi c c khc m t cht so v i for trong cc ngn ng l p trnh thng th ng. Thay v tng ho c gi m gi tr c a m t bi n s no (ln ho c xu ng) m t n v sau m i vng l p, th n gn gi tr ti p theo trong danh sch t a s n cho bi n trong m i vng l p. Ni chung c u trc c d ng sau: for name in words do list done Quy lu t xy d ng danh sch l nh (list) gi ng trong ton t if. V d . Script sau t o cc t p tin fu1, fu2, v fu3: for a in 1 2 3 ; do touch fu$a done C th g ba dng ny trn m t dng l nh, k t qu thu c tng t script. D ng t ng qut c a ton t for nh sau: for name [ in word; ] do list ; done u tin cng x y ra s khai tri n t word theo quy lu t khai tri n bi u th c (xem trn). Sau bi n name l n l t c gn cc gi tr thu c t s khai tri n ny, v th c hi n danh sch l nh list trong m i l n nh v y. N u khng c in word, th danh sch l nh list c th c hi n m t l n cho m i tham bi n v tr a ra. v i

124

Bash

Trn Linux c chng trnh seq, ti p nh n hai s nguyn lm tham s , v a ra chu i t t c cc s n m gi a hai s ny (c ng thm c chng). Nh cu l nh ny c th s d ng for c a bash lm vi c nh ton t for trong cc ngn ng l p trnh thng th ng. lm c i u ny ch c n vi t vng l p for nh sau: for a in $( seq 1 6 ) ; do cat fu$a done Cu l nh (script) ny a ra mn hnh n i dung c a 10 t p tin (n u c): fu1, ..., fu10.

5.8.6

Ton t while v until

Ton t while lm vi c tng t nh if, nhng vng l p cc cu l nh trong list2 ch th c hi n khi i u ki n cn ng, v s ng ng khi i u ki n khng th a mn. C u trc c d ng 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 l i n i dung c a th m c c tn directory theo t ng pht n u th m c cn t n t i. Ton t until tng t nh ton t while: until list1 do list2 done i m khc bi t n m ch , s d ng gi tr ph nh c a i u ki n list1, t c l list2 th c hi n, n u cu l nh cu i cng trong danh sch list1 tr l i tr ng thi thot ra khc khng.

5.8.7

Cc hm s

H v bash cho php ng i dng t o cc hm s cho mnh. Hm s lm vi c v c s d ng gi ng nh cc cu l nh thng th ng c a h v , t c l chng ta c th t t o cc cu l nh m i. Hm s c c u trc nh sau: function name () { list }

5.8 Shell m t ngn ng l p trnh

125

Hn n a t function khng nh t thi t ph i c, name xc nh tn c a hm (dng g i hm), cn ph n thm c a hm s t o b i danh sch cc cu l nh list, n m gi a { v }. Cc cu l nh ny s c th c hi n m i khi tn name c g i (gi ng nh m t l nh thng th ng). C n ch r ng hm c th l qui, t c l g i hm s ngay trong ph n thn c a n. Hm s th c hi n trong ph m vi h v hi n th i: khng c ti n trnh m i no c ch y khi bin d ch hm s (khc v i vi c ch y script).

5.8.8

Tham s

Khi hm s c g i th c hi n, cc tham s c a hm s tr thnh cc tham bi n v tr (positional parameters, xem trn) trong th i gian th c hi n hm ny. Chng c t cc tn nh $n, trong n l s c a tham s m chng ta mu n s d ng. Vi c nh s b t u t 1, nh v y $1 l tham s u tin. Cng c th s d ng t t c cc tham s m t lc nh $*, v a ra s th t c a tham s nh $# Tham s v tr s 0 khng thay i. Trong khi th c hi n n u g p cu l nh n i tr return (trong ph n thn c a hm), th hm s s b d ng l i v quy n i u khi n c trao cho cu l nh ng sau hm. Khi th c hi n xong hm s , cc tham bi n v tr v tham bi n c bi t # s c tr l i cc gi tr m chng c tr c khi ch y hm.

5.8.9

Bi n n i b (local)

N u mu n t o m t tham bi n a phng, c th s d ng t kha local. C php a ra bi n a phng gi ng h t cc tham bi n khc, ch c i u c n ng sau t kha local: local name=value. D i y l m t v d hm s , th c hi n cng vi c c a l nh seq nh c n trn: seq() { local I=$1; while [ $2 != $I ]; do { echo -n "$I "; I=$(( $I + 1 )) }; done; echo $2 } C n ch n ty ch n -n c a echo, n (ty ch n) h y b vi c t o dng m i. M c d ty ch n ny khng c nhi u ngha v i m c ch chng ta mu n y, nhng s r t c ch trong cc hm s v i m c ch khc. Hm s tnh giai th a fact M t v d khc: fact() {

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

Bash

y l hm s giai th a, m t v d c a hm qui. Hy ch n s khai tri n s h c, v php th cc cu l nh.

5.9

Script c a h v v l nh source

Script c a h v ch l cc t p tin c ch a chu i l nh. Tng t hm s script c th c th c hi n nh m t cu l nh. C php truy c p n cc tham s cng nh hm s . Trong cc tr ng h p thng th ng khi ch y script s c m t ti n trnh m i c ch y. c th th c hi n script trong b n bash hi n th i, c n s d ng cu l nh source, hay m t d u ch m . ( ng ngha c a source). Trong tr ng h p ny script ch n gi n l m t tham s c a l nh ni trn. Cu l nh s c d ng: source filename [arguments] Cu l nh ny c v th c hi n cc cu l nh c trong t p tin filename trong mi tr ng hi n th i, v tr l i gi tr , xc nh b i cu l nh cu i cng c a filename. N u filename khng ch a d u g ch cho, th ng d n, li t k trong bi n s PATH, s c s d ng tm t p tin c tn filename. T p tin ny khng nh t thi t ph i kh thi (khng nh t thi t ph i c bit x). N u trong th m c, li t k trong PATH, khng tm th y t p tin c n, th s tm n (t p tin) trong th m c hi n th i. N u c cc tham s (a ra arguments, xem nh d ng cu l nh trn), th trong th i gian th c hi n script chng s thnh cc tham bi n v tr. N u khng c tham s , th tham bi n v tr khng thay i. Gi tr (tr ng thi), m l nh source tr l i, trng v i gi tr , tr l i b i cu l nh cu i cng trong script. N u khng cu l nh no c th c hi n, ho c khng tm th y t p tin filename, th tr ng thi thot b ng 0.

5.10

Cu l nh sh

B n lun lun c th ch y m t b n sao c a h v bash nh cu l nh bash hay sh. Khi ny c th b t b n sao ny ch y m t script no , n u a tn c a script nh m t tham s cho l nh bash. Nh v y, th c hi n script myscript c n a cu l nh sh myscript. N u xem n i dung c a m t t p tin script no (nh ng t p tin nh v y c r t nhi u trn h th ng), b n s th y dng u tin c d ng sau: #!/bin/sh. i u ny c ngha l, khi chng ta g i script th c hi n

5.10 Cu l nh sh

127

nh m t l nh thng th ng, th /bin/sh s gip chng ta thu x p m i th . C th thay th dng ny b i lin k t n b t k m t chng trnh no, m s c t p tin v th c hi n cc cu l nh tng ng. V d , script trn ngn ng Perl b t u b i dng c d ng !/bin/perl. M t ch khc l k t # dng vi t l i ch thch trong script. T t c nh ng g ng sau k t ny n cu i dng s c coi l ch thch v b bash b qua (t c l h v s khng xem dng ny l cu l nh). N u b n mu n ki m ch ng l i tc d ng c a k t ny, th hy nh p vo dng l nh m t cu l nh b t k, v t tr c n (cu l nh) k t #, v d # ls, b n s th y r ng h v b qua cu l nh ny. Chng ta s d ng bi h c ng n g n v bash t i y. T t nhin, cn r t nhi u v n quan tr ng c n xem xt nhng n m ngoi ph m vi c a bi h c, v d , qu n l ti n trnh, l ch s cu l nh, m t v th vi n readline, tn hi u, v.v. . . Cc b n s tm th y thng tin c n thi t trong cc cu n h ng d n khc ho c trn trang man bash.

Chng 6 S d ng Midnight Commander


M i th u c vi t ra cc nh l p trnh Nga.
Trong chng ny chng ta s h c cch s d ng chng trnh Midnight Commander, m t trnh qu n l t p tin m nh. Sau khi c xong chng ny b n c s c th s d ng cc t h p phm cng nh giao di n c a Midnight Commander th c hi n r t nhi u cng vi c c lin quan n h th ng t p tin t nh b n n ng nh c. u tin chng ta hy xem xt cch ci t chng trnh ny . . .

6.1

Ci t chng trnh Midnight Commander

M c d i u khi n h th ng t p tin ni chung v lm vi c v i cc t p tin ni ring c th s d ng cc cu l nh c a h i u hnh, nh pwd, ls, cd, mv, mkdir, rmdir, cp, rm, cat, more v.v . . . nhng s thu n ti n hn khi s d ng chng trnh Midnight Commander. Midnight Commander (hay th ng rt g n thnh mc) l chng trnh cho php xem c u trc cy th m c v th c hi n nh ng thao tc i u khi n h th ng t p tin. Ni cch khc, y l trnh qu n l t p tin (File Manager). N u nh b n c c kinh nghi m lm vi c v i Norton Commander (nc) trong MS-DOS hay v i FAR trong Windows, th s lm vi c v i mc m t cch d dng. B i v th m ch nh ng t h p phm nng chnh c a chng cng trng nhau. Trong tr ng h p ny, c th lm vi c v i Midnight Commander b n c ch c n xem nhanh nh ng n i dung pha d i. Tc gi xin c l i khuyn i v i nh ng ai cn xa l v i NC hay FAR (n u nh c?): hy ch c v th c hnh chm ch , v Midnight Commander s gip r t nhi u trong khi lm vi c v i h i u hnh.
Ghi ch: 1. Ki n th c trong chng ny c vi t s d ng cho phin b n 4.6.1-pre3, m c d c th p d ng cho nh ng phin b n khc. 2. Ki n th c a ra ch p d ng c hon ton trong tr ng h p chng trnh ch y t knh giao tc (console), hay cn g i l giao di n text. Khi lm vi c v i chng trnh qua trnh gi l p (emulator) c a terminal trong giao di n h a, v d xterm, rxvt, v.v. . . th m t s m t ho t ng c a chng trnh s khng cn chnh xc n a, v vi c nh n phm b v h a chi m l y. S khng tng ng nh v y th ng g p nh ng ch ni v phm nng.

6.2 V ngoi c a mn hnh Midnight Commander

129

Trong ph n l n cc b n phn ph i chng trnh Midnight Commander khng c t ng ci t cng v i h th ng. Nhng cc gi (rpm, deb, tgz . . . ) c a Midnight Commander s c trn a, v vi c ci t t cc gi ny l khng kh khn g. V b i v chng trnh ny s lm cho b n c d th hn, tc gi r t mu n r ng chng trnh s c ci t ngay sau khi ci xong h i u hnh.1

6.2

V ngoi c a mn hnh Midnight Commander

kh i ng Midnight Commander, c n g vo dng l nh shell cu l nh mc v nh n <Enter>. N u ng d ng khng ch y, th c n tm xem t p tin chng trnh mc n m u (c th dng cu l nh find / -name mc -type f), sau g vo dng l nh ng d n y t i t p tin , v d , trn my tc gi l /usr/bin/mc. Sau khi ch y chng trnh, b n c s th y mn hnh mu da tr i 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 di n ti ng Vi t c a Midnight Commander G n nh ton b khng gian mn hnh khi lm vi c v i Midnight Commander b chi m b i hai b ng2 hi n th danh sch t p tin c a hai th m c. pha trn hai b ng ny l trnh n (th c n). C th chuy n n trnh n ch n cc l nh c trong b ng phm <F9> ho c nh phm chu t (n u nh sau khi kh i
Ngoi ra ng i d ch cu n sch ny cng d ch giao di n c a Midnight Commander ra ti ng Vi t. V th n u mu n b n c th s d ng giao di n ti ng m c a Midnight Commander. 2 panel
1

130

S d ng Midnight Commander

Hnh 6.2: V ngoi c a mn hnh Midnight Commander ng mc b n c khng nhn th y dng trnh n u, th cng ng bu n, v c hi n th trnh n hay khng c xc nh b i c u hnh chng trnh). Dng d i cng l dy cc nt, m i nt tng ng v i m t phm ch c nng <F1> <F10>. C th coi dng ny l l i mch n c v cch s d ng nh ng phm ch c nng ni, v cn c th ch y tr c ti p cc cu l nh tng ng b ng cch nh n chu t vo cc nt ny. Vi c hi n th cc nt c th t t i, n u nh b n c mu n ti t ki m khng gian mn hnh (cch lm s c sau ny khi chng ta ni v c u hnh chng trnh). S ti t ki m c hai l do. Th nh t, b n c s nhanh chng nh c cng d ng c a 10 phm ny, v l i mch n c s tr thnh khng c n thi t (v vi c nh n chu t ln cc nt khng ph i lc no cng thu n ti n). Th hai, th m ch n u b n c khng nh ph i dng phm no th c hi n cng vi c mong mu n, th v n c th s d ng trnh n File (T p tin) trong trnh n chnh c a chng trnh (ch c n nh r ng, phm chuy n vo trnh n chnh l <F9>). Qua trnh n File (T p tin) c th th c hi n b t k thao tc no m thng th ng ph i nh cc phm ch c nng, ngo i tr <F1> v <F9>. Dng th hai t d i ln l dng l nh c a chng trnh Midnight Commander (hay chnh xc hn l dng l nh c a shell hi n th i). y c th nh p v th c hi n b t k cu l nh no c a h th ng. pha trn dng ny (nhng pha d i cc b ng) c th hi n th nh ng l i khuyn c ch (hint4s). Cng c th b i dng l i khuyn ny khi i u ch nh c u hnh c a chng trnh. M i b ng g m ph n u, danh sch t p tin c a m t th m c no v dng tr ng thi nh (mini-status, c th khng hi n th n u t trong c u hnh chng trnh). Trong ph n u c a m i b ng l ng d n y n th m c c n i dung c hi n th , v ng th i cn c ba nt <, v v > s d ng i u khi n chng trnh b ng chu t (nh ng nt ny khng lm vi c n u nh b n c ch y mc trong trnh gi t o (emulator) terminal). Trn dng tr ng thi nh c hi n th m t vi d li u v t p tin hay th m c ang c thanh chi u sng ch n (v d , kch th c t p tin v quy n truy c p).

6.3 Tr gip

131

Ch m t trong hai b ng l hi n th i (ho t ng). B ng hi n th i c thanh chi u sng tn th m c ph n u v thanh chi u sng m t trong nh ng dng c a b ng . Tng t , trong shell ch y chng trnh Midnight Commander, th m c hi n th i l th m c c hi n th trong b ng ho t ng. H u h t cc thao tc c th c hi n trong th m c ny. Cc thao tc nh sao chp (<F5>) hay di chuy n (<F6>) t p tin s d ng th m c c hi n th trong b ng th hai lm th m c ch n (s sao chp hay di chuy n n th m c ny). Trong b ng ho t ng m t dng c chi u sng. Thanh chi u sng c th di chuy n nh cc phm i u khi n vi c di chuy n. Chng trnh xem t p tin n i tr, chng trnh xem l i mch n c v chng trnh xem th m c s d ng cng m t m chng trnh i u khi n vi c di chuy n. V th vi c di chuy n s d ng m t b cc t h p phm (nhng trong m i chng trnh con c cc t h p phm ch p d ng trong n i b m thi). Xin a ra m t b ng ng n g n li t k cc t h p phm dng chung i u khi n vi c di chuy n. B ng 6.1: Cc t h p phm di chuy n dng chung
Phm <> ho c <Ctrl>+<P> <> ho c <Ctrl>+<N> <Page Up> ho c <Alt>+<V> <Page Down> ho c <Ctrl>+<V> <Home> <End> Di chuy n th c hi n Di chuy n tr l i (ln trn) m t dng Di chuy n v pha tr c (xu ng d i) m t dng Quay l i m t trang Ti n v tr c m t trang Quay v dng u Chuy n n dng cu i cng

6.3

Tr gip

Khi lm vi c v i chng trnh Midnight Commander, c th xem tr gip vo b t k lc no nh phm <F1>. Tr gip c t ch c d i d ng siu vn b n, t c l trong vn b n c c nh ng lin k t n nh ng ph n khc. Nh ng lin k t c nh d u b i n n mu xanh nh t . Lin k t c ch n hi n th i s c n n mu xanh m . di chuy n trong c a s xem tr gip c th s d ng nh ng phm mi tn ho c chu t. Ngoi nh ng t h p phm di chuy n ni chung trong b ng 6.1, chng trnh xem tr gip cn ch p nh n nh ng t h p phm s d ng trong chng trnh con dng xem t p tin: B ng 6.2: Di chuy n trong trnh xem t p tin Phm Di chuy n th c hi n <B> ho c <Ctrl>+<B> ho c <Ctrl>+<H> Li l i m t trang ho c <Backspace> ho c <Delete> <D u cch> Ti n t i m t trang <U> ( <D> ) Li l i (ti n t i) n a trang <G> (<Shift>+<G>) i t i u (cu i) danh sch

132

S d ng Midnight Commander

Ngoi nh ng t h p phm ch ra cn c th s d ng nh ng t h p ch lm vi c khi xem tr gip (chng c li t k trong b ng 6.3). B ng 6.3: Di chuy n khi xem tr gip Di chuy n th c hi n i t i lin k t ti p theo Quay l i lin k t tr c i t i lin k t ti p theo ho c ko ln m t dng Quay l i lin k t tr c ho c ko xu ng m t dng M trang m lin k t hi n th i ch t i M trang tr gip v a xem tr c trang hi n th i Tr gip s d ng c a b n thn tr gip Chuy n t i ph n ti p theo c a tr gip Chuy n t i ph n n m tr c c a tr gip Chuy n t i m c l c c a tr gip Thot kh i tr gip

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

B n c th s d ng phm tr ng (space) chuy n t i trang tr gip ti p theo v phm <B> quay l i m t trang. Chng trnh ghi nh th t di chuy n theo lin k t v cho php tr l i ph n xem tr c b ng phm <L>. N u nh c h tr chu t (xem ph n 6.4), th c th s d ng chu t di chuy n. Nh n chu t tri ln lin k t chuy n t i vn b n m lin k t ny ch t i. Chu t ph i s d ng quay l i ph n xem tr c .

6.4

S d ng chu t

Chng trnh Midnight Commander c h tr chu t. Tnh nng ny c th c hi n n u c ch y driver gpm khng ph thu c vo ni ng i dng lm vi c l trn knh giao tc Linux hay ch y Midnight Commander trn xterm (ho c th m ch s d ng k t n i t xa qua telnet, rlogin hay ssh). B ng cch nh n nt chu t tri s c th di chuy n dng chi u sng ln b t k t p tin no trong cc b ng. nh d u (ch n) t p tin no , ch c n nh n nt chu t ph i ln tn c a t p tin , khi ny tn t p tin s c mu khc (theo m c nh l mu vng ). b nh d u th cng ch c n s d ng nt chu t ph i . Nh n kp chu t tri ln tn t p tin th c hi n t p tin (n u y l m t chng trnh), ho c ch y chng trnh c kh nng v c gn c t p tin ny. V d chng trnh xv c gn m cc t p tin hnh n *.jpg, th khi nh n kp chu t tri ln t p tin screenshot.jpg, chng trnh xv s cho chng ta th y t p tin screenshot.jpg trng ra sao. Nh n chu t (b t k nt no) ln cc nt ch c nng (cc nt F1-F10 d i cng) cng ng th i ch y chng trnh tng ng v i nt . Nh n chu t (b t k nt no) ln trnh n trn cng s m ra (ni ng hn l m xu ng d i) trnh n con c a n. N u nh n chu t ln khung trn cng c a b ng c m t danh sch cc t p tin r t di, th s th c hi n di chuy n di 1 c t t p tin v pha u danh sch. Nh n

6.5 i u khi n cc b ng

133

chu t ln khung n m d i c a b ng, th tng ng s th c hi n di chuy n di 1 c t t p tin v pha cu i danh sch. Phng php di chuy n ny cng lm vi c khi xem tr gip v xem danh sch Cy th m c N u ch y mc v i h tr chu t th ng i dng c th th c hi n cc thao tc sao chp v dn vn b n khi gi phm <Shift>. lm c i u ny, b n c n nh n v gi phm <Shift>, ch n o n vn b n c n thi t b ng cch ko chu t, sau th phm <Shift> ra, a con tr n ni c n dn, r i l i nh n v gi phm <Shift> trong khi nh n chu t ph i. C n ch r ng tnh nng ny khng lm vi c trong cc trnh gi l p terminal nh xterm.

6.5

i u khi n cc b ng

Cc b ng c a Midnight Commander thng th ng hi n th nh ng g c trong th m c c a h th ng t p tin (v th th ng c g i l b ng th m c). Tuy nhin c th hi n th nh ng thng tin khc trn b ng. Trong ph n ny s ni n cch thay i d ng c a b ng hay cch hi n th thng tin trn b ng.

6.5.1

D ng danh sch t p tin

D ng b ng trn hi n th danh sch t p tin v th m c con c th thay i qua cc cu l nh c a th c n m ra khi ch n B ng tri (Left) v B ng ph i (Right). N u b n c mu n thay i d ng hi n th danh sch t p tin, th c th s d ng cu l nh D ng danh sch... (Listing mode...) c a b ng (tri ho c ph i) tng ng. C 4 kh nng ch n: y (Full), Thu g n (Brief), M r ng (Long) v Ng i dng t xc nh (User).

Hnh 6.3: H p tho i ch n nh d ng hi n th nh d ng y (Full) hi n th tn t p tin, kch th c c a n v th i gian s a i g n nh t. nh d ng Thu g n (Brief) ch hi n th tn t p tin, do trn m i b ng c hai c t v hi n th c s t p tin nhi u g p i.

134

S d ng Midnight Commander nh d ng M r ng (Long) hi n th t p tin nh khi th c hi n cu l nh ls -l. V i nh d ng ny m t b ng chi m h t mn hnh. N u ch n nh d ng Ng i dng t xc nh (User), th ng i dng c n a ra d ng hi n th t ch n c a mnh.

Khi t a ra nh d ng, th u tin c n ch ra kch th c c a b ng: half (m t n a mn hnh) ho c full (ton mn hnh). Sau kch th c b ng c th ch ra l trn b ng ph i c hai c t b ng cch thm s 2 vo dng nh d ng. Ti p theo c n li t k tn nh ng vng hi n th cng v i chi u r ng c a vng. C th s d ng nh ng tn vng sau: name tn t p tin. size kch th c t p tin. bsize kch th c d ng khc, khi ch a ra kch th c t p tin, cn i v i th m c con th ch a ra dng ch SUB-DIR ho c UPDIR. type hi n th d ng t p tin (m t k t ). K t nh ng gi tr m cu l nh ls -F a ra: * (asterisk) cho t p tin chng trnh. / (slash) cho th m c. @ (at-sign) cho lin k t (links). = (gi u b ng) cho cc sockets. - (g ch ngang) cho cc thi t b trao i theo byte. + (d u c ng) cho cc thi t b trao i theo block. | (pipe, ng) cho cc t p tin d ng FIFO. (d u sng) cho cc lin k t t ng trng n th m c. ! (d u ch m than) cho cc lin k t t ng trng h ng (stalled) (lin k t ch n t p tin khng cn n a). mtime th i gian s a i t p tin cu i cng. atime th i gian truy c p n t p tin l n cu i. ctime th i gian t o t p tin. perm dng ch ra quy n truy c p n t p tin. mode quy n truy c p d ng s 8bit. ny c th l m t trong

nlink s lin k t n t p tin. ngid ch s xc nh c a nhm (GID). nuid ch s xc nh c a ng i dng (UID). owner ch s h u t p tin.

6.5 i u khi n cc b ng group nhm s h u t p tin. inode ch m c inode c a t p tin.

135

ng th i cn c th s d ng nh ng tn vng sau t ch c vi c hi n th thng tin ra mn hnh: space chn kho ng tr ng. mark chn d u sao * (asterisk) n u t p tin c ch n, ho c kho ng tr ng n u ng c l i. | chn ng th ng ng. c th xc nh chnh xc chi u r ng c a m t vng, c n thm d u hai ch m :, sau ch ra s v tr (k t ) c n gi cho vng ny. N u sau s v tr c t d u +, th s s c hi u l chi u r ng nh nh t c a vng, v n u mn hnh cho php th vng s c m r ng. V d , nh d ng y (Full) th c ch t c xc nh b i dng: half type,name,|,size,|,mtime cn nh d ng M r ng (Long) th xc nh b i:
full perm, space, nlink, space, owner, space, group, space, size, space, mtime, space, name

D i y l v d d ng hi n th do ng i dng a ra: half name,|,size:7,|,type,mode:3 Hi n th danh sch t p tin trn m i b ng cn c th s p x p theo m t trong 8 cch: Theo tn Theo ph n m r ng Theo kch th c t p tin Theo th i gian s a i Theo th i gian truy c p l n cu i Theo ch m c inode Khng s p x p. C th ch n cch s p x p b ng cch ch n cu l nh Th t s p x p (Sort order...) trong trnh n tng ng c a m i b ng. Khi s hi n ra m t h p tho i (hnh 6.4) ngoi vi c cho php ch n cch s p x p cn cho php ch n s p x p theo th t ng c l i (nh d u tu ch n Ng c l i (Reverse)), hay s p x p c tnh n ki u ch th ng ch hoa hay khng (ty ch n Tnh n ki u ch (case sensitive)).

136

S d ng Midnight Commander

Hnh 6.4: H p tho i s p x p Theo m c nh cc th m c con c hi n th u danh sch, nhng cng c th thay i n u nh d u ty ch n Tr n l n t t c t p tin (Mix all files) c a cu l nh C u hnh... (Configuration...) th c n C u hnh (Option). Ng i dng cng c th ch n ch hi n th trn b ng nh ng t p tin tng ng v i m t m u no . Cu l nh L c t p tin... (Filter...) trong th c n c a m i b ng cho php a ra nh ng m u m tn t p tin s hi n th tng ng v i n (v d dng m u *.tar.gz ch hi n th nh ng t p tin nn tar.gz). Tn c a th m c con v ng d n n th m c con lun lun c hi n th khng ph thu c vo m u a ra. Trong th c n c a m i b ng cn c cu l nh Qut l i (Rescan) (tng ng v i cu l nh C p nh t (Refresh) trong cc chng trnh khc). Cu l nh Qut l i (phm nng <Ctrl>+<R>) c p nh t l i danh sch t p tin hi n th trn b ng. i u ny c ch khi nh ng ti n trnh khc t o hay xa cc t p tin.

6.5.2

Nh ng ch hi n th khc

Ngoi vi c a ra nh d ng hi n th danh sch t p tin trn b ng, cn c th a b t k b ng no vo m t trong nh ng ch sau: Ch Thng tin (Info). Trong ch ny (hnh 6.5) trn b ng a ra thng tin v t p tin c chi u sng ( c ch n) trn b ng bn c nh, v h th ng t p tin hi n th i (d ng, kch th c ch tr ng v t ng s ch m c inode cn tr ng). Ch Cy th m c (Tree). Trong ch ny trn m t b ng hi n th cy th m c d ng ho (hnh 6.6). Ch ny tng t nh khi ng i dng ch n cu l nh Cy th m c (Directory Tree) t th c n Cu l nh (Command), nh cu l nh sau hi n th cy th m c m t c a s ring. Ch Xem nhanh (Quick View). Trong ch ny b ng s hi n th n i dung c a t p tin c chi u sng ( c ch n) trn b ng bn c nh. V d trn hnh 6.7 l khi dng ch ny xem nhanh n i dung t p tin HISTORY c a gi chng trnh mediawiki.

6.5 i u khi n cc b ng

137

Hnh 6.5: Ch thng tin ra b ng xem nhanh n i dung t p tin s d ng chng trnh xem t p tin c s n trong mc, v th n u dng phm <Tab> chuy n sang b ng xem nhanh, th ng i dng c th s d ng m i cu l nh i u khi n vi c xem, v d , nh ng phm li t k trong b ng 6.1 v b ng 6.2. Ch K t n i FTP... (FTP link...) v K t n i Shell... (Shell link...). Hai ch ny ch khc ch s d ng hi n th danh sch th m c n m trn my xa. Cn l i m i th k c nh d ng hi n th thng tin u tng t nh nh ng g s d ng cho cc th m c n i b . N u ng i dng mu n bi t thm v cch s d ng nh ng ch ny, xin hy xem tr gip c a mc.

6.5.3

Cc t h p phm i u khi n b ng

i u khi n ch lm vi c c a b ng c th s d ng cc cu l nh c a trnh n ni t i trn, nhng s thu n ti n hn n u s d ng cc t h p phm i u khi n. <Tab> ho c <Ctrl>+<i>. Thay i b ng hi n th i (ho t ng). Dng chi u sng s chuy n t b ng ang l hi n th i sang b ng khc v nh v y b ng sau s tr thnh hin th i. <Alt>+<G> ho c <Alt>+<R> ho c <Alt>+<J>. S d ng di chuy n dng chi u sng tng ng ln t p tin trn u, n m gi a ho c d i cng trong s nh ng t p tin ang hi n th (ang th y) trn b ng. <Alt>+<T>. Chuy n i vng quanh gi a cc nh d ng hi n th danh sch t p tin c a th m c hi n th i. Nh t h p phm ny c th chuy n i nhanh

138

S d ng Midnight Commander

Hnh 6.6: Ch cy th m c chng t ch hi n th M r ng (long) sang Thu g n hay ch do ng i dng xc nh. <Ctrl>+<\>. Hi n th danh sch th m c th ng dng v chuy n t i th m c l a ch n. <Home> ho c <Alt>+<<>. Chuy n dng chi u sng t i v tr u tin c a danh sch t p tin. <End> ho c <Alt>+<>>. Chuy n dng chi u sng t i v tr cu i cng c a danh sch t p tin. <Alt>+<O>. N u trong b ng hi n th i tn th m c c chi u sng, cn trn b ng cn l i hi n th danh sch t p tin, th b ng th hai s chuy n vo ch hi n th cc t p tin c a th m c c chi u sng. N u trong b ng hi n th i dng chi u sng l tn t p tin, th trn b ng th hai s hi n th n i dung c a th m c m c a t p tin . <Ctrl>+<PageUp>, <Ctrl>+<PageDown>. Ch khi mc c ch y d i knh giao tc (console) c a Linux: th c hi n tng ng vi c chuy n (chdir) t i th m c m (..) ho c t i th m c ang c chi u sng. <Alt>+<Y>. Chuy n t i th m c ngay tr c trong s nh ng th m c xem. Tng ng v i vi c nh n chu t ln k t < gc trn c a b ng. <Alt>+<U>. Chuy n t i th m c ngay sau trong s nh ng th m c xem. Tng ng v i vi c nh n chu t ln k t >.

6.6 Cc phm ch c nng v th c n T p tin

139

Hnh 6.7: Ch xem nhanh

6.6

Cc phm ch c nng v th c n T p tin

T tr c n gi chng ta m i xem xt n v ngoi c a mn hnh Midnight Commander v cch thay i v ngoi ny. By gi n lc c n bi t cch lm vi c v i t p tin nh chng trnh c ch ny. R t nhi u thao tc th ng dng trong Midnight Commander c th c hi n qua cc phm ch c nng <F1> <F10>. Xin a ra m t b ng 6.4 t ng h p nh ng thao tc ny. Nh ng thao tc (l nh) li t k trn khng ch c th th c hi n b ng cch nh n phm ch c nng tng ng m cn b ng cch nh n chu t ln cc nt tng ng cng c a mn hnh hay b ng cc l nh tng ng c a trnh n T p tin (File). Tr c khi th c hi n m t thao tc no ch ra trong b ng 6.4 hay l nh trong trnh n, c n ch n nh ng t p tin hay nhm t p tin th c hi n thao tc ln. ch n m t t p tin th ch c n t dng chi u sng trong b ng hi n th i ln n (t t nhin u tin c n chuy n t i th m c tng ng). N u mu n th c hi n m t thao tc no ln nhi u t p tin m t lc, th c n nh d u nhm t p tin ny. nh d u t p tin t d i dng chi u sng, hy dng phm <Insert> ho c t h p phm <Ctrl>+<T>. Khi ny tn c a t p tin s c mu khc. b ch n t p tin th cng s d ng t h p phm nh khi ch n. Cn c th ch n nhm t p tin cn c th dng cu l nh Ch n nhm c a trnh n T p tin (File), phm nng cho cu l nh ny l phm d u c ng <+>. Cu l nh ny c dng nh d u nhm t p tin theo m u tng ng a ra. Khi ch y cu l nh Midnight Commander s a ra h p tho i dng nh p bi u th c chnh quy xc nh tn c a nhm t p tin mu n nh d u. N u c b t ty ch n M u d ng shell (xem trang 155, th c n vi t bi u th c chnh quy theo

140

S d ng Midnight Commander

B ng 6.4: Cc phm ch c nng Phm F# Hnh ng th c hi n <F1> G i tr gip ty thu c vo tnh hu ng <F2> G i th c n do ng i dng t o ra <F3> Xem t p tin t d i dng chi u sng c a b ng hi n th i <F4> G i trnh so n th o trong s a t p tin t d i dng chi u sng c a b ng hi n th i <F5> Sao chp t p tin hay nhm t p tin c nh d u t th m c c a b ng hi n th i sang th m c c a b ng cn l i. Khi sao chp m t t p tin th cn c th i tn c a t p tin ny3 . ng th i trong h p tho i hi n ra cn c th ch ra tn c a th m c mu n sao chp cc t p tin n ( khi c n c th sao chp n th m c khc v i th m c hi n ra trn b ng th hai). <F6> Di chuy n t p tin hay nhm t p tin c nh d u t th m c c a b ng hi n th i sang th m c c a b ng cn l i. Cng gi ng nh khi sao chp, c th thay i tn c a t p tin hay th m c di chuy n n. <F7> T o th m c con trong th m c hi n th trn b ng hi n th i <F8> Xa t p tin (th m c con) hay nhm cc t p tin nh d u <F9> G i trnh n chnh (hi n th pha trn cc b ng) <F10> Thot kh i chng trnh cc quy lu t nh trong shell (xem chng 5. Cn n u t t ty ch n ny, th s nh d u t p tin c th c hi n theo quy lu t c a cc bi u th c chnh quy thng th ng (hy xem h ng d n man ed). N u bi u th c b t u ho c k t thc b ng d u g ch cho (/), th s nh d u cc th m c ch khng ph i t p tin. Thao tc B ch n (phm t t l phm d u tr <> ho c g ch cho ng c <\>) l thao tc ng c l i i v i thao tc ch n nhm t p tin v s d ng cng cc quy lu t vi t m u nh khi ch n. Thao tc ny dng b nh d u kh i nhm t p tin ch n. Cn thao tc Ch n ng c l i (phm <*>) dng b ch n nh ng t p tin ang ch n, ng th i ch n nh ng t p tin cn l i c a th m c hi n th i. N u th m c hi n th i c nhi u t p tin (do khng th y h t trn b ng), th tr c khi nh d u t p tin c n tm n t p tin . Trong nh ng tr ng h p cc t h p phm <Ctrl>+<S> v <Alt>+<S> s c ch. Sau khi nh n m t trong nh ng t h p phm ny th mc s ch y ch tm ki m tn t p tin trong th m c hi n th i theo nh ng k t u tin c a tn. Trong ch ny nh ng k t nh p vo s khng hi n th dng l nh m hi n th dng tm ki m. N u ch Hi n tr ng thi mini (Show mini-status) c b t, th dng tm ki m ny s hi n th trn ch c a dng tr ng thi mini. Khi ny trong qu trnh nh p k t , dng chi u sng s di chuy n t i t p tin ti p theo c tn b t u b ng nh ng k t nh p vo. C th dng cc phm <Backspace> ho c <Del> s a l i. N u nh n <Ctrl>+<S> thm m t l n n a, th s tm ki m t p tin tng ng ti p theo. C n ch l n u trong th m c hi n th i khng c t p tin v i tn tng ng, th nh ng k t nh p vo s khng hi n th trn dng tr ng thi mini, t c l b n s

6.7 M u t p tin khi sao chp ho c i tn

141

khng th tm th y t p tin mu n tm. Sau khi ch n v nh d u t p tin lm vi c ch c n nh n m t trong cc phm ch c nng th c hi n thao tc c n thi t v i t p tin, v d , sao chp, di chuy n hay xa. So v i dng l nh th cc thao tc xem v so n th o t p tin trong Midnight Commander thu n ti n hn, do trong Midnight Commander c tch h p s n cc chng trnh cho nh ng vi c ny. Nhng trong ph n ny chng ta s khng xem n trnh so n th o c s n, m dnh n chng ni v lm vi c v i cc t p tin vn b n. Nh ni t tr c, khng nh t thi t ph i s d ng cc phm ch c nng g i cc cu l nh tng ng v i chng. B t k cu l nh no trong s ny cng c th th c hi n qua trnh n T p tin (File). Ngoi cc cu l nh g n v i cc phm ch c nng, trnh n T p tin cn ch a cc cu l nh sau (trong ngo c l cc phm t t tng ng). chmod (<Ctrl>+<X>,<C>). Cho php thay i quy n truy c p n (cc) t p tin c ch n. chown (<Ctrl>+<X>,<O>). Thay i ch s h u b ng cu l nh chown. chown nng cao. Cho php thay i quy n truy c p v s h u t p tin. Lin k t c ng (<Ctrl>+<X>,<L>). T o lin k t c ng n t p tin hi n th i. Lin k t m m (<Ctrl>+<X>,<S>). T o lin k t m m n t p tin hi n th i. Chng trnh Midnight Commander cho bi t lin k t m m b ng k hi u @ ng tr c tn c a lin k t (tr lin k t n th m c con c nh d u b i d u sng ). N u trn mn hnh c a ra dng tr ng thi mini (dng ty ch n Hi n tr ng thi mini), th trn dng ny s hi n ln tn c a t p tin m lin k t ch n. cd nhanh (<Alt>+<C>). Hy s d ng cu l nh ny n u bi t ng d n y n th m c b n c n (v mu n chuy n thnh th m c hi n th i). Xem k t qu l nh (<Alt>+<!>). Khi ch y cu l nh ny trn mn hnh s hi n ra dng cho php nh p b t k cu l nh no cng v i tham s c a n (theo m c nh tham s s l t p tin ang c chi u sng). K t qu th c hi n l nh s hi n ra trn mn hnh trong xem c s n c a Midnight Commander. Nh b n th y, trnh n T p tin (File) c ch a nh ng cu l nh th ng dng nh t, c n thi t cho ng i dng trong nh ng thao tc c b n v i t p tin c a th m c hi n th i. T t nhin l nh ng thao tc th ng dng c g n v i cc phm ch c nng. Do , chng ta s xem xt l i cc cu l nh ny hi u r hn v chng. u tin l cu l nh sao chp v i tn.

6.7

M u t p tin khi sao chp ho c i tn

Khi th c hi n cc thao tc sao chp v di chuy n (hay i tn) t p tin ng i dng c kh nng thay i tn c a cc t p tin ang sao chp hay di chuy n. th c

142

S d ng Midnight Commander

hi n vi c ny ng i dng c n a ra m u cho tn c a cc t p tin g c (g i l m u g c) v m u cho tn c a cc t p tin s c t o (t p tin ch n, g i l m u ch). Thng th ng m u tn th hai l m t vi k t thay th (wildcards) cu i dng xc nh ch n c a cc t p tin t o ra. Vi c a ra m u c th c hi n trn dng nh p vo hi n th trong c a s m ra khi ch y m t trong cc l nh sao chp hay di chuy n (hnh 6.8).

Hnh 6.8: H p tho i i tn t p tin T t c cc t p tin tho mn m u g c s c i tn (sao chp ho c di chuy n v i tn m i) tng ng v i m u ch. N u c cc t p tin c nh d u, th s ch sao chp (di chuy n) nh ng t p tin c nh d u v tng ng v i m u g c. Cn m t vi tu ch n c nh h ng n th c hi n thao tc sao chp v di chuy n t p tin m c th thi t l p cng ngay c a s a ra cc m u tn t p tin, ho c c th thi t l p qua cu l nh c a trnh n C u hnh | C u hnh.... Ty ch n i theo lin k t (Follow links) xc nh xem khi sao chp lin k t c ng hay m m vo th m c ch n (ho c cc th m c con c a th m c ny) s t o cc lin k t , hay sao chp t p tin (v th m c con) m nh ng lin k t ny ch n. Ty ch n Vo th m c con, n u c (Dive into subdirs) xc nh thao tc s lm n u trong th m c ch n c th m c c cng tn v i tn t p tin (ho c th m c) ang sao chp (ngu n). Theo m c nh ty ch n ny t t v t p tin (th m c) ngu n s c sao chp vo th m c ch n. N u ty ch n ny c dng th s t o ra trong th m c ch n m t th m c con c cng tn v cc t p tin (th m c) s c sao chp vo th m c m i ny. Chng ta s xem xt m t v d hi u hn tnh hu ng ny. B n mu n sao chp n i dung c a th m c one vo th m c /two/one c t tr c. Thng th ng (khi ty ch n b t t) mc s ch sao chp t t c cc t p tin t one vo /two/one. N u ty ch n b t, th t t c cc t p tin s c sao chp vo /two/one/one. Ty ch n Ghi nh thu c tnh (Preserve attributes) xc nh xem khi sao chp ho c di chuy n c gi l i hay khng cc thu c tnh c a t p tin ban u, bao g m: quy n truy c p, cc nh d u th i gian (truy c p v s a i), v n u ng i dng l root th cn c thu c tnh UID v GID. N u ty ch n khng c dng th cc thu c tnh s c t theo gi tr umask hi n th i.

6.8 Thng bo khi sao chp v di chuy n t p tin

143

nh h ng n qu trnh sao chp v di chuy n t p tin cn c ty ch n M u d ng shell trong trnh n C u hnh / C u hnh.... Kh ty ch n ny b t, th ng i dng c th s d ng cc k t thay th (wildcards) * v ? trong m u ngu n. Chng s c dng tng t nh trong shell. Trong m u ch ch cho php s d ng * v \<ch s >. K t * u tin trong m u ch tng ng v i nhm k t thay th u tin trong m u ngu n, k t * th hai tng ng v i nhm th hai v.v. . . Tng t , k t thay th \1 tng ng nhm k t thay th u tin trong m u ngu n, k t \2 nhm th hai v.v. . . K t \0 tng ng v i ton b tn c a t p tin ngu n. Chng ta xem xt m t vi v d hi u r hn. V d 1. N u m u ngu n l *.tar.gz, cn m u ch /two/*.tgz, v tn c a t p tin ang sao chp l foo.tar.gz, th t p tin thu c s c tn foo.tgz v n m trong th m c /two. V d 2. L y v d b n c n i ch tn v ph n m r ng t p tin, file.c tr thnh c.file. M u ngu n s c n c d ng *.*, cn m u ch s l \2.\1. Khi ty ch n M u d ng shell (Use shell patterns) b t, th mc s khng th c hi n vi c nhm t ng. ch ra nhm cc k t trong m u ngu n s tng ng v i cc k t thay th trong m u ch, b n c n s d ng cc d u ngo c \(. . . \). Cch ny m m d o hn, nhng c n c n th n hn v nhi u cng s c khi nh p vo. Chng ta l i xem xt ti p hai v d . V d 3. N u m u ngu n c d ng \(.*\)\.tar\.gz$, sao chp c th c hi n vo /two/*.tgz v ang sao chp t p tin foo.tar.gz, th k t qu s l /two/foo.tgz. V d 4. L y v d b n c n i ch tn v ph n m r ng t p tin, file.c tr thnh c.file. M u ngu n \(.*\)\.\(.*\)$, cn m u ch s l \2.\1. Khi th c hi n cc thao tc sao chp v di chuy n ng i dng cn c th chuy n ki u ch hoa/th ng trong tn t p tin. N u s d ng \u ho c \l trong m u ch, th k t ti p theo c a tn s c chuy n tng ng thnh ch hoa ho c ch th ng. N u s d ng trong m u ch \U ho c \L, th s chuy n i t t c cc k t pha sau n l n g p \U ho c \L ti p theo ho c n cu i tn t p tin. S d ng \u v \l cung c p cc kh nng r ng hn so v i \U v \L. V d trong m u ngu n c * (ty ch n M u d ng shell b t) ho c \(.*\)$ (ty ch n M u d ng shell t t), cn m u ch c \L\u*, tn t p tin s c chuy n i sao cho cc ch ci u tin s l ch hoa, cn l i l ch th ng. K t \ trong cc m u dng hu b tc d ng c a cc k t c bi t. V d , \ \ c ngha l dng k t g ch cho thng th ng v \* c ngha l s d ng m t k t d u sao thng th ng (asterisk).

6.8

Thng bo khi sao chp v di chuy n t p tin

Khi ng i dng th c hi n cc thao tc sao chp, di chuy n hay xa t p tin, Midnight Commander hi n th trn mn hnh h p tho i, trong cho bi t trn (nh ng) t p tin no s th c hi n thao tc v qu trnh th c hi n di n ra nh th no. hi n th qu trnh lm vi c, trn mn hnh hi n ra t m t n ba thanh bi u (progress bars). Thanh th nh t (file bar) cho bi t th c hi n (v d sao chp) c bao nhiu ph n c a t p tin hi n th i. Thanh th hai (count bar) cho bi t n th i i m hi n th i th c hi n c bao nhiu ph n, tnh theo

144

S d ng Midnight Commander

t ng ci, c a nh ng t p tin nh d u. Thanh th ba (bytes bar) cho bi t ph n trm dung l ng tnh theo byte lm xong. N u t t i tu ch n Thao tc v i thng tin di dng (xem C u hnh / C u hnh...), th hai thanh bi u cu i s khng c hi n th . ph n d i c a h p tho i ny c hai nt. Nh n nt B qua s d n n vi c b qua thao tc v i t p tin ny v ti p t c thao tc t p tin sau n u c. Nh n nt D ng s k t thc thao tc, t t c nh ng t p tin cn l i s b b qua. Trong qu trnh th c hi n cc thao tc v i t p tin ng i dng c th nhn th y 3 d ng c a s n a. 1. C a s l i a ra thng tin v l i v ngh ba cch gi i quy t. Thng th ng ng i dng ch n B qua khng th c hi n thao tc v i t p tin ang c v n , ho c D ng khng th c hi n hon ton thao tc a ra. Phng n th ba l Th l i. Ch n phng n ny n u ng i dng s a c l i (v d , b ng trnh l nh terminal khc). 2. C a s h i l i xu t hi n khi ng i dng ang th c hi n thao tc d n n vi c ghi chn ln t p tin c, t c l trong th m c sao chp hay di chuy n n c t p tin cng tn. Trong c a s h i l i s hi n ra th i gian t o ra v kch th c c a t p tin ngu n (ang c sao chp hay di chuy n) v c a t p tin ch (s b hu b n u ghi chn).

Hnh 6.9: C a s h i l i D i y a ra hai cu h i l i 6.9. Cu h i th nh t Ghi ln t p tin ny c ba cch tr l i: ng (nt C) T ch i, khng ghi chn (nt Khng) Ghi thm n i dung c a t p tin ang sao chp vo cu i t p tin c (nt Thm vo cu i)

6.9 Dng l nh c a h v

145

Cn tr l i cho cu h i th hai Ghi ln m i t p tin ch? chng ta c 4 cch. Cch gi i quy t c dng s lm vi c v i t t c cc t p tin ch n, o c a s h i l i s khng hi n ra m i l n c t p tin trng tn: T t c ghi chn t t c cc t p tin ch n, khng h i l i. C p nh t ch ghi chn ( ng n) nh ng t p tin c t o ra tr c t p tin ngu n. Khng khng ghi chn cc t p tin (n u khng c t p tin ch, th s th c hi n sao chp). N u kch th c khc nhau ch ghi chn n u kch th c cc t p tin khc nhau. Ng i dng cng c th d ng th c hi n thao tc n u nh n nt D ng cu i c a s h i l i. L a ch n nt mu n nh n b ng cc phm mi tn ho c phm <Tab>. 3. C a s yu c u xa ton b ( 6.10) xu t hi n khi ng i dng ang th c hi n thao tc xa m t th m c khng r ng. Nh n nt C xa th m c cng v i t t c cc t p tin c a n, Khng khng xa th m c ny, ch n T t c n u b n nh d u nhi u th m c v tin t ng l mnh ng, Khng b qua, khng xa nh ng th m c khng r ng trong s ch n, D ng c ngha l khng th c hi n thao tc xa n a. Ch ch n C ho c T t c khi b n th c s tin t ng l mnh mu n xa th m c cng v i ton b cc th m c con c a n.

Hnh 6.10: C a s yu c u

N u nh d u nhm cc t p tin thao tc, th sau khi th c hi n s b nh d u kh i nh ng t p tin thao tc thnh cng. Nh ng t p tin b b qua, t c l khng thao tc, s v n c nh d u nh c.

6.9

Dng l nh c a h v

Nh ni khi m t v ngoi c a mn hnh Midnight Commander, ph n d i c a mn hnh lun lun c dng l nh c a h v . Trong th i gian lm vi c v i Midnight Commander, c th ch y m t cu l nh no c a h i u hnh, ng i dng c n g vo dng l nh tn c a chng

146

S d ng Midnight Commander

trnh tng ng ho c ch n chng trnh trong b ng hi n th i (a dng chi u sng ln tn t p tin chng trnh), sau g phm <Enter>. N u ng i dng nh n phm <Enter> khi dng chi u sng n m trn tn t p tin khng ph i l chng trnh, th Midnight Commander s so snh ph n m r ng c a t p tin ny v i ph n m r ng c trong t p tin cc ph n m r ng ~/mc.ext. N u trong t p tin mc.ext c m t ph n nh ch ra thao tc lm vi c v i nh ng t p tin c ph n m r ng nh t p tin ch n, th s th c hi n nh ng cu l nh t trong ph n nh ny. Tr c khi ch y cc l nh c th c hi n nh ng s thay th macro n gi n. Thng th ng vi c nh p cc cu l nh i h i ph i g r t nhi u cc k t , c bi t trong tr ng h p ph i ch ra cc tham s c a cu l nh, trong s c ng d n y c ng v i tn c a t p tin c n lm vi c. gip nh p cu l nh d dng hn trong Midnight Commander c m t vi t h p phm cho php gi m s l n g bn phm trong th i gian nh p v s a i cu l nh trn dng l nh. <Alt>+<Enter>. Sao chp tn c a t p tin hay th m c ang c chi u sng vo dng l nh. <Ctrl>+<Enter>. Cng nh <Alt>+<Enter>. <Alt>+<Tab>. Th c hi n thao tc t ng i n thm4 tn t p tin, tn cu l nh, tn ng i dng hay tn my (ty theo nh ng g ng i dng g v ph n no c a cu l nh ang c nh p vo), t c l Midnight Commander s on nh ng k t m ng i dng cn cha nh p vo d a trn danh sch t p tin c a th m c hi n th i, danh sch cu l nh, v.v. . . Tuy nhin n u b n lm vi c trong giao di n ho , v d trong mi tr ng KDE th r t c th s khng dng c t h p phm ny, do mi tr ng lm vi c dng n cho thao tc khc (trong tr ng h p KDE th l chuy n gi a cc c a s ). T t nhin b n c th thay i c u hnh c a mi tr ng lm vi c, nhng l m t cu chuy n khc. <Ctrl>+<X>, <T>. Sao chp vo dng l nh tn c a cc t p tin c nh d u trong b ng hi n th i, ho c tn c a t p tin ang c chi u sng n u khng c t p tin no c nh d u. <Ctrl>+<X>, <Ctrl>+<T>. Sao chp vo dng l nh tn c a cc t p tin c nh d u trong b ng khng ph i hi n th i. <Ctrl>+<X>,<P>. Sao chp vo dng l nh tn c a th m c hi n th i, t c l tn c a th m c ang c hi n th trn b ng hi n th i. <Ctrl>+<X>, <Ctrl>+<P>. Sao chp vo dng l nh tn c a th m c ang hi n th trn b ng khng ph i hi n th i. <Ctrl>+<Q>. Chn nh ng k t c chng trnh Midnight Commander bin d ch theo m t cch no (v d k t +). <Alt>+<P>. Quay ng c l i m t cu l nh theo danh sch nh ng l nh ch y (l ch s l nh).
4

autocompletion

6.10 Trnh n Cu l nh <Alt>+<N>. i t i cu l nh ti p theo trong danh sch l ch s l nh.

147

<Alt>+<H>. Hi n th l ch s c a dng nh p vo hi n th i, n u l dng l nh th hi n th l ch s l nh. Dng nh p vo khng ch l dng l nh c a h v shell m cn l nh ng dng nh p vo c a cc h p tho i c a cc chng trnh con khc nhau. V d dng nh p vo a ch IP c a my ch FTP m b n mu n k t n i t i nh trong hnh 6.11 (cu l nh K t n i FTP... c a trnh n B ng ph i ho c B ng tri). Trong b t k tr ng h p no, khi trn mn hnh xu t hi n dng nh p vo, th ng i dng c th s d ng nh ng t h p phm i u khi n li t k trong b ng 6.5.

Hnh 6.11: Dng nh p vo a ch IP c a my ch FTP

6.10

Trnh n Cu l nh

Trnh n Cu l nh cho php th c hi n thm m t s thao tc i u khi n h th ng t p tin, ng th i th c hi n nh ng cu l nh thay i d ng c a cc b ng Midnight Commander cng nh nh ng thng tin hi n th trn chng. Khi ch y cu l nh Cy th m c c a trnh n ny th s hi n ra c a s cho th y c u trc th m c c a h th ng t p tin. C th lm hi n ra cy th m c b ng hai cch: qua cu l nh Cy th m c c a trnh n Cu l nh v qua cu l nh Cy th m c c a trnh n B ng ph i ho c b ng tri. trnh m t th i gian t o cy th m c, Midnight Commander ch t o m t ph n nh cy ny ch khng t o h t. N u th m c ng i dng mu n xem khng c hi n th th hy chuy n t i th m c m c a n r i nh n <Ctrl>+<R> ho c <F2>. N u th m c khng c ch a cc th m c con th s khng c g x y ra. Trong tr ng h p ng c l i th s m ra m t nhnh con c a cy th m c. C hai ch hi n th cy th m c. Trong ch tnh (static) di chuy n t i th m c mu n xem (t c l di chuy n dng chi u sng t i tn c a th m c ) ch dng cc phm <> v <>. S hi n th t t c cc th m c con m chng trnh c c t i th i i m ny. Trong ch ng (dynamic) cc phm <> v <> c dng chuy n t i th m c bn c nh c cng c p b c. chuy n t i th m c m s d ng phm <>, cn phm <> dng chuy n t i cc th m c con c a th m c hi n th i, t c l chuy n t i m t c p b c th p hn. Khi ny ch hi n th nh ng th m c n m trn (bao g m c th m c m v cao hn), ccthuw m c bn c nh c cng c p b c v cc th m c con chnh th c c a th m c ny, khng hi n th cc th m c chu, ch t. D ng c a cy th m c t ng thay i sau m i l n di chuy n qua cy ny. i u khi n xem cy th m c c th s d ng nh ng t h p phm sau:

148

S d ng Midnight Commander

B ng 6.5: Cc l nh i u khi n dng nh p vo


T h p phm <Ctrl>+<A> <Ctrl>+<E> <Ctrl>+<B> (<>) <Ctrl>+<F> (<>) <Alt>+<F> <Alt>+<B> <Ctrl>+<H> (<Backspace>) <Ctrl>+<D> (<Delete>) <Ctrl>+<@> <Ctrl>+<W> Hnh ng th c hi n Di chuy n con tr ln u dng. Di chuy n con tr t i cu i dng. Di chuy n con tr sang tri m t k t . Di chuy n con tr sang ph i m t k t . Di chuy n con tr sang ph i m t t . Di chuy n con tr sang tri m t t . Xa k t n m bn tri con tr . Xa k t n m t i ch con tr . nh d u b t u ph n vn b n mu n c t (ghi vo b m). Sao chp vn b n n m gi a con tr v nh d u vo b m ng th i xa i vn b n kh i dng nh p vo. Sao chp vn b n n m gi a con tr v nh d u vo b m m khng xa vn b n kh i dng nh p vo. Dn n i dung c a b m vo dng nh p t i v tr n m tr c (bn tri) con tr . Xa b n b n t v tr con tr t i cu i dng. Nh ng t h p phm ny dng di chuy n trong l ch s l nh. <Alt>+<P> di chuy n t i nh ng cu l nh n m tr c, cn <Alt>+<N> t i nh ng cu l nh n m sau. C th dng m t trong hai t h p phm ny xa t n m tr c (bn tri) con tr . T c coi l m t c m k t n m gi a hai kho ng tr ng. Th c hi n thao tc t ng i n thm (autocompletion) tn t p tin, tn cu l nh, tn ng i dng hay tn my.

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

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

Nh ng phm dng di chuy n li t k trong b ng 6.1 <Enter>. Nh n phm ny trong c a s xem cy th m c thot kh i ch xem v hi n th danh sch t p tin c a th m c ch n trong b ng hi n th i. Khi hi n th cy th m c trn m t b ng th nh n phm <Enter> s hi n th th m c tng ng ln b ng th hai, cn trn b ng hi n th i s l cy th m c. <Ctrl>+<R> ho c <F2>. c l i n i dung c a th m c (c p nh t, refresh). S d ng trong tr ng h p khi cy th m c c hi n th khng tng ng v i c u trc th t s c a n: m t s th m c con khng c hi n th ho c hi n th c nh ng th m c con b xa. <F3>. Xa th m c hi n th i ra kh i cy th m c. Cu l nh ny ch s d ng xa nh ng nhnh cy hi n th khng ng. N u ng i dng xa th m c c trn a th s hi n ra m t thng bo l i. V th khi xem cy th m c th dng d i cng (cho bi t ch c nng c a cc phm F) cho bi t phm <F3> c ch c nng Qun.

6.10 Trnh n Cu l nh

149

<F4> (Static/Dynamic). Chuy n i gi a hai ch di chuy n trong cy th m c tnh (dng theo m c nh) v ng. <F5>. Sao chp th m c con (c n ch ra th m c mu n sao chp t i trong dng nh p vo hi n ra). <F6>. Di chuy n th m c. <F7>. T o th m c con trong th m c hi n th i. <F8>. Xa th m c t d i dng chi u sng ra kh i h th ng t p tin. <Ctrl>+<S> ho c <Alt>+<S>. Tm th m c ti p theo tng ng v i m u a ra. N u khng c th m c , th s chuy n dng chi u sng xu ng d i m t dng. <Ctrl>+<H> ho c <Backspace>. Xa k t cu i cng trong dng (m u) tm ki m. <B t k k t no khc>. Thm k t dng chi u sng n tn c a th m c ch xem cy th m c th u tin c <Ctrl>+<S>. M u tm ki m s c hi c). ny vo m u tm ki m v di chuy n ti p theo tho mn m u ny. Trong n ch y ch tm ki m b ng t h p n th trn dng tr ng thi mini (n u

Hnh ng sau ch c th th c hi n trong c a s ang hi n th cy th m c: <F1> (Help) G i tr gip v hi n th ph n tr gip v c a s cy th m c. C th s d ng chu t trong c a s xem cy th m c. Nh n p chu t c tc d ng nh khi nh n phm <Enter>. Cu l nh Tm t p tin (phm nng <Meta>+<?> ho c <Esc>,<?>) c a trnh n Cu l nh cho php ng i dng tm trn a t p tin c tn a ra. Sau khi ch n cu l nh ny s hi n ra m t h p tho i h i th m c b t u tm ki m, tn t p tin mu n tm (xem hnh 6.12). Ng i dng c th ch n th m c b t u tm ki m trong cy th m c hi n ra khi nh n nt Cy th m c c a h p tho i. Trong N i dung (Contents) c th a ra cc bi u th c chnh quy theo cc quy lu t c a l nh egrep. C ngha l ng tr c nh ng k t c ngha c bi t i v i egrep c n t k t \. V d , n u mu n tm dng strcmp (, th ng i dng c n nh p vo N i dung dng strcmp \. b t u tm ki m, nh n vo nt ng . Trong th i gian tm ki m c th t m d ng b ng nt Hon v ti p t c b ng nt Ti p t c (hnh 6.13). C th xem danh sch nh ng t p tin tm th y b ng cc phm <> v <>. Nt Chuy n th m c dng chuy n t i th m c c ch a t p tin ang c chi u sng. Nt L p l i dng nh p vo cc tham s cho tm ki m m i. Nt Thot dng thot kh i ch tm ki m. Nh n nt B ng s hi n th k t qu tm ki m ln b ng hi n th i ng i dng c th th c hi n cc thao tc khc v i nh ng t p tin ch n (xem, sao chp, di chuy n, xa, v.v. . . ). Sau khi a ra b ng c th nh n <Ctrl>+<R> tr l i danh sch t p tin thng th ng. Ngoi ra, cn c kh nng a ra danh sch nh ng th m c m cu l nh Tm t p tin s b qua trong khi tm ki m (v d , n u ng i dng bi t l t p tin ang tm khng c trn CD hay khng mu n tm ki m trong nh ng th m c

150

S d ng Midnight Commander

Hnh 6.12: B t u tm ki m

Hnh 6.13: ang tm ki m k t n i qua NFS qua ng truy n r t ch m). C n ph i ch ra nh ng th m c mu n b qua ny b ng bi n find_ignore_dirs trong ph n Misc c a t p tin ~/.mc/ini. Tn th m c cch nhau b i d u hai ch m nh sau: [Misc] find_ignore_dirs=/cdrom:/nfs/wuarchive:/afs B n c th s d ng vi c a k t qu l nh ln trn b ng ( c thm B ng ngoi d i) th c hi n nh ng hnh ng ti p n i nhau ph c t p hn, cn Tm ki m t p tin ch cho php th c hi n nh ng yu c u n gi n. Cu l nh i ch hai b ng (<Ctrl>+<U>) i ch n i dung c a b ng tri v b ng ph i. Cu l nh B t/t t b ng (<Ctrl>+<O>) n i hai b ng c a mc v hi n th k t qu lm vi c c a cc l nh shell. m l i cc b ng mc cng dng l nh (phm nng) ny. L nh ny lm vi c trn xterm v d i console c a Linux. Cu l nh So snh th m c (<Ctrl-X>,<D>) so snh n i dung c a cc th m c ang c hi n th trn b ng tri v b ng ph i. C ba phng php so snh. N u dng phng php nhanh th ch so snh kch th c v th i gian t o cc t p tin

6.10 Trnh n Cu l nh

151

c cng tn. K t qu l trong c hai th m c s chi u sng nh ng t p tin khng c trong th m c cn l i, ho c chi u sng nh ng t p tin l phin b n m i hn. Sau ng i dng c th s d ng cu l nh sao chp (<F5>) lm cho n i dung c a hai th m c gi ng nhau. Phng php theo byte s so snh n i dung c a cc t p tin (theo t ng byte). Phng php ny khng dng c n u my khng h tr g i h th ng (system call) mmap(2). Khi so snh theo kch th c th ch ki m tra kch th c c a cc t p tin tng ng v khng ki m tra ngy t o ra. Cu l nh B ng ngoi (hay ng hn ph i g i l a k t qu lm vi c c a l nh ln trn b ng) cho php ng i dng th c hi n nh ng chng trnh ngoi, r i a k t qu c a l nh ny thnh n i dung c a b ng hi n th i (v d i n hnh l a k t qu c a l nh find). V d , n u b n mu n th c hi n m t hnh ng no (xa, sao chp, di chuy n,. . . ) v i t t c cc lin k t m m c a th m c hi n th i, th b n c th s d ng cu l nh B ng ngoi ch y cu l nh find . -type l -print nh trong hnh 6.14.

Hnh 6.14: Tm ki m t t c cc lin k t m m Sau khi th c hi n cu l nh ny, trn b ng hi n th i s khng ph i l n i dung c a th m c tng ng m ch c cc lin k t m m n m trong th m c ch ra. N u mu n ng i dng c th lu nh ng cu l nh b ng ngoi th ng dng b ng nh ng tn ring c ngha c th g i nhanh nh ng cu l nh ny theo tn c a chng. th c hi n vi c ny c n nh p cu l nh vo dng nh p vo (dng Cu l nh) r i nh n nt Thm m i. Sau b n c n nh p vo tn c a l nh . L n sau b n ch c n ch n tn tng ng trong danh sch m khng c n ph i nh p l i cu l nh t u5 . Cu l nh L ch s cu l nh hi n ra c a s v i danh sch nh ng l nh th c hi n tr c y. C th sao chp l nh ang c chi u sng (di chuy n dng chi u sng b ng cc phm <> v <>) vo dng l nh c a h v b ng phm <Enter>.
5

T t nhin b n c th dng l ch s cu l nh (xem

trn ho c ngay d i)

152

S d ng Midnight Commander

Cn c th truy c p vo danh sch l ch s cu l nh b ng cc phm <Alt>+<P> ho c <Alt>+<N>, tuy nhin trong tr ng h p ny ng i dng s khng th y danh sch cc cu l nh. Thay vo trn dng l nh s hi n th m t trong cc l nh c a danh sch v phm <Alt>+<P> s chuy n n thnh l nh n m trn, cn <Alt>+<N> s chuy n thnh l nh n m d i trong danh sch. Cu l nh Th m c th ng dng (<Ctrl>+<\>) cho php t o danh sch nh ng th m c th ng c dng v cho php chuy n nhanh n nh ng th m c trong danh sch ny (hnh 6.15). th c hi n vi c ny, mc t o ra danh sch cc nh d u (tn d nh ) cho cc th m c th ng dng ny. C th s d ng danh sch ny chuy n nhanh n th m c c n thi t. Cng trong h p tho i th m c th ng dng b n c th thm nh d u m i vo danh sch ho c xa nh d u c. thm nh d u m i cn c th s d ng t h p phm (<Ctrl>+<X>, <H>), khi s thm th m c hi n th i vo danh sch th m c th ng dng. Chng trnh s hi n ra yu c u nh p tn nh d u cho th m c ny.

Hnh 6.15: H p tho i danh sch th m c th ng dng Cu l nh Cng vi c n n sau cho php ng i dng i u khi n nh ng cng vi c ang lm vi c ch n n ch y t Midnight Commander (v d thao tc sao chp v di chuy n t p tin). S d ng cu l nh ny ho c phm nng <Ctrl>+ <X>,<J> b n c th d ng, ph c h i (ti p t c ch y) ho c di t b t k cng vi c n n sau ny (xem hnh 6.16). Sau khi ch n cu l nh So n th o t p tin ph n m r ng ng i dng c th s a i t p tin mc.ext xc nh dng chng trnh no m cc t p tin v i ph n m r ng (ph n cu i c a tn sau d u ch m cu i cng) no. Chng trnh ny s c ch y thao tc (xem, so n th o hay th c hi n) v i t p tin c ph n m r ng tng ng khi chuy n dng chi u sng ln tn t p tin r i nh n <Enter>. Cu l nh So n th o t p tin trnh n dng s a trnh n c a ng i dng ~/.mc/menu (trnh n hi n ra sau khi nh n phm <F2>) ho c trnh n

6.11 C u hnh Midnight Commander

153

Hnh 6.16: i u khi n cng vi c n n sau c a h th ng, c th l /usr/share/mc/mc.menu. T t nhin trong tr ng h p cu i cng b n c n c quy n ghi ln t p tin tng ng.

6.11

C u hnh Midnight Commander

Chng trnh Midnight Commander c nhi u c u hnh (ty ch n). M i ty ch n c th c dng ho c khng. Vi c dng hay khng dng ty ch n c th c hi n qua cc c a s h i tho i c a trnh n C u hnh. Ty ch n c dng n u c d u x ho c d u sao * ( t vo b ng phm tr ng) trong ngo c vung ng tr c tn c a ty ch n. By gi chng ta xem xt t ng cu l nh c a trnh n C u hnh bi t c th dng ho c khng dng nh ng ty ch n no. Cu l nh u tin l C u hnh. Khi ch n cu l nh ny s hi n ra m t h p tho i nh trong hnh 6.17. Nh ng tham s c u hnh trong h p tho i ny chia thnh ba nhm: C u hnh b ng, T m ng ng sau khi ch y... v C u hnh khc. Trong vng C u hnh b ng, ng i dng c th a ra gi tr c a cc tham s sau: Hi n th t p tin sao lu. Theo m c nh chng trnh Midnight Commander khng hi n th nh ng t p tin c tn k t thc b ng (gi ng nh ty ch n -B c a l nh ls). Hi n th t p tin n. Theo m c nh Midnight Commander hi n th t t c cc t p tin, trong c nh ng t p tin c tn b t u b ng u ch m (gi ng nh ls-a). Nhn di chuy n xu ng. Khi ng i dng nh d u t p tin (b ng t h p phm <Ctrl>+<T> ho c <Insert>), th theo m c nh dng chi u sng tn t p tin s di chuy n xu ng d i m t dng. y xu ng trnh n. N u ty ch n ny c dng, th khi g i trnh n chnh b ng phm <F9> s hi n th ngay l p t c danh sch cc cu l nh c a

154

S d ng Midnight Commander

Hnh 6.17: C u hnh Midnight Commander trnh n (Trnh n y xu ng). Trong tr ng h p ng c l i, phm <F9> ch a ng i dng vo trnh n chnh v ng i dng ph i t ch n trnh n tng ng b ng cc phm mi tn v dng phm <Enter> ho c ch ci u tin c a trnh n m ( y xu ng) trnh n . V d , b n mu n m trnh n T p tin, th u tin c n nh n phm <F9> r i dng phm mi tn sang ph i r i nh n phm <Enter>, ho c nh n phm <F9> r i nh n phm <T>. Tr n l n t t c t p tin. N u dng ty ch n ny, th s hi n th khng phn bi t t p tin v th m c. N u ty ch n khng c dng th th m c (v ng d n n th m c) s c hi n th u danh sch, cn tn t p tin sau tn c a t t c cc th m c. N p nhanh th m c. Theo m c nh ty ch n ny khng c dng. N u b n b t dng ty ch n ny, th Midnight Commander s s d ng cch (m o) sau hi n th n i dung th m c: ch c l i n i dung c a th m c trong tr ng h p thay i b n ghi inode c a th m c, t c l n u trong th m c t o ho c xo i t p tin (th m c) no ; n u ch thay i b n ghi inode c a cc t p tin c a th m c ny ( thay i kch th c t p tin, quy n truy c p ho c ch s h u v.v. . . ) th s khng c p nh t l i n i dung c a th m c . Trong tr ng h p (n u ty ch n ny c dng), th b n c n ph i t c p nh t l i danh sch t p tin b ng t h p phm <Ctrl>+<R>. Vng T m ng ng sau khi ch y.... Sau khi th c hi n cc cu l nh Midnight Commander c th t m ng ng m t cht ng i dng c th xem v nghin c u k t qu lm vi c c a nh ng l nh ny. y c ba ty ch n: Khng bao gi . C ngha l ng i dng khng mu n xem k t qu lm vi c c a l nh. Trn cc knh giao tc Linux ho c khi dng xterm ng i dng cn c th xem k t qu ny b ng t h p phm <Ctrl>+<O>.

6.11 C u hnh Midnight Commander

155

Trn nh ng terminal ngu. S t m ng ng trn nh ng terminal khng c kh nng hi n th k t qu lm vi c c a l nh th c hi n cu i cng. Lun lun. Chng trnh Midnight Commander lun lun t m ng ng sau khi th c hi n b t k l nh no. Trong vng C u hnh khc ng i dng c th t ra cc tham s sau: Thao tc v i thng bo di dng (Verbose operation). Ty ch n ny xc nh c hi n th hay khng cc c a s ph khi th c hi n cc thao tc sao chp, di chuy n v xa. N u b n ang dng m t terminal ch m th khng nn dng ty ch n ny. Ty ch n ny cng t ng khng c dng n u t c lm vi c c a terminal nh hn 9600 bps. Tnh t ng kch th c (Compute totals). N u ty ch n ny c dng, th tr c khi th c hi n cc thao tc sao chp, di chuy n, xa Midnight Commander s tnh t ng s t p tin v t ng kch th c c a chng ng th i hi n th qu trnh thao tc v i nh ng t p tin ny d ng cc dng bi u (tuy nhin, tnh nng ny s lm ch m qu trnh m t cht). Ty ch n ny khng lm vi c, n u khng dng ty ch n Thao tc v i thng bo di dng trn. M u d ng shell (Shell Patterns). Theo m c nh cc l nh ch n (select) v b ch n (unselect) nhm t p tin v hi n th t p tin theo b l c (Filter) s d ng cc bi u th c chnh quy gi ng nh trong h v shell. c th t c k t qu nh trong shell, th chng trnh th c hi n nh ng bi n i sau: thay th * b ng .* (khng ho c vi k t ); thay th ? b ng . (chnh xc m t k t ) v thay th . b ng m t d u ch m thng th ng (literal dot). N u ty ch n ny khng c dng, th c n dng bi u th c chnh quy theo cc lu t vi t trong man 1 ed. T ng ghi nh c u hnh. N u dng ty ch n ny, th khi thot kh i chng trnh Midnight Commander, gi tr c a cc tham s thi t l p s c lu vo t p tin ~/.mc/ini. Trnh n t ng. N u dng ty ch n ny, th trnh n c a ng i dng s t ng hi n th ln mn hnh m i khi ch y chng trnh. Tnh nng ny c ch khi trn my lm vi c ng i dng c t kinh nghi m (ng i thao tc) v ch th c hi n nh ng thao tc n gi n. S d ng so n th o n i b . N u dng ty ch n ny, th so n th o cc t p tin Midnight Commander s dng trnh so n th o c a mnh (mcedit). N u khng dng ty ch n ny th Midnight Commander s g i trnh so n th o c ch ra trong bi n mi tr ng EDITOR. N u khng t bi n ny th s dng vi. Trnh xem n i b . N u dng ty ch n ny, th Midnight Commander s s d ng chng trnh xem t p tin c a mnh khi xem t p tin. N u khng dng ty ch n ny, th s g i chng trnh ch ra trong bi n PAGER. N u khng ch ra bi n ny th s dng l nh view.

156

S d ng Midnight Commander T ng hon thnh: hi n t t c . Trong qu trnh nh p l nh Midnight Commander c th t ng hon thnh cu l nh , t c l th on ph n cn l i c a cu l nh ang nh p, khi nh n phm <Alt>+<Tab>. Theo m c nh khi nh n <Alt>+<Tab> th nh t chng trnh s tm t t c nh ng phng n hon thnh, v n u nh c nhi u phng n th chng trnh s t o ra ti p bp. Khi nh n t h p phm <Alt>+<Tab> l n th hai s hi n th t t c cc kh nng hon thnh. N u mu n th y cc phng n hon thnh ngay sau l n nh n <Alt>+<Tab> u tin th hy b t dng ty ch n ny. Ci ch quay. N u dng ty ch n ny, th Midnight Commander hi n th gc trn bn ph i v ch quay dng lm ch th cho bi t chng trnh ang th c hi n cng vi c (thao tc) no . Di chuy n gi ng trong Lynx. N u dng ty ch n ny, ng i dng c kh nng dng cc phm <> chuy n vo th m c ang c chi u sng v <> chuy n ln th m c m c a th m c hi n th i (v i i u ki n l dng l nh tr ng). Theo m c nh ty ch n ny khng c dng. cd theo lin k t. Dng ty ch n ny th Midnight Commander s tun theo chu i cc th m c con lgc khi thay i th m c theo lin k t, gi ng nh khi dng l nh cd. Theo m c nh bash cng lm vi c nh v y. N u khng dng ty ch n ny th Midnight Commander s chuy n th m c theo c u trc th t s c a cc th m c. T c l n u ng i dng vo th m c hi n th i theo lin k t n n, th l nh cd .. s a ng i dng vo th m c m c a th m c hi n th i, ch khng ph i vo th m c ch a lin k t. Xa m t cch an ton. Dng ty ch n ny s ngn ch n c ph n no vi c xa t p tin m t cch v tnh. N u dng ty ch n, th trong h p tho i h i l i vi c xa t p tin theo m c nh nt c ch n s chuy n t C sang Khng. Theo m c nh ty ch n ny khng c dng.

Cu l nh th hai l V ngoi, cho php thay i m t s tham s hi n th c a s chnh c a chng trnh Midnight Commander trn mn hnh (xem hnh 6.18). B n c th hi n th ho c khng hi n th dng trnh n chnh trn u mn hnh, dng l nh, dng g i (n m trn dng l nh), dng gip nh v cng d ng c a cc phm ch c nng cu i mn hnh. Trn cc knh giao tc (console) Linux ho c SCO cn c th t s dng dnh hi n th k t qu lm vi c c a l nh. Ngoi ra cn c th ch ra t th n m c a b ng l n m ngang hay d c, v c th thay i kch th c c a nh ng b ng ny. Theo m c nh t t c cc thng tin c hi n th b ng m t mu, nhng b n c th thay i quy n truy c p v d ng t p tin c mu khc. N u dng phn bi t mu cho quy n truy c p, th nh ng perm v mode cho bi t quy n truy c p c a ng i dng ch y chng trnh Midnight Commander s c mu xc nh b ng t kha selected trong ph n [Colors] c a t p tin kh i ng ~/.mc/ini. N u dng phn bi t mu cho cc d ng t p tin, th Midnight Commander s s d ng cc mu khc nhau cho th m c, cc t p tin core (dump c a b nh ), cc t p tin th c hi n v.v. . . N u dng ty ch n Hi n tr ng thi mini, th trong ph n d i

6.11 C u hnh Midnight Commander

157

Hnh 6.18: Thay i v ngoi c a Midnight Commander c a m i b ng s c m t dng cho bi t thng tin v t p tin ang c chi u sng ho c th m c hi n th i. Trong h p tho i Bt hi n th (hnh 6.19), ng i dng ch ra nh d ng terminal s s d ng x l (nh p vo v hi n th trn mn hnh) thng tin d ng cc byte, v d , thng tin trong cc t p tin.

Hnh 6.19: Thay i bit hi n th c a Midnight Commander Bit (b ng m) c ch n s c hi n th trong h p tho i ny, trong tr ng h p hnh 6.19 th bit c ch n l 8 bit khc. Nh n vo nt L a ch n bn c nh s hi n th danh sch cc b ng m c. Dng cc phm mi tn ln, xu ng ch n b ng m thch h p sau nh n <Enter>. Dng ty ch n u vo 8 bit y ch c ngha trn cc terminal c kh nng hi n th t t c cc k t 8bit (v d cc k t c a ti ng Vi t). B ng cu l nh Xc nh n c th c u hnh ch n c hi n th hay khng h p tho i h i l i ng i dng tr c khi th c hi n cc thao tc xa, ghi chn v ch y chng trnh, cng nh tr c khi thot kh i chng trnh mc. Khng hi n th nh ng h p tho i ny s gy t nhi u nguy hi m n h th ng (hnh 6.20). Cu l nh Th phm (Learn keys) g i h p tho i, trong ng i dng c th th m t s phm (<F1> <F20>, <Home>, <End>), v nh ng phm ny khng ph i lm vi c trn m i d ng terminal. Trong h p tho i hi n ra s xu t hi n m t

158

S d ng Midnight Commander

Hnh 6.20: Thi t l p cc h p tho i h i l i ng i dng b ng v i tn c a cc phm c th th . B n c th di chuy n dng chi u sng qua cc phm ny b ng <Tab> ho c cc phm dng trong trnh so n th o vi (<h> sang tri, <j> xu ng d i, <k> ln trn, <l> sang ph i). N u nh n vo cc phm mi tn v sau bn c nh tn c a chng xu t hi n d u OK, th cng c th s d ng chng i u khi n dng chi u sng (hnh 6.21).

Hnh 6.21: Th v c u hnh cc phm th m t phm c n nh n t ng phm trong b ng. N u n lm vi c bnh th ng th bn c nh s xu t hi n d u OK. Sau khi xu t hi n d u ny th phm s b t u lm vi c ch bnh th ng. V d , l n nh n phm <F1> u tin s lm xu t hi n d u OK (n u phm lm vi c bnh th ng), cn nh ng l n nh n ti p theo s g i c a s tr gip. Tng t i v i cc phm mi tn. Phm <Tab> lun lun lm vi c. N u c phm no khng lm vi c, th sau khi nh n ln phm khng xu t hi n d u OK. Trong tr ng h p c th dng phm khc thay th . thay th c n chuy n dng chi u sng n tn c a phm khng lm vi c (b ng chu t, cc phm mi tn ho c phm <Tab>) r i nh n <Enter> ho c phm tr ng. Sau s hi n ra m t h p tho i mu yu c u ng i dng nh n phm s dng thay cho phm khng lm vi c. N u khng mu n thay th n a th hy nh n <Esc> r i i cho h p tho i mu bi n m t (ho c nh n phm <Enter>). Khi

6.12 K t n i t i my

xa

159

hon thnh vi c th nghi m v c u hnh t t c cc phm, ng i dng c th ch n lu nh ng c u hnh ny vo ph n [terminal:TERM] c a t p tin ~/.mc/ini c a mnh (trong TERM l tn g i c a terminal ang dng) ho c khng lu nh ng thay i ny. T t nhin n u t t c cc phm lm vi c bnh th ng th khng c n ph i lu g h t. Cu l nh FS o g i h p tho i cho php ng i dng t cc gi tr c a m t s tham s c lin quan n s d ng h th ng t p tin o (hnh 6.22).

Hnh 6.22: Thi t l p h th ng t p tin o Cu l nh Ghi nh c u hnh lu t t c nh ng gi tr ch n vo t p tin ini c a chng trnh.

6.12
6.12.1

K t n i t i my
K t n i FTP

xa

Chng trnh Midnight Commander s d ng H th ng t p tin FTP (ftpfs) cho php ng i dng i u khi n cc t p tin xa qua giao th c FTP. s d ng c tnh nng ny b n c th dng cu l nh K t n i FTP c a trnh n B ng tri ho c B ng ph i tng ng ho c dng cu l nh cd chuy n t i th m c c ng d n d ng nh sau: /#ftp:[!][user[:pass]@]machine[:port][remote-dir] Cc thnh ph n user, port v remote-dir l khng b t bu c. N u ng i dng a ra user, th Midnight Commander s ng nh p vo my xa v i tn ng i dng , n u khng s dng ng nh p anonymous (ng nh p chung) ho c dng tn ng nh p c trong t p tin ~/.netrc. Thnh ph n pass l m t kh u dng k t n i, ch c n thi t n u c thnh ph n user. Khng nn a th ng m t kh u vo ng d n t i th m c c a ftpfs, v b t k ai cng c th th y m t kh u ny trn mn hnh, v m t kh u s c lu d ng vn b n thng

160

S d ng Midnight Commander

th ng trong l ch s cc th m c thm. Chng trnh Midnight Commander s t ng h i m t kh u trong tr ng h p khng c thnh ph n pass v c tn ng i dng (c user). s d ng FTP proxy, hy thm m t d u ch m than (!) vo pha tr c 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 H p tho i c a cu l nh K t n i FTP c d ng nh trong hnh 6.11. Trong tn my ng i dng c n nh p t t c cc thnh ph n c a ng d n t i ftpfs nh trn tr ph n 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 b n c cng c th s d ng l ch s (phm <Alt>+<H>). thay i cc ty ch n c a ftpfs chng ta c n dng cu l nh FS trnh n C u hnh (xem hnh 6.22). oc a

6.12.2

K t n i Shell

Ngoi FTP trong cc phin b n m i c a mnh chng trnh Midnight Commander cn h tr giao th c SSH v truy n t i t p tin qua H th ng t p tin shell (file transfer over shell filesystem). H th ng t p tin fish l h th ng t p tin d a trn m ng my tnh, n cho php ng i dng i u khi n t p tin trn cc my xa gi ng nh khi chng n m trn my c a mnh. s d ng tnh nng ny, trn my xa ph i c ch y my ch fish ho c c m t h v shell tng thch v i bash. k t n i t i my xa, b n c th dng cu l nh K t n i Shell c a trnh n B ng tri ho c B ng ph i tng ng ho c dng cu l nh cd chuy n t i th m c c bi t c tn d ng nh sau: /#sh:[user@]machine[:options]/[remote-dir] Cc thnh ph n user, options v remote-dir l khng b t bu c. N u ng i dng a ra user, th Midnight Commander s ng nh p vo my xa v i tn ng i dng , n u khng s dng tn ng i dng c a b n. Cc ty ch n options c th l C nn thng tin truy n t i v rsh dng rsh thay cho ssh. N u c thnh ph n remote-dir th sau khi k t n i th m c hi n th i trn my xa s l th m c ny. V d :

6.12 K t n i t i my

xa

161

/#sh:192.168.10.128:r/linux/SuSE /#sh:people.vnoss.org:C/public/wiki /#sh:teppi@people.vnoss.org/projects Tc gi hy v ng r ng nh ng thng tin trong chng ny c th gip b n b t u lm vi c v i chng trnh Midnight Commander. Tuy nhin kh nng c a chng trnh ny cn r ng hn so v i nh ng g c p n y. Cc b n c th c thm tr gip c a chng trnh ny m i khi c n b ng phm <F1>.
Ghi ch: B n d ch ti ng Vi t cho giao di n c a Midnight Commander i km v i chng trnh c th khng ph i l b n d ch m i nh t. B n lun lun c th l y b n d ch m i nh t v t kho CVS c a Midnight Commander (t p tin vi.po trong th m c po) ho c t http://cvs.savannah.gnu.org/viewcvs/*checkout*/mc/ mc/po/vi.po. Cch c p nh t m t b n d ch giao di n cho h th ng s c p n trong chng ni v ti ng Vi t trn Linux ho c n u mu n b n c th c trong b n tin s 3 VnOSS c trn http://vnoss.org (t p tin bantin-so3-092006.pdf).

Chng 7 Giao di n ho

M c d Linux l h i u hnh m nh v pht tri n, nhng n u ch lm vi c qua giao di n dng l nh th Linux tr thnh kh s d ng v khng th h p d n c nhi u ng i dng. Ng i dng s ph i nh m t danh sch di cc cu l nh. Do ngay t nh ng ngy u pht tri n c a Linux c m t giao di n khc thn thi n v i ng i dng hn, l giao di n ho . Trong giao di n ho ng i dng c th ch y cc chng trnh trong cc c a s khc nhau, khng c n nh danh sch cc cu l nh v c kh nng ch y chng b ng h th ng trnh n (menu), h th ng cc bi u t ng trn mn hnh, v ngoi ra cn c kh nng s d ng chu t s p x p khng gian mn hnh c a mnh. Hi n nay cc mi tr ng lm vi c l n nh KDE, GNOME cn c s n nh ng ng d ng i km gip ng i dng khng m t nhi u th i gian l a ch n. M i th c s n. Chng ta s xem xt m t trong hai mi tr ng lm vi c ny, KDE, trong m t chng sch ring ngay sau chng ny. Trong chng ny chng ta s xem xt cch lm vi c c a giao di n ho v cch c u hnh n. cu i chng s c m t s l c m t vi mi tr ng lm vi c v cch kh i ng vo chng.

7.1

X.Org

Giao di n ho trong Linux c xy d ng d a trn c s c a tiu chu n X Window System (c n ch l Window ch khng ph i Windows, xin ng nh m!) hay cn g i n gi n l X (ch-x). Tiu chu n ny u tin c vi t ra t i tr ng i h c cng ngh Massachuset. B t u t phin b n th hai tiu chu n ny c cngxoocxiom X h tr . Cngxoocxiom X c t ch c vo nm 1988 v i m c ch tiu chu n ha giao di n h a cho cc h i u hnh UNIX. B t u t nm 1997 cngxoocxiom X chuy n thnh X Open Group v sau l X.Org Foundation (http://www.x.org). Hi n th i c phin b n 11 b n pht hnh 7 c a tiu chu n X Window System cho h th ng ho c a UNIX, k hi u ng n g n l X11R7. Tuy nhin trn cc b n phn ph i Linux v n cn s d ng b n pht hnh th 6, t c l X11R6. Cch y khng lu cc b n phn ph i Linux v n cn s d ng XFree86, m t ph n m m ng d ng t do tun theo tiu chu n X11R6 cho cc h th ng UNIX

7.1 X.Org

163

v i b x l 80386/80486/Pentium. XFree86 c m t nhm cc nh l p trnh t o ra, ng i kh i u nhm ny l David Wexelblat. XFree86 c s d ng khng ch trn Linux m cn trn cc h th ng System V/386, 386BSD, FreeBSD v cc phin b n UNIX khc cho Intel x86. Tuy nhin cch y m t th i gian (cu i nm 2003 u nm 2004), cc phin b n Linux ng lo t chuy n sang m t b n X khc d a trn tiu chu n X Window System (do c v n v i b n quy nc a XFree86 phin b n 4.4.0) l XOrg, m t nhnh pht tri n m i c a XFree86. XOrg do t ch c cng tn X.Org Foundation cung c p d ng ng d ng m ngu n m c a X Window System. Qu trnh pht tri n XOrg hi n ang l m t ph n c a c ng ng freedesktop.org. Ph n l n cc nh pht tri n, nh phn ph i v nh cung c p ph n c ng c a d n XFree86 tr c y ng ng tham gia XFree86 v chuy n s n ph m c a mnh gia nh p vo X.org Foundation. Do i khi chng ta khng th y c s khc nhau v c b n. Hi n th i X.Org Foudation l m t cng ty khoa h c v i ban lnh o bao g m nh ng guru1 hng u trong th gi i m ngu n 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). N u mu n b n c th tm hi u thm v t ch c X.Org trn trang web chnh c a t ch c t i a ch http://x.org. Cn by gi chng ta s ni i dng v cch t ch c lm vi c giao di n ph n m m d a trn tiu chu n X Window System. H th ng X Window c xy d ng trn c s m hnh ch /khch (thu t ng ti ng Anh hay c dng hn trong giao ti p: server/client) th ng g p trong th gi i vi tnh hi n nay. Tuy nhin m hnh ny trong tr ng h p X Window c dng d ng quay ng c l i 180 . Ni nh v y l v chng trnh my ch (xin c g i t t l chng trnh ch ) X lm vi c trn my tnh c a ng i dng (v hi n th hnh nh trn mn hnh my tnh) ch khng ph i trn m t my (ch ) no xa. Chng trnh ch X lm vi c tr c ti p v i ph n c ng: v i h th ng vi- (c c hnh,. . . ), v i cc thi t b nh p vo (bn phm, chu t,. . . ) v m thanh. R t c th i v i m t s b n c s d hi u hn n u coi chng trnh ny l m t driver c a h th ng hnh nh, chuyn i u khi n h th ng ny. Chng trnh ch X chi m lnh t t c cc thi t b ph n c ng v cung c p cc kh nng c a thi t b cho cc chng trnh khc d ng ti nguyn ring2 theo m t giao th c (protocol)
1 2

nh ng ng i c kinh nghi m lm vi c nhi u nm chnh v th m chng trnh X c coi l ch

164

Giao di n ho

c bi t, g i l giao th c X hay giao th c k t n i m ng X (X Network Protocol). My tnh ch dng ch y chng trnh ch X c g i l my X terminal. Nhng b n thn chng trnh ch X khng t o ra (v ra) hnh nh trn mn hnh m ch cung c p hnh nh cho driver c c hnh. N u ch ch y chng trnh ch X th b n s ch th y m t mn hnh mu xm v i m t d u X gi a. C th di chuy n d u X ny quanh mn hnh chu t. V l t t c nh ng g b n c th lm. Nh n cc nt chu t v bn phm khng em l i l i ch g. Tuy nhin ngay lc ny chng trnh ch X s n sng chuy n nh ng tn hi u (nh n phm, nh n chu t) n cc chng trnh khch, nhng t m th i cha c chng trnh khch no. Lc ny v n c m t s t h p phm c X x l. l <Ctrl>+<Alt>+<Backspace> dng d ng lm vi c chng trnh ch X (n u khng b i kh nng ny trong c u hnh), <Ctrl>+<Alt>+<+> v <Ctrl>+<Alt>+<> chuy n nhanh gi a cc ch hi n th , t c l phn gi i v t n s mn hnh v cc t h p phm quen thu c <Control>+<Alt>+<Fm> chuy n v ch vn b n vo terminal o s m. a ra mn hnh m t hnh nh no c ngha hn th ch m t mnh chng trnh ch X l khng . Ngoi n ra chng ta c n ch y m t trnh qu n l c a s v t nh t m t chng trnh khch t o hnh nh trn mn hnh. Chng trnh khch c a ch X c th l cc ng d ng lm vi c d i X Window, v d chng trnh so n th o vn b n OpenOffice.org Writer, chng trnh ho GIMP, cc chng trnh gi l p terminal nh xterm, urxvt, konsole,. . . N m gi a chng trnh khch v chng trnh ch X cn c hai thnh ph n quan tr ng n a c a giao di n ho , l th vi n cc hm ho Xlib v trnh qu n l c a s (xem hnh 7.1). Th vi n Xlib g m cc hm h a cho php th c hi n cc thao tc b c th p v i cc hnh m u ho . Trnh qu n l c a s g i cc hm trong Xlib i u khi n mn hnh v th c hi n b t k thao tc chuy n i hnh nh no trong cc c a s .

Hnh 7.1: Ki n trc c a h th ng ho X Window System3 .

Khi m t ng d ng X kh i ng, c a s s chuy n quy n i u khi n n trnh qu n l c a s . Trnh qu n l c a s cung c p cc phng ti n th c hi n t t c cc thao tc v i cc c a s , bao g m: v khung ngoi, trnh n (menu), cc

7.1 X.Org

165

bi u t ng, thanh cu n ln, xu ng v cc thnh ph n khc c a c a s , ng th i cn cung c p kh nng thay i d ng v v tr cc c a s trong qu trnh lm vi c ty theo nhu c u c a ng i dng. Trnh qu n l c a s cn g i cc hm tng ng cho cc chng trnh khch trong tr ng h p ng i dng thao tc v i cc ng d ng b ng bn phm v chu t. Chnh v th khi c u hnh X.org ngoi c c mn hnh cn ph i a ra cc tham s c a chu t v bn phm. Trnh qu n l mn hnh c n bi t cc tham s c a cc thi t b ny th c hi n cng vi c c a mnh. Cc mi tr ng lm vi c ho m r ng nh KDE, GNOME, Xfce4, CDE, GNUStep, v.v. . . khng thay th nh ng thnh ph n k trn c a h th ng X Window, m ch m r ng v thm vo. V d , KDE thm vo th vi n cc hm ho QT b sung cho Xlib. GNOME s d ng th vi n GTK+ (by gi l GTK2+). Chnh th vi n ny l n n t ng c a chng trnh ho GIMP. Ngoi ra trong GNOME cn c cc th vi n khc nh Imlib cho php m r ng cc kh nng c a h th ng h a. B i v ch v khch l cc ti n trnh ring, nn chng c th ch y trn cc my tnh khc nhau v trao i v i nhau qua m ng. V d cc chng trnh ng d ng c th ch y trn m t my ch m nh (mainframe), cn hnh nh s hi n th trn mn hnh my tnh c nhn. c i m r t m nh ny c a h th ng X Window l m t trong nh ng khc bi t c a n so v i giao di n ho c a cc h i u hnh dng Windows. Ngoi ra trn Linux v UNIX ni chung khng c s phn bi t r rng gi a cc chng trnh giao di n ho v giao di n vn b n (dng l nh) nh trong Windows. i v i h th ng th khng c s khc nhau gi a chng trnh lm vi c trong ch ho v trong ch bnh th ng. Chng trnh cho ch ho cng c ch y nh cc chng trnh bnh th ng, t c l t dng l nh, t chng trnh Midnight Commander, v.v. . . i u ki n duy nh t c n ph i c l chng trnh ch X ph i lm vi c. N u c n chng trnh s t tm n chng trnh ch X qua TCP/IP ni chung v qua socket n i b khi chng trnh ch v khch lm vi c trn cng m t my. Chng trnh th c hi n vi c ny b ng cch g i cc hm th vi n trong Xlib. T t c nh ng g chng trnh c n bi t lm vi c l ni tm chng trnh ch X. Tm ki m chng trnh ch X c th c hi n qua bi n mi tr ng DISPLAY ho c qua ty ch n trn dng l nh. Ngoi ra cn c nh ng chng trnh c th lm v i c chng trnh ch X v v i c terminal thng th ng. V d chng trnh so n vn b n emacs t ng ch n ch lm vi c ( ho hay vn b n) khi kh i ng. T t nhin nh ng g a ra trong hnh 7.1 ch l tng i. V d chng ta ni r ng trao i gi a th vi n Xlib v i chng trnh ch X trong tr ng h p chung c th c hi n qua giao th c TCP/IP. Nh v y l trong hnh v b qua nh ng chng trnh ng d ng c a giao th c TCP/IP. V cn m t ti nguyn quan tr ng khc c a h th ng ho l phng ch . Chng trnh ch X c th thao tc v i phng ch m t cch tr c ti p, ho c c m t chng trnh khc chuyn dng cho vi c ny ( c g i l chng trnh ch phng ch ), v cng c n ph i thm vo hnh v trn. X.org c m t chng trnh ch X cho ph n l n c c mn hnh. Chng trnh ny c g i l xorg v n m trong th m c /usr/X11R6/bin. Thng th ng c m t lin k t n chng trnh ch ny v i tn X, do c th ch y chng trnh

166 ch X b ng cu l nh: [user]$ X

Giao di n ho

Trnh qu n l c a s th c r t nhi u, b n c c th ch n b t k chng trnh no trong s chng. L a ch n trnh qu n l c a s no ph thu c nhi u vo c u hnh my tnh c a b n (my m nh hay y u, c c mn hnh c nhi u b nh hay khng), v yu c u cng vi c. Xin a ra y m t vi v d trnh qu n l c a s th ng dng: IceWM (http://www.icewm.org) trnh qu n l c a s nh nh v lm vi c r t nhanh. Trnh qu n l c a s ny ang c r t nhi u ng i dng c kinh nghi m a chu ng. Fluxbox (http://www.fluxbox.org) m t trnh qu n l c a s g n nh khc, lm vi c tng i nhanh v cng c ng i dng c kinh nghi m a chu ng. Chnh trnh qu n l c a s ny c dng trn nhi u b n phn ph i Linux d ng LiveCD (Linux s ng v lm vi c trn CD) nh: Damn Small Linux, Insert. WindowMaker (http://www.windowmaker.org) trnh qu n l c a s g n nh nhi u mu s c v m m d o trong c u hnh k th a c a AfterStep. M t c i m th v c a WindowMaker l cc trnh nh applet th c hi n nhi u ch c nng khc nhau: theo di h th ng, theo di m ng, ng h , v.v. . . N u mu n v c s h tr th b n c th s d ng nh ng trnh nh applet ny trong cc trnh qu n l c a s khc nh Fluxbox. enlightment (http://www.enlightment.org) trnh qu n l c a s p nh t hi n nay, c r t nhi u ty ch n c u hnh b n c th thay i. fvwm2 (Free Virtual Window Manager 2) phin b n nng c p c a trnh qu n l c a s fvwm cho php s d ng cc s c thi (theme) khc nhau v trnh n ng. Trang ch c a FVWM v FVWM2 n m t i a ch http: //fvwm.org/. Cc trnh qu n l c a s khc nhau c th cho ra d ng c a s khc nhau b ng cch s d ng cc khung v trnh n c a s khc nhau. Nhng t t c chng u s d ng cng m t ti n ch ho c s c a X Window, l chng trnh ch X. Nh v y l b n c bi t c giao di n ho trn Linux c t o ra t nh ng thnh ph n g. Nh b n th y giao di n ho trn Linux c t o ra theo nguyn t c mun, v c th t xy d ng nhi u ki u giao di n ho t cc thnh ph n khc nhau. Nhng i v i ng i dng m i (v r t m i) th y khng ph i l cch d nh t. R t may l khng nh t thi t ph i ch n cch ny, v c trn t t c cc b n phn ph i l n cc mi tr ng lm vi c ho . N i ti ng nh t trong s cc mi tr ng ho ny c n k n KDE (http://www.kde.org) m chng ta s nghin c u su hn trong chng sch ti p theo v GNOME (http://www.gnome.org). Ngoi ra cng c n ni n mi tr ng lm vi c ho g n nh hn v cng chi m c s yu m n c a r t nhi u ng i dng, l Xfce4 (http://www.xfce.org). T t c nh ng mi tr ng lm vi c ho ny

7.2 M t cht v h th ng hnh nh c a my tnh

167

u c h tr ti ng Vi t t t (ho c cn cha t t), do cng d dng hn (ho c kh khn hn cho ai ?) cho b n c trong khi s d ng. N n t ng c a mi tr ng lm vi c ho KDE (K Desktop Enviroment) l th vi n cc hm ho m r ng Qt c a cng ty Troll Tech (http://www.qt.com). B ng th vi n ny cc nh pht tri n KDE vi t ra trnh qu n l c a s ring kwm, trnh qu n l t p tin kfm, trung tm i u khi n KDE v r t nhi u thnh ph n khc bao g m c gi chng trnh ng d ng cho vn phng KOffice. T t nhin i u ny khng c ngha l t t c cc thnh ph n c a mi tr ng KDE l do m t cng ty no vi t ra v pht tri n, m nhi u nh l p trnh cng s d ng m t cch m t t ng pht tri n chung t o ra cc ng d ng khc nhau. K t qu thu c l m t b y cc chng trnh ng d ng cho php gi i quy t t t c cc nhu c u i u khi n my tnh v lm vi c c a ng i dng. Trong cc phin b n m i c a KDE cn c thm trnh qu n l t p tin v cng l trnh duy t web Konqueror (http://konqueror.kde.org) c nhi u kh nng m nh trong vi c truy c p n cc t p tin. Ngoi ra Konqueror cn cho php xem tr c ti p cc t p tin c nh d ng (ph n m r ng) bi t, kh nng duy t web cng khng thua km cc trnh duy t khc nh Internet Explorer.4 M t mi tr ng lm vi c ho c cng ng c p v i KDE l GNOME (GNU Network Object Model Environment). GNOME c pht tri n trong khun kh c a d n GNU, c ngha l chng trnh ng d ng t do. GNOME c xy d ng d a trn th vi n cc hm ho GTK+ (by gi l GTK2+, phin b n 2 c a th vi n GTK). Cn c nhi u mi tr ng lm vi c ho khc nhng cha t c m c pht tri n m nh nh KDE v GNOME. Trong s chng c n ni n Xfce4 (http://www.xfce.org). Phin b n 4.4 c a Xfce4 h a h n nhi u thay i l n, trong s c n k n trnh qu n l t p tin Thunar v cc m r ng (plugin) c a n. Cc b n phn ph i Linux m i hi n nay cho php ci t v c u hnh giao di n ho m t cch d dng hn r t nhi u so v i tr c y. Chng trnh ci t c a Debian Linux, openSUSE Linux, Fedora Core, v.v. . . c kh nng t ng xc nh d ng c c hnh, d ng mn hnh v t ng ch n cc tham s ( phn gi i, t n s c p nh t) thch h p. Tuy nhin ti xin a ra y m t vi l i khuyn khi c u hnh X Window v r t c th b n c s g p v n no , v d chng trnh ci t xc nh d ng mn hnh khng ng v do dng nh ng tham s khng thch h p. u tin chng ta c n bi t m t cht v cng vi c c a h th ng hnh nh c a my tnh.

7.2

M t cht v h th ng hnh nh c a my tnh

Nh b n c hi u khi th y u c a ph n ny, y khng ph i l h ng d n chi ti t dnh cho cc nh chuyn mn, m ch l nh ng ki n th c c b n v h th ng hnh nh c a my tnh gip ng i dng m i v r t m i hi u c cch lm vi c c a h th ng hnh nh, th no l t n s , phn gi i mn hnh,
Cch y m t th i gian KDE c cng nh n l ph n m m t do. V n ny x y ra tr c y l do th vi n Qt thu c v cng ty thng m i. Nhng cng ty Troll Tech a ra thng bo cho php dng th vi n ny vnh vi n mi n ph pht tri n cc ng d ng m ngu n m .
4

168

Giao di n ho

v.v. . . c th ch n cc tham s thch h p trong khi c u hnh. H th ng hnh nh c a my tnh bao g m c c hnh (video card) v mn hnh (monitor), chng ta s ch xem xt tr ng h p mn hnh ng i n t (CRT) m khng xem xt mn hnh tinh th l ng (LCD). Nh b n c bi t, hnh nh trn mn hnh c t o ra t cc i m ring bi t. i m c t o ra nh cc chu i electron v cc i m n m d ng dng n m ngang. Mn hnh th c hi n hai cng vi c ring bi t: tr i cc chu i (tia) electron v chi u sng cc i m ring bi t t o ra hnh nh. i u khi n mn hnh c ngha l a ra s i m trn m t dng ( phn gi i theo chi u ngang), s dng trn mn hnh ( phn gi i theo chi u d c) v c ng (intensity) c a m i mu (trong s ba mu chnh) trn t ng i m. Ch c nng i u khi n mn hnh l do c c hnh th c hi n. C c hnh chuy n t i mn hnh 3 tn hi u: tn hi u hnh (RGB), ng b dng (HS) v ng b nh (c t, VS). Khi c tn hi u ng b dng (theo chi u ngang) tia electron s c chuy n t cu i m i dng t i u dng ti p theo, cn khi c tn hi u ng b nh (theo chi u d c) th s chuy n tia electron t gc d i bn ph i v gc trn bn tri. C n ph i bi t t n s t o ra hai tn hi u ny, tnh theo s tn hi u trong m t giy, c th c u hnh ng chng trnh ch X. Gi tr t n s ng b ngang v d c ny nh t nh c trong ti li u i km v i mn hnh. T n s ng b d c th ng k hi u l VSF v c n v l Hz (Hc), gi tr c a VSF n m trong kho ng 50 180 Hz. T n s ng b ngang, HSF, c n v l KHz (1kilhc = 1000 hc) v nh n gi tr trong kho ng t 31 n 135 KHz. Nh ng mn hnh m i th ng l mn hnh c nhi u t n s hay cn ni l c gi i t n s r ng, c ngha l b n c th ch n cc t n s d c v ngang t m t vng cc gi tr cho php no . M t s mn hnh nh t l mn hnh r ti n c th ch c m t vi gi tr t n s cho php. T t nhin t t nh t l ch n gi tr l n nh t trong s c th dng, nhng hy c n th n v n u ch n gi tr cao qu m c th c th lm h ng mn hnh. Cn c m t t n s quan tr ng khc n a, l s i m c th hi n th trn mn hnh trong m t giy. Tia electron di chuy n qua mn hnh theo m t v n t c c h n do b vi x l c a c c hnh xc nh. T n s ny c g i l DCF (Dot Clock Frequency t n s lm vi c c a c c hnh). M t tham s cng quan tr ng n a l t n s c p nh t mn hnh SRR (Screen Refresh Rate). Gi tr ny cng cao bao nhiu th m t c a ng i dng cng t m i m t b y nhiu trong khi lm vi c v i my tnh, v khi s gi m m c nh p nhy c a mn hnh. Khng nn ch n t n s c p nh t mn hnh nh hn 60Hz, khi n hunh quang s nh p nhy r t m nh. Tiu chu n VESA khuyn ch n gi tr ny l n hn ho c b ng 72Hz. Nhng cng khng th a ra m t t n s c p nh t mn hnh qu l n, v t n s ny khng th l n hn gi tr c a phn s :
DCF (s i m trn dng) * (s c t trn mn hnh)

t c l c s ph thu c v i phn gi i (resolution) c a mn hnh. Trn th c t t n s c p nh t cn nh hn n a v cn m t th i gian di chuy n cc tia electron t dng ny sang dng khc, t cu i mn hnh ln u mn hnh. Ngoi ra t o ra hnh nh s c nt trn mn hnh, tia electron cn di chuy n qu sang tri, sang ph i, ln cao, xu ng th p hn m t cht so v i hnh nh (t o ra 4 dng v c t t i xung quanh hnh nh). C n ni thm t n s c p nh t mn hnh b ng t n

7.3 C u hnh chng trnh ch X

169

s ng b d c (SRR = VSF). Nh v y, t n s ng b d c VSF v t n s lm vi c c a c c hnh DCF xc nh gi tr gi i h n (l n nh t) c a phn gi i. Cn c m t gi i h n n a ph thu c vo dung l ng b nh c a c c hnh s l ng mu c a hnh nh. Trn cc mn hnh mu, m i i m c chi u sng ng th i b i 3 tia electron. Mu c a i m c xc nh b i s pha tr n c a ba mu c b n: (Red), xanh l cy (Green) v xanh da tr i (Blue) RGB. C ng c a m i mu ny l i c xc nh b i m c c a tn hi u trong tia tng ng. Hnh nh s a ra mn hnh c t o ra trong b nh c a c c hnh. B nh ny n m trn c c hnh nhng thu c v khng gian b nh chung c a c my tnh. Hnh nh c lu trong b nh d ng s v s chuy n i hnh nh v d ng tn hi u tng t (analog) RGB l m t trong nh ng cng vi c chnh c a c c hnh. Cng vi c ny l do m t b ph n trn c c hnh m nhi m, l b chuy n i s tng t . S l ng mu c th dng cho m i i m c gi i h n b i dung l ng b nh c c hnh cng nh s m c tn hi u m c c hnh c th t o ra cho m i tia electron. Nhng thng th ng c c hnh c th t o ra m t s l ng m c tn hi u hi n th hnh nh, do tham s quy t nh y l dung l ng b nh . Cng th c xc nh gi i h n phn gi i v s l ng mu trn hnh nh r t n gi n:
(Dung l ng b nh , byte) (S * (s byte trn m t i m) i m trn dng) * (s c t trn mn hnh)

V d , n u b n c mu n ch n phn gi i mn hnh 1280 x 1024 v c 32 tri u mu cho m i i m, t c l 8 byte cho m i i m, th c n c m t c c hnh v i dung l ng b nh t nh t l 1280 1024 4 = 10485760 byte (10Mb). T t c nh ng c c hnh m i p ng c (th m ch cn v t qu) yu c u ny. N u c m t c c hnh c v i dung l ng b nh t hn th c n ph i ch n phn gi i nh hn ho c ch n s l ng mu t hn. Ti ngh r ng b n c th t l a ch n m t phn gi i v s l ng mu thch h p cho my tnh c a mnh. Cn by gi chng ta s xem xt ph n th c hnh c a nh ng l thuy t a ra, t c l c u hnh giao di n c a Linux.

7.3

C u hnh chng trnh ch X

Chng ta s xem xt tr ng h p sau khi ci t Linux b n khng th chuy n vo ch ho (r t hi m khi x y ra v i cc b n phn ph i Linux m i), ho c khng hi lng v i nh ng g mnh th y trn mn hnh giao di n ho . N u b n ri vo tnh hu ng th nh t trong qu trnh kh i ng my, th hy ch n kh i ng vo ch m t ng i dng c kh nng thay i c u hnh X. Chng ta s bi t c cch chuy n ch kh i ng trong m t vi chng t i. N u b n khng hi lng v i hnh nh c a giao di n ho , ho c khng th vo ch ho , nhng v n c th truy c p t i my tnh b ng ch vn b n (giao di n dng l nh), th v n c th s d ng m t cu l nh v chng trnh c a Linux c u hnh l i chng trnh ch X. Chng ny coi nh b n ci t X.org, v t t c nh ng t p tin (chng trnh) ni n pha sau c trn a. N u khng th u tin b n ph i ci t gi chng trnh X.org. Cch ci t chng trnh s c trong chng khc dnh ring cho ph n ci t chng

170

Giao di n ho

trnh. Hy v ng r ng nh ng thng tin d i y gip b n c u hnh thnh cng giao di n ho , ho c n gi n l gip b n hi u hn v giao di n ny v cch c u hnh n n u b n c m t h th ng X Window lm vi c t t. Nhng xin b n hy lun nh l cu n sch b n ang c s d ng b n quy n Creative Commons Public License 2.5 (http://creativecommons.org/licenses/by/2. 5/). Tc gi khng ch u trch nhi m v nh ng g s x y ra. Hy c n th n trong khi lm vi c!

7.3.1

Thu th p thng tin c n thi t

c th c u hnh b n c n m t vi d li u sau: Tn c a hng s n xu t c c hnh v mn hnh. Th ng l y t ti li u i km v i chng, n u khng c th cng c th xem tr c ti p trn thi t b . D ng c a b x l trn c c hnh (chp). C n xc nh d ng chp ch n mun ng cho c c hnh. V d , chp c a hng Nvidia th ng c n n p mun nv. Dung l ng b nh c a c c hnh. Kho ng t n s ng b ngang v d c cho php dng c a mn hnh. L y t ti li u i km v i mn hnh, n u khng c ti li u th b n c n tm nh ng thng tin ny trn Internet, d dng nh t l trn trang web c a nh s n xu t. Hai tham s ny l quan tr ng. D ng chu t v bn phm. Lm vi c trong giao di n ho m khng c chu t th khng thu n ti n cht no, v n u khng bn phm th cng khng th lm vi c v i my tnh ni chung. V th c n ph i c u hnh chng trnh ch X s d ng nh ng thi t b ny. C nhi u cch l y nh ng thng tin ny. Cch d dng nh t cho ng i dng m i l khi trn my c m t h i u hnh Windows. Nh ng thng tin b n c n c trong Trnh qu n l cc thi t b . Cch ch y chng trnh ny khng thu c vo ph m vi c a cu n sch ny v chng ta ang ni v h i u hnh Linux. B n c th tm th y thng tin trong b t k cu n sch no ni v h i u hnh Windows. N u trn my c a b n cha c b t k h i u hnh no th hy s d ng m t h i u hnh Linux LiveCD (ch y th ng t CD) c kh nng nh n d ng ph n c ng t t nh Knoppix. Sau khi kh i ng Knoppix thnh cng hy sao chp t p tin c u hnh chng trnh ch X c a Knoppix (th ng n m t i /etc/X11/xorg.conf ln a m m ho c flash sau ny c th c l i. V cch c thng tin t t p tin c u hnh X.org (c u trc c a t p tin ny) chng ta s xem xt ngay d i y. Ngoi ra c nh ng chng trnh chuyn dng cho vi c l y cc d li u c n thi t k trn, v d bash script mkxf86config do cc nh pht tri n Gentoo vi t ra. B n c th tm th y script ny trn m ng Internet. Tuy nhin ti hy v ng l cc b n s khng ph i s d ng n nh ng ti n ch ny cng nh nh ng phng n k trn (s d ng h i u hnh khc, s d ng Knoppix): t t c nh ng thng tin b n c n c trong ti li u i km v i my tnh.

7.3 C u hnh chng trnh ch X

171

7.3.2

C u trc c a t p tin c u hnh X

T p tin c u hnh chng trnh ch X th ng n m t i /etc/X11/xorg.conf. Khi kh i ng v n u khng ch r t p tin c u hnh trn dng l nh th chng trnh ch X u tin s tm t p tin c u hnh t i th m c c a ng i dng, t c l t i /xorg.conf. N u khng th y t p tin ny th chng trnh ch X s dng c u hnh chung c a ton b h th ng n m trong th m c /etc nh ni trn (n u c). T p tin c u hnh X ch l m t t p tin vn b n (text file) bnh th ng, do c th s d ng b t k trnh so n th o vn b n no thay i n. V y cng chnh l cch cc nh qu n tr h th ng c kinh nghi m s d ng c u hnh giao di n ho . Tuy nhin, c nh ng chng trnh, ti n ch chuyn dng cho vi c ny, v chng ta s s d ng chng trong th i gian u m i lm quen v i Linux. Cng khng c n ph i t o t p tin xorg.conf t u. N u trong khi ci t b n c ch n ci t giao di n ho X th trn my c t p tin ch a c u hnh X ng (v c th khng). N u v nguyn nhn no b n ci t X.org ring sau khi ci t Linux, th hy ch y m t trong nh ng chng trnh cho php b n t o ra t p tin ny. t o ra t p tin c u hnh X m t cch t ng hy s d ng chng trnh Xorg v i ty ch n -configure. Ch c n ch y cu l nh sau (hy ch l c n c quy n ng i dng root: [root]# Xorg -configure Cu l nh ny s lm vi c m t cch im l ng, sau khi hon thnh n s t o ra t p tin xorg.conf v t t p tin ny vo th m c /etc/X11. Xin ng qun cu l nh Xorg khc v i cu l nh xorg! Nh ni t tr c trn Linux ch th ng v ch hoa c s khc nhau r rng. Tuy nhin r t c th b n s mu n t t o cho mnh m t t p tin c u hnh ring, ho c n gi n l mu n ki m sot qu trnh ny. Trong XFree86 phin b n th 4, ti n ch chnh dng t t o m t t p tin c u hnh (XF86Config-4) l chng trnh xf86config (i khi xf86cfg). Trong X.org chng trnh ny c thay th b ng xorgconfig. Trn th c t theo ti th y th hai chng trnh ny khng c g khc nhau, ch c i u xorgconfig sau khi hon thnh cng vi c s t o ra xorg.conf ch khng ph i XF86Config-4 nh tr ng h p xf86config. Trn dng l nh hy ch y: [root]# xorgconfig r i tr l i nh ng cu h i m chng trnh ny t ra. N u khng mu n ti p t c th hy nh n <Ctrl>+<C> thot ra. Cn m t ti n ch khc c th dng c u hnh my ch X, l xorgcfg. Nhng chng trnh l ng d ng ho , t c l ch ch y trn n n m t my ch X ch y no (hnh 7.2), do khng c ch trong tr ng h p b n cha c m t c u hnh X no. Hy c cc trang h ng d n s d ng man tng ng xorgconfig(1) v xorgcfg(1) bi t thm chi ti t. Ngoi ra, m i b n phn ph i hi n i c m t cng c c u hnh ring c a mnh, i khi r t m nh. V d b n phn ph i OpenSUSE c sax2. Hy s d ng nh ng chng trnh ny. Chng s gip b n ti t ki m c nhi u th i gian.

172

Giao di n ho

Hnh 7.2: C u hnh X.org qua xorgcfg

B ng m t trong nh ng cng c trn b n t o ra c t p tin c u hnh xorg.conf. Chng ta s xem t p tin ny trng nh th no (c ngha l dng cu l nh xem t p tin more ho c less ho c dng m t chng trnh so n th o vn b n nh vim m n). D i y l v d m t t p tin xorg.conf c trn my c a 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 C u 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 di n 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

C n ph i ni r ng nh ng thng tin m chng trnh ci t c a openSUSE d tm ra l chnh xc. C th b n c nh n th y l trn Linux nh ng t p tin c u hnh c c u trc tng t nh nhau. Nh ng dng u tin th ng l nh ng dng ch thch khng c nh h ng g n chng trnh. Nh ng dng ny c k t u tin l # v m t kho ng tr ng sau k t ny. T p tin xorg.conf bao g m m t vi ph n nh hn, m i ph n c c u trc nh sau:

7.3 C u hnh chng trnh ch X


Section "tn_c a_ph n_ny" SectionEntry1 SectionEntry2 SectionEntry3 EndSection

175

Cc ph n c th n m trong t p tin c u hnh theo th t b t k. Trong t p tin c u hnh c th c cc ph n sau (khng nh t thi t ph i c t t c chng): Files ng d n n cc t p tin. ServerFlags ty ch n c a chng trnh ch . Module cc mun n p t ng. InputDevice m t cc thi t b nh p vo. Monitor m t mn hnh. Modes m t cc ch hnh nh. Screen c u hnh mn hnh. Device m t c c hnh (video card). ServerLayout c u hnh chung. DRI c u hnh DRI. Vendor c u hnh cho cc thi t b c a cc nh s n xu t c th no . Extensions ph n c u hnh m r ng. Cng c th g p hai ph n ho c nhi u hn c cng m t d ng (V d Screen), tuy nhin khi chng ph i c tn ring khng trng nhau. Ph n ServerLayout c u tin cao nh t, t c l chng trnh ch X b t u c t p tin c u hnh xorg.conf t y. Ph n ny xc nh nh ng thi t b vo/ra (input/output) no s c s d ng trong giao di n ho X. Thi t b nh p vo th ng l bn phm v chu t, chng c xc nh trong cc ph n InputDevice, m i ph n cho m t thi t b . Thi t b ra g m cc thnh ph n ring bi t l c c hnh v mn hnh th ng c nhm l i v i nhau trong ph n Screen. Trong ph n ServerLayout ph i c cc dng ch n cc ph n c a thi t b v a ni n. Nh v y, ph n ServerLayout ph i ch a t nh t nh ng dng sau: Section "ServerLayout" Identifier "Layout[all]" InputDevice "Keyboard[0]" "CoreKeyboard" InputDevice "Mouse[1]" "CorePointer" Screen "Screen[0]" EndSection

176

Giao di n ho

Ph n Screen xc nh mn hnh v c c hnh s d ng, ng th i a ra cc ch lm vi c c a mn hnh ( phn gi i v s l ng mu). Ph n ny c d ng 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 b n th y, ph n ny cho bi t c c mn hnh c dng l thi t b c tn Device[0], t c l GeForce4 MX 440 with AGP8X c xc nh trong ph n Device, v mn hnh c s d ng c tn Screen[0] (SAMSUNG SYNCMASTER 757NF(T)/707NF/700NF), xc nh trong ph n Monitor. Ph n Screen cn c th ch a m t vi ph n con (Subsection) Display tng ng v i m t gi tr su mu5 mn hnh.6 Trong m i ph n con, ng i dng c n t nh ng ch hi n th mu n dng v i su mu tng ng. Cc ch c li t k theo tn l y t ph n Modes, tn ny n m ngay sau t Modeline, v d , "1280x1024", "1024x768", "800x600". Nh v y, i v i ng i dng th ngha c a ch hi n th trng v i phn gi i c a mn hnh. My ch X s s d ng ch u tin n m trong danh sch theo m c nh. chuy n sang s d ng nh ng ch khc hy th nh n cc t h p phm <Ctrl>+<Alt>+<+> v <Ctrl>+<Alt>+<>, trong phm <+> v phm <> n m trn bn phm s . Ph n Monitor xc nh tham s c a mn hnh cng c hai ty ch n (hai dng) quan tr ng, l:
color depth su mu mn hnh th ng tnh theo bit v th ng nh n cc gi tr 8, 15, 16, 24. Gi tr ny cng cao th s l ng mu c th hi n th cng l n v hnh nh cng p. Tuy nhin c c mn hnh v b n thn mn hnh ph i t t c th h tr nh ng gi tr su mu l n. su mu m c nh n m trn dng DefaultDepth.
6 5

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

177

xc nh t n s c p nh t ngang (HorizSync) v d c (VertRefresh). y t n s c p nh t ngang v d c c th n m tng ng trong kho ng 3096, 50160. N u mu n t m t s c th no thay cho nh ng kho ng th c th s a thnh: HorizSync VertRefresh ho c: HorizSync VertRefresh 80, 90 124, 138 80 100

n u mu n c thm hai l a ch n ho c nhi u hn. T n s c p nh t mn hnh theo chi u ngang HorizSync tnh theo KHz cn t n s c p nh t d c VertRefresh tnh theo Hz. C n ph i xem xt ti li u c a mn hnh a ra nh ng gi tr chnh xc. N u khng c ti li u ny th hy tm ki m trn CD i km ho c trn trang Web c a nh s n xu t. Ph n ti p theo l Device m t c c mn hnh c a b n. Trong ph n ny quan tr ng nh t l dng ch ra driver. Trn my c a ti dng ny c d ng: Driver "nvidia"

T c l ti s d ng c c mn hnh v i chip c a hng NVIDIA v ci t driver l y v t trang Web c a hng ny. Driver g c c a X.org cho cc c c mn hnh nvidia c tn ng n hn nv. Hai ph n InputDevice xc nh chu t v bn phm. Hi n nay ph bi n cc bn phm c 104 phm v Linux h tr t t cc bn phm ny, do ty ch n Option "XkbModel" "pc104" lm vi c trong a s tr ng h p. Cc mi tr ng lm vi c nh KDE, GNOME, Xfce u c cc cng c l a ch n ki u bn phm, thay i cc thu c tnh c a bn phm nh t c l p l i (repeat rate), t l i gi tr c a cc phm, do lc ny khng c n thi t ph i tm hi u su v c u hnh k cho ph n ny. Cng ni lun, g ti ng Vi t th t t nh t l s d ng m t chng trnh chuyn d ng nh xvnkb, x-unikey ho c scim. Chng ta s quay tr l i v i ti ng Vi t trong m t chng sau. Trong ph n InputDevice tng ng v i chu t hy ch n 3 dng (ty ch n) sau: Option Option Option "ZAxisMapping" "4 5" "Protocol" "PS/2" "Device" "/dev/input/mice"

N u khng c tu ch n ZAxisMapping v i gi tr 4 5, th chng ta s khng dng c nt bnh xe c a chu t ko ln ko xu ng cc trang Web. Ty ch n Protocol xc nh giao th c lin l c v i chu t. N u chu t c k t n i vo m t c ng dnh ring cho n, th tham s Protocol s c gi tr l PS/2 ho c m t t di hn k t thc b ng PS/2. Trong tr ng h p c a ti l explorerps/2. Nh ng

178

Giao di n ho

giao th c cn l i s d ng cho chu t k t n i qua c ng ti p n i (c ng COM). N u chu t m i c s n xu t th cn c th dng gi tr Auto (t ng xc nh) y. Khng c n gi i thch ch c b n cng nh n ra l ty ch n Device xc nh tn t p tin thi t b c a chu t. Cu i cng, ph n Files c a t p tin xorg.conf th ng n m u t p tin ny v xc nh ng d n n cc th m c phng ch . C m t vi cch a ra nh ng th m c ny. Tuy nhin tr c khi thm m t th m c phng ch m i c n ki m tra l i xem th m c ny c t n t i khng v c ph i l th m c phng ch khng7 . N u khi ch y my ch X khng tm th y m t th m c phng ch no trong ph n Files, th n s a ra c nh bo. y khng ph i l l i nghim tr ng ph i d ng lm vi c, nhng ng i dng c n bi t gi i quy t nh ng tr ng h p nh khng tm th y phng ch mong mu n.

7.3.3

Th c u hnh /etc/X11/xorg.conf
trn, c nhi u cch t o ra xorg.conf, b ng cu l nh:

Nh ni

[root]# Xorg -configure t o m t cch t ng ho c [root]# xorgconfig c th ki m sot qu trnh ny. Sau khi t o t p tin xorg.conf thng th ng s n m trong th m c /etc/X11. y l th m c tiu chu n (chuyn dng) cho nh ng c u hnh c lin quan n my ch X. By gi hy th ch y giao di n ho b ng cu l nh X (vi t hoa). Xin ch y ch l lin k t m m n chng trnh my ch Xorg8 , do c n ph i c lin k t m m ny ho c c th th ch y th ng: [user]$ Xorg N u thnh cng, b n s th y m t con tr chu t hnh ch X gi a mn hnh v c th b qua nh ng dng d i y. N u th y m t mn hnh mu en, ho c mn hnh nh p nhy, t c l c u hnh v a t o c v n , hy nh n t h p phm <Ctrl>+<Alt>+<Backspace> quay v ch vn b n. T h p phm ny s gip b n d ng ch y my ch X trong nh ng tr ng h p c v n , v d khi my ch X khng tr l i (khng lm vi c), do hy nh n. Tuy nhin ng v i vng s d ng t h p phm <Ctrl>+<Alt>+<Backspace>, v r t c th c n m t cht th i gian chuy n vo giao di n ho . C kh nng nh ng tham s khng ng s lm h ng mn hnh c a b n ho c d n n nh ng h u qu khng l ng tr c, do khng nn th c u hnh X.org b ng cch k trn tr khi b n ch c ch n l mnh ng. T t hn h t l ki m tra t p tin c u hnh xorg.conf t o ra xem c nh ng l i nguy hi m no khng. th c hi n cng vi c ki m tra ch c n dng cu l nh:
Th m c phng ch ph i c t p tin fonts.dir th ng do cu l nh mkfontdir tr c ti p ho c dn ti p t o ra. Cu l nh file fonts.dir cho bi t fonts.dir ch l m t t p tin vn b n thng th ng nhng khng nn t s a i n. Hy dng chng trnh v a nh c t i lm vi c ny 8 B n c th ki m tra l i i u ny b ng cu l nh ls -l
7

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

179

Cu l nh ny ch y my ch X ch th v a k t qu th vo t p tin xprobe.log sau ny c th c d dng hn. N u khng ch ra t p tin xprobe.log th k t qu th s hi n ra trn mn hnh. Sau khi ch y cu l nh ny mn hnh s nh p nhy, sau s l i th y dng l nh c a h v v trong th m c hi n th i s c thm t p tin xprobe.log. Trong t p tin ny c r t nhi u thng tin c ch v h th ng X Window. C n ni r ng trong t p tin b n ghi /var/log/Xorg.0.log cn c nhi u thng tin hn, nhng trong a s tr ng h p, chng ta ch c n nh ng thng tin trong xprobe.log. Nh ng dng u tin cho bi t m t vi d li u v X.org. D i nh ng dng ny l thng tin v phin b n c a X Window System, ngy pht hnh, tn c a h i u hnh, phin b n nhn Linux v m t vi thng tin khc. Sau l thng bo v ni t t p tin b n ghi (th ng l /var/log/Xorg.0.log) v tn c a t p tin c u hnh c s d ng: (==) Log file: "/var/log/Xorg.0.log", Time: Wed Jan 31 22:25:09 2007 (==) Using config file: "/etc/X11/xorg.conf" Trong t p tin xprobe.log ny chng ta cn th y l i gi i thch cho nh ng k hi u s d ng d i cng nh trong t p tin b n 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 v y: () c ngha l nh ng gi tr tng ng thu c khi th (probe). (**) c ngha l tham s l y t trong t p tin c u hnh (v d xorg.conf). (==) c ngha l s d ng tham s theo m c nh. (++) c ngha l tham s l y t dng l nh ch y my ch X. (!!) sau d u hi u ny l nh ng ch . (II) sau d u hi u ny l nh ng thng tin khc nhau. (WW) sau d u hi u ny l nh ng c nh bo. (EE) sau d u hi u ny l nh ng thng bo l i. (NI) sau d u hi u ny l thng bo v nh ng tham s cn cha c pht tri n trong X.org. ?? nh ng thng tin khng r ngu n g c. L i v c nh bo tm th y trong xprobe.log chng ta s s a b ng cch thay i tham s tng ng trong t p tin /etc/X11/xorg.conf. Nhng t m th i chng ta s ti p t c xem xt xprobe.log v a t o ra. Trong t p tin ny cn c m t vi dng thng tin hi n th m i quan h gi a cc ph n trong t p tin c u hnh:

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

Giao di n ho

trong t p tin ny r t c th chng ta s g p nh ng c nh bo v th m c ch a phng ch ni ph n tr c, c d ng 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. T i th i i m ny, nh ng c nh bo tng t nh trn khng nh h ng nhi u n vi c s d ng X Window. Hy c g ng s a h t nh ng l i ((EE) tm th y, ki m tra l i b ng: [user]$ X -probeonly -verbose 1 > xprobe.log 2>&1 r i nhn vo t p tin xprobe.log xem c cn l i no khng. N u khng cn n a th c th m nh d n ch y ch ho b ng cu l nh X nh ni u ph n ny. T t nhin, b n c n bi t r ng, khng c l i tm th y trong xprob.log cha b o m vi c ch y thnh cng ch ho . Do n u v n th y m t mn hnh en, th hy quay tr l i dng l nh b ng t h p phm <Ctrl>+<Alt>+<Backspace> r i ki m tra k cng k t qu c a cu l nh: [user]$ X -probeonly -verbose 1 > xprobe.log 2>&1 i khi c th th ch n m t phn gi i ho c su mu nh hn. V d ch n phn gi i 1024x768 v su mu 16 thay v 1600x1200 v 24. Ni v ch lm vi c c a mn hnh khng th khng k n m t ti n ch nh nh ng c ch l xvidtune. S d ng ti n ch ny b n s tm c ch hi n th thch h p cho mn hnh c a mnh. Ti n ch ny ch y trong giao di n ho , do hy ch y X b ng startx r i ch y xvidtune t m t trnh l nh no (v d xterm). Chng ta s th y m t c a s hi n ra nh trong hnh 7.3, sau khi ng c a s c nh bo cho bi t cc nh pht tri n khng ch u trch nhi m v vi c s d ng xvidtune gy ra. Nh ng c nh bo nh v y b n s th ng xuyn g p khi s d ng cc s n ph m c lin quan n Linux nh chng trnh, sch, bo, h ng d n,. . . v trn xterm s xu t hi n m t vi dng thng tin:

7.3 C u 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 bi t ch hi n th ang c s d ng d ng:

"1280x1024" 167.32 1280 1376 1512 1744 1024 1025 1028 1078 Chnh nh ng dng thng tin d ng ny c s d ng trn cc dng Modline c a ph n Modes t p tin c u hnh xorg.conf. ch nh hnh nh trn mn hnh, v d di chuy n sang ph i, hy s d ng (nh n vo) nt Right (khi ny cc s tng ng pha trn s thay i), r i nh n nt Apply. Tng t nh v y s d ng cch nt Left di chuy n sang tri, Up ln trn, Down xu ng d i, Taller, Wider tng kch th c hnh nh theo chi u cao, v b ngang ho c gi m chng xu ng b ng Narrower v Shorter. Trong l n ch y th xvidtune cu i cng, ti khng s d ng c nh ng ch c nng ch nh s a k trn v nh n c thng bo khng th th c thi (hnh 7.4).

Hnh 7.4: Chng trnh xvidtune khng ch u ch nh hnh nh

182

Giao di n ho

Thi t l p ban u c th ph c h i b ng nt Restore. Kh nng ny c ch khi hnh nh thu c sau khi ch nh s a khng lm b n hi lng b ng lc u. Nt Fetch dng yu c u nh ng gi tr thi t l p hi n th i c a mn hnh. Nt Auto dng chuy n gi a hai ch khng t ng v t ng. T ng c ngha l ng i dng khng c n nh n vo nt Apply c th th y nh ng thay i n a m s th y chng ngay l p t c khi c ch nh s a no c th c hi n. Nt Test dng th t m th i nh ng gi tr t ra. Nt Show dng a ra cc gi tr nh ni trn. Hai nt Next v Prev dng chuy n cc ch hi n th , gi ng nh hai t h p phm <Ctrl>+<Alt>+<+> v <Ctrl>+<Alt>+<>. Sau khi ch n xong cc gi tr thch h p, hy nh n nt Show r i ghi ln gi y nh ng gi tr ny, v ng qun thm vo hai gi tr t n s c p nh t mn hnh Horizontal Sync v Vertical Sync n m gc ph i pha d i c a c a s xvidtune. Cu i cng hy m t p tin xorg.conf, ki m tra l i cc dng Modeline v ghi vo cc gi tr tng ng. V i nh ng thng tin gi i thi u v ng d ng xvidtune chng ta k t thc ph n c u hnh chng trnh ch X. Xin hy lu l cc phin b n m i c a cc b n phn ph i Linux c kh nng c u hnh X r t t t ngay trong qu trnh ci t, do hy v ng l b n s khng ph i t mnh ch nh s a t p tin xorg.conf. Tuy nhin nh ng thng tin trong ph n ny s c ch khi c v n g x y ra, ho c n gi n l khi b n mu n tm hi u v t o cho mnh m t c u hnh chng trnh ch X ring. Cn by gi chng ta s xem xt qu trnh kh i ng ton b h th ng X Window v cch tc ng ln qu trnh ny.

7.4

Kh i ng h th ng X Window

C th kh i ng h th ng X Window b ng nhi u cch. Trong khi ci t h i u hnh Linux, c th ng i dng ng v i ngh c a trnh ci t t ng ch y h th ng ny. N u vi c ci t v c u hnh X.org bnh th ng, th ngay sau khi kh i ng h i u hnh, b n s chuy n vo ch ho . Cch kh i ng ny c m t vi i m b t l i: th nh t, v s d ng b nh v s d ng ti nguyn ni chung (trnh qu n l mn hnh s n m t m t ph n b nh , v nhi u cng vi c c a b n c th th c hi n trong ch vn b n m b n l i ph i i trong khi kh i ng X); th hai, khi c v n x y ra c th b n s khng bi t ph i gi i quy t nh th no ngoi vi c ci t l i. Do m c d nh ng b n phn ph i m i lm vi c r t t t phng di n ch h a, ti v n ch n kh i ng vo ch vn b n (b ng cch t gi tr initdefault b ng 3 trong t p tin /etc/inittab) v ch ch y X Window khi c n thi t. Lm th no kh i ng c ch ho theo cch khc? Nh b n bi t t nh ng ph n tr c, u tin chng ta c n kh i ng my ch X. i u ny c th th c hi n b ng cch ch y th ng chng trnh Xorg (ho c lin k t m m X) t th m c /usr/bin/X11/. B n bi t k t qu thu c l m t mn hnh tr ng v i con tr hnh cho n m gi a. Nhng ngoi ra th khng cn c g khc v b n khng th th c hi n thm m t thao tc no tr di chuy n con tr b ng chu t. l b i v cha c m t trnh qu n l c a s no v cha c m t chng trnh khch (client) no c ch y. V th hy nh n t h p phm <Ctrl>+<Alt>+<Backspace> d ng ch y my ch X v quay v ch vn b n.

7.4 Kh i ng h th ng X Window

183

C m t cch t t hn (nhng khng ph i l t t nh t) chuy n vo ch ho l ch y cu l nh xinit. Cu l nh xinit, cng n m trong th m c /usr/bin/X11 nh Xorg, dng ch y my ch X v t nh t m t chng trnh khch. Theo m c nh xinit th c hi n script X :0 t c l ch y chng trnh my ch X trn mn hnh s 0. N u trn dng l nh ch y xinit khng ch ra chng trnh khch c n ch y, th chng trnh xinit s tm t p tin .xinitrc c trong th m c c a ng i dng th c hi n t p tin ny gi ng nh cc script khc, t c l ch y nh ng cu l nh c trong .xinitrc. N u khng c t p tin .xinitrc , th theo m c nh xinit s th c hi n cu l nh sau: xterm -geometry +1+1 -n login -display :0 K t qu l ng i dng s th y m t mn hnh tr ng khng v i m t c a s trnh l nh xterm duy nh t. V b i v cha c trnh qu n l c a s no c ch y nn b n s khng th lm g (di chuy n, thay i kch th c, v.v. . . ) c v i c a s ny, nhng c th dng n th c hi n nh ng chng trnh khc k c trnh qu n l c a s . V d , hy th ch y cu l nh twm ho c fvwm (m t trong hai trnh qu n l c a s ny th ng c ci t theo m c nh). Sau b n s th y c a s xterm c thay i v c th di chuy n b ng cch ko thanh trn u c a n. N u trn my c a b n c ci cc trnh qu n l c a s v mi tr ng lm vi c khc, v d fluxbox, icewm, Xfce4, KDE v GNOME, th hy th ch y m t trong cc cu l nh sau: [user]$ [user]$ [user]$ [user]$ [user]$ fluxbox icewm-session xfce4-session startkde gnome-session

N u d ng l i cch kh i ng giao di n ho ny, th m i l n chng ta s ph i l p i l p l i m t s cu l nh, l chng ta cn cha k n nh ng m t y u khc c a cch ny. Do , ng i dng c n s d ng kh nng t o ra t p tin script .xinitrc t ng ha nh ng cng vi c l p l i n nhm chn ny. V i m c ch h c t p, ti xin a ra d i y v d m t script .xinitrc dng ch y ng h , hai c a s xterm v cu i cng ch y trnh qu n l c a 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 di n ho

C n ch l nh ng chng trnh ch y t .xinitrc ph i c th c hi n trong ch n n (background), n u nh chng khng k t thc ngay l p t c. Trong tr ng h p ng c l i, nh ng chng trnh ny s ngn c n khng cho ch y nh ng chng trnh n m pha sau. Tuy nhin m t trong nh ng chng trnh ny (th ng l trnh qu n l c a s ho c trnh l nh d ng xterm) ph i c th c hi n ch bnh th ng (foreground), cho vi c ch y script khng b k t thc. Chng trnh khch ny c tn g i c bi t l magic client. Khi ng i dng ng magic client, chng trnh xinit bi t l cng vi c hon thnh v n s t t t. Trong v d trn, n u trnh qu n l c a s c c u hnh ng, th c th d ng phin lm vi c (session) v i giao di n h a, ng i dng ph i ch n m c Exit trong th c n c a twm. C th dng nh ng tham s dng l nh c a xinit thay cho script .xinitrc. Trn dng l nh c th ch ra chng trnh khch. Chng trnh khch ph i l tham s u tin c a dng l nh g i xinit. Tn c a chng trnh khch ph i b t u b ng d u g ch cho (/) ho c d u ch m (.), n u khng chng trnh s coi chng nh l cc tham s c n ph i thm vo chng trnh khch n m pha tr c. B ng cch ny c th thm tham s vo cho cc chng trnh (v d mu n n v mu ch cho xterm) m khng c n ph i g l i dng l nh t u. T t c nh ng g n m sau d u g ch cho i () s c thm vo dng l nh g i chng trnh ch X. V d d u hai ch m v m t ch s no (:n) dng ch ra m t mn hnh c s th t khc 0 (theo m c nh). T ng k t m t s v d g i chng trnh xinit: [user]$ xinit Cu l nh ny s ch y my ch X, th c hi n script .xinitrc n u c trong th m c c a ng i dng, n u khng s ch ch y xterm. [user]$ xinit -- :1 Ch y my ch X trn mn hnh s 1. C ch th c u hnh m i khi c my ch X ch y trn mn hnh m c nh (s 0). [user]$ xinit -geometry 80x25+0+0 -fg white -bg black Ch y my ch X, v chng trnh xterm ch y theo m c nh s nh n c cc tham s li t k trn dng l nh. Script .xinitrc s khng c th c hi n. [user]$ xinit -e widgets -- :2 Ch y my ch X trn mn hnh c s 2 v a t i chng trnh khch xterm tham s e widgets. V ng i dng m i th ng khng c kh nng t o ra m t t p tin script .xinitrc t t, nn trn cc b n phn ph i lun c cc script do cc nh pht tri n vi t s n th c hi n ch c nng ny. V d m t trong nh ng script ny l startx n m cng ch v i Xorg (/usr/bin/X11/). Script ny c m t trang h ng d n s d ng startx(1) ring. C u trc c a startx c th r t ph c t p v khng d dng cho ng i dng m i cha quen v i ngn ng l p trnh c a Bash, nhng n u nhn k th script ny th c hi n 3 cu l nh chnh sau:

7.4 Kh i ng h th ng X Window xauth add $display . $mcookie xauth add hostname -f $display .$mcookie xinit $client $clientargs -- $server $display $serverargs

185

T c l cu i cng th startx cng g i cu l nh xinit m chng ta v a xem xt v ch c t tr c cc gi tr c n thi t cho tham s dng trn dng l nh c a xinit m thi. V d , tham s tn t p tin script .xinitrc c xc nh b ng bi n clientargs. N u c t p tin .xinitrc trong th m c c a ng i dng th s s d ng n, t c l clientargs = $HOME/.xinitrc, n u khng s l y t p tin xinitrc c a h th ng, t c l clientargs = /etc/X11/xinit/xinitrc. Vi c t gi tr cho cc tham s khc cng x y ra tng t . Cu l nh xauth v ty ch n auth $HOME/.Xauthority dng xc nh n ng i dng ang ch y ch h a. Nh v y ngay sau khi ci t ng i dng c th dng cu l nh startx kh i ng h th ng X Window thay cho l nh xinit v i cc tham s kh nh . Nhng lm th no l a ch n trnh qu n l c a s (mi tr ng lm vi c) thch h p?

7.4.1

L a ch n trnh qu n l c a s

M t khi lm c cho h th ng X Window ch y thnh cng, th b n c r t nhi u kh nng c u hnh, ty ch nh n theo c a mnh. Nh ng kh nng c u hnh, ty ch nh ny l i ph thu c r t nhi u vo trnh qu n l c a s m b n s d ng. Nh ni ngay t u, c r t nhi u trnh qu n l c a s cng nh mi tr ng lm vi c d a trn nh ng trnh qu n l c a s ny. Ng i dng c th l a ch n m t trong nh ng trnh qu n l c a s ngay t lc b t u ch y ch h a. V d c th th c hi n i u ny b ng t p tin .xinitrc d i y: #!/bin/sh # $HOME/.xinitrc # dng Xfce4 theo m c nh WMGR="xfce4-session" # t t xscreensaver xset s noblank # ch y screensaver sau 10 pht xset s 600 2 # ch y xterm xterm -bg black -fg white -fn 7x14 -geometry 80x24+57+0 & # n u a ra m t Window Manager khc # th dng n thay cho Xfce4 if [ "$1" != "" ] ; then WMGR=$1 fi exec $WMGR M c d khng c n thi t, nhng c th chuy n t p tin ny thnh c th th c thi b ng cu l nh chmod quen thu c: [user]$ chmod u+x .xinitrc

186

Giao di n ho

T p tin .xinitrc ny cho php ng i dng l a ch n trnh qu n l c a s (ho c mi tr ng lm vi c) khi kh i ng h th ng X Window b ng cu l nh startx. V d kh i ng KDE, u tin chng ta tm xem startkde n m u r i 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 v y i v i GNOME: [user]$ which gnome-session /opt/gnome/bin/gnome-session [user]$ startx /opt/gnome/bin/gnome-session Ch l n u ch ch y startx khng c tham s th Xfce4 s c kh i ng theo m c nh. T t nhin b n c th t o cho m i trnh qu n l c a s v mi tr ng lm vi c m t t p tin .xinitrc ring, v d cho KDE t p tin .xinitrc-kde: #!/bin/sh #$HOME/.xinitrc-kde # Ch y m t s chng trnh #xset b off & # t m t s bi n, v d th vi n m # xvnkb c n #export LD_PRELOAD=/usr/local/lib/xvnkb.so # Dng export export export cch nh p SCIM lm m c nh XMODIFIERS=@im=SCIM GTK_IM_MODULE=scim QT_IM_MODULE=scim

# Ch y mi tr ng lm vi c exec /opt/kde3/bin/startkde Thm thu c tnh c th th c thi cho n: [user]$ chmod u+x .xinitrc-kde Tng t nh v y c th t o cc t p tin .xinitrc-gnome, .xinitrc-xfce, .xinitrc-fluxbox, . . . b ng cch thay th dng cu i cng c a t p tin k trn tng ng b ng m t trong nh ng dng d i y: exec /opt/gnome/bin/gnome-session exec /usr/bin/xfce4-session exec /usr/bin/fluxbox V khi c n kh i ng m t trnh qu n l c a s no , th ch c n sao chp t p tin tng ng vo v tr c a .xinitrc, v d kh i ng Xfce4: [user]$ cp .xinitrc-xfce .xinitrc

7.4 Kh i ng h th ng X Window

187

7.4.2

Mi tr ng lm vi c KDE v GNOME

M i ng i dng my tnh d c nhi u kinh nghi m hay t u c g ng t o cho mnh m t mi tr ng lm vi c quen thu c cho b n thn c th lm vi c nhanh hn (c hi u su t hn) b ng nh ng thao tc c th n gi n nh t o ng d n n nh ng chng trnh v th m c th ng dng, thay i nh n n, hay ph c t p hn nh ch n phm nng (k c b ng bn phm v b ng chu t) m nhanh m t chng trnh ho c th c hi n m t thao tc no trong chng trnh ang m , l a ch n cc ng d ng thch h p cho cng vi c. Trn h i u hnh Linux, ng i dng hn bao gi h t c th t o cho mnh m t mi tr ng lm vi c c m t khng hai, v d b ng cch ch n m t trnh qu n l c a s a thch nh t r i sau ch n cc chng trnh ng d ng ring, c n cho cng vi c c a mnh. Tuy nhin, cch k trn khng ph i lc no cng thu n ti n v quan tr ng hn l khng ph i lc no cng d dng. Ng i dng c n th qua nh ng trnh qu n l c a s chnh r i sau m i a ra c l a ch n cho mnh, cha k n s l ng cc chng trnh ng d ng cho Linux l khng th m c. Do u tin nn xem xt kh nng l a ch n m t trong nh ng mi tr ng lm vi c ang pht tri n trong nh ng nm g n y. Trong thu t ng ti ng Anh th ng dng k hi u vi t t t GUI Graphical User Interface, t c l giao di n h a c a ng i dng. Chng ta s s d ng c m k t vi t t t ny d ng g c c a n GUI. GUI l m t b cc chng trnh ng d ng c ki m tra v nhm l i v i nhau lm vi c trong ch ho , bao g m trnh qu n l c a s v cc chng trnh khc v c cng m t giao di n chung. S d ng GUI thay cho m t mi tr ng lm vi c t t o ra c nhi u u i m: u tin l ti t ki m c nhi u th i gian; th hai l s d dng, m i th c s n ch c n ci t v s d ng; th ba, chng ta s thu c cc chng trnh v i m t giao di n chung, i u ny cng h t s c quan tr ng n u khng ni l i m khc bi t quan tr ng nh t c a GUI. C m t vi mi tr ng lm vi c h a mi n ph (t do), cng nh thng m i. Trong s cc mi tr ng t do th KDE v GNOME ph bi n r ng ri nh t. C th g i KDE v GNOME l hai ng l n trong th gi i GUI. Cu h i mi tr ng no trong s hai mi tr ng ny t t hn ho c c n l a ch n KDE hay GNOME v t qu khun kh c a cu n sch ny, v trn m ng c r t nhi u cu c tranh ci cng nh bi bo xung quanh v n ny. Fan c a GNOME th ni GNOME t t hn, fan c a KDE th ni ng c l i. B n thn ti thch dng KDE hn v l do s d ng GNOME tr c y khng c thnh cng l m, ng d ng c a GNOME lin t c b l i crash (v ). Theo nh nhi u ngu n thng tin th ng d ng GNOME by gi ch y n nh hn, nhng ti v n trung thnh v i KDE. Ti thch KDE v giao di n p v c th (ni chnh xc l c n thi t) ch nh s a p hn. C n cng b ng m ni r ng nh ng phin b n g n y c a GNOME cng c v p khng km KDE. Cch kh i ng vo mi tr ng lm vi c KDE (GNOME) qua cu l nh startx b n bi t t ph n n m ngay tr c. N u mu n s d ng KDE lm mi tr ng lm vi c m c nh cho ton b h th ng th hy m t p tin c u hnh h th ng, th ng l /etc/sysconfig/windowmanager, v thay th gi tr c c a DEFAULT_WM thnh kde (t c l thu c dng DEFAULT_WM="kde" (t c l n u mu n s d ng GNOME, th ch c n t vo gi tr gnome). Trong chng t i chng ta s nghin c u k hn v mi tr ng lm vi c

188

Giao di n ho

KDE. Nhng n u mu n ngay by gi b n c th xem thng tin v mi tr ng ny t trang ch c a n http://www.kde.org ho c t trang ti ng Vi t http: //www.kde-vi.org (r t ti c l trang KDE-vi khng c c p nh t k p th i v nhi u l do). Trang ch c a GNOME n m t i a ch http://www.gnome.org.

7.4.3

Mi tr ng lm vi c Xfce

Mi tr ng lm vi c Xfce, cng gi ng nh KDE v GNOME, thu c vo s mi tr ng t do, m ngu n m . i m khc chnh c a Xfce l s nh g n v lm vi c nhanh, v cng v v y m c t s l ng chng trnh ng d ng cng nh kh nng c u hnh hn so v i hai ng l n k trn. Tuy nhin ng v v y m nh gi th p kh nng c a Xfce. N u c n thi t b n c th ch y cc ng d ng KDE v GNOME trong Xfce. Mi tr ng Xfce c n t b nh hn, dnh b nh cho nh ng ng d ng khc. Mi tr ng Xfce khng i h i ph i c m t b x l m nh. Do , Xfce thch h p v i nh ng my tnh c c u hnh bnh th ng, khng c kh nng lm vi c v i KDE v GNOME ho c lm vi c r t ch m. T t c nh ng u i m c a Xfce d n n s ph bi n c a n trong s nh ng ng i dng c cht kinh nghi m lm vi c v i Linux. Phin b n hi n th i c a Xfce l 4 v c m t trnh qu n l t p tin ring (Thunar), m t trnh gi i nn (Xarchiver), trnh l nh (Terminal), trnh xem phim, h tr panel, v.v. . . B n c th xem nh ch p Xfce sau khi s a cht t trn hnh 7.5 ho c lm quen g n hn v i Xfce qua trang ch c a n http://www. xfce.org.

7.4.4

S d ng trnh qu n l mn hnh

Nh b n bi t, c th t ng ch y h th ng X Window ngay khi kh i ng my tnh b ng cch s d ng chng trnh c tn g i trnh qu n l mn hnh (Display Manager), v d X Display Manager xdm. Trong tr ng h p ny, ng i dng th y ngay giao di n h a GUI, m khng c n ph i kh i ng n b ng l nh startx. Khi ny v n c kh nng chuy n v giao di n console b ng t h p phm <Ctrl>+<Alt>+<F#> (# y b ng t 1 n 6), sau chuy n quay l i vo mi tr ng h a b ng t h p <Ctrl>+<Alt>+<F7>. t ng ch y trnh qu n l mn hnh (v d xdm), c n s a t p tin c u hnh kh i ng /etc/inittab. Tm trong t p tin ny dng id:3:initdefault: xc nh c p kh i ng (runlevel) theo m c nh, v s a n thnh id:5:initdefault: S thay i ny s khi n Linux chuy n sang qu n l mn hnh nh xdm cng c login nh p c a mnh v password a vo m v password ng i dng c n nh n <Enter> c a h th ng. kh i ng c p 5. Trn trnh ng i dng a vo tn ng t kh u. Sau khi nh p xong login vo mi tr ng h a m c nh

7.4 Kh i ng h th ng X Window

189

Hnh 7.5: Mi tr ng lm vi c Xfce

N u b n c ch n ci t KDE ho c GNOME th r t c th h th ng s s d ng kdm (KDE Display Manager) ho c gdm (GNOME Display Manager) thay cho xdm. kdm v gdm th c hi n cng vi c tng t nh c a xdm cho php ng i dng ng nh p vo h th ng, nhng c m m d o hn: c th ch n s c thi, t c l thay i v ngoi theo mnh, c th ch n mi tr ng lm vi c (trnh qu n l c a s ) v ngn ng tr c ti p tr c khi vo, c th th c hi n cc thao tc khc nh t t my, kh i ng l i,. . . Ch l n u dng m t trnh qu n l mn hnh nh kdm hay gdm th t h p phm <Ctrl>+<Alt>+<Backspace> s khng d ng my ch X nh bnh th ng, m s th c hi n thao tc kh i ng l i my ch X. T c l khi ny c th dng <Ctrl>+<Alt>+<Backspace> c p nh t nh ng thay i t o ra trong c u hnh my ch X cng nh ton b h th ng X Window.

Chng 8 Lm vi c trong mi tr ng KDE

Conquer your Desktop! konqueror


Nh ni trong chng tr c, mi tr ng lm vi c KDE cng v i GNOME hi n ang ph bi n trong th gi i ng i dng Linux. KDE, GNOME v Xfce c th ni l hnh thnh m t ci ki ng ba chn b n v ng, trn n n t ng X.org, cho mi tr ng ho c a Linux. Trong chng ny chng ta s tm hi u k hn v mi tr ng GUI v i tn KDE. Thng tin c trong chng ny gip b n lm quen v i KDE, bi t cch c u hnh n theo mnh, v t t nhin l lm quen v i m t thnh ph n r t quan tr ng c a KDE, l nh ng ng d ng i km gip ng i dng th c hi n nh ng cng vi c th ng ngy nh so n th o vn b n, nghe nh c, xem phim, lm h a . . . cu i chng b n s tm th y m t s ngu n thng tin khc gip b n ti p t c tm hi u KDE. i u ny l c n thi t v m t chng sch ng n khng th ni h t v mi tr ng m nh ny.

8.1

B t u lm vi c v i KDE

KDE l vi t t t c a K Desktop Environment m t mi tr ng h a cho Linux v nh ng phin b n UNIX khc, bao g m hng trm ng d ng v h tr trn 60 ngn ng khc nhau. KDE c pht tri n trong khun kh c a c ng ng m ngu n m (Open Source Software hay vi t t t l OSS), t c l c phn ph i m t cch t do (mi n ph) cng v i m ngu n. KDE c cc tnh ch t c a m t mi tr ng lm vi c hi n i: y tnh nng, s d ng thu n ti n v thi t k p m t. Phin b n hi n th i c a KDE l 3.5.6, v cc nh pht tri n KDE ang lm vi c ngy m cho ra i phin b n 4.0, m t phin b n mang y mong i v i nh ng tnh nng m i c a b n thn mi tr ng KDE, cng nh cc ng d ng c a n. Nh ng hnh ch p cng nh m t d i y thu c v phin b n 3.5.6, nhng cng c th p d ng cho nh ng phin b n khc.

8.1.1

ng nh p vo KDE

Trong chng tr c b n bi t cch kh i ng vo mi tr ng KDE, s d ng .xinitrc ho c t p tin c u hnh /etc/sysconfig/windowmanager cng v i script startx. Nhng thng th ng khi ci t KDE, ng i dng s ci t c trnh qu n l mn hnh KDM. V n u ch n ch y vo ch ho ngay sau khi

8.1 B t u lm vi c v i KDE

191

kh i ng h th ng th b n s th y m t mn hnh nh trn hnh 8.1 hi n ra. Nh

Hnh 8.1: Mn hnh ng nh p KDM v y, mn hnh ng nh p m c nh c a KDM c hai ng i dng g vo tn ng nh p (username) v m t kh u (password) ho c ch n tn ng nh p c a mnh bn tri hai ny, ngoi ra c th ch n cc m c sau: Session Type Ch ra mi tr ng lm vi c (trnh qu n l c a s ) mu n dng khi ng nh p vo. N u c nh ng mi tr ng lm vi c khc trn h th ng th chng s c li t k trong m t danh sch hi n ra. Ch s d ng m c ny khi b n mu n dng m t mi tr ng lm vi c khc v i mi tr ng m c nh (th ng l KDE). System Th c hi n cc cng vi c c lin quan n h th ng, nh kh i ng l i ho c t t my. Remote Login (ng nh p t xa) gip b n ng nh p vo mi tr ng lm vi c trn m t my khc qua m ng. kh i ng mi tr ng lm vi c m c nh KDE, ch c n nh p vo tn ng i dng, m t kh u r i g <Enter>.

8.1.2

V ngoi c a KDE

N u b n t ng kh i ng vo KDE, th lm quen v i v ngoi c a mn hnh sau khi ch y mi tr ng ny. V d , hnh 8.2 l mn hnh KDE trn my c a ti

192

Lm vi c trong mi tr ng KDE

Hnh 8.2: V ngoi c a mn hnh sau khi ch y KDE

sau khi c c u hnh, ch nh s a m t cht. Nh b n th y, mn hnh c th chia thnh hai ph n: Cc thanh panel Cc thanh panel th ng n m ph n ngoi cng ( ng bin) c a mn hnh, t c l trn cng, d i cng, bn tri ho c bn ph i. Panel dng ch y cc ng d ng th ng dng, chuy n qua l i gi a cc khng gian lm vi c. Trn thanh panel chnh cn c nt g i l KMenu trnh n chnh c a h th ng KDE, th ng n m u bn tri c a thanh panel. Nt ny c bi u t ng hnh ch K theo m c nh, nhng m i b n phn ph i c th t vo v tr ny m t bi u t ng khc nhau. Nh trn hnh 8.2, bi u t ng l hnh con t c k hoa, bi u t ng c a OpenSUSE Linux. Nt KMenu dng m ra m t trnh n cc ng d ng m KDE tm th y trn h th ng, gip ng i dng ch y nh ng ng d ng ny bao g m c nh ng chng trnh khng c bi u t ng trn thanh panel no. Mn hnh (Desktop) y l ton b ph n cn l i c a mn hnh, trn c th t cc bi u t ng khc nhau dng ch y cc ng d ng (shortcut) ho c t cc t p tin, th m c th ng dng. Trong tr ng h p c a mnh, ti b i t t c nh ng bi u t ng , tuy nhin minh h a ti t o ra hai ci l l4u, digikam.

8.1 B t u lm vi c v i KDE

193

y c n ni thm m t cht v khi ni m khng gian lm vi c nh c n trn. KDE, cng nh h u h t cc mi tr ng lm vi c v trnh qu n l c a s c a Linux, c h tr m t s l ng khng gian lm vi c. Nh c khng gian lm vi c ng i dng c th t cc ng d ng thu c v m t cng vi c trn m t mn hnh ring. Do khng b r i khi c nhi u ng d ng cng ch y. N u coi mi tr ng lm vi c KDE l m t ngi nh l n, th m i khng gian lm vi c l m t cn phng trong nh , v t t c phng trong nh ny c ch c nng nh nhau, m c d c th c mu sn, trang tr khc nhau. chuy n qua l i gi a cc khng gian lm vi c, th c n nh n vo tng ng v i khng gian trn trnh nh (applet) KPager n m trn thanh panel. Trn hnh 8.2, b n s th y trnh nh c hai khng gian lm vi c l Lm vi c v Gi i tr. S l ng cng nh tn g i v m t vi c u hnh khc c a khng gian lm vi c c th thay i theo mu n c a ng i dng. Tuy nhin, theo kinh nghi m c a ti th ng i dng bnh th ng khng c n qu 3 khng gian. V i khi c u hnh my tnh (b x l, s l ng RAM) khng cho php m qu nhi u ng d ng m t lc c n ph i s d ng nhi u khng gian lm vi c. Sau m t th i gian lm vi c b n s tm th y s l ng c n thi t cho mnh. Thng th ng, ph n khng gian chnh c a thanh panel l vng thanh cng c (taskbar). Thanh cng c dng hi n th tn g i, bi u t ng c a nh ng ng d ng ang ch y v chuy n qua l i gi a chng. M i ng d ng ang ch y c m t th ring trn thanh cng c . Khi ng i dng nh n chu t vo th ny, th ng d ng s c hi n th trn mn hnh, ng i ta ni ng d ng c a vo tr ng thi ho t ng hay (active). gc bn ph i c a thanh panel th ng c ng h . hai u c th c cc nt c hnh mi tn tam gic. Khi nh n vo nt ny, thanh panel s b n i, gi ng nh b ko v gc tng ng c a mn hnh. Khi ny trn mn hnh ch cn l i mi tn tam gic . Nh n vo mi tn ny s a thanh panel quay tr l i. Thanh panel c a KDE cn c tn g i Kicker, v t p tin chng trnh tng ng l kicker. N u ch ng may c l i g , v thanh panel c a b n t nhin bi n m t, th b n c th ph c h i a n tr l i b ng cch ch y cu l nh (trn xterm ho c konsole ho c m t trnh l nh khc): [user]$ kicker & ho c nh n <Alt>+<F2> m h p tho i ch y chng trnh (hnh 8.3) r i g vo kicker v <Enter>. M t tnh nng quan tr ng khc c a KDE l h th ng

Hnh 8.3: H p tho i ch y chng trnh

194

Lm vi c trong mi tr ng KDE

tr gip tr c ti p trn mn hnh. N u b n a chu t ln m t bi u t ng, m t nt no trn mn hnh ho c trn thanh panel, th s c m t c a s nh hi n ra cho bi t nt hay bi u t ng c tn l g v c cng d ng g, t c l m t v n. Thu t ng ti ng Anh dng cho tr gip lo i ny l tooltips. V d v tooltips c trn hnh 8.4.

Hnh 8.4: Tr gip c ch tooltips

Kh nng s d ng chu t c a cc mi tr ng lm vi c hi n i l t i a. Nt chu t ph i trong KDE ph c v cho vi c m m t trnh n c n i dung ph thu c vo hon c nh (context menu). Trnh n ny s hi n ra khi nh n chu t ph i ln b t k m t thnh ph n no c a mn hnh, k c ph n mn hnh tr ng (n n mn hnh). Trong trnh n ny ng i dng c th ch n m t trong nh ng hnh ng c th p d ng cho ph n t c a mn hnh. V d , khi nh n chu t ph i ln n n mn hnh, c th ch n cc cu l nh c u hnh n: t o bi u t ng m i, c p nh t, c u hnh nh n n, . . .

8.1.3

Trnh n KMenu

m ra trnh n chnh c a mi tr ng lm vi c KDE (KMenu), chng ta c n nh n vo bi u t ng c a n. Bi u t ng ny theo m c nh c hnh ch K nh bi u t ng u chng sch ny. Tuy nhin cc b n phn ph i Linux th ng thay th n b ng bi u t ng logo c a mnh. Sau khi nh n vo bi u t ng c a KMenu m t trnh n nh trong hnh 8.5 s hi n ra. Cch khc m KMenu l dng t h p phm <Alt>+<F1>. Trnh n ny c s thay i l n so v i trnh n c i n c a KDE, c th nghi m l n u trn OpenSUSE. Cc nh pht tri n KDE s dng s thay i ny trong phin b n 4.0 s p t i, cho nn ti s m t v KMenu ki u m i ny y. Trong KMenu m i cc bi u t ng c m t i m g chung c nhm l i v i nhau v t vo t ng th (tab) ring. Trn hnh 8.5 chng ta th y c 5 th nh v y: Favorites (nh ng ng d ng a thch), History (nh ng ng d ng, t p tin m i m g n y), Computer (nh ng th m c, a, ng d n chnh c a my tnh), Applications (nh ng ng d ng c trn h th ng, c l y l ph n quan tr ng nh t i v i b n) v Leave (dng thot ra kh i h th ng v th c hi n m t s hnh ng khc). Trong ph n Applications b n s tm th y r t nhi u ng d ng c ch. Nh ng ng d ng ny l i c s p x p trong m t h th ng trnh n c tr t t , m i ng d ng n m trong m t nhm th c hi n m t ch c nng chung, nh Internet, Graphics, Multimedia, Office. Nhm ng d ng s c hnh mi tn tam gic cu i. m m t nhm ng d ng chng ta c n nh n chu t vo tn c a n. Khi ny s m ra nh ng ng d ng (v c th c nhm ng d ng) thu c vo nhm ny. Mu n quay l i th nh n chu t vo thanh c hnh mi tn tam gic n m bn tri. N u mu n thm m t chng trnh no vo danh sch c a th Favorites, th

8.1 B t u lm vi c v i KDE

195

Hnh 8.5: Trnh n chnh c a KDE

c n nh n chu t ph i vo tn (bi u t ng c a chng trnh tng ng r i ch n cu l nh Add to Favorites. M t tnh nng m i c bi t h u ch c a trnh n KDE l tnh nng tm ki m. V d b n mu n tm ng d ng c tn amarok. Hy nh p tn vo tm ki m n m bn c nh ch Search, r i nh n <Enter> ho c i m t cht. K t qu tm ki m s hi n th ngay trong trnh n KMenu (hnh 8.6). Ngoi ng d ng, trong k t qu hi n th cn c th c thm m t vi t p tin c lin quan n t tm ki m. Mu n ch y (m ) k t qu no , th ch c n nh n vo dng tng ng. ng d ng tm th y n m trong ph n Application c a k t qu . Tnh nng tm ki m ny c xy d ng m t ph n d a trn h th ng Kerry/Beagle. Ngoi ra trn trnh n chnh cn c hi n th tn ng nh p v tn my. Thng tin ny c ch khi b n ng nh p vo b ng tn c a ng i dng khc ho c ng nh p vo my xa. B n s lun lun bi t c mnh l ai v ang u.

8.1.4

Trung tm i u khi n KDE

Tn Trung tm i u khi n c a KDE trong nh ng phin b n g n y c thay th b ng tn m i Thi t l p c nhn (Personal Settings). S thay i ny khng c g quan tr ng m ch c ngha tn g i, ch c nng c a chng trnh l hon ton nh c: trong Thi t l p c nhn ng i dng c th thay i h u h t cc c u hnh c a mi tr ng lm vi c KDE. Thi t l p c nhn (Personal Settings) c th ch y qua trnh n chnh, qua

196

Lm vi c trong mi tr ng KDE

Hnh 8.6: Tm ki m trong trnh n chnh c a KDE

bi u t ng trn thanh panel, ho c t dng l nh b ng cch g tn chng trnh bn l kcontrol. Chng ta s th y m t c a s nh trn hnh 8.7 hi n ra. tri l danh sch d ng cy c a nh ng mun c trong Personal Settings, cn bn ph i l nh ng th v nh ng ty ch n thu c v mun ang c ch n bn tri. M i mun n m trong m t nhm no . V d , mun Panels n m trong nhm Desktop. Trong s nh ng mun c a Personal Settings chng ta s xem xt m t vi mun lm v d , nh ng mun cn l i b n s t t tm hi u khi s d ng KDE, v s l ng c a chng l n. Th nh t, lm p KDE th thng th ng ti thay i cc ty ch n s c thi, t c l thay i nh ng mun c a nhm Appearance & Themes: thay i tr c ti p s c thi b ng Theme Manager, sau thay i cc bi u t ng b ng Icons, ki u dng b ng Style, . . . v cu i cng ch n nh ng phng ch cho thch h p (Fonts). Tr c khi ch n phng ch c n s d ng n mun Font Installer n u mu n thm nh ng ci m i m i. C th ni y l trnh ci t phng ch v i giao di n h a c a KDE (xem hnh 8.8. Nh v y mun ny li t k nh ng phng c trong th m c c nhn c a b n (th ng l ~/.fonts) bn tri, bn ph i l xem phng c ch n. N u mu n thm m t phng no th c n nh n vo nt Add Fonts . . . r i tm n t p tin ch a n. N u mu n thm phng ch cho ton b h th ng th hy chuy n vo ch qu n tr h th ng b ng nt Administrator Mode . . . (khi ny b n c n nh p vo m t kh u c a root). Phng ch cho cc thnh ph n khc nhau c a KDE c l a ch n trong mun Fonts (hnh 8.9 cho th y ph n bn ph i c a Personal Settings khi nh n vo

8.1 B t u lm vi c v i KDE

197

Hnh 8.7: Trnh Thi t l p c nhn c a KDE

mun ny). thay i m t phng ch no c n nh n vo nt Choose . . . tng ng v i n. Khi s hi n ra c a s nh trn hnh 8.10. Sau khi ch n c phng ch thch h p cng v i ki u dng (Font style) v kch th c (Size), c n nh n vo OK ch p nh n n. Nhng nh v y phng ch v n cha c dng trong KDE. B n c n lm thm m t thao tc n a l nh n vo nt Apply ho c OK c a mun KDE bi t ch c ch n l b n mu n s d ng phng ny. Thao tc cu i cng ny l c n thi t i v i c nh ng mun khc. Khi ng i dng th c hi n m t thay i no trong m t mun (v d ch n phng ch khc), cha p d ng n m chuy n sang mun khc th s c m t h p tho i c nh bo hi n ra nh trong hnh 8.11. ngha c a cc nt c a h p tho i xin c gi i thch m t l n y, chng s l p l i nh ng tr ng h p khc. Apply p d ng nh ng thay i, Discard khng p d ng chng, t c l b n ch mu n th nghi m ch khng mu n thay i g, Cancel ng h p tho i c nh bo ny v quay v mun c thay i xem xt l i. Quay l i v i mun ch n phng ch . Trong mun ny b n c th th c hi n thm m t s thao tc n a. l ch n t t c cc phng ch cng m t lc b ng nt Adjust All Fonts . . . , dng anti-aliasing cho phng hi n th p hn (nh d u vo vung c nh dng Use anti-aliasing for fonts), v dng phn gi i t ch n (Force fonts DPI). thay i nh ng phm nng dng trong KDE, c n s d ng mun Keyboard Shortcuts. y c th thay i, thm cc phm nng ch y m t chng trnh no , m trnh n chnh, v.v . . . Ni n phm nng khng th khng k n m t tnh nng m i c a KDE l kh nng s d ng chu t (bn phm) th c hi n m t thao tc nh t nh no trong m t chng trnh, ho c trn n n mn hnh. V d , b n c th dng nt chu t gi a (bnh xe) v ln mn hnh m t hnh g , v d hnh ch nh t, v khi chng trnh OpenOffice.org Writer s ch y. Ho c trong chng trnh Konqueror, cng b ng nt bnh xe v hnh ch L v Konqueror s m m t th m c xc nh (chng ta s ni k hn

198

Lm vi c trong mi tr ng KDE

Hnh 8.8: Ci t phng ch m i

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

v Konqueror sau). Nh ng c u hnh ny c th c hi n trong mun Input Actions n m cng nhm v i mun v a k trn. By gi chng ta s nghin c u c th hn cch thay i v ngoi c a KDE, t c l thay i n n mn hnh, trnh n chnh v cc thanh panel.

8.1.5

Thay i v ngoi

Hai thnh ph n chnh c a mn hnh l n n v cc thay panel c th thay i m t cch d dng b ng cch nh n chu t ph i ln chng v ch n cc cu l nh tng ng trong trnh n m ra (trong sch ny chng ta s t m g i n l trnh n b i c nh, d ch t ti ng Anh context menu). Ng i dng cc h i u hnh c giao di n ho khc ch c ch n l s s d ng trnh n b i c nh m t cch d dng. Khi nh n chu t ph i ln ph n tr ng c a thanh panel s m ra m t trnh n c a panel ny (hnh 8.12), bao g m cc m c sau: Add Applet to Panel . . . Thm cc trnh nh c ch, nh trnh theo di m ng, ng h , vo thanh panel. Add Application to Panel Thm bi u t ng (nhm) chng trnh vo

8.1 B t u lm vi c v i KDE

199

Hnh 8.10: Ch n phng ch

Hnh 8.11: C nh bo khi c thay i cha p d ng

thanh panel c th tm (chng) n nhanh hn. Trong danh sch hi n ra b n c n ch n chng trnh ho c ton b nhm chng trnh b ng Add this Menu. Remove From Panel G b chng trnh ho c applet (ang c) kh i thanh panel. Add New Panel Thm thanh panel m i. V d , b n c th thm m t thanh panel ng bi u t ng nh ng ng d ng th ng ch y. Remove Panel G b m t thanh panel no cng v i t t c nh ng g c trn thanh panel ny. Lock Panels M t trong nh ng ci m i c a KDE, tnh nng ny cho php t m th i kha panel khng thay i n m t cch v tnh. Configure Panel . . . C u hnh thanh panel. Khi ch n cu l nh ny, s m ra m t c a s cho php thay i cc ty ch n c u hnh c a panel. Help Tr gip v panel. Ngoi ra, n u nh n chu t ph i vo m t bi u t ng chng trnh ho c applet c trn thanh panel th s m ra m t trnh n b i c nh c khc m t cht, nh chng ta c th th y trn hnh 8.13. ngha c a cc cu l nh ti ngh khng c n gi i thch. Trong quan tr ng nh n c l l l nh Configure XXX Button . . . t tn cho nt c a chng trnh XXX, cu l nh c a chng trnh s ch y v m t vi c u hnh khc. Nh ni trn, khi ch n cu l nh Configure Panel . . . c a trnh n b i c nh c a panel ho c ch n mun Panels (nhm Desktop) c a Personal Settings, s hi n ra c a s ch nh s a cc thanh panel nh trn hnh 8.14. C 4 th tab (Arrangement, Hiding, Menus v Appearance)

200

Lm vi c trong mi tr ng KDE

Hnh 8.12: Trnh n c a thanh panel

Hnh 8.13: Trnh n b i c nh c a nt

cng nhi u ty ch n nhng chng ta ch ch n m t s trong . u tin c n ch n thanh panel mu n c u hnh b ng cch nh n vo n m sau dng Settings for (th Arrangement) r i ch n panel tng ng. Sau d i c th ch n v tr t thanh panel (Position), chi u di c a n tnh theo % so v i c nh c a mn hnh (Length) v cao tnh theo pixel (Size). Trn th Appearance, c th ch n thanh panel tr thnh trong su i ( p hn?) b ng ty ch n Enable transparency. N u mu n b n c th b i cc nt gi u thanh panel (hnh mi tn tam gic) b ng cch b i cc d u X trong cc c a Panel-Hiding Buttons (th Hiding). Sau m i l n thay i ng qun p d ng n b ng nt Apply. Tng t nh cc thanh panel, khi nh n chu t ph i ln ph n tr ng c a n n mn hnh s m ra m t trnh n b i c nh c a mn hnh. Trong trnh n ny cng c nhi u cu l nh b n c th nghin c u d n d n. Cu l nh Configure Desktop . . . l l nh chng ta quan tm. L nh ny dng c u hnh khng gian lm vi c cng nh n n mn hnh (nh thay i nh n n). Khi ch n l nh ny s hi n ra c a s nh trn hnh 8.15. Trong c a s ny ng i dng c th ch n khng dng nh n n (ch dng mu), ch n m t nh lm n n ho c ch n m t nhm nh thay phin nhau sau m t kho ng th i gian nh t nh (slide show). S l ng v tn g i c a cc khng gian lm vi c c th th c hi n qua th Multiple Desktops. thay i trnh n chnh c a KDE (KMenu), ng i dng c th s d ng chng trnh Menu Editor. Khi nh n chu t ph i ln bi u t ng c a trnh n chnh b n s th y m t cu l nh c cng tn v i chng trnh ny. Nh n vo ch y chng trnh so n th o trnh n. Ho c t dng l nh ch y cu l nh kmenuedit. K t qu thu c l nh nhau (hnh 8.16). Cu i cng, thm bi u t ng ln mn hnh, m c d theo ti l khng th c s c n thi t, b n c n s d ng cu l nh Create New (trong trnh n b i c nh hi n ra khi nh n chu t ph i ln mn hnh nh ni trn) v ch n m c tng ng c a l nh ny. Sau khi k t thc cng vi c b n c n bi t cch thot kh i KDE cng nh giao di n ho , ho c t t my hon ton.

8.1 B t u lm vi c v i KDE

201

Hnh 8.14: C u hnh cc thanh panel

Hnh 8.15: Thay i mn hnh

8.1.6

i u khi n phin lm vi c1

Phin lm vi c (ti ng Anh l session) c th t m nh ngha l qu trnh lm vi c c a ng i dng b t u t lc vo mi tr ng lm vi c n lc thot ra. i u khi n phin lm vi c, mi tr ng KDE c m t chng trnh ring Session Manager (Trnh qu n l phin lm vi c). Chng trnh ny ch y ngay sau khi tn ng i dng v m t kh u c h th ng xc nh n l ng. Trnh qu n l phin lm vi c cho php b n lu l i cc thi t l p hi n th i cho m i phin lm vi c, v ng th i cho php ph c h i tr ng thi c a phin lm vi c cu i cng trong l n ng nh p sau. Trnh qu n l phin lm vi c c th ph c h i cc thi t l p sau: Cc thi t l p trang tr v tnh nng, nh phng ch , nh n n, mu v thi t l p chu t.
1

ng d ng ang ch y, nh Konsole, t i n Stardict hay OpenOffice.org.

Session

202

Lm vi c trong mi tr ng KDE

Hnh 8.16: So n th o trnh n chnh

Tuy nhin, c n ch l b n khng th lu v ph c h i nh ng ng d ng m Session Manager khng qu n l. V d , n u b n ch y cu l nh trnh so n th o vim t m t c a s terminal, th Session Manager khng th ph c h i trnh so n th o ny. M i cu l nh i u khi n tr c ti p phin lm vi c n m trong th Leave c a trnh n chnh. 1. Lock kha mn hnh c a b n. B n c th s d ng phm nng xc nh trong Personal Settings, thng th ng l <Ctrl>+<Alt>+<Del> ho c dng nt Lock trn thanh panel (n u c). Khi kha mn hnh, chng trnh b o v mn hnh2 b t u ch y. m kha mn hnh, c n nh n chu t ho c nh n bn phm hi n ra h p tho i m kha. h p tho i ny b n c n nh p vo m t kh u c a mnh. 2. Save Session lu tr ng thi c a phin lm vi c hi n t i. Tr ng thi ny s c ph c h i vo l n ng nh p sau. 3. Logout thot ra kh i KDE khi k t thc cng vi c ho c ng nh p vo mi tr ng lm vi c khc. N u s d ng KDM ng nh p vo th b n s c m t vi l a ch n khc: t t my, kh i ng l i. Phm nng theo m c nh thot kh i KDE l <Ctrl>+<Alt>+<Del> (chng trnh s h i l i b n c ch c ch n mu n thot ra khng) ho c <Ctrl>+<Alt>+<Shift>+<Del> (thot th ng, chng trnh khng h i l i). Trn thanh panel nt thot ra th ng n m c nh nt Lock.

Screen Saver

You might also like