You are on page 1of 146

T hc s dng Linux

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

Dnh cho ngi dng mi v rt mi...

Mc lc
1 HH Linux: lch s v cc bn phn phi
1.1 Th no l HH ni chung v Linux ni ring
1.1.1 Cc h iu hnh dng UNIX . . . . . .
1.1.2 Mt cht v lch s . . . . . . . . . . . .
1.1.3 c im chnh ca HH Linux . . . .
1.2 Bn phn phi Linux . . . . . . . . . . . . . . .
1.3 Yu cu i vi my tnh . . . . . . . . . . . . .
1.4 Ly Linux u? . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

2 Ci t HH Linux trn cng my tnh vi Windows


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

.
.
.
.
.
.
.

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

.
.
.
.
.
.
.

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

.
.
.
.
.
.
.

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

.
.
.
.
.
.
.

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

.
.
.
.
.
.
.

2
2
2
3
6
8
11
12

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

14
14
16
18
18
18
20
22
23
23
25
26
27
28
28
30
31
34
34
34
36
36
39
39
40

iv

MC LC

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

43
43
44
47
49
51
53
53
54
55
56
56
57
57
57

4 Lm quen vi h thng tp tin ext3fs


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

60
60
63
65
70
70
71
72
72
73
79
80
80
80
81
82
82
83
83
86
87
88
89
91
92
94
95

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

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

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

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

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

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

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

MC LC

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

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

MC LC

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

126
126
127
129
130
131
131
134
136

Danh sch hnh v


3.1 Mn hnh khi ng ca GRUB . . . . . . . . . . . . . . . . . . . . . 44
6.1
6.2
6.3
6.4
6.5
6.6
6.7

Midnight Commander ting Vit .


Mn hnh Midnight Commander .
Hp thoi chn nh dng hin th
Hp thoi sp xp . . . . . . . . . .
Ch thng tin . . . . . . . . . . .
Ch cy th mc . . . . . . . . .
Ch xem nhanh . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

127
128
131
134
135
135
136

Danh sch bng


1.1 Yu cu i vi phn cng . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1 Cu trc ca sector khi ng chnh . . . . . . . . . . . . . . . . . . 21
2.2 Nhu cu s dng khng gian a ca HH . . . . . . . . . . . . . . 28
3.1
3.2
3.3
3.4
3.5

Nhng cu lnh n gin ca Linux


Nhng phm son tho dng lnh . .
T hp phm iu khin lch s lnh
Cc phn chnh ca tr gip man . .
Phm s dng xem trang man . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

46
50
52
54
55

4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8

Cu trc th mc ca Linux . . . . . . . . . . .
Nhng tp tin thit b chnh . . . . . . . . . . .
Nhng ty chn chnh ca lnh cp . . . . . . .
Tiu ch tm kim ca cu lnh find. . . . . . .
Nhng ty chn chnh ca tar . . . . . . . . .
Nhng ty chn chnh ca chng trnh gzip
Nhng ty chn chnh ca chng trnh bzip2
Nhng ty chn chnh ca cu lnh mount . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

66
71
81
85
89
92
93
98

5.1
5.2
5.3
5.4

Cc cu lnh b lc . . . . . . .
Thay th cc tham bin c bit
K t xc nh dng du nhc .
Cc k t to mu . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

108
109
111
116

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.

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


6.2 Di chuyn trong trnh xem tp tin . . . . . . . . . . . . . . . . . . . . 129
6.3 Di chuyn khi xem tr gip . . . . . . . . . . . . . . . . . . . . . . . 130

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

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

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

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

1.1
1.1.1

Th no l HH ni chung v Linux ni ring


Cc h iu hnh dng UNIX

H iu hnh (HH) l mt b cc chng trnh h tr vic iu khin phn


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

Ngi dch: Ngi m khng ngi ngn ng k nhn hiu thng mi bt k th g, k c Yoga m bt
ngun t n .

1.1 Th no l HH ni chung v Linux ni ring

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


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

1.1.2

Mt cht v lch s

HH Linux va k nim sinh nht ln th 15 ca mnh. y l bc th m


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

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

protocol

HH Linux: lch s v cc bn phn phi

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


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

Ngi dch: Rt th v l sau khi Linus Torvalds pht trin HH ca mnh th gia anh v gio s Andy
Tanenbaum n ra mt cuc tranh ci. Nu bn c quan tm th c th tm c nhng th m hai ngi ny
gi cho nhau trong nhm tin tc ni trn, hoc tm c cun Linux: Just for fun, mt cun sch ni v i t
ca Linus Torvalds n thi im anh lm cho Transmeta v vic pht trin HH Linux.
4
Ngi dch: Tht ra lc u nhn Linux c phn phi theo bn quyn m FSF khng khng nhn
l t do v nghim cm phn phi thng mi. Bn quyn ny c th tm thy trong nhng phin bn u
tin ca nhn trn ftp.kernel.org, v d ftp://ftp.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES0.01. Bn quyn c i sang GPL t phin bn 0.12, hy xem RELNOTES-0.12 theo a ch trn.

1.1 Th no l HH ni chung v Linux ni ring

hiu, do khng cn t do). Trong Manifesto GNU (http://www.gnu.org/


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

Ngi dch: Bn c cng nn bit l sp ti s c phin bn th 3 ca GPL (GPLv3). Cng vi s ra i


ca phin bn th 3 ny ny ra rt nhiu tranh ci xung quanh tnh t do ca bn quyn. Tham gia vo tranh
ci c c ngi vit ra nhn Linux u tin Linus Torvalds.

HH Linux: lch s v cc bn phn phi

Tuy nhin by gi xin quay li vi lch s ca Linux. Cn ni rng Linus


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

1.1.3

c im chnh ca HH Linux

Do m ngun Linux phn phi t do v min ph, nn ngay t u c rt


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

1.1 Th no l HH ni chung v Linux ni ring

(bao gm c Microsoft Windows) chuyn ln a tt c ni dung ca b nh


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

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

HH Linux: lch s v cc bn phn phi


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

1.2

Bn phn phi Linux

Trong bt k h iu hnh no cng c th chia ra 4 phn chnh: nhn, cu


trc (h thng) tp tin, trnh dch lnh ngi dng v cc tin ch. Nhn l
7

cho php s dng nhiu h iu hnh trn mt my


Ngi dch: bn phn phi Linux h tr nhiu b x l nht cn phi k n Debian (http://www.
debian.org)
8

1.2 Bn phn phi Linux

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


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

Mc d hu ht cc tc gi cho rng s khc nhau gia cc bn phn phi l


khng c bn. Nhng hin nay c th chia t nht 3 nhm bn phn phi, m i
din ca mi nhm l Red Hat, Slackware v Debian.

10

HH Linux: lch s v cc bn phn phi

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


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

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


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

Ngi dch: iu ny ch ng vi cc phin bn nhn trc 2.6. T 2.6 tr i Linus v cc nh pht trin
khc th nghim dng bn s.

1.3 Yu cu i vi my tnh

11

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


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

1.3

Yu cu i vi my tnh

Ti c u ni rng c nhng phin bn Linux c bit, lm vic thm


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

Ngi dch: bn gc a ra mt bn qu c, ti xin a ra mt bn mi da trn c s ca openSuSE


10.1.

12

HH Linux: lch s v cc bn phn phi

nhng my rt c, m trc y ch c th dng MS DOS (tt nhin l trong


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

1.4

Ly Linux u?12

V trong phn cui ca chng th nht chng ta s tr li ngn gn cho cu hi


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

my gip chuyn hng cc gi mng


Phn ny do ngi dch vit

1.4 Ly Linux u?

13

1 thng ri bn s nhn c chng. Theo ti ngh y l cch tt nht nu bn


khng c iu kin mua a.

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

Vn ch, phn ln ngi dng Vit Nam trc khi bt u hc Linux


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

2.1

Chun b ci t

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


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

2.1 Chun b ci t

15

T my tnh khc trong mng ni b qua SMB;


T my tnh xa (v d t Internet) qua giao thc FTP;
T mt my ch WWW qua giao thc HTTP.

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


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

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

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


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

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


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

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


giao thc (Microsoft, Logitech, MouseMan, v.v. . . );

16

Ci t HH Linux trn cng my tnh vi Windows


s nt;
i vi chut cm vo cng ni tip th cn s th t ca cng .
Cc mn hnh

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

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

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

2.2

Phng xa v nhng li khuyn

Trc khi ci t HH Linux sau Windows, rt nn thc hin vi thao tc phng


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

2.2 Phng xa v nhng li khuyn

17

cho h thng c. Mt li khuyn quan trng khc: nu c g xy ra khng theo


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

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


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

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


bn c khng mong i.

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


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

18

2.3
2.3.1

Ci t HH Linux trn cng my tnh vi Windows

Phn vng trn a v qu trnh khi ng


Th no l cu trc hnh hc ca a

Nh bn c bit, a cng gm vi a c ph lp t tnh, nm trn cng mt


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

2.3.2

Phn vng v bng phn vng ca a

Trong cc h thng Intel a thng c chia thnh cc phn vng. Rt c th


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

0x80: phn vng kch hot, 0: khng kch hot */


CHS sector u tin, 24 bit
loi phn vng (v d, 83 -- LINUX_NATIVE) */
CHS sector cui cng, 24 bit */
s ca sector u tin (32-bit, tnh t 0) */
s sector c trong phn vng (32 bit) */

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


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

2.3 Phn vng trn a v qu trnh khi ng

19

lnh v h thng trnh n (thc n). Chng trnh sfdisk c vi kh nng cao
hn, v d, cho php thao tc trn cc phn vng c ca a.
DOS s dng trng begin v end ca bng phn vng v Interrupt 13 ca
BIOS (Int 13h) truy cp ti a, v th khng th s dng a c dung lng
ln hn 8,4 Gbyte, ngay c vi cc BIOS mi (v vn ny s ni n sau),
cn phn vng th khng th ln hn 2,1 Gbyte (nhng y l do hn ch ca h
thng tp tin FAT16).
Linux th ch s dng trng start v length ca bng phn vng a v h
tr cc phn vng cha n 232 sector, tc l dung lng c th t 2 Tbyte
V trong bng chia a ch c 4 dng cho cc phn vng, s phn vng chnh
trn a ngay t u d hn ch: khng th ln hn 4. Khi m 4 phn vng tr
thnh t, th ngi ta sng ch ra phn vng lgc. Mt trong s cc phn vng
chnh tr thnh m rng (loi phn vng - 5 hay F hay 85 trong h c s mi
su). V trong phn vng m rng ngi ta to ra cc phn vng lgc. Phn
vng m rng khng c s dng trc tip m ch dng ghi cc phn vng
lgc. Sector u tin ca phn vng m rng ghi nh bng phn vng vi bn
u vo: mt dng cho phn vng lgc, mt cho phn vng m rng khc, cn
hai ci cn li khng c s dng. Mi phn vng m rng c mt bng chia
ca mnh, trong bng ny, cng ging nh trong phn vng m rng chnh, ch
s dng c hai dng a ra mt phn vng lgc v mt phn vng m rng.
Nh vy, thu c mt chui cc mt xch t bng phn vng, mt xch u tin
m t ba phn vng chnh, v mi mt xch tip theo mt phn vng lgc v
v tr ca bng tip theo.
Chng trnh sfdisk trn Linux cho thy ton b chui ny:
[root]# sfdisk -l -x /dev/hda
Disk /dev/hda: 784 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device
/dev/hda1
/dev/hda2
/dev/hda3
/dev/hda4

Boot
*

Start
0+
190
0
0

End
189
783

#cyls
190594
0
0

#blocks
1526143+
4771305
0
0

Id
6
5
0
0

System
FAT16
Extended
Empty
Empty

/dev/hda5

190+
381
190
190

380
783
189
189

191403
0
0

1534176
3237097+
0
0

6
5
0
0

FAT16
Extended
Empty
Empty

/dev/hda6

381+
381
381
381

783
380
380
380

4030
0
0

3237066
0
0
0

7
0
0
0

HPFS/NTFS
Empty
Empty
Empty

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

20

Ci t HH Linux trn cng my tnh vi Windows

chia a no trong s c (fdisk v tng t) c th to thm mt phn vng


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

2.3.3

Qu trnh khi ng cc HH ca cng ty Microsoft

D h iu hnh c l g, th c th bt u iu khin my tnh, cn np


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

2.3 Phn vng trn a v qu trnh khi ng

Dch chuyn
0x000
0x1BE
0x1FE

21

Bng 2.1: Cu trc ca sector khi ng chnh


Ni dung
M ca trnh khi ng chnh
Bng phn vng a
S mu nhim (0xAA55)

chnh vo b nh my tnh v chuyn quyn iu khin cho chng trnh ny.


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

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


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

22

Ci t HH Linux trn cng my tnh vi Windows

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

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


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

2.3.4

Vn vi cc a ln

Trn MS-DOS v cc phin bn u tin ca Windows truy cp ti a (trong


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

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


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

2.4 La chn trnh khi ng

23

khc nhau (trn cc rnh nm gn ra ngoi ca a, di hn, s sector c tng


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

2.4
2.4.1

La chn trnh khi ng


Trnh khi ng GRUB1

GRUB (GRand Unified Bootloader) trnh khi ng ht sc mnh c kh nng


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

Phn v GRUB ny do ngi dch vit.

24

Ci t HH Linux trn cng my tnh vi Windows

cn rt nh2 nhng y l s la chn tt i vi phn ln ngi dng my tnh


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

hy so snh s phin bn ca GRUB v LILO

2.4 La chn trnh khi ng

2.4.2

25

Trnh khi ng LILO

Trnh khi ng LILO c vit bi Werner Almesberber. LILO c th khi


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

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


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

26

Ci t HH Linux trn cng my tnh vi Windows


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

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

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


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

2.4.3

Cc trnh khi ng khc

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


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

2.4 La chn trnh khi ng

27

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

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


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

2.4.4

Cc phng n khi ng

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


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

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

28

Ci t HH Linux trn cng my tnh vi Windows

2.5
2.5.1

Chun b cc phn vng trn a


Li khuyn khi to phn vng

a ra li khuyn y khng phi l vic d dng, v phn vng a phc thuc


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

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

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


Yu cu
100 Mbyte
200 Mbyte
200 Mbyte
700 Mbyte
6.2 (Worksta- 700 Mbyte

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

2.5 Chun b cc phn vng trn a

29

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


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

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


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

Xin cm n bc Tony L v mc ny

30

Ci t HH Linux trn cng my tnh vi Windows

thit phi t vo phn vng cha cc tp tin khc ca HH. Nh ni trn,


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

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

2.5.2

Chng trnh phn chia a

Sau khi hon thnh kt hoch chia a, cn la chn cng c a k hoch


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

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

31

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

2.6

Windows NT v Linux: khi ng qua NT OS Loader

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

32

Ci t HH Linux trn cng my tnh vi Windows


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

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


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

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


/mnt/floppy/bootsect.lnx4
6. Tip theo cn khi ng li vo Windows NT, bng cu lnh:
[root]# shutdown -h now
4

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 Commander, thay th gi tr ny thnh phn vng ci Linux ln (chnh xc
hn l thnh phn vng c gn nh gc (/) ca Linux). Nu Linux c
ci vo phn vng /dev/hda3, th cn ghi ci , tc l thay th /dev/hda
thnh /dev/hda3. Nu nh bn c khng nh ci Linux vo u, th
hy chy cu lnh mount v tm kt qu tng t nh sau5 :
5

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

34

Ci t HH Linux trn cng my tnh vi Windows


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

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


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

2.7

S dng trnh khi ng GRUB6

Nh ni trong phn la chn chng trnh khi ng, nu trn my ci


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

2.7.1

Ci t GRUB

Cch d nht c th ci t trnh khi ng GRUB l chn dng trnh khi


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

2.7.2

Cu hnh GRUB

GRUB c mt giao din trnh n t ngi dng c th chn mt mc (mt


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

Phn v GRUB ny do ngi dch vit

2.7 S dng trnh khi ng GRUB

35

color white/blue black/light-gray


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

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


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

36

Ci t HH Linux trn cng my tnh vi Windows

cch t ng trong ln khi ng sau. y l mt im mnh ca GRUB so vi


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

2.8
2.8.1

S dng trnh khi ng LILO


Ci t v cu hnh LILO

Ging nh trng hp Windows NT, chng ta s a ra cc bc cn thc hin


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

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

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

38

Ci t HH Linux trn cng my tnh vi Windows


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

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


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

2.8 S dng trnh khi ng LILO

39

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


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

2.8.2

Ci t cc h iu hnh khc sau Linux

Khi ci t MS-DOS v Windows 95/98, trnh khi ng ca chng (khng ph


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

2.8.3

Chuyn th mc /boot ln phn vng DOS

Nhng phin bn nhn Linux mi nht h tr kh nng t cc tp tin cn thit


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

40

Ci t HH Linux trn cng my tnh vi Windows

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


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

2.9

Khi ng Linux t MS-DOS bng loadlin.exe

Khng ch cc tp tin khi ng v nhn c th nm trong phn vng DOS,


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

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

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

41

s dng DOC\MANUAL.TXT, tp tin tham s v d DOC\TEST.PAR, v


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

42

Ci t HH Linux trn cng my tnh vi Windows


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

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


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

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

3.1

Khi ng HH Linux

Nh vy l vic ci t Linux hon thnh1 . Nu ngi dng ci t GRUB


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

Ngi dch: Thng tin trong phn ny ca bn gc ting Nga hi c v trnh khi ng bn gc s dng
l LILO. Bn dch cp nht li v s dng trnh khi ng GRUB
2
Trong nhng bn phn phi Linux mi, v d SuSE Linux, c s dng mn hnh flash. Do c th bn
c s khng thy nhng thng bo ny. Trong trng hp , hy nhn phm tng ng chuyn v mn
hnh khi ng bnh thng. Phm ny thng l <Esc>.

44

Khi ng Linux ln u

Hnh 3.1: Mn hnh khi ng ca GRUB


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

3.2

ng nhp vo h thng

Nh bn bit, khi hin ra dng mi ny th u tin cn nhp vo tn ngi


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

3.2 ng nhp vo h thng

45

ng mt khu, bn s thy dng nh sau:


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

46

Khi ng Linux ln u

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


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

3.3 Console, terminal o v shell

3.3

47

Console, terminal o v shell

Nh vy l bn c c kinh nghim lm vic u tin ch vn bn (hay


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

48

Khi ng Linux ln u

du mi ng nhp (login:) m bn c thy. Cng c th dng phin lm


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

3.4 Son tho dng lnh. Lch s lnh

49

thi (hay ni khng ng l h thng) s chy mt shell mi m khi vo trong


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

3.4

Son tho dng lnh. Lch s lnh

Trong nhng phn trc tc gi ngh bn c thc hin mt vi lnh ca


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

Danh sch nhng cu lnh (t hp phm) c th dng khng ch gii hn trong


phm vi bng 3.2, nhng chng ta ch xem xt nhng cu lnh n gin v cn
thit trong ln lm quen u tin vi Linux ny. c thm thng tin hy s
dng cu lnh man bash hoc info bash.
3
4

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


panel

50

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

<Ctrl>+<U>

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

Khi ng Linux ln u

Bng 3.2: Nhng phm son tho dng lnh


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

3.5 Ngng lm vic vi Linux

51

Xin lu bn c trong h v bash c chng trnh tch hp gip d dnh


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

3.5

Ngng lm vic vi Linux

Mc d my tnh lm vic di s iu khin ca HH Linux c th chy


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

environment variable

52

Khi ng Linux ln u

Bng 3.3: T hp phm iu khin lch s lnh


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

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


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

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


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

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

3.6 Tr gip khi dng Linux

53

[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

3.6.2

Khi ng Linux ln u

Cc trang tr gip man

Nh ni ngn gn trn v cu lnh man, bng cu lnh ny ngi dng trong


hnh hung kh khn lun lun c th tm tr gip v bt k cu lnh no ca
h thng, v nh dng tp tin, v v cc gi h thng (system call). y l cch
nhn tr gip chnh trong tt c cc h thng UNIX. Cc trang tr gip man chia
thnh cc phn sau:
Bng 3.4: Cc phn chnh ca tr gip man
Phn
0
1
8
2
3
4
5
6
7
9
n

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

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


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

3.6 Tr gip khi dng Linux

55

Bng 3.5: Phm s dng xem trang man


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

3.6.3

Cu lnh info

Cu lnh info l dng tr gip thay th v tng ng vi man. nhn thng


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

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

56

Khi ng Linux ln u

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


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

3.6.4

Cu lnh help

Nh nhc n trn, h thng tr gip v cc lnh tch hp ca h v bash


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

3.6.5

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

Nu trong qu trnh ci t khng b i nhng gi ti liu, th sau khi kt thc


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

3.6 Tr gip khi dng Linux

57

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


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

3.6.6

Cu lnh xman

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

3.6.7

Cu lnh helptool

Sau khi chy lnh helptool s hin ra mt ca s ho, c mt nhp vo


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

3.6.8

Sch v Internet

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

Cc trang ting Vit


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

58

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

Cc trang ting Anh


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

3.6 Tr gip khi dng Linux

59

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


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

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

4.1

Tp tin v tn ca chng

My tnh ch l cng c lm vic vi thng tin khng hn khng km. M


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

Chng ny do ngi dch vit


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

4.1 Tp tin v tn ca chng

61

ngha c bit trong h v shell v do khng nn dng t tn tp tin.


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

thng gi theo ting lng l tarball, qu bng tar


Nhng lnh ls -a s hin th. c thm ls(1) bit chi tit.

62

Lm quen vi h thng tp tin ext3fs

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


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

-l
1
2
2
1

teppi82
teppi82
teppi82
teppi82

users 81409 2006-09-06 03:43 bash.tex


users 4096 2006-09-06 02:16 images
users 82686 2006-09-06 14:32 l4u-0.9.2.pdf
users 3069 2006-09-06 13:52 l4u.tex

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

4.2 Th mc

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 dn6 n tp tin) l danh sch
tn ca cc th mc bao gm th mc cha tp tin v cc th mc m, bt u
t th mc gc / v kt thc l bn thn tn ca tp tin. Trong ng dn ny
tn ca cc th mc con cch nhau bi du gch cho / dng k hiu th mc
gc nh ni trn. V d /home/teppi82/projects/l4u/ext3fs.tex l
tn y ca tp tin ti ang nhp vo trn my ca mnh.
H v shell lu gi tr ca th mc hin thi, tc l th mc m ngi
dng ang lm vic trong . C mt cu lnh cho bit tn ca th mc hin
thi, l lnh pwd. Ghi ch: nu ni mt cch chnh xc, th th mc hin thi
lun i lin vi mi tin trnh chy (trong c h v shell), v th i khi
chy mt chng trnh no trong shell c th dn n vic thay i th mc
hin thi sau khi chng trnh hon thnh cng vic.
Ngoi th mc hin thi mi ngi dng cn c mt th mc nh (home
directory, phng n dch th mc c nhn c u tin hn, v chng ta s
dng thut ng ny trong cun sch l4u). l th mc trong ngi dng c
ton quyn7 : c th to v xa cc tp tin, thay i quyn truy cp n chng,
v.v. . . Trong cu trc th mc ca Linux nhng th mc c nhn ca ngi dng
thng nm trong th mc /home v thng c tn trng vi tn ng nhp ca
6
7

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

64

Lm quen vi h thng tp tin ext3fs

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


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

KDE-vi
l4u
manvi
mc

mrtg
others
SuSE
syslinux

Xfce
vim
vnlinux
vnoss

4.3 Cng dng ca cc th mc chnh

65

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


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

-l
1
1
1
1
1
2
1

teppi82
teppi82
teppi82
teppi82
teppi82
teppi82
teppi82

users
users
users
users
users
users
users

81629
98135
783
20778
2013
4096
3267

2006-09-08
2006-09-08
2006-09-08
2006-09-09
2006-09-08
2006-09-08
2006-09-08

22:11
13:54
21:58
02:48
21:34
14:25
23:13

bash.tex
caidat.tex
ChangeLog
ext3fs.tex
gioithieu.tex
images
l4u.tex

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


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

4.3

Cng dng ca cc th mc chnh

Nu nh bn c tng dng Windows (v d 2000 hay XP), th bit rng mc


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

66

Lm quen vi h thng tp tin ext3fs

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


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

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

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

4.3 Cng dng ca cc th mc chnh


Th mc
/lib

/lost+found

/mnt

/tmp

/root

/sbin

/proc

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

67

68

Lm quen vi h thng tp tin ext3fs


Th mc
/usr

/usr/bin

/usr/include

/usr/lib

/usr/local

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

/usr/sbin

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


qun tr v khng s dng trong thi gian khi ng.

4.3 Cng dng ca cc th mc chnh


Th mc
/usr/share

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

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

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


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

/var

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

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


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

69

70

Lm quen vi h thng tp tin ext3fs


Th mc
/var/run

/var/spool

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

/var/tmp

4.4

Cc tp tin tm thi.

Dng tp tin

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

4.4.1

Cc tp tin thit b

Nh ni, i vi Linux th tt c cc thit b kt ni vo my tnh ( cng,


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

4.4 Dng tp tin

71

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


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

4.4.2

Cc ng c tn (pipes)

Cn c mt dng tp tin thit b na l cc ng c tn, hay b m FIFO (First


In First Out). Tp tin dng ny ch yu dng t chc trao i d liu gia

72

Lm quen vi h thng tp tin ext3fs

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

4.4.3

Cc socket

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

4.4.4

Lin kt mm

Trong phn v tn tp tin chng trc chng ta ni rng tp tin trong


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

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

4.5 Quyn truy cp n tp tin v th mc

73

Vic to bt k mt lin kt no cng ging nh sao chp tp tin, nhng khc


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

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


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

4.5

Quyn truy cp n tp tin v th mc

Bi v Linux l h iu hnh nhiu ngi dng, nn yu cu quy nh truy cp


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

74

Lm quen vi h thng tp tin ext3fs

ch s hu, tn ca nhm s hu cng c ghi vo theo thng tin tn nhm ca


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

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


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

4.5 Quyn truy cp n tp tin v th mc

75

bit ny chia thnh ba nhm, mi nhm 3 bit. Ba bit u tin xc nh quyn ca


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

4096 2006-09-07 02:20 share

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


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

76

Lm quen vi h thng tp tin ext3fs

tt c ngi dng (k c nhm s hu). ng tc b quyn ny ca chnh bn


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

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

4.5 Quyn truy cp n tp tin v th mc

77

= 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:
[user]$ chmod 761 tn_tp_tin

78

Lm quen vi h thng tp tin ext3fs

Nu bn bit v m i ca h c s tm, th hiu rng nhng s ng sau tn


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

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
p

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

82

Lm quen vi h thng tp tin ext3fs

4.6.5

Cu lnh mv

Nu bn khng cn sao chp, m cn di chuyn tp tin t mt th mc ny vo


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

4.6.6

Cu lnh rm v rmdir

xa nhng tp tin v th mc khng cn thit trn Linux c cc cu lnh rm


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

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

4.6.7

83

Cu lnh more v less

Cu lnh cat cho php a ra mn hnh (u ra tiu chun) ni dung ca bt k


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

4.6.8

Cu lnh tm kim find v mu tn tp tin

Cn c mt cu lnh thng dng lm vic vi tp tin trong Linux l cu


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

84

Lm quen vi h thng tp tin ext3fs

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


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

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


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

interval

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

85

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


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

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

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

86

Lm quen vi h thng tp tin ext3fs

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


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

4.6.9

Cu lnh split

i khi chng ta cn chia mt tp tin ln thnh tng phn nh. Ly v d bn


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

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

87

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

4.6.10

So snh cc tp tin v lnh patch

C th bn khng nhng khi lm vic vi my tnh cng vic so snh ni


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

88

Lm quen vi h thng tp tin ext3fs

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


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

4.7

Cc cu lnh lu tr v nn tp tin

Khi s dng Linux rt c th bn s t lm vic vi phn ln cc lnh h v


shell, v c nhng chng trnh tin ch nh Midnight Commander v cc

4.7 Cc cu lnh lu tr v nn tp tin

89

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


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

4.7.1

Chng trnh tar

Nhng ngi dng quen vi nhng chng trnh nn dng winzip (a tt


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

90

Lm quen vi h thng tp tin ext3fs

C th lit k cc tu chn mt ch ci (c, f, . . . ) lin nhau v du gch ngang


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

4.7 Cc cu lnh lu tr v nn tp tin

91

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

92

Lm quen vi h thng tp tin ext3fs

Bng 4.6: Nhng ty chn chnh ca chng trnh gzip


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

4.7.3

Chng trnh bzip2

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

4.7 Cc cu lnh lu tr v nn tp tin

93

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

94

4.7.4

Lm quen vi h thng tp tin ext3fs

S dng kt hp tar vi gzip v bzip2

Tt nhin khng ai ngn cn bn s dng ring r cc cu lnh tar vi gzip v


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

4.8 To v gn cc h thng tp tin

4.8

95

To v gn cc h thng tp tin

Trong nhng phn trc chng ta cp ngn gn mt s cu lnh chnh


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

S h tr c tt, tuy nhin s h tr ghi ln NTFS cha tht hon ho.


Trn cc bn phn phi Linux mi cn c th s dng cc cu lnh mkfs.ext2, mkfs.ext3 v cc cu lnh
tng t. Nu dng chng th ch cn b i phn -t ext3 hoc -t ext2.
16

96

Lm quen vi h thng tp tin ext3fs

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


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

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

4.8 To v gn cc h thng tp tin

97

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


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

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

/media/dvd

auto

noauto,user,sync 0 0

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


mnh bng cu lnh:
[user]$ mount /dev/hdd
hoc:
[user]$ mount /media/dvd

98

Lm quen vi h thng tp tin ext3fs

Bng 4.8: Nhng ty chn chnh ca cu lnh mount


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

Hy xem trang man fs c m t ngn gn v nhng h thng tp tin ny.


cc chia s trong mng ca Windows

4.8 To v gn cc h thng tp tin

99

cp root mi c quyn b gn n. bt k ngi dng no cng c th b gn


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

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

5.1

H v l g?

Chng ta thng ni ngi dng lm vic vi h iu hnh. iu ny khng


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

5.2 Cc k t c bit

101

Bourne. D n GNU (d n pht trin chng trnh ng dng ca Stallman, xem


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

5.2

Cc k t c bit

H v bash s dng mt vi k t t b 256 k t ASCII cho cc mc nh ring,


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

102

Bash

l k hiu xa b ngha c bit cho bt k k t c bit no, ng ngay sau


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

5.3

Thc thi cc cu lnh

Nh ni trn, mt trong cc chc nng chnh ca h v l t chc vic thc


hin cc cu lnh m ngi dng a vo trn dng lnh. H v, ni ring, cung
cp cho ngi dng hai thao tc c bit t chc vic a cc cu lnh trn
dng lnh: ; v &.

5.3.1

Thao tc ;

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

5.4 u vo/u ra tiu chun

5.3.2

103

Thao tc &

Thao tc & c dng t chc vic thc hin cc cu lnh trong ch nn


sau. Nu t du & ngay sau cu lnh, th h v s tr li quyn iu khin
cho ngi dng ngay sau khi chy cu lnh, m khng i cho cu lnh hon
thnh. V d, nu nhp vo dng lnh command1 & command2 &, th h v
chy cu lnh command1, ngay lp tc chy lnh command2, v sau khng
chm tr tr li dng nhp lnh cho ngi dng.

5.3.3

Thao tc && v ||

Cc thao tc && v || l nhng thao tc iu khin. Nu trn dng lnh l


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

5.4
5.4.1

u vo/u ra tiu chun


Dng d liu vo ra

Khi mt chng trnh c thc hin, n c cung cp ba dng d liu (hay cn


gi l knh):
u vo tiu chun (standard input hay stdin). Qua knh ny d liu c
a vo cho chng trnh;
u ra tiu chun (standard output hay stdout). Qua knh ny chng trnh
a ra kt qu lm vic ca mnh;

104

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

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


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

5.4.2

Lnh echo

Cu lnh echo dng chuyn ti u ra tiu chun dng k t, m c a


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

5.4.3

Lnh cat

Chng ta s xem xt lnh cat y v lnh ny thng lm vic vi u vo v


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

ging lin kt ha hc

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

105

ang chy. Nu a tn mt tp tin vo lm tham s cho lnh cat, th ni dung


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

5.5

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

Mc d, nh ni trn, thng thng u vo/u ra ca mt chng trnh


lin kt vi cc u vo/u ra tiu chun, trong h v cn c cc mi trng c
bit cho php chuyn hng u vo/u ra.

5.5.1

S dng >, < v

chuyn hng u vo/ra, s dng cc k hiu >, < v . Thng s


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

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

106

Bash

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


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

cat > file


cat>file
>file cat
> file cat

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

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

5.5.2

107

S dng |

Mt trng hp c bit ca chuyn hng u ra l s t chc cc ng ng


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

5.5.3

B lc

V d cui cng trn (v d vi cu lnh grep) c th dng minh ha cho


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

108

Bash

Bng 5.1: Cc cu lnh b lc


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

5.6

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

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

5.6.1

Cc dng tham bin khc nhau

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

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

109

tham bin v tr 0). Gi tr ca tham bin v tr l cc tham s cho lnh, c a


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

110

Bash

tham bin v tr th cc bn hiu ti sao mt bin mi trng khng th bt


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

5.6.2

Du nhc ca h v

Mt trong cc bin rt quan trng c tn PS1. Bin ny cho bit dng ca du


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

random l t ting Anh c ngha ngu nhin

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

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

111

Bng 5.3: K t xc nh dng du nhc


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

khi gi tr ca bin c h v c xong, s xy ra s thay th theo cc quy lut


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

5.6.3

Bin mi trng PATH

Cn mt bin cng quan trng na c tn PATH. Bin ny a ra danh sch


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

112

Bash

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

5.6.5

Th mc hin thi v th mc c nhn

Tn ca th mc hin thi ghi trong bin mi trng vi tn PWD, v gi tr ca


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

5.6.6

Cu lnh export

Khi h v chy mt chng trnh hay cu lnh no , n (h v) cung cp cho


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

5.7

Khai trin biu thc

Hay h v c cc cu lnh nh th no?.


Khi h v nhn c mt dng lnh ny cn thc hin, n (h v) trc khi
chy cu lnh thc hin vic phn tch ng php dng lnh ny (ging trong

5.7 Khai trin biu thc

113

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

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


xem xt chng theo t t ny.

5.7.1

Khai trin du ngoc

Khai trin du ngoc tt nht minh ha trn v d. Gi thit, chng ta cn to


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

114

Bash

Tc l vi mi cp du ngoc s to ra vi dng ring r (s nhng dng


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

5.7.2

Thay th du ng (Tilde Expansion)

Nu nh t bt u vi k t du ng (), tt c cc k t ng trc du gch


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

5.7.3

Php th cc tham bin v bin s

K t $ c s dng cho cc thao tc th tham bin, th cc cu lnh v th


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

5.7.4

Php th cc cu lnh

Php th cc cu lnh l mt cng c rt mng ca bash. ngha ca n nm


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

5.7 Khai trin biu thc

115

thng, tr trng hp, khi ng sau n (du gch ngc) l mt $, , hay mt


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

5.7.5

Php th s hc (Arithmetic Expansion)

Php th s hc cho php tnh gi tr ca mt biu thc s hc v thay th n


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

5.7.6

Phn chia t (word splitting)

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

5.7.7

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

Php th tn ng dn v tp tin (Pathname expansion) s dng ch nh


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

116

Bash

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

5.7.8

Xa cc k t c bit

Sau khi lm xong tt c cc php th, cc k t \, v " cn li trong dng


lnh (chng c s dng hu b gi tr c bit ca cc k t khc) s b xa
ht.

5.8

Shell - mt ngn ng lp trnh

Nh ni trn, c th xy dng bt k gii thut no, cng cn c cc ton


t kim tra iu kin. H v bash h tr cc ton t la chn if...then...else
v case, cng nh cc ton t vng lp for, while, until, nh n (bash)
tr thnh mt ngn ng lp trnh mnh.

5.8 Shell - mt ngn ng lp trnh

5.8.1

117

Ton t if v test (hoc [ ])

Cu trc ca ton t iu kin c dng thu gn nh sau:


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

5.8.2

Ton t test v iu kin ca biu thc

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

118

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

5.8 Shell - mt ngn ng lp trnh

119

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

120

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

T cc biu thc iu kin c bn ny c th xy dng cc biu thc phc tp


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

5.8.3

Ton t case

Dng ca ton t case nh sau:


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

5.8.4

Ton t select

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

5.8 Shell - mt ngn ng lp trnh

121

Lc u t mu word hnh thnh mt danh sch nhng t tng ng vi mu


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

Ghi on trn vo mt tp tin (v d, select.sh), thay i tp tin thnh


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

5) Solaris
6) QNX

7) Other

Hy nhn mt trong 7 s a ra (t 1 n 7). Nu bn nhp 4 (nhn c


<Enter>), th s thy thng bo sau:
Bn chn MacOSX

5.8.5

Ton t for

Ton t for lm vic c khc mt cht so vi for trong cc ngn ng lp


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

122

Bash

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. Trn Linux c chng trnh seq, tip nhn hai
s nguyn lm tham s, v a ra chui tt c cc s nm gia hai s ny (cng
thm c chng). Nh cu lnh ny c th s dng for ca bash lm vic nh
ton t for trong cc ngn ng lp trnh thng thng. lm c iu ny
ch cn vit vng lp for nh sau:
for a in $( seq 1 6 ) ; do
cat fu$a
done
Cu lnh (script) ny a ra mn hnh ni dung ca 10 tp tin (nu c): fu1,
..., fu10.

5.8.6

Ton t while v until

Ton t while lm vic tng t nh if, nhng vng lp cc cu lnh trong


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

5.8 Shell - mt ngn ng lp trnh

123

im khc bit nm ch, s dng gi tr ph nh ca iu kin list1, tc


l list2 thc hin, nu cu lnh cui cng trong danh sch list1 tr li trng
thi thot ra khc khng.

5.8.7

Cc hm s

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


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

5.8.8

Tham s

Khi hm s c gi thc hin, cc tham s ca hm s tr thnh cc tham


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

5.8.9

Bin ni b (local)

Nu mun to mt tham bin a phng, c th s dng t kha local. C


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

124

Bash

};
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()
{
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

5.10

125

Cu lnh sh

Bn lun lun c th chy mt bn sao ca h v bash nh cu lnh bash hay sh.


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

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

6.1

Ci t chng trnh Midnight Commander

Mc d iu khin h thng tp tin ni chung v lm vic vi cc tp tin


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

trong bn gc tc gi Kostromin dng phin bn 4.5.30, theo kin ngi dch l kh c v khng cn gp
trong nhng bn phn phi Linux mi.

6.2 V ngoi ca mn hnh Midnight Commander

127

Hnh 6.1: Giao din ting Vit ca Midnight Commander


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

Trong phn ln cc bn phn phi chng trnh Midnight Commander khng


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

6.2

V ngoi ca mn hnh Midnight Commander

khi ng Midnight Commander, cn g vo dng lnh shell cu lnh mc


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

Ngoi ra ngi dch cun sch ny cng dch giao din ca Midnight Commander ra ting Vit. V th
nu mun bn c th s dng giao din ting m ca Midnight Commander.
3
panel

128

S dng Midnight Commander

Hnh 6.2: V ngoi ca mn hnh Midnight Commander


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

6.3 Tr gip

129

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

6.3

Tr gip

Khi lm vic vi chng trnh Midnight Commander, c th xem tr gip vo bt


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

130

S dng Midnight Commander

Ngoi nhng t hp phm ch ra cn c th s dng nhng t hp ch lm


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

6.4

S dng chut

Chng trnh Midnight Commander c h tr chut. Tnh nng ny c thc


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

6.5 iu khin cc bng

131

chut ln khung nm di ca bng, th tng ng s thc hin di chuyn di 1


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

6.5

iu khin cc bng

Cc bng ca Midnight Commander thng thng hin th nhng g c trong th


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

6.5.1

Dng danh sch tp tin

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

Hnh 6.3: Hp thoi chn nh dng hin th


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

132

S dng Midnight Commander


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

Khi t a ra nh dng, th u tin cn ch ra kch thc ca bng: half


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

* (asterisk) cho tp tin chng trnh.


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

6.5 iu khin cc bng

133

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)).
Theo mc nh cc th mc con c hin th u danh sch, nhng cng
c th thay i nu nh du ty chn Trn ln tt c tp tin (Mix all files)
ca cu lnh Cu hnh... (Configuration...) thc n Cu hnh (Option). Ngi
dng cng c th chn ch hin th trn bng nhng tp tin tng ng vi mt

134

S dng Midnight Commander

Hnh 6.4: Hp thoi sp xp


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

6.5.2

Nhng ch hin th khc

Ngoi vic a ra nh dng hin th danh sch tp tin trn bng, cn c th a


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

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

6.5 iu khin cc bng

135

Hnh 6.5: Ch thng tin

Hnh 6.6: Ch cy th mc

136

S dng Midnight Commander

Hnh 6.7: Ch xem nhanh


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

6.5.3

Cc t hp phm iu khin bng

iu khin ch lm vic ca bng c th s dng cc cu lnh ca trnh


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

6.5 iu khin cc bng

137

<Home> hoc <Alt>+<<>. Chuyn dng chiu sng ti v tr u tin ca


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

You might also like