You are on page 1of 212

T hc s dng Linux

Phan Vnh Thnh


Phin bn: 0.9.6
Ngy 14 thng 2 nm 2007
Dnh cho ngi dng mi v rt mi...
Mc lc

Li m u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

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


1.1 Th no l HH ni chung v Linux ni ring . . . . . . . . . . . . 3
1.1.1 Cc h iu hnh dng UNIX . . . . . . . . . . . . . . . . . . 3
1.1.2 Mt cht v lch s . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.3 c im chnh ca HH Linux . . . . . . . . . . . . . . . . 7
1.2 Bn phn phi Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Yu cu i vi my tnh . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Ly Linux u? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

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

3 Khi ng Linux ln u 43
3.1 Khi ng HH Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.2 ng nhp vo h thng . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3 Console, terminal o v shell . . . . . . . . . . . . . . . . . . . . . . 46
3.4 Son tho dng lnh. Lch s lnh . . . . . . . . . . . . . . . . . . . 49
3.5 Ngng lm vic vi Linux . . . . . . . . . . . . . . . . . . . . . . . . 51
3.6 Tr gip khi dng Linux . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.6.1 Cc ngun thng tin tr gip . . . . . . . . . . . . . . . . . . 53
3.6.2 Cc trang tr gip man . . . . . . . . . . . . . . . . . . . . . . 54
3.6.3 Cu lnh info . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.6.4 Cu lnh help . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.6.5 Ti liu bn phn phi v ng dng . . . . . . . . . . . . . . 56
3.6.6 Cu lnh xman . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.6.7 Cu lnh helptool . . . . . . . . . . . . . . . . . . . . . . . . 57
3.6.8 Sch v Internet . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4 Lm quen vi h thng tp tin ext3fs 60


4.1 Tp tin v tn ca chng . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.2 Th mc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.3 Cng dng ca cc th mc chnh . . . . . . . . . . . . . . . . . . . . 65
4.4 Dng tp tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.4.1 Cc tp tin thit b . . . . . . . . . . . . . . . . . . . . . . . . 70
4.4.2 Cc ng c tn (pipes) . . . . . . . . . . . . . . . . . . . . . . . 72
4.4.3 Cc socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.4.4 Lin kt mm . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.5 Quyn truy cp n tp tin v th mc . . . . . . . . . . . . . . . . . 73
4.6 Cc cu lnh c bn lm vic vi tp tin v th mc . . . . . . . 79
4.6.1 Cu lnh chown v chgrp . . . . . . . . . . . . . . . . . . . . 80
4.6.2 Cu lnh mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.6.3 Cu lnh cat . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.6.4 Cu lnh cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.6.5 Cu lnh mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.6.6 Cu lnh rm v rmdir . . . . . . . . . . . . . . . . . . . . . . 82
4.6.7 Cu lnh more v less . . . . . . . . . . . . . . . . . . . . . 83
4.6.8 Cu lnh tm kim find v mu tn tp tin . . . . . . . . . . 83
4.6.9 Cu lnh split . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.6.10 So snh cc tp tin v lnh patch . . . . . . . . . . . . . . . 87
4.7 Cc cu lnh lu tr v nn tp tin . . . . . . . . . . . . . . . . . . . 88
4.7.1 Chng trnh tar . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.7.2 Chng trnh gzip . . . . . . . . . . . . . . . . . . . . . . . . 91
4.7.3 Chng trnh bzip2 . . . . . . . . . . . . . . . . . . . . . . . 92
4.7.4 S dng kt hp tar vi gzip v bzip2 . . . . . . . . . . . . 93
4.8 To v gn cc h thng tp tin . . . . . . . . . . . . . . . . . . . . . 95
MC LC v

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

6 S dng Midnight Commander 128


6.1 Ci t chng trnh Midnight Commander . . . . . . . . . . . . . . 128
6.2 V ngoi ca mn hnh Midnight Commander . . . . . . . . . . . . 129
6.3 Tr gip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.4 S dng chut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.5 iu khin cc bng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
6.5.1 Dng danh sch tp tin . . . . . . . . . . . . . . . . . . . . . . 133
6.5.2 Nhng ch hin th khc . . . . . . . . . . . . . . . . . . . 136
6.5.3 Cc t hp phm iu khin bng . . . . . . . . . . . . . . . . 137
6.6 Cc phm chc nng v thc n Tp tin . . . . . . . . . . . . . . . . 139
6.7 Mu tp tin khi sao chp hoc i tn . . . . . . . . . . . . . . . . . 141
6.8 Thng bo khi sao chp v di chuyn tp tin . . . . . . . . . . . . . . 143
6.9 Dng lnh ca h v . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.10 Trnh n Cu lnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
6.11 Cu hnh Midnight Commander . . . . . . . . . . . . . . . . . . . . . 153
6.12 Kt ni ti my xa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.12.1 Kt ni FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.12.2 Kt ni Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

7 Giao din ho 162


7.1 X.Org . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
7.2 Mt cht v h thng hnh nh ca my tnh . . . . . . . . . . . . . 167
7.3 Cu hnh chng trnh ch X . . . . . . . . . . . . . . . . . . . . . . 169
7.3.1 Thu thp thng tin cn thit . . . . . . . . . . . . . . . . . . . 170
7.3.2 Cu trc ca tp tin cu hnh X . . . . . . . . . . . . . . . . . 171
7.3.3 Th cu hnh /etc/X11/xorg.conf . . . . . . . . . . . . . . . . . 178
7.4 Khi ng h thng X Window . . . . . . . . . . . . . . . . . . . . . . 182
7.4.1 La chn trnh qun l ca s . . . . . . . . . . . . . . . . . . 185
7.4.2 Mi trng lm vic KDE v GNOME . . . . . . . . . . . . . 187
7.4.3 Mi trng lm vic Xfce . . . . . . . . . . . . . . . . . . . . . 188
7.4.4 S dng trnh qun l mn hnh . . . . . . . . . . . . . . . . 188

8 Lm vic trong mi trng KDE 190


8.1 Bt u lm vic vi KDE . . . . . . . . . . . . . . . . . . . . . . . . 190
8.1.1 ng nhp vo KDE . . . . . . . . . . . . . . . . . . . . . . . 190
8.1.2 V ngoi ca KDE . . . . . . . . . . . . . . . . . . . . . . . . . 191
8.1.3 Trnh n KMenu . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.1.4 Trung tm iu khin KDE . . . . . . . . . . . . . . . . . . . 195
8.1.5 Thay i v ngoi . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.1.6 iu khin phin lm vic . . . . . . . . . . . . . . . . . . . . 201
Danh sch hnh v

3.1 Mn hnh khi ng ca GRUB . . . . . . . . . . . . . . . . . . . . . 43

6.1 Midnight Commander ting Vit . . . . . . . . . . . . . . . . . . . . 129


6.2 Mn hnh Midnight Commander . . . . . . . . . . . . . . . . . . . . 130
6.3 Hp thoi chn nh dng hin th . . . . . . . . . . . . . . . . . . . 133
6.4 Hp thoi sp xp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
6.5 Ch thng tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
6.6 Ch cy th mc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
6.7 Ch xem nhanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.8 Hp thoi i tn tp tin . . . . . . . . . . . . . . . . . . . . . . . . . 142
6.9 Ca s hi li . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.10 Ca s yu cu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.11 Dng nhp vo a ch IP ca my ch FTP . . . . . . . . . . . . . . 147
6.12 Bt u tm kim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
6.13 ang tm kim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
6.14 Tm kim tt c cc lin kt mm . . . . . . . . . . . . . . . . . . . . 151
6.15 Hp thoi danh sch th mc thng dng . . . . . . . . . . . . . . 152
6.16 iu khin cng vic nn sau . . . . . . . . . . . . . . . . . . . . . . 153
6.17 Cu hnh Midnight Commander . . . . . . . . . . . . . . . . . . . . . 154
6.18 Thay i v ngoi ca Midnight Commander . . . . . . . . . . . . . 156
6.19 Thay i bit hin th ca Midnight Commander . . . . . . . . . . . . 157
6.20 Thit lp cc hp thoi hi li ngi dng . . . . . . . . . . . . . . . 158
6.21 Th v cu hnh cc phm . . . . . . . . . . . . . . . . . . . . . . . . 158
6.22 Thit lp h thng tp tin o . . . . . . . . . . . . . . . . . . . . . . . 159

7.1 H thng ho X Window . . . . . . . . . . . . . . . . . . . . . . . . 164


7.2 Cu hnh X.org qua xorgcfg . . . . . . . . . . . . . . . . . . . . . . 172
7.3 Chng trnh xvidtune . . . . . . . . . . . . . . . . . . . . . . . . . 181
7.4 Chng trnh xvidtune khng chu chnh hnh nh . . . . . . . . 181
7.5 Mi trng lm vic Xfce . . . . . . . . . . . . . . . . . . . . . . . . . 189

8.1 Mn hnh ng nhp KDM . . . . . . . . . . . . . . . . . . . . . . . . 191


8.2 V ngoi ca KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
8.3 Hp thoi chy chng trnh . . . . . . . . . . . . . . . . . . . . . . . 193
8.4 Tr gip c ch tooltips . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.5 Trnh n chnh ca KDE . . . . . . . . . . . . . . . . . . . . . . . . 195
8.6 Tm kim trong trnh n chnh ca KDE . . . . . . . . . . . . . . . 196
8.7 Trnh Thit lp c nhn ca KDE . . . . . . . . . . . . . . . . . . . . 197
viii DANH SCH HNH V

8.8 Ci t phng ch mi . . . . . . . . . . . . . . . . . . . . . . . . . . 198


8.9 Chn phng ch dng cho text, trnh n, . . . . . . . . . . . . . . . . 198
8.10 Chn phng ch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
8.11 Cnh bo khi c thay i cha p dng . . . . . . . . . . . . . . . . . 199
8.12 Trnh n ca thanh panel . . . . . . . . . . . . . . . . . . . . . . . . 200
8.13 Trnh n bi cnh ca nt . . . . . . . . . . . . . . . . . . . . . . . 200
8.14 Cu hnh cc thanh panel . . . . . . . . . . . . . . . . . . . . . . . . 201
8.15 Thay i mn hnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
8.16 Son tho trnh n chnh . . . . . . . . . . . . . . . . . . . . . . . . 202
Danh sch bng

1.1 Yu cu i vi phn cng . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1 Cu trc ca sector khi ng chnh . . . . . . . . . . . . . . . . . . 20


2.2 Nhu cu s dng khng gian a ca HH . . . . . . . . . . . . . . 28

3.1 Nhng cu lnh n gin ca Linux . . . . . . . . . . . . . . . . . . 46


3.2 Nhng phm son tho dng lnh . . . . . . . . . . . . . . . . . . . . 50
3.3 T hp phm iu khin lch s lnh . . . . . . . . . . . . . . . . . . 52
3.4 Cc phn chnh ca tr gip man . . . . . . . . . . . . . . . . . . . . 54
3.5 Phm s dng xem trang man . . . . . . . . . . . . . . . . . . . . . 55

4.1 Cu trc th mc ca Linux . . . . . . . . . . . . . . . . . . . . . . . 66


4.2 Nhng tp tin thit b chnh . . . . . . . . . . . . . . . . . . . . . . . 71
4.3 Nhng ty chn chnh ca lnh cp . . . . . . . . . . . . . . . . . . . 81
4.4 Tiu ch tm kim ca cu lnh find. . . . . . . . . . . . . . . . . . . 85
4.5 Nhng ty chn chnh ca tar . . . . . . . . . . . . . . . . . . . . . 89
4.6 Nhng ty chn chnh ca chng trnh gzip . . . . . . . . . . . . 92
4.7 Nhng ty chn chnh ca chng trnh bzip2 . . . . . . . . . . . . 94
4.8 Nhng ty chn chnh ca cu lnh mount . . . . . . . . . . . . . . 99

5.1 Cc cu lnh b lc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109


5.2 Thay th cc tham bin c bit . . . . . . . . . . . . . . . . . . . . . 111
5.3 K t xc nh dng du nhc . . . . . . . . . . . . . . . . . . . . . . 112
5.4 Cc k t to mu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

6.1 Cc t hp phm di chuyn dng chung . . . . . . . . . . . . . . . . . 131


6.2 Di chuyn trong trnh xem tp tin . . . . . . . . . . . . . . . . . . . . 131
6.3 Di chuyn khi xem tr gip . . . . . . . . . . . . . . . . . . . . . . . 132
6.4 Cc phm chc nng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.5 Cc lnh iu khin dng nhp vo . . . . . . . . . . . . . . . . . . . 148
Li m u
Trong tc phm ni ting th gii ca nh vn Nga Lev Tolstoi Chin tranh v
ho bnh c a ra mt v d minh ho cho suy ngh ca tc gi v vai tr ca
nhng ngi c ting (c th l Napoleon v Alecxandr nht) v qun chng
trong lch s ni chung cng nh trong chin tranh chu u nhng nm u
th k XIX. Nhn vt chnh trong v d minh ho ny l con ong. i vi cu b
va b ong cn th mc ch ca con ong ch cn ngi. i vi mt nh th
th mc ch ca con ong l thu vo mnh hng v ca nhng bng hoa. i vi
ngi nui ong th mc ch ong l thu thp mt ong. Ngi nui ong c ci nhn
su hn th cho rng ong thu thp bi phn hoa nui ong con v to ong cha,
nh vy mc ch ca n l duy tr ni ging. Nh sinh hc khi quan st thy
ong th phn cho hoa th quyt nh y chnh l mc ch ca loi ong. Ngi
khc quan st qu trnh di c ca thc vt th cho rng ong tham gia vo qu
trnh ny v l mc ch ca n. Tt nhin mc ch cui cng ca ong khng
phi l nhng ci trn nm ring bit m l tt c chng cng li, v cn cng
thm nhng g m tm thi b c quan st hn ch ca con ngi cn cha tm
ra.
Microsoft nhn thy Linux kh nng cnh tranh ln v nhiu khi coi Linux
l k th ca mnh. Nhiu t chc chnh ph cng nh phi chnh ph nhn thy
Linux mt h iu hnh nhiu ha hn v h tr cho Linux. Nhng nc cn
ngho tm thy Linux mt cch gii quyt cho vn kinh t. Mt s cng ty
thy c Linux mt ngun li ln v pht trin cng vic kinh doanh ca
mnh t h iu hnh ny. i vi Linus Torvalds, Linux l nim am m v
Just for fun. Cc nh lp trnh nhn (kernel) tm thy Linux s quyn r v
cng vic pht trin ca h. Ngi dng th thy Linux mt h thng mnh,
thun tin, c th iu chnh theo mun ca mnh v.v. . .
Linux l h iu hnh pht trin mnh. Nhng nm u thp k th chn
ca th k XX Linux mi ch l a con tinh thn cha bit ni ca Torvalds.
Ch trong vi nm gn y c nhiu bn phn phi Linux chim lnh c mi
trng my ch cng nh my bn ca ngi dng. Trn th trng my ch
hin thi ch c mt vi tn tui ng ch . Linux cho my bn c phn a
dng hn. Mi bn phn phi thch hp cho mt nhm ngi dng c th no
t ngi dng mi n ngi dng cao cp (advanced) hay ni ng hn l mi
ngi dng c quyn la chn cho mnh mt bn phn phi thch hp v chuyn
sang s dng bn khc khi no mong mun. Lch s hnh thnh v pht trin
Linux chng ta s thy ngay chng u tin ca cun sch ny.
Linux ngay t ban u c xy dng da trn cng ng (ting Anh
community), da trn s cng tc. Cng ng Linux khng ch cung cp cho
ngi dng my tnh mt h iu hnh thn thin, d s dng m cn lun lun
sn sng gip ngi dng mi, lun mong mun c thm my tnh chy di
Linux. Vi kt ni mng Internet, bn s lun tm thy cu tr li cho vn ca
mnh t s lng ln cc din n, nhm th, nhm tin tc, cc trang web cung
cp tin tc, bi bo, sch v Linux. . . Tuy nhin nu bn mi bt u hc Linux
th hy tm cho mnh mt cun sch gii thiu ngn gn v h iu hnh ny.
Mt cun sch tham kho cm tay l khng th thiu trong thi gian u tm
hiu Linux. Hy xem xt gi v ni dung cun sch trc khi mua. Nu khng
c kh nng tm c sch thch hp hoc bn thch cun sch T hc s dng
Linux ny th c th in n ra tin c.
Ti bt u hc Linux khi c trong tay 3 a CD RedHat 7.0 khong 4 nm
trc y. V by gi Linux (c th l OpenSUSE Linux) l h thng duy nht
lm vic trn my tnh ca ti. Khng phi l ti khng mun s dng v ght
b h iu hnh Windows m n gin l ti quen lm vic trong mi trng
KDE v Xfce, i khi trong console (dng lnh khng c ho). V hn na
mi cng vic cn n my tnh ca ti c th gii quyt nhanh gn bng nhng
chng trnh i km vi Linux. Nghe nhc bng Amarok, qun l hnh k thut
s v ly chng ra t my hnh bng digiKam, son tho ti liu, c th l lun
vn tt nghip v cun sch ny, trong chng trnh Kile v bin dch m LATEX
qua nhng chng trnh c trong gi teTeX, nhng ti liu khc c th son tho
trong Openoffice.org, vi ngi dng khng chuyn th kh nng chnh sa nh
ca The GIMP cn trn c , kh nng v ho vector ca Inkscape cn cho
c nhng nh thit k chuyn. Ti khng phi l mt nh qun l mng hay lp
trnh chuyn nghip v ni chung khng phi ngi hc theo chuyn ngnh cng
ngh thng tin. Ngnh chnh ca ti l Ho hc, do xin ng mong i nhng
kin thc cao siu trong sch ny. Nh trang th hai ca sch c ghi Dnh cho
ngi dng mi v rt mi. . . .
Nh vy, cun sch T hc s dng Linux c to ra vi hy vng s gip
ngi dng mi lm quen vi h iu hnh tuyt vi c tn Linux v hnh tng
trng l ch chim cnh ct (penguin) xinh p. Nhng thng tin bn c tm thy
trong cun sch ny c th p dng cho hu ht ht cc bn phn phi ln, tuy
nhin mt s phn c bit v d phn ni v ci t chng trnh t cc gi rpm
ch p dng tt cho cc bn phn phi dng RedHat, l Fedora, Mandriva,
OpenSUSE, v.v. . . Thng thng ngi dng mi bt u gia nhp vo th gii
Linux bng nhng bn phn phi ny. Happy Using Linux!
Cng c to ra cun sch bn ang c l h thng sp ch LATEX. Bn c
th tm bn phn phi teTeX hoc mt bn phn phi khc ca h thng ny
trn hu ht cc b a ci t h iu hnh Linux.
Sch ny c phn phi min ph theo bn quyn Creative Commons Public
License 2.5 (http://creativecommons.org/licenses/by/2.5/). Cng nh
nhng sn phm khc ca cng ng OSS, cun sch ny c to ra, sa i,
thm v bt trong thi gian rnh ri ca ti, do i khi n s c cp nht
thng xuyn, v c khi khng c cp nht c nm. Mi ngh sa i, thng
bo li chnh t, li kin thc cng nh ngh gip (lun lun hoan nghng)
xin gi cho Phan Vnh Thnh theo a ch teppi@vnoss.org.
Xin cm n Kostromin A.V. (http://linux-ve.chat.ru) vit ra mt
cun sch s dng Linux hay lm ti liu tham kho chnh cho cun sch ny,
bc Nguyn i Qu (vnpenguin@vnoss.org) v anh Nguyn ng Hong Tun
(tuanndh@gmail.com) gip ti trong khi son cun sch ny.

Released under Creative Commons Public License 2.5


(http://creativecommons.org/licenses/by/2.5/)
Chng 1

HH Linux: lch s v cc bn
phn phi

Just for fun Linus Torvalds.

Lch s lun l im khi u khi nghin cu mt ngnh khoa hc no . Khng c ngoi l i


vi Ton hc, Vt l, mn chuyn ngnh ca ti Ho hc v tt nhin c HH Linux. Trong chng
u tin ca cun sch T hc s dng Linux ny chng ta s tr li ngn gn cho cu hi Linux
l g?. ng thi ni i dng v nhng im c bit ca Linux, yu cu ca Linux i vi phn
cng, khi nim bn phn phi Linux, v cch c c nhng bn phn phi ny. Hn th na bn
c s hiu t nhiu v OpenSource, GNU v FSF.

1.1 Th no l HH ni chung v Linux ni ring


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

Vo cui nhng nm 70 ca th k trc (th k XX) cc nh pht trin ca


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

1.1.2 Mt cht v lch s


HH Linux va k nim sinh nht ln th 15 ca mnh. y l bc th m
Linus gi vo nhm tin tc comp.os.minix ngy 25 thng 8 nm 1991 (c coi
l ngy sinh nht ca HH ny):

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)


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

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

Tanenbaum vit ra lm cng c hc tp cho cc sinh vin lp trnh. Minux


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

t vit tt ca GNUs Not Unix, tc l nhng g thuc v d n GNU khng phi


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

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

1.1.3 c im chnh ca HH Linux


Do m ngun Linux phn phi t do v min ph, nn ngay t u c rt
nhiu nh lp trnh tham gia vo qu trnh pht trin h thng. Nh n thi
im hin nay Linux l h iu hnh hin i, bn vng v pht trin nhanh
nht, h tr cc cng ngh mi gn nh ngay lp tc. Linux c tt c cc kh
nng, c trng cho cc h iu hnh y tnh nng dng UNIX. Xin a ra
y danh sch ngn gn nhng kh nng ny.

1. Nhiu tin trnh tht s


Tt c cc tin trnh l c lp, khng mt tin trnh no c cn tr cng
vic ca tin trnh khc. lm c iu ny nhn thc hin ch phn
chia thi gian ca b x l trung tm, ln lt chia cho mi tin trnh mt
khong thi gian thc hin. Cch ny hon ton khc vi ch nhiu tin
trnh y nha c thc hin trong Windows 95, khi mt tin trnh phi
nhng b x l cho cc tin trnh khc (v c th lm chm tr rt lu vic
thc hin).

2. Truy cp nhiu ngi dng


Linux khng ch l HH nhiu tin trnh, Linux h tr kh nng nhiu
ngi dng lm vic cng lc. Khi ny Linux c th cung cp tt c cc ti
nguyn h thng cho ngi dng lm vic qua cc terminal xa khc nhau.

3. Swap b nh ln a
Swap b nh cho php lm vic vi Linux khi dung lng b nh c hn.
Ni dung ca mt s phn (trang) b nh c ghi ln vng a cng xc
nh t trc. Vng a cng ny c coi l b nh ph thm vo. Vic ny
c lm gim tc lm vic, nhng cho php chy cc chng trnh cn b
nh dung lng ln m thc t khng c trn my tnh.

4. T chc b nh theo trang


H thng b nh Linux c t chc dng cc trang vi dung lng 4K.
Nu b nh y, th HH s tm nhng trang b nh lu khng c s
dng chuyn chng t b nh ln a cng. Nu c trang no trong
s nhng trang ny li tr thnh cn thit, th Linux s phc hi chng t
8 HH Linux: lch s v cc bn phn phi

a cng (vo b nh). Mt s h thng Unix c v mt s h thng hin i


(bao gm c Microsoft Windows) chuyn ln a tt c ni dung ca b nh
thuc v nhng ng dng khng lm vic ti thi im hin thi (tc l TT
C cc trang b nh thuc v ng dng s c lu ln a khi khng b
nh) v nh vy km hiu qu hn.

5. Np mun thc hin theo yu cu


Nhn Linux h tr vic cung cp cc trang b nh theo yu cu, khi ny
ch phn m cn thit ca chng trnh mi nm trong b nh, cn nhng
phn m khng s dng ti thi im hin ti th nm li trn a.

6. Cng s dng chng trnh


Nu cn chy mt lc nhiu bn sao ca cng mt ng dng no 6 , th
Linux ch np vo b nh mt bn sao ca m chng trnh v tt c cc
tin trnh ging nhau cng s dng mt m ny.

7. Th vin chung
Th vin b cc qu trnh (thao tc) c chng trnh dng lm
vic vi d liu. C mt s th vin tiu chun c dng cng lc cho vi
tin trnh. Trn cc h thng c nhng th vin nm trong mi tp tin
chng trnh, v thc hin cng lc nhng chng trnh ny dn n hao
ht b nh khng ng c. Trn cc h thng mi (bao gm Linux) c h tr
lm vic vi cc th vin ng (dynamic) v tnh (static) c chia ra, v
nh vy cho php gim kch thc b nh b ng dng chim.

8. B m ng ca a
B m ca a l mt phn b nh ca h thng dng lm ni lu nhng
d liu thng dng ca a, nh nng cao rt nhiu tc truy cp ti
nhng chng trnh v tin trnh thng dng. Ngi dng MS-DOS s
nh n chng trnh SmartDrive, chng trnh ny d tr mt phn b
nh c kch thc xc nh lm b m cho a. Linux s dng h thng
m linh ng hn: b nh c d tr cho m c tng ln khi b nh
khng c s dng, v s gim xung khi h thng hay tin trnh cn
nhiu b nh hn.

9. 100% tng ng vi tiu chun POSIX 1003.1. H tr mt phn cc


kh nng ca System V v BSD
POSIX 1003.1 (Portable Operating System Interface giao din ca h
iu hnh lu ng) a ra giao din tiu chun cho cc h thng Unix,
l mt b cc th tc ngn ng C. Ngy nay giao din ny c tt c cc
h iu hnh mi h tr. Microsoft Windows NT cng h tr POSIX 1003.1.
Linux 100% tng ng vi tiu chun POSIX 1003.1. Thm vo Linux
cn h tr cc kh nng ca System V v BSD tng tnh tng thch.

10. System V IPC


Linux s dng cng ngh IPC (InterProcess Communication) trao i
thng tin gia cc tin trnh, s dng tn hiu v b nh chung.
6
hoc mt ngi dng chy vi tin trnh ging nhau, hoc nhiu ngi dng chy cng mt
chng trnh
1.2 Bn phn phi Linux 9

11. Kh nng chy chng trnh ca HH khc


Trong lch s Linux khng phi l h iu hnh u tin. Ngi ta
vit ra hng lot cc chng trnh ng dng, trong c c nhng chng
trnh c ch v khng n ni ti, cho cc HH pht trin trc Linux,
bao gm DOS, Windows, FreeBSD v OS/2. chy nhng chng trnh
nh vy di Linux pht trin cc trnh gi lp (emulator) cho DOS,
Windows 3.1, Windows 95 v Wine. Ngoi ra, cn c mt lot cc chng
trnh to my o7 m ngun m cng nh sn phm thng mi: qemu,
bochs, pearpc, vmware,. . . HH Linux cn c kh nng chy chng trnh
dnh cho b x l Intel ca cc h thng Unix khc, nu h thng p ng
tiu chun iBCS2 (intel Binary Compatibility).

12. H tr cc nh dng h thng tp tin khc nhau


Linux h tr mt s lng ln cc nh dng h thng tp tin, bao gm cc
h thng tp tin DOS v OS/2, v c cc h thng tp tin mi, nh reiserfs,
HFS,. . . . Trong khi h thng tp tin chnh ca Linux, c gi l Second
Extended File System (ext2fs) v Third Extended File System (ext3fs) cho
php s dng khng gian a mt cch c hiu qu.

13. Kh nng h tr mng


Linux c th gn vo bt k mng ni b no. H tr tt c cc dch v Unix,
bao gm Networked File System (NFS), kt ni t xa (telnet, rlogin, ssh),
lm vic trong cc mng TCP/IP, truy cp dial-up qua cc giao thc SLIP
v PPP,v.v. . . ng thi c h tr dng Linux l my ch hoc my khch
cho mng khc, trong c chia s (dng chung, sharing) cc tp tin v in
t xa trong cc mng Macintosh, NetWare v Windows.

14. Lm vic trn cc phn cng khc nhau


Mc d u tin HH Linux c pht trin cho my tnh c nhn (PC)
trn nn tng Intel 386/486, by gi n c th lm vic trn tt c cc b
vi x l Intel bt u t 386 v kt thc l cc h thng nhiu b x l
Pentium IV, bao gm c cc b x l 64bit. ng thi Linux cn lm vic
trn rt nhiu b x l tng thch vi Intel ca cc nh sn xut khc,
nh AMD. Trong Internet cn c nhng thng bo ni rng trn cc b x
l Athlon v Duron ca AMD Linux cn lm vic tt hn so vi trn Intel.
Ngoi ra cn c phin bn Linux cho cc b x l khc bao gm ARM, DEC
Alpha, SUN Sparc, M68000 (Atari v Amiga), MIPS, PowerPC v nhng
b x l khc8 . Xin c ni lun l trong cun sch ny chng ta ch xem
xt trng hp Linux cho cc my tnh tng thch vi IBM.

1.2 Bn phn phi Linux


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

thnh phn chnh, nng ct ca HH, n iu khin cc thit b phn cng v


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

Vy th cn la chn bn phn phi theo tiu chun no? Theo kin ca tc


gi th i vi ngi dng Vit Nam c hai tiu chun: th nht phi c giao din
ngi dng ting Vit v th hai phi c mt nhm cc nh pht trin h tr bn
phn phi ny. V tt nht nu nhm cc nh pht trin ny nhn c ngun
li t sn phm Linux ca mnh, tc l lm vic nh mt cng ty thng mi.
Thm ch ch trong khong thi gian khng lu m ti s dng Linux (khong
5 nm) c nhiu bn phn phi Vit Nam cng nh nc ngoi cho tm
bit th gii Linux v nhm h tr ca chng khng thu c nhiu li nhun v
sau mt thi gian ngng h tr tc phm ca mnh.
i vi ngi dng Linux Vit Nam hin thi c hai la chn: th nht, s
dng cc sn phm Linux ting Vit do mt s ngi t nguyn duy tr; th hai,
s dng cc sn phm Linux ln c h tr ting Vit. Chng ta s ni n hai
s la chn ny mt cch k cng hn. La chn th nht, theo kin ca ti
khng c u tin y. L do chnh l cha t c tiu chun th hai nu
trn. Hin thi c mt bn phn phi nh vy: vnlinux-CD (cng vi mt vi bin
th) do anh Larry Nguyn, mt Vit kiu M duy tr. La chn th hai l s
dng cc bn phn phi h tr ting Vit tt nh Debian, Ubuntu v Mandriva,
openSuSE cng ang dn dn h tr ting Vit (http://vi.opensuse.org).
La chn th hai ny c u tin v:

chng c h tr ting Vit v cng ngy cng hon thin

chng c trnh ci t tt, h tr nhiu phn cng khc nhau

c th ci t thm cc phn mm khc mt cch d dng phn ln chng


trnh c bin dch sn cho mi yu cu ca ngi dng

nhng bn phn phi ny c mt nhm cc nh pht trin duy tr, cp


nht thng xuyn thng thng l theo mt lch nh sn. Ngoi ra cn
m bo l bn s nhn c phin bn mi ca n trong tng lai. Khng
s trng hp em con b ch.

kt thc cu chuyn v la chn bn phn phi Linux cn ni thm l gn


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

l (v d, 2.5.0) thng khng c s dng to cc bn phn phi, v l


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

1.3 Yu cu i vi my tnh
Ti c u ni rng c nhng phin bn Linux c bit, lm vic thm
ch trn b x l 8086 vi 512Kbyte b nh, cn phin bn c bit c th chy t
mt hoc hai a mm khng cn a cng th ti gp.
V th nu bn c mt ci my tnh c, trn khng th chy ni Windows,
th c th s dng n hc Linux v rt c th s ngc nhin v kh nng ca
HH ny. Nhng trong cun sch ny chng ta s khng xem xt nhng trng
hp c bit nh vy. V HH Linux s dng ch bo v ca b vi x l, nn
ci t HH ny cn t nht l mt my tnh c b x l 386. Theo cc ngun
thng tin khc nhau th tt c cc bin th u dng tt: SX, DX v.v. . . Xin ng
lo lng, nhng my tnh sn xut gn y p ng c ton b nhng yu cu
a ra v s a ra di y. Yu cu i vi phn cng ca h thng mun
ci t Linux cn c xc nh bi la chn phn mm ca ngi dng (v tc
l s ph thuc vo phin bn ca cc phn mm v t nhiu vo bn phn phi).
Bng 1.1 di y s a ra mt vi con s ch vi mc ch gip bn c lm
quen, nhng con s ny l khng chnh xc nhng khng khc bit nhiu gia
cc bn Linux khc nhau.

Bng 1.1: Yu cu i vi phn cng


Mong mun ca ngi dng Yu cu, MB
B nh a cng
Yu cu nh nht: ch lm vic trong giao din vn 8 200
bn vi dng lnh ca shell, c mt s ng dng
ngi dng nh vim, emacs,. . .
Dng c giao din ho X Window cng vi mt 32 400
s trnh qun l ca s nh nh nh icewm, fluxbox,
windowmaker.
Dng mi trng lm vic ho KDE. 128 1000
Chy cc ng dng cn nhiu b nh (nh GIMP, 256 1500
cc ng dng nm trong KOffice, OpenOffice.org).

Nh vy Linux c mt u im ln l kh nng lm vic thm ch trn


nhng my rt c, m trc y ch c th dng MS DOS (tt nhin l trong
trng hp ny chng ta ch thu c ch dng lnh, nhng iu ny khng
1.4 Ly Linux u? 13

ngn cn vic dng cc my tnh c lm vic c li v d lm router10 ). bt


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

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

10
my gip chuyn hng cc gi mng
Chng 2

Ci t h iu hnh Linux

Software is like sex, its good when its free Linus Torvalds.

Thng thng trn cc a ca bn phn phi Linux c hng dn ngn gn cch ci t Linux.
Ngoi ra, trn Internet bn c th tm thy rt nhiu cun sch n v vn ny. V tt c cc bn
phn phi ln (Debian, Slackware, Fedora, Mandrake, ...) u c cun hng dn ci t rt chi
tit, cho mi tnh hung s dng. Hy ch i v hy vng trong tng lai khng xa s c bn dch
Ting Vit ca nhng cun sch ny. Chnh v vy trong cun sch ny, tc gi s khng a ra cc
bc c th ca vic ci t, m xin bn c hy tm cc cun hng dn tng ng. Thay vo
l nhng g bn cn bit v chun b trc khi ci t, ng thi, tc gi s i c th v chi tit vo
nhng g c bit khi ci t Linux trn my tnh c mt trong cc h iu hnh (HH) Windows
cng nh vic khi ng nhiu h iu hnh.
Vn ch, phn ln ngi dng Vit Nam trc khi bt u hc Linux
lm quen v rt c th c kinh nghim s dng cc HH dng Windows nh
Windows 98, Windows 2000 v Windows XP. V trn thc t th tm thi Linux
kh c th l HH u tin m ngi dng lm quen. Nh th, mt cch t
nhin, nu ngi dng lm vic vi HH Windows v quyt nh th nghim
vi Linux, th h khng mun mt i mi trng lm vic quen thuc ca mnh,
cng vi nhng g to ra v cu hnh di di Windows. Rt may l khng
nht thit phi nh mt tt c nhng th . Bi v trn mt my tnh c th
cng chung sng ha bnh hai HH v thm ch nhiu hn na (nu c ch
trn a!). Chnh v th, pha di s ni cch ci t HH Linux trn my tnh
ci t mt trong cc h iu hnh ca hng Microsoft.

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

T a CD-ROM
T bn sao chp Linux trn a cng
T my ch tp tin ca mng ni b qua NFS;
T my tnh khc trong mng ni b qua SMB;
T my tnh xa (v d t Internet) qua giao thc FTP;
2.1 Chun b ci t 15

T mt my ch WWW qua giao thc HTTP.

Theo kin c nhn ca tc gi th thun tin v c tnh thc t nht l ci


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

BIOS:

nh sn xut;
s hiu phin bn.

Controller a cng: loi (IDE hay SCSI) v dung lng ca a (nu


nh bn c dng a IDE, th cn kim tra xem BIOS c h tr vic truy
cp ch LBA hay khng):

hda (Master trn controller s 1 hay Primary Master);


hdb (Slave trn controller s 1 hay Primary Slave);
hdc (Master trn controller s 2 hay Secondary Master);
hdd (Slave trn controller s 2 hay Secondary Slave).
nh sn xut v s mu m ca adapter SCSI (nu c).

Dung lng ca b nh (tnh bng Kilobyte

CD-ROM:

Giao din (IDE, SCSI, hay giao din khc);


i vi cc a CD-ROM khng phi IDE, cng nh SCSI - nh sn
xut v s mu m.

Chut:

loi chut (serial, PS/2, hay bus mouse);


giao thc (Microsoft, Logitech, MouseMan, v.v. . . );
s nt;
i vi chut cm vo cng ni tip th cn s th t ca cng .

Cc mn hnh
16 Ci t h iu hnh Linux

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

Mn hnh

nh sn xut
s mu m;
cc gi tr gii hn (min, max) ca tn s lm mi theo chiu dc v
theo chiu ngang (nhng gi tr ny bn c ch c th tm thy trong
ti liu i km vi mn hnh, Windows khng hin th nhng gi tr
ny, v chng rt quan trng trong khi cu hnh giao din ha).

Nu nh bn c mun kt ni mng (m UNIX ni chung l HH dnh


cho mng), th hy ghi li nhng d liu sau:

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

Loi v nh sn xut cc m thanh v game controller (nu nh c)

2.2 Phng xa v nhng li khuyn


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

hiu l c th phc hi li nu nh khng quyt nh qu vi vng. V vy c th


ni rng Werner Almesberger ng, khi trong hng dn s dng LILO c a
ra nhng li khuyn sau cho ngi dng khi ri vo trng hp kh khn nh
vy:

Khng hong ht. Nu nh c g khng lm vic, hy th mi cch


tm ra nguyn nhn, kim tra li nhiu ln thao tc ca mnh. Ch sau khi
mi thc hin cc bc sa li.

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


bn c khng mong i.

Xin thm mt li khuyn ph bin sau: * Hy xem cc tp tin log, tc l cc


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

2.3 Phn vng trn a v qu trnh khi ng


2.3.1 Th no l cu trc hnh hc ca a
Nh bn c bit, a cng gm vi a c ph lp t tnh, nm trn cng mt
trc v quay vi vn tc ln. c/Ghi d liu c thc hin bi cc u c nm
gia cc a ny, di chuyn t tm a ra ra ngoi ca a. Vng trn u c v
ra trn cc a khi quay quanh chng gi l rnh (track), cn tp hp cc rnh
nm chng ln nhau gi l cylinder. Mi rnh li chia thnh cc sector, v c
18 Ci t h iu hnh Linux

th ghi vo mi sector 512 byte thng tin. V th c im ca mt a thng


l tp hp ba s: s cylinder/s rnh trong cylinder/s sector trn rnh hay cn
vit tt l C/H/S (ba ch ci u tin ca cc thut ng Ting Anh tng ng:
Cyliner/Head/Sector). Ba s ny gi l cu trc hnh hc ca a. a vi cu
trc hnh hc C/H/S c dung lng C*H*S*512 byte.
a cng l cc thit b khi, t l c v ghi thng tin theo cc khi, v kch
thc nh nht ca khi bng mt sector (512 byte). c th ghi thng tin ln
a, cn t u a ng v tr, tc l ch cho controller bit cn ghi thng tin
ny vo sector no. Sector c nh a ch theo s th t cylinder, s th t
u c (hay rnh) v s th t sector trn rnh.

2.3.2 Phn vng v bng phn vng ca a


Trong cc h thng Intel a thng c chia thnh cc phn vng. Rt c th
nguyn nhn ca vic phn vng l nguyn nhn lch s: cc phin bn MS-DOS
u tin khng th s dng c cc a ln, m dung lng a li pht trin
nhanh hn kh nng ca DOS. Khi ngh ra vic chia a thnh cc phn
vng. lm c iu ny, trong sector s 0 ca a (sector s 0 ca rnh u
tin trong cylinder s 0) ghi nh bng chia a thnh cc phn vng (partition
table). Mi phn vng c dng nh mt a vt l ring r. Mt trng hp ni
ring l trong cc phn vng khc nhau c th ci t cc h iu hnh khc
nhau.
Bng phn vng cha 4 bn ghi 16 byte cho 4 phn vng chnh. Mi bn ghi
c cu trc nh sau:

struct partition {
char active; /* 0x80: phn vng kch hot, 0: khng kch hot */
char begin[3]; /* CHS sector u tin, 24 bit
char type; /* loi phn vng (v d, 83 -- LINUX_NATIVE) */
char end[3]; /* CHS sector cui cng, 24 bit */
int start; /* s ca sector u tin (32-bit, tnh t 0) */
int length; /* s sector c trong phn vng (32 bit) */
};

Bng phn vng a thng c to bi chng trnh fdisk. Trn HH


Linux ngoi chng trnh fdisk truyn thng (tuy vy rt khc so vi chng
trnh fdisk trong MS-DOS v Windows), cn c hai chng trnh lm vic vi
phn vng a: cfdisk v sfdisk. Chng trnh cfdisk, ging nh fdisk ch
dnh lm vic vi bng phn vng a: n khng quan tm ch n thng
tin c trn a. Ch khc bit vi fdisk giao din thun tin: ch dn s dng
lnh v h thng trnh n (thc n). Chng trnh sfdisk c vi kh nng cao
hn, v d, cho php thao tc trn cc phn vng c ca a.
DOS s dng trng begin v end ca bng phn vng v Interrupt 13 ca
BIOS (Int 13h) truy cp ti a, v th khng th s dng a c dung lng
ln hn 8,4 Gbyte, ngay c vi cc BIOS mi (v vn ny s ni n sau),
cn phn vng th khng th ln hn 2,1 Gbyte (nhng y l do hn ch ca h
thng tp tin FAT16).
Linux th ch s dng trng start v length ca bng phn vng a v h
tr cc phn vng cha n 232 sector, tc l dung lng c th t 2 Tbyte
2.3 Phn vng trn a v qu trnh khi ng 19

V trong bng chia a ch c 4 dng cho cc phn vng, s phn vng chnh
trn a ngay t u d hn ch: khng th ln hn 4. Khi m 4 phn vng tr
thnh t, th ngi ta sng ch ra phn vng lgc. Mt trong s cc phn vng
chnh tr thnh m rng (loi phn vng - 5 hay F hay 85 trong h c s mi
su). V trong phn vng m rng ngi ta to ra cc phn vng lgc. Phn
vng m rng khng c s dng trc tip m ch dng ghi cc phn vng
lgc. Sector u tin ca phn vng m rng ghi nh bng phn vng vi bn
u vo: mt dng cho phn vng lgc, mt cho phn vng m rng khc, cn
hai ci cn li khng c s dng. Mi phn vng m rng c mt bng chia
ca mnh, trong bng ny, cng ging nh trong phn vng m rng chnh, ch
s dng c hai dng a ra mt phn vng lgc v mt phn vng m rng.
Nh vy, thu c mt chui cc mt xch t bng phn vng, mt xch u tin
m t ba phn vng chnh, v mi mt xch tip theo mt phn vng lgc v
v tr ca bng tip theo.
Chng trnh sfdisk trn Linux cho thy ton b chui ny:

[root]# sfdisk -l -x /dev/hda

Disk /dev/hda: 784 cylinders, 255 heads, 63 sectors/track


Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start End #cyls #blocks Id System


/dev/hda1 * 0+ 189 190- 1526143+ 6 FAT16
/dev/hda2 190 783 594 4771305 5 Extended
/dev/hda3 0 0 0 0 Empty
/dev/hda4 0 0 0 0 Empty

/dev/hda5 190+ 380 191- 1534176 6 FAT16


381 783 403 3237097+ 5 Extended
190 189 0 0 0 Empty
190 189 0 0 0 Empty

/dev/hda6 381+ 783 403- 3237066 7 HPFS/NTFS


381 380 0 0 0 Empty
381 380 0 0 0 Empty
381 380 0 0 0 Empty

S phn vng lgc theo nguyn tc khng hn ch, v mi phn vng lgc
c th cha bng phn vng v cc phn vng lgc ca mnh. Tuy nhin trn
thc th vn c nhng hn ch. V d, Linux khng th lm vic vi hn 15 phn
vng trn cc a SCSI v hn 63 phn vng trn a IDE.
Phn vng m rng trn mt a vt l, hay trong mt phn vng m rng
cha n (c th gi l m) ch c th lm mt: khng mt chng trnh phn
chia a no trong s c (fdisk v tng t) c th to thm mt phn vng
m rng th hai.
a trn Linux ni ring ( a vt l) c truy cp qua tn ca thit
b: /dev/hda, /dev/hdb, /dev/sda, v.v. . . Cc phn vng chnh c thm s 1-
4 trong tn thit b: /dev/hda1, /dev/hda2, /dev/hda3, cn phn vng lgc
th c cc tn: /dev/hda5, /dev/hda6, /dev/hda7 . . . (bt u t s 5). T
nhng g cp n trn c th suy ra ti sao li c th b qua cc tn nh
/dev/hda3 hay /dev/hda4 (n gin l phn vng chnh th ba v th t
20 Ci t h iu hnh Linux

khng c to ra) v ngay sau /dev/hda2 bn c thy /dev/hda5 (phn vng


lgc trong phn vng m rng /dev/hda2), v sau th vic nh s li theo
th t thng thng.
Trong Windows cc phn vng lgc nhn c tn (ch ci), bt u t ch
ci cui dng dnh cho phn vng chnh. V d nu mt a cng c hai phn
vng chnh (C: v D:) v mt phn vng m rng, trong phn vng m rng to
ra hai phn vng lgc, th nhng phn vng lgc ny s c t tn E: v F:.
Xin ni thm, trong Windows NT v 2000/XP c th thay i tn ca cc phn
vng a.

2.3.3 Qu trnh khi ng cc HH ca cng ty Microsoft


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

Bng 2.1: Cu trc ca sector khi ng chnh

Dch chuyn Ni dung


0x000 M ca trnh khi ng chnh
0x1BE Bng phn vng a
0x1FE S mu nhim (0xAA55)

MS-DOS, Windows95 v NT ghi nh DOS MBR trong khi ci t. Ngoi ra cng


c th to MBR ca MS vi cu lnh DOS sau: fdisk /mbr.
2.3 Phn vng trn a v qu trnh khi ng 21

Xin tr li vi qu trnh khi ng. Int 19h ca BIOS np trnh khi ng


chnh vo b nh my tnh v chuyn quyn iu khin cho chng trnh ny.
Nhng chng trnh b nh ny khng kh nng khi ng HH; tt c
nhng g m n c th lm l np vo b nh chng trnh mnh hn
trnh khi ng th hai. lm c iu ny, n tm trong bng phn vng
kch hot v c vo b nh trnh khi ng th hai, bt u t sector lgc u
tin ca phn vng kch hot. Hy ch n cm t bt u t. V trnh khi
ng th hai trn cc h thng khc nhau c di khc nhau. Trong phn vng
c nh dng di h thng tp tin FAT, trnh khi ng th hai chim mt
sector (512 byte). Trong phn vng nh dng di h thng tp tin NTFS, trnh
khi ng th hai chim vi sector.
Trnh khi ng th hai np lp chng trnh u tin, cn thit cho vic khi
ng h iu hnh. Trong trng hp MS DOS chng trnh khi ng ng np
IO.SYS theo a ch 700h, sau MSDOS.SYS v chuyn quyn iu khin cho
SYSINIT ca mun IO.SYS.
Nu v l do no khng tm thy trn a phn vng kch hot, th qu
trnh khi ng s tip tc vi vic x l Int 18h. Trng hp ny trn thc t
rt him khi s dng, nhng kh nng ny c th c ch trong trng hp no
. Trong khi khi ng t xa, khi h iu hnh khi ng t my ch, th Int
ny c POST chuyn hng ln ROM ca cc mng.
i vi cc HH khc ca Microsoft th qu trnh khi ng din ra tng t.

Windows95 khi ng ging nh DOS nhng thay th IO.SYS v MS-


DOS.SYS bi cc tp tin ca mnh. Cc tp tin DOS c gi li di cc
tn tng ng IO.DOS v MSDOS.DOS. Khi bn c chn khi ng DOS,
Windows95 s i tn cc tp tin ca mnh vi phn m rng w40 v phc
hi tn ban u ca cc tp tin h thng ca DOS. Qu trnh khi ng tip
tc vi vic np IO.SYS. Nh th, sector khi ng ca DOS v Windows95
l nh nhau.

Windows NT4 s dng MBR DOS, nhng thay th bn ghi khi ng ca


phn vng kch hot bng cch thay th NTLDR vo ch IO.SYS. y l
mt chng trnh mng v c th lm c nhiu th. V d, c th tm
tp tin boot.ini v nu nh tham s timeout ln hn 0, th a ra trnh n
(thc n) khi ng.

Mi dng ca phn [operating systems] trong tp tin boot.ini xc nh


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

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

Nu ngi dng chn NT, th s khi ng theo a ch phn vng c ch


trn dng u tin. Trn dng tng ng vi phng n Microsoft Windows, ch
22 Ci t h iu hnh Linux

a ra C:\, v tn ca tp tin khi ng c ly theo mc nh: bootsect.dos.


Tp tin c np vo b nh v qu trnh khi ng c tip tc ging nh khi
bn ghi khi ng c np bi m chng trnh t MBR.
i vi vic khi ng cc h thng khc, c th s dng cch . Ch cn
thm vo boot.ini cc dng cha lin kt n tp tin khi ng khc. Khi chn
cc dng ny s khi ng HH tng ng. Trong v d trn Linux cng c
khi ng theo cc ny. Trong tp tin C:\BOOTSECT.LNX cn ghi ni dung ca
bn ghi khi ng, to bi Linux (ni ng hn LILO, trnh khi ng tiu
chun ca Linux).

2.3.4 Vn vi cc a ln
Trn MS-DOS v cc phin bn u tin ca Windows truy cp ti a (trong
c c bc khi ng u tin ca HH) c t chc qua Int 13 (Int 13h) ca
BIOS. Khi ny s dng s nh a ch sector trn a trn c s C/H/S (xem
trn). Chnh xc hn:

AH chn thao tc;

CH 8 bit nh hn ca s cylinder;

CL 7-6 bit tng ng bit ln ca s cylinder, 5-0 tng ng s sector;

DH s ca u c;

DL s ca a(80h hay 81h).

(Cn lu rng vic nh s cylinder vt l v rnh thng bt u t 0,


cn sector trn rnh nh s bt u t 1). Tuy nhin trn thc t s u c
khng qu 16, cn s sector trn rnh khng qu 63, v d c dng 10 bit
ch ra cylinder, BIOS vn khng th lm vic vi a dung lng ln hn
1024*63*16*512 = 528 Mbyte.
vt qua hn ch ny, ngi ta p dng nhiu cch lu c khc nhau. V
d, Extended CHS (ECHS) hay Large disk support (i khi cn gi l Large)
s dng ba bit cha dng n ca s th t u c tng s cylinder. Cch
ny cho pehsp s dng cu trc hnh hc gi mo ca a vi 1024 cylinder, 128
u c v 63 sector/rnh. Bin i Extended CHS thnh a ch CHS thc (c
th cha n 8192 cylinder) c BIOS thc hin. Cch ny cho php lm vic
vi a c dung lng n 8192*16*63*512 = 4 227 858 432 byte hay 4,2 Gbyte.
Nhng cc nh pht trin cng ngy cng tng mt ghi ca a, s a v
s rnh, v cn pht minh ra cc phng php khc tng dung lng a. V
d, s sector trn rnh khng cn c nh m tr thnh khc nhau trn cc rnh
khc nhau (trn cc rnh nm gn ra ngoi ca a, di hn, s sector c tng
ln). Kt qu l b ba s C/H/S khng cn phn nh ng cu trc hnh hc ca
a, v cc phin bn BIOS c khng th h tr truy cp ti ton b khng gian
a.
Khi ngi ta ngh ra phng php khc lm vic vi cc a ln qua Int
13h - nh a ch cc khi theo ng thng (Linear Block Addressing hay
LBA). Khng i su vo chi tit, c th ni rng tt c sector trn a c nh
2.4 La chn trnh khi ng 23

s mt cch tun t, bt u t sector u tin trn rnh s 0 ca cylinder s 0.


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

2.4 La chn trnh khi ng


2.4.1 Trnh khi ng GRUB
GRUB (GRand Unified Bootloader) trnh khi ng ht sc mnh c kh nng
khi ng rt nhiu HH min ph cng nh HH thng mi. GRUB c
Erich Boleyn vit vo nm 1995 khi ng h thng GNU Mach, v khng th
s dng nhng trnh khi ng khc. Sau vo nm 1999 Gordon Matzigkeit v
Yoshinori K. Okuji chuyn GRUB thnh mt gi chng trnh GNU, a chng
trnh ny thnh mt phn mm m ngun m. Mc d mi ra i v s phin bn
cn rt nh1 nhng y l s la chn tt i vi phn ln ngi dng my tnh
c nhn. Nu khng c nhu cu c bit no th bn nn chn trnh khi ng
ny. Cc bn phn phi Linux ln (Debian, SuSE, Fedora,. . . ) cng chuyn
sang s dng GRUB lm la chn theo mc nh.
Mt trong nhng tnh nng quan trng ca GRUB l tnh mm do. GRUB
c th hiu cc h thng tp tin v nh dng thc thi ca nhn, v th bn c
th np HH theo cch a thch. Ngoi ra, nu khng mun dng giao din
1
hy so snh s phin bn ca GRUB v LILO
24 Ci t h iu hnh Linux

dng lnh, th bn c th ci t v s dng giao din thc n v thay i giao


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

2.4.2 Trnh khi ng LILO


Trnh khi ng LILO c vit bi Werner Almesberber. LILO c th khi
ng nhn Linux t a mm, a cng, v cng c th khi ng cc h iu
hnh khc: PC/MS-DOS, DR DOS, OS/2, Windows 95/98, Windows NT/2000/XP,
386BSD, SCO UNIX, Unixware v.v. . . LILO cho php chn n 16 h iu hnh
khc nhau khi ng.
LILO khng phi l chng trnh n l m l mt b gm nhiu chng
trnh: trnh khi ng, cc chng trnh s dng ci t v cu hnh trnh
khi ng, v cc tp tin phc v:
2.4 La chn trnh khi ng 25

chng trnh /sbin/lilo, chy di Linux, phc v ghi tt c thng


tin cn thit trong giai on khi ng vo cc ch tng ng. Cn chy
chng trnh ny sau mi ln c thay i trong nhn hay trong tp tin cu
hnh LILO;

cc tp tin phc v, cn cho LILO trong thi gian khi ng. Nhng tp tin
ny thng nm trong th mc /boot. Quan trng nht trong s chng
l bn thn trnh khi ng (xem pha di) v tp tin map (/boot/map);
trong tp tin ny c ch ra v tr ca nhn. Mt tp tin quan trng khc
tp tin cu hnh LILO; thng c tn /etc/lilo.conf;

trnh khi ng y l phn LILO c np vo b nh u tin qua Int


ca BIOS; trnh khi ng np nhn Linux hay sector khi ng ca h iu
hnh khc. Trnh khi ng gm c hai phn. Phn th nht c ghi vo
sector khi ng v phc v np phn th hai, c kch thc ln hn rt
nhiu. C hai phn thng c ghi trn a trong tp tin /boot/boot.b.

Cn nh rng, nh dng ca sector khi ng to ra bi LILO khc vi nh


dng MBR ca DOS. V th nu ghi sector khi ng LILO vo MBR, th cc h
iu hnh ci ca Microsoft s ngng khi ng (nu nh khng c cc bin
php b sung).
Sector khi ng ca LILO c th c thit k s dng nh sector khi
ng ca phn vng, trong c ch cho bng phn vng. Sector khi ng ca
LILO trong khi ci t c th t vo nhng ch sau:

sector khi ng ca a mm trong nh dng Linux (/dev/fd0, . . . );

MBR ca a cng u tin (/dev/hda, /dev/sda, . . . );

sector khi ng ca phn vng chnh vi h thng tp tin Linux trn a


cng u tin (/dev/hda1, /dev/hda2, . . . );

sector khi ng ca phn vng lgc trong phn vng m rng a cng
u tin (/dev/hda5, . . . ). S tht l phn ln chng trnh dng fdisk
khng ra kh nng khi ng khi ng t phn vng m rng v t
chi vic kch hot phn vng ny. V vy trong thnh phn LILO c cha
mt chng trnh c bit (activate) cho php vt qua hn ch ny. Tuy
nhin chng trnh fdisk ca bn phn phi Linux h tr kh nng kch
hot phn vng m rng. Cn s dng ty chn -b hoc bin BOOT.

Sector khi ng ca LILO khng th t vo cc ch sau:

sector khi ng ca a mm hay phn vng chnh, vi nh dng h thng


tp tin khc Linux;

trong phn vng swap ca Linux;

trn a cng th hai.

Ngoi ra, cn nh rng, LILO trong thi gian khi ng cn nhng tp tin
sau:
26 Ci t h iu hnh Linux

/boot/boot.b;

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

tt c phin bn nhn khi ng (nu bn c chn phin bn nhn khi


khi ng);

sector khi ng ca cc h iu hnh khc m bn c mun khi ng


qua LILO;

tp tin cha cc thng bo a ra khi khi ng (nu c xc nh).

Nh vy, sector khi ng LILO cng nh nhng tp tin lit k (trong s


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

2.4.3 Cc trnh khi ng khc


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

Nu nh trc khi ci t Linux c HH Windows NT/2000/XP, th trnh


khi ng bn c c th s dng l OS Loader ca NT. So snh vi LILO
th trnh khi ng OS Loader c t nht hai u th. Th nht, tt c cu
hnh c khng b mt (chng ta c th chn khi ng Windows hay Linux
theo la chn), v th hai, c th ci t Linux ln a m LILO khng th
khi ng, v d, a th hai trn controller th hai (Secondary Slave).

Nu nh trc khi ci t Linux bn c ch c HH Windows 95 hay


Windows 98 v khng c Windows NT/2000 hay XP, th OS Loader khng
c ci t. V nu nh v mt l do no bn c khng mun ci t
LILO, th c th s ng chng trnh khi ng loadlin.exe (thng i km
vi bn phn phi Linux);

Thi gian gn y trong thnh phn bn phn phi Linux thng c chng
trnh khi ng GRUB.

Trong thnh phn OS/2 ca cng ty IBM c chng trnh khi ng Boot
Manager. Trong rt nhiu hng dn ngi ta khuyn dng chng trnh
ny ti chc khi ng nhiu HH.

Trong cc ngun thng tin khc nhau cn nhc n chng trnh System
Commander;

Thm mt trnh khi ng khc c trong thnh phn gi PartitionMagic


ca cng ty Power Quest. Chng ta s ni v chng trnh ny trong phn
nh tip theo.
2.5 Chun b cc phn vng trn a 27

Ngoi ra, tc gi cn thy ni n mt lot trnh khi ng khc (mt s c


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

2.4.4 Cc phng n khi ng


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

Nu trn my ch c mt h iu hnh Linux duy nht, hy dng GRUB.

Nu ci t Windows NT hay Windows 2000/XP, th hy s dng GRUB.

Nu c Windows 95 hay Windows 98 trn FAT16, v bn c khng mun


ci t chng trnh khi ng no khc, th c th s dng GRUB hoc
LILO, hoc u tin chy DOS v sau khi ng Linux nh chng
trnh loadlin.exe (hay mt chng trnh tng t, c vi chng trnh nh
vy, nhng chng ta s khng xt n).

Nu ci t Windows 95 OSR2 hay Windows 98 trn FAT32, v bn


c khng mun ci t thm chng trnh khi ng, th cn s dng
loadlin.exe. Rt nhiu HOWTO khng nh rng khng cn s ng LILO,
nu nh phn vng kch hot c nh dng FAT32, mc d tc gi khng r
nguyn nhn. Tuy nhin th nghim khi ng Linux qua NT Loader, ci
t trn phn vng FAT32, ca tc gi kt thc khng thnh cng. V
th, trong trng hp ny tc gi phi s dng chng trnh loadlin.exe.
Chng trnh ny hon thnh tt nhim v, v to cho tc gi mt n
tng tt, v th tc gi khuyn bn c s dng loadlin.exe khi ng
Linux.

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

2.5 Chun b cc phn vng trn a


2.5.1 Li khuyn khi to phn vng
a ra li khuyn y khng phi l vic d dng, v phn vng a phc thuc
rt nhiu vo thch v nhu cu ca ch nhn a. Nhng cng xin th a ra
vi ngh sau. Tc gi s t tn a v phn vng theo tiu chun ca Linux,
tc l /dev/hda, /dev/hdb, v.v. . . i vi a v /dev/hda1, /dev/hda2,
v.v. . . i vi cc phn vng.
28 Ci t h iu hnh Linux

Vic phn chia a thnh cc phn vng l cn thit, bi v Windows v Linux


s dng cc cch lu tr thng tin trn a v sau c chng t a khc nhau.
Chnh v th tt hn ht l dnh cho mi h iu hnh mt (hoc thm ch mt
vi nh chng ta s thy di) phn vng ring.
u tin chng ta hy xem xt mt trng hp n gin dung lng a
ca bn c khng vt qu 8,4 Gbyte (ni chnh xc hn s cylinder khng
vt qu 1024). Trong trng hp ny mi th u n gin: bn c ch vic
chia a lm sao ch cho h iu hnh s ci t. C th s dng d liu
cho bit kch thc a nh nht cn thit ci t h iu hnh vi cu hnh
c bn trong bng 2.2.

Bng 2.2: Nhu cu s dng khng gian a ca HH

H iu hnh Yu cu
Windows 95 100 Mbyte
Windows 98 200 Mbyte
Windows NT 200 Mbyte
Windows 2000 700 Mbyte
Linux Red Hat 6.2 (Work- 700 Mbyte
station vi KDE)

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

Trong Linux, RAM v khng gian swap hp li to thnh b nh o chung.


V d, nu bn c c 256 MByte RAM v 128 Mbyte khng gian swap, th
s c 384 Mbyte b nh o.

lm vic vi Linux cn t nht 16 Mbyte b nh o, v th nu bn c


ch c 4 Mbyte RAM, th cn phn vng swap khng nh hn 12 Mbyte.

Kch thc ca phn vng swap c th ln bao nhiu ty thch, tuy nhin
khng cn cu hnh qu nhiu nu khng cn thit. Thng thng ch cn
dng swap khi my t b nh RAM hoc chy my ch vi nhiu ng dng
2.5 Chun b cc phn vng trn a 29

nng. Trong tt c mi trng hp tt nht trnh dng swap v n chm


hn RAM nhiu.2

Khi tnh kch thc ca khng gian swapping, cn nh rng kch thc qu
ln c th l v ch. Trn my tnh vi 16 Mbyte RAM khi ci t Linux vi
cu hnh chun v cc chng trnh ng dng chun th 48 Mbyte khng
gian swapping l . Cn nu ci t Linux vi cu hnh nh nht, th
khng cn n khng gian swap. Tt nhin, kch thc chnh xc ca khng
gian swap ph thuc ln vo chng trnh s c ci t.

Ni chung, ch nn suy ngh v vn dung lng ca phn vng swap khi


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

phn khi ng ca tt c cc h thng Microsoft t vo phn vng chnh


u tin ca a, vi nh dng FAT16 (DOS);

phn vng chnh tip theo dnh cho th mc gc (/), kch thc khong 1
Gbyte;

phn vng chnh th ba dnh cho swap ca Linux (li khuyn v kch thc
ca phn vng ny xem trn);

phn cn li ca a t thnh phn vng m rng;

trong phn vng m rng to cc phn vng lgc cho mi HH s ci t:


Windows 98, Windows NT/2000/XP, v ng thi cho cc h thng tp tin
/home v /usr ca HH Linux (trong /home s t cc tp tin ring ca
ngi dng, cn trong /usr chng trnh s ci t).

Tt nhin, nu nh bn c ch c Windows 95 vi FAT16, th c th Win-


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

2.5.2 Chng trnh phn chia a


Sau khi hon thnh kt hoch chia a, cn la chn cng c a k hoch
ny thnh hin thc. Chng trnh phn chia a c bit n nhiu nht l
fdisk; trn mi h iu hnh u c phin bn ring ca chng trnh ny. V
khng cn g hn ngoi chng trnh ny, nu nh phn chia a trng, khng
cha bt k d liu no. Nhng chng ta ang xem xt trng hp c HH
no trn a v cn phn chia a m khng lm mt thng tin. fdisk
khng thch hp cho nhng mc ch nh vy.
Trong thnh phn cc bn phn phi Red Hat v BlackCat (rt c th trong
cc bn phn phi khc) c chng trnh fips, phc v cho phn chia a.
Tuy nhin, theo kin ca ngi dng th khng nn s dng chng trnh ny.
V th li khuyn ca tc gi vi bn c, nhng ngi dng Linux mi nu
nh mun phn chia li a m khng lm mt thng tin, th hy tm chng
trnh Partition Magic ca cng ty Power Quest (http://www.powerquest.com) v
s dng chng trnh ny.
2.6 Windows NT v Linux: khi ng qua NT OS Loader 31

Th nht, chng trnh ny cho php phn chia li a m khng lm mt


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

2.6 Windows NT v Linux: khi ng qua NT OS


Loader
Trong phn ny, khi ni v Windows NT xin ngm hiu c Windows 2000 v NT,
v quan h ca chng i vi vic ci t Linux hon ton ging nhau. Chng
ta gi thit l Windows NT c ci vo phn vng /dev/hda2 (nu nh bn
c nh, /dev/hda1 s dnh cho phn vng FAT16). Nu HH Windows NT
c ci t, ngha l trnh khi ng OS Loader cng c ci t. V nh
th c th s dng chng trnh ny khi ng Linux. Tc gi hy vng rng
bn c sao lu nhng thng tin c gi tr ca mnh. Cc bc ci t c th
m t nh sau:

1. Nu nh bn c cha ci t Linux bao gi, th trc khi bt u cn


chun b a mm khi ng v phc hi Windows NT. to a mm khi
ng ch cn nh dng li a mm, ri sao chp ln cc tp tin ntldr,
ntdetect.com v boot.ini t th mc gc ca a khi ng NT. Chng
trnh to a phc hi Windows 2000/XP c th chy t trnh n h thng
(lnh Backup trong Start/Program/Accessories).

2. Dng chng trnh Partition Magic ly mt phn a trng v t to


ra phn vng vi dng ext2(3) (h thng tp tin Linux) v phn vng swap.
Cch tnh kch thc ca chng ni trn.

3. Ci t Linux theo ch dn ca bn phn phi. Trong khi ci t cn ch


n nhng im sau:

th nht, trong qu trnh ci t nht nh phi to ra cc a mm


khi ng Linux. Tc l cn tr li Yes, make a BOOT DISK (hay
tng t th, ty thuc vo bn phn phi) khi c hi c to a
mm khi ng hay khng. a mm ny s c dng n sau.
Ngoi ra, c th s dng a mm ny khi ng Linux. y cng
l mt phng n khi ng, v hn na khc vi a mm khi ng
DOS, sau khi khi ng h thng khng cn yu cu a mm na,
c th b n ra khi , s dng c cc a mm khc. Tuy nhin
32 Ci t h iu hnh Linux

cch khi ng ny cng c iu tin, v th khng nn s dng thng


xuyn. Ch s dng trong trng hp bt c d. a mm ny cn
cn thit cho cu hnh khi ng nhiu HH.
th hai, khi ci t Linux cn ci LILO vo sector u tin ca phn
vng dnh cho th mc gc (/) ca Linux, ch khng phi vo sector
khi ng chnh ca a (MBR). Chng ta gi thit Linux c ci vo
phn vng /dev/hda3. Nh vy LILO s c ci vo sector u tin
ca /dev/hda3

Theo nguyn tc, nu nh bn c ci LILO vo MBR, th khng phi mi


th hng ht. Kt qu cui cng (khi ng qua NT Loader) vn c th
t c nhng cn b ra mt cht cng sc. Vn ch, nh dng MBR
to bi LILO v Windows (DOS) khc nhau. V th nu bn c ci LILO
vo MBR, th cu phc hi li MBR ca Windows. Tc gi cng s ni cch
phc hi, nhng tt hn ht l bn c ci LILO ngay lp tc vo sector
u tin ca phn vng ci Linux.

4. Sau khi ci t xong, khi ng Linux bng a mm (nu nh bn c ci


LILO vo phn vng ca Linux v khng ng g n MBR, th y l kh
nng duy nht).

5. Sao chp sector khi ng ca Linux vo mt tp tin; tp tin ny s cn


trnh khi ng Windows NT/2000 c th khi ng Linux. Vic sao chp
thc hin nh sau: u tin gn mt a mm trng (mi mua th cng tt),

[root]# mount -t vfat /dev/fd0 /mnt/floppy

chuyn vo th mc /mnt/floppy

[root]# cd /mnt/floppy

v thc hin cu lnh

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

ghi ni dung sector khi ng ca a /dev/hda3 vo tp tin


/mnt/floppy/bootsect.lnx3

6. Tip theo cn khi ng li vo Windows NT, bng cu lnh:

[root]# shutdown -h now


3
Ghi ch: nu a C: (/dev/hda1) c nh dng FAT, th c th to tp tin bootsect.lnx trong th
mc gc ca a C:. Tc gi khng bit (cha th) c th khi ng khng cn a mm khng,
nu phn vng chnh u tin c nh dng NTFS. Tuy nhin y cng khng c vn g, ch
cn sao chp sector khi ng qua a mm nh ang trnh by. Tm thi nhn Linux cn cha
h tr tt vic ghi ln phn vng NTFS.
2.6 Windows NT v Linux: khi ng qua NT OS Loader 33

V MBR cha c g thay i, nn Windows NT s khi ng. Trong NT cn


sao chp tp tin bootsect.lnx vo th mc gc ca a C:, hay chnh xc hn
l vo th mc gc ca phn vng m t khi ng Windows NT. y c
th l phn vng FAT16 hay phn vng NTFS. c im nhn ra phn
vng ny l hai tp tin ntldr v boot.init cha trong (nhng tp tin ny
c th n!). Tp tin bootsect.lnx c th t thuc tnh ch c (read-only).

7. Sau tm tp tin boot.ini v thm vo dng sau:


C:\bootsect.lnx="LINUX"
(tt nhin, trong du ngoc kp bn c c th t tn bt k.)

8. Vic cn li l khi ng li my tnh mt ln na, v trong trnh n chn


h iu hnh s c LINUX. Nu chn LINUX, th LILO s c chy v sau
n (LILO) s np Linux.

Cn by gi chng ta s xem xt trng hp bn c (do v tnh hay c )


ci t LILO vo bn ghi khi ng chnh ca a (Master Boot Record, MBR).
Trong trng hp ny bn ghi khi ng Windows NT (hay 2000) s b xa, v
vic khi ng Windows NT (bc th 6 trn) l khng th. Nu nh bn c
vn cn mun s dng trnh khi ng OS Loader ca NT, ch khng mun dng
LILO, th nhng bc trn c thay i mt cht: thay cho bc th 6 cn lm cc
thao tc sau.

1. Khi ng Windows NT t a mm khi ng ( to trc khi ci t


Linux, nu khng c th bn c cn tm mt my khc ang chy Windows
NT ri to). Trong trnh n (thc n) ca trnh khi ng cn chn lnh
Recover, ri chn ch Command mode. Sau ng nhp vo ti khon
nh qun tr (administrator).

2. Phc hi li bn ghi khi ng chnh ca a. S dng cu lnh fdisk /mbr.


Tc gi dng lnh ny thnh cng, mc d trong mt s bi bo ni cch
phc hi MBR nh vy khng phi lc no cng lm vic. Trong Windows
2000 c cc lnh chuyn dng fixboot v fixmbr (chy t console phc hi
h thng). Chy hai lnh ny theo th t ch ra. Sau Windows 2000
s khi ng bnh thng.

3. Khi ng li my tnh t a mm khi ng Linux v ng nhp vo h


thng vi quyn ngi dng root.

4. Nhp lnh cd /etc v m tp tin lilo.conf. u tp tin ny c lin


kt n phn vng khi ng theo mc nh, v d, /dev/hda.

5. Dng bt k trnh son tho no, v d, CoolEdit ca Midnight Comman-


der, thay th gi tr ny thnh phn vng ci Linux ln (chnh xc
hn l thnh phn vng c gn nh gc (/) ca Linux). Nu Linux c
ci vo phn vng /dev/hda3, th cn ghi ci , tc l thay th /dev/hda
thnh /dev/hda3. Nu nh bn c khng nh ci Linux vo u, th
hy chy cu lnh mount v tm kt qu tng t nh sau4 :
4
c ngha l tm phn vng gn vo th mc gc /, trong v d ny l /dev/hda3
34 Ci t h iu hnh Linux

/dev/hda3 on / type reiserfs (rw)

6. Chy lnh /sbin/lilo ghi trnh khi ng vo phn vng /dev/hda3


(cn chy lnh lilo khng c tham s). S c cnh bo v vic phn vng
khng phi l u tin trn a. y chnh l iu chng ta cn, bn ghi
khi ng ca Windows c gi nguyn vn.

7. Thc hin cc bc 6-8 nh trn.

D dng on ra rng, quy trnh phc tp vi hai ln khi ng li ch


chuyn sector khi ng Linux t MBR vo sector u tin ca phn vng dnh
cho Linux, v phc hi MBR ca Windows.
Qu trnh ci t Linux kt thc y. Bn c c th chn HH s khi
ng v iu khin my tnh ca mnh.

2.7 S dng trnh khi ng GRUB


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

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

2.7.2 Cu hnh GRUB


GRUB c mt giao din trnh n t ngi dng c th chn mt mc (mt
h iu hnh) bng cc phm mi tn ri nhn <Enter> khi ng. dng
c trnh n , bn cn mt tp tin cu hnh menu.lst nm trong th mc
khi ng /boot. Thng thng tp tin ny c to ra khi ci t. Hy xem v
d mt tp tin nh vy di y:

# GRUB example configuration file on the teppis openSUSE system.


# Modified by YaST2. Last modification on Sun Apr 2 22:22:11 MSD 2006

color white/blue black/light-gray


2.7 S dng trnh khi ng GRUB 35

default 0
timeout 8

###Dont change this comment - YaST2 identifier: Original name:linux###


title SUSE LINUX 9.3
kernel (hd0,0)/vmlinuz root=/dev/hda5 vga=0x31a selinux=0
splash=silent resume=/dev/hda7 showopts
initrd (hd0,0)/initrd

###Dont change this comment - YaST2 identifier: Original name:


windows###
title Windows
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,0)
makeactive
chainloader +1

###Dont change this comment - YaST2 identifier: Original name: xen###


title XEN
kernel (hd0,0)/xen.gz dom0_mem=196608
module (hd0,0)/vmlinuz-xen root=/dev/hda5 vga=0x31a selinux=0
splash=silent resume=/dev/hda7 showopts
module (hd0,0)/initrd-xen

###Dont change this comment - YaST2 identifier: Original name: floppy###


title Floppy
root (fd0)
chainloader +1

Tc gi ngh rng cn gii thch c th hn mt cht v tp tin ny. C th


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

Tt nhin y khng phi l tt c nhng kh nng s dng ca GRUB,


nhng i vi ngi dng mi th nh vy l . Sau mt thi gian lm vic vi
Linux v c kinh nghim bn s bit cch tm thm thng tin v trnh khi
ng tuyt vi ny.

2.8 S dng trnh khi ng LILO


2.8.1 Ci t v cu hnh LILO
Ging nh trng hp Windows NT, chng ta s a ra cc bc cn thc hin
c th khi ng nhiu HH.

1. Trc khi ci t Linux hy chun b a mm khi ng Windows.

2. Dng chng trnh Partition Magic ly phn khng gian a cn trng


v trn to ra mt phn vng ext2(3) (h thng tp tin Linux) v mt
phn vng swap. Cch chia a ni trn. Nu dung lng a cng
vt qu 8,4 Gbyte th hy c k cc phn 2.3 v 2.5.

3. Ci t Linux theo ch dn i km vi bn phn phi. Cn nh rng, nu


bn mun s dng trnh khi ng LILO, th trong qu trnh ci dt Linux
cn chn phng n ci LILO vo bn ghi khi ng chnh (Master Boot
Record). To cc a mm khi ng theo nguyn tc l khng bt buc,
nhng tc gi khuyn bn c nn lm.5

4. Bc tip theo cn cu hnh LILO c th khi ng cc HH theo


la chn. LILO c cu hnh bng tp tin /etc/lilo.conf v cu lnh
/sbin/lilo. Cu lnh ny dng ci t (hay ci t li) LILO.
Chng ta xem xt mt v d nh ca tp tin cu hnh LILO. Trong v d ny
chng ta s coi nh thit b /dev/hda1 l phn vng vi DOS/Windows, cn
phn vng /dev/hda2 cha Linux. Trong trng hp /etc/lilo.conf
c dng gn nh sau:

boot = /dev/hda2
compact
delay = 50
# message = /boot/bootmesg.txt
root = current
image = /boot/vmlinuz-2.4.22
label = linux
read-only
other = /dev/hda1
5
Ghi ch. Trnh khi ng LILO khng bt buc phi ci t vo bn ghi khi ng chnh ca
a, LILO c th nm bn ghi khi ng ca phn vng chnh c kch hot v cha th mc
gc ca Linux hoc thm ch trn phn vng lgc trong phn vng m rng. Trong trng hp
MBR cn phi c kh nng np LILO, v d khi MBR l trnh khi ng ca MS-DOS hay
Windows. Tuy nhin tc gi cha nhn thy s cn thit ca ng dng ny (nu chn LILO
lm trnh khi ng chnh th hy s dng cho trn b), v th chng ta s khng xem xt n.
2.8 S dng trnh khi ng LILO 37

table = /dev/hda
label = dos

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

other = /boot/bootsect.dos
label = win

trong bootsect.dos ly t th mc gc ca a cha NT Loader.

5. Sau khi sa xong tp tin /etc/lilo.conf theo mun, cn chy cu lnh


/sbin/lilo nhng thay i c hiu lc. Cu lnh ny (trong ti liu
38 Ci t h iu hnh Linux

hng dn gi l map-installer) ci t trnh khi ng ph, m s c


kch hot trong ln khi ng tip theo. Trc khi chy /sbin/lilo
thay i bc khi ng, hy thc hin cu lnh ny vi tham s -t. Khi c
tham s ny s thc hin tt c cc th tc ci t trnh khi ng, tr vic
thay i tp tin map, bn ghi sector khi ng, v bng phn chia a,
tc l ch chy th cu hnh mi. Nu cho thm ty chn -v, th bn c
s c bit thm thng tin chi tit v nhng g lnh /sbin/lilo s thc
hin.
Khi /sbin/lilo ghi ni dung mi ln sector khi dng, th ni dung c
ca sector ny s t ng c ghi nh vo mt tp tin. Theo mc nh l
tp tin /boot/boot.NNNN, trong NNNN tng ng vi s ca thit b, v
d, 0300 tng ng /dev/hda, 0800 /dev/sda, v.v. . . Nu tp tin ny
c trn a, th n khng b ghi ln. Tuy nhin c th t mt tn khc
ghi sector khi ng, khng nht thit phi dng /boot/boot.NNNN.
Tp tin /boot/boot.NNNN c th s dng phc hi ni dung c ca
sector khi ng, nu khng cn cch phc hi no khc n gin hn. Cu
lnh thc hin c dng:

[root:~#] dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1

hay

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

(bs=446 v ch phc hi chng trnh khi ng, v khng ng g n bng


phn chia a).
Cng c th phc hi MBR c khi cn thit bng cu lnh /sbin/lilo vi
ty chn -u. Nhng cn bit rng, cu lnh ny ch lm vic ng vi iu
kin l th mc LILO (tc l /boot) khng thay i k t khi ci t.
MBR ca MS-DOS c th c phc hi bng cch khi ng vo DOS t
a mm (CD) ri chy cu lnh fdisk /mbr (xem trn). Lnh ny ch thay
i m chng trnh khi ng nm trong MBR, m khng thay i bng
phn chia a.

6. Sau khi ci t li trnh khi ng cn khi ng li my tnh v th cc


phng n khi ng khc nhau kim tra.

kt thc phn ni v LILO ny chng ta s xem xt vi kh khn c th


xut hin khi s dng LILO, v cch khc phc (nu c th).
Khi LILO c np, n a ra mn hnh t LILO. Khi ny mi ch ci biu
th s kt thc mt hnh ng no hay kt thc mt bc np LILO. Nu
khi ng b b ngng gia chng, th qua s ch ci a ra c th nhn nh v
nguyn nhn xut hin vn .

Khng ch ci no hin ra khng c phn no ca LILO c np. Hoc


LILO khng c ci t, hoc phn vng cha LILO cha c kch hot.
2.8 S dng trnh khi ng LILO 39

L [m li] trnh khi ng chnh c np v chy (tc l nhn


c quyn iu khin), nhng n khng th np trnh khi ng ph. M
li hai k t cho bit nguyn nhn c th ca vn (cch gii m cn tm
trong ti liu k thut ca LILO). Thng thng th vn ny sinh do
a xu (c khuyt tt) hay khng t ng cu trc hnh hc ca a. Nu
LILO khng dng li y, m tip tc a ra mt chui v tn cc m li,
th vn thng d gii quyt.

LI trnh khi ng chnh np c trnh khi ng ph, nhng khng


chy c n. C th l li a cu trc hnh hc ca a, hoc tp tin
boot/boot.b b di chuyn m ngi dng qun khng chy /sbin/lilo.

LIL trnh khi ng ph c chy, nhng n khng th np bng m


t t tp tin map. Nguyn nhn thng do khuyt tt ca a hoc khng
a ng cu trc hnh hc ca a.

LIL? trnh khi ng ph c np vo a ch khng ng. Thng


thng do li a ra cu trc hnh hc ca a hoc tp tin /boot/boot.b
b di chuyn m ngi dng qun khng chy /sbin/lilo.

LIL- bng m t trong tp tin map b ph hy. Thng thng do li a


ra cu trc hnh hc ca a hoc tp tin /boot/boot.b b di chuyn m
ngi dng qun khng chy /sbin/lilo.

LILO tt c cc phn ca LILO c np thnh cng.

2.8.2 Ci t cc h iu hnh khc sau Linux


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

2.8.3 Chuyn th mc /boot ln phn vng DOS


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

thc hin phng n khi ng ny, cn phn vng DOS ch c/ghi,


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

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


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

Trn my tnh ca bn (tt nhin vi b x l 386 hoc cao hn) cn ci t


DOS hay WINDOWS 95.

Cn c nh nn ca nhn Linux (zImage, bzImage)7 .


6
mt s bn phn phi cn c gi ci t cho chng trnh ny, thng thng ghi tp tin
loadlin.exe vo th mc ca ngi dng root
7
Ghi ch. zImage l nh dng nh phn c ca nhn, bzImage l nh dng mi hn (s phin
bn nhn ln hn 1.3.73) c kch thc ln ti 1 Mbyte, do , nhn khi gii nn c kch thc
ln ti 2 Mbyte. Tip theo chng ta s ch ni v cc tp tin zImage, mc d bn c c th thay
th zImage thnh bzImage
2.9 Khi ng Linux t MS-DOS bng loadlin.exe 41

Chng trnh loadlin.exe. C th tm thy trn a phn phi dng khng


nn hay trong gi LOADLIN16.TGZ. Gi nn ny cn cha hng dn
s dng DOC\MANUAL.TXT, tp tin tham s v d DOC\TEST.PAR, v
hng dn cch a cc tham s DOC\PARAMS.DOC (ng qun rng
chng l nhng tp tin DOS).

Nu bn chy loadlin.exe khng c tham s

C:\LOADLIN> loadlin

th s nhn c hng dn s dng ngn gn. Thun tin hn c hng dn


ny khi chy chng trnh vi tham s more (ging trong Linux):

C:\LOADLIN> loadlin | more

By gi chng ta c th xem xt cc bc ci t Linux khi s dng loadlin.exe


khi ng.

1. Chia cc phn vng cho Linux (cch lm xem phn 2.5)

2. Ci t Linux vo phn vng chia. LILO cn ci t vo sector u tin


ca phn vng Linux khng ghi ln MBR v khng b mt kh nng
khi ng vo Windows.

3. Sau khi kt thc phn ci t hy khi ng Linux (nu khng c cch no


khc, hy s dng a mm khi ng). Gn phn vng DOS (gi thit l
/dev/hda1, cn phn vng Linux l /dev/hda3):

[root]# mount -t vfat /dev/hda1 /mnt/C

To th mc /mnt/C/loadlin v gii nn tp tin LOADLIN16.TGZ vo


. Ngoi ra sao chp t th mc /boot vo th mc c tp tin cha
nh ca nhn Linux. C th tm tp tin cha nh ca nhn cn thit nh
tp tin /etc/lilo.conf: tm trong tp tin cu hnh dng image=... v
bn c s thy tn cn thit pha bn phi du bng. V d tn ca tp
tin ny l vmlinuz-2.4.22. Sao chp tp tin vmlinuz-2.4.22 t /boot vo
/mnt/C/loadlin v i tn thnh vmlinuz (vic i tn l khng nht
thit, v ch c ngha thun tin cho s dng):

[root]# cp /boot/vmlinuz-2.4.22 /mnt/C/loadlin/vmlinuz

4. By gii khi ng li my tnh vo DOS trc tip (nu bn c c Windows


95/98 th cn nhn phm <F8> khi khi ng hin th trnh n cho php
chn DOS), hoc qua hp thoi la chn khi nhn lnh tt my (shutdown)
Windows 95/98.
Sau khi vo DOS hy chuyn sang th mc C:\LOADLIN:

CD \LOADLIN

ri thc hin lnh:


42 Ci t h iu hnh Linux

C:\LOADLIN> LOADLIN vmlinuz /dev/hda3 ro vga=ask

hoc, nu bn c mun np nhn cng vi a RAM:

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

Cn c th ghi tt c cc tham s ca lnh loadlin.exe vo tp tin (v d vi


tn params) v gi cu lnh dng sau:

C:\LOADLIN> LOADLIN @params

Kh nng ny c bit c ch khi a nhiu tham s dng lnh v khi dng


lnh di hn 127 k t. M t y tt c cc tham s ca cu lnh load-
lin.exe c th tm thy trong tp tin PARAMS.DOC hoc Internet trn trang
http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html v
http://rsphy1.anu.edu/~gpg109/BootPrompt-HOWTO.html.

By gi bn c c th s dng cch ny khi ng Linux. Cng vic duy


nht cn li l lm sao khng phi g lnh loadlin vi tt c cc tham s sau
mi ln khi ng li. C th vit thm lnh gi loadlin vo tp tin autoexec.bat
hoc to mt tp tin lnh (v d, linux.bat), v khi chy tp tin ny, my tnh
s chuyn vo ch DOS trc, sau th chy Linux. Tc gi cho rng nhng
thng tin a ra trn to tp tin bat cn thit. Cn ni thm rng,
khng c khi ng Linux t giao din ha DOS/Windows v cn tt mt vi
ty chn trong tp tin n C:\MSDOS.SYS (y l tp tin vn bn thng thng),
bng cch thm vo hai dng sau (nu cha c):

BootGUI=0
Logo=0

Dng u tin tt giao din ha, v DOS s c khi ng thay cho


Windows 95/98. ( chy giao din ha, cn nhp cu lnh C:\> win). Dng
Logo=0 tt vic hin th biu tng Windows (ca s). Vn ch, i vi mt
s cc mn hnh Linux s a ra mt mn hnh trng rng sau khi khi ng,
nu nh c hin th biu tng Windows.
Chng 3

Khi ng Linux ln u

Vn s khi u nan Trung Quc

Sau khi ci t rt c th bn c s khng bit bc tip theo phi lm g. Bt my tnh ln, i


h thng khi ng xong v ... ngi nhn. Phi lm g c th tip tc lm vic vi h thng Linux?
Sau khi lm vic xong th tt my th no? C nhng chng trnh no nn bit? Trong khi lm vic
c vn ny sinh th tm cu tr li u? Trong chng ny chng ta s tm thy cu tr li cho
nhng cu hi trn.

3.1 Khi ng HH Linux


Nh vy l vic ci t Linux hon thnh. Nu ngi dng ci t GRUB
lm trnh khi ng, th sau nhng dng ch BIOS thng a ra s xut hin
mn hnh dng nh trong hnh 3.1.

Hnh 3.1: Mn hnh khi ng ca GRUB


44 Khi ng Linux ln u

Nu khng chm vo bn phm, th trn mn hnh s xut hin rt nhiu


thng bo m tm thi chng ta s khng xem xt ngha ca chng1 . Cui cng
xut hin mn hnh cho php ngi dng ng nhp vo h thng. Nu bn
chn t ng chy ch ho th hy nhn <Ctrl>+<Alt>+<F1> thy mn
hnh ng nhp nh sau:
ThinhQuyen login:
Mn hnh ng nhp ny xut hin trn my ca tc gi khi khi ng Debian
Linux. Tt nhin mn hnh ng nhp ca bn c s khc. Nu c kin nhn
c ht cun sch ny, th bn s bit cch thay i mn hnh ny, v d a
ra nhng cu cho dng Xin cho! Hm nay l 02 thng 09 nm 2006. Hy nhp
vo tn ngi dng v mt khu. Tuy nhin by gi vn cn sm ni v vn
ny. Nu khi ng bng a mm th qu trnh cng tng t nhng chm
hn mt cht.
Nu Linux khng phi l h iu hnh (HH) duy nht trn my tnh, th
trn mn hnh khi ng GRUB s xut hin danh sch cc h iu hnh tm
thy. C th chn HH mun khi ng bng cc phm <> v <> ri nhn phm
<Enter>. Nu chn khi ng Linux th cui cng ngi dng phi thy dng
login:, tc l dng mi nhp vo tn ng nhp.

3.2 ng nhp vo h thng


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

Password:

Tt nhin l bn cn nhp vo mt khu tng ng vi ngi dng a


ra, y l mt khu ca root. Mt khu ny l mt khu a ra cho ngi
dng root trong qu trnh ci t. Sau khi nhp mt khu cng nhn <Enter>.
Nu sau khi nhp vo tn ngi dng ri rt lu sau khng vo mt khu, th
h thng s t ng quay tr li dng hi tn ngi dng login:. Sau khi nhp
ng mt khu, bn s thy dng nh sau:
1
Trong nhng bn phn phi Linux mi, v d SuSE Linux, c s dng mn hnh flash. Do
c th bn c s khng thy nhng thng bo ny. Trong trng hp , hy nhn phm tng
ng chuyn v mn hnh khi ng bnh thng. Phm ny thng l <Esc>.
3.2 ng nhp vo h thng 45

[root@ThinhQuyen /root]#

Dng ny c gi l du nhc. Xut hin du nhc c ngha l h thng


sn sng tip nhn v thc hin cu lnh ca ngi dng. thi im ny n c
ngha l bn ng nhp vo h thng mt cch thnh cng. Trong MS-DOS
v Windows(TM) mn hnh en v du nhc h thng thng c gi l ch
dng lnh. Chng ta s gi ch ny l vn bn phn bit vi ch ho
ca h thng X Window.
Trong v d a ra trn du nhc gm tn ngi dng (root), tn h thng
(ThinhQuyen) v th mc hin thi (/root). Sau ny bn c th thay i dng
ca du nhc ny. Trong tt c cc v d tip theo chng ta s s dng du nhc
ch gm c tn ngi dng.
Trc khi ngh bn c nhp vo cu lnh u tin, cn ni rng trn bt
k h thng UNIX no kiu ch cng u ng vai tr quan trng, tc l c phn
bit ch hoa v ch thng. V th cn nhp vo tt c cc cu lnh cng nh
tham s ca chng nh ch ra trong v d, k c kiu ch. Cu lnh u tin
chng ta s nhp vo l useradd. Sau tn ca cu lnh cn khong trng v sau
l tn ngi dng, v d, nhimlui:

[root]# useradd nhimlui

Ngay sau khi nhn phm <Enter> chy lnh ny, trn h thng s bit
rng ngi dng nhimlui tn ti (chng ta ni, m ti khon cho ngi dng
nhimlui). Tuy nhin vn cha th vo h thng (thng ni, ng nhp) di
tn ngi dng ny. h thng cho php ngi dng mi nhimlui lm vic,
cn phi to thm cho ngi dng ny mt khu bng cu lnh:

[root]# passwd nhimlui

S xut hin dng:

Changing password for nhimlui.


New Password:

Hy nhp vo mt khu. Sau khi nhp xong, cng nhn phm <Enter>, h thng
s hi nhp mt khu mt ln na kim tra.

Reenter New Password:

ng ngc nhin, bn s khng nhn thy mt khu vo v h thng s khng


hin th g ra, k c du sao * nh thng thy. Nu bn nhp ng tt c,
th s xut hin thng bo thnh cng dng:

Password changed.

v s li xut hin du nhc ca h thng. Nu nhp vo mt khu khng tt


(mt khu qu ngn hoc qu n gin), th s xut hin dng cnh bo (dng
Bad password: too short), nhng h thng vn tip nhn mt khu v cho
php ngi dng mi ng nhp vo h thng.
46 Khi ng Linux ln u

Nh vy l bn c lm quen vi hai cu lnh u tin ca h thng Linux:


useradd v passwd. Cu lnh tip theo m bt k ngi dng Linux no cng
cn phi bit l cu lnh man. man l h thng tr gip lun lun i km vi
h thng Linux. Cn phi nhp vo cu lnh ny vi mt tham s tn ca cu
lnh khc hoc t kha. V d:

[root]# man passwd

Kt qu l bn s nhn c mt vn bn m t cu lnh tng ng hoc


thng tin v ti m t kho a ra. V thng tin thng khng th nm gn
trn mt mn hnh nn khi xem cn s dng cc phm <PageUp>, <PageDown>,
v phm trng. Hy nhn phm <Q> bt k thi im no thot ra khi
mn hnh xem man v quay li dng nhp lnh. By gi xin bn c hy th xem
thng tin v hai cu lnh cp n trn login v passwd. Ch l c
th xem thng tin v chnh bn thn cu lnh man. Hy chy lnh:

[root]# man man

Rt tic theo nh tc gi bit th hin thi cc trang thng tin man cn cha
c dch sang ting Vit. Do bn s nhn c nhng trang ny bng ting
Anh. Nu nh bn khng c kh nng c ting Anh, th hay kin nhn c cun
sch ny hoc mt cun sch khc cng ti.
Bn c cn c th th chy thm mt vi cu lnh na v theo di xem h
thng lm g. V d, hy th nhng cu lnh lit k trong bng 3.1 (hy nhp
chng cng vi nhng tham s c trong bng).

Bng 3.1: Nhng cu lnh n gin ca Linux


Cu lnh M t ngn gn
whoami Thng bo tn ng nhp ca bn
w hoc who Cho bit nhng ngi dng no hin ang lm vic trn
h thng
pwd Cho bit tn ca th mc hin thi
ls -l Hin th danh sch tp tin v th mc con ca th mc
hin thi
cd tn_th_mc Chuyn th mc hin thi n tn_th_mc
ps ax Hin th danh sch cc tin trnh ang chy

Hy xem m t v nhng cu lnh ny bng man.


Chng ta s khng xem xt chi tit danh sch tt c nhng cu lnh c th
gp. V th nht, ngi dng s dn dn lm quen vi chng trong qu trnh c
cun sch ny v thc hnh trn HH Linux ca mnh. Th hai, c th c v
nhng cu lnh chnh trong bt k cun sch no ni v UNIX.

3.3 Console, terminal o v shell


Nh vy l bn c c kinh nghim lm vic u tin ch vn bn (hay
cn gi l knh giao tc console) ca h thng Linux. Chng ta s cn gp
3.3 Console, terminal o v shell 47

thng xuyn nhng khi nim trnh lnh terminal v console, do tc gi


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

dng bnh thng (khng c quyn cao cp ca ngi dng root). Hy ng tt


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

s tr thnh ngi dng bnh thng vi nhng quyn ca mnh.


Bng cch tng t nh vo h thng di tn root trn, cn c th vo h
thng di tn mt ngi dng bt k m bn bit mt khu2 (ni cch khc l
chy mt h v shell mi di tn ngi dng khc). Nhng cn ch ra tn
ca ngi dng ny trn dng lnh, v d:

[user]$ su nhimlui

Cu lnh su trc khng km theo tn no, theo mc nh s t tn ngi


dng cao cp root vo.
Nhng trong HH Linux cn c thm mt kh nng chuyn tm thi vo
ti khon ca ngi dng root thc hin cc chc nng qun tr. Hy nh
rng Linux l h thng nhiu ngi dng, trn h thng c th lm vic cng lc
nhiu ngi dng. V th c th lm vic di tn ngi dng root trn terminal
o th nht, cn trn terminal o th hai di tn ngi dng bnh thng.
Nhng cng vic thng ngy (son tho vn bn, c th,. . . ) bn c th thc
hin bng ti khon bnh thng, cn khi cn thc hin cc cng vic qun tr,
bn s dng ti khon ngi dng cao cp (root). thc hin la chn ny bn
ch cn nhn <Ctrl>+<Alt>+<F1> v s c ngay quyn ca nh qun tr. Sau
khi lm xong nhng thao tc m ch c ngi dng cao cp mi c th lm, hy
quay li ti khon ca ngi dng bnh thng ngay lp tc bng t hp phm
<Ctrl>+<Alt>+<F2>. Nh vy bn c s khng c nguy c lm hng h thng
khi cn cha c nhiu kinh nghim s dng Linux.

3.4 Son tho dng lnh. Lch s lnh


Trong nhng phn trc tc gi ngh bn c thc hin mt vi lnh ca
HH Linux. Tc gi cho rng nu trong qu trnh nhp lnh c xy ra li th
bn c th on c cch sa chng. Nhng d sao cng c ch nu a ra danh
sch ngn gn nhng cu lnh (hay ni ng hn l phm v t hp phm) dng
son tho dng lnh, cng nh gy nh hng n cch lm vic ca shell
bng bn phm (bng 3.2, chng ta s ni v chut mt phn ring).
Ghi ch: Nu bn lm vic trong chng trnh Midnight Commander, th c th
s khng th s dng nhng phm nh <>, <>, <Home>, <End>, <Del> lm cc
cng vic nh bng trn, v chng c Midnight Commander dng di chuyn dng
chiu sng trong bng3 hin thi. Nhng mt s t hp phm dng vi <Ctrl> v <Esc>
th vn dng c bnh thng.
Danh sch nhng cu lnh (t hp phm) c th dng khng ch gii hn trong
phm vi bng 3.2, nhng chng ta ch xem xt nhng cu lnh n gin v cn
thit trong ln lm quen u tin vi Linux ny. c thm thng tin hy s
dng cu lnh man bash hoc info bash.
Xin lu bn c trong h v bash c chng trnh tch hp gip d dnh
nhp cu lnh trn dng lnh. Gi chng trnh con ny bng mt hoc hai ln
nhn phm <Tab> sau khi nhp mt vi k t. Nu nhng k t ny l phn
2
Ngi dng root khng cn phi bit mt khu lm vic ny.
3
panel
50 Khi ng Linux ln u

Bng 3.2: Nhng phm son tho dng lnh


Phm Phn ng ca h thng
<>, <Ctrl>+<F> Di chuyn sang phi mt k t (trong khun kh nhng k
t nhp cng thm mt k t s nhp).
<>, <Ctrl>+<B> Di chuyn sang tri mt k t.
<Esc>+<F> Di chuyn sang phi mt t.
<Esc>+<B> Di chuyn sang tri mt t.
<Home>, <Ctrl>+<A> Di chuyn v u dng lnh.
<End>, <Ctrl>+<E> Di chuyn v cui dng lnh.
<Del>, <Ctrl>+<D> Xa k t nm ti v tr con tr.
<Backspase> Xa k t nm bn tri con tr.
<Enter>, <Ctrl>+<M> Bt u thc hin cu lnh.
<Ctrl>+<L> Dn mn hnh v a dng lnh hin thi ln dng u tin.
<Ctrl>+<T> i ch hai k t: k t nm ti v tr con tr v k t nm
bn tri con tr, sau di chuyn con tr sang phi mt k
t.
<Esc>+<T> i ch hai t: t nm ti v tr con tr v t nm bn tri
con tr.
<Ctrl>+<K> Ct phn dng lnh bt u t k t nm ti v tr con tr
n cui dng (phn dng lnh ct ra c lu trong b m
v c th t vo v tr khc).
<Ctrl>+<U> Ct phn dng lnh bt u t k t nm bn tri con tr
n u dng (phn dng lnh ct ra c lu tron b m
v c th t vo v tr khc).
<Esc>+<D> Ct phn dng lnh bt u t v tr con tr n cui t (nu
ti v tr con tr l du cch th ct ton b t nm bn phi
n).
<Esc>+<Del> Ct phn dng lnh bt u t v tr con tr n u t (nu
ti v tr con tr l du cch th ct ton b t nm bn tri
n).
<Ctrl>+<W> Ct phn dng lnh bt u t v tr con tr n du cch
bn tri.
<Ctrl>+<Y> t (dn) on dng lnh ct cui cng vo v tr con tr.
<Esc>+<C> Chuyn k t ti v tr con tr thnh vit hoa ri di chuyn
con tr ti du cch u tin bn phi so vi t hin thi.
<Esc>+<U> Chuyn tt c cc k t bt u t v tr con tr thnh vit
HOA ri di chuyn con tr ti du cch u tin bn phi.
<Esc>+<L> Chuyn tt c cc k t bt u t v tr con tr ti cui t
thnh vit thng ri di chuyn con tr ti du cch u
tin bn phi.
<Shift>+<PgUp>, Nhng t hp phm ny cho php xem cc trang mn hnh
<Shift>+<PgDown> hin th. S lng nhng trang ny ph thuc vo b nh
ca cc mn hnh. C ch khi c cu lnh no a ra mn
hnh rt nhiu thng tin chy nhanh qua mn hnh, ngi
dng khng kp thy chng.
<Ctrl>+<C> Dng thc hin cu lnh va chy (m vn ang chy).
<Ctrl>+<D> Thot ra khi h v bash.
3.5 Ngng lm vic vi Linux 51

u ca t nht mt trong nhng cu lnh m bash bit, th c hai kh nng xy


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

3.5 Ngng lm vic vi Linux


Mc d my tnh lm vic di s iu khin ca HH Linux c th chy
sut ngy m, nhng phn ln ngi dng my tnh c nhn quen vi vic
tt my sau khi lm vic xong. Khi lm vic vi HH Linux khng th tt my
bng cch ngt ngun in nh i vi MS-DOS. V trong bt k thi im no
trn h thng cng c rt nhiu qu trnh ang lm vic. Bn c th thy iu
ny bng cch thc hin lnh:

[nhimlui]$ ps ax

Thc hin li lnh ny mt ln na xem li. Nhng nguyn nhn quan trng
hn l ch mt s tin trnh ny c th ang lm vic vi cc tp tin, v h
thng cn cha ghi nh tt c cc thay i vi nhng tp tin ln a m ch lu
tm chng trong b nh (cache). Nu ngt ngun in th nhng thay i ny s
khng c lu v s b mt, i khi c th dn n khng khi ng c my
trong ln sau. Do cn bit dng h thng mt cch ng n trc khi tt
my. Cng vic ny do cu lnh (chng trnh) shutdown m nhim.
4
environment variable
52 Khi ng Linux ln u

Bng 3.3: T hp phm iu khin lch s lnh


Phm Phn ng ca h thng
<> hoc <Ctrl>+<P> Chuyn ti (gi vo dng lnh) cu lnh
trc trong danh sch (di chuyn ngc
li danh sch)
<> hoc <Ctrl>+<N> Chuyn ti cu lnh tip theo trong danh
sch (di chuyn theo danh sch)
<PgUp> Chuyn ti cu lnh u tin trong danh
sch lch s lnh
<!>, <N> Thc hin (khng cn nhn <Enter> cu
lnh th n trong danh sch
<!>, <->, <N> Thc hin cu lnh th n tnh t cui
danh sch
<!>, dng_k_t Thc hin dng lnh, c phn u trng
vi dng_k_t. Vic tm dng lnh cn
thit s c thc hin t cui tp tin lch
s v dng lnh u tin tm thy s c
thc hin
<Ctrl>+<O> Cng ging nh nhn phm <Enter>, sau
hin th cu lnh tip theo trong lch
s lnh

Ch c ngi dng root mi c th thc hin cu lnh shutdown ny5 , do


bn cn ng nhp vo h thng di tn ngi dng ny, hoc dng cu lnh
su c quyn tng ng. Cu lnh shutdown c c php nh sau:

[root]# shutdown <ty_chn> <thi_gian> <dng_thng_bo>

Ghi ch: Rt c th khi chy lnh, bn s nhn c cu tr li bash: shutdown:


command not found. iu c ngha l bash khng bit tm chng trnh y.
Trong trng hp bn cn nhp vo ng dn y n chng trnh, y l
/sbin/shutdown, v tp tin chng trnh ca shutdown nm ti /sbin.
Thng s dng hai trong s cc ty chn ca chng trnh shutdown:

-h dng hon ton h thng (halt, s tt my)

-r khi ng li h thng (reboot).

Tham s thi_gian dng hn gi thc hin cu lnh (khng nht thit


phi thc hin cu lnh ngay lp tc). Thi gian hn gi c tnh t lc nhn
phm <Enter>. V d, nu bn mun khi ng li sau 5 pht th hy nhp vo
cu lnh:

[root]# shutdown -r +5
5
Cng c th cu hnh nhng ngi dng khc thc hin c shutdown, v d qua sudo.
3.6 Tr gip khi dng Linux 53

Cu lnh ny c ngha l dng h thng sau 5 pht v khi ng li sau khi


hon thnh cng vic. i vi chng ta th tm thi cu lnh sau s thch hp
hn:

[root]# shutdown -h now

Cu lnh ny s tt my ngay lp tc. Tng ng vi cu lnh ny l lnh


halt. Sau khi nhn t hp phm ni ting <Ctrl>+<Alt>+<Del> trn Linux s
thc hin cc hnh ng tng t vi lnh

[root]# shutdown -r now

Bng cch ny cng c th tt my, nhng cn ngt ngun in trong khi h


thng bt u khi ng li.

3.6 Tr gip khi dng Linux


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

3.6.1 Cc ngun thng tin tr gip


Nu ri vo tnh hung m bn khng bit phi lm g c c kt qu mong
mun, th tt nht hy tm tr gip ngay trong h thng. Cc phin bn Linux
c hng nghn trang ti liu dng tp tin, do cu tr li cho cu hi ca bn
nm trong lng bn tay. C mt vi ngun c lp cha thng tin v hu ht
cc mt ca h thng Linux:

cc trang tr gip man

tr gip siu vn bn info

ti liu i km vi phn mm

HOWTO v FAQ ca d n The Linux Document Project (http://www.


tldp.org)

cu lnh locate

Cn ni ngay lp tc l phn ln thng tin t nhng ngun ny bng ting


Anh. Cc d n dch chng sang ting Vit cn cha c t chc hoc cn cha
c hon chnh. Do chng ta s xem xt tng ngun thng tin ny mt cch
c th hn.
54 Khi ng Linux ln u

3.6.2 Cc trang tr gip man


Nh ni ngn gn trn v cu lnh man, bng cu lnh ny ngi dng trong
hnh hung kh khn lun lun c th tm tr gip v bt k cu lnh no ca
h thng, v nh dng tp tin, v v cc gi h thng (system call). y l cch
nhn tr gip chnh trong tt c cc h thng UNIX. Cc trang tr gip man chia
thnh cc phn nh trong bng 3.4.

Bng 3.4: Cc phn chnh ca tr gip man


Phn Ni dung
0 Cc tp tin header (thng nm trong /usr/include)
1 Chng trnh hoc cu lnh ca ngi dng
8 Cu lnh dng qun tr h thng
2 Gi h thng6 (hm do nhn cung cp)
3 Gi th vin7 (chng trnh con, hm trong th vin ca ng dng)
4 Thit b (tp tin c bit, thng nm trong /dev)
5 nh dng tp tin v quy c, v d /etc/passwd
6 Tr chi
7 Khc (bao gm cc gi macro v quy c, v d man(7), groff(7)
9 Nhn (kernel routines)
n cc lnh Tcl/Tk

Th t lit k y khng c s nhm ln no. Vn ch cc tp tin cha


thng tin ca tr gip man nm trong cc th mc con manx (x l tn ca phn)
ca th mc /usr/share/man v khi cu lnh man tm kim thng tin cn thit,
th n s xem cc th mc con ny theo th t ch ra trong bng 3.4. Nu bn
chy lnh

[user]$ man swapon

th s nhn c tr gip v cu lnh swapon nm trong phn 8. V th nu


mun xem tr gip v gi h thng swapon cn chy lnh

[user]$ man 2 swapon

ch ra s th t ca phn tr gip cn tm kim thng tin.


Cc trang man c xem bng chng trnh less (hoc chng trnh xc
nh bi bin PAGER), do c kh nng xem thng tin theo tng mn hnh v di
chuyn mn hnh ny xung di v ln trn v di chuyn c th s dng cc
phm nh trong chng trnh less. Nhng phm thng dng nht l:
Nu bn khng thch c t mn hnh m cm tay c, th c th in ra trang
man tng ng bng lnh

[user]$ man tn_cu_lnh | lpr

hoc nu my in l postscript th dng:

[user]$ man -t tn_cu_lnh | lpr


3.6 Tr gip khi dng Linux 55

Bng 3.5: Phm s dng xem trang man


Phm Chc nng
<Q> Thot khi chng trnh
<Enter> Xem tng dng
<Space> Hin th mn hnh thng tin tip theo
<B> Quay li mn hnh trc
</>, dng k t, <Enter> Tm kim dng k t ch ra
<N> Lp li tm kim va thc hin.

Tuy nhin c th nhn c thng tin mong mun th cn cn phi bit


ch tm thng tin . Trong trng hp ny c th dng hai cu lnh whatis
v apropos. Cu lnh whatis tm kim t kha a ra trong c s d liu bao
gm danh sch cc cu lnh v m t ngn gn ca chng. Lnh ny ch a ra
nhng trng lp chnh xc vi t kha tm kim. Cu lnh apropos thc hin
tm kim theo cc phn ca t kha. Tng t nh lnh apropos l cu lnh
man vi tham s -k. Hy th chy lnh sau:

[user]$ man -k net

Cn phi ni lun l cho cc cu lnh man -k, whatis v apropos lm


vic, th u tin cn to ra c s d liu v cc cu lnh c trn my bng cch
chy lnh makewhatis. Trong trng hp ngc li khi tm kim bn s nhn
c thng bo nothing appropriate. Ch c ngi dng root mi c quyn chy
cu lnh makewhatis. Nu bn c my chy c m th tt nht chy cu
lnh ny dng cng vic cho tin trnh cron8 .
Cui cng tc gi mun ni rng, cc trang tr gip man khng dnh cho thi
gian lm quen u tin vi Linux. Chng dnh cho nhng ngi dng c kinh
nghim cn c s tay tra cu v nh dng, tu chn v c php ca lnh trong
qu trnh lm vic khng phi nh mt s lng ln nhng thng tin ny
trong u.

3.6.3 Cu lnh info


Cu lnh info l dng tr gip thay th v tng ng vi man. nhn thng
tin v mt cu lnh no , th cng ging nh man, cn nhp vo info cng vi
mt tham s l tn ca cu lnh quan tm. V d:

[user]$ info man

Thng tin mn bn s thy trn mn hnh trong phn ln trng hp s khc


vi nhng g m cu lnh man a ra. V theo kin ca nhiu ngi dng l
v chiu hng tt hn. Nhng s khc nhau c bn nht ch info a ra
thng tin dng siu vn bn (hypertext) ging nh cc trang web. Nh bn
c kh nng xem cc phn khc nhau ca tr gip m khng cn phi thot ra
khi chng trnh xem ny. Trong khi lm vic ch vn bn, bn c th
8
cron l chng trnh chy t ng cc cng vic theo thi gian nh.
56 Khi ng Linux ln u

chy cu lnh info trn mt trong cc terminal o (hy nh n cc t hp phm


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

3.6.4 Cu lnh help


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

3.6.5 Ti liu i km vi bn phn phi v chng trnh


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

th mc ca h thng tp tin, m theo c s d liu c bit cha tn cc tp tin


c to ra (v i khi cn cp nht) bng lnh updatedb.
Trong mt s bn phn phi locate c thay th bi slocate (secure lo-
cate). slocate t to cho mnh c s d liu ni trn sau khi chy vi tham s
tng ng.

3.6.6 Cu lnh xman


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

3.6.7 Cu lnh helptool


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

3.6.8 Sch v Internet


Tt nhin, hc Linux d dng v n gin nht khi c mt cun sch tt. Trc
tin bn cn c ti liu hng dn i km vi bn phn phi ca mnh. Cc bn
phn phi ln nh Debian, SuSE, Fedora,. . . u c nhng ti liu ny (rt c
th c dch sang ting Vit). Rt tic ngi dch cha c cun sch ting
Vit no v Linux do khng th gii thiu vi bn c. Tt nhin nu bn c
kt ni Internet (by gi khng cn qu xa x) v mt cht ting Anh th c th
tm c cu tr li cho mi cu hi ca mnh. Ti xin a ra mt s a ch sau
lm bc khi u cho bn c trong bin thng tin v b bn ny.
Cc trang ting Vit
1. http://vnoss.org trang web dnh cho ngi dng ng dng m ngun
m (MNM) Vit Nam. C nhiu thng tin v Linux, ti liu v Linux, din
n cho php bn t cu hi ca mnh. Trang web do bc Nguyn i Qu
ang sng v lm vic ti B qun l.

2. http://vnoss.net tin tc v Linux v MNM.

3. http://vnlinux.org y l trang web dnh cho nhm ngi dng


Linux Vit Nam (vietlug). Bn s tm thy nhiu thng tin c ch y
v c th ng k tham gia nhm th vietlug t cu hi. Trang ny do
anh Larry Nguyn, mt Vit Kiu M, qun l.
58 Khi ng Linux ln u

4. http://vnoss.net/dokuwiki/doku.php?id=linux:tailieutiengviet
trn trang ny c tng hp tt c nhng ti liu ting Vit v Linux, rt c
th bn s tm thy ti liu v ti mnh cn tm hiu trn trang ny.

5. http://kde-vi.org trang web ca nhm dch giao din KDE sang


ting Vit.

Cc trang ting Anh


1. http://www.linux.com

2. http://www.linux.org

3. http://www.linux.org.uk Trang web Linux ca Chu u. Do Allan


Cox mt trong cc nh pht trin Linux h tr.

4. http://www.tldp.org Trang web chnh cha ti liu v Linux. Rt


nhiu ti liu bao gm HOWTO, FAQ, sch. . .

5. http://freshmeat.net/ Thng bo hng ngy v nhng chng trnh


ng dng mi ra dnh cho Linux. Kho phn mm khng l cho Linux.

6. http://www.li.org T chc Linux International.

7. http://www.linuxstart.com

8. http://oreilly.linux.co y bn s tm thy rt nhiu ti liu.

9. http://www.linuxplanet.com

10. http://www.kde.org Trang ch ca mi trng lm vic KDE.

11. http://www.gnu.org Cc ng dng dnh cho Linux, trong ni ting


nht l trnh son tho Emacs (GNUs Not UNIX).

12. http://slashdot.org Nhng tin tc mi nht v cng ngh my tnh


trong c Linux. C cc bi bo v li bnh ca ngi c (khng qua kim
duyt).

13. http://www.linuxtoday.com Danh sch di nhng tin tc, thng bo


qung co v cc thng tin khc. Xem trang ny bn s bit phn ln nhng
s kin trong th gii Linux.

14. http://www.lwn.net Tin tc hng tun v Linux. Thng tin chia thnh
tng hng mc: thng tin chung, thng mi, thng tin v nhn Linux,
cng c pht trin chng trnh mi, chng trnh cho Linux, v.v. . . Nu
bn mun tin tng rng Linux pht trin rt nhanh v mun nhn tr
gip ca cc cng ty thng mi ln th nht nh phi thm trang ny.
Tin tc trn tun bo ny c ban bin tp ch thch rt tt.

15. http://www.linuxnewbie.org Trang web tt cho nhng ngi dng


mi.
3.6 Tr gip khi dng Linux 59

16. http://www.linuxjournal.com tp ch Linux. Thng ng nhng


bi bo v nhiu ti.

17. http://www.linuxgazette.com t bo Linux ny s th v i vi c


ngi dng mi v ngi dng c kinh nghim.

18. http://www.linuxfocus.org Tp ch phi thng mi ton cu.

19. http://www.linuxworld.com Mt trang web tt c rt nhiu bi bo


hay.

20. http://www.linux-mag.com Linux Magazin, mt t tp ch rt th v.

21. http://www.penguinmagazine.com.

Tt nhin y khng phi l danh sch y nhng trang web ni v Linux.


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

Lm quen vi h thng tp tin


ext3fs

By gi bn bit cch khi ng v dng h thng Linux, n lc lm quen vi mt trong


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

4.1 Tp tin v tn ca chng


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

l nhng k t sau:

! @ # $ & ~ % * ( ) [ ] { } " \ : ; > < du cch

Nu tn tp tin cha mt trong nhng k t ny (khng khuyn dng nhng


vn c th) th trc n phi t mt du gch cho ngc (\) (iu ny vn ng
trong trng hp c chnh bn thn du gch cho ngc, tc l phi lp li du
ny hai ln). V d:

[user]$ mkdir \\mot\&hai

s to th mc \mot&hai. Cn c th t tn tp tin hoc th mc vi nhng k


t ni trn vo du ngc kp. V d, to th mc c tn mot hai ba chng ta
cn dng cu lnh sau:

[user]$ mkdir "mot hai ba"

v cu lnh

[user]$ mkdir mot hai ba

s to ba th mc: mot, hai v ba.


Lm tng t nh vy i vi nhng k t khc, tc l c th thm chng vo
tn tp tin (th mc) nu a tn vo trong du ngoc kp hoc dng du gch
cho ngc b i ngha c bit ca chng. Tuy nhin tt nht l khng s
dng nhng k t ny k c du cch trong tn tp tin v th mc, bi v c th
gy ra vn cho mt s ng dng khi cn s dng nhng tp tin nh vy v c
khi di chuyn nhng tp tin ln h thng tp tin khc.
i vi du chm th khng phi nh vy. Trong Linux ngi dng thng
t nhiu du chm trong tn ca tp tin, v d xvnkb-0.2.9.tar.gz. Khi ny
khi nim phn m rng tp tin (thng dng trong DOS) khng cn c ngha
g, mc d vn dng phn cui cng ca tn tp tin sau du chm lm k hiu
v cc dng tp tin c bit (.tar.gz dng k hiu cc tp tin nn2 ). Trn
Linux cc tp tin chng trnh v tp tin bnh thng khng phn bit theo phn
m rng ca tn (trong DOS tp tin chng trnh c phn m rng exe) m theo
cc du hiu khc, chng ta s cp n sau. Du chm c ngha c bit
trong tn tp tin. Nu n l du chm u tin trong tn, th tp tin ny s l n
(thuc tnh hidden) i vi mt s cu lnh, v d, lnh ls khng hin th nhng
tp tin nh vy.3
Nh ni chng trc trong Linux c phn bit cc k t vit hoa v vit
thng. iu ny cng ng i vi tn tp tin. V th l4u-0.9.2.tar.gz v
L4U-0.9.2.tar.gz c th nm trong cng mt th mc v l tn ca cc tp
tin khc nhau. iu ny lc u c th gy kh khn cho ngi dng Windows
nhng sau khi quen th bn s thy n tht s c ch.
Chng ta quen vi vic tp tin c xc nh hon ton theo tn ca n.
Tuy nhin nu nhn t pha h iu hnh v h thng tp tin th khng phi
2
thng gi theo ting lng l tarball, qu bng tar
3
Nhng lnh ls -a s hin th. c thm ls(1) bit chi tit.
62 Lm quen vi h thng tp tin ext3fs

nh vy. Chng ta s ni k v mt sau ca h thng tp tin trong mt s chng


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

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

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

ngi dng . V d: /home/nhimlui. Mi ngi dng c th lm vic vi th


mc ca mnh bng k hiu ~, tc l ngi dng nhimlui c th lm vic vi
th mc /home/nhimlui/hinhanh bng ~/hinhanh. Khi ngi dng vo h
thng, th mc c nhn s tr thnh th mc hin thi ca ngi dng ny.
Cu lnh cd dng thay i th mc hin thi. Tham s ca lnh ny l
ng dn y hoc ng dn tng i n th mc m bn mun dng lm
hin thi. Khi nim ng dn y (tuyt i) gii thch trn, by gi
chng ta s ni r hn v khi nim ng dn tng i. ng dn tng i
l danh sch cc th mc cn phi i qua trong cy th mc c th chuyn
t th mc hin thi n th mc khc (chng ta gi n l th mc ch). Nu
th mc ch nm pha di trong cu trc th mc, tc l nm trong mt th
mc con, hoc chu, cht no ca th mc hin thi, th n gin: ch cn
ch ra th mc con ca th mc hin thi, sau th mc con ca th mc con
(th mc chu),. . . cho n khi no ti c th mc ch. Nu nh th mc
ch nm cao hn trong cu trc th mc, hoc nm hon ton trn mt cnh
khc ca cy th mc, th phc tp hn mt cht. Tt nhin trong bt k trng
hp no cng c th s dng ng dn tuyt i, nhng khi cn phi nhp
vo mt ng dn rt di.
Vn ny c gii quyt nh sau: mi th mc (tr th mc gc) c duy
nht mt th mc m trong cy th mc. Trong mi th mc c hai bn ghi c
bit. Mt trong s chng c k hiu l du chm (.) v ch n chnh bn thn
th mc ny, cn bn ghi th hai c k hiu l hai du chm n (..), n ch n
th mc m. Chnh nhng du hai chm ny c dng ghi ng dn tng
i. V d, dng th mc m lm th mc hin thi, th ch cn chy lnh:

[user]$ cd ..

Cn chuyn leo ln hai bc ca cy th mc, ri t h xung th mc


vnoss/doc th cn chy lnh:

[user]$ cd ../../vnoss/doc

Cu lnh ls dng a ra mn hnh danh sch cc tp tin v th mc con


ca th mc hin thi. Cn lu l trn thc tn cu lnh ls ch a ra ni
dung ca tp tin m t th mc ny, v khng xy ra bt k no thao tc lm
vic vi tp tin ca th mc. Nh ni trn, mi th mc ch l mt tp tin
bnh thng, trong c lit k tt c nhng tp tin v th mc con ca th mc
ny. Tc l khng c cc hp c bit cha cc tp tin, ch c cc danh sch tp
tin thng thng xc nh tp tin hin thi thuc v mt th mc no .
Nu chy cu lnh ls khng c tham s th chng ta ch thy tn ca cc tp
tin ca th mc hin thi. Nu mun xem ni dung ca mt th mc khc, th
cn phi a cho cu lnh ls ng dn tuyt i hoc tng i n th mc
. V d:

[user]$ ls projects
BanTin drupal-vn KDE-vi mrtg Xfce
bashscripts fluxbox l4u others vim
chem-tex gnomevi manvi SuSE vnlinux
debian HocTap mc syslinux vnoss
4.3 Cng dng ca cc th mc chnh 65

Bn ghi v tp tin trong th mc tng ng ngoi tn cn c rt nhiu thng


tin v tp tin ny. thy c nhng thng tin chi tit , th cn dng cc
tham s m rng khc ca cu lnh ls. Nu chy cu lnh ls vi tham s -l th
khng ch c tn tp tin m s hin th c d liu v quyn truy cp n tp tin
(chng ta s ni n sau); s lng lin kt cng hay s lng tn (nu l th
mc th ngay t u c hai lin kt nh vy l . v .., do s ny bng s th
mc con cng thm 2); tn ch s hu tp tin, tn nhm s hu tp tin (xin c
gi tt l nhm tp tin mc d ti ngha); kch thc tp tin v thi gian sa
i cui cng. Mt v d minh ha khc:

[user]$ ls -l
tng 1316
-rw-r--r-- 1 teppi82 users 81629 2006-09-08 22:11 bash.tex
-rw-rw-r-- 1 teppi82 users 98135 2006-09-08 13:54 caidat.tex
-rw-r--r-- 1 teppi82 users 783 2006-09-08 21:58 ChangeLog
-rw-r--r-- 1 teppi82 users 20778 2006-09-09 02:48 ext3fs.tex
-rw-r--r-- 1 teppi82 users 2013 2006-09-08 21:34 gioithieu.tex
drwxr-xr-x 2 teppi82 users 4096 2006-09-08 14:25 images
-rw-r--r-- 1 teppi82 users 3267 2006-09-08 23:13 l4u.tex

Nu a thm tham s -i th trong ct u tin s hin th ch s inode ca


tp tin. Khi dng tham s -t vic sp xp c thc hin khng theo tn m
theo thi gian sa i tp tin. Tham s -u dng hin th thi gian truy cp
cui cng thay vo ch thi gian sa i. Tham s -r o ngc li trt t ca
sp xp (cn phi s dng cng vi cc tham s -l hoc -t). Cn ch rng c
th lit k cc tham s mt cch ring r nh th ny:

[user]$ ls -l -i - r

hoc gp li nh th ny:

[user]$ ls -lir

Chng ta dng m t ngn gn v cu lnh ls y (chi tit v lnh ny c


th xem trn cc trang man hoc info tng ng) v chuyn sang xem xt cc
th mc chnh ca cu trc tp tin trong Linux.

4.3 Cng dng ca cc th mc chnh


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

http://www.pathname.com/fhs/. Cc bn phn phi Linux ln u tun theo


tiu chun ny.
Bng 4.1 di y a ra danh sch ngn gn nhng th mc chnh c to
ra trong cu trc tp tin theo tiu chun ni trn. ct bn tri lit k cc th
mc con ca th mc gc, cn ct th hai lit k mt vi (khng phi tt c) th
mc con, cn ct th ba cui cng a ra m t ngn gn v cng dng ca nhng
th mc ny. M t trong bng ny l ht sc ngn gn, chi tit hn bn c th
c trong tiu chun FHS c trn http://www.pathname.com/fhs/.

Bng 4.1: Cu trc th mc ca Linux

Th mc Cng dng
/bin Th mc ny gm ch yu cc chng trnh, phn ln trong s
chng cn cho h thng trong thi gian khi ng (hoc trong
ch mt ngi dng khi bo tr h thng). y c lu rt
nhiu nhng cu lnh thng dng ca Linux.
/boot Gm cc tp tin c nh cn cho khi ng h thng, trong
c nhn (kernel). Tp tin trong th mc ny ch cn trong thi
gian khi ng7 .
/dev Th mc cc tp tin c bit hoc cc tp tin thit b phn
cng. Chng ta s ni n nhng tp tin ny ngay sau trong
mt phn ring. Bn c c th xem qua man mknod (mkn-
ode(1)).
/etc Th mc ny v cc th mc con ca n lu phn ln nhng
d liu cn cho qu trnh khi ng ban u ca h thng v
lu nhng tp tin cu hnh chnh. V d, trong /etc c tp tin
inittab xc nh cu hnh khi ng, v tp tin ngi dng
passwd. Mt phn cc tp tin cu hnh c th nm trong cc
th mc con ca /usr. Th mc /etc khng c lu cc tp
tin chng trnh (cn t chng trong /bin hoc /sbin. Di
y chng ta s xem xt cng dng ca mt vi(!) th mc con
ca th mc /etc.
/etc/rc.d Th mc ny lu nhng tp tin s dng trong qu trnh khi
ng h thng. Chng ta s cp chi tit v nhng tp tin
ny v qu trnh khi ng ni ring trong mt vi chng sp
ti.
/etc/skel Khi to ngi dng mi, th nhng tp tin trong th mc ny
s c sao chp vo th mc c nhn ca ngi dng .
/etc/sysconfig Th mc lu mt vi (khng phi tt c) tp tin cu hnh h
thng.
/etc/X11 Th mc dnh cho cc tp tin cu hnh ca h thng X11 (v
d, xorg.conf).
/home Thng thng trong th mc ny l cc th mc c nhn ca
ngi dng (tr root).

7
do mt s nh qun tr khng t ng gn phn vng /boot vo trong qu trnh khi ng.
4.3 Cng dng ca cc th mc chnh 67

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

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

/usr/local/bin. y thng lu nhng chng trnh


ng dng.

/usr/local/doc cc ti liu i km vi chng trnh ng


dng.

/usr/local/lib th vin v tp tin ca cc chng trnh


v h thng ni b.

/usr/local/man cc trang tr gip man.

/usr/local/sbin cc chng trnh dnh cho nh qun


tr.

/usr/local/src m ngun ca cc chng trnh.

/usr/sbin Th mc ny gm cc chng trnh thc thi dnh cho nh


qun tr v khng s dng trong thi gian khi ng.
/usr/lib Trong th mc ny l cc th vin object ca cc chng trnh
con, cc th vin ng (dynamic library), mt s chng trnh
khng th gi trc tip. Cc h thng phc tp (v d Debian
Linux) c th c cc th mc con ca mnh trong th mc
ny. /usr/lib/X11 ni thng dng t cc tp tin c lin
quan n X Window v cc tp tin cu hnh ca h thng X
Window. Trn Linux thng l lin kt mm n th mc
/usr/X11R6/lib/X11.
4.3 Cng dng ca cc th mc chnh 69

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

/usr/share/dict cc danh sch t (word list) ca ting


Anh dng cho cc chng trnh kim tra chnh t nh
ispell.

/usr/share/man cc trang tr gip man. Mi phn ca


man nm trong mt th mc con ring trong th mc
ny.

/usr/share/misc ( ni trn).

/usr/src M ngun ca cc thnh phn khc nhau ca Linux: nhn,


ng dng. . .
/usr/tmp Mt ni na lu cc tp tin tm thi. Thng thng y l
lin kt mm n /var/tmp.
/usr/X11R6 Cc tp tin thuc v h thng X Window.

/usr/X11R6/bin cc chng trnh ng dng ca h


thng ny.

/usr/X11R6/lib cc tp tin v th vin c lin quan n


X-Window.

/var Trong th mc ny l cc tp tin lu cc d liu bin i


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

Th mc Cng dng
/var/run Cc tp tin bin i trong thi gian thc hin cc chng trnh
khc nhau. Chng lu thng tin v s tin trnh (PID) v ghi
thng tin hin ghi (utmp). Tp tin trong th mc ny thng
c dn sch trong thi gian khi ng Linux.
/var/spool Tp tin c t vo hng t ca cc chng trnh khc nhau,
v d:

/var/spool/at cc cng vic m at chy.

/var/spool/cron tp tin ca h thng Verb+cron+.

/var/spool/lpd tp tin trong hng i in.

/var/spool/mail tp tin thng th ca ngi dng.

/var/spool/uucp tp tin ca h thng uucp.

/var/tmp Cc tp tin tm thi.

4.4 Dng tp tin


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

cc tp tin thit b

cc ng (knh) c tn (named pipe)

cc socket (t vi ngha nh t chim)

cc lin kt mm (symlinks).

4.4.1 Cc tp tin thit b


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

thng tin vo cc thit b. Cc thit b k t trao i thng tin theo tng k t


(theo tng byte) trong ch chui cc byte. V d thit b dng ny l terminal.
Cn thng tin c c v ghi vo cc thit b khi theo cc khi. V d cc
cng. Khng th c t a cng v ghi ln tng byte, trao i thng tin vi
a ch c th theo tng khi.
Trao i d liu vi cc thit b trn Linux do cc driver thit b m nhim.
Nhng driver ny hoc nm trong nhn hoc nm ring dng mun v c th
gn vo nhn sau. trao i vi cc phn khc ca h iu hnh mi driver
to ra mt giao din lin lc c v ngoi ging nh tp tin. Phn ln nhng tp
tin nh vy c to sn t trc v nm trong th mc dev. Nu nhn vo
th mc /dev (tc l chuyn vo th mc bng lnh cd ri chy ls), th bn
s thy mt lng khng l nhng tp tin thit b. Bng 4.2 cho bit nhng tp
tin thng dng nht.

Bng 4.2: Nhng tp tin thit b chnh


Tp tin ngha
/dev/console Console h thng tc l mn hnh v bn phm kt ni ti my
tnh.
/dev/hd Cc cng vi giao din IDE. Thit b /dev/hda1 tng ng
vi phn vng u tin ca a cng u tin, a /dev/hda,
tc l a Primary Master.
/dev/sd cng vi giao din SCSI.
/dev/fd Cc tp tin a mm. u tin l /dev/fd0, th hai l
/dev/fd1.
/dev/tty Cc tp tin h tr terminal ca ngi dng. Tn gi vn c
lu k t khi kt ni teletype vo cc h thng UNIX lm ter-
minal. Trn Linux nhng tp tin ny h tr cc terminal o
(hy nh li chng trc).
/dev/pty Cc tp tin h tr terminal gi. S dng cho cc kt ni t xa
qua telnet.
/dev/ttS Tp tin h tr lm vic vi cc cng kt tip nhau (cc
cng COM). /dev/ttS0 tng ng vi COM1 trong DOS,
/dev/ttS1 tng ng vi COM2.
/dev/cua Cc tp tin cho mem.
/dev/null Thit b ny c th gi l l en. Tt c nhng g ghi vo
/dev/null s mt vnh vin. Nhng ngi vit script thng
chuyn nhng thng bo khng cn thit vo thit b ny. Nu
s dng /dev/null lm thit b nhp vo, th s thu c mt
chui cc s 0, tc l trong trng hp ny tp tin c c bng
0.

Mi dng thit b c th c mt vi tp tin thit b. V th cc tp tin thit b


thng c hai s: ln (major) v nh (minor). S ln ca thit b cho nhn bit l
tp tin ny thuc v driver no, cn s nh cho bit cn phi lm vic vi thit b
c th no ca dng ny. i vi cc tp tin thit b, cu lnh ls -l cho bit s
ln v s nh ni thay v kch thc ca tp tin.
72 Lm quen vi h thng tp tin ext3fs

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

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

4.4.4 Lin kt mm
Trong phn v tn tp tin chng trc chng ta ni rng tp tin trong
Linux c th c vi tn hay lin kt cng. Lin kt cng ch l mt tn khc cho
tp tin ban u. N c ghi trong m t inode ca tp tin . Sau khi to lin
kt cng khng th phn bit u l tn tp tin cn u l lin kt. Nu bn
c xa mt trong s nhng tp tin ny (ni ng hn l mt trong s nhng tn
ny), th tp tin vn cn c lu trn a cho n khi vn cn t nht mt tn.
Rt kh phn bit tn u tin ca tp tin v nhng lin kt cng c to ra
sau . V vy ch dng lin kt cng nhng ni khng cn bit s khc nhau.
Mt trong nhng ng dng ca lin kt cng l ngn chn kh nng xa tp
tin mt cch v tnh. im c bit ca lin kt cng l n ch thng n ch s
inode, v do lin kt cng ch c th dng cho tp tin ca cng mt h thng
tp tin, tc l trn cng mt phn vng (a lu).
Nhng trn Linux cn c mt dng lin kt khc gi l (lin kt tng trng8 ).
Nhng lin kt ny cng c th coi l tn ph cho tp tin, nhng chng l nhng
tp tin khc nhng tp tin lin kt mm. Khc vi lin kt cng, lin kt mm
c th ch n nhng tp tin nm trong h thng tp tin khc, v d trn nhng
a lu ng, hoc thm ch trn mt my tnh khc. Nu tp tin ban u b xa,
8
thut ng ny vn cha c thng nht, do a ra c hai trng hp c th gp.
4.5 Quyn truy cp n tp tin v th mc 73

th lin kt mm tuy khng b xa nhng tr thnh v gi tr. Hy s dng lin


kt mm trong nhng trng hp bn mun trnh s lm ln m lin kt cng
c th gy ra, hoc khi tp tin nm trn mt h thng tp tin khc.
Vic to bt k mt lin kt no cng ging nh sao chp tp tin, nhng khc
ch l tn ban u ca tp tin cng nh lin kt cng ch n mt tp tin thc
s trn a. V th nu bn c thay i tp tin qua mt tn no ca n, th s
thy nhng thay i ny khi xem tp tin qua tn khc. to lin kt mm cn
s dng cu lnh ln ni n v thm vo ty chn -s:

[user]$ ln -s tn_tp_tin tn_lin_kt

V d:

[user]$ ln -s projects/l4u/l4u-0.9.2.pdf ~/l4u.pdf

Sau khi thc hin cu lnh ny trong th mc c nhn ca ti xut hin tp


tin l4u.pdf. V by gi nu xem danh sch tp tin trong th mc bng cu lnh
ls -l, th trong danh sch s c mt dng nh sau:
lrwxrwxrwx 1 teppi82 users 20 2006-09-10 06:39 l4u.pdf -> projects/l4u/l4u-0.9.2.pdf

Hy ch n k t u tin ca dng ny, n cho chng ta bit tp tin l


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

4.5 Quyn truy cp n tp tin v th mc


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

Trong m t inode ca mi tp tin c ghi tn ca ch v nhm s hu tp tin.


Ngy t u khi to tp tin ch ca n l ngi dng to ra n. Ni chnh xc
hn l ngi dng m tin trnh to tp tin chy di tn h. Cng lc vi
ch s hu, tn ca nhm s hu cng c ghi vo theo thng tin tn nhm ca
tin trnh to tp tin. C th thay i ch v nhm s hu trong qu trnh lm
vic sau ny bng hai cu lnh chown v chgrp (chng ta s cp k hn v
hai lnh ny ngay sau y).
By gi hy thc hin mt ln na cu lnh ls -l, nhng c thm mt tham
s na l tn ca mt tp tin c th no . V d tp tin chng trnh ca h
v bash /bin/bash. Nhn tin, hy ch kh nng ny ca cu lnh ls -l
hin th thng tin v mt tp tin c th no ch khng phi tt c cc tp tin
trong th mc mt lc.

[user]$ ls -l /bin/bash
-rwxr-xr-x 1 root root 501804 2006-04-23 05:46 /bin/bash

Nh bn c thy, trong trng hp ny ch s hu l ngi dng root, nhm


s hu root. Nhng by gi trn dng ny chng ta s quan tm hn n vng
u tin, vng xc nh dng tp tin v quyn truy cp n n. Vng ny trong
v d trn l chui cc k t tm thi cha ni ln iu g -rwxr-xr-x. Nhng
k t ny c th tm chia thnh bn nhm. Nhm th nht ch gm mt k t
xc nh dng tp tin (mt trong bn dng nu phn trn). N c th l mt
trong s nhng k t sau:

(gch ngang) tp tin thng thng

d th mc

b tp tin thit b khi

c tp tin thit b k t

s socket

p ng c tn (pipe)

l lin kt mm (symbolic link).

Sau k t xc nh dng tp tin l ba nhm, mi nhm gm ba k t xc nh


quyn truy cp tng ng cho ch s hu, nhm s hu tp tin v cho nhng
ngi dng khc. Trong v d ca chng ta quyn truy cp ca ch s hu l
rwx, c ngha l ch s hu root c quyn c (r), ghi vo tp tin (w) v chy
tp tin ny (x). Thay bt k k t no trong s nhng k t ny bng du gch
ngang c ngha l ngi dng b tc mt quyn tng ng. Cng trong v d
trn chng ta thy, tt c nhng ngi dng khc (k c nhng ngi dng ca
nhm root) b tc mt quyn ghi vo tp tin ny, c ngha l h khng th sa
tp tin v ni chung l khng th thay i tp tin bng cch no .
Quyn truy cp v thng tin v dng tp tin trn cc h thng UNIX c
lu trong m t inode dng cu trc 2 byte (16 bit). iu ny l tt nhin v
my tnh ch lm vic da trn cc bit ch khng phi da trn cc k t r, w,
4.5 Quyn truy cp n tp tin v th mc 75

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

[user]$ ls -l /usr

th s thy dng tng ng vi th mc share nh sau:

drwxr-xr-x 128 root root 4096 2006-09-07 02:20 share

Tt nhin l i vi th mc th ngha ca cc khi nim quyn c, quyn


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

mc. Chnh v vy m theo mc nh tt c cc th mc c t quyn gi cho ch


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

[user]$ chmod wXp tn_tp_tin

Trong , ch k t w phi t mt trong cc k t sau:

u ch s hu

g nhm s hu g

o nhng ngi dng cn li

a tt c bao gm ch s hu, nhm v nhng ngi dng cn li.

ch X l mt trong cc k t sau:
4.5 Quyn truy cp n tp tin v th mc 77

+ thm quyn

tc b quyn

= dng quyn ch ra thay cho quyn c.


ch p l mt trong nhng k t sau:

r quyn c

w quyn ghi

x quyn gi (quyn thc hin.

Sau y l mt s v d s dng cu lnh chmod:

[user]$ chmod a+x tn_tp_tin

thm quyn gi tp tin tn_tp_tin cho mi ngi dng ca h thng.

[user]$ chmod go-rw tn_tp_tin

tc b quyn c v ghi ca mi ngi dng tr ch s hu tp tin.

[user]$ chmod ugo+rwx tn_tp_tin


[user]$ chmod a+rwx tn_tp_tin

cho mi ngi dng quyn c, ghi v gi (thc hin).

[user]$ chmod u=rwx,go=x tn_tp_tin

cho ch s hu c tt c mi quyn (c, ghi, gi), nhng ngi dng cn li ch


c quyn gi (thc hin).
Nu khng ch ra ai c thm quyn truy cp, th s p dng cho tt c mi
ngi dng, tc l c th dng lnh:

[user]$ chmod +x tn_tp_tin

thay cho

[user]$ chmod a+x tn_tp_tin

Phng n s dng th hai ca cu lnh chmod c kh hiu hn mt cht


trong thi gian u s dng Linux, nhng li thng xuyn c cc nh qun
tr cng nh ngi dng c kinh nghim dng. N da trn m ha quyn truy
cp dng s. K t r c m ha bng s 4, w s 2, x s 1. xc nh
quyn ca ngi dng cn cng cc s tng ng li vi nhau. Sau khi thu c
ba gi tr s (cho ch s hu, nhm s hu v nhng ngi dng cn li), chng
ta a ba s ny vo dng lm tham s cho lnh chmod. Chng ta cn t ba s
ny pha sau tn lnh v pha trc tham s th hai (tn tp tin). V d, nu cn
cho ch s hu mi quyn (4+2+1=7), cho nhm s hu quyn c v ghi (4+2=6)
v nhng ngi dng cn li quyn gi (1=1), th dng lnh sau:
78 Lm quen vi h thng tp tin ext3fs

[user]$ chmod 761 tn_tp_tin


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

[root]# chmod 4775 tn_tp_tin

Khi ny cng vn s dng php cng nh i vi trng hp quyn truy cp v


cc tnh cht c gi tr nh sau:

4 bit thay i ID ngi dng

2 bit thay i ID nhm

1 bit lu chng trnh (sticky bit).

Nu c (nhng) bit no trong s ba bit ny c t (nhn gi tr 1), th


s c thay i ca kt qu ca lnh ls -l trong phn quyn truy cp (phn u
tin). Nu bit thay i ID ngi dng bng 1, th k t x trong phn xc nh
quyn truy cp ca ch s hu s c thay th bng k t s. Lc ny nu ch
s hu c quyn gi tp tin th k t x c thay th bng ch ci s nh, cn
ngc li (v d tp tin khng phi l chng trnh), th thay th x bng ch ci
S ln. S thay th nh vy cng xy ra nu c t bit thay i ID nhm, tt
nhin l s thay th k t x trong phn xc nh quyn truy cp ca nhm s
hu. Nu bit lu chng trnh (sticky bit) bng 1, th thay th k t x trong
phn xc nh quyn truy cp ca nhng ngi dng cn li bng k t t, nu
nhng ngi dng cn li c quyn thc hin tp tin, bng k t T, nu ngc
li.
Nh vy, mc d trong kt qu ca lnh ls -l khng c nhng v tr ring
hin th kt qu ca ba bit (bit thay i ID ngi dng, bit thay i ID nhm
v bit lu chng trnh), chng ta vn c th thy c nhng thng tin ny.
Mt vi v d:

[user]$ ls -l /usr/bin/passwd /usr/bin/write


-rwsr-xr-x 1 root shadow 72836 2006-05-02 12:50 /usr/bin/passwd
-rwxr-sr-x 1 root tty 8936 2006-05-02 10:50 /usr/bin/write

( y chng ta thy c th lit k nhiu tp tin trn dng lnh ls -l, tc l


dng nhiu tp tin lm tham s cho lnh ls.)

[user]$ touch vidu


[user]$ chmod 7766 vidu
[user]$ ls -l vidu
-rwsrwSrwT 1 teppi82 users 0 2006-09-11 12:46 vidu

4.6 Cc cu lnh c bn lm vic vi tp tin


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

4.6.1 Cu lnh chown v chgrp


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

[root]# chown tn_ngi_dng tn_tp_tin


[root]# chgrp tn_nhm tn_tp_tin

4.6.2 Cu lnh mkdir


Cu lnh mkdir cho php to th mc con trong th mc hin thi. Tham s ca
cu lnh ny l tn ca th mc mun to ra. Trong th mc va to s t ng
to ra hai mc: . (lin kt n chnh bn thn th mc ny) v .. (lin kt n
th mc m). to ra th mc con, bn c cn phi c quyn ghi vo th mc
hin thi. C th to ra th mc con trong mt th mc khc th mc hin thi,
nhng khi ny cn phi ch ra ng dn ti . V d:

[user]$ mkdir ~/projects/l4u/images

(hy nh li k hiu dng ch ca ngi dng).


C th dng cc ty chn sau ca cu lnh mkdir:

-m mode xc nh quyn (ch ) truy cp cho th mc mi (v d: -m 700)

-p to ra cc th mc trung gian ch ra trong ng dn (nu cha c


chng). V d:

teppi82@ThinhQuyen:~> mkdir mot/hai


mkdir: cannot create directory mot/hai: No such file or directory
teppi82@ThinhQuyen:~> mkdir -p mot/hai
teppi82@ThinhQuyen:~> ls -l mot
tng 4
drwxr-xr-x 2 teppi82 users 4096 2006-09-11 13:36 hai

4.6.3 Cu lnh cat


Cu lnh cat thng dng to cc tp tin, mc d c th s dng lnh touch.
Lnh cat cng a ra mn hnh (u ra) ni dung ca (cc) tp tin dng lm
tham s ca n. Nu chuyn kt qu lm vic ca lnh cat vo mt tp tin no
th c th to ra bn sao ca tp tin nh sau:

[user]$ cat tp_tin1 > tp_tin2

Chnh bn thn cu lnh cat lc u c pht trin dng cho vic chuyn
hng kt qu lm vic. V n c to ra cho s mc ni (concatenate, nu dng
thut ng ca Ho hc l s cng cc tp tin), tc l s kt hp cc tp tin khc
nhau vo mt:
4.6 Cc cu lnh c bn lm vic vi tp tin v th mc 81

[user]$ cat tp_tin1 tp_tin2 ... tp_tinN > tp_tin_mi

V cng chnh kh nng chuyn hng kt qu ca cu lnh ny c dng


to cc tp tin mi. Khi ny u vo ca lnh cat l dng d liu nhp t
bn phm (u vo tiu chun), cn u ra s l tp tin mi:

[user]$ cat > tp_tin_mi

Sau khi nhp vo nhng g mun nhp, hy nhn t hp phm <Ctrl>+<D>


hoc <Ctrl>+<C>, v tt c nhng g bn g s c lu li trong tp tin
tp_tin_mi. Tt nhin l nh vy ch yu dng cat to cc tp tin vn
bn ngn.

4.6.4 Cu lnh cp
Mc d i khi c th dng cu lnh cat sao chp cc tp tin, nhng trong
Linux c mt cu lnh chuyn dng cho vic ny lnh cp. C th p dng mt
trong hai dng ca lnh ny:

[user]$ cp [ty_chn] ngun ch


[user]$ cp [ty_chn] th_mc_ngun th_mc_mi

Trong trng hp th nht sao chp tp tin (hoc th mc) ngun vo tp


tin (hoc th mc) ch. Cn trong trng hp th hai th tp tin c trong
th_mc_ngun s c sao chp vo th mc th_mc_mi. sao chp th
cn c quyn c tp tin mun sao chp v quyn ghi vo th mc s sao chp
n (th mc ch).
Nu s dng mt tp tin c vo ch ca tp tin ch th ni dung ca n
s b xa mt, do vy khi sao chp cn phi cn thn. V li c th s dng cu
lnh cp vi ty chn -i. Khi trc khi ghi chn ln tp tin c h thng s
hi li ngi dng. Rt nn dng ty chn ny.
Cu lnh cp cn c mt vi ty chn c ch khc lit k trong bng 4.3.

Bng 4.3: Nhng ty chn chnh ca lnh cp


Ty chn ngha
p Gi li thi gian sa i tp tin v c gi li nhng quyn
truy cp c th gi li. Nu khng a ra ty chn ny th
quyn truy cp ca tp tin s c thit lp theo quyn ca
ngi dng chy lnh.
R hoc r Nu ngun l th mc th sao chp th mc cng vi tt
c nhng g (tp tin, th mc con) nm trong n, tc l gi
li c cu trc ca th mc bn u (recursive).
d Nu a ra ty chn ny th cc lin kt mm s vn l cc
lin kt, nu khng th s sao chp tp tin (ni dung) m
lin kt ny ch n.
f Ghi chn tp tin khi sao chp m khng hi li hay cnh
bo.
82 Lm quen vi h thng tp tin ext3fs

4.6.5 Cu lnh mv
Nu bn khng cn sao chp, m cn di chuyn tp tin t mt th mc ny vo
mt th mc khc, th c th s dng cu lnh mv. C php ca lnh ny tng
t nh c php ca cp. Hn na, lnh ny u tin sao chp tp tin (hay th
mc), v sau mi xa tp tin (th mc) ban u. Cc ty chn ca n cng
ging nh ca cp.
Cu lnh mv khng ch dng di chuyn, m cn dng thay i tn tp
tin v th mc, tc l di chuyn chng trong phm vi ca mt th mc. Ch cn
t vo ch hai tham s tn c v tn mi ca tp tin nh th ny:

[user]$ mv tn_c tn_mi

Nhng hy ch l cu lnh mv khng cho php i tn mt vi tp tin cng


lc bng cch s dng cc mu tn. Do cu lnh:

[user]$ mv *.doc *.odt

s khng lm vic. Khi s dng lnh mv cng ging nh khi s dng cp, ng
quyn thm vo ty chn -i hin ra cnh bo khi c tp tin s b ghi chn.

4.6.6 Cu lnh rm v rmdir


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

4.6.7 Cu lnh more v less


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

4.6.8 Cu lnh tm kim find v mu tn tp tin


Cn c mt cu lnh thng dng lm vic vi tp tin trong Linux l cu
lnh tm kim tp tin find. Cu lnh find c th tm kim tp tin theo tn, theo
kch thc, thi gian to hoc thi gian sa i tp tin v theo cc tiu ch khc.
C php chung ca cu lnh find c dng sau:

find [danh_sch_th_mc] tiu_ch_tm_kim

Trong tham s danh sch th mc xc nh ni tm kim tp tin mong mun.


n gin nht l dng th mc gc / lm ni khi u tm kim. Tuy nhin
trong trng hp tm kim c th ko di rt lu, v s lc sot tt cc th
mc k c nhng h thng tp tin gn vo, trong c th c cc th mc mng
84 Lm quen vi h thng tp tin ext3fs

(v chuyn g xy ra nu tc ng truyn thp). C th lm s khi lng


cng vic, nu dng mt danh sch nhng th mc, m tp tin c th nm trong,
thay th cho th mc gc. V d:

[user]$ find /usr/bin /sbin /bin /usr/local/bin -name cp

Phn u ca tiu_ch_tm_kim xc nh xem chng trnh find phi


tm ci g. Phn u ny l tham s bt u bng , (, ), , hoc !. Tt c
cc tham s ng trc tiu_ch_tm_kim c coi l tn th mc cn lc
sot. Nu khng ch ra mt th mc no, th tm kim s bt u t th mc
hin thi v i su vo trong cc th mc con.
Ngi dng thng thc hin tm kim theo tn tp tin nh v d trn,
y tiu_ch_tm_kim c dng name tn_tp_tin. ch ty chn -name
c th s dng ty chn -path, khi cu lnh s tm kim s tng ng ca
tn tp tin y bao gm c ng dn ch ra. V d, cu lnh:

[user]$ find . -path ./l*es

s tm thy trong th mc hin thi th mc con l4u/images. Trong v d


ny, ch tn ca tp tin hoc th mc chng ta s dng mt mu tn.
V bi v mu tn tp tin khng ch s dng cho cu lnh find m cn s
dng cng vi nhiu cu lnh khc (bao gm c nhng cu lnh ni n:
chmod, chown, chgrp, cp, rm, cat, mv), nn chng ta cn ch v dnh
thi gian nghin cu cc quy nh s dng v vit mu tn.
Trong a s trng hp mu tn tp tin c to ra nh cc k t c bit *
v ?. K t * s dng thay th cho bt k dng k t no. Trong Linux:

* tng ng vi tt c cc tp tin tr nhng tp tin n.

.* tng ng vi tt c nhng tp tin n (trong c th mc hin thi .


v th mc m ..).

*.* ch tng ng vi nhng tp tin v th mc c du chm (.) gia tn


hoc cui cng.

a*p tng ng vi anhchup v anhchep.

*a* tng ng vi May v march.

K t ? ch thay th mt k t bt k, v th taptin?.txt s tng ng vi


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

Bng 4.4: Tiu ch tm kim ca cu lnh find.


Ty chn Gi tr
name mu_tn Tm tp tin c tn tng ng vi mu_tn.
group tn Tm tp tin thuc v nhm ch ra.
size s[c] Tm tp tin c c bng s khi 512 byte (tc l bng
512B x s). Nu sau s c k t c th c ngha l
kch thc c tnh theo byte (k t, charater), ch
khng phi theo khi.
mtime s_ngy Tm tp tin c thay i ln cui cng trc
s_ngy ch ra.
newer mu Tm tp tin c thay i sau khi thay i tp tin c
trong mu.
type dng_tp_tin Tm tp tin dng ch ra. Dng tp tin c xc nh
bng mt trong cc k t sau: b (thit b khi), c
(thit b k t), d (th mc), f (tp tin thng), p
(ng c tn pipe), hoc l (lin kt mm).

tn tp tin trong ti liu IBM LPI tutorial bn dch ting Vit do nhm cng tc
ca vnoss.org (trong c ti) thc hin c trn http://vnoss.org/pub.
Cn by gi sau khi lm quen vi mu tn tp tin, chng ta quay tr li
vi cu lnh find v ni chi tit hn v nhng kh nng c th ca tiu ch tm
kim. Mt vi v d n gin ca tiu ch tm kim c trong bng 4.4.
Nhng tiu ch tm kim n gin khc bn c th tm thy trong trang man
ca cu lnh find hoc trong ti liu LPI tutorial ni trn. Cn ni rng t
nhng tiu ch n gin c th to ra nhng tiu ch phc tp hn nh cc php
lgc and, or hoc php ph nh (k hiu l du chm than !). V d, nu bn
mun tm tt c nhng tp tin c phn m rng12 l .odt v .tex, th c th
dng tiu ch tm kim nh sau: (-name *.tex -or -name *.odt). C th
s dng kt hp nh vy mt s lng bt k cc tiu ch k c tiu ch phc tp.
Nu khng ch ra php lgc c th, th coi nh dng and, tc l c th dng mt
trong hai cch ghi: (-name *.tex -and -name *.odt) hoc (-name *.tex
-name *.odt). Nu ch dng mt php lgc and hoc !, th c th b i du
ngoc, cn php lgc or v cc tiu ch phc tp hn th cn du ngoc. Trc
du ngoc cn t mt du gch cho ngc (\), cn sau du ngoc cn t mt
khong trng. V d, nu bn c mun tm th mc theo tn ca n th c th
dng lnh:

[user]$ find /usr/share -name man1 -type d

hoc dng tiu ch phc tp:

[user]$ find /usr/share \( -name man1 -and -type d \)

Trong v d sau chng ta tm tp tin theo tiu ch nh sau: hoc tn tp tin


c phn m rng *.tex, hoc kch thc tp tin nh hn 200KB.
12
trong du ngoc v chng ta bit rng trong Linux khng c khi nim phn m rng tp
tin.
86 Lm quen vi h thng tp tin ext3fs

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

Trong v d cui cng ny hy ch rng trc gi tr kch thc tp tin c


du . Du ny c th s dng vi bt k tham s c gi tr s no trong tiu ch
tm kim ca cu lnh find. C ngha rng cn tm tp tin c gi tr ca tham
s nh hn s a ra. Tng t du + c ngha l cn tm tp tin c gi tr ca
tham s ln hn s a ra. Nu khng c du + v du th tm tp tin c gi
tr ca tham s bng s a ra.
kt thc phn v cu lnh find ny, cn ni thm rng sau tiu ch tm
kim c th a ra ngay thao tc x l tt c nhng tp tin tm thy. V d n
gin nht l thao tc print.

[user]$ find ~/projects -name *.tex -print

dng a ra mn hnh danh sch tn ca tt c nhng tp tin tm thy cng


vi ng dn y n tp tin. Thao tc ny c dng theo mc nh, tc l
lun lun c dng khi khng ch ra thao tc no nh trong cc v d trc y.
Mt v d khc l thao tc -exec cmd {}. Trong cmd l mt cu lnh bt
k no ca h v shell. Trong trng hp ny s thc hin cu lnh cmd i
vi tt c nhng tp tin tm thy. Sau cmd {} l du chm phy (;) c du gch
cho ngc \ trc (chng ta s hiu r hn tc dng ca du gch cho ngc
trong chng ngay sau).
V d, nu bn mun xa tt c nhng tp tin trong th mc hin thi m
ngi dng khng ng n trong vng 365 ngy hoc lu hn, th hy dng
cu lnh sau:

[user]$ find . -type f -atime +365 -exec rm {} \;

ch -exec c th dng -ok, khi trc khi thc hin cu lnh cmd cho mi
tp tin tm thy h thng s hi li xem bn c mun thc hin tht khng.
Ni chung cu lnh cmd l mt cu lnh rt mnh, c ch v l mt cng c
tm kim tt trong h thng tp tin. ng nhin l cha phi tt c nhng kh
nng ca lnh ny c lit k ra y. Hy tm hiu trong trang tr gip man
hoc mt cun sch dy cp no v Linux. V hy cn thn khi s dng nhng
kh nng ca cu lnh ny nh gi nhng cu lnh khc thc hin trn tt
c nhng tp tin tm thy. Hy nh rng s thay i thng l mt chiu.

4.6.9 Cu lnh split


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

ban u v phn u (prefix) tn ca cc tp tin s to ra. Cc tp tin thu c


s c tn gm phn u (prefix) ny v hai ch thm vo chng khng trng
nhau: aa, ab, ac, ad, v.v. . . (khng c khong trng v cc du chm gia phn
u v nhng ch ci ny). Nu khng a ra phn u, th theo mc nh s
dng x, tc l s thu c cc tp tin xaa, xab, xac, xad v.v. . .
Ngoi cc tham s c th thm vo ty chn -b xc nh kch thc ca
cc tp tin to ra (tnh theo byte). Sau -b l mt s v sau l mt ch ci: k
(kch thc tnh theo KB) hoc m (tnh theo MB). Nu khng a ra ty chn ny
th theo mc nh kch thc ca tp tin thu c bng 1MB. gii quyt bi
ton a lc u th cn chy lnh:

[user]$ split -b 650m phim.mpg phim

Sau dng chng trnh ghi a sao chp hai tp tin thu c (phimaa, phimab)
ln hai a CD-R(W), ri a chng (c ngha l dng lnh cp) ln my th hai
vo mt th mc no . Cui cng phc hi tp tin ban u bng lnh:

[user]$ cat phim* > phim.mpg

Sau c th xa i cc tp tin phimaa, phimab.

4.6.10 So snh cc tp tin v lnh patch


C th bn khng nhng khi lm vic vi my tnh cng vic so snh ni
dung ca hai tp tin khc nhau gp mt cch thng xuyn. L v c th sao
chp tp tin mt cch d dng, ri sau qun lun l tp tin no mi hn hoc
tt hn. V th nhng cng c dng so snh tp tin l cn thit v tt nhin
l c trong Linux. Cng c n gin nht trong s ny l lnh cmp (compare).
Lnh ny ch so snh ni dung ca hai tp tin theo tng byte:

[user]$ cmp tp_tin1 tp_tin2

Nu hai tp tin hon ton trng nhau, th lnh hon thnh cng vic m
khng a ra thng bo g, cn nu chng khc nhau th a ra s th t ca
dng v byte ch c s khc nhau.
Tt nhin thng tin m lnh cmp a ra hi t c th quyt nh chn tp
tin no trong s hai tp tin ny, tp tin no quan trng hn. V th cn c th s
dng cu lnh diff bit c s khc nhau gia hai tp tin y l g. Ch
cn cho cu lnh ny bit tn hai tp tin m bn mun so snh. V d:

teppi82@ThinhQuyen:~> diff ChangeLog ChangeLog2


1c1
< 11 thng 09 nm 2006, phin bn 0.9.3
---
> 18 thng 09 nm 2006, phin bn 0.9.3

Thng bo v s khc nhau s hin th trn mn hnh (u ra tiu chun).


Chng ta c th chuyn hng bo co ny vo mt tp tin:
88 Lm quen vi h thng tp tin ext3fs

teppi@ThinhQuyen:~> diff ChangeLog ChangeLog2 > ChangeLog.diff


teppi@ThinhQuyen:~> more ChangeLog.diff
1c1
< 11 thng 09 nm 2006, phin bn 0.9.3
---
> 18 thng 09 nm 2006, phin bn 0.9.3

nh gi phin bn ca mt tp tin th thun tin hn nu s dng cu


lnh sdiff. Kt qu so snh khi ny s hin th dng hai ct, phn cch nhau
bi cc khong trng. Nu hai ct c cng s th t khc nhau, th chng s cch
nhau bi mt du gch thng ng |. Nu mt dng no ch c trong tp tin
th nht th n c nh du bng mt k t <, nu khng c trong tp tin
th hai mt k t >.
Cn c cu lnh diff3 cho php so snh 3 tp tin mt lc. Nhng thng s
dng nht trn cc h thng UNIX v Linux vn l cu lnh diff. C th d
dng hiu iu ny nu bit rng kt qu bo co ca diff v s khc nhau gia
hai tp tin c th s dng cho cu lnh patch. Thng thng kh nng ny c
dng khi phn phi bn cp nht ca chng trnh ng dng. Ly v d n gin
(mt cch ngu ngc), mt chng trnh ng dng no c a cho ngi
dng dng tp tin xvnkb-0.2.8.c, c cha m ngun ca chng trnh ny
trn ngn ng C. Sau nh pht trin sa cc li v cp nht chng trnh ri
lu m ngun trong mt tp tin khc xvnkb-0.2.9.c. By gi cn a nhng
thay i lm n cho ngi dng. Tt nhin l ch cn gi cho ngi dng
nhng thay i, tc l kt qu bo co to ra bng lnh:

[chuoi]$ diff xvnkb-0.2.8.c xvnkb-0.2.9.c > xvnkb.c.diff

Nh vy tt nhin l kch thc ca tp tin xvnkb.diff s nh hn nhiu so


vi xvnkb-0.2.9.c, s tit kim c dung lng truyn ti qua mng Internet
nu ch gi xvnkb.c.diff. Trong trng hp chng trnh ng dng ln th s
tit kim ny l nh k. Tuy nhin tit kim cho ngi dng khng phi l ng
dng chnh. M s pht trin ca ng dng m m mi l im chnh. Chng ta
nh rng mt ng dng m m c pht trin bi c mt nhm cc nh pht
trin v cng ng. Mi nh pht trin s ng gp on m ca mnh bng
chnh cch ny.
Tuy nhin sau khi nhn c tp tin *.diff th cn phi a nhng sa i
lm vo phin bn hin thi. Bi ton ny l do patch gii quyt. c
xvnkb-0.2.8.c v xvnkb.c.diff, ch cn chy lnh:

[user]$ patch xvnkb-0.2.8.c xvnkb.c.diff > xvnkb-0.2.9.c

s thu c tp tin xvnkb-0.2.9.c.

4.7 Cc cu lnh lu tr v nn tp tin


Khi s dng Linux rt c th bn s t lm vic vi phn ln cc lnh h v
shell, v c nhng chng trnh tin ch nh Midnight Commander v cc
4.7 Cc cu lnh lu tr v nn tp tin 89

mi trng giao din ho nh KDE, GNOME. V cc tin ch v mi trng


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

4.7.1 Chng trnh tar


Nhng ngi dng quen vi nhng chng trnh nn dng winzip (a tt
c tp tin vo mt kho ri sau nn chng) th c th s hi Ti sao li cn
hai chng trnh?. Chng ta s tm thy cu tr li cho cu hi ny sau khi c
xong hai phn ti y, v s thy y khng phi l mt yu im ca Linux m
cn l im mnh nu bit cch kt hp nhp nhng hai chng trnh ny.
Tn chng trnh tar c ngha l tape archiver, tc l chng trnh ny
khng nn cc d liu m ch kt hp chng vo mt tp tin chung sau ghi tp
tin ny ln cch bng nh (tape) thng dng lu tr thng tin. Nu mun
to tp tin ny trn a cng, th cn s dng lnh tar vi ty chn f, sau ch
ra tn tp tin. Chng trnh tar c 8 ty chn khc vi nhng ty chn cn li
ch khi chy lnh tar th cn phi a ra mt trong s 8 ty chn ny. Tm ty
chn ny xc nh cc chc nng chnh ca chng trnh (xem bng 4.5).

Bng 4.5: Nhng ty chn chnh ca tar


Ty chn ngha
-A, --catenate, --concatenate Thm tp tin vo kho c.
-c, --create To kho mi.
-d, --diff, --compare Tm s khc nhau gia cc tp tin
trong kho v trn h thng tp tin (so
snh).
--delete Xa tp tin khi kho (khng dng cho
bng ghi).
-r, --append Thm tp tin vo cui kho.
-t, --list a ra danh sch cc tp tin trong
kho.
-u, --update Ch thm nhng tp tin mi hn bn
sao trong kho (cp nht kho).
-x, --extract, --get Ly tp tin ra khi kho (gii phng).

Nu bn lm vic vi cc tp tin kho trn a ch khng phi vi bng ghi


(y l a s trng hp s dng my tnh c nhn), th nht nh phi dng
90 Lm quen vi h thng tp tin ext3fs

ty chn f. Nhng ty chn khc (tr 8 ty chn bt buc k trn) l khng cn


thit, chng ch dng thm vo cc chc nng ph c th no . V d, ty
chn v bt buc chng trnh phi a ra danh sch cc tp tin a vo kho.
C th lit k cc tu chn mt ch ci (c, f, . . . ) lin nhau v du gch ngang
() pha trc c th dng nhng khng nht thit phi c. Chng ta s thy
v d ti y. Ti s khng a ra m t tt c cc ty chn ca lnh tar, m ch
cho bit mt s dng lnh cn thit nht lm vic vi cc kho tp tin. Nh vy
s c ch hn trong thi gian ny.
to mt kho tp tin tar t vi tp tin cn s dng mt trong hai lnh sau:

[user]$ tar -cf tn_kho tp_tin1 tp_tin2


[user]$ tar cf tn_kho tp_tin1 tp_tin2

trong ty chn c (t by gi ti s b i du gch ngang pha trc tu


chn) cho bit chng trnh cn to ra (create) kho tp tin, cn tu chn f cho
bit l kho ny phi c to dng tp tin c tn tn_kho pha sau ty chn.
Trong phn tn tp tin mun lu vo kho c th s dng cc mu tn, bao
gm c cc k t thay th n gin nh * v ?. Nh vo tnh nng ny c th
lu vo kho ngay lp tc nhiu tp tin bng mt cu lnh rt ngn. V d, to
ra kho cha tt c cc tp tin ca mt th mc con ca th mc hin thi, gi s
projects, th ch cn gi lnh:

[user]$ tar cf projects.tar projects/*

hoc thm ch cn n gin hn:

[user]$ tar cf projects.tar projects

Cu lnh ny s to ra kho projects.tar trong th mc hin thi. Kho ny


khng ch lu tt c nhng tp tin c trong th mc projects m cn lu tt
c nhng th mc con ca n cng vi tt c nhng tp tin nm trong chng
(chng ta dng thut ng lu quy, hoc lu ton b cu trc th mc).
Trong tp tin kho cu trc th mc ca projects vn c gi nguyn.
Cn ch l trong v d trn nu ch * t *.* th s ch lu nhng tp
tin nm trc tip trong th mc projects v nhng th mc con c du chm
trong tn (t gp), nhng th mc con cn li ca projects s khng c lu.
Cng trong v d ny nu khng ch ra tn th mc th s lu tt c cc tp tin
v th mc con ca th mc hin thi. Nu chy lnh sau:

[user]$ tar cvf tn_kho ./.*

th khng ch lu tt c cc tp tin v th mc con ca th mc hin thi, m


cn lu nhng tp tin ca th mc m.
By gi bn c bit cch to kho tp tin. ly (gii phng) tt c tp tin
ra khi kho, cn dng lnh:

[user]$ tar xvf tn_kho

Hin th danh sch cc tp tin trong kho bng lnh:


4.7 Cc cu lnh lu tr v nn tp tin 91

[user]$ tar tvf tn_kho | less

Gii phng mt tp tin no bng:

[user]$ tar xvf tn_kho tn_tp_tin

Chng trnh tar l phng tin thun li to cc bn sao lu tr (sao


lu) ca tp tin. Tt nhin cn c nhng tin ch sao lu chuyn dng khc,
nhng c khi bn c khng bit nhng tin ch ny, th vn c th sao lu d
liu qu bu ca mnh ln a mm bng:

[user]$ tar Mcvf /dev/fd0 th_mc

ri phc hi th mc bng lnh:

[user]$ tar Mxpvf /dev/fd0

Hoc n gin hn, to mt tp tin kho cha:

[user]$ tar cvf tn_kho th_mc

ri sao chp tp tin tn_kho ln mt thit b lu tho ri hoc th mc trn


mng no (CD, DVD, flash, ftp,. . . ). Phc hi li bng lnh:

[user]$ tar xpvf tn_kho

Nu c kh khn khi s dng lnh tar, hy c tr gip man ca n hoc c


nhng thng tin hin ra khi chy tar vi ty chn --help

4.7.2 Chng trnh gzip


Mc d chng trnh tar to ra kho tp tin, nhng nh ni trn, n khng
nn kho ny li m ch kt hp cc tp tin ring r vo mt tp tin chung.
nn tp tin ny li thng s dng cu lnh gzip. Trng hp n gin nht
ca lnh ny trng nh sau:

[user]$ gzip tn_tp_tin

Trn dng lnh c th a ra cng lc vi tn hoc mu tn tp tin. Nhng


khi ny mi tp tin s c nn ring r, ch khng to mt tp tin chung.
gii nn tp tin hy dng mt trong hai cu lnh sau:

[user]$ gzip -d tn_tp_tin

hoc

[user]$ gunzip tn_tp_tin


92 Lm quen vi h thng tp tin ext3fs

Bng 4.6: Nhng ty chn chnh ca chng trnh gzip


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

Tp tin ban u sau khi nn s b xa, ch cn li tp tin nn. Cn khi


gii nn th tp tin nn s b xa, ch cn li tp tin bnh thng. Chng ta c
cm gic nh tp tin c a ra, a vo mt kho. Nhng l nhng tp tin
hon ton khc nhau! Hy s dng lnh ls -i kim tra ch s inode ca
chng.
By gi chng ta s lit k mt vi ty chn c ch ca chng trnh gzip vo
bng 4.6.
Bi v chng trnh gzip khng c kh nng lu nhiu tp tin vo trong mt
tp tin, nn thng dng gzip nn nhng kho tp tin do tar to ra. Hn na
cn c th s dng kt hp hai chng trnh ny. Chng ta s xem xt vn
ny ngay sau.

4.7.3 Chng trnh bzip2


Trong thi gian gn y ngi dng Linux thng s dng thm mt chng
trnh nn na thay th cho gzip chng trnh bzip2. Chng trnh ny
nn mnh hn (c mc nn cao hn, to ra cc tp tin nh hn) v lm vic
nhanh hn. Cc bn phn phi Linux mi c ci t sn chng trnh ny.
4.7 Cc cu lnh lu tr v nn tp tin 93

Chng trnh bzip2 lm vic tng t nh gzip, tc l thay th mi tp tin


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

tn_tp_tin.bz2 thay th bng tn_tp_tin

tn_tp_tin.bz thay th bng tn_tp_tin

tn_tp_tin.tbz2 thay th bng tn_tp_tin.tar

tn_tp_tin.tbz thay th bng tn_tp_tin.tar

tn_tp_tin khc thay th bng tn_tp_tin.out.

V d:

teppi82@ThinhQuyen:~> bzip2 2
teppi82@ThinhQuyen:~> mv 2.bz2 2.sj
teppi82@ThinhQuyen:~> bunzip2 2.sj
bunzip2: Cant guess original name for 2.sj -- using 2.sj.out

Cc tu chn ca bzip2 rt ging vi ty chn ca gzip nhng khng phi


tt c. Ti s a ra mt danh sch ngn nhng ty chn cn thit nht trong
bng 4.7.
Tham s ng sau hai du gch ngang (--) v mt khong trng c coi l
tn tp tin, d tham s c mt du gch ngang u. V d:

[user]$ bzip2 -- -tn_tp_tin

By gi n lc chng ta hc cch kt hp tar vi hai cu lnh gzip v


bzip2 lm vic nhanh v c hiu qu hn.

4.7.4 S dng kt hp tar vi gzip v bzip2


Tt nhin khng ai ngn cn bn s dng ring r cc cu lnh tar vi gzip v
bzip2, nhng s nhanh hn nu chng ta ch cn s dng mt cu lnh c th
to ra mt tp tin nn, hay gii nn mt tp tin. Hy tng tng bn nhn c
mt tp tin, v d xvnkb-0.2.9.tar.gz. gii nn tp tin ny thng thng
bn cn dng hai cu lnh sau tip ni nhau:
94 Lm quen vi h thng tp tin ext3fs

Bng 4.7: Nhng ty chn chnh ca chng trnh bzip2


Ty chn ngha
-d, --decompress Bt buc gii nn tp tin. Ty chn ny cn thit v trn
thc t bzip2, bunzip2 v bzcat ch l mt chng
trnh. Mi chng trnh tu theo phn m rng tp
tin m quyt nh xem s lm g vi tp tin . Ty
chn -d b i c ch ny v bt buc chng trnh phi
gii nn tp tin ch ra.
-z, --compress Bt buc nn tp tin (xem trn).
-t, --test Th (kim tra) tnh nguyn vn ca tp tin nn.
-f, --force Ghi chn ln tp tin c. Theo mc nh bzip2 khng
ghi chn ln tp tin c trn a. Nu mun ghi chn
th hy dng ty chn ny.
-k, --keep Gi gn (khng xa) tp tin ban u khi nn hoc gii
nn.
-s, --small Gim yu cu i vi dung lng b nh cn s dng
bng cch gim tc nn. Ch nn dng ty chn ny
trn nhng my tnh c c t b nh (8MB hoc t hn).
C l chng ta khng bao gi cn n ty chn ny hoc
t nht l hy vng nh vy.
-q, --quiet B i nhng cnh bo t ngha.
-v, --verbose a ra cc thng bo ph trong khi lm vic (ch c
ngha chun on).
L, -license Hin th s phin bn v bn quyn ca chng trnh.
V, -version Ging nh --L.

[user]$ gzip -d xvnkb-0.2.9.tar.gz


[user]$ tar xvf xvnkb-0.2.9.tar
Nhng trong s nhng ty chn ca chng trnh tar cn c mt tu chn
c bit z cho php gii nn tp tin bng chng trnh gzip (thc hin vai tr
ca lnh th nht trong hai lnh k trn). gii nn tp tin k trn ch cn
dng mt cu lnh nh sau:
[user]$ tar xzvf xvnkb-0.2.9.tar.gz
Kt qu thu c l hon ton nh trn tr mt im: trong trng hp dng
2 cu lnh th trn a s gi li tp tin trung gian (xvnkb-0.2.9.tar). Nh
vy cch th hai cn c mt u im na l khng gi li cc tp tin trung gian,
ngi dng khng cn phi g thm mt lnh xo tp tin.
Vic to tp tin bng cch s dng kt hp tar v gz cng c thc hin
bng ty chn z:
[user]$ tar czvf tn_tp_tin.tar.gz th_mc
Cn ch rng trong trng hp ny chng trnh s khng t ng thm phn
ui .gz vo tn ca tp tin thu c. Do cn t tn r rng cho n cng vi
phn ui .tar.gz.
4.8 To v gn cc h thng tp tin 95

S dng kt hp tar v bzip2 l hon ton tng t, nhng cn dng ty


chn j ca tar thay cho tu chn z. Tc l, gii nn tp tin bng lnh:

[user]$ tar xjvf tn_tp_tin.tar.bz2

v to tp tin nn bng:

[user]$ tar cjvf tn_tp_tin.tar.bz2 th_mc

Ti ngh rng nhng thng tin k trn lm vic mt cch c hiu


qu vi cc chng trnh nn tar, gzip v bzip2. c thm thng tin hy tm
hiu trang tr gip man hoc cc ti liu HOWTO tng ng.
kt thc phn v nhng chng trnh lm vic vi tp tin nn ny, ti
mun ni thm rng, nu khng may bn nhn c mt tp tin dng *.zip
hay *.rar th cng ng vi chy sang nh mt my s dng Windows gii
nn. Bn c th th cc chng trnh unzip v unrar c trn h thng Linux ca
mnh. Cch s dng nhng lnh ny ht sc n gin, ch cn a vo dng lnh
tn ca tp tin. Nu c g kh khn hy th unzip help hoc unrar help.
Ti chc chn l bn s t gii quyt c vn . V ng qun ch to ra cc
tp tin nn bng tar, gzip hoc bzip2 v bn l ngi dng Linux!

4.8 To v gn cc h thng tp tin


Trong nhng phn trc chng ta cp ngn gn mt s cu lnh chnh
lm vic vi nhng h thng tp tin nh dng sn. By gi chng ta s dng
li vn lm sao to ra h thng tp tin v cch thay i n.
Cy th mc ca Linux c to ra t nhng cnh ring r tng ng vi
cc a khc nhau. Thng ni l cy th mc c to thnh t cc h thng
tp tin ring. Ni nh vy v trong UNIX (v Linux) khng c khi nim nh
dng a m s dng khi nim to h thng tp tin. Khi chng ta c mt
a lu mi, v d a cng, chng ta cn to trn a ny h thng tp tin. Tc
l mi a c t tng ng vi h thng tp tin ring. c th s dng h
thng tp tin ny ghi cc tp tin, th u tin cn kt ni n v cy th mc
chung (chng ta s dng thut ng gn, mount). Nh vy l c th ni gn h
thng tp tin hoc gn a lu cng vi cc h thng tp tin c trn n.
Cn cn phi ni thm rng thng thng a cng c chia thnh cc phn
vng, nht l i vi nhng a mi sn xut gn y c dung lng ln t vi
chc n vi trm GB. Vic to nhng phn vng nh vy gip thc hin d
dng cc thao tc nh: sao lu, xc nh quyn truy cp, ng thi tng hiu
sut lm vic v lm gim kh nng mt thng tin do chng trnh gy ra. V
th tip theo chng ta s ni v to h thng tp tin trn mt phn vng, nhng
a khng b chia c th coi l mt phn vng.
Cn mt im na cng cn ni n l Linux c th lm vic vi nhiu dng
h thng tp tin khc nhau. Nhng h thng tp tin gc ca n l h thng tp
tin m rng (extfs) phin bn 2 v 3. Ngoi hai h thng tp tin ny Linux cn
c th lm vic vi cc phin bn khc nhau ca h thng tp tin FAT (FAT16
v FAT32), h thng tp tin ISO9660 s dng ghi thng tin trn CD-ROM v
96 Lm quen vi h thng tp tin ext3fs

cc h thng tp tin khc (k c NTFS13 ). Tc l khi to v gn cc h thng tp


tin cn lun lun nh rng dng h thng tp tin trn cc a lu khc nhau c
th khng ging nhau.
u tin chng ta s xem xt trng hp cn to h thng tp tin trn mt
phn vng no ( c) ca a. V d h thng tp tin c dng ext3fs. To h
thng tp tin dng ext3fs c ngha l to trn phn vng ny ca a mt siu
khi (superblock), mt bng cc m t inode, v cc khi d liu. Thc hin tt
c nhng vic ny bng lnh mkfs14 . Trong trng hp n gin nht ch cn
chy lnh sau:

[root]# mkfs -t ext3 /dev/hda2

Tt nhin l cn thay th /dev/hda2 bng tn ca phn vng trn my ca bn.


Hy cn thn khi vit tn phn vng, nu ghi nhm bn s b mt d liu. Nu
bn mun to h thng tp tin trn a mm th cn chy:

[root]# mkfs -t ext3 /dev/fd0

C th ni rng chng ta nh dng a mm, nhng cn bit l vi h thng


tp tin ext3fs th bn khng c c a mm ny trn DOS hoc Windows (nu
khng dng chng trnh hoc driver c bit). to ra nhng a mm c th
c trn DOS v Windows cn dng ty chn -t vi gi tr vfat hoc nhng tin
ch c bit khc. Nu khng a ra ty chn -t th s dng dng h thng tp
tin mc nh (hin nay l phin bn c ca ext ext2fs).
Sau khi thc hin cu lnh mkfs, s to ra h thng tp tin dng ext3fs trong
phn vng ch ra. Trong h thng tp tin mi s t ng to ra mt th mc vi
tn lostfound+. Th mc ny c chng trnh fsck dng trong nhng trng
hp khn cp, v vy ng xa n. bt u lm vic vi h thng tp tin mi,
u tin cn kt ni (gn) n vo cy th mc chung bng lnh mount.
Phi c t nht hai tham s cho cu lnh mount: thit b (device, tn phn
vng) v im gn (mount point). im gn l mt th mc c trong cy th
mc, v dng lm th mc gc i vi h thng tp tin gn vo (ging nh nt
ni gia thn cy v cnh cy). V d, cu lnh:

[root]# mount /dev/hda10 /mnt/diaC

s gn h thng tp tin ca phn vng /dev/hda10 vo th mc /mnt/diaC.


Cn phi c th mc /mnt/diaC trong cy th mc. Nu cha c hy to ra
bng lnh mkdir.
Cn ch l sau khi gn h thng tp tin vo th mc /mnt/diaC, th ngi
dng khng cn truy cp c ti ni dung (bao gm c thng tin v ch s hu
c v quyn truy cp ti chnh bn thn th mc) ca th mc ny na. Ni
dung ny s ch quay tr li khi ngi dng b gn (unmount) h thng tp tin
ra khi th mc. Ni dung c ca th mc khng b hu, b xa, m ch tm thi
b giu i. V th tt nht l dng cc th mc rng chun b sn t trc
13
S h tr c tt, tuy nhin s h tr ghi ln NTFS cha tht hon ho.
14
Trn cc bn phn phi Linux mi cn c th s dng cc cu lnh mkfs.ext2, mkfs.ext3 v
cc cu lnh tng t. Nu dng chng th ch cn b i phn -t ext3 hoc -t ext2.
4.8 To v gn cc h thng tp tin 97

lm im gn (v th m trong tiu chun FHS c cp n th mc /mnt,


hy xem bng 4.1).
Dng n gin nht trong v d trn ca lnh mount ch lm vic vi iu
kin tt c nhng tham s cn thiu c th tm thy trong tp tin /etc/fstab.
Nu khng c tp tin (ch khi no bn c tnh hoc v tnh xa) hoc trong
tp tin khng c nhng d liu cn thit, th cn s dng dng y ca lnh
mount, nh sau:

[root]# mount -t dng_httt thit_b ng_dn

trong dng_httt xc nh dng h thng tp tin trn thit_b (phn vng),


cn ng_dn xc nh im gn.
Tp tin cu hnh /etc/fstab ch yu dng gn t ng cc h thng tp
tin trong qu trnh khi ng Linux. Mi dng ca tp tin ny cha thng tin v
mt h thng tp tin v gm 6 vng phn cch nhau bi cc khong trng15 :

Tn thit b (phn vng). C th s dng tn thit b c trn my (v d


/dev/hda10), cng nh tn ca h thng tp tin mng NFS (v d Thin-
hQuyen:/home/nhimlui th mc /home/nhimlui trn my c tn Thin-
hQuyen).

im gn. Tn y bao gm c ng dn ca th mc s gn tp tin


vo.

Dng h thng tp tin.

Cc tu chn gn. Theo mc nh l rw (c v ghi).

Mc dump. Vng ny c chng trnh sao lu dump s dng. Nu


h thng tp tin cn c sao lu th y phi c s 1, nu khng s 0.
C th c cc gi tr khc, hy xem trang man ca dump.

Th t u tin kim tra h thng tp tin bng cu lnh fsck. H thng


tp tin vi gi tr nh hn s c kim tra trc. Nu bng nhau th s
kim tra song song (tt nhin nu c th).

Hin nay Linux h tr cc h thng tp tin sau: minix, ext, ext2, ext3, xia,
msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs16 . ch dng h
thng tp tin trong vng dng h thng tp tin v sau ty chn -t ca lnh
mount c th t gi tr auto. Trong trng hp cu lnh mount th t xc
nh dng ca h thng tp tin ang gn. Tuy nhin trong mt s trng hp c
th dn n li, nn tt hn ht l ch ra dng mt cch chnh xc. Cn c th lit
k mt s dng phn cch nhau bi du phy (,). Trong cu lnh mount cn c
th a ra danh sch cc dng h thng tp tin khng cn gn bng c (flag) no.
Kh nng ny c ch trong trng hp s dng cu lnh mount vi tham s -a
(cu lnh mount vi tham s -a s gn tt c cc h thng tp tin lit k trong
tp tin /etc/fstab). V d, cu lnh:
15
tin c cc vng thng sp cho thng hng, nhng iu l khng nht thit.
16
Hy xem trang man fs c m t ngn gn v nhng h thng tp tin ny.
98 Lm quen vi h thng tp tin ext3fs

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

gn tt c cc h thng tp tin tr cc dng smb (Samba17 ) v ext


Khi gn h thng tp tin c trong /etc/fstab, th ch cn a ra mt tham
s: hoc tn ca thit b (phn vng) hoc im gn. Tt c cc tham s khc cu
lnh mount s ly t tp tin /etc/fstab.
Thng thng ch c ngi dng cao cp root mi c kh nng gn cc h
thng tp tin, nhng nu trong vng cc ty chn gn c ch ra ty chn user,
th tt c mi ngi dng s c kh nng gn (b gn) h thng tp tin . V d,
nu trong tp tin /etc/fstab c dng:

/dev/hdd /media/dvd auto noauto,user,sync 0 0

th bt k ngi dng no cng c quyn gn h thng tp tin trn a DVD ca


mnh bng cu lnh:

[user]$ mount /dev/hdd

hoc:

[user]$ mount /media/dvd

Trong bng 4.8 c a ra thm mt vi ty chn c th s dng trong cu


lnh mount v trong tp tin/etc/fstab (vng cc ty chn gn).
Nu mun gn mt h thng tp tin no v ch cho php c th cn ch ra
ty chn r (read only) trn dng tng ng ca tp tin /etc/fstab (theo mc
nh s dng rw, tc l c v ghi), hoc s dng cu lnh mount vi tham s -r
Cu lnh mount v umount h tr bng cc h thng tp tin gn. Bng ny
nm trn a dng tp tin /etc/mtab. C th xem trc tip tp tin ny bng
cc chng trnh xem tp tin (less, more hoc bng cu lnh mount (khng c
tham s).
Trc khi b cc a tho ri (a mm, flash) ra khi my th cn tho (b
gn) cc h thng tp tin c trn cc a tho ri ny. Thao tc ny c thc hin
bng cu lnh umount (khng phi unmount!). Tham s ca cu lnh umount l
tn thit b (phn vng) hoc im gn.
Ch c ngi dng gn h thng tp tin v tt nhin c ngi dng cao
cp root mi c quyn b gn n. bt k ngi dng no cng c th b gn
h thng tp tin th trong tp tin /etc/fstab cn thay th ty chn user bng
ty chn users (trong vng cc ty chn gn).
Ch c th b gn h thng tp tin khi khng c tp tin no ca n m ra,
khng tin trnh no ang chy t tp tin chng trnh nm trn h thng tp
tin ny v trong h thng khng c tin trnh no s dng h thng tp tin ny.
Tc l h thng tp tin khng c bn.
Cn ni rng nu so vi Windows th lm vic vi cc a ri (a mm, CD,
DVD, Zip, v.v. . . ) trn Linux c mt cht phc tp hn. V u tin bn cn gn
cc a ny (ni chnh xc l h thng tp tin c trn a) vo cy th mc chung.
thay mt a ri khc th u tin cn b gn (tho) a c ra ri mi gn
17
cc chia s trong mng ca Windows
4.8 To v gn cc h thng tp tin 99

Bng 4.8: Nhng ty chn chnh ca cu lnh mount


Ty chn ngha
async Vo/ra (ghi/c) ca h thng tp tin thc hin khng ng b
(khng tc thi).
auto C th gn h thng bng cu lnh mount vi ty chn -a.
defaults S dng cc tu chn theo mc nh: rw, suid, dev, exec,
auto, nouser, async.
dev Cc thit b khi v thit b k t (byte) trong h thng tp tin
l nhng tp tin c bit.
noauto Ch c th t gn h thng tp tin. Ty chn -a khng t ng
gn h thng tp tin ny.
exec Cho php thc hin cc tp tin chng trnh nm trn h thng
tp tin ny.
remount Cho php gn li h thng tp tin gn. Thng s dng
thay i cc ty chn gn, c bit trong trng hp m rng
quyn truy cp (v d thm quyn ghi cho h thng tp tin
gn ch c).
ro Gn h thng tp tin ch c.
rw Gn h thng tp tin c v ghi.
suid Cho php dng bit thay i ID ngi dng v bit thay i
ID nhm.
sync Vo/ra (ghi/c) ca h thng tp tin thc hin ng b (tc
thi).
user Cho php ngi dng bnh thng gn h thng tp tin. i vi
nhng ngi dng ny lun lun gn vi cc ty chn noexec,
nosuid, nodev.
nodev Khng coi cc thit b khi v thit b k t (byte) trong h
thng tp tin l nhng tp tin c bit.
nosuid Khng cho php dng bit thay i ID ngi dng v bit thay
i ID nhm.
nouser Cm ngi dng bnh thng gn h thng tp tin.

tip a th hai. Tuy trn cc bn phn phi mi c cc dch v cho php t


ng gn v t ng tho cc a ri, nhng bn cng cn bit cch lm vic
vi cc a ri nu c vn xy ra vi cc dch v . Tt nht hy chun b sn
cho mi a ri mt im gn ring. V d, nu bn c mt a mm, mt dvd
v mt flash th hy to ba th mc floppy, dvd v flash trong /mnt lm
im gn cho ba thit b ca mnh. Mt s bn phn phi (Debian, openSUSE)
s to sn cho bn nhng im gn ny.
y l tt c nhng g m ngi dng Linux mi (v rt mi) cn bit v h
thng tp tin ext3fs. Xin nhc li l nhng g ni y ch dnh cho h thng
tp tin ext3fs (mt s thng tin vn cn ng cho phin bn ext2fs), v mi ch
cp n mt trc, mt quay v pha ngi dng ca h thng ny (ch yu
l cu trc tp tin). Mt cn li, mt sau (cu trc bn trong), ch c ni n
trong chng ny khi cn thit. Chng ta s xem xt k hn mt sau ny trong
100 Lm quen vi h thng tp tin ext3fs

mt vi chng sp ti. Cn by gi bn c s chuyn sang nghin cu thnh


phn quan trng th 2 trong 4 thnh phn chnh ca Linux h v bash.
Chng 5

Bash

Tt g hn tt nc sn ca dao tc ng Vit Nam

Trong phn ny chng ta s cp n vn lm vic vi Linux ch text, hay cn c


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

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

n GNU (d n pht trin chng trnh ng dng ca Stallman, xem http:


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

5.2 Cc k t c bit
H v bash s dng mt vi k t t b 256 k t ASCII cho cc mc nh ring,
hoc biu th cc thao tc no , hoc bin i biu thc. Cc k t ny
bao gm:

~ ! @ # $ % ^ & * ( ) _ - [ ] { } : ; " / \ > <

v k t vi m 0, k t hng mi (to ra khi nhn phm <Enter>) v k t


khong trng. Ph thuc vo tnh hung cc k t c bit ny c th s dng vi
ngha c bit ca n hay s dng nh mt k t thng thng. Nhng trong
a s cc trng hp khng khuyn dng cc k t vi gi tr th hai. Trc ht
l vic s dng chng trong tn tp tin v th mc. Tuy nhin cc k t _,
v . (du gch di, gch ngang v du chm) thng c s dng trong tn
tp tin, v y l mt v d cho thy khng phi lc no chng cng c gi tr
c bit. Trong tn tp tin ch du chm (.) v gch cho (/) c gi tr c bit.
K hiu gch cho dng phn chia tn cc th mc trong ng dn, cn du
chm c gi tr c bit khi n l k t u tin trong tn tp tin (cho bit tp
tin l n).
Vic a ngay tt c ngha c bit ca nhng k t ny v cc tnh hung
s dng chng tm thi khng c ch. Chng ta s xem xt chng dn dn trong
5.3 Thc thi cc cu lnh 103

cc phn sau, khi cn s dng n. Tuy nhin, 3 k hiu c ngha ln v cn


cp n u tin.
K hiu \ (gch cho ngc) c th gi l k hiu xa b ngha c bit cho
bt k k t c bit no, ng ngay sau \. V d, nu mun s dng khong
trng trong tn tp tin, th chng ta cn t trc k t khong trng mt
d, cu lnh sau:
du V

teppi82@teppi:~$ cp lennon_imagine lennon\ imagine

Cc k t v " (ngoc n v ngoc kp) c th gi l cc k t trch dn.


Mi k t ny lun lun c s dng trong mt cp vi bn sao ca chnh n
ng khung mt biu thc no , ging nh trong cc vn bn, sch bo,
. . . thng thng. Nu nh mt on vn bn no t trong ngoc n, th tt
c cc k t nm trong ngoc n ny c gi tr nh cc k t thng thng, khn
mt k t no c ngha c bit. Tr li vi v d s dng khong trng trong
tn tp tin trn, c th ni, nu mun t tp tin ci tn lennon imagine cn
a tn vo du ngoc:

teppi82@teppi:~$ cp lennon_imagine lennon imagine

S khc nhau trong cch s dng k t v " l, trong ngoc n mt


ngha c bit tt c cc k t, cn trong ngoc kp tt c chng ngoi tr
$, v \ (du la, ngoc n v du gch ngc).

5.3 Thc thi cc cu lnh


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

5.3.1 Thao tc ;
Mc d ngi dng thng ch nhp trn dng lnh tng cu lnh mt, nhng
cn c th a vo dng lnh ngay lp tc vi cu lnh, v chng s thc hin
ln lt t cu lnh ny n cu lnh khc. lm c iu ny cn s dng
k t c bit - ;. Nu dng k t ny phn chia cc cu lnh, th cu lnh
tip theo s c coi nh tham s ca lnh pha trc. Nh vy, nu nhp vo
dng lnh ci g ging nh sau:

teppi82@teppi:~$ command1 ; command2

th h v u tin s thc hin cu lnh command1, ch cho lnh hon


thnh, sau chy command2, ch lnh hon thnh, sau li a ra dng
nhp lnh v ch cc hnh ng tip theo ca ngi dng.
104 Bash

5.3.2 Thao tc &


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

5.3.3 Thao tc && v ||


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

5.4 u vo/u ra tiu chun


5.4.1 Dng d liu vo ra
Khi mt chng trnh c thc hin, n c cung cp ba dng d liu (hay cn
gi l knh):

u vo tiu chun (standard input hay stdin). Qua knh ny d liu c


a vo cho chng trnh;

u ra tiu chun (standard output hay stdout). Qua knh ny chng trnh
a ra kt qu lm vic ca mnh;
5.4 u vo/u ra tiu chun 105

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

T u vo tiu chun chng trnh ch c th c, cn hai u ra v knh


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

5.4.2 Lnh echo


Cu lnh echo dng chuyn ti u ra tiu chun dng k t, m c a
vo lm tham s cho n. Sau lnh ny a ra tn hiu chuyn dng v hon
tt cng vic. Hy th thc hin cu lnh sau:

[user]$ echo xin chao cac ban!

Ti ngh rng li gii thch s l tha thi (ch xin hy s dng du ngoc
n, nu khng kt qu c th s khc. Nu bn c ch th c th gii thch
ti sao li khc).

5.4.3 Lnh cat


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

Nu nhn t hp phm <Ctrl>+<D> (dng ngng vic nhp d liu) chng


ta s qua li dng nhp lnh. Cng c th s dng t hp phm <Ctrl>+<C> (cu
lnh trong h v dng dng chng trnh ang chy).
Nu a tn mt tp tin vo lm tham s cho lnh cat, th ni dung ca lnh
ny s c a ti u vo tiu chun, t lnh cat s c ni dung ny v
a ti u ra tiu chun (xem s ).

Ni dung tp tin --> u vo tiu chun (stdin) --cat--> u


ra tiu chun (stdout)

y ch l mt trng hp ring ca vic chuyn hng d liu u vo, mt


c ch rt c ch ca h v. V tt nhin chng ta cn xem xt k hn c ch ny.

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


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

5.5.1 S dng >, < v >>


chuyn hng u vo/ra, s dng cc k hiu >, < v >>. Thng s
dng vic chuyn hng liu ra ca cu lnh vo tp tin. Di y l mt v
d tng ng:

maikhai@fpt:/some/where$ ls -l > /home/maikhai/ls.txt

Theo lnh ny danh sch tp tin v th mc con ca th mc, m t ngi


dng thc hin lnh ls2 s c ghi vo tp tin /home/maikhai/ls.txt; khi
ny nu tp tin ls.txt khng tn ti, th n s c to ra; nu tp tin c,
th ni dung ca n s b xa v ghi bi danh sch ni trn. Nu bn khng
mun xa ni dung c m ghi thm d liu u ra vo cui tp tin, th cn s
dng k hiu >> thay cho >. Khi ny khong trng trc v sau cc k hiu >
hay >> khng c ngha v ch dng vi mc ch thun tin, d nhn.
Bn c th chuyn hng khng ch vo tp tin, m cn ti u vo ca mt
cu lnh khc hay ti mt thit b no (v d, my in). V d, a ni dung
tp tin /home/maikhai/ls.txt va to trn ti ca s terminal th hai3 c
th s dng lnh sau:

maikhai@fpt:/sw$ cat /home/maikhai/ls.txt > /dev/tty2


2
th mc hin thi
3
bn cn dng t hp phm <Ctrl>+<Alt>+<F2> chuyn ti ca s terminal ny v ng
nhp trc
5.5 Chuyn hng u vo/u ra, ng ng v b lc 107

Nh bn thy, > dng chuyn hng d liu ca u ra. Chc nng tng
t i vi u vo c thc hin bi <. V d, c th m s t trong tp tin
ls.txt nh sau (ch , y ch l mt v d minh ha, trn thc t thng s
dng cu lnh n gin hn):

maikhai@fpt:/sw$ wc -w < /home/maikhai/ls.txt

Cch chuyn hng ny thng c s dng trong cc script, cho cc cu


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

[user]$ cat > file


[user]$ cat>file
[user]$ >file cat
[user]$ > file cat

Tuy nhin, t chng (khng c mt lnh no, tc l khng c knh tiu chun
no cho lnh) cc k t chuyn hng ny khng th c s dng, nh th
khng th, v d, nhp vo dng lnh sau:

[user]$ file1 > file2

m thu c bn sao ca mt tp tin no . Nhng iu ny khng lm gim


gi tr ca c ch ny, bi v cc knh tiu chun c cho mi cu lnh. Khi ny,
c th chuyn hng khng ch u vo v u ra tiu chun, m cn cc knh
khc. lm c iu ny, cn t trc k hiu chuyn hng s ca knh
mun chuyn. u vo tiu chun stdin c s 0, u ra tiu chun stdout - s 1,
knh thng bo li stderr - s 2. Tc l lnh chuyn hng c dng y nh
sau (xin c nhc li, khong trng cnh > l khng nht thit):

command N > M

Trong , N v M - s ca knh tiu chun (0, 1, v 2) hoc tn tp tin. Trong


mt vi trng hp c s dng cc k hiu <, > v >> m khng ch ra s knh
hay tn tp tin, v vo ch cn thiu s t, theo mc nh, 1 nu dng >, tc l
u ra tiu chun, hoc 0 nu dng <, tc l u vo tiu chun. Nh th, khi
khng c s no ch ra, > s c bin dch l 1 >, cn < s c bin dch l 0 <.
Ngoi vic chuyn hng cc knh tiu chun n gin nh vy, cn c kh
nng khng nhng chuyn hng d liu vo knh ny hay knh khc, m cn
sao chp ni dung ca cc knh tiu chun . K hiu & dng thc hin iu
ny, khi t n (&) trc s ca knh s chuyn d liu n:

command N > &M


108 Bash

Lnh ny c ngha l, u ra ca knh vi s N c gi n c u ra tiu


chun, v sao chp ti knh c s M. V d, sao chp thng bo li vo u ra
tiu chun, cn dng lnh 2>&1, cn 1>&2 sao chp stdout vo stderr. Kh nng
ny c bit c ch khi mun ghi u ra vo tp tin, v khi chng ta va c
th nhn thy thng bo trn mn hnh, va ghi chng vo tp tin. V d, trng
hp sau thng c ng dng trong cc script chy khi khi ng Linux:

teppi82@teppi:~$ cat hiho > /dev/null


cat: hiho: No such file or directory
teppi82@teppi:~$ cat hiho > /dev/null 2>&1

5.5.2 S dng |
Mt trng hp c bit ca chuyn hng u ra l s t chc cc ng ng
(ha y cn c th gi l knh gia cc chng trnh, hoc bng chuyn). Hai hay
vi cu lnh, m u ra ca lnh trc dng lm u vo cho lnh sau, lin kt
vi nhau (c th ni phn cch nhau, nu mun) bi k hiu gch thng ng -
|. Khi ny u ra tiu chun ca lnh ng bn tri so vi | c chuyn n
u vo tiu chun ca chng trnh, dng bn phi so vi |. V d:

maikhai@fpt:/sw$ cat ls.txt | grep knoppix | wc -l

Dng ny c ngha l kt qu ca lnh cat, tc l ni dung tp tin ls.txt, s


c chuyn n u vo ca lnh grep, lnh ny s phn chia ni dung ni trn
v ch ly ra nhng dng no c cha t knoppix. n lt mnh, kt qa ca
lnh grep c chuyn ti u vo ca lnh wc -l, m tnh s nhng dng thu
c.
ng ng s dng kt hp vi chng trnh nh li vi nhau (mi chng
trnh thc hin mt bin i xc nh no trn u vo) to thnh mt lnh
tng qut, m kt qu ca n s l mt bin i phc tp.
Cn ch rng, h v gi v thc hin tt c cc cu lnh c trong ng ng
cng mt lc, chy mi lnh trong mt bn sao h v ring. V th ngay khi
chng trnh th nht bt u a kt qu u ra, chng trnh tip theo bt
u x l kt qu ny. Cng y nh vy, cc lnh tip theo thc hin cc cng vic
ca mnh: ch d liu t lnh trc v a kt qu cho lnh tip theo, ging nh
mt dy chuyn sn xut. Nu nh mun mt lnh no kt thc hon ton,
trc khi thc hin lnh tip theo, bn c th s dng trn mt dng c k hiu
dy chuyn |, cng nh du chp phy ;. Trc mi du chm phy, h v s
dng li v ch cho n khi thc hin xong tt c cc cu lnh trc ca ng
ng.
Trng thi thot ra (gi tr lgc, m c tr li sau khi thc hin xong
chng trnh) ca mt ng ng s trng vi trng thi thot ra ca cu lnh
sau cng trong ng ng. trc cu lnh u tin ca ng ng c th t
k hiu !, khi trng thi thot ra ca ng ng s l ph nh lgc ca
trng tht thot ra ca lnh cui cng trong ng ng. Tc l nu trng thi
thot ra ca lnh cui cng bng 0 th trng thi thot ra ca ng ng s bng
1 v ngc li. H v ch cho tt c cc cu lnh kt thc ri mi xc nh v a
ra gi tr ny.
5.6 Tham bin v cc bin s. Mi trng ca h v 109

5.5.3 B lc
V d cui cng trn (v d vi cu lnh grep) c th dng minh ha cho
mt khi nim qua trng khc, l, b lc chng trnh. B lc l lnh
(hay chng trnh), m tip nhn d liu vo, thc hin mt vi bin i trn d
liu ny v a ra kt qu u ra tiu chun (t y cn c th chuyn n ni
no theo mun ca ngi dng). Cc cu lnh - b lc bao gm cc lnh
ni n trn cat, more, less, wc, cmp, diff, v c nhng cu lnh c
trong bng 5.1.

Bng 5.1: Cc cu lnh b lc


Lnh M t ngn gn
grep, fgrep, Tm trong tp tin hay d liu u vo cc dng c cha mu
egrep vn bn c ch ra v a cc dng ny ti u ra tiu
chun.
tr Trong d liu u vo thay th cc k t th nht bi
cc k t tng ng th hai. Hy th g lnh tr abc ABC
ri g vi dng cha cc k t abc!
comm So snh hai tp tin theo tng dng mt v a vo u ra
tiu chun 3 ct : mt nhng dng ch gp tp tin th
nht, hai nhng dng ch gp tp tin th hai, v ba
nhng dng c trong c hai tp tin.
pr nh dng tp tin hay ni dung ca u tiu chun in
n.
sed Trnh son tho tp tin theo dng, s dng thc hin mt
vi bin i trn d liu u vo (ly t tp tin hay u vo
tiu chun) .

Mt b lc c bit, cu lnh tee, nhn i d liu u vo, mt mt gi d


liu ny n u ra tiu chun, mt khc ghi n (d liu) vo tp tin (ngi dng
cn t tn). D thy rng theo chc nng ca mnh lnh tee tng t nh nhm
k t chuyn hng 1>&file.
Kh nng ca b lc c th m rng vi vic s dng cc biu thc chnh quy
(iu khin), cho php, v d, t chc tm kim theo cc mu tm kim t n
gin n phc tp v rt phc tp.
Nu mun, chng ta c th ni rt nhiu v chuyn hng v b lc. Nhng
ni dung ny c trong phn ln cc cun sch v UNIX v Linux (xem phn li
kt). V vy, chng ta s dng y v chuyn sang mt phn khc, c gi l
mi trng v cc bin mi trng to bi h v.

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


v
Khi nim tham bin trong h v bash tng ng vi khi nim bin s trong cc
ngn ng lp trnh thng thng. Tn gi (hay ID) ca tham bin c th l mt
t bao gm cc k t bng ch ci, ch s, du gch di (ch k t u tin ca
110 Bash

t ny khng c l ch s), v c nhng k t sau: , , #, , - (gch ngang), $, , 0,


_ (gch di).
Chng ta ni rng, tham bin c xc nh hay c t ra, nu ngi dng
gn cho n mt gi tr. Gi tr c th l mt dng trng rng. nhn thy gi
tr ca tham bin, ngi ta s dng k t $ trc tn ca n. Nh vy, lnh:

maikhai@fpt:/sm$ echo parameter

hin th t parameter, cn lnh

maikhai@fpt:/sm$ echo $parameter

hin th gi tr ca tham bin parameter (tt nhin nu nh tham bin c


xc nh).

5.6.1 Cc dng tham bin khc nhau


Tham bin chia thnh ba dng: tham bin v tr, tham bin c bit (cc k t
c bit ni trn chnh l tn ca nhng tham bin ny) v cc bin s ca
h v.
Tn (ID) ca tham bin v tr gm mt hay vi ch s (nhng khng c tham
bin v tr 0). Gi tr ca tham bin v tr l cc tham s cho lnh, c a ra
khi chy h v (tham s u tin l gi tr ca tham bin 1, tham s th hai -
tham bin 2, v.v. . . ). C th dng cu lnh set thay i gi tr ca tham bin
v tr. Gi tr ca cc tham bin ny cng thay i trong khi h v thc hin mt
trong cc hm s (chng ta s xem xt vn ny di).
Cc tham bin c bit khng g khc hn l cc mu, m s thay th (php
th, php hon i) chng c thc hin nh trong bng 5.2:
Cc tham bin c bit, c lit k bng trn, c mt im khc bit l
ch c th nhc n chng, khng th gn cc gi tr cho cc tham bin ny.
Bin mi trng, nhn t pha h v, l cc tham bin c t tn. Gi tr
ca bin mi trng c gn nh thao tc c dng sau:

[user]$ name=value

Trong , name - tn ca bin, cn value - gi tr mun gn cho bin (c th


l mt dng trng). Tn ca bin mi trng ch c th bao gm cc ch s, ch
ci v khng c bt u bi mt ch s. (Tin rng sau khi c on vit v
tham bin v tr th cc bn hiu ti sao mt bin mi trng khng th bt
u bi mt ch s.) Gi tr c th l bt k mt dng vn bn no. Nu gi tr
c cha nhng k t c bit, th cn t n (gi tr) vo du ngoc. Gi tr tt
nhin s khng cha cc du ngoc ny. Nu mt bin mi trng c xc nh,
th cng c th b xa b bng lnh ni tr unset.
Tp hp tt c cc bin ny cng vi cc gi tr gn cho chng gi l mi
trng (enviroment) ca h v. C th xem n (mi trng) nh lnh set khi
khng c tham s (c th cn dng ng ng set | less, nu mi trng
ln, c nhiu bin). xem gi tr ca mt bin mi trng c th, thay v dng
lnh set (khi ny cn tm trong kt qu ca n bin mun xem), c th s dng
lnh echo:
5.6 Tham bin v cc bin s. Mi trng ca h v 111

Bng 5.2: Thay th cc tham bin c bit


Tham bin Quy lut thay th
* Thay th bi cc tham bin v tr, bt u t tham bin th
nht. Nu s thay th thc hin trong du ngoc kp, th
tham bin ny s c thay bi mt t duy nht, m to ra
t tt c cc tham bin v tr, phn cch nhau bi k t u
tin ca bin s IFS (s ni n sau). Tc l $ tng ng
vi $1c$2c. . . , trong c - k t u tin trong gi tr ca
bin s IFS. Nu gi tr ca IFS trng, hoc khng c xc
nh gi tr, th tham bin phn cch nhau bi cc khong
trng.
@ Thay th bi tham bin v tr, bt u t tham bin th nht.
Nu thay th thc hin trong ngoc kp, th mi tham bin s
c thay th bi mt t ring bit. Tc l, $@ tng ng
vi $1 $2 . . . Nu khng c tham bin v tr, th gi tr s
khng c thit lp (tham bin s b x
# Thay th bi gi tr thp phn ca cc tham bin v tr.
? Thay th bi trng thi thot ra ca cu lnh cui cng trong
ng ng, m c thc hin trong ch nn trc.
(gch ngang) Thay th bi gi tr cc c, flag, c t bi lnh ni tr set
hay trong khi chy h v.
$ Thay th bi s ca tin trnh (PID - process identificator)
Thay th bi s ca tin trnh (PID) cui cng trong s cc
cu lnh thc hin trong nn sau.
0 Thay th bi tn h v hay tn ca script ang chy. Nu
bash chy mt tp tin lnh no , th $0 c gi tr bng tn
ca tp tin ny. Trong trng hp ngc li gi tr ny bng
ng dn u n h v (v d, /bin/bash
_ (gch di) Thay th bi tham s cui cng ca cu lnh trc trong s
cc cu lnh c thc hin (nu li l mt tham bin
hay bin s, th s s dng gi tr ca n

[user]$ echo $name

Trong , cn thay name bi tn bin (nh vy, trong trng hp ny, bn li


cn phi bit tn ca bin mun xem).
Trong s cc bin, m bn s thy trong kt qu ca lnh set, c nhng bin
rt th v. Xin hy ch n, v d, bin RANDOM. Nu th chy vi ln lin
tip cu lnh sau:

maikhai@fpt:/sw$ echo $RANDOM

th mi ln bn s nhn c mt gi tr mi. Nguyn nhn l v bin ny tr li


mt gi tr ngu nhin4 trong khong 0 - 32 768.
4
random l t ting Anh c ngha ngu nhin
112 Bash

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

Bng 5.3: K t xc nh dng du nhc


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

S ca lnh (s th t ca lnh ang thc hin trong bui lm vic hin thi)
c th khc vi s ca chnh n trong danh sch lch s cc cu lnh, bi v
danh sch cn cha c nhng cu lnh c ghi li trong tp tin lch s.
Sau khi gi tr ca bin c h v c xong, s xy ra s thay th theo cc
quy lut m rng trong bng trn, ng thi cn xy ra s thay th trong tn cc
cu lnh, trong cc biu thc s hc, v s chia t (word splitting). Chng ta s
ni n nhng s thay th ny di.
V d, sau khi thc hin lnh (v trong dng vn bn c khong trng, nn
nht thit phi c du ngoc):

[user/root]$ PS1="[\u@\h \W]\$"

th trong du nhc s c du m ngoc vung, tn ngi dng, k hiu , tn my,


khong trng, tn ca th mc hin thi (khng c ng dn), du ng ngoc
vung, v k hiu $ (nu trn h v ang lm vic ngi dng bnh thng) hay
#(nu h v chy di ngi dng root).

5.6.3 Bin mi trng PATH


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

[user]$ PATH=$PATH:new_path

Khi tm kim, h v lc li cc th mc theo ng th t lit k trong


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

5.6.4 Bin mi trng IFS


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

5.6.5 Th mc hin thi v th mc c nhn


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

5.6.6 Cu lnh export


Khi h v chy mt chng trnh hay cu lnh no , n (h v) cung cp cho
chng mt phn bin mi trng. c th cung cp bin mi trng cho tin
trnh chy t h v, cn gn gi tr cho bin ny vi lnh export, tc l thay v

[user]$ name=value

cn g:

[user]$ export name=value

Trong trng hp ny, tt c cc chng trnh chy t h v (k c bn sao


th hai ca chnh h v) s c quyn truy cp ti cc bin c gn nh vy, tc
l s dng gi tr ca chng qua tn.

5.7 Khai trin biu thc


Hay h v c cc cu lnh nh th no?.
Khi h v nhn c mt dng lnh ny cn thc hin, n (h v) trc khi
chy cu lnh thc hin vic phn tch ng php dng lnh ny (ging trong
ngn ng, phn tch ch ng, v ng). Mt trong nhng bc ca s phn tch
ny l php m hay khai trin biu thc (expansion). Trong bash c by loi
khai trin biu thc:

Khai trin du ngoc (brace expansion);

Thay th du ng (tilde expansion);

Php th cc tham bin v bin s;

Php th cc cu lnh;

Php th s hc (thc hin t tri sang phi);

Php chia t (word splitting);

Khai trin cc mu tn tp tin v th mc (pathname expansion).

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


xem xt chng theo t t ny.
5.7 Khai trin biu thc 115

5.7.1 Khai trin du ngoc


Khai trin du ngoc tt nht minh ha trn v d. Gi thit, chng ta cn to
th mc con trong mt th mc no , hoc thay i ngi dng s hu ca vi
tp tin cng mt lc. C th thc hin iu ny nh cc cu lnh sau:

[user]$ mkdir /usr/src/unikey/{old,new,dist,bugs}


[root]# chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}

Trong trng hp u, trong th mc /usr/src/unikey/ s to ra cc th


mc con old,new,dist, v bugs. Trong trng hp th hai, ngi dng s hu
ca cc tp tin sau s thay i (thnh root):

/usr/ucb/ex

/usr/lib/ex?.?

/usr/ucb/edit

/usr/lib/ex?.?

/usr/ucb/ex

/usr/lib/how_ex

/usr/ucb/edit

/usr/lib/how_ex

Tc l vi mi cp du ngoc s to ra vi dng ring r (s nhng dng


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

5.7.2 Thay th du ng (Tilde Expansion)


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

ng sau du ng khng phi l tn ca mt ngi dng (v khng rng), th t


khng b thay i. Nu nh sau du ng l +, hay k hiu ny s c thay th
bi tn u ca th mc hin thi (tc l gi tr ca bin PWD). Nu dng sau
du ng l -, th thay th gi tr ca bin OLDPWD (th mc c).

5.7.3 Php th cc tham bin v bin s


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

5.7.4 Php th cc cu lnh


Php th cc cu lnh l mt cng c rt mng ca bash. ngha ca n nm
ch thay th tn cc cu lnh bi kt qu thc hin ca chng. C hai dng php
th lnh:
$(command) v command
Nu ng dng dng th hai (ch y s dng du ngoc n ngc, phm
cho n thng nm trn phm Tab), th du gch ngc (\) trong du ngoc s
c chc nng nh mt k t thng thng, tr trng hp, khi ng sau n (du
gch ngc) l mt $, , hay mt \.
Nu nh s dng dng $(command), th tt c cc k t ng trong ngoc
to thnh mt cu lnh, khng c k t no c ngha c bit.
Nu php th cu lnh xy ra pha trong ngoc kp, th trong kt qu ca
php th s khng thc hin php phn chia t v s khai trin mu tn tp tin
v th mc.

5.7.5 Php th s hc (Arithmetic Expansion)


Php th s hc cho php tnh gi tr ca mt biu thc s hc v thay th n
(biu thc) bi kt qu thu c. C hai dng php th s hc:
$[expression]
((expression))
Trong expression c hiu (c bash c) nh khi ng trong ngoc
kp, nhng nhng du ngoc kp trong expression li c c nh mt k
t thng. Pha trong expression c thc hin cc php th tham bin v th
cu lnh.
5.7 Khai trin biu thc 117

C php ca biu thc expression tng t nh c php ca biu thc s


hc ca ngn ng C, c th hn v vn ny c th c trong phn ARITH-
METIC EVALUATION ca trang man ca bash. V d, cu lnh

[user]$ echo $((2 + 3 * 5))

cho kt qu bng 17. Nu biu thc khng chnh xc, bash s a ra thng bo
li.

5.7.6 Phn chia t (word splitting)


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

5.7.7 Khai trin cc mu tn th mc v tp tin5


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

[user]$ ls *.jpg

Nu trong th mc c nhiu tp tin, m tn ca chng l cc s gm bn ch


s (th mc /proc l mt v d+), th lnh sau ch a ra danh sch cc tp tin
c s t 0500 n 0999:

[user]$ ls -l 0[5-9]??
5
Pathname Expansion
118 Bash

Bng 5.4: Cc k t to mu
K t Quy lut thay th
* Tng ng vi bt k dng k t no, k c dng rng. V d,
v*.txt s c thay th bi vnoss.txt, vnlinux.txt v
vntex.txt (nu cc tp tin ny tn ti), v *.png s tng ng
tt c cc tp tin c phn m rng png (tp tin ha hai chiu).
? Tng ng bt k mt k t n no. V d, mu file?.txt
s c thay th bi cc tn tp sau file1.txt, file2.txt,
file3.txt, v filea.txt (nu chng tn ti), nhng
file23.txt th khng.
[...] Tng ng bt k k t no trong s cc k t nm trong du
ngoc vung ny. Cp k t, phn cch nhau bi du tr (-), v
d c-f, biu th mt dy; bt k k t no, theo t in, nm
gia hai k t ny, k c hai k t to ra dy (c v f trong v d)
cng tng ng vi mu. Nu k t u tin trong ngoc vung
l ! hay ^, th mu ( v tr ny) s tng ng tt c cc k t,
khng c ch ra trong ngoc.

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

5.8 Shell mt ngn ng lp trnh


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

5.8.1 Ton t if v test (hoc [ ])


Cu trc ca ton t iu kin c dng thu gn nh sau:

if list1 then list2 else list3 fi

trong , list1, list2, v list3 l cc chui cu lnh, phn cch nhau bi du


phy v kt thc bi mt du chm phy hay k t dng mi. Ngoi ra, cc chui
ny c th c a vo du ngoc nhn: list.
Ton t if kim tra gi tr c tr li bi cc cu lnh t list1. Nu trong
danh sch c vi cu lnh, th kim tra gi tr c tr li bi cu lnh cui
cng ca danh sch. Nu gi tr ny bng 0, th s thc hin cc lnh t list2;
cn nu gi tr ny khc khng, th s thc hin nhng lnh t list3. Gi tr
5.8 Shell mt ngn ng lp trnh 119

c tr li bi ton t if nh vy, trng vi gi tr m chui lnh thc hin


(list2 hoc list3) a ra.
Dng y ca lnh if:

if list then list [ elif list then list ] ... [ else list ] fi

( y du ngoc vung ch c ngha l, nhng g nm trong n, ngoc vung,


khng nht thit phi c).
Biu thc ng sau if hay elif thng l cu lnh test, m c th c
biu th bi du ngoc vung [ ].
Lnh test thc hin php tnh mt biu thc no , v tr li gi tr 0, nu
biu thc l ng, v 1 trong trng hp ngc li. Biu thc c a ti chng
trnh test nh mt tham s ca chng trnh. Thay v g test expression c
th a biu thc expression vo ngoc vung: [ expression ]
Cn ch rng, test v [ l hai tn ca ca cng mt chng trnh, ch
khng phi l mt php bin ha thn thng no ca h v bash (ch l c
php ca [ i hi phi c du ng ngoc). V cng cn ch rng ch ca
test trong cu trc if c th s dng bt k chng trnh no.
kt thc mc ny, chng ta a ra v d s dng if:

if [ -x /usr/bin/unicode_start ] ; then
unicode_start
else
echo "hello world"
fi

V ton t test (hay [...]) cn i su hn.

5.8.2 Ton t test v iu kin ca biu thc


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

-a file
ng nu tp tin c tn file tn ti.

-b file
ng nu file tn ti, v l mt tp tin thit b khi (block device) c
bit.

-c file
ng nu file tn ti, v l mt tp tin thit b k t (charater device) c
bit.

-d file
ng nu file tn ti v l mt th mc.
120 Bash

-e file
ng nu tp tin c tn file tn ti.

-f file
ng nu tp tin c tn file tn ti v l mt tp tin thng thng.

-g file
ng nu tp tin c tn file tn ti v c t bit thay i nhm.

-h file hay -L file


ng nu tp tin c tn file tn ti v l lin kt mm (lin kt tng
trng).

-k file
ng nu tp tin c tn file tn ti v c t bit sticky.

-p file
ng nu tp tin c tn file tn ti v l tn ca mt ng (knh FIFO).

-p file
ng nu tp tin c tn file tn ti v l tn ca mt ng (knh FIFO).

-r file
ng nu tp tin c tn file tn ti v c quyn c.

-s file
ng nu tp tin c tn file tn ti v kch thc ln hn khng.

-t fd
ng nu b m t ca tp tin (fd) m v ch ln terminal.

-u file
ng nu tp tin c tn file tn ti v c t bit thay i ngi dng.

-w file
ng nu tp tin c tn file tn ti v c quyn ghi.

-x file
ng nu tp tin c tn file tn ti v c quyn thc thi.

-0 file
ng, nu tp tin c tn file v ch s hu ca n l ngi dng m ID
c hiu lc ch n.

-G file
ng, nu tp tin c tn file tn ti v thuc v nhm, xc nh bi ID
nhm c hiu lc.

-S file
ng, nu tp tin c tn file tn ti v l socket.

-N file
ng, nu tp tin c tn file tn ti v thay i t ln c c cui cng.
5.8 Shell mt ngn ng lp trnh 121

file1 -nt file2


ng, nu tp tin file1 c thi gian sa i mun hn file2.

file1 -ot file2


ng, nu tp tin file1 gi hn file1 (trng hp ngc li ca trng
hp trn).

file1 -ef file2


ng, nu tp tin file1 v file2 c cng mt s thit b v ch s m t
inode.

-o optname
ng, nu ty chn optname ca h v c kch hot. Chi tit xin xem
trn trang man bash.

-z string
ng, nu di ca chui string bng khng.

-n string
ng, nu di ca chui khc khng.

string1 == string2
ng, nu hai chui trng nhau. C th thay hai == bng mt =.

string1 !== string2


ng, nu hai chui khng trng nhau.

string1 < string2


ng, nu chui string1, theo t in, ng trc chui string2 (i vi
ngn ng hin thi).

string1 > string2


ng, nu chui string1, theo t in, ng sau chui string2 (i vi
ngn ng hin thi).

arg1 OP arg2
y OP l mt trong cc php so snh s hc: -eq (bng), -ne (khc,
khng bng), -lt (nh hn), -le (nh hn hoc bng), -gt (ln hn), -ge
(ln hn hoc bng). ch cc tham s arg1 v arg2 c th s dng cc s
nguyn (m hoc dng).

T cc biu thc iu kin c bn ny c th xy dng cc biu thc phc tp


theo mun nh cc php lgc thng thng PH NH, V (cng) v HOC:

!(expression)
Php ph nh. ng, nu biu thc sai.

expression1 -a expression2
Php cng lgic AND. ng nu c hai biu thc u ng.

expression1 -o expression2
Php lgc hoc OR. ng nu mt trong hai biu thc ng.
122 Bash

5.8.3 Ton t case


Dng ca ton t case nh sau:

case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac

Cu lnh case u tin khai trin t word, v so snh n (word) vi mi t trong


mu pattern theo th t. Sau khi tm thy s trng nhau u tin th dng
vic so snh li, v thc hin danh sch list cc cu lnh ng sau mu tm
thy. Gi tr tr li bi ton t ny, bng 0, nu khng tm thy s trng nhau
no. Trong trng hp ngc li, tr li gi tr m cu lnh cui cng trong danh
sch list a ra.
V d s dng ton t case sau ly t script /etc/rc.d/rc.sysinit (kiu
t chc khi ng FreeBSD style):

case "$UTC" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS -u";
CLOCKDEF="$CLOCKDEF (utc)";
;;
no|false)
CLOCKFLAGS="$CLOCKFLAGS --localtime";
CLOCKDEF="$CLOCKDEF (localtime)";
;;
esac

Nu bin s (UTC) nhn gi tr yes hoc true, th s thc hin cp lnh th


nht, nhn gi tr no hoc false - cp th hai.

5.8.4 Ton t select


Ton t select cho php t chc hi thoi vi ngi dng. N c dng sau:

select name [ in word; ] do list; done

Lc u t mu word hnh thnh mt danh sch nhng t tng ng vi mu


ny. Tp hp nhng t ny c a vo knh thng bo li tiu chun, hn na
mi t c i km vi mt s th t. Nu mu word b b qua (khng c trong
ton t select), th s a vo cc tham bin v tr (xem trn) theo mt cch
tng t. Sau , du nhc PS3 c a ra, v h v ch chui nhp vo trn
u vo tiu chun. Nu chui nhp vo c cha s, tng ng vi mt trong cc
s hin ra, th bin name s c gn gi tr bng t i km vi s ny. Nu
nhp vo mt dng rng, th s v t s c hin ra them mt ln na. Nu
nhp vo bt k mt gi tr no khc, th bin name s nhn gi tr bng khng.
Chui m ngi dng nhp vo, c ghi li trong bin REPLY. Danh sch lnh
list c thc hin vi gi tr bin name chn.
Sau y l mt script nh (xin hy g khng du nu console ca bn cha h
tr vic hin th Ting Vit):
5.8 Shell mt ngn ng lp trnh 123

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

Ghi on trn vo mt tp tin (v d, select.sh), thay i tp tin thnh


kh thi (v d, chmod 755 select.sh), v chy (./select.sh). Trn mn
hnh s hin ra cu hi sau:

Bn thch dng OS no?


1) Linux 3) Free BSD 5) Solaris 7) Other
2) Gnu Hurd 4) MacOSX 6) QNX
#?

Hy nhn mt trong 7 s a ra (t 1 n 7). Nu bn nhp 4 (nhn c


<Enter>), th s thy thng bo sau:

Bn chn MacOSX

5.8.5 Ton t for


Ton t for lm vic c khc mt cht so vi for trong cc ngn ng lp
trnh thng thng. Thay v tng hoc gim gi tr ca mt bin s no (ln
hoc xung) mt n v sau mi vng lp, th n gn gi tr tip theo trong
danh sch t a sn cho bin trong mi vng lp. Ni chung cu trc c
dng sau:

for name in words do list done

Quy lut xy dng danh sch lnh (list) ging trong ton t if. V d. Script
sau to cc tp tin fu1, fu2, v fu3:

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

C th g ba dng ny trn mt dng lnh, kt qu thu c tng t vi


script. Dng tng qut ca ton t for nh sau:

for name [ in word; ] do list ; done

u tin cng xy ra s khai trin t word theo quy lut khai trin biu thc
(xem trn). Sau bin name ln lt c gn cc gi tr thu c t s
khai trin ny, v thc hin danh sch lnh list trong mi ln nh vy. Nu
khng c in word, th danh sch lnh list c thc hin mt ln cho mi
tham bin v tr a ra.
124 Bash

Trn Linux c chng trnh seq, tip nhn hai s nguyn lm tham s, v
a ra chui tt c cc s nm gia hai s ny (cng thm c chng). Nh cu
lnh ny c th s dng for ca bash lm vic nh ton t for trong cc ngn
ng lp trnh thng thng. lm c iu ny ch cn vit vng lp for nh
sau:

for a in $( seq 1 6 ) ; do
cat fu$a
done

Cu lnh (script) ny a ra mn hnh ni dung ca 10 tp tin (nu c): fu1,


..., fu10.

5.8.6 Ton t while v until


Ton t while lm vic tng t nh if, nhng vng lp cc cu lnh trong
list2 ch thc hin khi iu kin cn ng, v s ngng khi iu kin khng
tha mn. Cu trc c dng nh sau:

while list1 do list2 done

V d:

while [ -d directory ] ; do
ls -l directory >> logfile
echo -- SEPARATOR -- >> logfile
sleep 60
done

Chng trnh (script) trn s theo di v ghi li ni dung ca th mc c tn


directory theo tng pht nu th mc cn tn ti.
Ton t until tng t nh ton t while:

until list1 do list2 done

im khc bit nm ch, s dng gi tr ph nh ca iu kin list1, tc l


list2 thc hin, nu cu lnh cui cng trong danh sch list1 tr li trng
thi thot ra khc khng.

5.8.7 Cc hm s
H v bash cho php ngi dng to cc hm s cho mnh. Hm s lm vic v
c s dng ging nh cc cu lnh thng thng ca h v, tc l chng ta c
th t to cc cu lnh mi. Hm s c cu trc nh sau:

function name () { list }


5.8 Shell mt ngn ng lp trnh 125

Hn na t function khng nht thit phi c, name xc nh tn ca hm


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

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

5.8.9 Bin ni b (local)


Nu mun to mt tham bin a phng, c th s dng t kha local. C
php a ra bin a phng ging ht cc tham bin khc, ch c iu cn ng
sau t kha local: local name=value.
Di y l mt v d hm s, thc hin cng vic ca lnh seq nhc n
trn:

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

Cn ch n ty chn -n ca echo, n (ty chn) hy b vic to dng mi.


Mc d ty chn ny khng c nhiu ngha vi mc ch chng ta mun y,
nhng s rt c ch trong cc hm s vi mc ch khc. Hm s tnh giai tha
fact Mt v d khc:

fact()
{
126 Bash

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

y l hm s giai tha, mt v d ca hm qui. Hy ch n s khai


trin s hc, v php th cc cu lnh.

5.9 Script ca h v v lnh source


Script ca h v ch l cc tp tin c cha chui lnh. Tng t hm s script c
th c thc hin nh mt cu lnh. C php truy cp n cc tham s cng
nh hm s.
Trong cc trng hp thng thng khi chy script s c mt tin trnh mi
c chy. c th thc hin script trong bn bash hin thi, cn s dng cu
lnh source, hay mt du chm . (ng ngha ca source). Trong trng hp
ny script ch n gin l mt tham s ca lnh ni trn. Cu lnh s c dng:

source filename [arguments]

Cu lnh ny c v thc hin cc cu lnh c trong tp tin filename trong


mi trng hin thi, v tr li gi tr, xc nh bi cu lnh cui cng ca
filename. Nu filename khng cha du gch cho, th ng dn, lit k
trong bin s PATH, s c s dng tm tp tin c tn filename. Tp tin
ny khng nht thit phi kh thi (khng nht thit phi c bit x). Nu trong
th mc, lit k trong PATH, khng tm thy tp tin cn, th s tm n (tp tin)
trong th mc hin thi.
Nu c cc tham s (a ra arguments, xem nh dng cu lnh trn), th
trong thi gian thc hin script chng s thnh cc tham bin v tr. Nu khng
c tham s, th tham bin v tr khng thay i. Gi tr (trng thi), m lnh
source tr li, trng vi gi tr, tr li bi cu lnh cui cng trong script. Nu
khng cu lnh no c thc hin, hoc khng tm thy tp tin filename, th
trng thi thot bng 0.

5.10 Cu lnh sh
Bn lun lun c th chy mt bn sao ca h v bash nh cu lnh bash hay sh.
Khi ny c th bt bn sao ny chy mt script no , nu a tn ca script
nh mt tham s cho lnh bash. Nh vy, thc hin script myscript cn
a cu lnh sh myscript. Nu xem ni dung ca mt tp tin script no
(nhng tp tin nh vy c rt nhiu trn h thng), bn s thy dng u tin c
dng sau: #!/bin/sh. iu ny c ngha l, khi chng ta gi script thc hin
5.10 Cu lnh sh 127

nh mt lnh thng thng, th /bin/sh s gip chng ta thu xp mi th. C


th thay th dng ny bi lin kt n bt k mt chng trnh no, m s c
tp tin v thc hin cc cu lnh tng ng. V d, script trn ngn ng Perl bt
u bi dng c dng !/bin/perl.
Mt ch khc l k t # dng vit li ch thch trong script. Tt c nhng
g ng sau k t ny n cui dng s c coi l ch thch v b bash b qua
(tc l h v s khng xem dng ny l cu lnh). Nu bn mun kim chng li
tc dng ca k t ny, th hy nhp vo dng lnh mt cu lnh bt k, v t
trc n (cu lnh) k t #, v d # ls, bn s thy rng h v b qua cu lnh
ny.
Chng ta s dng bi hc ngn gn v bash ti y. Tt nhin, cn rt nhiu
vn quan trng cn xem xt nhng nm ngoi phm vi ca bi hc, v d, qun
l tin trnh, lch s cu lnh, m t v th vin readline, tn hiu, v.v. . . Cc bn
s tm thy thng tin cn thit trong cc cun hng dn khc hoc trn trang
man bash.
Chng 6

S dng Midnight Commander

Mi th u c vit ra cc nh lp trnh Nga.

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

6.1 Ci t chng trnh Midnight Commander


Mc d iu khin h thng tp tin ni chung v lm vic vi cc tp tin
ni ring c th s dng cc cu lnh ca h iu hnh, nh pwd, ls, cd, mv,
mkdir, rmdir, cp, rm, cat, more v.v . . . nhng s thun tin hn khi s dng
chng trnh Midnight Commander.
Midnight Commander (hay thng rt gn thnh mc) l chng trnh cho
php xem cu trc cy th mc v thc hin nhng thao tc iu khin h thng
tp tin. Ni cch khc, y l trnh qun l tp tin (File Manager). Nu nh bn
c c kinh nghim lm vic vi Norton Commander (nc) trong MS-DOS hay vi
FAR trong Windows, th s lm vic vi mc mt cch d dng. Bi v thm ch
nhng t hp phm nng chnh ca chng cng trng nhau. Trong trng hp
ny, c th lm vic vi Midnight Commander bn c ch cn xem nhanh
nhng ni dung pha di. Tc gi xin c li khuyn i vi nhng ai cn xa l
vi NC hay FAR (nu nh c?): hy ch c v thc hnh chm ch, v Midnight
Commander s gip rt nhiu trong khi lm vic vi h iu hnh.
Ghi ch:

1. Kin thc trong chng ny c vit s dng cho phin bn 4.6.1-pre3, mc


d c th p dng cho nhng phin bn khc.

2. Kin thc a ra ch p dng c hon ton trong trng hp chng trnh chy
t knh giao tc (console), hay cn gi l giao din text. Khi lm vic vi chng
trnh qua trnh gi lp (emulator) ca terminal trong giao din ha, v d
xterm, rxvt, v.v. . . th mt s m t hot ng ca chng trnh s khng cn
chnh xc na, v vic nhn phm b v ha chim ly. S khng tng ng
nh vy thng gp nhng ch ni v phm nng.
6.2 V ngoi ca mn hnh Midnight Commander 129

Trong phn ln cc bn phn phi chng trnh Midnight Commander khng


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

6.2 V ngoi ca mn hnh Midnight Comman-


der
khi ng Midnight Commander, cn g vo dng lnh shell cu lnh mc
v nhn <Enter>. Nu ng dng khng chy, th cn tm xem tp tin chng
trnh mc nm u (c th dng cu lnh find / -name mc -type f), sau
g vo dng lnh ng dn y ti tp tin , v d, trn my tc gi l
/usr/bin/mc. Sau khi chy chng trnh, bn c s thy mn hnh mu da tri
lm chng ta nh n mn hnh chng trnh Norton Commander cho MS-DOS
hay chng trnh FAR cho Windows nh trong hnh 6.2.

Hnh 6.1: Giao din ting Vit ca Midnight Commander

Gn nh ton b khng gian mn hnh khi lm vic vi Midnight Commander


b chim bi hai bng2 hin th danh sch tp tin ca hai th mc. pha trn
hai bng ny l trnh n (thc n). C th chuyn n trnh n chn cc
lnh c trong bng phm <F9> hoc nh phm chut (nu nh sau khi khi
1
Ngoi ra ngi dch cun sch ny cng dch giao din ca Midnight Commander ra ting
Vit. V th nu mun bn c th s dng giao din ting m ca Midnight Commander.
2
panel
130 S dng Midnight Commander

Hnh 6.2: V ngoi ca mn hnh Midnight Commander

ng mc bn c khng nhn thy dng trnh n u, th cng ng bun, v c


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

Ch mt trong hai bng l hin thi (hot ng). Bng hin thi c thanh
chiu sng tn th mc phn u v thanh chiu sng mt trong nhng dng
ca bng . Tng t, trong shell chy chng trnh Midnight Commander,
th mc hin thi l th mc c hin th trong bng hot ng. Hu ht cc
thao tc c thc hin trong th mc ny. Cc thao tc nh sao chp (<F5>)
hay di chuyn (<F6>) tp tin s dng th mc c hin th trong bng th hai
lm th mc ch n (s sao chp hay di chuyn n th mc ny).
Trong bng hot ng mt dng c chiu sng. Thanh chiu sng c th di
chuyn nh cc phm iu khin vic di chuyn. Chng trnh xem tp tin ni
tr, chng trnh xem li mch nc v chng trnh xem th mc s dng cng
mt m chng trnh iu khin vic di chuyn. V th vic di chuyn s dng
mt b cc t hp phm (nhng trong mi chng trnh con c cc t hp phm
ch p dng trong ni b m thi). Xin a ra mt bng ngn gn lit k cc t
hp phm dng chung iu khin vic di chuyn.

Bng 6.1: Cc t hp phm di chuyn dng chung


Phm Di chuyn thc hin
<> hoc <Ctrl>+<P> Di chuyn tr li (ln trn) mt dng
<> hoc <Ctrl>+<N> Di chuyn v pha trc (xung di) mt dng
<Page Up> hoc <Alt>+<V> Quay li mt trang
<Page Down> hoc <Ctrl>+<V> Tin v trc mt trang
<Home> Quay v dng u
<End> Chuyn n dng cui cng

6.3 Tr gip
Khi lm vic vi chng trnh Midnight Commander, c th xem tr gip vo bt
k lc no nh phm <F1>. Tr gip c t chc di dng siu vn bn, tc
l trong vn bn c c nhng lin kt n nhng phn khc. Nhng lin kt
c nh du bi nn mu xanh nht . Lin kt c chn hin thi s c nn
mu xanh m .
di chuyn trong ca s xem tr gip c th s dng nhng phm mi tn
hoc chut. Ngoi nhng t hp phm di chuyn ni chung trong bng 6.1, chng
trnh xem tr gip cn chp nhn nhng t hp phm s dng trong chng trnh
con dng xem tp tin:

Bng 6.2: Di chuyn trong trnh xem tp tin


Phm Di chuyn thc hin
<B> hoc <Ctrl>+<B> hoc <Ctrl>+<H> Li li mt trang
hoc <Backspace> hoc <Delete>
<Du cch> Tin ti mt trang
<U> ( <D> ) Li li (tin ti) na trang
<G> (<Shift>+<G>) i ti u (cui) danh sch
132 S dng Midnight Commander

Ngoi nhng t hp phm ch ra cn c th s dng nhng t hp ch lm


vic khi xem tr gip (chng c lit k trong bng 6.3).

Bng 6.3: Di chuyn khi xem tr gip


Phm Di chuyn thc hin
<Tab> i ti lin kt tip theo
<Alt>+<Tab> Quay li lin kt trc
<> i ti lin kt tip theo hoc ko ln mt dng
<> Quay li lin kt trc hoc ko xung mt dng
<> hoc <Enter> M trang m lin kt hin thi ch ti
<> hoc <L> M trang tr gip va xem trc trang hin thi
<F1> Tr gip s dng ca bn thn tr gip
<N> Chuyn ti phn tip theo ca tr gip
<P> Chuyn ti phn nm trc ca tr gip
<C> Chuyn ti mc lc ca tr gip
<F10>, <Esc> Thot khi tr gip

Bn c th s dng phm trng (space) chuyn ti trang tr gip tip theo


v phm <B> quay li mt trang. Chng trnh ghi nh th t di chuyn theo
lin kt v cho php tr li phn xem trc bng phm <L>.
Nu nh c h tr chut (xem phn 6.4), th c th s dng chut di chuyn.
Nhn chut tri ln lin kt chuyn ti vn bn m lin kt ny ch ti. Chut
phi s dng quay li phn xem trc .

6.4 S dng chut


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

chut ln khung nm di ca bng, th tng ng s thc hin di chuyn di 1


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

6.5 iu khin cc bng


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

6.5.1 Dng danh sch tp tin


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

Hnh 6.3: Hp thoi chn nh dng hin th

nh dng y (Full) hin th tn tp tin, kch thc ca n v thi


gian sa i gn nht.

nh dng Thu gn (Brief) ch hin th tn tp tin, do trn mi bng c


hai ct v hin th c s tp tin nhiu gp i.
134 S dng Midnight Commander

nh dng M rng (Long) hin th tp tin nh khi thc hin cu lnh


ls -l. Vi nh dng ny mt bng chim ht mn hnh.

Nu chn nh dng Ngi dng t xc nh (User), th ngi dng cn


a ra dng hin th t chn ca mnh.

Khi t a ra nh dng, th u tin cn ch ra kch thc ca bng: half


(mt na mn hnh) hoc full (ton mn hnh). Sau kch thc bng c th ch
ra l trn bng phi c hai ct bng cch thm s 2 vo dng nh dng. Tip
theo cn lit k tn nhng vng hin th cng vi chiu rng ca vng. C th s
dng nhng tn vng sau:

name tn tp tin.

size kch thc tp tin.

bsize kch thc dng khc, khi ch a ra kch thc tp tin, cn i


vi th mc con th ch a ra dng ch SUB-DIR hoc UPDIR.

type hin th dng tp tin (mt k t). K t ny c th l mt trong


nhng gi tr m cu lnh ls -F a ra:
* (asterisk) cho tp tin chng trnh.
/ (slash) cho th mc.
@ (at-sign) cho lin kt (links).
= (giu bng) cho cc sockets.
- (gch ngang) cho cc thit b trao i theo byte.
+ (du cng) cho cc thit b trao i theo block.
| (pipe, ng) cho cc tp tin dng FIFO.
(du sng) cho cc lin kt tng trng n th mc.
! (du chm than) cho cc lin kt tng trng hng (stalled) (lin
kt ch n tp tin khng cn na).

mtime thi gian sa i tp tin cui cng.

atime thi gian truy cp n tp tin ln cui.

ctime thi gian to tp tin.

perm dng ch ra quyn truy cp n tp tin.

mode quyn truy cp dng s 8bit.

nlink s lin kt n tp tin.

ngid ch s xc nh ca nhm (GID).

nuid ch s xc nh ca ngi dng (UID).

owner ch s hu tp tin.
6.5 iu khin cc bng 135

group nhm s hu tp tin.

inode ch mc inode ca tp tin.

ng thi cn c th s dng nhng tn vng sau t chc vic hin th


thng tin ra mn hnh:

space chn khong trng.

mark chn du sao * (asterisk) nu tp tin c chn, hoc khong trng


nu ngc li.

| chn ng thng ng.

c th xc nh chnh xc chiu rng ca mt vng, cn thm du hai


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

half type,name,|,size,|,mtime

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


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

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

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

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


cch:

Theo tn

Theo phn m rng

Theo kch thc tp tin

Theo thi gian sa i

Theo thi gian truy cp ln cui

Theo ch mc inode

Khng sp xp.

C th chn cch sp xp bng cch chn cu lnh Th t sp xp (Sort


order...) trong trnh n tng ng ca mi bng. Khi s hin ra mt hp
thoi (hnh 6.4) ngoi vic cho php chn cch sp xp cn cho php chn sp
xp theo th t ngc li (nh du tu chn Ngc li (Reverse)), hay sp xp
c tnh n kiu ch thng ch hoa hay khng (ty chn Tnh n kiu ch
(case sensitive)).
136 S dng Midnight Commander

Hnh 6.4: Hp thoi sp xp

Theo mc nh cc th mc con c hin th u danh sch, nhng cng


c th thay i nu nh du ty chn Trn ln tt c tp tin (Mix all files)
ca cu lnh Cu hnh... (Configuration...) thc n Cu hnh (Option). Ngi
dng cng c th chn ch hin th trn bng nhng tp tin tng ng vi mt
mu no . Cu lnh Lc tp tin... (Filter...) trong thc n ca mi bng cho
php a ra nhng mu m tn tp tin s hin th tng ng vi n (v d dng
mu *.tar.gz ch hin th nhng tp tin nn tar.gz). Tn ca th mc con
v ng dn n th mc con lun lun c hin th khng ph thuc vo mu
a ra. Trong thc n ca mi bng cn c cu lnh Qut li (Rescan) (tng
ng vi cu lnh Cp nht (Refresh) trong cc chng trnh khc). Cu lnh
Qut li (phm nng <Ctrl>+<R>) cp nht li danh sch tp tin hin th trn
bng. iu ny c ch khi nhng tin trnh khc to hay xa cc tp tin.

6.5.2 Nhng ch hin th khc


Ngoi vic a ra nh dng hin th danh sch tp tin trn bng, cn c th a
bt k bng no vo mt trong nhng ch sau:

Ch Thng tin (Info). Trong ch ny (hnh 6.5) trn bng a ra


thng tin v tp tin c chiu sng (c chn) trn bng bn cnh, v h
thng tp tin hin thi (dng, kch thc ch trng v tng s ch mc inode
cn trng).

Ch Cy th mc (Tree). Trong ch ny trn mt bng hin th cy


th mc dng ho (hnh 6.6). Ch ny tng t nh khi ngi
dng chn cu lnh Cy th mc (Directory Tree) t thc n Cu lnh
(Command), nh cu lnh sau hin th cy th mc mt ca s ring.

Ch Xem nhanh (Quick View). Trong ch ny bng s hin th ni


dung ca tp tin c chiu sng (c chn) trn bng bn cnh. V d trn
hnh 6.7 l khi dng ch ny xem nhanh ni dung tp tin HISTORY
ca gi chng trnh mediawiki.
6.5 iu khin cc bng 137

Hnh 6.5: Ch thng tin

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

Ch Kt ni FTP... (FTP link...) v Kt ni Shell... (Shell link...). Hai


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

6.5.3 Cc t hp phm iu khin bng


iu khin ch lm vic ca bng c th s dng cc cu lnh ca trnh
n ni ti trn, nhng s thun tin hn nu s dng cc t hp phm iu
khin.

<Tab> hoc <Ctrl>+<i>. Thay i bng hin thi (hot ng). Dng chiu
sng s chuyn t bng ang l hin thi sang bng khc v nh vy bng
sau s tr thnh hin thi.

<Alt>+<G> hoc <Alt>+<R> hoc <Alt>+<J>. S dng di chuyn dng


chiu sng tng ng ln tp tin trn u, nm gia hoc di cng trong
s nhng tp tin ang hin th (ang thy) trn bng.

<Alt>+<T>. Chuyn i vng quanh gia cc nh dng hin th danh sch


tp tin ca th mc hin thi. Nh t hp phm ny c th chuyn i nhanh
138 S dng Midnight Commander

Hnh 6.6: Ch cy th mc

chng t ch hin th M rng (long) sang Thu gn hay ch do ngi


dng xc nh.

<Ctrl>+<\>. Hin th danh sch th mc thng dng v chuyn ti th


mc la chn.

<Home> hoc <Alt>+<<>. Chuyn dng chiu sng ti v tr u tin ca


danh sch tp tin.

<End> hoc <Alt>+<>>. Chuyn dng chiu sng ti v tr cui cng ca


danh sch tp tin.

<Alt>+<O>. Nu trong bng hin thi tn th mc c chiu sng, cn


trn bng cn li hin th danh sch tp tin, th bng th hai s chuyn vo
ch hin th cc tp tin ca th mc c chiu sng. Nu trong bng
hin thi dng chiu sng l tn tp tin, th trn bng th hai s hin th
ni dung ca th mc m ca tp tin .

<Ctrl>+<PageUp>, <Ctrl>+<PageDown>. Ch khi mc c chy di knh


giao tc (console) ca Linux: thc hin tng ng vic chuyn (chdir) ti
th mc m (..) hoc ti th mc ang c chiu sng.

<Alt>+<Y>. Chuyn ti th mc ngay trc trong s nhng th mc


xem. Tng ng vi vic nhn chut ln k t < gc trn ca bng.

<Alt>+<U>. Chuyn ti th mc ngay sau trong s nhng th mc xem.


Tng ng vi vic nhn chut ln k t >.
6.6 Cc phm chc nng v thc n Tp tin 139

Hnh 6.7: Ch xem nhanh

6.6 Cc phm chc nng v thc n Tp tin


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

Bng 6.4: Cc phm chc nng


Phm F# Hnh ng thc hin
<F1> Gi tr gip ty thuc vo tnh hung
<F2> Gi thc n do ngi dng to ra
<F3> Xem tp tin t di dng chiu sng ca bng hin thi
<F4> Gi trnh son tho trong sa tp tin t di dng chiu
sng ca bng hin thi
<F5> Sao chp tp tin hay nhm tp tin c nh du t th
mc ca bng hin thi sang th mc ca bng cn li. Khi
sao chp mt tp tin th cn c th i tn ca tp tin ny3 .
ng thi trong hp thoi hin ra cn c th ch ra tn ca th
mc mun sao chp cc tp tin n ( khi cn c th sao chp
n th mc khc vi th mc hin ra trn bng th hai).
<F6> Di chuyn tp tin hay nhm tp tin c nh du t th
mc ca bng hin thi sang th mc ca bng cn li. Cng
ging nh khi sao chp, c th thay i tn ca tp tin hay th
mc di chuyn n.
<F7> To th mc con trong th mc hin th trn bng hin thi
<F8> Xa tp tin (th mc con) hay nhm cc tp tin nh du
<F9> Gi trnh n chnh (hin th pha trn cc bng)
<F10> Thot khi chng trnh

cc quy lut nh trong shell (xem chng 5. Cn nu tt ty chn ny, th s


nh du tp tin c thc hin theo quy lut ca cc biu thc chnh quy thng
thng (hy xem hng dn man ed).
Nu biu thc bt u hoc kt thc bng du gch cho (/), th s nh du
cc th mc ch khng phi tp tin.
Thao tc B chn (phm tt l phm du tr <> hoc gch cho ngc
<\>) l thao tc ngc li i vi thao tc chn nhm tp tin v s dng cng
cc quy lut vit mu nh khi chn. Thao tc ny dng b nh du khi
nhm tp tin chn. Cn thao tc Chn ngc li (phm <*>) dng b chn
nhng tp tin ang chn, ng thi chn nhng tp tin cn li ca th mc hin
thi.
Nu th mc hin thi c nhiu tp tin (do khng thy ht trn bng), th
trc khi nh du tp tin cn tm n tp tin . Trong nhng trng hp
cc t hp phm <Ctrl>+<S> v <Alt>+<S> s c ch. Sau khi nhn mt trong
nhng t hp phm ny th mc s chy ch tm kim tn tp tin trong th
mc hin thi theo nhng k t u tin ca tn. Trong ch ny nhng k t
nhp vo s khng hin th dng lnh m hin th dng tm kim. Nu ch
Hin trng thi mini (Show mini-status) c bt, th dng tm kim ny s
hin th trn ch ca dng trng thi mini. Khi ny trong qu trnh nhp k t,
dng chiu sng s di chuyn ti tp tin tip theo c tn bt u bng nhng k
t nhp vo. C th dng cc phm <Backspace> hoc <Del> sa li. Nu
nhn <Ctrl>+<S> thm mt ln na, th s tm kim tp tin tng ng tip theo.
Cn ch l nu trong th mc hin thi khng c tp tin vi tn tng ng, th
nhng k t nhp vo s khng hin th trn dng trng thi mini, tc l bn s
6.7 Mu tp tin khi sao chp hoc i tn 141

khng th tm thy tp tin mun tm.


Sau khi chn v nh du tp tin lm vic ch cn nhn mt trong cc
phm chc nng thc hin thao tc cn thit vi tp tin, v d, sao chp, di
chuyn hay xa. So vi dng lnh th cc thao tc xem v son tho tp tin trong
Midnight Commander thun tin hn, do trong Midnight Commander c tch
hp sn cc chng trnh cho nhng vic ny. Nhng trong phn ny chng ta s
khng xem n trnh son tho c sn, m dnh n chng ni v lm vic
vi cc tp tin vn bn.
Nh ni t trc, khng nht thit phi s dng cc phm chc nng
gi cc cu lnh tng ng vi chng. Bt k cu lnh no trong s ny cng c
th thc hin qua trnh n Tp tin (File). Ngoi cc cu lnh gn vi cc phm
chc nng, trnh n Tp tin cn cha cc cu lnh sau (trong ngoc l cc phm
tt tng ng).

chmod (<Ctrl>+<X>,<C>). Cho php thay i quyn truy cp n (cc) tp


tin c chn.

chown (<Ctrl>+<X>,<O>). Thay i ch s hu bng cu lnh chown.

chown nng cao. Cho php thay i quyn truy cp v s hu tp tin.

Lin kt cng (<Ctrl>+<X>,<L>). To lin kt cng n tp tin hin thi.

Lin kt mm (<Ctrl>+<X>,<S>). To lin kt mm n tp tin hin thi.


Chng trnh Midnight Commander cho bit lin kt mm bng k hiu
@ ng trc tn ca lin kt (tr lin kt n th mc con c nh
du bi du sng ). Nu trn mn hnh c a ra dng trng thi mini
(dng ty chn Hin trng thi mini), th trn dng ny s hin ln tn
ca tp tin m lin kt ch n.

cd nhanh (<Alt>+<C>). Hy s dng cu lnh ny nu bit ng dn y


n th mc bn cn (v mun chuyn thnh th mc hin thi).

Xem kt qu lnh (<Alt>+<!>). Khi chy cu lnh ny trn mn hnh s


hin ra dng cho php nhp bt k cu lnh no cng vi tham s ca
n (theo mc nh tham s s l tp tin ang c chiu sng). Kt qu
thc hin lnh s hin ra trn mn hnh trong xem c sn ca Midnight
Commander.

Nh bn thy, trnh n Tp tin (File) c cha nhng cu lnh thng


dng nht, cn thit cho ngi dng trong nhng thao tc c bn vi tp tin ca
th mc hin thi. Tt nhin l nhng thao tc thng dng c gn vi cc
phm chc nng. Do , chng ta s xem xt li cc cu lnh ny hiu r hn
v chng. u tin l cu lnh sao chp v i tn.

6.7 Mu tp tin khi sao chp hoc i tn


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

hin vic ny ngi dng cn a ra mu cho tn ca cc tp tin gc (gi l mu


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

Hnh 6.8: Hp thoi i tn tp tin

Tt c cc tp tin tho mn mu gc s c i tn (sao chp hoc di chuyn


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

nh hng n qu trnh sao chp v di chuyn tp tin cn c ty chn Mu


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

6.8 Thng bo khi sao chp v di chuyn tp tin


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

tng ci, ca nhng tp tin nh du. Thanh th ba (bytes bar) cho bit phn
trm dung lng tnh theo byte lm xong. Nu tt i tu chn Thao tc vi
thng tin di dng (xem Cu hnh / Cu hnh...), th hai thanh biu cui
s khng c hin th.
phn di ca hp thoi ny c hai nt. Nhn nt B qua s dn n vic
b qua thao tc vi tp tin ny v tip tc thao tc tp tin sau nu c. Nhn nt
Dng s kt thc thao tc, tt c nhng tp tin cn li s b b qua.
Trong qu trnh thc hin cc thao tc vi tp tin ngi dng c th nhn
thy 3 dng ca s na.

1. Ca s li a ra thng tin v li v ngh ba cch gii quyt. Thng


thng ngi dng chn B qua khng thc hin thao tc vi tp tin
ang c vn , hoc Dng khng thc hin hon ton thao tc a ra.
Phng n th ba l Th li. Chn phng n ny nu ngi dng sa
c li (v d, bng trnh lnh terminal khc).

2. Ca s hi li xut hin khi ngi dng ang thc hin thao tc dn n


vic ghi chn ln tp tin c, tc l trong th mc sao chp hay di chuyn
n c tp tin cng tn. Trong ca s hi li s hin ra thi gian to ra
v kch thc ca tp tin ngun (ang c sao chp hay di chuyn) v ca
tp tin ch (s b hu b nu ghi chn).

Hnh 6.9: Ca s hi li

Di y a ra hai cu hi li 6.9. Cu hi th nht Ghi ln tp tin


ny c ba cch tr li:

ng (nt C)
T chi, khng ghi chn (nt Khng)
Ghi thm ni dung ca tp tin ang sao chp vo cui tp tin c
(nt Thm vo cui)
6.9 Dng lnh ca h v 145

Cn tr li cho cu hi th hai Ghi ln mi tp tin ch? chng ta c


4 cch. Cch gii quyt c dng s lm vic vi tt c cc tp tin chn,
o ca s hi li s khng hin ra mi ln c tp tin trng tn:

Tt c ghi chn tt c cc tp tin chn, khng hi li.


Cp nht ch ghi chn (ng n) nhng tp tin c to ra trc
tp tin ngun.
Khng khng ghi chn cc tp tin (nu khng c tp tin ch, th s
thc hin sao chp).
Nu kch thc khc nhau ch ghi chn nu kch thc cc tp tin
khc nhau.

Ngi dng cng c th dng thc hin thao tc nu nhn nt Dng cui
ca s hi li. La chn nt mun nhn bng cc phm mi tn hoc phm
<Tab>.

3. Ca s yu cu xa ton b ( 6.10) xut hin khi ngi dng ang thc


hin thao tc xa mt th mc khng rng. Nhn nt C xa th mc
cng vi tt c cc tp tin ca n, Khng khng xa th mc ny, chn
Tt c nu bn nh du nhiu th mc v tin tng l mnh ng,
Khng b qua, khng xa nhng th mc khng rng trong s chn,
Dng c ngha l khng thc hin thao tc xa na. Ch chn C hoc Tt
c khi bn thc s tin tng l mnh mun xa th mc cng vi ton b
cc th mc con ca n.

Hnh 6.10: Ca s yu cu

Nu nh du nhm cc tp tin thao tc, th sau khi thc hin s b


nh du khi nhng tp tin thao tc thnh cng. Nhng tp tin b b qua,
tc l khng thao tc, s vn c nh du nh c.

6.9 Dng lnh ca h v


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

trnh tng ng hoc chn chng trnh trong bng hin thi (a dng chiu
sng ln tn tp tin chng trnh), sau g phm <Enter>. Nu ngi dng
nhn phm <Enter> khi dng chiu sng nm trn tn tp tin khng phi l
chng trnh, th Midnight Commander s so snh phn m rng ca tp tin
ny vi phn m rng c trong tp tin cc phn m rng ~/mc.ext. Nu trong
tp tin mc.ext c mt phn nh ch ra thao tc lm vic vi nhng tp tin c
phn m rng nh tp tin chn, th s thc hin nhng cu lnh t trong
phn nh ny. Trc khi chy cc lnh c thc hin nhng s thay th macro n
gin.
Thng thng vic nhp cc cu lnh i hi phi g rt nhiu cc k t, c
bit trong trng hp phi ch ra cc tham s ca cu lnh, trong s c ng
dn y cng vi tn ca tp tin cn lm vic. gip nhp cu lnh d dng
hn trong Midnight Commander c mt vi t hp phm cho php gim s ln g
bn phm trong thi gian nhp v sa i cu lnh trn dng lnh.

<Alt>+<Enter>. Sao chp tn ca tp tin hay th mc ang c chiu sng


vo dng lnh.

<Ctrl>+<Enter>. Cng nh <Alt>+<Enter>.

<Alt>+<Tab>. Thc hin thao tc t ng in thm4 tn tp tin, tn cu


lnh, tn ngi dng hay tn my (ty theo nhng g ngi dng g v
phn no ca cu lnh ang c nhp vo), tc l Midnight Commander
s on nhng k t m ngi dng cn cha nhp vo da trn danh sch
tp tin ca th mc hin thi, danh sch cu lnh, v.v. . . Tuy nhin nu bn
lm vic trong giao din ho, v d trong mi trng KDE th rt c th
s khng dng c t hp phm ny, do mi trng lm vic dng n
cho thao tc khc (trong trng hp KDE th l chuyn gia cc ca s).
Tt nhin bn c th thay i cu hnh ca mi trng lm vic, nhng
l mt cu chuyn khc.

<Ctrl>+<X>, <T>. Sao chp vo dng lnh tn ca cc tp tin c nh


du trong bng hin thi, hoc tn ca tp tin ang c chiu sng nu
khng c tp tin no c nh du.

<Ctrl>+<X>, <Ctrl>+<T>. Sao chp vo dng lnh tn ca cc tp tin c


nh du trong bng khng phi hin thi.

<Ctrl>+<X>,<P>. Sao chp vo dng lnh tn ca th mc hin thi, tc l


tn ca th mc ang c hin th trn bng hin thi.

<Ctrl>+<X>, <Ctrl>+<P>. Sao chp vo dng lnh tn ca th mc ang


hin th trn bng khng phi hin thi.

<Ctrl>+<Q>. Chn nhng k t c chng trnh Midnight Commander


bin dch theo mt cch no (v d k t +).

<Alt>+<P>. Quay ngc li mt cu lnh theo danh sch nhng lnh


chy (lch s lnh).
4
autocompletion
6.10 Trnh n Cu lnh 147

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


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

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

6.10 Trnh n Cu lnh


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

Bng 6.5: Cc lnh iu khin dng nhp vo


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

Nhng phm dng di chuyn lit k trong bng 6.1

<Enter>. Nhn phm ny trong ca s xem cy th mc thot khi ch


xem v hin th danh sch tp tin ca th mc chn trong bng hin
thi. Khi hin th cy th mc trn mt bng th nhn phm <Enter> s
hin th th mc tng ng ln bng th hai, cn trn bng hin thi s l
cy th mc.

<Ctrl>+<R> hoc <F2>. c li ni dung ca th mc (cp nht, refresh).


S dng trong trng hp khi cy th mc c hin th khng tng ng
vi cu trc tht s ca n: mt s th mc con khng c hin th hoc
hin th c nhng th mc con b xa.

<F3>. Xa th mc hin thi ra khi cy th mc. Cu lnh ny ch s dng


xa nhng nhnh cy hin th khng ng. Nu ngi dng xa th mc
c trn a th s hin ra mt thng bo li. V th khi xem cy th mc th
dng di cng (cho bit chc nng ca cc phm F) cho bit phm <F3>
c chc nng Qun.
6.10 Trnh n Cu lnh 149

<F4> (Static/Dynamic). Chuyn i gia hai ch di chuyn trong cy th


mc tnh (dng theo mc nh) v ng.

<F5>. Sao chp th mc con (cn ch ra th mc mun sao chp ti trong


dng nhp vo hin ra).

<F6>. Di chuyn th mc.

<F7>. To th mc con trong th mc hin thi.

<F8>. Xa th mc t di dng chiu sng ra khi h thng tp tin.

<Ctrl>+<S> hoc <Alt>+<S>. Tm th mc tip theo tng ng vi mu


a ra. Nu khng c th mc , th s chuyn dng chiu sng xung
di mt dng.

<Ctrl>+<H> hoc <Backspace>. Xa k t cui cng trong dng (mu) tm


kim.

<Bt k k t no khc>. Thm k t ny vo mu tm kim v di chuyn


dng chiu sng n tn ca th mc tip theo tho mn mu ny. Trong
ch xem cy th mc th u tin cn chy ch tm kim bng t hp
<Ctrl>+<S>. Mu tm kim s c hin th trn dng trng thi mini (nu
c).

Hnh ng sau ch c th thc hin trong ca s ang hin th cy th mc:


<F1> (Help) Gi tr gip v hin th phn tr gip v ca s cy th mc.
C th s dng chut trong ca s xem cy th mc. Nhn p chut c tc
dng nh khi nhn phm <Enter>.
Cu lnh Tm tp tin (phm nng <Meta>+<?> hoc <Esc>,<?>) ca trnh
n Cu lnh cho php ngi dng tm trn a tp tin c tn a ra. Sau khi
chn cu lnh ny s hin ra mt hp thoi hi th mc bt u tm kim,
tn tp tin mun tm (xem hnh 6.12). Ngi dng c th chn th mc bt u
tm kim trong cy th mc hin ra khi nhn nt Cy th mc ca hp thoi.
Trong Ni dung (Contents) c th a ra cc biu thc chnh quy theo cc quy
lut ca lnh egrep. C ngha l ng trc nhng k t c ngha c bit
i vi egrep cn t k t \. V d, nu mun tm dng strcmp (, th ngi
dng cn nhp vo Ni dung dng strcmp \. bt u tm kim, nhn
vo nt ng . Trong thi gian tm kim c th tm dng bng nt Hon v
tip tc bng nt Tip tc (hnh 6.13).
C th xem danh sch nhng tp tin tm thy bng cc phm <> v <>.
Nt Chuyn th mc dng chuyn ti th mc c cha tp tin ang c
chiu sng. Nt Lp li dng nhp vo cc tham s cho tm kim mi. Nt
Thot dng thot khi ch tm kim. Nhn nt Bng s hin th kt qu
tm kim ln bng hin thi ngi dng c th thc hin cc thao tc khc
vi nhng tp tin chn (xem, sao chp, di chuyn, xa, v.v. . . ). Sau khi a ra
bng c th nhn <Ctrl>+<R> tr li danh sch tp tin thng thng.
Ngoi ra, cn c kh nng a ra danh sch nhng th mc m cu lnh
Tm tp tin s b qua trong khi tm kim (v d, nu ngi dng bit l tp
tin ang tm khng c trn CD hay khng mun tm kim trong nhng th mc
150 S dng Midnight Commander

Hnh 6.12: Bt u tm kim

Hnh 6.13: ang tm kim

kt ni qua NFS qua ng truyn rt chm). Cn phi ch ra nhng th mc


mun b qua ny bng bin find_ignore_dirs trong phn Misc ca tp tin
~/.mc/ini. Tn th mc cch nhau bi du hai chm nh sau:

[Misc]
find_ignore_dirs=/cdrom:/nfs/wuarchive:/afs

Bn c th s dng vic a kt qu lnh ln trn bng (c thm Bng


ngoi di) thc hin nhng hnh ng tip ni nhau phc tp hn, cn
Tm kim tp tin ch cho php thc hin nhng yu cu n gin.
Cu lnh i ch hai bng (<Ctrl>+<U>) i ch ni dung ca bng tri
v bng phi. Cu lnh Bt/tt bng (<Ctrl>+<O>) n i hai bng ca mc v
hin th kt qu lm vic ca cc lnh shell. m li cc bng mc cng dng
lnh (phm nng) ny. Lnh ny lm vic trn xterm v di console ca Linux.
Cu lnh So snh th mc (<Ctrl-X>,<D>) so snh ni dung ca cc th mc
ang c hin th trn bng tri v bng phi. C ba phng php so snh. Nu
dng phng php nhanh th ch so snh kch thc v thi gian to cc tp tin
6.10 Trnh n Cu lnh 151

c cng tn. Kt qu l trong c hai th mc s chiu sng nhng tp tin khng


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

Hnh 6.14: Tm kim tt c cc lin kt mm

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

Cn c th truy cp vo danh sch lch s cu lnh bng cc phm <Alt>+<P>


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

Hnh 6.15: Hp thoi danh sch th mc thng dng

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

Hnh 6.16: iu khin cng vic nn sau

ca h thng, c th l /usr/share/mc/mc.menu. Tt nhin trong trng hp


cui cng bn cn c quyn ghi ln tp tin tng ng.

6.11 Cu hnh Midnight Commander


Chng trnh Midnight Commander c nhiu cu hnh (ty chn). Mi ty chn
c th c dng hoc khng. Vic dng hay khng dng ty chn c thc hin
qua cc ca s hi thoi ca trnh n Cu hnh. Ty chn c dng nu c
du x hoc du sao * (t vo bng phm trng) trong ngoc vung ng
trc tn ca ty chn. By gi chng ta xem xt tng cu lnh ca trnh n
Cu hnh bit c th dng hoc khng dng nhng ty chn no.
Cu lnh u tin l Cu hnh. Khi chn cu lnh ny s hin ra mt hp
thoi nh trong hnh 6.17. Nhng tham s cu hnh trong hp thoi ny chia
thnh ba nhm: Cu hnh bng, Tm ngng sau khi chy... v Cu hnh
khc.
Trong vng Cu hnh bng, ngi dng c th a ra gi tr ca cc tham
s sau:

Hin th tp tin sao lu. Theo mc nh chng trnh Midnight Com-


mander khng hin th nhng tp tin c tn kt thc bng (ging nh
ty chn -B ca lnh ls).

Hin th tp tin n. Theo mc nh Midnight Commander hin th tt c


cc tp tin, trong c nhng tp tin c tn bt u bng u chm (ging
nh ls-a).

Nhn di chuyn xung. Khi ngi dng nh du tp tin (bng t hp


phm <Ctrl>+<T> hoc <Insert>), th theo mc nh dng chiu sng tn
tp tin s di chuyn xung di mt dng.

y xung trnh n. Nu ty chn ny c dng, th khi gi trnh n


chnh bng phm <F9> s hin th ngay lp tc danh sch cc cu lnh ca
154 S dng Midnight Commander

Hnh 6.17: Cu hnh Midnight Commander

trnh n (Trnh n y xung). Trong trng hp ngc li, phm <F9>


ch a ngi dng vo trnh n chnh v ngi dng phi t chn trnh
n tng ng bng cc phm mi tn v dng phm <Enter> hoc ch ci
u tin ca trnh n m (y xung) trnh n . V d, bn mun
m trnh n Tp tin, th u tin cn nhn phm <F9> ri dng phm
mi tn sang phi ri nhn phm <Enter>, hoc nhn phm <F9> ri nhn
phm <T>.

Trn ln tt c tp tin. Nu dng ty chn ny, th s hin th khng


phn bit tp tin v th mc. Nu ty chn khng c dng th th mc
(v ng dn n th mc) s c hin th u danh sch, cn tn tp
tin sau tn ca tt c cc th mc.

Np nhanh th mc. Theo mc nh ty chn ny khng c dng. Nu


bn bt dng ty chn ny, th Midnight Commander s s dng cch (mo)
sau hin th ni dung th mc: ch c li ni dung ca th mc trong
trng hp thay i bn ghi inode ca th mc, tc l nu trong th mc
to hoc xo i tp tin (th mc) no ; nu ch thay i bn ghi inode
ca cc tp tin ca th mc ny ( thay i kch thc tp tin, quyn truy
cp hoc ch s hu v.v. . . ) th s khng cp nht li ni dung ca th mc
. Trong trng hp (nu ty chn ny c dng), th bn cn phi t
cp nht li danh sch tp tin bng t hp phm <Ctrl>+<R>.
Vng Tm ngng sau khi chy.... Sau khi thc hin cc cu lnh Midnight
Commander c th tm ngng mt cht ngi dng c th xem v nghin cu
kt qu lm vic ca nhng lnh ny. y c ba ty chn:
Khng bao gi. C ngha l ngi dng khng mun xem kt qu lm vic
ca lnh. Trn cc knh giao tc Linux hoc khi dng xterm ngi dng
cn c th xem kt qu ny bng t hp phm <Ctrl>+<O>.
6.11 Cu hnh Midnight Commander 155

Trn nhng terminal ngu. S tm ngng trn nhng terminal khng


c kh nng hin th kt qu lm vic ca lnh thc hin cui cng.

Lun lun. Chng trnh Midnight Commander lun lun tm ngng sau
khi thc hin bt k lnh no.

Trong vng Cu hnh khc ngi dng c th t ra cc tham s sau:

Thao tc vi thng bo di dng (Verbose operation). Ty chn ny xc


nh c hin th hay khng cc ca s ph khi thc hin cc thao tc sao
chp, di chuyn v xa. Nu bn ang dng mt terminal chm th khng
nn dng ty chn ny. Ty chn ny cng t ng khng c dng nu
tc lm vic ca terminal nh hn 9600 bps.

Tnh tng kch thc (Compute totals). Nu ty chn ny c dng, th


trc khi thc hin cc thao tc sao chp, di chuyn, xa Midnight Com-
mander s tnh tng s tp tin v tng kch thc ca chng ng thi hin
th qu trnh thao tc vi nhng tp tin ny dng cc dng biu (tuy
nhin, tnh nng ny s lm chm qu trnh mt cht). Ty chn ny khng
lm vic, nu khng dng ty chn Thao tc vi thng bo di dng
trn.

Mu dng shell (Shell Patterns). Theo mc nh cc lnh chn (select) v


b chn (unselect) nhm tp tin v hin th tp tin theo b lc (Filter) s
dng cc biu thc chnh quy ging nh trong h v shell. c th t
c kt qu nh trong shell, th chng trnh thc hin nhng bin i
sau: thay th * bng .* (khng hoc vi k t); thay th ? bng . (chnh
xc mt k t) v thay th . bng mt du chm thng thng (literal dot).
Nu ty chn ny khng c dng, th cn dng biu thc chnh quy theo
cc lut vit trong man 1 ed.

T ng ghi nh cu hnh. Nu dng ty chn ny, th khi thot khi


chng trnh Midnight Commander, gi tr ca cc tham s thit lp s
c lu vo tp tin ~/.mc/ini.

Trnh n t ng. Nu dng ty chn ny, th trnh n ca ngi dng


s t ng hin th ln mn hnh mi khi chy chng trnh. Tnh nng ny
c ch khi trn my lm vic ngi dng c t kinh nghim (ngi thao tc)
v ch thc hin nhng thao tc n gin.

S dng son tho ni b. Nu dng ty chn ny, th son tho cc


tp tin Midnight Commander s dng trnh son tho ca mnh (mcedit).
Nu khng dng ty chn ny th Midnight Commander s gi trnh son
tho c ch ra trong bin mi trng EDITOR. Nu khng t bin ny th
s dng vi.

Trnh xem ni b. Nu dng ty chn ny, th Midnight Commander s


s dng chng trnh xem tp tin ca mnh khi xem tp tin. Nu khng
dng ty chn ny, th s gi chng trnh ch ra trong bin PAGER. Nu
khng ch ra bin ny th s dng lnh view.
156 S dng Midnight Commander

T ng hon thnh: hin tt c. Trong qu trnh nhp lnh Midnight


Commander c th t ng hon thnh cu lnh , tc l th on phn
cn li ca cu lnh ang nhp, khi nhn phm <Alt>+<Tab>. Theo mc
nh khi nhn <Alt>+<Tab> th nht chng trnh s tm tt c nhng
phng n hon thnh, v nu nh c nhiu phng n th chng trnh s
to ra tip bp. Khi nhn t hp phm <Alt>+<Tab> ln th hai s hin th
tt c cc kh nng hon thnh. Nu mun thy cc phng n hon thnh
ngay sau ln nhn <Alt>+<Tab> u tin th hy bt dng ty chn ny.

Ci ch quay. Nu dng ty chn ny, th Midnight Commander hin th


gc trn bn phi vch quay dng lm ch th cho bit chng trnh ang
thc hin cng vic (thao tc) no .

Di chuyn ging trong Lynx. Nu dng ty chn ny, ngi dng c kh


nng dng cc phm <> chuyn vo th mc ang c chiu sng v
<> chuyn ln th mc m ca th mc hin thi (vi iu kin l
dng lnh trng). Theo mc nh ty chn ny khng c dng.

cd theo lin kt. Dng ty chn ny th Midnight Commander s tun


theo chui cc th mc con lgc khi thay i th mc theo lin kt, ging
nh khi dng lnh cd. Theo mc nh bash cng lm vic nh vy. Nu
khng dng ty chn ny th Midnight Commander s chuyn th mc
theo cu trc tht s ca cc th mc. Tc l nu ngi dng vo th mc
hin thi theo lin kt n n, th lnh cd .. s a ngi dng vo th
mc m ca th mc hin thi, ch khng phi vo th mc cha lin kt.

Xa mt cch an ton. Dng ty chn ny s ngn chn c phn no


vic xa tp tin mt cch v tnh. Nu dng ty chn, th trong hp thoi
hi li vic xa tp tin theo mc nh nt c chn s chuyn t C sang
Khng. Theo mc nh ty chn ny khng c dng.

Cu lnh th hai l V ngoi, cho php thay i mt s tham s hin th ca


s chnh ca chng trnh Midnight Commander trn mn hnh (xem hnh 6.18).

Bn c th hin th hoc khng hin th dng trnh n chnh trn u mn


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

Hnh 6.18: Thay i v ngoi ca Midnight Commander

ca mi bng s c mt dng cho bit thng tin v tp tin ang c chiu sng
hoc th mc hin thi.
Trong hp thoi Bt hin th (hnh 6.19), ngi dng ch ra nh dng ter-
minal s s dng x l (nhp vo v hin th trn mn hnh) thng tin dng
cc byte, v d, thng tin trong cc tp tin.

Hnh 6.19: Thay i bit hin th ca Midnight Commander

Bit (bng m) c chn s c hin th trong hp thoi ny, trong trng


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

Hnh 6.20: Thit lp cc hp thoi hi li ngi dng

bng vi tn ca cc phm c th th. Bn c th di chuyn dng chiu sng qua


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

Hnh 6.21: Th v cu hnh cc phm

th mt phm cn nhn tng phm trong bng. Nu n lm vic bnh


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

hon thnh vic th nghim v cu hnh tt c cc phm, ngi dng c th chn


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

Hnh 6.22: Thit lp h thng tp tin o

Cu lnh Ghi nh cu hnh lu tt c nhng gi tr chn vo tp tin ini


ca chng trnh.

6.12 Kt ni ti my xa
6.12.1 Kt ni FTP
Chng trnh Midnight Commander s dng H thng tp tin FTP (ftpfs)
cho php ngi dng iu khin cc tp tin xa qua giao thc FTP. s dng
c tnh nng ny bn c th dng cu lnh Kt ni FTP ca trnh n Bng
tri hoc Bng phi tng ng hoc dng cu lnh cd chuyn ti th mc
c ng dn dng nh sau:

/#ftp:[!][user[:pass]@]machine[:port][remote-dir]

Cc thnh phn user, port v remote-dir l khng bt buc. Nu ngi


dng a ra user, th Midnight Commander s ng nhp vo my xa vi tn
ngi dng , nu khng s dng ng nhp anonymous (ng nhp chung)
hoc dng tn ng nhp c trong tp tin ~/.netrc. Thnh phn pass l mt
khu dng kt ni, ch cn thit nu c thnh phn user. Khng nn a
thng mt khu vo ng dn ti th mc ca ftpfs, v bt k ai cng c th
thy mt khu ny trn mn hnh, v mt khu s c lu dng vn bn thng
160 S dng Midnight Commander

thng trong lch s cc th mc thm. Chng trnh Midnight Commander


s t ng hi mt khu trong trng hp khng c thnh phn pass v c tn
ngi dng (c user).
s dng FTP proxy, hy thm mt du chm than (!) vo pha trc tn
my.
V d:

/#ftp:192.168.10.128/linux/SuSE
/#ftp:people.vnoss.org/public/wiki
/#ftp:!people.vnoss.org/public/wiki
/#ftp:teppi@people.vnoss.org:67/public/wiki
/#ftp:teppi:abcdef@people.vnoss.org/public/wiki

Hp thoi ca cu lnh Kt ni FTP c dng nh trong hnh 6.11. Trong


tn my ngi dng cn nhp tt c cc thnh phn ca ng dn ti ftpfs nh
trn tr phn u (/#ftp:).
V d:

192.168.10.128/linux/SuSE
people.vnoss.org/public/wiki
!people.vnoss.org/public/wiki
teppi@people.vnoss.org:67/public/wiki
teppi:abcdef@people.vnoss.org/public/wiki

y bn c cng c th s dng lch s (phm <Alt>+<H>).


thay i cc ty chn ca ftpfs chng ta cn dng cu lnh FS o ca
trnh n Cu hnh (xem hnh 6.22).

6.12.2 Kt ni Shell
Ngoi FTP trong cc phin bn mi ca mnh chng trnh Midnight Comman-
der cn h tr giao thc SSH v truyn ti tp tin qua H thng tp tin shell
(file transfer over shell filesystem). H thng tp tin fish l h thng tp tin da
trn mng my tnh, n cho php ngi dng iu khin tp tin trn cc my
xa ging nh khi chng nm trn my ca mnh. s dng tnh nng ny, trn
my xa phi c chy my ch fish hoc c mt h v shell tng thch vi bash.
kt ni ti my xa, bn c th dng cu lnh Kt ni Shell ca trnh
n Bng tri hoc Bng phi tng ng hoc dng cu lnh cd chuyn ti
th mc c bit c tn dng nh sau:

/#sh:[user@]machine[:options]/[remote-dir]

Cc thnh phn user, options v remote-dir l khng bt buc. Nu ngi


dng a ra user, th Midnight Commander s ng nhp vo my xa vi tn
ngi dng , nu khng s dng tn ngi dng ca bn. Cc ty chn options
c th l C nn thng tin truyn ti v rsh dng rsh thay cho ssh. Nu c
thnh phn remote-dir th sau khi kt ni th mc hin thi trn my xa s
l th mc ny.
V d:
6.12 Kt ni ti my xa 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 vng rng nhng thng tin trong chng ny c th gip bn bt


u lm vic vi chng trnh Midnight Commander. Tuy nhin kh nng ca
chng trnh ny cn rng hn so vi nhng g cp n y. Cc bn c th
c thm tr gip ca chng trnh ny mi khi cn bng phm <F1>.
Ghi ch:

Bn dch ting Vit cho giao din ca Midnight Commander i km vi chng


trnh c th khng phi l bn dch mi nht. Bn lun lun c th ly bn
dch mi nht v t kho CVS ca Midnight Commander (tp tin vi.po trong th
mc po) hoc t http://cvs.savannah.gnu.org/viewcvs/*checkout*/mc/
mc/po/vi.po.
Cch cp nht mt bn dch giao din cho h thng s cp n trong chng ni
v ting Vit trn Linux hoc nu mun bn c th c trong bn tin s 3 VnOSS
c trn http://vnoss.org (tp tin bantin-so3-092006.pdf).
Chng 7

Giao din ho

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

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

vi b x l 80386/80486/Pentium. XFree86 c mt nhm cc nh lp trnh to


ra, ngi khi u nhm ny l David Wexelblat. XFree86 c s dng khng
ch trn Linux m cn trn cc h thng System V/386, 386BSD, FreeBSD v cc
phin bn UNIX khc cho Intel x86. Tuy nhin cch y mt thi gian (cui nm
2003 u nm 2004), cc phin bn Linux ng lot chuyn sang mt bn
X khc da trn tiu chun X Window System (do c vn vi bn quynca
XFree86 phin bn 4.4.0) l XOrg, mt nhnh pht trin mi ca XFree86.
XOrg do t chc cng tn X.Org Foundation cung cp dng ng dng m
ngun m ca X Window System. Qu trnh pht trin XOrg hin ang l mt
phn ca cng ng freedesktop.org. Phn ln cc nh pht trin, nh phn
phi v nh cung cp phn cng ca d n XFree86 trc y ngng tham
gia XFree86 v chuyn sn phm ca mnh gia nhp vo X.org Foundation. Do
i khi chng ta khng thy c s khc nhau v c bn. Hin thi X.Org
Foudation l mt cng ty khoa hc vi ban lnh o bao gm nhng guru1 hng
u trong th gii m ngun m:

Stuart Anderson (Free Standards Group),

Egbert Eich (SuSE),

Jim Gettys (HP),

Stuart Kreitman (SUN),

Kevin Martin (Red Hat),

Jim McQuillan (Linux Terminal Server Project),

Keith Packard (HP),

Leon Shiman (Shiman Associates).

Nu mun bn c th tm hiu thm v t chc X.Org trn trang web chnh ca


t chc ti a ch http://x.org. Cn by gi chng ta s ni i dng v cch
t chc lm vic giao din phn mm da trn tiu chun X Window System.
H thng X Window c xy dng trn c s m hnh ch/khch (thut ng
ting Anh hay c dng hn trong giao tip: server/client) thng gp trong th
gii vi tnh hin nay. Tuy nhin m hnh ny trong trng hp X Window c
dng dng quay ngc li 180 . Ni nh vy l v chng trnh my ch (xin
c gi tt l chng trnh ch) X lm vic trn my tnh ca ngi dng (v
hin th hnh nh trn mn hnh my tnh) ch khng phi trn mt my (ch)
no xa. Chng trnh ch X lm vic trc tip vi phn cng: vi h thng vi-
- (cc hnh,. . . ), vi cc thit b nhp vo (bn phm, chut,. . . ) v m thanh.
Rt c th i vi mt s bn c s d hiu hn nu coi chng trnh ny l mt
driver ca h thng hnh nh, chuyn iu khin h thng ny. Chng trnh ch
X chim lnh tt c cc thit b phn cng v cung cp cc kh nng ca thit b
cho cc chng trnh khc dng ti nguyn ring2 theo mt giao thc (protocol)
1
nhng ngi c kinh nghim lm vic nhiu nm
2
chnh v th m chng trnh X c coi l ch
164 Giao din ho

c bit, gi l giao thc X hay giao thc kt ni mng X (X Network Protocol).


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

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

Khi mt ng dng X khi ng, ca s s chuyn quyn iu khin n trnh


qun l ca s. Trnh qun l ca s cung cp cc phng tin thc hin tt
c cc thao tc vi cc ca s, bao gm: v khung ngoi, trnh n (menu), cc
7.1 X.Org 165

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

ch X bng cu lnh:

[user]$ X

Trnh qun l ca s th c rt nhiu, bn c c th chn bt k chng trnh


no trong s chng. La chn trnh qun l ca s no ph thuc nhiu vo cu
hnh my tnh ca bn (my mnh hay yu, cc mn hnh c nhiu b nh
hay khng), v yu cu cng vic. Xin a ra y mt vi v d trnh qun l ca
s thng dng:

IceWM (http://www.icewm.org) trnh qun l ca s nh nh v lm


vic rt nhanh. Trnh qun l ca s ny ang c rt nhiu ngi dng
c kinh nghim a chung.

Fluxbox (http://www.fluxbox.org) mt trnh qun l ca s gn nh


khc, lm vic tng i nhanh v cng c ngi dng c kinh nghim
a chung. Chnh trnh qun l ca s ny c dng trn nhiu bn phn
phi Linux dng LiveCD (Linux sng v lm vic trn CD) nh: Damn
Small Linux, Insert.

WindowMaker (http://www.windowmaker.org) trnh qun l ca s


gn nh nhiu mu sc v mm do trong cu hnh k tha ca AfterStep.
Mt c im th v ca WindowMaker l cc trnh nh applet thc
hin nhiu chc nng khc nhau: theo di h thng, theo di mng, ng
h, v.v. . . Nu mun v c s h tr th bn c th s dng nhng trnh nh
applet ny trong cc trnh qun l ca s khc nh Fluxbox.

enlightment (http://www.enlightment.org) trnh qun l ca s p


nht hin nay, c rt nhiu ty chn cu hnh bn c th thay i.

fvwm2 (Free Virtual Window Manager 2) phin bn nng cp ca trnh


qun l ca s fvwm cho php s dng cc sc thi (theme) khc nhau v
trnh n ng. Trang ch ca FVWM v FVWM2 nm ti a ch http:
//fvwm.org/.

Cc trnh qun l ca s khc nhau c th cho ra dng ca s khc nhau bng


cch s dng cc khung v trnh n ca s khc nhau. Nhng tt c chng u
s dng cng mt tin ch ho c s ca X Window, l chng trnh ch X.
Nh vy l bn c bit c giao din ho trn Linux c to ra t
nhng thnh phn g. Nh bn thy giao din ho trn Linux c to ra theo
nguyn tc mun, v c th t xy dng nhiu kiu giao din ho t cc
thnh phn khc nhau. Nhng i vi ngi dng mi (v rt mi) th y khng
phi l cch d nht. Rt may l khng nht thit phi chn cch ny, v c
trn tt c cc bn phn phi ln cc mi trng lm vic ho. Ni ting nht
trong s cc mi trng ho ny cn k n KDE (http://www.kde.org)
m chng ta s nghin cu su hn trong chng sch tip theo v GNOME
(http://www.gnome.org). Ngoi ra cng cn ni n mi trng lm vic
ho gn nh hn v cng chim c s yu mn ca rt nhiu ngi dng, l
Xfce4 (http://www.xfce.org). Tt c nhng mi trng lm vic ho ny
7.2 Mt cht v h thng hnh nh ca my tnh 167

u c h tr ting Vit tt (hoc cn cha tt), do cng d dng hn (hoc


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

7.2 Mt cht v h thng hnh nh ca my tnh


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

v.v. . . c th chn cc tham s thch hp trong khi cu hnh.


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

tc l c s ph thuc vi phn gii (resolution) ca mn hnh. Trn thc t


tn s cp nht cn nh hn na v cn mt thi gian di chuyn cc tia electron
t dng ny sang dng khc, t cui mn hnh ln u mn hnh. Ngoi ra
to ra hnh nh sc nt trn mn hnh, tia electron cn di chuyn qu sang tri,
sang phi, ln cao, xung thp hn mt cht so vi hnh nh (to ra 4 dng v
ct ti xung quanh hnh nh). Cn ni thm tn s cp nht mn hnh bng tn
7.3 Cu hnh chng trnh ch X 169

s ng b dc (SRR = VSF). Nh vy, tn s ng b dc VSF v tn s lm vic


ca cc hnh DCF xc nh gi tr gii hn (ln nht) ca phn gii.
Cn c mt gii hn na ph thuc vo dung lng b nh ca cc hnh s
lng mu ca hnh nh. Trn cc mn hnh mu, mi im c chiu sng
ng thi bi 3 tia electron. Mu ca im c xc nh bi s pha trn ca
ba mu c bn: (Red), xanh l cy (Green) v xanh da tri (Blue) RGB.
Cng ca mi mu ny li c xc nh bi mc ca tn hiu trong tia
tng ng. Hnh nh s a ra mn hnh c to ra trong b nh ca cc hnh.
B nh ny nm trn cc hnh nhng thuc v khng gian b nh chung ca c
my tnh. Hnh nh c lu trong b nh dng s v s chuyn i hnh nh
v dng tn hiu tng t (analog) RGB l mt trong nhng cng vic chnh
ca cc hnh. Cng vic ny l do mt b phn trn cc hnh m nhim, l
b chuyn i s tng t. S lng mu c th dng cho mi im c gii
hn bi dung lng b nh cc hnh cng nh s mc tn hiu m cc hnh
c th to ra cho mi tia electron. Nhng thng thng cc hnh c th to ra
mt s lng mc tn hiu hin th hnh nh, do tham s quyt nh
y l dung lng b nh.
Cng thc xc nh gii hn phn gii v s lng mu trn hnh nh rt
n gin:
(Dung lng b nh, byte) (S im trn dng) * (s ct trn mn hnh)
* (s byte trn mt im)
V d, nu bn c mun chn phn gii mn hnh 1280 x 1024 v c 32 triu
mu cho mi im, tc l 8 byte cho mi im, th cn c mt cc hnh vi dung
lng b nh t nht l 1280 1024 4 = 10485760 byte (10Mb). Tt c nhng cc
hnh mi p ng c (thm ch cn vt qu) yu cu ny. Nu c mt cc hnh
c vi dung lng b nh t hn th cn phi chn phn gii nh hn hoc
chn s lng mu t hn. Ti ngh rng bn c th t la chn mt phn gii
v s lng mu thch hp cho my tnh ca mnh. Cn by gi chng ta s xem
xt phn thc hnh ca nhng l thuyt a ra, tc l cu hnh giao din ca
Linux.

7.3 Cu hnh chng trnh ch X


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

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

7.3.1 Thu thp thng tin cn thit


c th cu hnh bn cn mt vi d liu sau:

Tn ca hng sn xut cc hnh v mn hnh. Thng ly t ti liu i km


vi chng, nu khng c th cng c th xem trc tip trn thit b.

Dng ca b x l trn cc hnh (chp). Cn xc nh dng chp chn


mun ng cho cc hnh. V d, chp ca hng Nvidia thng cn np
mun nv.

Dung lng b nh ca cc hnh.

Khong tn s ng b ngang v dc cho php dng ca mn hnh. Ly t


ti liu i km vi mn hnh, nu khng c ti liu th bn cn tm nhng
thng tin ny trn Internet, d dng nht l trn trang web ca nh sn
xut. Hai tham s ny l quan trng.

Dng chut v bn phm. Lm vic trong giao din ho m khng c


chut th khng thun tin cht no, v nu khng bn phm th cng khng
th lm vic vi my tnh ni chung. V th cn phi cu hnh chng trnh
ch X s dng nhng thit b ny.

C nhiu cch ly nhng thng tin ny. Cch d dng nht cho ngi dng
mi l khi trn my c mt h iu hnh Windows. Nhng thng tin bn cn
c trong Trnh qun l cc thit b. Cch chy chng trnh ny khng thuc vo
phm vi ca cun sch ny v chng ta ang ni v h iu hnh Linux. Bn c
th tm thy thng tin trong bt k cun sch no ni v h iu hnh Windows.
Nu trn my ca bn cha c bt k h iu hnh no th hy s dng mt h
iu hnh Linux LiveCD (chy thng t CD) c kh nng nhn dng phn cng
tt nh Knoppix. Sau khi khi ng Knoppix thnh cng hy sao chp tp tin cu
hnh chng trnh ch X ca Knoppix (thng nm ti /etc/X11/xorg.conf
ln a mm hoc flash sau ny c th c li. V cch c thng tin t tp tin
cu hnh X.org (cu trc ca tp tin ny) chng ta s xem xt ngay di y.
Ngoi ra c nhng chng trnh chuyn dng cho vic ly cc d liu cn thit
k trn, v d bash script mkxf86config do cc nh pht trin Gentoo vit ra.
Bn c th tm thy script ny trn mng Internet. Tuy nhin ti hy vng l cc
bn s khng phi s dng n nhng tin ch ny cng nh nhng phng n
k trn (s dng h iu hnh khc, s dng Knoppix): tt c nhng thng tin
bn cn c trong ti liu i km vi my tnh.
7.3 Cu hnh chng trnh ch X 171

7.3.2 Cu trc ca tp tin cu hnh X


Tp tin cu hnh chng trnh ch X thng nm ti /etc/X11/xorg.conf.
Khi khi ng v nu khng ch r tp tin cu hnh trn dng lnh th chng
trnh ch X u tin s tm tp tin cu hnh ti th mc ca ngi dng, tc
l ti /xorg.conf. Nu khng thy tp tin ny th chng trnh ch X s dng
cu hnh chung ca ton b h thng nm trong th mc /etc nh ni trn
(nu c).
Tp tin cu hnh X ch l mt tp tin vn bn (text file) bnh thng, do
c th s dng bt k trnh son tho vn bn no thay i n. V y cng
chnh l cch cc nh qun tr h thng c kinh nghim s dng cu hnh giao
din ho. Tuy nhin, c nhng chng trnh, tin ch chuyn dng cho vic
ny, v chng ta s s dng chng trong thi gian u mi lm quen vi Linux.
Cng khng cn phi to tp tin xorg.conf t u. Nu trong khi ci t
bn c chn ci t giao din ho X th trn my c tp tin cha cu hnh
X ng (v c th khng). Nu v nguyn nhn no bn ci t X.org ring
sau khi ci t Linux, th hy chy mt trong nhng chng trnh cho php bn
to ra tp tin ny. to ra tp tin cu hnh X mt cch t ng hy s dng
chng trnh Xorg vi ty chn -configure. Ch cn chy cu lnh sau (hy
ch l cn c quyn ngi dng root:

[root]# Xorg -configure

Cu lnh ny s lm vic mt cch im lng, sau khi hon thnh n s to ra tp


tin xorg.conf v t tp tin ny vo th mc /etc/X11. Xin ng qun cu
lnh Xorg khc vi cu lnh xorg! Nh ni t trc trn Linux ch thng v
ch hoa c s khc nhau r rng.
Tuy nhin rt c th bn s mun t to cho mnh mt tp tin cu hnh ring,
hoc n gin l mun kim sot qu trnh ny. Trong XFree86 phin bn th
4, tin ch chnh dng t to mt tp tin cu hnh (XF86Config-4) l chng
trnh xf86config (i khi xf86cfg). Trong X.org chng trnh ny c
thay th bng xorgconfig. Trn thc t theo ti thy th hai chng trnh ny
khng c g khc nhau, ch c iu xorgconfig sau khi hon thnh cng vic s
to ra xorg.conf ch khng phi XF86Config-4 nh trng hp xf86config.
Trn dng lnh hy chy:

[root]# xorgconfig

ri tr li nhng cu hi m chng trnh ny t ra. Nu khng mun tip tc


th hy nhn <Ctrl>+<C> thot ra.
Cn mt tin ch khc c th dng cu hnh my ch X, l xorgcfg.
Nhng chng trnh l ng dng ho, tc l ch chy trn nn mt my ch
X chy no (hnh 7.2), do khng c ch trong trng hp bn cha
c mt cu hnh X no. Hy c cc trang hng dn s dng man tng ng
xorgconfig(1) v xorgcfg(1) bit thm chi tit. Ngoi ra, mi bn phn
phi hin i c mt cng c cu hnh ring ca mnh, i khi rt mnh. V
d bn phn phi OpenSUSE c sax2. Hy s dng nhng chng trnh ny.
Chng s gip bn tit kim c nhiu thi gian.
172 Giao din ho

Hnh 7.2: Cu hnh X.org qua xorgcfg

Bng mt trong nhng cng c trn bn to ra c tp tin cu hnh


xorg.conf. Chng ta s xem tp tin ny trng nh th no (c ngha l dng
cu lnh xem tp tin more hoc less hoc dng mt chng trnh son tho vn
bn nh vim m n). Di y l v d mt tp tin xorg.conf c trn my
ca ti sau khi ci t openSUSE Linux 10.1:

# Version: 7.1
# Contact: Marcus Schaefer <sax@suse.de>, 2005
# Contact: SaX-User list <https://lists.berlios.de/mailman/listinfo/sax-users>
#
# Automatically generated by [ISaX] (7.1)

Section "Files"
InputDevices "/dev/gpmdata"
InputDevices "/dev/input/mice"
FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/local"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
FontPath "/usr/X11R6/lib/X11/fonts/URW"
FontPath "/usr/X11R6/lib/X11/fonts/truetype"
FontPath "/usr/X11R6/lib/X11/fonts/uni:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/CID"
FontPath "/opt/kde3/share/fonts"
FontPath "/usr/local/share/fonts"
EndSection
7.3 Cu hnh chng trnh ch X 173

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

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 Giao din ho

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

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 "video"
Mode 0660
EndSection

Section "Extensions"
EndSection

Cn phi ni rng nhng thng tin m chng trnh ci t ca openSUSE d


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

Section "tn_ca_phn_ny"
SectionEntry1
SectionEntry2
SectionEntry3
EndSection

Cc phn c th nm trong tp tin cu hnh theo th t bt k. Trong tp tin cu


hnh c th c cc phn sau (khng nht thit phi c tt c chng):

Files ng dn n cc tp tin.

ServerFlags ty chn ca chng trnh ch.

Module cc mun np t ng.

InputDevice m t cc thit b nhp vo.

Monitor m t mn hnh.

Modes m t cc ch hnh nh.

Screen cu hnh mn hnh.

Device m t cc hnh (video card).

ServerLayout cu hnh chung.

DRI cu hnh DRI.

Vendor cu hnh cho cc thit b ca cc nh sn xut c th no .

Extensions phn cu hnh m rng.

Cng c th gp hai phn hoc nhiu hn c cng mt dng (V d Screen), tuy


nhin khi chng phi c tn ring khng trng nhau.
Phn ServerLayout c u tin cao nht, tc l chng trnh ch X bt
u c tp tin cu hnh xorg.conf t y. Phn ny xc nh nhng thit
b vo/ra (input/output) no s c s dng trong giao din ho X. Thit b
nhp vo thng l bn phm v chut, chng c xc nh trong cc phn
InputDevice, mi phn cho mt thit b. Thit b ra gm cc thnh phn ring
bit l cc hnh v mn hnh thng c nhm li vi nhau trong phn Screen.
Trong phn ServerLayout phi c cc dng ch n cc phn ca thit b va
ni n. Nh vy, phn ServerLayout phi cha t nht nhng dng sau:

Section "ServerLayout"
Identifier "Layout[all]"
InputDevice "Keyboard[0]" "CoreKeyboard"
InputDevice "Mouse[1]" "CorePointer"
Screen "Screen[0]"
EndSection
176 Giao din ho

Phn Screen xc nh mn hnh v cc hnh s dng, ng thi a ra cc


ch lm vic ca mn hnh ( phn gii v s lng mu). Phn ny c dng
nh sau:

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

Nh bn thy, phn ny cho bit cc mn hnh c dng l thit b c tn


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

HorizSync 30-96
VertRefresh 50-160

xc nh tn s cp nht ngang (HorizSync) v dc (VertRefresh). y tn


s cp nht ngang v dc c th nm tng ng trong khong 3096, 50160.
Nu mun t mt s c th no thay cho nhng khong th c th sa thnh:

HorizSync 80
VertRefresh 100

hoc:

HorizSync 80, 90
VertRefresh 124, 138

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

Driver "nvidia"

Tc l ti s dng cc mn hnh vi chip ca hng NVIDIA v ci t driver


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

Option "ZAxisMapping" "4 5"


Option "Protocol" "PS/2"
Option "Device" "/dev/input/mice"

Nu khng c tu chn ZAxisMapping vi gi tr 4 5, th chng ta s khng


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

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

7.3.3 Th cu hnh /etc/X11/xorg.conf


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

[user]$ X -probeonly -verbose 1 > xprobe.log 2>&1


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

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

(==) ServerLayout "Layout[all]"


(**) |-->Screen "Screen[0]" (0)
(**) | |-->Monitor "Monitor[0]"
(**) | |-->Device "Device[0]"
(**) |-->Input Device "Keyboard[0]"
(**) |-->Input Device "Mouse[1]"

trong tp tin ny rt c th chng ta s gp nhng cnh bo v th mc


cha phng ch ni phn trc, c dng sau:

(WW) The directory "/usr/share/fonts/local" does not exist.


Entry deleted from font path.
(WW) The directory "/usr/share/fonts/PEX" does not exist.
Entry deleted from font path.
(WW) The directory "/usr/share/fonts/baekmuk" does not exist.
Entry deleted from font path.
(WW) The directory "/usr/share/fonts/japanese" does not exist.
Entry deleted from font path.
(WW) The directory "/usr/share/fonts/kwintv" does not exist.
Entry deleted from font path.

Ti thi im ny, nhng cnh bo tng t nh trn khng nh hng nhiu


n vic s dng X Window. Hy c gng sa ht nhng li ((EE) tm thy, kim
tra li bng:

[user]$ X -probeonly -verbose 1 > xprobe.log 2>&1

ri nhn vo tp tin xprobe.log xem c cn li no khng. Nu khng cn na


th c th mnh dn chy ch ho bng cu lnh X nh ni u phn
ny. Tt nhin, bn cn bit rng, khng c li tm thy trong xprob.log cha
bo m vic chy thnh cng ch ho. Do nu vn thy mt mn hnh
en, th hy quay tr li dng lnh bng t hp phm <Ctrl>+<Alt>+<Backspace>
ri kim tra k cng kt qu ca cu lnh:

[user]$ X -probeonly -verbose 1 > xprobe.log 2>&1

i khi c th th chn mt phn gii hoc su mu nh hn. V d


chn phn gii 1024x768 v su mu 16 thay v 1600x1200 v 24.
Ni v ch lm vic ca mn hnh khng th khng k n mt tin ch nh
nhng c ch l xvidtune. S dng tin ch ny bn s tm c ch hin
th thch hp cho mn hnh ca mnh. Tin ch ny chy trong giao din ho,
do hy chy X bng startx ri chy xvidtune t mt trnh lnh no (v
d xterm). Chng ta s thy mt ca s hin ra nh trong hnh 7.3, sau khi
ng ca s cnh bo cho bit cc nh pht trin khng chu trch nhim v vic
s dng xvidtune gy ra. Nhng cnh bo nh vy bn s thng xuyn gp
khi s dng cc sn phm c lin quan n Linux nh chng trnh, sch, bo,
hng dn,. . .
v trn xterm s xut hin mt vi dng thng tin:
7.3 Cu hnh chng trnh ch X 181

Hnh 7.3: Chng trnh xvidtune

Vendor: SAMSUNG, Model: SYNCMASTER 757NF(T)/707NF/700NF


Num hsync: 1, Num vsync: 1
hsync range 0: 30.00 - 96.00
vsync range 0: 50.00 - 160.00

Nt Show cho bit ch hin th ang c s dng dng:

"1280x1024" 167.32 1280 1376 1512 1744 1024 1025 1028 1078

Chnh nhng dng thng tin dng ny c s dng trn cc dng Modline ca
phn Modes tp tin cu hnh xorg.conf.
chnh hnh nh trn mn hnh, v d di chuyn sang phi, hy s dng
(nhn vo) nt Right (khi ny cc s tng ng pha trn s thay i), ri
nhn nt Apply. Tng t nh vy s dng cch nt Left di chuyn sang
tri, Up ln trn, Down xung di, Taller, Wider tng kch thc
hnh nh theo chiu cao, v b ngang hoc gim chng xung bng Narrower
v Shorter. Trong ln chy th xvidtune cui cng, ti khng s dng c
nhng chc nng chnh sa k trn v nhn c thng bo khng th thc thi
(hnh 7.4).

Hnh 7.4: Chng trnh xvidtune khng chu chnh hnh nh


182 Giao din ho

Thit lp ban u c th phc hi bng nt Restore. Kh nng ny c ch khi


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

7.4 Khi ng h thng X Window


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

C mt cch tt hn (nhng khng phi l tt nht) chuyn vo ch


ho l chy cu lnh xinit. Cu lnh xinit, cng nm trong th mc
/usr/bin/X11 nh Xorg, dng chy my ch X v t nht mt chng trnh
khch. Theo mc nh xinit thc hin script

X :0

tc l chy chng trnh my ch X trn mn hnh s 0.


Nu trn dng lnh chy xinit khng ch ra chng trnh khch cn chy,
th chng trnh xinit s tm tp tin .xinitrc c trong th mc ca ngi
dng thc hin tp tin ny ging nh cc script khc, tc l chy nhng cu
lnh c trong .xinitrc. Nu khng c tp tin .xinitrc , th theo mc nh
xinit s thc hin cu lnh sau:

xterm -geometry +1+1 -n login -display :0

Kt qu l ngi dng s thy mt mn hnh trng khng vi mt ca s trnh


lnh xterm duy nht. V bi v cha c trnh qun l ca s no c chy nn
bn s khng th lm g (di chuyn, thay i kch thc, v.v. . . ) c vi ca s
ny, nhng c th dng n thc hin nhng chng trnh khc k c trnh
qun l ca s. V d, hy th chy cu lnh twm hoc fvwm (mt trong hai trnh
qun l ca s ny thng c ci t theo mc nh). Sau bn s thy ca
s xterm c thay i v c th di chuyn bng cch ko thanh trn u ca
n. Nu trn my ca bn c ci cc trnh qun l ca s v mi trng lm vic
khc, v d fluxbox, icewm, Xfce4, KDE v GNOME, th hy th chy mt trong
cc cu lnh sau:

[user]$ fluxbox
[user]$ icewm-session
[user]$ xfce4-session
[user]$ startkde
[user]$ gnome-session

Nu dng li cch khi ng giao din ho ny, th mi ln chng ta s


phi lp i lp li mt s cu lnh, l chng ta cn cha k n nhng mt
yu khc ca cch ny. Do , ngi dng cn s dng kh nng to ra tp tin
script .xinitrc t ng ha nhng cng vic lp li n nhm chn ny. Vi
mc ch hc tp, ti xin a ra di y v d mt script .xinitrc dng
chy ng h, hai ca s xterm v cui cng chy trnh qun l ca s twm.

#!/bin/sh
xrdb -load $HOME/.Xresources
xsetroot -solid gray &
xclock -g 100x100-0+0 -bw 0 &
xload -g 50x50-100+0 -bw 0 &
xterm -g 80x24+0+0 &
xterm -g 80x24+0-0 &
exec twm
184 Giao din ho

Cn ch l nhng chng trnh chy t .xinitrc phi c thc hin


trong ch nn (background), nu nh chng khng kt thc ngay lp tc.
Trong trng hp ngc li, nhng chng trnh ny s ngn cn khng cho
chy nhng chng trnh nm pha sau. Tuy nhin mt trong nhng chng
trnh ny (thng l trnh qun l ca s hoc trnh lnh dng xterm) phi c
thc hin ch bnh thng (foreground), cho vic chy script khng b
kt thc. Chng trnh khch ny c tn gi c bit l magic client. Khi ngi
dng ng magic client, chng trnh xinit bit l cng vic hon thnh
v n s t tt. Trong v d trn, nu trnh qun l ca s c cu hnh ng,
th c th dng phin lm vic (session) vi giao din ha, ngi dng phi
chn mc Exit trong thc n ca twm.
C th dng nhng tham s dng lnh ca xinit thay cho script .xinitrc.
Trn dng lnh c th ch ra chng trnh khch. Chng trnh khch phi l
tham s u tin ca dng lnh gi xinit. Tn ca chng trnh khch phi
bt u bng du gch cho (/) hoc du chm (.), nu khng chng trnh s
coi chng nh l cc tham s cn phi thm vo chng trnh khch nm pha
trc. Bng cch ny c th thm tham s vo cho cc chng trnh (v d mu
nn v mu ch cho xterm) m khng cn phi g li dng lnh t u. Tt c
nhng g nm sau du gch cho i () s c thm vo dng lnh gi chng
trnh ch X. V d du hai chm v mt ch s no (:n) dng ch ra mt
mn hnh c s th t khc 0 (theo mc nh).
Tng kt mt s v d gi chng trnh xinit:

[user]$ xinit
Cu lnh ny s chy my ch X, thc hin script .xinitrc nu c trong
th mc ca ngi dng, nu khng s ch chy xterm.

[user]$ xinit -- :1
Chy my ch X trn mn hnh s 1. C ch th cu hnh mi khi c
my ch X chy trn mn hnh mc nh (s 0).

[user]$ xinit -geometry 80x25+0+0 -fg white -bg black


Chy my ch X, v chng trnh xterm chy theo mc nh s nhn c
cc tham s lit k trn dng lnh. Script .xinitrc s khng c thc
hin.

[user]$ xinit -e widgets -- :2


Chy my ch X trn mn hnh c s 2 v a ti chng trnh khch xterm
tham s e widgets.

V ngi dng mi thng khng c kh nng to ra mt tp tin script


.xinitrc tt, nn trn cc bn phn phi lun c cc script do cc nh pht
trin vit sn thc hin chc nng ny. V d mt trong nhng script ny
l startx nm cng ch vi Xorg (/usr/bin/X11/). Script ny c mt trang
hng dn s dng startx(1) ring. Cu trc ca startx c th rt phc tp v
khng d dng cho ngi dng mi cha quen vi ngn ng lp trnh ca Bash,
nhng nu nhn k th script ny thc hin 3 cu lnh chnh sau:
7.4 Khi ng h thng X Window 185

xauth add $display . $mcookie


xauth add hostname -f $display .$mcookie
xinit $client $clientargs -- $server $display $serverargs

Tc l cui cng th startx cng gi cu lnh xinit m chng ta va xem xt


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

7.4.1 La chn trnh qun l ca s


Mt khi lm c cho h thng X Window chy thnh cng, th bn c rt
nhiu kh nng cu hnh, ty chnh n theo ca mnh. Nhng kh nng cu
hnh, ty chnh ny li ph thuc rt nhiu vo trnh qun l ca s m bn s
dng. Nh ni ngay t u, c rt nhiu trnh qun l ca s cng nh mi
trng lm vic da trn nhng trnh qun l ca s ny. Ngi dng c th la
chn mt trong nhng trnh qun l ca s ngay t lc bt u chy ch
ha. V d c th thc hin iu ny bng tp tin .xinitrc di y:

#!/bin/sh
# $HOME/.xinitrc
# dng Xfce4 theo mc nh
WMGR="xfce4-session"
# tt xscreensaver
xset s noblank
# chy screensaver sau 10 pht
xset s 600 2
# chy xterm
xterm -bg black -fg white -fn 7x14 -geometry 80x24+57+0 &
# nu a ra mt Window Manager khc
# th dng n thay cho Xfce4
if [ "$1" != "" ] ; then WMGR=$1
fi
exec $WMGR

Mc d khng cn thit, nhng c th chuyn tp tin ny thnh c th thc


thi bng cu lnh chmod quen thuc:

[user]$ chmod u+x .xinitrc


186 Giao din ho

Tp tin .xinitrc ny cho php ngi dng la chn trnh qun l ca s


(hoc mi trng lm vic) khi khi ng h thng X Window bng cu lnh
startx. V d khi ng KDE, u tin chng ta tm xem startkde nm
u ri t n vo lm tham s cho startx nh sau:
[user]$ which startkde
/opt/kde3/bin/startkde
[user]$ startx /opt/kde3/bin/startkde
Tng t nh vy i vi GNOME:
[user]$ which gnome-session
/opt/gnome/bin/gnome-session
[user]$ startx /opt/gnome/bin/gnome-session
Ch l nu ch chy startx khng c tham s th Xfce4 s c khi ng theo
mc nh.
Tt nhin bn c th to cho mi trnh qun l ca s v mi trng lm vic
mt tp tin .xinitrc ring, v d cho KDE tp tin .xinitrc-kde:
#!/bin/sh
#$HOME/.xinitrc-kde

# Chy mt s chng trnh


#xset b off &

# t mt s bin, v d th vin m
# xvnkb cn
#export LD_PRELOAD=/usr/local/lib/xvnkb.so

# Dng cch nhp SCIM lm mc nh


export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE=scim
export QT_IM_MODULE=scim

# Chy mi trng lm vic


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

7.4.2 Mi trng lm vic KDE v GNOME

Mi ngi dng my tnh d c nhiu kinh nghim hay t u c gng to cho


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

KDE. Nhng nu mun ngay by gi bn c th xem thng tin v mi trng


ny t trang ch ca n http://www.kde.org hoc t trang ting Vit http:
//www.kde-vi.org (rt tic l trang KDE-vi khng c cp nht kp thi v
nhiu l do). Trang ch ca GNOME nm ti a ch http://www.gnome.org.

7.4.3 Mi trng lm vic Xfce


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

7.4.4 S dng trnh qun l mn hnh


Nh bn bit, c th t ng chy h thng X Window ngay khi khi ng my
tnh bng cch s dng chng trnh c tn gi trnh qun l mn hnh (Display
Manager), v d X Display Manager xdm. Trong trng hp ny, ngi dng
thy ngay giao din ha GUI, m khng cn phi khi ng n bng lnh
startx. Khi ny vn c kh nng chuyn v giao din console bng t hp phm
<Ctrl>+<Alt>+<F#> (# y bng t 1 n 6), sau chuyn quay li vo mi
trng ha bng t hp <Ctrl>+<Alt>+<F7>.
t ng chy trnh qun l mn hnh (v d xdm), cn sa tp tin cu hnh
khi ng /etc/inittab. Tm trong tp tin ny dng

id:3:initdefault:

xc nh cp khi ng (runlevel) theo mc nh, v sa n thnh

id:5:initdefault:

S thay i ny s khin Linux chuyn sang khi ng cp 5. Trn trnh


qun l mn hnh nh xdm cng c login ngi dng a vo tn ng
nhp ca mnh v password a vo mt khu. Sau khi nhp xong login
v password ngi dng cn nhn <Enter> vo mi trng ha mc nh
ca h thng.
7.4 Khi ng h thng X Window 189

Hnh 7.5: Mi trng lm vic Xfce

Nu bn c chn ci t KDE hoc GNOME th rt c th h thng s s


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

Lm vic trong mi trng KDE

Conquer your Desktop! konqueror


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

8.1 Bt u lm vic vi KDE


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

8.1.1 ng nhp vo KDE


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

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

Hnh 8.1: Mn hnh ng nhp KDM

vy, mn hnh ng nhp mc nh ca KDM c hai ngi dng g vo tn


ng nhp (username) v mt khu (password) hoc chn tn ng nhp ca
mnh bn tri hai ny, ngoi ra c th chn cc mc sau:

Session Type
Ch ra mi trng lm vic (trnh qun l ca s) mun dng khi ng
nhp vo. Nu c nhng mi trng lm vic khc trn h thng th chng
s c lit k trong mt danh sch hin ra. Ch s dng mc ny khi bn
mun dng mt mi trng lm vic khc vi mi trng mc nh (thng
l KDE).
System
Thc hin cc cng vic c lin quan n h thng, nh khi ng li hoc
tt my. Remote Login (ng nhp t xa) gip bn ng nhp vo mi
trng lm vic trn mt my khc qua mng.

khi ng mi trng lm vic mc nh KDE, ch cn nhp vo tn ngi


dng, mt khu ri g <Enter>.

8.1.2 V ngoi ca KDE


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

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

sau khi c cu hnh, chnh sa mt cht. Nh bn thy, mn hnh c th chia


thnh hai phn:

Cc thanh panel
Cc thanh panel thng nm phn ngoi cng (ng bin) ca mn
hnh, tc l trn cng, di cng, bn tri hoc bn phi. Panel dng
chy cc ng dng thng dng, chuyn qua li gia cc khng gian lm
vic. Trn thanh panel chnh cn c nt gi l KMenu trnh n chnh
ca h thng KDE, thng nm u bn tri ca thanh panel. Nt ny
c biu tng hnh ch K theo mc nh, nhng mi bn phn phi c th
t vo v tr ny mt biu tng khc nhau. Nh trn hnh 8.2, biu tng
l hnh con tc k hoa, biu tng ca OpenSUSE Linux. Nt KMenu
dng m ra mt trnh n cc ng dng m KDE tm thy trn h thng,
gip ngi dng chy nhng ng dng ny bao gm c nhng chng trnh
khng c biu tng trn thanh panel no.

Mn hnh (Desktop)
y l ton b phn cn li ca mn hnh, trn c th t cc biu tng
khc nhau dng chy cc ng dng (shortcut) hoc t cc tp tin, th
mc thng dng. Trong trng hp ca mnh, ti b i tt c nhng
biu tng , tuy nhin minh ha ti to ra hai ci l l4u, digikam.
8.1 Bt u lm vic vi KDE 193

y cn ni thm mt cht v khi nim khng gian lm vic nhc n


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

[user]$ kicker &

hoc nhn <Alt>+<F2> m hp thoi chy chng trnh (hnh 8.3) ri g vo


kicker v <Enter>. Mt tnh nng quan trng khc ca KDE l h thng

Hnh 8.3: Hp thoi chy chng trnh


194 Lm vic trong mi trng KDE

tr gip trc tip trn mn hnh. Nu bn a chut ln mt biu tng, mt nt


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

Hnh 8.4: Tr gip c ch tooltips

Kh nng s dng chut ca cc mi trng lm vic hin i l ti a. Nt


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

8.1.3 Trnh n KMenu


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

Hnh 8.5: Trnh n chnh ca KDE

cn nhn chut phi vo tn (biu tng ca chng trnh tng ng ri chn


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

8.1.4 Trung tm iu khin KDE


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

Hnh 8.6: Tm kim trong trnh n chnh ca KDE

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

Hnh 8.7: Trnh Thit lp c nhn ca KDE

mun ny). thay i mt phng ch no cn nhn vo nt Choose . . .


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

Hnh 8.8: Ci t phng ch mi

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

v Konqueror sau). Nhng cu hnh ny c thc hin trong mun Input


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

8.1.5 Thay i v ngoi


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

Add Application to Panel Thm biu tng (nhm) chng trnh vo


8.1 Bt u lm vic vi KDE 199

Hnh 8.10: Chn phng ch

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

thanh panel c th tm (chng) n nhanh hn. Trong danh sch hin ra


bn cn chn chng trnh hoc ton b nhm chng trnh bng Add
this Menu.

Remove From Panel G b chng trnh hoc applet (ang c) khi


thanh panel.

Add New Panel Thm thanh panel mi. V d, bn c th thm mt


thanh panel ng biu tng nhng ng dng thng chy.

Remove Panel G b mt thanh panel no cng vi tt c nhng g


c trn thanh panel ny.

Lock Panels Mt trong nhng ci mi ca KDE, tnh nng ny cho php


tm thi kha panel khng thay i n mt cch v tnh.

Configure Panel . . . Cu hnh thanh panel. Khi chn cu lnh ny, s


m ra mt ca s cho php thay i cc ty chn cu hnh ca panel.

Help Tr gip v panel.

Ngoi ra, nu nhn chut phi vo mt biu tng chng trnh hoc applet c
trn thanh panel th s m ra mt trnh n bi cnh c khc mt cht, nh
chng ta c th thy trn hnh 8.13. ngha ca cc cu lnh ti ngh khng cn
gii thch. Trong quan trng nhn c l l lnh Configure XXX Button . . .
t tn cho nt ca chng trnh XXX, cu lnh ca chng trnh s chy
v mt vi cu hnh khc. Nh ni trn, khi chn cu lnh Configure
Panel . . . ca trnh n bi cnh ca panel hoc chn mun Panels (nhm
Desktop) ca Personal Settings, s hin ra ca s chnh sa cc thanh panel
nh trn hnh 8.14. C 4 th tab (Arrangement, Hiding, Menus v Appearance)
200 Lm vic trong mi trng KDE

Hnh 8.12: Trnh n ca thanh panel

Hnh 8.13: Trnh n bi cnh ca nt

cng nhiu ty chn nhng chng ta ch ch n mt s trong . u tin cn


chn thanh panel mun cu hnh bng cch nhn vo nm sau dng Settings
for (th Arrangement) ri chn panel tng ng. Sau di c th chn v
tr t thanh panel (Position), chiu di ca n tnh theo % so vi cnh ca
mn hnh (Length) v cao tnh theo pixel (Size). Trn th Appearance, c
th chn thanh panel tr thnh trong sui (p hn?) bng ty chn Enable
transparency. Nu mun bn c th b i cc nt giu thanh panel (hnh mi
tn tam gic) bng cch b i cc du X trong cc ca Panel-Hiding Buttons
(th Hiding). Sau mi ln thay i ng qun p dng n bng nt Apply.

Tng t nh cc thanh panel, khi nhn chut phi ln phn trng ca nn


mn hnh s m ra mt trnh n bi cnh ca mn hnh. Trong trnh n ny
cng c nhiu cu lnh bn c th nghin cu dn dn. Cu lnh Configure
Desktop . . . l lnh chng ta quan tm. Lnh ny dng cu hnh khng
gian lm vic cng nh nn mn hnh (nh thay i nh nn). Khi chn lnh
ny s hin ra ca s nh trn hnh 8.15. Trong ca s ny ngi dng c th
chn khng dng nh nn (ch dng mu), chn mt nh lm nn hoc chn mt
nhm nh thay phin nhau sau mt khong thi gian nht nh (slide show). S
lng v tn gi ca cc khng gian lm vic c th thc hin qua th Multiple
Desktops. thay i trnh n chnh ca KDE (KMenu), ngi dng c th s
dng chng trnh Menu Editor. Khi nhn chut phi ln biu tng ca trnh
n chnh bn s thy mt cu lnh c cng tn vi chng trnh ny. Nhn vo
chy chng trnh son tho trnh n. Hoc t dng lnh chy cu lnh
kmenuedit. Kt qu thu c l nh nhau (hnh 8.16). Cui cng, thm biu
tng ln mn hnh, mc d theo ti l khng thc s cn thit, bn cn s dng
cu lnh Create New (trong trnh n bi cnh hin ra khi nhn chut phi ln
mn hnh nh ni trn) v chn mc tng ng ca lnh ny. Sau khi kt
thc cng vic bn cn bit cch thot khi KDE cng nh giao din ho, hoc
tt my hon ton.
8.1 Bt u lm vic vi KDE 201

Hnh 8.14: Cu hnh cc thanh panel

Hnh 8.15: Thay i mn hnh

8.1.6 iu khin phin lm vic1


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

Cc thit lp trang tr v tnh nng, nh phng ch, nh nn, mu v thit


lp chut.

ng dng ang chy, nh Konsole, t in Stardict hay OpenOffice.org.


1
Session
202 Lm vic trong mi trng KDE

Hnh 8.16: Son tho trnh n chnh

Tuy nhin, cn ch l bn khng th lu v phc hi nhng ng dng m


Session Manager khng qun l. V d, nu bn chy cu lnh trnh son tho
vim t mt ca s terminal, th Session Manager khng th phc hi trnh son
tho ny.
Mi cu lnh iu khin trc tip phin lm vic nm trong th Leave ca
trnh n chnh.

1. Lock kha mn hnh ca bn. Bn c th s dng phm nng xc nh


trong Personal Settings, thng thng l <Ctrl>+<Alt>+<Del> hoc dng
nt Lock trn thanh panel (nu c).
Khi kha mn hnh, chng trnh bo v mn hnh2 bt u chy. m
kha mn hnh, cn nhn chut hoc nhn bn phm hin ra hp thoi
m kha. hp thoi ny bn cn nhp vo mt khu ca mnh.

2. Save Session lu trng thi ca phin lm vic hin ti. Trng thi ny
s c phc hi vo ln ng nhp sau.

3. Logout thot ra khi KDE khi kt thc cng vic hoc ng nhp vo
mi trng lm vic khc. Nu s dng KDM ng nhp vo th bn
s c mt vi la chn khc: tt my, khi ng li. Phm nng theo mc
nh thot khi KDE l <Ctrl>+<Alt>+<Del> (chng trnh s hi li
bn c chc chn mun thot ra khng) hoc <Ctrl>+<Alt>+<Shift>+<Del>
(thot thng, chng trnh khng hi li). Trn thanh panel nt thot
ra thng nm cnh nt Lock.

2
Screen Saver

You might also like