Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

tu hoc su dung Linux

T h c s d ng Linux

Tác gi : Kostromin V. A.

D ch và c ng tác: Phan V nh Th nh

Phiên b n: 0.9.4

Ngày 13 tháng 9 n m 2006

Dành cho ng i dùng m i và r t m i...

M c l c

1 H H Linux: l ch s và các b n phân ph i 2

1.1 Th nào là H H nói chung và Linux nói riêng . . . . . . . . . . . . 2

1.1.1 Các h i u hành d ng UNIX . . . . . . . . . . . . . . . . . . 2

1.1.2 M t chút v l ch s . . . . . . . . . . . . . . . . . . . . . . . . 3

1.1.3 c i m chính c a H H Linux . . . . . . . . . . . . . . . . 6

1.2 B n phân ph i Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.3 Yêu c u i v i máy tính . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.4 L y Linux âu? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2 Cài t H H Linux trên cùng máy tính v i Windows 14

2.1 Chu n b cài t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2 Phòng xa và nh ng l i khuyên . . . . . . . . . . . . . . . . . . . . . . 16

2.3 Phân vùng trên a và quá trình kh i ng . . . . . . . . . . . . . . 18

2.3.1 Th nào là c u trúc "hình h c c a a" . . . . . . . . . . . . . 18

2.3.2 Phân vùng và b ng phân vùng c a a . . . . . . . . . . . . . 18

2.3.3 Quá trình kh i ng các H H c a công ty Microsoft . . . . . 20

2.3.4 V n v i các a l n . . . . . . . . . . . . . . . . . . . . . . . 22

2.4 L a ch n trình kh i ng . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.4.1 Trình kh i ng GRUB . . . . . . . . . . . . . . . . . . . . . . 23

2.4.2 Trình kh i ng LILO . . . . . . . . . . . . . . . . . . . . . . 25

2.4.3 Các trình kh i ng khác . . . . . . . . . . . . . . . . . . . . . 26

2.4.4 Các ph ng án kh i ng . . . . . . . . . . . . . . . . . . . . 27

2.5 Chu n b các phân vùng trên a . . . . . . . . . . . . . . . . . . . . 28

2.5.1 L i khuyên khi t o phân vùng . . . . . . . . . . . . . . . . . . 28

2.5.2 Ch ng trình phân chia a . . . . . . . . . . . . . . . . 30

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

2.7 S d ng trình kh i ng GRUB . . . . . . . . . . . . . . . . . . . . . 34

2.7.1 Cài t GRUB . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.7.2 C u hình GRUB . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.8 S d ng trình kh i ng LILO . . . . . . . . . . . . . . . . . . . . . 36

2.8.1 Cài t và c u hình LILO . . . . . . . . . . . . . . . . . . . . 36

2.8.2 Cài t các h i u hành khác sau Linux . . . . . . . . . . . 39

2.8.3 Chuy n th m c /boot lên phân vùng DOS . . . . . . . . . . 39

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

iv M C L C

3 Kh i ng Linux l n u 43

3.1 Kh i ng H H Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.2 ng nh p vào h th ng . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.3 Console, terminal o và shell . . . . . . . . . . . . . . . . . . . . . . 47

3.4 So n th o dòng l nh. L ch s l nh . . . . . . . . . . . . . . . . . . . 49

3.5 Ng ng làm vi c v i Linux . . . . . . . . . . . . . . . . . . . . . . . . 51

3.6 Tr giúp khi dùng Linux . . . . . . . . . . . . . . . . . . . . . . . . . 53

3.6.1 Các ngu n thông tin tr giúp . . . . . . . . . . . . . . . . . . 53

3.6.2 Các trang tr giúp man . . . . . . . . . . . . . . . . . . . . . . 54

3.6.3 Câu l nh info . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

3.6.4 Câu l nh help . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

3.6.5 Tài li u i kèm v i b n phân ph i và ch ng trình ng d ng 56

3.6.6 Câu l nh xman . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

3.6.7 Câu l nh helptool . . . . . . . . . . . . . . . . . . . . . . . . 57

3.6.8 Sách và Internet . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4 Làm quen v i h th ng t p tin ext3fs 60

4.1 T p tin và tên c a chúng . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.2 Th m c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

4.3 Công d ng c a các th m c chính . . . . . . . . . . . . . . . . . . . . 65

4.4 D ng t p tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

4.4.1 Các t p tin thi t b . . . . . . . . . . . . . . . . . . . . . . . . 70

4.4.2 Các ng có tên (pipes) . . . . . . . . . . . . . . . . . . . . . . . 71

4.4.3 Các socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

4.4.4 Liên k t m m . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

4.5 Quy n truy c p n t p tin và th m c . . . . . . . . . . . . . . . . . 73

4.6 Các câu l nh c b n làm vi c v i t p tin và th m c . . . . . . . 79

4.6.1 Câu l nh chown và chgrp . . . . . . . . . . . . . . . . . . . . 80

4.6.2 Câu l nh mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . 80

4.6.3 Câu l nh cat . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

4.6.4 Câu l nh cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

4.6.5 Câu l nh mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

4.6.6 Câu l nh rm và rmdir . . . . . . . . . . . . . . . . . . . . . . 82

4.6.7 Câu l nh more và less . . . . . . . . . . . . . . . . . . . . . 83

4.6.8 Câu l nh tìm ki m find và m u tên t p tin . . . . . . . . . . 83

4.6.9 Câu l nh split . . . . . . . . . . . . . . . . . . . . . . . . . . 86

4.6.10 So sánh các t p tin và l nh patch . . . . . . . . . . . . . . . 87

4.7 Các câu l nh l u tr và nén t p tin . . . . . . . . . . . . . . . . . . . 88

4.7.1 Ch ng trình tar . . . . . . . . . . . . . . . . . . . . . . . . . 89

4.7.2 Ch ng trình gzip . . . . . . . . . . . . . . . . . . . . . . . . 91

4.7.3 Ch ng trình bzip2 . . . . . . . . . . . . . . . . . . . . . . . 92

4.7.4 S d ng k t h p tar v i gzip và bzip2 . . . . . . . . . . . . 94

4.8 T o và g n các h th ng t p tin . . . . . . . . . . . . . . . . . . . . . 95

M C L C v

5 Bash 100

5.1 H v là gì? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

5.2 Các ký t c bi t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

5.3 Th c thi các câu l nh . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

5.3.1 Thao tác ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

5.3.2 Thao tác & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

5.3.3 Thao tác && và || . . . . . . . . . . . . . . . . . . . . . . . . 103

5.4 u vào/ u ra tiêu chu n . . . . . . . . . . . . . . . . . . . . . . . . 103

5.4.1 Dòng d li u vào ­ ra . . . . . . . . . . . . . . . . . . . . . . . 103

5.4.2 L nh echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

5.4.3 L nh cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

5.5 Chuy n h ng u vào/ u ra, ng ng và b l c . . . . . . . . . . 105

5.5.1 S d ng >, < và » . . . . . . . . . . . . . . . . . . . . . . . . . 105

5.5.2 S d ng | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

5.5.3 B l c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

5.6 Tham bi n và các bi n s . Môi tr ng c a h v . . . . . . . . . . . . 108

5.6.1 Các d ng tham bi n khác nhau . . . . . . . . . . . . . . . . . 108

5.6.2 D u nh c c a h v . . . . . . . . . . . . . . . . . . . . . . . . 110

5.6.3 Bi n môi tr ng PATH . . . . . . . . . . . . . . . . . . . . . . . 111

5.6.4 Bi n môi tr ng IFS . . . . . . . . . . . . . . . . . . . . . . . 112

5.6.5 Th m c hi n th i và th m c cá nhân . . . . . . . . . . . . 112

5.6.6 Câu l nh export . . . . . . . . . . . . . . . . . . . . . . . . . 112

5.7 Khai tri n bi u th c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

5.7.1 Khai tri n d u ngo c . . . . . . . . . . . . . . . . . . . . . . . 113

5.7.2 Thay th d u ngã (Tilde Expansion) . . . . . . . . . . . . . . 114

5.7.3 Phép th các tham bi n và bi n s . . . . . . . . . . . . . . . 114

5.7.4 Phép th các câu l nh . . . . . . . . . . . . . . . . . . . . . . . 114

5.7.5 Phép th s h c (Arithmetic Expansion) . . . . . . . . . . . . 115

5.7.6 Phân chia t (word splitting) . . . . . . . . . . . . . . . . . . 115

5.7.7 Khai tri n các m u tên t p tin và th m c (Pathname Ex-

pansion) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

5.7.8 Xóa các ký t c bi t . . . . . . . . . . . . . . . . . . . . . . . 116

5.8 Shell - m t ngôn ng l p trình . . . . . . . . . . . . . . . . . . . . . . 116

5.8.1 Toán t if và test (ho c [ ]) . . . . . . . . . . . . . . . . . . 117

5.8.2 Toán t test và i u ki n c a bi u th c . . . . . . . . . . . . 117

5.8.3 Toán t case . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

5.8.4 Toán t select . . . . . . . . . . . . . . . . . . . . . . . . . . 120

5.8.5 Toán t for . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

5.8.6 Toán t while và until . . . . . . . . . . . . . . . . . . . . . 122

5.8.7 Các hàm s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

5.8.8 Tham s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

5.8.9 Bi n n i b (local) . . . . . . . . . . . . . . . . . . . . . . . . . 123

5.9 Script c a h v và l nh source . . . . . . . . . . . . . . . . . . . . . 124

5.10 Câu l nh sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

vi M C L C

6 S d ng Midnight Commander 126

6.1 Cài t ch ng trình Midnight Commander . . . . . . . . . . . . . . 126

6.2 V ngoài c a màn hình Midnight Commander . . . . . . . . . . . . 127

6.3 Tr giúp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

6.4 S d ng chu t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

6.5 i u khi n các b ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

6.5.1 D ng danh sách t p tin . . . . . . . . . . . . . . . . . . . . . . 131

6.5.2 Nh ng ch hi n th khác . . . . . . . . . . . . . . . . . . . 134

6.5.3 Các t h p phím i u khi n b ng . . . . . . . . . . . . . . . . 136

Danh sách hình v

3.1 Màn hình kh i ng c a GRUB . . . . . . . . . . . . . . . . . . . . . 44

6.1 Midnight Commander ti ng Vi t . . . . . . . . . . . . . . . . . . . . 127

6.2 Màn hình Midnight Commander . . . . . . . . . . . . . . . . . . . . 128

6.3 H p tho i ch n nh d ng hi n th . . . . . . . . . . . . . . . . . . . 131

6.4 H p tho i s p x p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

6.5 Ch thông tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

6.6 Ch cây th m c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

6.7 Ch xem nhanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

Danh sách b ng

1.1 Yêu c u i v i ph n c ng . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1 C u trúc c a sector kh i ng chính . . . . . . . . . . . . . . . . . . 21

2.2 Nhu c u s d ng không gian a c a H H . . . . . . . . . . . . . . 28

3.1 Nh ng câu l nh n gi n c a Linux . . . . . . . . . . . . . . . . . . 46

3.2 Nh ng phím so n th o dòng l nh . . . . . . . . . . . . . . . . . . . . 50

3.3 T h p phím i u khi n l ch s l nh . . . . . . . . . . . . . . . . . . 52

3.4 Các ph n chính c a tr giúp man . . . . . . . . . . . . . . . . . . . . 54

3.5 Phím s d ng xem trang man . . . . . . . . . . . . . . . . . . . . . 55

4.1 C u trúc th m c c a Linux . . . . . . . . . . . . . . . . . . . . . . . 66

4.2 Nh ng t p tin thi t b chính . . . . . . . . . . . . . . . . . . . . . . . 71

4.3 Nh ng tùy ch n chính c a l nh cp . . . . . . . . . . . . . . . . . . . 81

4.4 Tiêu chí tìm ki m c a câu l nh find. . . . . . . . . . . . . . . . . . . 85

4.5 Nh ng tùy ch n chính c a tar . . . . . . . . . . . . . . . . . . . . . 89

4.6 Nh ng tùy ch n chính c a ch ng trình gzip . . . . . . . . . . . . 92

4.7 Nh ng tùy ch n chính c a ch ng trình bzip2 . . . . . . . . . . . . 93

4.8 Nh ng tùy ch n chính c a câu l nh mount . . . . . . . . . . . . . . 98

5.1 Các câu l nh b l c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

5.2 Thay th các tham bi n c bi t . . . . . . . . . . . . . . . . . . . . . 109

5.3 Ký t xác nh d ng d u nh c . . . . . . . . . . . . . . . . . . . . . . 111

5.4 Các ký t t o m u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

6.1 Các t h p phím di chuy n dùng chung . . . . . . . . . . . . . . . . . 129

6.2 Di chuy n trong trình xem t p tin . . . . . . . . . . . . . . . . . . . . 129

6.3 Di chuy n khi xem tr giúp . . . . . . . . . . . . . . . . . . . . . . . 130

L i m u

ây là b n d ch cu n "Linux cho ng i dùng" (sêri sách t h c) c a Kostromin

Victor Alexeevich c ng thêm m t vài kinh nghi m s d ng Linux c a ng i d ch.

B n g c c vi t trên ti ng Nga. Theo yêu c u c a Kostromin A. V., xin c

a ra các liên k t t i b n g c sau ây:

http://rus-linux.net/book1.php?name=book1/oglavl

http://linux-ve.chat.ru/

C m n

Tr c tiên c n c m n Kostromin V. A. ã vi t m t cu n sách v Linux cho

ng i dùng m i tuy t v i, hai bác Nguy n i Quý và Nguy n ng Hoàng

Tuân ã giúp trong vi c s d ng LATEX. Bác Nguy n i Quý ã c và s a

cho phiên b n 0.9. Xin hãy g i th nh c ng i d ch t i [email protected] n u

nh ng i d ch có quên ai ó.

B n quy n

Cu n "T h c s d ng Linux" này s d ng b n quy n Creative Commons Public

License 2.5 (http://creativecommons.org/licenses/by/2.5/).

Tác gi Kostromin V. A. c ng nh ng i d ch và c ng tác không ch u trách

nhi m v h u qu do vi c s d ng cu n sách này gây ra. M i ngh s a i,

thông báo l i chính t , l i ki n th c c a b n d ch c ng nh ngh giúp d ch

xin g i cho Phan V nh Th nh theo a ch [email protected].

Ch ng 1

H H Linux: l ch s và các b n phân ph i

"Just for fun" ­ Linus Torvalds.

Ng i d ch: L ch s luôn là i m kh i u khi nghiên c u m t ngành khoa h c nào ó.

Không có ngo i l i v i Toán h c, V t lý, môn chuyên ngành c a tôi ­ Hoá h c và t t nhiên

c H H Linux. Trong ch ng u tiên c a cu n sách "T h c s d ng Linux" này chúng ta

s tr l i ng n g n cho câu h i "Linux là gì?". ng th i nói ôi dòng v nh ng i m c bi t

c a Linux, yêu c u c a Linux i v i ph n c ng, khái ni m b n phân ph i Linux, và cách có

c nh ng b n phân ph i này. H n th n a b n c s hi u ít nhi u v OpenSource, GNU

và FSF.

1.1 Th nào là H H nói chung và Linux nói riêng

1.1.1 Các h i u hành d ng UNIX

H i u hành (H H) ó là m t b các ch ng trình h tr vi c i u khi n ph n

c ng c a máy tính, t ch c làm vi c v i các t p tin (trong ó có ch y và i u

khi n vi c th c hi n c a các ch ng trình), và ng th i th c thi s giao ti p v i

ng i dùng, t c là d ch các câu l nh c a ng i dùng và hi n th k t qu làm vi c

c a nh ng l nh này.

Không có h i u hành thì máy tính không th c hi n c ch c n ng c a

mình. Trong tr ng h p ó máy tính ch là m t t p h p các thi t b i n t

không làm vi c, không hi u là làm gì.

n th i i m hi n nay thì các h i u hành n i ti ng nh t cho máy tính là

Microsoft Windows (C) và UNIX. Windows b t ngu n t h i u hành MS-DOS

tr c ây làm vi c trên các máy tính c a hãng IBM. H i u hành UNIX do

nhóm các nhà phát tri n Bell Labs vi t ra vào n m 1969 d i s i u khi n c a

Dennis Ritchie, Ken Thompson và Brian Kernighan. Nh ng bây gi khi nói n

h i u hành UNIX th ng có ý không nói c th m t h i u hành c th nào

mà là m t nhóm các h i u hành dòng UNIX (UNIX-liked OS). Chính b n thân

t UNIX (vi t hoa t t c các ch cái) tr thành nhãn hi u th ng m i c a t ng

công ty AT&T.1

1Ng i d ch: Ng i m "không ng i ng n" ng ký nhãn hi u th ng m i b t k th gì, k c Yoga mà b t

ngu n t n .

1.1 Th nào là H H nói chung và Linux nói riêng 3

Vào cu i nh ng n m 70 c a th k tr c (th k XX) các nhà phát tri n c a

tr ng i h c California Berkeley ã thêm vào mã ngu n c a UNIX r t nhi u

s c i ti n trong ó có h tr giao th c2 TCP/IP (giao th c m ng chính hi n nay).

S n ph m này n i ti ng d i tên BSD ("Berkeley Systems Distribution"). i u

c bi t ch b n quy n c a s n ph m cho phép ng i khác phát tri n và c i ti n

và chuy n k t qu thu c n ng i th ba (cùng v i mã ngu n ho c không)

v i i u ki n là ph i ch ra ph n nào c a mã c phát tri n Berkeley.

H i u hành dòng UNIX, trong ó có BSD, lúc u c phát tri n làm

vi c v i các máy tính nhi u ng i dùng ­ các mainframe. Nh ng d n d n c u

hình trang thi t b c a máy tính cá nhân c ng m nh lên và hi n nay có kh

n ng cao h n so v i nh ng mainframe c a nh ng n m 70 th k tr c. Và và

u nh ng n m 90 m t sinh viên c a tr ng i h c Helsinki (Ph n Lan), Linus

Torvalds, ã b t u phát tri n m t H H ki u UNIX cho các máy tính cá nhân

t ng thích v i IBM (IBM-compatible PC).

1.1.2 M t chút v l ch s

H H Linux v a k ni m sinh nh t l n th 15 c a mình. ây là b c th mà

Linus g i vào nhóm tin t c comp.os.minix ngày 25 tháng 8 n m 1991 ( c coi

là ngày sinh nh t c a H H này):

From: [email protected] (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: <[email protected]>

Date: 25 Aug 91 20:57:08 GMT

Organization: University of Helsinki

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and

professional like gnu) for 386(486) AT clones. This has been brewing

since april, and is starting to get ready. I'd 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).

I've currently ported bash(1.08) and gcc(1.40), and things seem to

work. This implies that I'll get something practical within a few

months, and I'd like to know what features most people would want.

Any suggestions are welcome, but I won't promise I'll implement

them :-)

Linus ([email protected])

PS. Yes - it's 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 that's all

I have :-(.

Trong th này Linus cho bi t anh ang phát tri n m t h i u hành t do cho

các máy tính i 386 (486) và yêu c u nh ng ai quan tâm cho bi t nh ng thành

ph n nào c a h th ng cho ng i dùng c n ph i có u tiên. Nh ng ng i dùng

trong nhóm tin t c này ã làm vi c d i h i u hành Minux do giáo s Andy

2protocol

4 H H Linux: l ch s và các b n phân ph i

Tanenbaum vi t ra làm công c h c t p cho các sinh viên l p trình. Minux

làm vi c trên các máy tính v i b x lý 286 và c Linus dùng làm mô hình cho

H H m i.

T p tin phiên b n u tiên c a Linux (phiên b n 0.01) c công b trên

Internet ngày 17 tháng 09 n m 1991. Linus Torvalds vi t: "As I already men-

tioned, 0.01 didn't 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 wasn't too proud of it, so I think I only sent a note to everybody who had

shown interest." ("Nh tôi ã nói tr c ây, 0.01 không i kèm theo binary nào:

nó ch là mã ngu n cho nh ng ai mu n bi t linux trông ra sao. Chú ý r ng không

có thông báo cho b n 0.01: tôi không t hào l m v nó, vì th ch g i thông báo

n t t c nh ng ai mu n th hi n s quan tâm.")3

Sau ó ngày 05 tháng 10 n m 1991 phiên b n 0.02 ra i. ây là phiên b n

ã có th làm vi c trên máy. N u b n c quan tâm n l ch s c a H H này thì

hãy c trang web sau: http://www.li.org/linuxhistory.php. ó b n s

nh n c thông tin chi ti t v l ch s xu t hi n và phát tri n Linux.

Linus Torvalds không ng ký b ng sáng ch c ng nh không gi i h n vi c

phân ph i H H m i này. Ngay t u Linux ã c phân ph i theo i u ki n

c a b n quy n General Public License (GPL)4 th ng dùng cho các ph n m m

ng d ng Open Source và d án GNU. Theo ti ng lóng c a Linux thì b n quy n

này ôi khi c g i là Copyleft. V b n quy n này, Open Source và d án GNU

c n ph i nói n m t cách c bi t.

Vào n m 1984 nhà bác h c ng i m Richard Stallman sáng l p ra T ch c

ph n m m t do (FSF, Free Software Foundation) có trang ch n m t i a ch

http://www.fsf.org. M c ích c a t ch c này là lo i tr t t c nh ng i u

c m oán và h n ch phân ph i, sao chép, s a i, nghiên c u ch ng trình ng

d ng. B i vì tính n th i i m b t u xây d ng t ch c thì các công ty th ng

m i gi r t c n th n các ch ng trình ng d ng c a mình, b o v nó b ng các

b ng sáng ch , các d u hi u b o v quy n tác gi , gi bí m t nghiêm ng t mã

ngu n c a ch ng trình vi t trên các ngôn ng b c cao (nh C++). Stallman cho

r ng vi c này r t có h i i v i phát tri n ch ng trình ng d ng, d n n vi c

gi m ch t l ng ch ng trình và s có m t c a r t nhi u l i không xác nh

c trong nh ng ch ng trình này. T i t nh t là làm ch m quá trình trao i

ý t ng trong ngành l p trình, làm ch m quá trình t o ng d ng m i vì m i nhà

l p trình s ph i vi t l i t u m t ng d ng thay vì dùng o n mã ngu n ã

có trong ng d ng khác.

Trong khuôn kh T ch c ph n m m t do ã b t u làm vi c d án GNU

(http://www.gnu.org) ­ d án t o ch ng trình ng dùng mi n phí. GNU là

t vi t t t c a GNU's Not Unix, t c là nh ng gì thu c v d án GNU không ph i

là m t ph n c a Unix (vào th i gian ó th m chí t UNIX ã tr thành th ng

3Ng i d ch: R t thú v là sau khi Linus Torvalds phát tri n H H c a mình thì gi a anh và giáo s Andy

Tanenbaum ã n ra m t cu c tranh cãi. N u b n c quan tâm thì có th tìm c nh ng th mà hai ng i này

g i cho nhau trong nhóm tin t c nói trên, ho c tìm c cu n "Linux: Just for fun", m t cu n sách nói v i t

c a Linus Torvalds n th i i m anh làm cho Transmeta và vi c phát tri n H H Linux.

4Ng i d ch: Th t ra lúc u nhân Linux c phân ph i theo b n quy n mà FSF không không nh n

là t do vì nghiêm c m phân ph i th ng m i. B n quy n này có th tìm th y trong nh ng phiên b n u

tiên c a nhân trên ftp.kernel.org, ví d ftp://ftp.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES-

0.01. B n quy n c i sang GPL t phiên b n 0.12, hãy xem RELNOTES-0.12 theo a ch trên.

1.1 Th nào là H H nói chung và Linux nói riêng 5

hi u, do ó không còn t do). Trong "Manifesto GNU" (http://www.gnu.org/

gnu/manifesto.html) vào n m 1985 Stallman vi t r ng ng l c ông sáng

l p ra FSF và d án GNU ó là s khó ch u trong quy n s h u c a m t s ng i

i v i ch ng trình ng d ng.

Nh ng gì do d án GNU phát tri n là t do, nh ng không có ngh a là

chúng c phân ph i không có b n quy n và không c lu t pháp b o v .

Nh ng ch ng trình Open Source (Mã ngu n m ) c phân ph i theo i u ki n

c a b n quy n General Public License (GPL). B n có th c b n quy n này

theo a ch http://www.gnu.org/copyleft/gpl.html. B n d ch ti ng Vi t

không chính th c n m t i http://vi.openoffice.org/gplv.html. N u nh

nói m t cách th t ng n g n thì b n ch t c a GPL nh sau. Ch ng trình ng

d ng phân ph i theo GPL c quy n phát tri n, s a i, chuy n ho c bán cho

ng i khác không h n ch v i m t i u ki n là k t qu thu c c ng ph i phân

ph i theo b n quy n copyleft. i u ki n cu i là quan tr ng và then ch t c a b n

quy n này. Nó b o m r ng k t qu lao ng c a các nhà phát tri n ph n m m

t do s luôn luôn m và không tr thành m t ph n c a s n ph m nào ó dùng

b n quy n bình th ng (ý nói s n ph m óng). i u ki n này c ng phân bi t

ph n m m t do v i ph n m m phân ph i mi n phí. Nói nh các nhà sáng l p

ra FSF, thì b n quy n GPL "làm cho ch ng trình ng d ng t do và m b o là

ch ng trình này s t do"5.

G n nh t t c các ch ng trình ng d ng phân ph i theo i u ki n GPL có

th coi là mi n phí i v i ng i dùng (trong ph n l n các tr ng h p nh n

c nó b n ch ph i tr ti n a CD, DVD ho c k t n i Internet). i u ó không

có ngh a là các nhà l p trình không còn nh n c ph n th ng (ti n) cho công

vi c c a mình. Ý t ng chính c a Stallman là ch không ph i bán ch ng trình

ng d ng, mà bán chính s c lao ng c a nhà l p trình. ây c n ph i a ra

ví d b n c hi u rõ h n: ngu n thu nh p có th là các s n ph m i kèm ho c

d ch v cài t và c u hình cho nh ng máy tính m i ho c phát tri n cho nh ng

i u ki n làm vi c m i, d y cách s d ng, v.v. . . M t ph n th ng t t n a ó là

khi ch ng trình tr lên n i ti ng thì tác gi c a ch ng trình s có i u ki n tìm

m t công vi c có l ng cao. Các nhà phát tri n xvnkb (http://xvnkb.sf.net),

unikey (http://unikey.org) và pdfLaTeX (http://www.tug.org), là nh ng

ng i hi u rõ nh t i u này. Hãy vi t th cho h h c h i kinh nghi m!

Trong khuôn kh c a ho t ng Open Source nói chung và d án GNU nói

riêng, ã phát tri n m t l ng áng k các ch ng trình ng d ng, n i ti ng

nh t trong s chúng ó là trình so n th o Emacs và trình biên d ch GCC (GNU

C Compliler) ­ trình biên d ch ngôn ng C t t nh t hi n nay. Vi c m mã ngu n

ng th i nâng cao r t nhi u ch t l ng c a ch ng trình ng d ng: t t c nh ng

gì t t nh t, nh ng ý t ng và cách gi i quy t m i c phân ph i r ng rãi ngay

l p t c, còn các l i s c nh n ra và s a nhanh chóng. ây chúng ta g p

l i c ch ào th i (hay t t h n là ch n l c) t nhiên nh trong thuy t sinh h c

c a Darwin. C ch này b kìm nén trong th gi i ch ng trình ng d ng th ng

m i.

5Ng i d ch: B n c c ng nên bi t là s p t i s có phiên b n th 3 c a GPL (GPLv3). Cùng v i s ra i

c a phiên b n th 3 này ã n y ra r t nhi u tranh cãi xung quanh tính t do c a b n quy n. Tham gia vào tranh

cãi có c ng i vi t ra nhân Linux u tiên ­ Linus Torvalds.

6 H H Linux: l ch s và các b n phân ph i

Tuy nhiên bây gi xin quay l i v i l ch s c a Linux. C n nói r ng Linus

Torvalds ch phát tri n ph n nhân (kernel) c a h i u hành. Nhân này " u"

úng vào mi n " t lành", vì trong d án GNU ã phát tri n s l ng l n các

ti n ích khác nhau. Nh ng chuy n GNU thành m t H H hoàn ch nh thì ch

còn thi u nhân. D án GNU c ng ã b t u phát tri n nhân cho riêng mình

( c g i là Hurd), nh ng vì lý do nào ó ã b ch m l i. Vì th s xu t hi n c a

nhân Linux là r t úng lúc. Nó ng ngh a v i vi c ra i c a m t h i u hành

m i t do phân ph i cùng v i mã ngu n m . Stallman t t nhiên ã úng khi òi

h i h i u hành Linux ph i c g i là GNU/Linux. Nh ng ã thành l ng i

dùng th ng s d ng tên g i c a nhân làm tên g i c a h i u hành, và chúng

ta c ng làm nh v y trong cu n sách này.

1.1.3 c i m chính c a H H Linux

Do mã ngu n Linux phân ph i t do và mi n phí, nên ngay t u ã có r t

nhi u nhà l p trình tham gia vào quá trình phát tri n h th ng. Nh ó n th i

i m hi n nay Linux là h i u hành hi n i, b n v ng và phát tri n nhanh

nh t, h tr các công ngh m i g n nh ngay l p t c. Linux có t t c các kh

n ng, c tr ng cho các h i u hành y tính n ng dòng UNIX. Xin a ra

ây danh sách ng n g n nh ng kh n ng này.

1. Nhi u ti n trình th t s

T t c các ti n trình là c l p, không m t ti n trình nào c c n tr công

vi c c a ti n trình khác. làm c i u này nhân th c hi n ch phân

chia th i gian c a b x lý trung tâm, l n l t chia cho m i ti n trình m t

kho ng th i gian th c hi n. Cách này hoàn toàn khác v i ch "nhi u ti n

trình y nha" c th c hi n trong Windows 95, khi m t ti n trình ph i

nh ng b x lý cho các ti n trình khác (và có th làm ch m tr r t lâu vi c

th c hi n).

2. Truy c p nhi u ng i dùng

Linux không ch là H H nhi u ti n trình, Linux h tr kh n ng nhi u

ng i dùng làm vi c cùng lúc. Khi này Linux có th cung c p t t c các tài

nguyên h th ng cho ng i dùng làm vi c qua các terminal xa khác nhau.

3. Swap b nh lên a

Swap b nh cho phép làm vi c v i Linux khi dung l ng b nh có h n.

N i dung c a m t s ph n (trang) b nh c ghi lên vùng a c ng xác

nh t tr c. Vùng a c ng này c coi là b nh ph thêm vào. Vi c này

có làm gi m t c làm vi c, nh ng cho phép ch y các ch ng trình c n b

nh dung l ng l n mà th c t không có trên máy tính.

4. T ch c b nh theo trang

H th ng b nh Linux c t ch c d ng các trang v i dung l ng 4K.

N u b nh y, thì H H s tìm nh ng trang b nh ã lâu không c s

d ng chuy n chúng t b nh lên a c ng. N u có trang nào ó trong

s nh ng trang này l i tr thành c n thi t, thì Linux s ph c h i chúng t

a c ng (vào b nh ). M t s h th ng Unix c và m t s h th ng hi n i

1.1 Th nào là H H nói chung và Linux nói riêng 7

(bao g m c Microsoft Windows) chuy n lên a t t c n i dung c a b nh

thu c v nh ng ng d ng không làm vi c t i th i i m hi n th i (t c là T T

C các trang b nh thu c v ng d ng s c l u lên a khi không b

nh ) và nh v y kém hi u qu h n.

5. N p mô un th c hi n "theo yêu c u"

Nhân Linux h tr vi c cung c p các trang b nh theo yêu c u, khi này

ch ph n mã c n thi t c a ch ng trình m i n m trong b nh , còn nh ng

ph n mã không s d ng t i th i i m hi n t i thì n m l i trên a.

6. Cùng s d ng ch ng trình

N u c n ch y m t lúc nhi u b n sao c a cùng m t ng d ng nào ó6, thì

Linux ch n p vào b nh m t b n sao c a mã ch ng trình và t t c các

ti n trình gi ng nhau cùng s d ng m t mã này.

7. Th vi n chung

Th vi n ­ b các quá trình (thao tác) c ch ng trình dùng làm

vi c v i d li u. Có m t s th vi n tiêu chu n c dùng cùng lúc cho vài

ti n trình. Trên các h th ng c nh ng th vi n ó n m trong m i t p tin

ch ng trình, và th c hi n cùng lúc nh ng ch ng trình này d n n hao

h t b nh không áng có. Trên các h th ng m i (bao g m Linux) có h tr

làm vi c v i các th vi n ng (dynamic) và t nh (static) c chia ra, và

nh v y cho phép gi m kích th c b nh b ng d ng chi m.

8. B m ng c a a

B m c a a ó là m t ph n b nh c a h th ng dùng làm n i l u

nh ng d li u th ng dùng c a a, nh ó nâng cao r t nhi u t c truy

c p t i nh ng ch ng trình và ti n trình th ng dùng. Ng i dùng MS-

DOS s nh n ch ng trình SmartDrive, ch ng trình này d tr m t

ph n b nh có kích th c xác nh làm b m cho a. Linux s d ng

h th ng m linh ng h n: b nh c d tr cho m c t ng lên khi

b nh không c s d ng, và s gi m xu ng khi h th ng hay ti n trình

c n nhi u b nh h n.

9. 100% t ng ng v i tiêu chu n POSIX 1003.1. H tr m t ph n các

kh n ng c a System V và BSD

POSIX 1003.1 (Portable Operating System Interface ­ giao di n c a h

i u hành l u ng) a ra giao di n tiêu chu n cho các h th ng Unix, ó

là m t b các th t c ngôn ng C. Ngày nay giao di n này c t t c các

h i u hành m i h tr . Microsoft Windows NT c ng h tr POSIX 1003.1.

Linux 100% t ng ng v i tiêu chu n POSIX 1003.1. Thêm vào ó Linux

còn h tr các kh n ng c a System V và BSD t ng tính t ng thích.

10. System V IPC

Linux s d ng công ngh IPC (InterProcess Communication) trao i

thông tin gi a các ti n trình, s d ng tín hi u và b nh chung.

6ho c m t ng i dùng ch y vài ti n trình gi ng nhau, ho c nhi u ng i dùng ch y cùng m t ch ng trình

8 H H Linux: l ch s và các b n phân ph i

11. Kh n ng ch y ch ng trình c a H H khác

Trong l ch s Linux không ph i là h i u hành u tiên. Ng i ta ã

vi t ra hàng lo t các ch ng trình ng d ng, trong ó có c nh ng ch ng

trình có ích và không n n i t i, cho các H H ã phát tri n tr c Linux,

bao g m DOS, Windows, FreeBSD và OS/2. ch y nh ng ch ng trình

nh v y d i Linux ã phát tri n các trình gi l p (emulator) cho DOS,

Windows 3.1, Windows 95 và Wine. Ngoài ra, còn có m t lo t các ch ng

trình t o máy o7 mã ngu n m c ng nh s n ph m th ng m i: qemu,

bochs, pearpc, vmware,. . . H H Linux còn có kh n ng ch y ch ng trình

dành cho b x lý Intel c a các h th ng Unix khác, n u h th ng áp ng

tiêu chu n iBCS2 (intel Binary Compatibility).

12. H tr các nh d ng h th ng t p tin khác nhau

Linux h tr m t s l ng l n các nh d ng h th ng t p tin, bao g m các

h th ng t p tin DOS và OS/2, và c các h th ng t p tin m i, nh reiserfs,

HFS,. . . . Trong khi ó h th ng t p tin chính c a Linux, c g i là Second

Extended File System (ext2fs) và Third Extended File System (ext3fs) cho

phép s d ng không gian a m t cách có hi u qu .

13. Kh n ng h tr m ng

Linux có th g n vào b t k m ng n i b nào. H tr t t c các d ch v Unix,

bao g m Networked File System (NFS), k t n i t xa (telnet, rlogin, ssh),

làm vi c trong các m ng TCP/IP, truy c p dial-up qua các giao th c SLIP

và PPP,v.v. . . ng th i có h tr dùng Linux là máy ch ho c máy khách

cho m ng khác, trong ó có chia s (dùng chung, sharing) các t p tin và in

t xa trong các m ng Macintosh, NetWare và Windows.

14. Làm vi c trên các ph n c ng khác nhau

M c dù u tiên H H Linux c phát tri n cho máy tính cá nhân (PC)

trên n n t ng Intel 386/486, bây gi nó có th làm vi c trên t t c các b

vi x lý Intel b t u t 386 và k t thúc là các h th ng nhi u b x lý

Pentium IV, bao g m c các b x lý 64bit. ng th i Linux còn làm vi c

trên r t nhi u b x lý t ng thích v i Intel c a các nhà s n xu t khác,

nh AMD. Trong Internet còn có nh ng thông báo nói r ng trên các b x

lý Athlon và Duron c a AMD Linux còn làm vi c t t h n so v i trên Intel.

Ngoài ra còn có phiên b n Linux cho các b x lý khác bao g m ARM, DEC

Alpha, SUN Sparc, M68000 (Atari và Amiga), MIPS, PowerPC và nh ng

b x lý khác8. Xin c nói luôn là trong cu n sách này chúng ta ch xem

xét tr ng h p Linux cho các máy tính t ng thích v i IBM.

1.2 B n phân ph i Linux

Trong b t k h i u hành nào c ng có th chia ra 4 ph n chính: nhân, c u

trúc (h th ng) t p tin, trình d ch l nh ng i dùng và các ti n ích. Nhân ó là

7cho phép s d ng nhi u h i u hành trên m t máy

8Ng i d ch: b n phân ph i Linux h tr nhi u b x lý nh t c n ph i k n Debian (http://www.

debian.org)

1.2 B n phân ph i Linux 9

thành ph n chính, nòng c t c a H H, nó i u khi n các thi t b ph n c ng và

i u khi n vi c th c hi n ch ng trình. C u trúc t p tin (h th ng t p tin) ­ là

h th ng l u t p tin trên các thi t b l u. Trình d ch l nh hay h v (shell) ­ là

ch ng trình t ch c giao ti p gi a máy tính và ng i dùng. Và cu i cùng các

ti n ích ­ ó n gi n là các ch ng trình riêng l , nói chung không khác so v i

nh ng ch ng trình bình th ng khác mà ng i dùng có th ch y, nh ng có ch c

n ng chính là th c hi n các công vi c d ch v (service).

Nh ã nói trên, n u chính xác thì t "Linux" ch có ngh a là nhân. Vì th

khi nói v h i u hành nói chính xác h n s là "h i u hành d a trên nhân

Linux". Nhân c a H H Linux hi n th i ang c phát tri n d i s lãnh o

c a Linus Torvalds và phân ph i m t cách t do (v i b n quy n GPL) gi ng nh

m t s l ng kh ng l các ch ng trình ng d ng và ti n ích khác. M t trong

nh ng k t qu c a vi c phân ph i t do ch ng trình ng d ng cho Linux ó là

có nhi u công ty c ng nh nhóm các nhà phát tri n c l p ã phát hành ra các

b n Linux khác nhau c g i là "b n phân ph i Linux".

B n phân ph i ­ ó là m t b các ch ng trình ng d ng bao g m t t c b n

ph n chính c a H H, t c là nhân, h th ng t p tin, h v shell và các ti n ích,

ng th i còn có thêm các ch ng trình cho công vi c hàng ngày c a ng i dùng.

Thông th ng t t c nh ng ch ng trình n m trong b n phân ph i Linux u

dùng b n quy n GPL. R t có th xu t hi n trong b n c ý ngh r ng b t k ai

c ng có kh n ng cho ra b n phân ph i Linux, hay nói úng h n là b t k ng i

nào không l i s u t p các ch ng trình t do. Và suy ngh ó có ph n nào úng.

Tuy nhiên các nhà phát tri n c a m t b n phân ph i Linux c n t o ra ít nh t

m t ch ng trình cài t a H H lên máy tính tr ng không ch a có H H

nào. Ngoài ra, c n tìm cách gi i quy t s ph thu c và mâu thu n gi a các gói

(và gi a các phiên b n c a gói) ch ng trình. Và nh chúng ta s th y sau ó

không ph i là bài toán n gi n.

Tuy v y, trên th gi i ang có hàng tr m (hàng nghìn?) b n phân ph i Linux

và m i ngày l i xu t hi n các b n m i. Có th tìm th y danh sách t ng i

y cùng v i c i m ng n g n c a m i b n phân ph i trên http://www.

linuxhq.com (còn có m t s b n phân ph i khác ti ng Anh). Ngoài ra, trên

trang ó c ng nh nhi u trang web khác còn có liên k t n nh ng danh sách

b n phân ph i khác, vì th n u mu n có th tìm th y t t c nh ng gì có trên th

gi i (h u h t nh ng trang này dùng ti ng Anh và các b n phân ph i Vi t Nam ít

c nói n).

M t vài tác gi ã th phân lo i các b n phân ph i d a trên nh ng tiêu chí

khác nhau:

c u trúc h th ng t p tin

ch ng trình cài t

ph ng ti n dùng cài t các gói ch ng trình

thành ph n c a các ti n ích và ch ng trình ng d ng có trong b n phân

ph i.

M c dù h u h t các tác gi cho r ng s khác nhau gi a các b n phân ph i là

không c b n. Nh ng hi n nay có th chia ít nh t 3 nhóm b n phân ph i, mà i

di n c a m i nhóm là Red Hat, Slackware và Debian.

10 H H Linux: l ch s và các b n phân ph i

V y thì c n l a ch n b n phân ph i theo tiêu chu n nào? Theo ý ki n c a tác

gi thì i v i ng i dùng Vi t Nam có hai tiêu chu n: th nh t ph i có giao di n

ng i dùng ti ng Vi t và th hai ph i có m t nhóm các nhà phát tri n h tr b n

phân ph i này. Và t t nh t n u nhóm các nhà phát tri n này nh n c ngu n

l i t s n ph m Linux c a mình, t c là làm vi c nh m t công ty th ng m i.

Th m chí ch trong kho ng th i gian không lâu mà tôi s d ng Linux (kho ng

5 n m) ã có nhi u b n phân ph i Vi t Nam c ng nh n c ngoài ã chào t m

bi t th gi i Linux vì nhóm h tr c a chúng không thu c nhi u l i nhu n và

sau ó m t th i gian ng ng h tr tác ph m c a mình.

i v i ng i dùng Linux Vi t Nam hi n th i có hai l a ch n: th nh t, s

d ng các s n ph m Linux ti ng Vi t do m t s ng i t nguy n duy trì; th hai,

s d ng các s n ph m Linux l n có h tr ti ng Vi t. Chúng ta s nói n hai

s l a ch n này m t cách k càng h n. L a ch n th nh t, theo ý ki n c a tôi

không c u tiên ây. Lý do chính là ch a t c tiêu chu n th hai nêu

trên. Hi n th i có m t b n phân ph i nh v y: vnlinux-CD (cùng v i m t vài bi n

th ) do anh Larry Nguy n, m t Vi t ki u M duy trì. L a ch n th hai ó là s

d ng các b n phân ph i h tr ti ng Vi t t t nh Debian, Ubuntu và Mandriva,

openSuSE c ng ang d n d n h tr ti ng Vi t (http://vi.opensuse.org).

L a ch n th hai này c u tiên vì:

chúng có h tr ti ng Vi t và càng ngày càng hoàn thi n

chúng có trình cài t t t, h tr nhi u ph n c ng khác nhau

có th cài t thêm các ph n m m khác m t cách d dàng ph n l n ch ng

trình ã c biên d ch s n cho m i yêu c u c a ng i dùng

nh ng b n phân ph i này c m t nhóm các nhà phát tri n duy trì, c p

nh t th ng xuyên thông th ng là theo m t l ch nh s n. Ngoài ra còn

m b o là b n s nh n c phiên b n m i c a nó trong t ng lai. Không

s tr ng h p " em con b ch ".

k t thúc câu chuy n v l a ch n b n phân ph i Linux c n nói thêm là g n

ây bác Nguy n i Quý (http://vnoss.org) ã cho ra i m t b n phân ph i

m i h ng v ng i dùng Vi t Nam ­ FCxVnOSS. B n phân ph i này d a trên

n n t ng c a FC c ng thêm giao di n ti ng Vi t và m t s ng d ng "mang tính

Vi t Nam" nh ch ng trình gõ ti ng Vi t, t i n ti ng Vi t,. . .

C n nói vài l i v ánh s phiên b n. C n phân bi t s phiên b n c a b n

phân ph i và s phiên b n c a nhân. Khi nói n phiên b n c a Linux th ng

có ý là phiên b n nhân (vì m t h i u hành là Linux ch khi nó s d ng nhân

Linux). Vì Linus Torvalds ti p t c i u hành vi c phát tri n nhân, nên phiên

b n c a nhân t ng lên theo th t , ch không phân nhánh và nhân lên gi ng

nh tr ng h p b n phân ph i.

Phiên b n nhân Linux th ng c ký hi u b ng ba s 9, phân cách nhau b i

d u ch m. Ví d , b n phân ph i openSuSE Linux 10.1 c d a trên nhân phiên

b n 2.6.16.13, t c là Linux phiên b n 2.6.16.13. Phiên b n nhân v i s th hai

9Ng i d ch: i u này ch úng v i các phiên b n nhân tr c 2.6. T 2.6 tr i Linus và các nhà phát tri n

khác th nghi m dùng b n s .

1.3 Yêu c u i v i máy tính 11

l (ví d , 2.5.0) th ng không c s d ng t o các b n phân ph i, vì ó là

phiên b n th nghi m (ch dành cho phát tri n). Chúng c dành cho nh ng

ng i tình nguy n có mong mu n th nghi m tìm ra các l i. T t nhiên phiên

b n nh v y có th làm vi c, nh ng không b n v ng. Phiên b n v i s th hai

ch n (ví d 2.6.16.13) c coi là làm vi c n nh. T t nhiên là b n có th cài

t b t k phiên b n nào, nh ng i v i ng i dùng m i thì nên ch n phiên b n

nhân v i s th hai trong phiên b n là ch n. N u cài t m t b n phân ph i y

thì ng nhiên l a ch n nhân ã c các nhà phát tri n làm giùm b n c,

nh ng c n bi t cách ánh s phiên b n n u khi nào ó b n mu n c p nh t nhân

Linux c a mình.

1.3 Yêu c u i v i máy tính

Tôi ã c âu ó nói r ng có nh ng phiên b n Linux c bi t, làm vi c th m

chí trên b x lý 8086 v i 512Kbyte b nh , còn phiên b n c bi t có th ch y t

m t ho c hai a m m không c n a c ng thì tôi ã g p.

Vì th n u b n có m t cái máy tính c , trên ó không th ch y n i Windows,

thì có th s d ng nó h c Linux và r t có th s ng c nhiên v kh n ng c a

H H này. Nh ng trong cu n sách này chúng ta s không xem xét nh ng tr ng

h p c bi t nh v y. Vì H H Linux s d ng ch b o v c a b vi x lý, nên

cài t H H này c n ít nh t là m t máy tính có b x lý 386. Theo các ngu n

thông tin khác nhau thì t t c các bi n th u dùng t t: SX, DX v.v. . . Xin ng

lo l ng, nh ng máy tính s n xu t g n ây áp ng c toàn b nh ng yêu c u

ã a ra và s a ra d i ây. Yêu c u i v i ph n c ng c a h th ng mu n

cài t Linux còn c xác nh b i l a ch n ph n m m c a ng i dùng (và t c

là s ph thu c vào phiên b n c a các ph n m m và ít nhi u vào b n phân ph i).

B ng 1.1 d i ây s a ra m t vài con s ch v i m c ích giúp b n c làm

quen, nh ng con s này là không chính xác10 nh ng không khác bi t nhi u gi a

các b n Linux khác nhau.

B ng 1.1: Yêu c u i v i ph n c ng

Mong mu n c a ng i dùng Yêu c u, MB

B nh a c ng

Yêu c u nh nh t: ch làm vi c trong giao di n v n 8 200

b n v i dòng l nh c a shell, có m t s ng d ng

ng i dùng nh vim, emacs,. . .

Dùng c giao di n ho X Window cùng v i m t 32 400

s trình qu n lý c a s nh nh nh icewm, fluxbox,

windowmaker.

Dùng môi tr ng làm vi c ho KDE. 128 1000

Ch y các ng d ng c n nhi u b nh (nh GIMP, các 256 1500

ng d ng n m trong KOffice, OpenOffice.org).

Nh v y Linux có m t u i m l n ó là kh n ng làm vi c th m chí trên

10Ng i d ch: b n g c a ra m t b n ã quá c , tôi xin a ra m t b n m i d a trên c s c a openSuSE

10.1.

12 H H Linux: l ch s và các b n phân ph i

nh ng máy r t c , mà tr c ây ch có th dùng MS DOS (t t nhiên là trong

tr ng h p này chúng ta ch thu c ch dòng l nh, nh ng i u này không

ng n c n vi c dùng các máy tính c làm vi c có l i ví d làm router11). b t

u h c Linux thì ch c n có m t máy tính v i b x lý 486, 16MB b nh và

c ng kho ng 300MB. T t nhiên i v i dung l ng b nh c ng nh c u hình

máy nói chung thì máy càng m nh, càng nhi u b nh , c ng càng r ng thì càng

t t. Không có gì là th a thãi.

Ng i d ch: k t thúc xin a ra ây tr ng h p c u hình máy c a tôi:

b x lý 686, b nh 256Mb (+256Mb swap), 10GB c ng dành cho cài t

Linux, ph n còn l i dành cho d li u. Tôi hi n s d ng openSuSE Linux 10.1

v i môi tr ng làm vi c KDE. Có th làm vi c ng th i nhi u ng d ng yêu c u:

OpenOffice.org, KBabel, Kile (dùng vi t nh ng dòng này), StarDict (ch ng

trình t i n), Konqueror, GIMP. N u máy tính c a b n có th làm vi c v i các

h i u hành Windows 2000 và Windows XP thì vi c ch y Linux trên nó s không

có gì khó kh n.

1.4 L y Linux âu?12

Và trong ph n cu i c a ch ng th nh t chúng ta s tr l i ng n g n cho câu h i

"L y Linux âu?".

Nh ã nói trên, Linux cùng v i m t s l ng kh ng l các ch ng trình

ng d ng c phân ph i g n nh mi n phí. Có ngh a là ng i dùng không có ý

nh thay i ch ng trình ho c mua bán nh ng ch ng trình này, thì có toàn

quy n sao chép toàn b b n phân ph i Linux ho c m t ph n b t k c a nó

ch ng i quen, ho c t i xu ng t Internet ho c mua a CD (DVD) Linux ch

nh ng ng i bán hàng âu ó trên hè ph mà không s b truy c u vì vi ph m

b n quy n (các ch ng trình có b n quy n th ng m i th ng dùng t "s ng

ý" gi a ng i dùng và nhà phân ph i) c a các nhà (công ty) phát tri n.

Trong s ba ph ng án k trên thì i v i ng i dùng Linux Vi t Nam ph ng

án mua CD, DVD là t t nh t. C n nói thêm là nh ng a ghi v a hè th ng có l i

và có th gây m t d li u ho c làm h ng ph n c ng. T t h n h t là nên mua a

c a m t công ty máy tính ho c qua m t c a hàng trên m ng. Khi ó còn có kh

n ng l a ch n và có b o m là s i c a x u. T t nhiên là chênh l nh giá

thành a ph i không quá cao, giá thành bán Linux bao nhiêu ó là quy n c a

ng i bán (ngoài ra giá thành cao còn có các b n phân ph i chuyên nghi p nh

Xandros, Novell Desktop,. . . ).

Hi n gi trên m ng Vi t Nam ã xu t hi n m t vài c a hàng bán a Linux.

a ch c th xin không a ra ây vì qu ng cáo trong th gi i hi n i ã

không còn là mi n phí. Và vi c gi u a ch không làm nh h ng n nh ng ai

có mong mu n mua Linux nghiên c u.

C n nói riêng v h th ng phát a v i b n phân ph i Ubuntu m t cách mi n

phí. Ch c n vào a ch http://shipit.ubuntu.com ng ký s l ng a b n

c n, t t nhiên có kèm theo a ch b u i n, sau m t th i gian kho ng 1 tháng ­

11máy giúp chuy n h ng các gói m ng

12Ph n này do ng i d ch vi t

1.4 L y Linux âu? 13

1 tháng r i b n s nh n c chúng. Theo tôi ngh ây là cách t t nh t n u b n

không có i u ki n mua a.

Ch ng 2

Cài t H H Linux trên cùng máy tính

v i Windows

"Software is like sex, it's good when it's free" ­ Linus Torvalds.

Thông th ng trên các a c a b n phân ph i Linux ã có h ng d n ng n g n cách cài

t Linux. Ngoài ra, trên Internet b n có th tìm th y r t nhi u cu n sách nó v v n này.

Và t t c các b n phân ph i l n (Debian, Slackware, Fedora, Mandrake, ...) u ã có cu n

h ng d n cài t r t chi ti t, cho m i tình hu ng s d ng. Hãy ch i và hy v ng trong

t ng lai không xa s có b n d ch Ti ng Vi t c a nh ng cu n sách này. Chính vì v y trong

cu n sách này, tác gi s không a ra các b c c th c a vi c cài t, mà xin b n c

hãy tìm các cu n h ng d n t ng ng. Thay vào ó là nh ng gì b n c n bi t và chu n b

tr c khi cài t, ng th i, tác gi s i c th và chi ti t vào nh ng gì c bi t khi cài t

Linux trên máy tính ã có m t trong các h i u hành (H H) Windows c ng nh vi c kh i

ng nhi u h i u hành.

V n ch , ph n l n ng i dùng Vi t Nam tr c khi b t u h c Linux ã

làm quen và r t có th ã có kinh nghi m s d ng các H H dòng Windows nh

Windows 98, Windows 2000 và Windows XP. Và trên th c t thì t m th i Linux

khó có th là H H u tiên mà ng i dùng làm quen. Nh th , m t cách t

nhiên, n u ng i dùng ã làm vi c v i H H Windows và quy t nh th nghi m

v i Linux, thì h không mu n m t i môi tr ng làm vi c quen thu c c a mình,

cùng v i nh ng gì ã t o ra và ã c u hình d i d i Windows. R t may là không

nh t thi t ph i ánh m t t t c nh ng th ó. B i vì trên m t máy tính có th

cùng "chung s ng hòa bình" hai H H và th m chí nhi u h n n a (n u có ch

trên a!). Chính vì th , phía d i s nói cách cài t H H Linux trên máy tính

ã cài t m t trong các h i u hành c a hãng Microsoft.

2.1 Chu n b cài t

Có th cài t Linux b ng m t trong các cách sau:

T a CD-ROM

T b n sao chép Linux trên a c ng

T máy ch t p tin c a m ng n i b qua NFS;

2.1 Chu n b cài t 15

T máy tính khác trong m ng n i b qua SMB;

T máy tính xa (ví d t Internet) qua giao th c FTP;

T m t máy ch WWW qua giao th c HTTP.

Theo ý ki n cá nhân c a tác gi thì thu n ti n và có tính th c t nh t là cài

t Linux t CD-ROM, h n n a vi c mua các a CD bây gi không gây khó kh n

gì. Tr ckhib t ucài t,hãythuth p(hãyvi tlênm tt gi y)t tc nh ng

thông tin c u hình c n thi t c a máy tính. N u nh máy tính c a b n t m th i

v n còn làm vi c d i H H Windows 95/98/2000/XP, thì b n s tìm th y r t

nhi u thông tin n u nh n chu t ph i vào bi u t ng My Computer, ch n l nh

Properties. ây b n có th tìm th y g n h t t t c thông tin c n thi t. N u

nh b n không th y thông tin nào ó, thì c n tìm ki m theo các cách khác, k c

vi c m v máy và c nh ng dòng ch trên thi t b .

giúp b n c, xin c a ra ây danh sách nh ng thông tin c n thu

th p. Xin ng l i bi ng và hãy c g ng ghi càng nhi u d li u v m t thi t b

càng t t (t t c nh ng thông tin có th tìm th y), nh ng d li u này s c n n

khi cài t và c u hình, khi mà vi c tìm ki m chúng s khó kh n h n.

BIOS:

­ nhà s n xu t;

­ s hi u phiên b n.

Controller a c ng: lo i (IDE hay SCSI) và dung l ng c a a (n u

nh b n c dùng a IDE, thì c n ki m tra xem BIOS có h tr vi c truy

c p ch LBA hay không):

­ hda (Master trên controller s 1 hay Primary Master);

­ hdb (Slave trên controller s 1 hay Primary Slave);

­ hdc (Master trên controller s 2 hay Secondary Master);

­ hdd (Slave trên controller s 2 hay Secondary Slave).

­ nhà s n xu t và s m u mã c a adapter SCSI (n u có).

Dung l ng c a b nh (tính b ng Kilobyte

CD-ROM:

­ Giao di n (IDE, SCSI, hay giao di n khác);

­ i v i các a CD-ROM không ph i IDE, c ng nh SCSI - nhà s n

xu t và s m u mã.

Chu t:

­ lo i chu t (serial, PS/2, hay bus mouse);

­ giao th c (Microsoft, Logitech, MouseMan, v.v. . . );

16 Cài t H H Linux trên cùng máy tính v i Windows

­ s nút;

­ i v i chu t c m vào c ng n i ti p thì c n s th t c a c ng ó.

C c màn hình

­ nhà s n xu t;

­ s m u mã (hay chipset s d ng)

­ dung l ng b nh ;

Màn hình

­ nhà s n xu t

­ s m u mã;

­ các giá tr gi i h n (min, max) c a t n s làm m i theo chi u d c và

theo chi u ngang (nh ng giá tr này b n c ch có th tìm th y trong

tài li u i kèm v i màn hình, Windows không hi n th nh ng giá tr

này, và chúng r t quan tr ng trong khi c u hình giao di n h a).

N u nh b n c mu n k t n i m ng (mà UNIX nói chung là H H dành

cho m ng), thì hãy ghi l i nh ng d li u sau:

­ nhà s n xu t và s m u mã c c m ng;

­ a ch IP c a mình;

­ tên c a máy tính trong m ng;

­ m t n m ng con (subnet mask);

­ a ch IP c a gateway;

­ a ch IP c a các máy ch tên mi n (DNS server);

­ a ch IP c a máy ch WINS(Windows Internet Name Service);

­ tên mi n c a công ty b n c.

Lo i và nhà s n xu t c c âm thanh và game controller (n u nh có)

2.2 Phòng xa và nh ng l i khuyên

Tr c khi cài t H H Linux sau Windows, r t nên th c hi n vài thao tác "phòng

xa" ("phòng cháy h n ch a cháy"). Vì r t có th b n c s ph i phân vùng l i

a, thay i b n ghi kh i ng (Boot Record) và làm vi c v i các t p tin kh i

ng c ng nh các t p tin c u hình. Các thao tác này không ph i lúc nào c ng

em l i em l i m t k t qu theo ý mu n, và trong tr ng h p x u có th máy

tính c a b n c s không kh i ng n a. Có bi t cách thoát ra kh i tình hu ng

này và ph c h i d li u c n thi t không ó còn là m t câu h i. Nh ng r i vào

tình hu ng nh v y h t s c d dàng nh t là v i ng i dùng l n u tiên cài t

Linux. Chính vì v y, u tiên, c n t o m t a m m kh i ng hay m t a m m

giúp ph c h i h th ng (n u b n c còn ch a t o). Th hai, c n ghi l i nh ng

d li u có giá tr (backup). Và th ba, chu n b các t p tin ( a m m, CD) cài t

2.2 Phòng xa và nh ng l i khuyên 17

cho h th ng c . M t l i khuyên quan tr ng khác: n u có gì ó x y ra không theo

ý mu n thì không nên hoang mang. Xin chia s m t kinh nghi m bu n: khi l n

u tiên tác gi cài Linux trên máy tính ã có Windows NT, và k t qu là máy

tính không th kh i ng c. Không hi u h t v n tác gi ngh là không còn

cách gì khác ngoài nh d ng l i a và cài t l i t u. Bây gi thì tác gi ã

hi u là có th ph c h i l i n u nh không quy t nh quá v i vàng. Vì v y có th

nói r ng Werner Almesberger úng, khi trong h ng d n s d ng LILO có a

ra nh ng l i khuyên sau cho ng i dùng khi r i vào tr ng h p khó kh n nh

v y:

Không ho ng h t. N u nh có gì ó không làm vi c, hãy th m i cách

tìm ra nguyên nhân, ki m tra l i nhi u l n thao tác c a mình. Ch sau khi

ó m i th c hi n các b c s a l i.

Hãy c tài li u. c bi t trong các tr ng h p, khi h th ng làm nh ng gì

b n c không mong i.

Xin thêm m t l i khuyên ph bi n sau: * Hãy xem các t p tin log, t c là các

t p tin ghi l i s ki n c a h th ng (c n tìm chúng trong th m c /var/log).

Nh ã nói trên, quá trình cài t H H Linux nói riêng không ph i là tài

c a cu n sách. Ng i dùng c n tìm các cu n h ng d n t ng ng. Tuy nhiên,

tác gi c ng mu n a ra vài l i khuyên giúp ng i dùng a ra quy t nh

trong khi cài t.

Th nh t, ng v i vàng và hãy chú ý c nh ng thông báo s hi n th trên

màn hình, và hãy suy ngh k khi ch n câu tr l i. minh ch ng cho l i khuyên

này xin c k l i tr ng h p khi tác gi cài Red Hat 7.1, và t ng nh n lên

nút Next, vì cho r ng ph ng án theo m c nh là . K t qu là tác gi không

th truy c p c n máy này qua các giao th c m ng (telnet, ftp, NFS, Samba),

m c dù ã c u hình giao di n m ng cho máy. Nguyên nhân là trong ph ng án

theo m c nh thì t ng l a c cài t, và t ng l a óng h t các truy c p t

m ng. m truy c p này, thì trong quá trình cài t c n ch rõ các d ch v c

m . Nh ng chúng ta quá v i vàng! Th hai, tác gi khuyên không nên ng ý v i

vi c t ng kh i ng vào giao di n h a. Vì cu i cùng ng i dùng không khó

kh n gì khi gõ câu l nh startx, còn vi c c u hình giao di n h a (n u có gì ó

làm vi c không úng) v i ng i dùng m i r t khó thành công.

Sau khi làm xong các công vi c phòng xa, c n quy t nh s t ch c kh i ng

nhi u H H nh th nào, chu n b các a (phân vùng) cài t, t c là c n

chia a thành s phân vùng c n thi t. Nh ng tr c khi chuy n sang các b c

c th chu n b a, xin c nói qua m t chút v c u trúc c a a và quá

trình kh i ng H H. N u ai ó không kiên nh n c ph n lý thuy t này,

thì có th b qua chúng và chuy n th ng n v n ch n ch ng trình kh i

ng.

18 Cài t H H Linux trên cùng máy tính v i Windows

2.3 Phân vùng trên a và quá trình kh i ng

2.3.1 Th nào là c u trúc "hình h c c a a"

Nh b n c bi t, a c ng g m vài a có ph l p t tính, n m trên cùng m t

tr c và quay v i v n t c l n. c/Ghi d li u c th c hi n b i các u c n m

gi a các a này, di chuy n t tâm a ra rìa ngoài c a a. Vòng tròn u c v

ra trên các a khi quay quanh chúng g i là rãnh (track), còn t p h p các rãnh

n m ch ng lên nhau g i là cylinder. M i rãnh l i chia thành các sector, và có

th ghi vào m i sector 512 byte thông tin. Vì th c i m c a m t a th ng

là t p h p ba sô: s cylinder/s rãnh trong cylinder/s sector trên rãnh hay còn

vi t t t là C/H/S (ba ch cái u tiên c a các thu t ng Ti ng Anh t ng ng:

Cyliner/Head/Sector). Ba s này g i là c u trúc "hình h c c a a". a v i c u

trúc hình h c C/H/S có dung l ng C*H*S*512 byte.

a c ng là các thi t b kh i, t là c và ghi thông tin theo các kh i, và kích

th c nh nh t c a kh i b ng m t sector (512 byte). có th ghi thông tin lên

a, c n t u a úng v trí, t c là ch cho controller bi t c n ghi thông tin

này vào sector nào. Sector c ánh a ch theo s th t cylinder, s th t

u c (hay rãnh) và s th t sector trên rãnh.

2.3.2 Phân vùng và b ng phân vùng c a a

Trong các h th ng Intel a th ng c chia thành các phân vùng. R t có th

nguyên nhân c a vi c phân vùng là nguyên nhân l ch s : các phiên b n MS-DOS

u tiên không th s d ng c các a l n, mà dung l ng a l i phát tri n

nhanh h n kh n ng c a DOS. Khi ó ã ngh ra vi c chia a thành các phân

vùng. làm c i u này, trong sector s 0 c a a (sector s 0 c a rãnh u

tiên trong cylinder s 0) ghi nh b ng chia a thành các phân vùng (partition

table). M i phân vùng c dùng nh m t a v t lý riêng r . M t tr ng h p nói

riêng ó là trong các phân vùng khác nhau có th cài t các h i u hành khác

nhau.

B ng phân vùng ch a 4 b n ghi 16 byte cho 4 phân vùng chính. M i b n ghi

có c u trúc nh sau:

struct partition {

char active; /* 0x80: phân vùng kích ho t, 0: không kích ho t */

char begin[3]; /* CHS sector u tiên, 24 bit

char type; /* lo i phân vùng (ví d , 83 -- LINUX_NATIVE) */

char end[3]; /* CHS sector cu i cùng, 24 bit */

int start; /* s c a sector u tiên (32-bit, tính t 0) */

int length; /* s sector có trong phân vùng (32 bit) */

};

B ng phân vùng a th ng c t o b i ch ng trình fdisk. Trên H H

Linux ngoài ch ng trình fdisk "truy n th ng" (tuy v y r t khác so v i ch ng

trình fdisk trong MS-DOS và Windows), còn có hai ch ng trình làm vi c v i

phân vùng a: cfdisk và sfdisk. Ch ng trình cfdisk, gi ng nh fdisk ch

dành làm vi c v i b ng phân vùng a: nó không quan tâm chú ý n thông

tin có trên a. Ch khác bi t v i fdisk giao di n thu n ti n: ch d n s d ng

2.3 Phân vùng trên a và quá trình kh i ng 19

l nh và h th ng trình n (th c n). Ch ng trình sfdisk có vài kh n ng cao

h n, ví d , cho phép thao tác trên các phân vùng ã có c a a.

DOS s d ng tr ng begin và end c a b ng phân vùng và Interrupt 13 c a

BIOS (Int 13h) truy c p t i a, vì th không th s d ng a có dung l ng

l n h n 8,4 Gbyte, ngay c v i các BIOS m i (v v n này s nói n sau),

còn phân vùng thì không th l n h n 2,1 Gbyte (nh ng ây là do h n ch c a h

th ng t p tin FAT16).

Linux thì ch s d ng tr ng start và length c a b ng phân vùng a và h

tr các phân vùng ch a n 232 sector, t c là dung l ng có th t 2 Tbyte

Vì trong b ng chia a ch có 4 dòng cho các phân vùng, s phân vùng chính

trên a ngay t u dã h n ch : không th l n h n 4. Khi mà 4 phân vùng tr

thành ít, thì ng i ta sáng ch ra phân vùng lôgíc. M t trong s các phân vùng

chính tr thành m r ng (lo i phân vùng - 5 hay F hay 85 trong h c s m i

sáu). Và trong phân vùng m r ng ng i ta t o ra các phân vùng lôgíc. Phân

vùng m r ng không c s d ng tr c ti p mà ch dùng ghi các phân vùng

lôgíc. Sector u tiên c a phân vùng m r ng ghi nh b ng phân vùng v i b n

u vào: m t dùng cho phân vùng lôgíc, m t cho phân vùng m r ng khác, còn

hai cái còn l i không c s d ng. M i phân vùng m r ng có m t b ng chia

c a mình, trong b ng này, c ng gi ng nh trong phân vùng m r ng chính, ch

s d ng có hai dòng a ra m t phân vùng lôgíc và m t phân vùng m r ng.

Nh v y, thu c m t chu i các m t xích t b ng phân vùng, m t xích u tiên

mô t ba phân vùng chính, và m i m t xích ti p theo ­ m t phân vùng lôgíc và

v trí c a b ng ti p theo.

Ch ng trình sfdisk trên Linux cho th y toàn b chu i này:

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

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

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

Device Boot Start End #cyls #blocks Id System

/dev/hda1 * 0+ 189 190- 1526143+ 6 FAT16

/dev/hda2 190 783 594 4771305 5 Extended

/dev/hda3 0 - 0 0 0 Empty

/dev/hda4 0 - 0 0 0 Empty

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

- 381 783 403 3237097+ 5 Extended

- 190 189 0 0 0 Empty

- 190 189 0 0 0 Empty

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

- 381 380 0 0 0 Empty

- 381 380 0 0 0 Empty

- 381 380 0 0 0 Empty

S phân vùng lôgíc theo nguyên t c không h n ch , vì m i phân vùng lôgíc

có th ch a b ng phân vùng và các phân vùng lôgíc c a mình. Tuy nhiên trên

th c th v n có nh ng h n ch . Ví d , Linux không th làm vi c v i h n 15 phân

vùng trên các a SCSI và h n 63 phân vùng trên a IDE.

Phân vùng m r ng trên m t a v t lý, hay trong m t phân vùng m r ng

ch a nó (có th g i là "m ") ch có th làm m t: không m t ch ng trình phân

20 Cài t H H Linux trên cùng máy tính v i Windows

chia a nào trong s ã có (fdisk và t ng t ) có th t o thêm m t phân vùng

m r ng th hai.

a trên Linux nói riêng ( a v t lý) c truy c p qua tên c a thi t

b : /dev/hda, /dev/hdb, /dev/sda, v.v. . . Các phân vùng chính có thêm s 1-

4 trong tên thi t b : /dev/hda1, /dev/hda2, /dev/hda3, còn phân vùng lôgíc

thì có các tên: /dev/hda5, /dev/hda6, /dev/hda7 . . . (b t u t s 5). T

nh ng gì c p n trên có th suy ra t i sao l i có th b qua các tên nh

/dev/hda3 hay /dev/hda4 ( n gi n là phân vùng chính th ba và th t

không c t o ra) và ngay sau /dev/hda2 b n c th y /dev/hda5 (phân vùng

lôgíc trong phân vùng m r ng /dev/hda2), và sau ó thì vi c ánh s l i theo

th t thông th ng.

Trong Windows các phân vùng lôgíc nh n c tên (ch cái), b t u t ch

cái cu i dùng dành cho phân vùng chính. Ví d n u m t a c ng có hai phân

vùng chính (C: và D:) và m t phân vùng m r ng, trong phân vùng m r ng t o

ra hai phân vùng lôgíc, thì nh ng phân vùng lôgíc này s c t tên E: và F:.

Xin nói thêm, trong Windows NT và 2000/XP có th thay i tên c a các phân

vùng a.

2.3.3 Quá trình kh i ng các H H c a công ty Microsoft

Dù h i u hành có là gì, thì có th b t u i u khi n máy tính, c n n p

H H vào b nh . Vì th hãy xem xét qua quá trình kh i ng c a các H H khác

nhau. Chúng ta ch quan tâm n vi c kh i ng t a c ng, nên s không

xem xét n vi c kh i ng t a m m, CD-ROM và qua m ng. Hãy b t u t

MS-DOS và MS Windows c (xin ng quên r ng, vi c phát tri n và hoàn thi n

máy tính cá nhân song song v i s phát tri n c a H H c a Microsoft và nh ng

quy t nh s d ng trong các H H này có nh h ng m nh n quy t nh c a

các nhà phát tri n thi t b ).

Nh b n c bi t, khi b t máy tính u tiên s ch y ch ng trình POST

(Power On Self Test). Ch ng trình xác nh dung l ng b nh , th nghi m b

nh , và xác nh các thành ph n khác (bàn phím, c ng. . . ), kh i ng các th

adaptor. Trên màn hình th ng xu t hi n các thông báo v dung l ng b nh ,

v vi c th nghi m b nh , danh sách các thi t b nh n ra ( a c ng và m m,

b x lý, c ng COM và v.v. . . ).

Sau khi hoàn thành vi c th nghi m POST g i Int 19h. Công vi c c a Int

19h là tìm thi t b kh i ng. Vi c tìm ki m th c hi n theo th t xác nh trong

Setup BIOS và theo cách th m dò sector s 0 c a các thi t b t ng ng. N u

a có th kh i ng, thì trong sector s 0 c a a có b n ghi kh i ng chính ­

Master Boot Record (MBR). Hai byte cu i cùng c a MBR ­ "s màu nhi m", là

d u hi u cho bi t sector có MBR, và theo ó a có th kh i ng. Ngoài "s màu

nhi m" MBR còn ch a b ng phân vùng a ã nói trên, và m t ch ng trình

nh ­ trình kh i ng chính, kích th c ch có 446 (0x1BE) byte.

B ng 2.1 cho th y c u trúc c a sector kh i ng chính sau khi cài t Win-

dows.

MS-DOS, Windows95 và NT ghi nh DOS MBR trong khi cài t. Ngoài ra c ng

có th t o MBR c a MS v i câu l nh DOS sau: fdisk /mbr.

Xin tr l i v i quá trình kh i ng. Int 19h c a BIOS n p trình kh i ng

2.3 Phân vùng trên a và quá trình kh i ng 21

B ng 2.1: C u trúc c a sector kh i ng chính

D ch chuy n N i dung

0x000 Mã c a trình kh i ng chính

0x1BE B ng phân vùng a

0x1FE "S màu nhi m" (0xAA55)

chính vào b nh máy tính và chuy n quy n i u khi n cho ch ng trình này.

Nh ng ch ng trình "bé nh " này không kh n ng kh i ng H H; t t c

nh ng gì mà nó có th làm ­ ó là n p vào b nh ch ng trình m nh h n ­

trình kh i ng th hai. làm c i u này, nó tìm trong b ng phân vùng

kích ho t và c vào b nh trình kh i ng th hai, b t u t sector lôgíc u

tiên c a phân vùng kích ho t. Hãy chú ý n c m t "b t u t ". Vì trình kh i

ng th hai trên các h th ng khác nhau có dài khác nhau. Trong phân vùng

c nh d ng d i h th ng t p tin FAT, trình kh i ng th hai chi m m t

sector (512 byte). Trong phân vùng nh d ng d i h th ng t p tin NTFS, trình

kh i ng th hai chi m vài sector.

Trình kh i ng th hai n p l p ch ng trình u tiên, c n thi t cho vi c kh i

ng h i u hành. Trong tr ng h p MS DOS ch ng trình kh i ng ng n p

IO.SYS theo a ch 700h, sau ó MSDOS.SYS và chuy n quy n i u khi n cho

SYSINIT c a mô un IO.SYS.

N u vì lý do nào ó không tìm th y trên a phân vùng kích ho t, thì quá

trình kh i ng s ti p t c v i vi c x lý Int 18h. Tr ng h p này trên th c t

r t hi m khi s d ng, nh ng kh n ng này có th có ích trong tr ng h p nào

ó. Trong khi kh i ng t xa, khi h i u hành kh i ng t máy ch , thì Int

này c POST chuy n h ng lên ROM c a c c m ng.

i v i các H H khác c a Microsoft thì quá trình kh i ng di n ra t ng t .

Windows95 kh i ng gi ng nh DOS nh ng thay th IO.SYS và MS-

DOS.SYS b i các t p tin c a mình. Các t p tin DOS c gi l i d i các

tên t ng ng IO.DOS và MSDOS.DOS. Khi b n c ch n kh i ng DOS,

Windows95 s i tên các t p tin c a mình v i ph n m r ng w40 và ph c

h i tên ban u c a các t p tin h th ng c a DOS. Quá trình kh i ng ti p

t c v i vi c n p IO.SYS. Nh th , sector kh i ng c a DOS và Windows95

là nh nhau.

Windows NT4 s d ng MBR DOS, nh ng thay th b n ghi kh i ng c a

phân vùng kích ho t b ng cách thay th NTLDR vào ch IO.SYS. ây là

m t ch ng trình m ng và có th làm c nhi u th . Ví d , có th tìm

t p tin boot.ini và n u nh tham s timeout l n h n 0, thì a ra trình n

(th c n) kh i ng.

M i dòng c a ph n [operating systems] trong t p tin boot.ini xác nh

m t ph ng án (m t H H) kh i ng và c vi t theo m u sau:

a_ch _trình_kh i_ ng_th _hai=``tên_g i_c a_ph ng_án''

a ch c a trình kh i ng th hai có th là m t phân vùng c th nào ó

c a a c ng nh t p tin kh i ng. D i ây là m t ví d t p tin boot.ini:

22 Cài t H H Linux trên cùng máy tính v i Windows

[operating systems]

multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4"

C:\="Microsoft Windows"

C:\BOOTSECT.LNX="Linux"

N u ng i dùng ch n NT, thì s kh i ng theo a ch phân vùng c ch

trên dòng u tiên. Trên dòng t ng ng v i ph ng án Microsoft Windows, ch

a ra "C:\", vì tên c a t p tin kh i ng c l y theo m c nh: bootsect.dos.

T p tin c n p vào b nh và quá trình kh i ng c ti p t c gi ng nh khi

b n ghi kh i ng c n p b i mã ch ng trình t MBR.

i v i vi c kh i ng các h th ng khác, có th s d ng cách ó. Ch c n

thêm vào boot.ini các dòng ch a liên k t n t p tin kh i ng khác. Khi ch n

các dòng này s kh i ng H H t ng ng. Trong ví d trên Linux c ng c

kh i ng theo các này. Trong t p tin C:\BOOTSECT.LNX c n ghi n i dung c a

b n ghi kh i ng, t o b i Linux (nói úng h n ­ LILO, trình kh i ng tiêu

chu n c a Linux).

2.3.4 V n v i các a l n

Trên MS-DOS và các phiên b n u tiên c a Windows truy c p t i a (trong ó

có c b c kh i ng u tiên c a H H) c t ch c qua Int 13 (Int 13h) c a

BIOS. Khi này s d ng s ánh a ch sector trên a trên c s C/H/S (xem

trên). Chính xác h n:

AH - ch n thao tác;

CH - 8 bit nh h n c a s cylinder;

CL - 7-6 bit t ng ng bit l n c a s cylinder, 5-0 t ng ng s sector;

DH - s c a u c;

DL - s c a a(80h hay 81h).

(C n l u ý r ng vi c ánh s cylinder v t lý và rãnh th ng b t u t 0,

còn sector trên rãnh ánh s b t u t 1). Tuy nhiên trên th c t s u c

không quá 16, còn s sector trên rãnh ­ không quá 63, và dù có dùng 10 bit

ch ra cylinder, BIOS v n không th làm vi c v i a dung l ng l n h n

1024*63*16*512 = 528 Mbyte.

v t qua h n ch này, ng i ta áp d ng nhi u cách "láu cá" khác nhau. Ví

d , Extended CHS (ECHS) hay "Large disk support" ( ôi khi còn g i là "Large")

s d ng ba bit ch a dùng n c a s th t u c t ng s cylinder. Cách

này cho pehsp s d ng c u trúc "hình h c gi m o c a a" v i 1024 cylinder, 128

u c và 63 sector/rãnh. Bi n i Extended CHS thành a ch CHS th c (có

th ch a n 8192 cylinder) c BIOS th c hi n. Cách này cho phép làm vi c

v i a có dung l ng n 8192*16*63*512 = 4 227 858 432 byte hay 4,2 Gbyte.

Nh ng các nhà phát tri n càng ngày càng t ng m t ghi c a a, s a và

s rãnh, và còn phát minh ra các ph ng pháp khác t ng dung l ng a. Ví

d , s sector trên rãnh không còn c nh mà tr thành khác nhau trên các rãnh

2.4 L a ch n trình kh i ng 23

khác nhau (trên các rãnh n m g n rìa ngoài c a a, dài h n, s sector c t ng

lên). K t qu là b ba s C/H/S không còn ph n ánh úng c u trúc "hình h c c a

a", và các phiên b n BIOS c không th h tr truy c p t i toàn b không gian

a.Khi ó ng i ta ngh ra ph ng pháp khác làm vi c v i các a lên qua Int

13h - ánh a ch các kh i theo ng th ng ("Linear Block Addressing" hay

LBA). Không i sâu vào chi ti t, có th nói r ng t t c sector trên a c ánh

s m t cách tu n t , b t u t sector u tiên trên rãnh s 0 c a cylinder s 0.

Thay vào ch a ch CHS m i sector nh n c m t a ch lôgíc ­ s th t c a

sector trong t ng s t t c sector. Vi c ánh s sector lôgíc b t u t 0, trong

ó sector s 0 ch a b n ghi kh i ng chính (MBR). Trong Setup BIOS h tr

bi n i s th t theo ng th ng thành a ch CHS có d ng "H tr LBA".

Nh v y, trong các phiên b n BIOS m i th ng có l a ch n v i ba ph ng án:

"Large", "LBA", và "Normal" (ph ng án cu i cùng có ngh a là không th c hi n

bi n i a ch ).

Tuy nhiên trong ch LBA vi c s d ng a v t lý v n c th c hi n qua

Int 13h, mà Int 13h v n s d ng b 3D (C,H,S). Vì nguyên nhân này xu t hi n

h n ch lên dung l ng c a a: BIOS, và theo ó, MS-DOS và các phiên b n

Windows u tiên không th ánh a ch các a có dung l ng l n h n 8,4

Gbyte.

C n chú ý r ng h n ch nói trên ch áp d ng v i các a có giao di n IDE.

Trong các controller c a a SCSI, s c a sector c chuy n vào các l nh SCSI,

và sau ó t a tìm ra v trí c n thi t, vì th h n ch lên dung l ng a không

xu t hi n.

M t l n n a mu n nh c l i r ng, t t c nh ng h n ch nói trên ch có ý ngh a

trong giai o n kh i ng H H. B i vì Linux và các phiên b n Windows m i nh t

khi làm vi c v i a ã không còn s d ng Int 13 c a BIOS, mà s d ng driver

riêng c a mình. Nh ng tr c khi có th s d ng driver c a mình, h th ng ph i

c n p. Vì th trong giai o n kh i ng u tiên b t k h th ng nào c ng

c n s d ng BIOS. i u này h n ch vi c t nhi u h th ng ra ngoài vùng 8

Gbyte a u tiên: chúng không th kh i ng t ó, m c dù sau khi kh i ng

thì có th làm vi c v i các a có dung l ng l n h n nhi u. có th hi u cách

thoát kh i nh ng h n ch này, chúng ta c n m t chút ki n th c v quá trình kh i

ng c a H H Linux.

2.4 L a ch n trình kh i ng

2.4.1 Trình kh i ng GRUB1

GRUB (GRand Unified Bootloader) ­ trình kh i ng h t s c m nh có kh n ng

kh i ng r t nhi u H H mi n phí c ng nh H H th ng m i. GRUB c

Erich Boleyn vi t vào n m 1995 kh i ng h th ng GNU Mach, vì không th

s d ng nh ng trình kh i ng khác. Sau ó vào n m 1999 Gordon Matzigkeit và

Yoshinori K. Okuji chuy n GRUB thành m t gói ch ng trình GNU, a ch ng

trình này thành m t ph n m m mã ngu n m . M c dù m i ra i và s phiên b n

1Ph n v GRUB này do ng i d ch vi t.

24 Cài t H H Linux trên cùng máy tính v i Windows

còn r t nh 2 nh ng ây là s l a ch n t t i v i ph n l n ng i dùng máy tính

cá nhân. N u không có nhu c u c bi t nào ó thì b n nên ch n trình kh i ng

này. Các b n phân ph i Linux l n (Debian, SuSE, Fedora,. . . ) c ng ã chuy n

sang s d ng GRUB làm l a ch n theo m c nh.

M t trong nh ng tính n ng quan tr ng c a GRUB là tính m m d o. GRUB

có th hi u các h th ng t p tin và nh d ng th c thi c a nhân, vì th b n có

th n p H H theo cách a thích. Ngoài ra, n u không mu n dùng giao di n

dòng l nh, thì b n có th cài t và s d ng giao di n th c n và thay i giao

di n th c n theo mong mu n c a mình. M t i m m nh khác c a GRUB ó là

"grub shell" có th ch y khi b t u kh i ng ho c sau khi ã kh i ng xong

h th ng. B ng grub shell b n có th "gi l p" (emulate) trình kh i ng này và

cài t GRUB.

Bây gi chúng ta xem xét ng n g n v tên g i thi t b dùng trong GRUB, vì

cú pháp thi t b trong trình kh i ng này có khác m t chút so v i nh ng gì mà

b n ã th y trên nh ng h th ng c a mình. B n c n hi u cú pháp này bi t

cách ch ra m t a hay phân vùng nào ó. Ví d m t cú pháp là:

(fd0)

Tr c tiên c n nói GRUB yêu c u t t c các tên thi t b ph i t trong ngo c `('

và `)'. Ph n fd có ngh a là a m m. S `0' ch ra s th t c a , m b t u t

0. Ví d 2:

(hd0,1)

ây `hd' có ngh a là c ng. S nguyên `0' u tiên cho bi t s th t c a ,

t c là c ng th nh t. S nguyên th hai (`1') cho bi t s th t c a phân vùng

(chúng ta không xem xét các H H khác Linux). Xin nh c l i m t l n n a là các

s m u b t u t s không `0'. Trong tr ng h p này ây là phân vùng th

hai c a c ng th nh t. GRUB s d ng m t phân vùng c a a ch không ph i

toàn b a.

Ví d 3:

(hd0,4)

ây là phân vùng m r ng ("extended partition") th nh t c a a c ng th nh t.

Chú ý r ng các phân vùng m r ng c m b t u t `4' không ph thu c vào

s phân vùng chính ("primary partition") th c t có trên a. C n chú ý thêm là

GRUB không phân bi t IDE và SCSI. Nó m s th t b t u t `0' không

ph thu c vào d ng a.

Làm sao ch ra m t t p tin? Hãy xem ví d sau ây:

(hd0,0)/vmlinuz

Dòng này ch ra t p tin `vmlinuz' n m trên phân vùng u tiên c a c ng u

tiên. H t s c n gi n! Thông tin trong ph n này s giúp b n hi u c c u hình

c a GRUB s nói n s p t i ây.

2hãy so sánh s phiên b n c a GRUB và LILO

2.4 L a ch n trình kh i ng 25

2.4.2 Trình kh i ng LILO

Trình kh i ng LILO c vi t b i Werner Almesberber. LILO có th kh i

ng nhân Linux t a m m, a c ng, và c ng có th kh i ng các h i u

hành khác: PC/MS-DOS, DR DOS, OS/2, Windows 95/98, Windows NT/2000/XP,

386BSD, SCO UNIX, Unixware v.v. . . LILO cho phép ch n n 16 h i u hành

khác nhau kh i ng.

LILO không ph i là ch ng trình n l mà là m t b g m nhi u ch ng

trình: trình kh i ng, các ch ng trình s d ng cài t và c u hình trình

kh i ng, và các t p tin ph c v :

ch ng trình /sbin/lilo, ch y d i Linux, ph c v ghi t t c thông

tin c n thi t trong giai o n kh i ng vào các ch t ng ng. C n ch y

ch ng trình này sau m i l n có thay i trong nhân hay trong t p tin c u

hình LILO;

các t p tin ph c v , c n cho LILO trong th i gian kh i ng. Nh ng t p tin

này th ng n m trong th m c /boot. Quan tr ng nh t trong s chúng ­

ó là b n thân trình kh i ng (xem phía d i) và t p tin map (/boot/map);

trong t p tin này có ch ra v trí c a nhân. M t t p tin quan tr ng khác ­

t p tin c u hình LILO; th ng có tên /etc/lilo.conf;

trình kh i ng ­ ây là ph n LILO c n p vào b nh u tiên qua Int

c a BIOS; trình kh i ng n p nhân Linux hay sector kh i ng c a h i u

hành khác. Trình kh i ng g m có hai ph n. Ph n th nh t c ghi vào

sector kh i ng và ph c v n p ph n th hai, có kích th c l n h n r t

nhi u. C hai ph n th ng c ghi trên a trong t p tin /boot/boot.b.

C n nh r ng, nh d ng c a sector kh i ng t o ra b i LILO khác v i nh

d ng MBR c a DOS. Vì th n u ghi sector kh i ng LILO vào MBR, thì các h

i u hành ã cài c a Microsoft s ng ng kh i ng (n u nh không có các bi n

pháp b sung).

Sector kh i ng c a LILO có th c thi t k s d ng nh sector kh i

ng c a phân vùng, trong ó có ch cho b ng phân vùng. Sector kh i ng c a

LILO trong khi cài t có th t vào nh ng ch sau:

sector kh i ng c a a m m trong nh d ng Linux (/dev/fd0, . . . );

MBR c a a c ng u tiên (/dev/hda, /dev/sda, . . . );

sector kh i ng c a phân vùng chính v i h th ng t p tin Linux trên a

c ng u tiên (/dev/hda1, /dev/hda2, . . . );

sector kh i ng c a phân vùng lôgíc trong phân vùng m r ng a c ng

u tiên (/dev/hda5, . . . ). S th t là ph n l n ch ng trình d ng fdisk

không ra kh n ng kh i ng kh i ng t phân vùng m r ng và t

ch i vi c kích ho t phân vùng này. Vì v y trong thành ph n LILO có ch a

m t ch ng trình c bi t (activate) cho phép v t qua h n ch này. Tuy

nhiên ch ng trình fdisk c a b n phân ph i Linux h tr kh n ng kích

ho t phân vùng m r ng. C n s d ng tùy ch n -b ho c bi n BOOT.

26 Cài t H H Linux trên cùng máy tính v i Windows

Sector kh i ng c a LILO không th t vào các ch sau:

sector kh i ng c a a m m hay phân vùng chính, v i nh d ng h th ng

t p tin khác Linux;

trong phân vùng swap c a Linux;

trên a c ng th hai.

Ngoài ra, c n nh r ng, LILO trong th i gian kh i ng c n nh ng t p tin

sau:

/boot/boot.b;

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

t t c phiên b n nhân kh i ng (n u b n c ch n phiên b n nhân khi

kh i ng);

sector kh i ng c a các h i u hành khác mà b n c mu n kh i ng

qua LILO;

t p tin ch a các thông báo a ra khi kh i ng (n u c xác nh).

Nh v y, sector kh i ng LILO c ng nh nh ng t p tin ã li t kê (trong s

ó có các t p tin b n c s cài t sau này) c n n m trong ph m vi 1024 cylinder

u tiên c a a c ng, b i vì chúng c n c truy c p qua BIOS. Xem ph n nói

v h n ch c a BIOS trên.

B t u t phiên b n 21, LILO a ra màn hình trình n (th c n) cho

phép ch n h th ng kh i ng (tr c ây c n nh n phím Tab g i trình n

này).

2.4.3 Các trình kh i ng khác

Ngoài GRUB và LILO kh i ng Linux có th kh i ng các trình kh i ng

khác.

N u nh tr c khi cài t Linux ã có H H Windows NT/2000/XP, thì trình

kh i ng b n c có th s d ng là OS Loader c a NT. So sánh v i LILO

thì trình kh i ng OS Loader có ít nh t hai u th . Th nh t, t t c c u

hình c không b m t (chúng ta có th ch n kh i ng Windows hay Linux

theo l a ch n), và th hai, có th cài t Linux lên a mà LILO không th

kh i ng, ví d , a th hai trên controller th hai (Secondary Slave).

N u nh tr c khi cài t Linux b n c ch có H H Windows 95 hay

Windows 98 và không có Windows NT/2000 hay XP, thì OS Loader không

c cài t. Và n u nh vì m t lý do nào ó b n c không mu n cài t

LILO, thì có th s ng ch ng trình kh i ng loadlin.exe (th ng i kèm

v i b n phân ph i Linux);

2.4 L a ch n trình kh i ng 27

Th i gian g n ây trong thành ph n b n phân ph i Linux th ng có ch ng

trình kh i ng GRUB.

Trong thành ph n OS/2 c a công ty IBM có ch ng trình kh i ng Boot

Manager. Trong r t nhi u h ng d n ng i ta khuyên dùng ch ng trình

này t i ch c kh i ng nhi u H H.

Trong các ngu n thông tin khác nhau còn nh c n ch ng trình System

Commander;

Thêm m t trình kh i ng khác có trong thành ph n gói PartitionMagic

c a công ty Power Quest. Chúng ta s nói v ch ng trình này trong ph n

nh ti p theo.

Ngoài ra tác gi còn th y nói n m t lo t các trình kh i ng khác (m t s có

th tìm th y trong th m c /public/ftp/pub/Linux/system/boot/loaders

trên trang ftp://metalab.unc.edu/. Nh ng vì tác gi không s d ng nh ng ch ng

trình này, nên không th nói c th cách s d ng chúng. Và t t c nh ng l i

khuyên dùng sau c a tác gi s d a trên vi c s d ng LILO, NT Loader và load-

lin.exe. N u nh có ý mu n cài t ch ng trình kh i ng khác, thì b n c c n

c h ng d n cài t và s d ng c a nó.

2.4.4 Các ph ng án kh i ng

Nh v y, theo ý ki n c a tác gi có các ph ng án kh i ng sau:

N u trên máy ch có m t h i u hành Linux duy nh t, hãy dùng GRUB.

N u ã cài t Windows NT hay Windows 2000/XP, thì hãy s d ng GRUB.

N u có Windows 95 hay Windows 98 trên FAT16, và b n c không mu n

cài t ch ng trình kh i ng nào khác, thì có th s d ng GRUB ho c

LILO, ho c u tiên ch y DOS và sau ó kh i ng Linux nh ch ng

trình loadlin.exe (hay m t ch ng trình t ng t , có vài ch ng trình nh

v y, nh ng chúng ta s không xét n).

N u ã cài t Windows 95 OSR2 hay Windows 98 trên FAT32, và b n

c không mu n cài t thêm ch ng trình kh i ng, thì c n s d ng

loadlin.exe. R t nhi u HOWTO kh ng nh r ng không c n s ng LILO,

n u nh phân vùng kích ho t có nh d ng FAT32, m c dù tác gi không rõ

nguyên nhân. Tuy nhiên thí nghi m kh i ng Linux qua NT Loader, cài

t trên phân vùng FAT32, c a tác gi ã k t thúc không thành công. Vì

th , trong tr ng h p này tác gi ã ph i s d ng ch ng trình loadlin.exe.

Ch ng trình này ã hoàn thành t t nhi m v , và t o cho tác gi m t n

t ng t t, vì th tác gi khuyên b n c s d ng loadlin.exe kh i ng

Linux.

Trong nh ng ph n ti p theo tác gi s cho bi t cách cài t Linux, s d ng

t t c b n ph ng án kh i ng: qua trình kh i ng NT Loader, trình kh i ng

GRUB, trình kh i ng LILO và trình kh i ng loadlin.exe. Tuy nhiên tr c

khi cài t trình kh i ng c n chu n b các phân vùng trên a, hay ít nh t là

ngh cách t ch c chúng.

28 Cài t H H Linux trên cùng máy tính v i Windows

2.5 Chu n b các phân vùng trên a

2.5.1 L i khuyên khi t o phân vùng

a ra l i khuyên ây không ph i là vi c d dàng, vì phân vùng a ph c thu c

r t nhi u vào ý thích và nhu c u c a ch nhân a. Nh ng c ng xin th a ra

vài ngh sau. Tác gi s t tên a và phân vùng theo "tiêu chu n" c a Linux,

t c là /dev/hda, /dev/hdb, v.v. . . i v i a và /dev/hda1, /dev/hda2,

v.v. . . ­ i v i các phân vùng.

Vi c phân chia a thành các phân vùng là c n thi t, b i vì Windows và Linux

s d ng các cách l u tr thông tin trên a và sau ó c chúng t a khác nhau.

Chính vì th t t h n h t là dành cho m i h i u hành m t (ho c th m chí m t

vài nh chúng ta s th y d i) phân vùng riêng.

u tiên chúng ta hãy xem xét m t tr ng h p n gi n ­ dung l ng a

c a b n c không v t quá 8,4 Gbyte (nói chính xác h n ­ s cylinder không

v t quá 1024). Trong tr ng h p này m i th u n gi n: b n c ch vi c

chia a làm sao ch cho h i u hành s cài t. Có th s d ng d li u

cho bi t kích th c a nh nh t c n thi t cài t h i u hành v i c u hình

c b n trong b ng 2.2.

B ng 2.2: Nhu c u s d ng không gian a c a H H

H i u hành Yêu c u

Windows 95 100 Mbyte

Windows 98 200 Mbyte

Windows NT 200 Mbyte

Windows 2000 700 Mbyte

Linux Red Hat 6.2 (Worksta- 700 Mbyte

tion v i KDE)

Tuy nhiên xin hãy nh r ng, không nh ng ph i tính kích th c các t p tin c a

b n thân h i u hành, mà còn ph i tính c kích th c c a các ch ng trình b n

c d tính ch y. Và còn ph i dành m t ph n d tr không nh cho các ch ng

trình s cài t sau này (không th tránh kh i!). Hãy tính r ng, 700 Mbyte dành

cho Linux trong b ng nói trên ch dành cho các ch ng trình cài t cùng v i

Linux theo m c nh, trong s ó có, ví d , ch ng trình so n th o r t m nh

Lyx. i v i Windows c ng t ng t nh v y.

Theo kinh nghi m c a tác gi thì làm vi c v i Windows 95/98, Windows

NT và Linux các phân vùng v i kích th c 800-1000 Mbyte là (t t nhiên, n u

b n c không cài t các gói ch ng trình l n, nh OpenOffice.Org), còn i v i

Windows 200 thì c n phân vùng l n h n.

Bây gi chúng ta s xem xét v n chia các phân vùng cho Linux. ây

không th ch chia m t phân vùng. Th nh t, c n chia m t phân vùng swap

riêng bi t cho Linux. Khi xác nh dung l ng c a phân vùng swap Linux c n

tính n nh ng y u t sau:

Trong Linux, RAM và không gian swap h p l i t o thành b nh o chung.

Ví d , n u b n c có 256 MByte RAM và 128 Mbyte không gian swap, thì

s có 384 Mbyte b nh o.

2.5 Chu n b các phân vùng trên a 29

làm vi c v i Linux c n ít nh t 16 Mbyte b nh o, vì th n u b n c

ch có 4 Mbyte RAM, thì c n phân vùng swap không nh h n 12 Mbyte.

Kích th c c a phân vùng swap có th l n bao nhiêu tùy thích, tuy nhiên

không c n c u hình quá nhi u n u không c n thi t. Thông th ng ch c n

dùng swap khi máy ít b nh RAM ho c ch y máy ch v i nhi u ng d ng

n ng. Trong t t c m i tr ng h p t t nh t tránh dùng swap vì nó ch m

h n RAM nhi u.3

Khi tính kích th c c a không gian swapping, c n nh r ng kích th c quá

l n có th là vô ích. Trên máy tính v i 16 Mbyte RAM khi cài t Linux v i

c u hình chu n và các ch ng trình ng d ng chu n thì 48 Mbyte không

gian swapping là . Còn n u cài t Linux v i c u hình nh nh t, thì

không c n n không gian swap. T t nhiên, kích th c chính xác c a không

gian swap ph thu c l n vào ch ng trình s c cài t.

Nói chung, ch nên suy ngh v v n dung l ng c a phân vùng swap khi

có m t a nh và ít b nh RAM. Trong tr ng h p ng c l i hãy phân chia

t ng s dung l ng c a b nh o (g m RAM và phân vùng swap) không nh h n

128 Mbyte. Còn n u nh b n c có 128 Mbyte RAM hay nhi u h n, thì phân

vùng này có th không c n thi t.

T t c các ph n còn l i c a Linux và các ch ng trình h tr theo nguyên t c

có th t vào m t phân vùng. Tuy nhiên, vi c t h th ng t p tin Linux lên

vài phân vùng riêng r là có ý ngh a. Ví d , có nhà chuyên gia khuyên nên dành

cho h th ng t p tin Linux ba phân vùng (n u tính c swap thì thành 4). Phân

vùng th nh t (theo ý ki n cá nhân tác gi , 1 Gbyte là ) s ch a h th ng t p

tin g c (/). Phân vùng th hai dành cho th m c /home. Còn phân vùng th

ba c g n vào th m c /usr. Vi c phân chia nh v y d a trên nh ng lý l

sau. Dù H H Linux có n nh và áng tin c y n âu, thì th nh tho ng c ng

c n cài t l i. Ví d , b n c mu n c p nh t phiên b n m i c a b n phân ph i,

ho c vì ít kinh nghi m s d ng nên làm h ng t p tin h th ng quan tr ng, ho c

n gi n là mu n cài t m t b n phân ph i khác. N u nh t t c c cài t

vào m t phân vùng, thì khi cài t l i nh ng d li u ã làm ra và ghi nh trong

th m c cá nhân s b m t (n u không có b n sao chép). Ngoài ra, s b m t c

nh ng ch ng trình ã cài t mã ngu n, hay cài b ng ph ng pháp khác. Ph n

l n nh ng gói ch ng trình này c cài vào th m c /usr. N u dành cho th

m c này m t phân vùng riêng và khi cài t không nh d ng l i chúng, thì

nh ng ch ng trình nói trên s c gi l i và có th s làm vi c (r t có th c n

vài c u hình nh ) sau khi cài t l i h th ng. Trong tiêu chu n v h th ng t p

tin c a Linux FHS (c th xin xem ch ng ??) c ng có l i khuyên v vi c t

th m c /usr lên m t phân vùng riêng.

Theo tác gi th y, nh ng ý ki n nói trên ã b n c t tìm ra ph ng án

phân chia a c a mình, trong tr ng h p ch có m t a nh . Bây gi chúng

ta xem xét tr ng h p a v i s cylinder l n h n 1024.

T nh ng gì ã nói n ph n tr c (h n ch dung l ng a c ng), c n t

ch ng trình kh i ng trong ph m vi 1024 cylinder u tiên. Nhân ti n, NT

Loader không nh t thi t ph i t vào phân vùng NTFS, c ng nh không nh t

3Xin cám n bác Tony Lý v m c này

30 Cài t H H Linux trên cùng máy tính v i Windows

thi t ph i t vào phân vùng ch a các t p tin khác c a H H. Nh ã nói trên,

i v i Linux có th t th m c g c cùng v i th m c con /boot vào các cylinder

"th p" (trong vòng 1024 u tiên), còn các th m c khác ­ ch nào tùy thích.

Nh v y trong tr ng h p này, nh ng ngh c a tác gi cho ra b ng t ng

k t sau:

ph n kh i ng c a t t c các h th ng Microsoft t vào phân vùng chính

u tiên c a a, v i nh d ng FAT16 (DOS);

phân vùng chính ti p theo dành cho th m c g c (/), kích th c kho ng 1

Gbyte;

phân vùng chính th ba dành cho swap c a Linux (l i khuyên v kích th c

c a phân vùng này xem trên);

ph n còn l i c a a t thành phân vùng m r ng;

trong phân vùng m r ng t o các phân vùng lôgíc cho m i H H s cài t:

Windows 98, Windows NT/2000/XP, và ng th i cho các h th ng t p tin

/home và /usr c a H H Linux (trong /home s t các t p tin riêng c a

ng i dùng, còn trong /usr ­ ch ng trình s cài t).

T t nhiên, n u nh b n c ch có Windows 95 v i FAT16, thì có th Win-

dows trên phân vùng u tiên. N u nh trên máy ã cài t Windows NT hay

có FAT32, thì m t phân vùng FAT16 c ng không th a. Th nh t, k c trong

tr ng h p h th ng có v n , b n c có th kh i ng t a m m DOS (t m

th i khi ch a làm quen v i Linux m t cách "t ng t n") và th y c r ng a

c ng làm vi c bình th ng. Th hai, h th ng t p tin FAT16 c h tr trên

m i H H, trong ó có Linux, vì th phân vùng này có th ph c v cho vi c trao

i t p tin gi a các h th ng. Nh ng không nên phân vùng này l n, vì FAT16

s d ng không gian a r t không h p lý. Chính vì v y hãy dành cho phân vùng

này kho ng 256 ho c 512 Mbyte.

Nh ng l i khuyên này a ra v i gi thi t r ng, b n c ch có m t a c ng.

N u nh b n c có 2, thì v n s d ng c nh ng l i khuyên này, ch có i u

phân vùng swap t t h n t trên a khác v i a dành cho Linux. Ng i ta nói

r ng nh v y t ng t c làm vi c trong Linux (c ng d hi u vì u c ít ph i

ch y h n).

2.5.2 Ch ng trình phân chia a

Sau khi hoàn thành k t ho ch chia a, c n l a ch n công c a k ho ch

này thành hi n th c. Ch ng trình phân chia a c bi t n nhi u nh t là

fdisk; trên m i h i u hành u có phiên b n riêng c a ch ng trình này. Và

không c n gì h n ngoài ch ng trình này, n u nh phân chia a tr ng, không

ch a b t ký d li u nào. Nh ng chúng ta ang xem xét tr ng h p ã có H H

nào ó trên a và c n phân chia a mà không làm m t thông tin. fdisk

không thích h p cho nh ng m c ích nh v y.

Trong thành ph n các b n phân ph i Red Hat và BlackCat (r t có th trong

các b n phân ph i khác) có ch ng trình fips, ph c v cho phân chia a.

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

Tuy nhiên, theo ý ki n c a ng i dùng thì không nên s d ng ch ng trình này.

Vì th l i khuyên c a tác gi v i b n c, nh ng ng i dùng Linux m i ­ n u

nh mu n phân chia l i a mà không làm m t thông tin, thì hãy tìm ch ng

trình Partition Magic c a công ty Power Quest (http://www.powerquest.com) và

s d ng ch ng trình này.

Th nh t, ch ng trình này cho phép phân chia l i a mà không làm m t

thông tin (t c là, t t c nh ng cài t và c u hình tr c ó s c ghi l i). Khi

này, không ch t o c phân vùng m i t ch tr ng trên a, mà còn có th di

chuy n các phân vùng ã có theo ý mu n.

Th hai, ch ng trình này (th m chí trong phiên b n dành cho DOS) cung

c p m t giao di n h a d s d ng có h tr chu t, và m i thao tác c ng nh

thay i u th y rõ ràng. i u này r t quan tr ng v i ng i dùng m i.

Khi t o phân vùng c n ý không cho ranh gi i gi a các phân vùng c t l n

nhau.

Tác gi cho r ng, nh ng thông tin ã a b n c l p k ho ch và th c

hi n vi c phân chia a thành các phân vùng. Vì th ti p theo chúng ta s xem

xét các ph ng án cài t hai H H trên m t máy tính.

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

Trong ph n này, khi nói v Windows NT xin ng m hi u c Windows 2000 và NT,

vì "quan h " c a chúng i v i vi c cài t Linux hoàn toàn gi ng nhau. Chúng

ta gi thi t là Windows NT ã c cài vào phân vùng /dev/hda2 (n u nh b n

c nh , /dev/hda1 s dành cho phân vùng FAT16). N u H H Windows NT ã

c cài t, ngh a là trình kh i ng OS Loader c ng ã c cài t. Và nh

th có th s d ng ch ng trình này kh i ng Linux. Tác gi hy v ng r ng

b n c ã sao l u nh ng thông tin có giá tr c a mình. Các b c cài t có th

mô t nh sau:

1. N u nh b n c ch a cài t Linux bao gi , thì tr c khi b t u c n

chu n b a m m kh i ng và ph c h i Windows NT. t o a m m kh i

ng ch c n nh d ng l i a m m, r i sao chép lên ó các t p tin ntldr,

ntdetect.com và boot.ini t th m c g c c a a kh i ng NT. Ch ng

trình t o a ph c h i Windows 2000/XP có th ch y t trình n h th ng

(l nh Backup trong Start/Program/Accessories).

2. Dùng ch ng trình Partition Magic l y m t ph n a tr ng và t ó t o

ra phân vùng v i d ng ext2(3) (h th ng t p tin Linux) và phân vùng swap.

Cách tính kích th c c a chúng ã nói trên.

3. Cài t Linux theo ch d n c a b n phân ph i. Trong khi cài t c n chú ý

n nh ng i m sau:

th nh t, trong quá trình cài t nh t nh ph i t o ra các a m m

kh i ng Linux. T c là c n tr l i "Yes, make a BOOT DISK" (hay

t ng t th , tùy thu c vào b n phân ph i) khi c h i có t o a

m m kh i ng hay không. a m m này s c dùng n sau.

Ngoài ra, có th s d ng a m m này kh i ng Linux. ây c ng

32 Cài t H H Linux trên cùng máy tính v i Windows

là m t ph ng án kh i ng, và h n n a khác v i a m m kh i ng

DOS, sau khi kh i ng h th ng không còn yêu c u a m m n a,

có th b nó ra kh i , s d ng c các a m m khác. Tuy nhiên

cách kh i ng này c ng có i u ti n, vì th không nên s d ng th ng

xuyên. Ch s d ng trong tr ng h p "b t c d ". a m m này còn

c n thi t cho c u hình kh i ng nhi u H H.

th hai, khi cài t Linux c n cài LILO vào sector u tiên c a phân

vùng dành cho th m c g c (/) c a Linux, ch không ph i vào sector

kh i ng chính c a a (MBR). Chúng ta gi thi t Linux c cài vào

phân vùng /dev/hda3. Nh v y LILO s c cài vào sector u tiên

c a /dev/hda3

Theo nguyên t c, n u nh b n c cài LILO vào MBR, thì không ph i m i

th ã h ng h t. K t qu cu i cùng (kh i ng qua NT Loader) v n có th

t c nh ng c n b ra m t chút công s c. V n ch , nh d ng MBR

t o b i LILO và Windows (DOS) khác nhau. Vì th n u b n c cài LILO

vào MBR, thì c u ph c h i l i MBR c a Windows. Tác gi c ng s nói cách

ph c h i, nh ng t t h n h t là b n c cài LILO ngay l p t c vào sector

u tiên c a phân vùng ã cài Linux.

4. Sau khi cài t xong, kh i ng Linux b ng a m m (n u nh b n c cài

LILO vào phân vùng c a Linux và không ng gì n MBR, thì ây là kh

n ng duy nh t).

5. Sao chép sector kh i ng c a Linux vào m t t p tin; t p tin này s c n

trình kh i ng Windows NT/2000 có th kh i ng Linux. Vi c sao chép

th c hi n nh sau: u tiên g n m t a m m tr ng (m i mua thì càng t t),

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

chuy n vào th m c /mnt/floppy

[root]# cd /mnt/floppy

và th c hi n câu l nh

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

ghi n i dung sector kh i ng c a a /dev/hda3 vào t p tin

/mnt/floppy/bootsect.lnx4

6. Ti p theo c n kh i ng l i vào Windows NT, b ng câu l nh:

[root]# shutdown -h now

4Ghi chú: n u a C: (/dev/hda1) có nh d ng FAT, thì có th t o t p tin bootsect.lnx trong th m c g c c a

a C:. Tác gi không bi t (ch a th ) có th kh i ng không c n a m m không, n u phân vùng chính u

tiên có nh d ng NTFS. Tuy nhiên ây c ng không có v n gì, ch c n sao chép sector kh i ng qua a

m m nh ang trình bày. T m th i nhân Linux còn ch a h tr t t vi c ghi lên phân vùng NTFS.

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

Vì MBR ch a có gì thay i, nên Windows NT s kh i ng. Trong NT c n

sao chép t p tin bootsect.lnx vào th m c g c c a a C:, hay chính xác h n

là vào th m c g c c a phân vùng mà t ó kh i ng Windows NT. ây có

th là phân vùng FAT16 hay phân vùng NTFS. c i m nh n ra phân

vùng này là hai t p tin ntldr và boot.init ch a trong ó (nh ng t p tin này

có th n!). T p tin bootsect.lnx có th t thu c tính ch c (read-only).

7. Sau ó tìm t p tin boot.ini và thêm vào dòng sau:

C:\bootsect.lnx="LINUX"

(t t nhiên, trong d u ngo c kép b n c có th t tên b t k .)

8. Vi c còn l i là kh i ng l i máy tính m t l n n a, và trong trình n ch n

h i u hành s có LINUX. N u ch n LINUX, thì LILO s c ch y và sau

ó nó (LILO) s n p Linux.

Còn bây gi chúng ta s xem xét tr ng h p b n c (do vô tình hay c ý)

cài t LILO vào b n ghi kh i ng chính c a a (Master Boot Record, MBR).

Trong tr ng h p này b n ghi kh i ng Windows NT (hay 2000) s b xóa, và

vi c kh i ng Windows NT (b c th 6 trên) là không th . N u nh b n c

v n còn mu n s d ng trình kh i ng OS Loader c a NT, ch không mu n dùng

LILO, thì nh ng b c trên có thay i m t chút: thay cho b c th 6 c n làm các

thao tác sau.

1. Kh i ng Windows NT t a m m kh i ng ( ã t o tr c khi cài t

Linux, n u không có thì b n c c n tìm m t máy khác ang ch y Windows

NT r i t o). Trong trình n (th c n) c a trình kh i ng c n ch n l nh

Recover, r i ch n ch Command mode. Sau ó ng nh p vào tài kho n

nhà qu n tr (administrator).

2. Ph c h i l i b n ghi kh i ng chính c a a. S d ng câu l nh fdisk /mbr.

Tác gi dùng l nh này thành công, m c dù trong m t s bài báo nói cách

ph c h i MBR nh v y không ph i lúc nào c ng làm vi c. Trong Windows

2000 có các l nh chuyên dùng fixboot và fixmbr (ch y t console ph c h i

h th ng). Ch y hai l nh này theo th t ã ch ra. Sau ó Windows 2000

s kh i ng bình th ng.

3. Kh i ng l i máy tính t a m m kh i ng Linux và ng nh p vào h

th ng v i quy n ng i dùng root.

4. Nh p l nh cd /etc và m t p tin lilo.conf. u t p tin này có liên

k t n phân vùng kh i ng theo m c nh, ví d , /dev/hda.

5. Dùng b t k trình so n th o nào, ví d , CoolEdit c a Midnight Comman-

der, thay th giá tr này thành phân vùng ã cài Linux lên (chính xác

h n là thành phân vùng c g n nh g c (/) c a Linux). N u Linux c

cài vào phân vùng /dev/hda3, thì c n ghi cái ó, t c là thay th /dev/hda

thành /dev/hda3. N u nh b n c không nh ã cài Linux vào âu, thì

hãy ch y câu l nh mount và tìm k t qu t ng t nh sau5:

5có ngh a là tìm phân vùng ã g n vào th m c g c /, trong ví d này là /dev/hda3

34 Cài t H H Linux trên cùng máy tính v i Windows

/dev/hda3 on / type reiserfs (rw)

6. Ch y l nh /sbin/lilo ghi trình kh i ng vào phân vùng /dev/hda3

(c n ch y l nh lilo không có tham s ). S có c nh báo v vi c phân vùng

không ph i là u tiên trên a. ây chính là i u chúng ta c n, b n ghi

kh i ng c a Windows c gi nguyên v n.

7. Th c hi n các b c 6-8 nh trên.

D dàng oán ra r ng, "quy trình" ph c t p v i hai l n kh i ng l i ch

chuy n sector kh i ng Linux t MBR vào sector u tiên c a phân vùng dành

cho Linux, và ph c h i MBR c a Windows.

Quá trình cài t Linux k t thúc ây. B n c ã có th ch n H H s kh i

ng và i u khi n máy tính c a mình.

2.7 S d ng trình kh i ng GRUB6

Nh ã nói trong ph n l a ch n ch ng trình kh i ng, n u trên máy ã cài

Windows 98 v i h th ng t p tin FAT16, thì l a ch n t t h n cho trình kh i ng

là ch ng trình có trong thành ph n c a m i b n phân ph i H H Linux ­ GRUB

(GRand Unified Bootloader).

2.7.1 Cài t GRUB

Cách d nh t có th cài t trình kh i ng GRUB là ch n dùng trình kh i

ng này trong quá trình cài t h th ng Linux c a b n. Trong nh ng phiên

b n m i c a các b n phân ph i Linux m i khi này có th ch n c u hình cho

nh ng h i u hành ã có trên máy. M t s b n phân ph i, ví d Xandros còn

t ng tìm th y nh ng h i u hành ã có này và thêm chúng vào t p tin c u

hình c a GRUB. Nh ó sau khi cài t b n có th ch n kh i ng Linux ho c

h i u hành (th ng là Windows) ã có. M c dù vi c t ng c u hình này h t

s c thu n ti n, nh ng s có ích n u b n bi t c cách c u hình Linux x lý

nh ng l i có th x y ra và h n th n a bi t cách c u hình kh i ng h i u

hành mong mu n khi không có t ng c u hình. Chúng ta s xem xét c u hình

GRUB trong ph n ti p theo.

2.7.2 C u hình GRUB

GRUB có m t giao di n trình n t ó ng i dùng có th ch n m t m c (m t

h i u hành) b ng các phím m i tên r i nh n <Enter> kh i ng. dùng

c trình n ó, b n c n m t t p tin c u hình `menu.lst' n m trong th m c

kh i ng /boot. Thông th ng t p tin này c t o ra khi cài t. Hãy xem ví

d m t t p tin nh v y d i ây:

# GRUB example configuration file on the teppi's openSUSE system.

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

6Ph n v GRUB này do ng i d ch vi t

2.7 S d ng trình kh i ng GRUB 35

color white/blue black/light-gray

default 0

timeout 8

###Don't 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

###Don't change this comment - YaST2 identifier: Original name:

windows###

title Windows

map (hd0) (hd1)

map (hd1) (hd0)

rootnoverify (hd1,0)

makeactive

chainloader +1

###Don't 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

###Don't change this comment - YaST2 identifier: Original name: floppy###

title Floppy

root (fd0)

chainloader +1

Tác gi ngh r ng c n gi i thích c th h n m t chút v t p tin này. Có th

b n ã oán ra nh ng dòng b t u b ng ký t `#' là nh ng dòng chú thích.

B n có th ghi b t k câu gì mong mu n vào dòng này và không nh h ng gì

n công vi c c a ch ng trình. Ngoài dòng chú thích GRUB c ng b qua nh ng

dòng tr ng.

u t p tin là nh ng thi t l p chung (global options), nh ng tùy ch n có

liên quan n giao di n c a trình n. Chúng c t tr c các m c b t u

b ng `title'. Tùy ch n default ch ra h i u hành kh i ng theo m c nh

(n u không ng vào bàn phím khi kh i ng). S `0' ch ra ó là h i u hành

th nh t trong danh sách (t c là SuSE Linux 9.3). Hãy nh l i, trong GRUB vi c

ánh s c b t u t `0' ch không ph i `1'. Tùy ch n timeout cho bi t GRUB

s kh i ng m t cách t ng sau kho ng th i gian ch ra (tính theo giây) n u

không nh n phím nào. Trong tr ng h p này là sau 8 giây. Tùy ch n color dùng

ch n màu cho trình n (hãy th nó!).

Sau nh ng thi t l p chung là ph n thi t l p cho t ng h i u hành c th .

M i ph n u b t u b ng l nh `title' theo sau là tên s hi n th trong trình

n. Và vì l nh này hi n th tham s m t cách nguyên v n, nên b n có th nh p

b t k th gì vào phía sau. Nh b n th y trong t p tin c u hình trên, ph n u

tiên là kh i ng "SUSE LINUX 9.3", ph n th hai ­ "Windows", v.v. . .

Khác v i tr ng h p LILO, sau khi thay i c u GRUB không c n ph i ch y

b t k l nh nào nh ng thay i này có hi u l c. Chúng s c c p nh t m t

36 Cài t H H Linux trên cùng máy tính v i Windows

cách t ng trong l n kh i ng sau. ây là m t i m m nh c a GRUB so v i

LILO.

T t nhiên ây không ph i là t t c nh ng kh n ng s d ng c a GRUB,

nh ng i v i ng i dùng m i thì nh v y là . Sau m t th i gian làm vi c v i

Linux và có kinh nghi m b n s bi t cách tìm thêm thông tin v trình kh i

ng tuy t v i này.

2.8 S d ng trình kh i ng LILO

2.8.1 Cài t và c u hình LILO

Gi ng nh tr ng h p Windows NT, chúng ta s a ra các b c c n th c hi n

có th kh i ng nhi u H H.

1. Tr c khi cài t Linux hãy chu n b a m m kh i ng Windows.

2. Dùng ch ng trình Partition Magic l y ph n không gian a còn tr ng

và trên ó t o ra m t phân vùng ext2(3) (h th ng t p tin Linux) và m t

phân vùng swap. Cách chia a ã nói trên. N u dung l ng a c ng

v t quá 8,4 Gbyte thì hãy c k các ph n 2.3 và 2.5.

3. Cài t Linux theo ch d n i kèm v i b n phân ph i. C n nh r ng, n u

b n mu n s d ng trình kh i ng LILO, thì trong quá trình cài d t Linux

c n ch n ph ng án cài LILO vào b n ghi kh i ng chính (Master Boot

Record). T o các a m m kh i ng theo nguyên t c là không b t bu c,

nh ng tác gi khuyên b n c nên làm.7

4. B c ti p theo c n c u hình LILO có th kh i ng các H H theo

l a ch n. LILO c c u hình b ng t p tin /etc/lilo.conf và câu l nh

/sbin/lilo. Câu l nh này dùng cài t (hay cài t l i) LILO.

Chúng ta xem xét m t ví d nh c a t p tin c u hình LILO. Trong ví d này

chúng ta s coi nh thi t b /dev/hda1 là phân vùng v i DOS/Windows, còn

phân vùng /dev/hda2 ch a Linux. Trong tr ng h p ó /etc/lilo.conf

có d ng g n nh sau:

boot = /dev/hda2

compact

delay = 50

# message = /boot/bootmesg.txt

root = current

image = /boot/vmlinuz-2.4.22

label = linux

7Ghi chú. Trình kh i ng LILO không b t bu c ph i cài t vào b n ghi kh i ng chính c a a, LILO có

th n m b n ghi kh i ng c a phân vùng chính c kích ho t và ch a th m c g c c a Linux ho c th m

chí trên phân vùng lôgíc trong phân vùng m r ng. Trong tr ng h p ó MBR c n ph i có kh n ng n p LILO,

ví d khi MBR là trình kh i ng c a MS-DOS hay Windows. Tuy nhiên tác gi ch a nhìn th y s c n thi t

c a ng d ng này (n u ã ch n LILO làm trình kh i ng chính thì hãy s d ng cho "tr n b "), vì th chúng ta

s không xem xét n.

2.8 S d ng trình kh i ng LILO 37

read-only

other = /dev/hda1

table = /dev/hda

label = dos

Vài l i gi i thích cho ví d : Dòng boot cho bi t thi t b kh i ng.

Dòng compact b t ch nén t p tin map ­ t p tin ch a c tính c a nhân

c kh i ng; tính n ng (nén) này t ng t c c a kh i ng u.

Câu l nh message dùng a ra thông báo theo ý mu n khi kh i ng.

B t u t dòng image là các ph n nh c a t p tin c u hình, m i ph n

t ng ng v i m t h i u hành s kh i ng theo l a ch n c a ng i dùng.

Trong m i ph n nh v y có m t dòng label. Trên dòng này ghi tên c n

nh p vào d u nh c LILO hay tên s hi n th trong trình n c a LILO

có th ch n H H mu n kh i ng. N u nh tên không c nh p sau

kho ng th i gian ch trên dòng delay (tính theo ph n m i giây ­ c n nhân

v i 0,1 giây), thì s kh i ng H H theo m c nh. Trong ví d này, s kh i

ng Linux theo m c nh, vì ph n c u hình t ng ng v i Linux n m u

tiên trong t p tin. Có th ch ra h i u hành c kh i ng theo m c nh

khi thêm m t dòng có d ng default=dos, t c là s d ng tên ã t trên

dòng label.

Dòng table=<device> cho bi t tên thi t b ch a b ng phân chia a. LILO

s không a thông tin v phân chia a cho h i u hành c kh i ng

n u bi n này không c a ra. (M t s h i u hành có công c khác

xác nh là ã c kh i ng t phân vùng nào.) ng quên r ng, c n th c

hi n câu l nh /sbin/lilo, sau khi thay i ch d n n b ng phân chia

a, t c là thay i bi n table. N u t dòng (g i là ph n nh thì t t h n)

other = /dev/hda1 trong t p tin /etc/lilo.conf, thì trong th m c

g c c a a /dev/hda1 ( a C: trong h th ng thu t ng Microsoft) c n có

trình kh i ng ph (không ph i là chính). Trên m t máy c a tác gi ó

n m trình kh i ng NT Loader (vì Windows NT c cài t tr c Linux),

và LILO kh i ng thành công Windows NT. Ch c n t th i gian ch kh i

ng trong t p tin boot.ini b ng không, không th y trình n kh i ng

c a NT Loader. Tuy nhiên, n u vì m t lý do nào ó b n mu n th y trình

n này thì giá tr timeout trong t p tin boot.ini c n t khác không (th i

gian ch c tính theo giây). i u này có th c n thi t khi mu n kh i ng

c Windows 98 t trình n c a NT Loader (trong tr ng h p này s có 3

H H: Linux, Windows NT và Windows 98, trong trình n c a LILO n u

ch n dos thì s hi n ra trình n c a NT Loader r i t ó ch n m t trong

hai H H Windows kh i ng).

N u b n c mu n kh i ng Windows tr c ti p t LILO, thì hãy thêm

ph n nh sau vào /etc/lilo.conf:

other = /boot/bootsect.dos

label = win

trong ó bootsect.dos l y t th m c g c c a a ch a NT Loader.

38 Cài t H H Linux trên cùng máy tính v i Windows

5. Sau khi s a xong t p tin /etc/lilo.conf theo ý mu n, c n ch y câu l nh

/sbin/lilo nh ng thay i có hi u l c. Câu l nh này (trong tài li u

h ng d n g i là map-installer) cài t trình kh i ng ph , mà s c

kích ho t trong l n kh i ng ti p theo. Tr c khi ch y /sbin/lilo

thay i b c kh i ng, hãy th c hi n câu l nh này v i tham s -t. Khi có

tham s này s th c hi n t t c các th t c cài t trình kh i ng, tr vi c

thay i t p tin map, b n ghi sector kh i ng, và b ng phân chia a,

t c là ch ch y th c u hình m i. N u cho thêm tùy ch n -v, thì b n c

s c bi t thêm thông tin chi ti t v nh ng gì l nh /sbin/lilo s th c

hi n.

Khi /sbin/lilo ghi è n i dung m i lên sector kh i d ng, thì n i dung c

c a sector này s t ng c ghi nh vào m t t p tin. Theo m c nh ó là

t p tin /boot/boot.NNNN, trong ó NNNN t ng ng v i s c a thi t b , ví

d , 0300 ­ t ng ng /dev/hda, 0800 ­ /dev/sda, v.v. . . N u t p tin này

ã có trên a, thì nó không b ghi è lên. Tuy nhiên có th t m t tên khác

ghi sector kh i ng, không nh t thi t ph i dùng /boot/boot.NNNN.

T p tin /boot/boot.NNNN có th s d ng ph c h i n i dung c c a

sector kh i ng, n u không còn cách ph c h i nào khác n gi n h n. Câu

l nh th c hi n có d ng:

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

hay

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

(bs=446 vì ch ph c h i ch ng trình kh i ng, và không ng gì n b ng

phân chia a).

C ng có th ph c h i MBR c khi c n thi t b ng câu l nh /sbin/lilo v i

tùy ch n -u. Nh ng c n bi t r ng, câu l nh này ch làm vi c úng v i i u

ki n là th m c LILO (t c là /boot) không thay i k t khi cài t.

MBR c a MS-DOS có th c ph c h i b ng cách kh i ng vào DOS t

a m m (CD) r i ch y câu l nh fdisk /mbr (xem trên). L nh này ch thay

i mã ch ng trình kh i ng n m trong MBR, mà không thay i b ng

phân chia a.

6. Sau khi cài t l i trình kh i ng c n kh i ng l i máy tính và th các

ph ng án kh i ng khác nhau ki m tra.

k t thúc ph n nói v LILO này chúng ta s xem xét vài khó kh n có th

xu t hi n khi s d ng LILO, và cách kh c ph c (n u có th ).

Khi LILO c n p, nó a ra màn hình t "LILO". Khi này m i ch cái bi u

th s k t thúc m t hành ng nào ó hay k t thúc m t b c n p LILO. N u

kh i ng b b ng ng gi a ch ng, thì qua s ch cái a ra có th nh n nh v

nguyên nhân xu t hi n v n .

Không ch cái nào hi n ra ­ không có ph n nào c a LILO c n p. Ho c

LILO không c cài t, ho c phân vùng ch a LILO ch a c kích ho t.

2.8 S d ng trình kh i ng LILO 39

L [mã l i] ­ trình kh i ng chính ã c n p và ã ch y (t c là ã nh n

c quy n i u khi n), nh ng nó không th n p trình kh i ng ph . Mã

l i hai ký t cho bi t nguyên nhân c th c a v n (cách gi i mã c n tìm

trong tài li u k thu t c a LILO). Thông th ng thì v n n y sinh do

a x u (có khuy t t t) hay không t úng c u trúc hình h c c a a. N u

LILO không d ng l i ây, mà ti p t c a ra m t chu i vô t n các mã l i,

thì v n th ng d gi i quy t.

LI ­ trình kh i ng chính ã n p c trình kh i ng ph , nh ng không

ch y c nó. Có th là l i a c u trúc hình h c c a a, ho c t p tin

boot/boot.b b di chuy n mà ng i dùng quên không ch y /sbin/lilo.

LIL - trình kh i ng ph ã c ch y, nh ng nó không th n p b ng mô

t t t p tin map. Nguyên nhân th ng do khuy t t t c a a ho c không

a úng c u trúc hình h c c a a.

LIL? ­ trình kh i ng ph ã c n p vào a ch không úng. Thông

th ng do l i a ra c u trúc hình h c c a a ho c t p tin /boot/boot.b

b di chuy n mà ng i dùng quên không ch y /sbin/lilo.

LIL- ­ b ng mô t trong t p tin map b phá h y. Thông th ng do l i a

ra c u trúc hình h c c a a ho c t p tin /boot/boot.b b di chuy n mà

ng i dùng quên không ch y /sbin/lilo.

LILO ­ t t c các ph n c a LILO c n p thành công.

2.8.2 Cài t các h i u hành khác sau Linux

Khi cài t MS-DOS và Windows 95/98, trình kh i ng c a chúng (không ph

thu c vào ý mu n c a b n c) c ghi vào Master Boot Record (MBR), và d u

kích ho t trong b ng phân vùng s c chuy n sang phân vùng MS-DOS (Win-

dows 95/98). Mà trình kh i ng MS-DOS và Windows 95/98 ch "bi t" chuy n

quy n i u khi n cho sector u tiên c a phân vùng kích ho t. Nh th , n u

nh b n c u tiên cài t Linux, và sau ó m i cài t Windows 95/98 hay

MS-DOS, thì Linux s không th kh i ng. Có th ph c h i l i LILO b ng cách

ch y l nh /sbin/lilo (n u LILO c cài vào MBR), ho c kích ho t phân vùng

ch a LILO (n u LILO c cài vào phân vùng chính).

Khi có v n sau khi cài t m t h i u hành khác sau Linux, th ng có

th gi i quy t b ng cách kh i ng vào Linux b ng a m m kh i ng, s a l i

t p tin c u hình LILO (thêm ph n nh cho H H m i), r i ch y /sbin/lilo.

2.8.3 Chuy n th m c /boot lên phân vùng DOS

Nh ng phiên b n nhân Linux m i nh t h tr kh n ng t các t p tin c n thi t

trên giai o n kh i ng vào h th ng t p tin MS-DOS (hay UMSDOS). Vì trong

ph n l n các tr ng h p phân vùng DOS chi m các vùng a u (không có h n

ch c a BIOS), nên cho phép gi i quy t nhi u v n c a a l n, khi mà th

m c /boot không th n m trên phân vùng dành cho Linux.

40 Cài t H H Linux trên cùng máy tính v i Windows

th c hi n ph ng án kh i ng này, c n phân vùng DOS ch c/ghi,

t o trong ó m t th m c (ví d , /dos/linux), và chuy n t t c các t p tin t

th m c /boot vào ó; th m c /boot c chuy n thành liên k t t ng tr ng

n th m c /dos/linux; v trí m i c a th m c /boot c n ch ra trong t p tin

/etc/lilo.conf, và cu i cùng ch y l nh /sbin/lilo.

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

Không ch các t p tin kh i ng và nhân có th n m trong phân vùng DOS,

mà c ti n trình kh i ng Linux nói chung có th c t ch c t DOS. Kh

n ng này th c hi n nh ch ng trình c bi t loadlin.exe, do Hans Lermen (ler-

[email protected]) vi t. Ch ng trình này th ng có trên các a c a b n

phân ph i.8

Loadlin.exe cung c p cách kh i ng Linux t c ng an toàn nh t, khi có

phân vùng kích ho t là DOS hay Windows. Ph ng án kh i ng này c

khuyên s d ng cho ng i dùng Linux m i. Ph n l n ng i dùng m i (và không

ch h ) không kiên nh n c tài li u r t hay nh ng r t dài (và l i vi t trên

ti ng Anh n a) c a LILO. Vì th h th ng s d ng LILO không úng cách, và

k t qu là không th kh i ng c b t k h i u hành nào (tác gi c ng ã

r i vào tr ng h p nh v y). i v i nh ng ng i dùng m i thì s thu n ti n

h n khi s d ng loadlin.exe kh i ng và b t u tìm hi u Linux. Tuy nhiên,

"không vào hang c p sao b t c c p".

Ch ng trình loadlin.exe không yêu c u ph i cài t, ch c n t ch ng trình

­ t p tin loadlin.exe và nhân ( nh c a nhân) lên m t trong các a mà DOS nh n

ra. Có th dùng ch ng trình này kh i ng Linux t CD ho c t a trong

m ng mà không c n s d ng a m m kh i ng. Kh n ng này bi n loadlin.exe

thành m t công c tuy t v i kh i ng Linux khi có v n v i LILO.

Phiên b n 1.6 c a loadlin.exe làm vi c v i m i c u hình DOS và có r t ít h n

ch . Phiên b n này có th s d ng b nh m r ng; có th n p các nhân l n (các

bzImage) và các nh a o (initrd) tr c ti p vào vùng b nh n m trên.

Vi c s d ng loadlin.exe không có ngh a là Linux làm vi c d i DOS, vì

ch ng trình này h tr "kh i ng lôgíc" c a máy tính, và sau ó DOS c

thay th hoàn toàn b ng Linux. N u nh b n c mu n quay tr l i DOS, thì

ph i kh i ng l i máy tính, ví d , b ng câu l nh reboot.

Nh v y, c n làm gì có th s d ng ch ng trình loadlin.exe.

Trên máy tính c a b n (t t nhiên v i b x lý 386 ho c cao h n) c n cài t

DOS hay WINDOWS 95.

C n có nh nén c a nhân Linux (zImage, bzImage)9.

Ch ng trình loadlin.exe. Có th tìm th y trên a phân ph i d ng không

nén hay trong gói LOADLIN16.TGZ. Gói nén này còn ch a h ng d n

8m t s b n phân ph i còn có gói cài t cho ch ng trình này, thông th ng ghi t p tin loadlin.exe vào th

m c c a ng i dùng root

9Ghi chú. zImage là nh d ng nh phân c c a nhân, bzImage là nh d ng m i h n (s phiên b n nhân l n

h n 1.3.73) có kích th c lên t i 1 Mbyte, do ó, nhân khi gi i nén có kích th c lên t i 2 Mbyte. Ti p theo

chúng ta s ch nói v các t p tin zImage, m c dù b n c có th thay th zImage thành bzImage

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

s d ng DOC\MANUAL.TXT, t p tin tham s ví d DOC\TEST.PAR, và

h ng d n cách a các tham s DOC\PARAMS.DOC ( ng quên r ng

chúng là nh ng t p tin DOS).

N u b n ch y loadlin.exe không có tham s

C:\LOADLIN> loadlin

thì s nh n c h ng d n s d ng ng n g n. Thu n ti n h n c h ng d n

này khi ch y ch ng trình v i tham s more (gi ng trong Linux):

C:\LOADLIN> loadlin | more

Bây gi chúng ta có th xem xét các b c cài t Linux khi s d ng loadlin.exe

kh i ng.

1. Chia các phân vùng cho Linux (cách làm xem ph n 2.5)

2. Cài t Linux vào phân vùng ã chia. LILO c n cài t vào sector u tiên

c a phân vùng Linux không ghi è lên MBR và không b m t kh n ng

kh i ng vào Windows.

3. Sau khi k t thúc ph n cài t hãy kh i ng Linux (n u không có cách nào

khác, hãy s d ng a m m kh i ng). G n phân vùng DOS (gi thi t là

/dev/hda1, còn phân vùng Linux là /dev/hda3):

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

T o th m c /mnt/C/loadlin và gi i nén t p tin LOADLIN16.TGZ vào

ó. Ngoài ra sao chép t th m c /boot vào th m c ó c t p tin ch a

nh c a nhân Linux. Có th tìm t p tin ch a nh c a nhân c n thi t nh

t p tin /etc/lilo.conf: tìm trong t p tin c u hình dòng "image=..." và

b n c s th y tên c n thi t phía bên ph i d u b ng. Ví d tên c a t p

tin này là vmlinuz-2.4.22. Sao chép t p tin vmlinuz-2.4.22 t /boot vào

/mnt/C/loadlin và i tên thành vmlinuz (vi c i tên là không nh t

thi t, và ch có ý ngh a thu n ti n cho s d ng):

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

4. Bây gi i kh i ng l i máy tính vào DOS tr c ti p (n u b n c có Windows

95/98 thì c n nh n phím <F8> khi kh i ng hi n th trình n cho phép

ch n DOS), ho c qua h p tho i l a ch n khi nh n l nh t t máy (shutdown)

Windows 95/98.

Sau khi vào DOS hãy chuy n sang th m c C:\LOADLIN:

CD \LOADLIN

r i th c hi n l nh:

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

42 Cài t H H Linux trên cùng máy tính v i Windows

ho c, n u b n c mu n n p nhân cùng v i a RAM:

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

Còn có th ghi t t c các tham s c a l nh loadlin.exe vào t p tin (ví d v i

tên params) và g i câu l nh ó d ng sau:

C:\LOADLIN> LOADLIN @params

Kh n ng này c bi t có ích khi a nhi u tham s dòng l nh và khi dài

c a dòng l nh l n h n 127 ký t . Mô t y t t c các tham s c a câu

l nh loadlin.exe có th tìm th y trong t p tin PARAMS.DOC ho c Internet

trên trang http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.

html và http://rsphy1.anu.edu/~gpg109/BootPrompt-HOWTO.html.

Bây gi b n c có th s d ng cách này kh i ng Linux. Công vi c duy

nh t còn l i là làm sao không ph i gõ l nh loadlin v i t t c các tham s sau

m i l n kh i ng l i. Có th vi t thêm l nh g i loadlin vào t p tin autoexec.bat

ho c t o m t t p tin l nh (ví d , linux.bat), và khi ch y t p tin này, máy tính

s chuy n vào ch DOS tr c, sau ó thì ch y Linux. Tác gi cho r ng nh ng

thông tin ã a ra trên t o t p tin bat c n thi t. C n nói thêm r ng,

không c kh i ng Linux t giao di n h a DOS/Windows và c n t t m t vài

tùy ch n trong t p tin n C:\MSDOS.SYS ( ây là t p tin v n b n thông th ng),

b ng cách thêm vào hai dòng sau (n u ch a có):

BootGUI=0

Logo=0

Dòng u tiên t t giao di n h a, và DOS s c kh i ng thay cho

Windows 95/98. ( ch y giao di n h a, c n nh p câu l nh C:\> win). Dòng

Logo=0 t t vi c hi n th bi u t ng Windows (c a s ). V n ch , i v i m t

s c c màn hình Linux s a ra m t màn hình tr ng r ng sau khi kh i ng,

n u nh có hi n th bi u t ng Windows.

Ch ng 3

Kh i ng Linux l n u

V n s kh i u nan ­ Trung Qu c

Ng i d ch: Sau khi cài t r t có th b n c s không bi t b c ti p theo ph i làm gì.

B t máy tính lên, i h th ng kh i ng xong và ... ng i nhìn. Ph i làm gì có th ti p t c

làm vi c v i h th ng Linux? Sau khi làm vi c xong thì t t máy th nào? Có nh ng ch ng

trình nào nên bi t? Trong khi làm vi c có v n n y sinh thì tìm câu tr l i âu? Trong

ch ng này chúng ta s tìm th y câu tr l i cho nh ng câu h i trên.

3.1 Kh i ng H H Linux

Nh v y là vi c cài t Linux ã hoàn thành1. N u ng i dùng ã cài t GRUB

làm trình kh i ng, thì sau nh ng dòng ch BIOS th ng a ra s xu t hi n

màn hình d ng nh trong hình 3.1.

N u không ch m vào bàn phím, thì trên màn hình s xu t hi n r t nhi u

thông báo mà t m th i chúng ta s không xem xét ý ngh a c a chúng2. Cu i cùng

xu t hi n màn hình cho phép ng i dùng ng nh p vào h th ng. N u b n ã

ch n t ng ch y ch ho thì hãy nh n <Ctrl>+<Alt>+<F1> th y màn

hình ng nh p nh sau:

ThinhQuyen login:

Màn hình ng nh p này xu t hi n trên máy c a tác gi khi kh i ng Debian

Linux. T t nhiên màn hình ng nh p c a b n c s khác. N u có kiên nh n

c h t cu n sách này, thì b n s bi t cách thay i màn hình này, ví d a

ra nh ng câu chào d ng "Xin chào! Hôm nay là 02 tháng 09 n m 2006. Hãy nh p

vào tên ng i dùng và m t kh u". Tuy nhiên bây gi v n còn s m nói v v n

này. N u kh i ng b ng a m m thì quá trình c ng t ng t nh ng ch m

h n m t chút.

N u Linux không ph i là h i u hành (H H) duy nh t trên máy tính, thì

trên màn hình kh i ng GRUB s xu t hi n danh sách các h i u hành tìm

1Ng i d ch: Thông tin trong ph n này c a b n g c ti ng Nga ã h i c và trình kh i ng b n g c s d ng

là LILO. B n d ch ã c p nh t l i và s d ng trình kh i ng GRUB

2Trong nh ng b n phân ph i Linux m i, ví d SuSE Linux, có s d ng màn hình flash. Do ó có th b n

c s không th y nh ng thông báo này. Trong tr ng h p ó, hãy nh n phím t ng ng chuy n v màn

hình kh i ng bình th ng. Phím này th ng là <Esc>.

44 Kh i ng Linux l n u

Hình 3.1: Màn hình kh i ng c a GRUB

th y. Có th ch n H H mu n kh i ng b ng các phím < > và < > r i nh n phím

<Enter>. N u ã ch n kh i ng Linux thì cu i cùng ng i dùng ph i th y dòng

login:, t c là dòng m i nh p vào tên ng nh p.

3.2 ng nh p vào h th ng

Nh b n ã bi t, khi hi n ra dòng m i này thì u tiên c n nh p vào tên ng i

dùng, sau ó nh p vào m t kh u khi có yêu c u vào h th ng. N u ây là l n

ng nh p u tiên vào h th ng ngay sau khi cài t, và trong khi cài t b n

quên t o thêm ng i dùng, thì hãy nh p vào tên ng i dùng "root" (ng i dùng

cao c p). ây là ng i dùng duy nh t luôn luôn có tài kho n c t o ra trong

quá trình cài t. Ng i dùng này là ch s h u có toàn quy n i v i h th ng

bây gi c ng nh sau này, t c là có quy n truy c p không gi i h n n các tài

nguyên, có th thêm, xóa nh ng ng i dùng khác, d ng h th ng v.v. . . Nh ng

thao tác không c n th n c a ng i dùng này có th d dàng d n n nh ng h u

qu khó l ng, th m chí làm h ng h th ng. Vì th th ng ch ng nh p d i

tên ng i dùng này khi th c hi n các công vi c qu n tr h th ng. Tuy nhiên

chúng ta ang trong tr ng h p này, vì th hãy nh p "root" vào dòng login:

r i nh n phím <Enter> (<Return>). H th ng s a ra câu h i m t kh u:

Password:

T t nhiên là b n c n nh p vào m t kh u t ng ng v i ng i dùng ã a

ra, ây là m t kh u c a root. M t kh u này là m t kh u ã a ra cho ng i

dùng root trong quá trình cài t. Sau khi nh p m t kh u c ng nh n <Enter>.

N u sau khi nh p vào tên ng i dùng r i r t lâu sau không vào m t kh u, thì

h th ng s t ng quay tr l i dòng h i tên ng i dùng login:. Sau khi nh p

3.2 ng nh p vào h th ng 45

úng m t kh u, b n s th y dòng nh sau:

[root@ThinhQuyen /root]#

Dòng này c g i là d u nh c. Xu t hi n d u nh c có ngh a là h th ng ã

s n sàng ti p nh n và th c hi n câu l nh c a ng i dùng. th i i m này nó có

ngh a là b n ã ng nh p vào h th ng m t cách thành công. Trong MS-DOS

và Windows(TM) màn hình en và d u nh c h th ng th ng c g i là ch

dòng l nh. Chúng ta s g i ch này là v n b n phân bi t v i ch ho

c a h th ng X Window.

Trong ví d a ra d u nh c g m tên ng i dùng (root), tên h th ng (Thin-

hQuyen) và th m c hi n th i (/root). Sau này b n có th thay i d ng c a

d u nh c này. Trong t t c các ví d ti p theo chúng ta s s d ng d u nh c ch

g m có tên ng i dùng.

Tr c khi ngh b n c nh p vào câu l nh u tiên, c n nói r ng trên b t

k h th ng UNIX nào ki u ch c ng u óng vai trò quan tr ng, t c là có phân

bi t ch hoa và ch th ng. Vì th c n nh p vào t t c các câu l nh c ng nh

tham s c a chúng nh ch ra trong ví d , k c ki u ch . Câu l nh u tiên

chúng ta s nh p vào là useradd. Sau tên c a câu l nh c n kho ng tr ng và sau

ó là tên ng i dùng, ví d , nhimlui:

[root]# useradd nhimlui

Ngay sau khi nh n phím <Enter> ch y l nh này, trên h th ng s bi t

r ng ng i dùng nhimlui t n t i (chúng ta nói, "m tài kho n cho ng i dùng

nhimlui"). Tuy nhiên v n ch a th vào h th ng (th ng nói, " ng nh p") d i

tên ng i dùng này. h th ng cho phép ng i dùng m i nhimlui làm vi c,

c n ph i "t o" thêm cho ng i dùng này m t kh u b ng câu l nh:

[root]# passwd nhimlui

S xu t hi n dòng:

Changing password for nhimlui.

New Password:

Hãy nh p vào m t kh u. Sau khi nh p xong, c ng nh n phím <Enter>, h th ng

s h i nh p m t kh u m t l n n a ki m tra.

Reenter New Password:

ng ng c nhiên, b n s không nhìn th y m t kh u vào vì h th ng s không

hi n th gì ra, k c d u sao `*' nh th ng th y. N u b n ã nh p úng t t c ,

thì s xu t hi n thông báo thành công d ng:

Password changed.

46 Kh i ng Linux l n u

và s l i xu t hi n d u nh c c a h th ng. N u nh p vào m t kh u không t t

(m t kh u quá ng n ho c quá n gi n), thì s xu t hi n dòng c nh báo (d ng

Bad password: too short), nh ng h th ng v n ti p nh n m t kh u và cho

phép ng i dùng m i ng nh p vào h th ng.

Nh v y là b n c ã làm quen v i hai câu l nh u tiên c a h th ng Linux:

useradd và passwd. Câu l nh ti p theo mà b t k ng i dùng Linux nào c ng

c n ph i bi t ó là câu l nh man. man là h th ng tr giúp luôn luôn i kèm v i

h th ng Linux. C n ph i nh p vào câu l nh này v i m t tham s ­ tên c a câu

l nh khác ho c t khóa. Ví d :

[root]# man passwd

K t qu là b n s nh n c m t v n b n mô t câu l nh t ng ng ho c

thông tin v tài mà t khoá a ra. Vì thông tin th ng không th n m g n

trên m t màn hình nên khi xem c n s d ng các phím <PageUp>, <PageDown>,

và phím tr ng. Hãy nh n phím <Q> b t k th i i m nào thoát ra kh i

màn hình xem man và quay l i dòng nh p l nh. Bây gi xin b n c hãy th xem

thông tin v hai câu l nh ã c p n trên ­ login và passwd. Chú ý là có

th xem thông tin v chính b n thân câu l nh man. Hãy ch y l nh:

[root]# man man

R t ti c theo nh tác gi bi t thì hi n th i các trang thông tin man còn ch a

c d ch sang ti ng Vi t. Do ó b n s nh n c nh ng trang này b ng ti ng

Anh. N u nh b n không có kh n ng c ti ng Anh, thì hay kiên nh n c cu n

sách này ho c m t cu n sách khác cùng tài.

B n c còn có th th ch y thêm m t vài câu l nh n a và theo dõi xem h

th ng làm gì. Ví d , hãy th nh ng câu l nh li t kê trong b ng 3.1 (hãy nh p

chúng cùng v i nh ng tham s có trong b ng).

B ng 3.1: Nh ng câu l nh n gi n c a Linux

Câu l nh Mô t ng n g n

whoami Thông báo tên ng nh p c a b n

w ho c who Cho bi t nh ng ng i dùng nào hi n ang làm vi c trên h th ng

pwd Cho bi t tên c a th m c hi n th i

ls -l Hi n th danh sách t p tin và th m c con c a th m c hi n th i

cd tên_th _m c Chuy n th m c hi n th i n tên_th _m c

ps ax Hi n th danh sách các ti n trình ang ch y

Hãy xem mô t v nh ng câu l nh này b ng man.

Chúng ta s không xem xét chi ti t danh sách t t c nh ng câu l nh có th

g p. Vì th nh t, ng i dùng s d n d n làm quen v i chúng trong quá trình c

cu n sách này và th c hành trên H H Linux c a mình. Th hai, có th c v

nh ng câu l nh chính trong b t k cu n sách nào nói v UNIX.

3.3 Console, terminal o và shell 47

3.3 Console, terminal o và shell

Nh v y là b n c ã có kinh nghi m làm vi c u tiên ch v n b n (hay

còn g i là kênh giao tác "console") c a h th ng Linux. Chúng ta s còn g p

th ng xuyên nh ng khái ni m trình l nh "terminal" và "console", do ó tác gi

gi i thích k h n nh ng khái ni m này.

Khi h th ng UNIX u tiên m i c t o ra, máy tính còn r t to (mainframe)

và ng i dùng làm vi c trên nh ng máy tính này qua m t h th ng nh ng giao

di n k ti p nhau dùng k t n i các terminal xa. Terminal ­ thi t b dùng

giao ti p gi a ng i dùng và máy tính, th ng g m màn hình và bàn phím.

Máy tính cá nhân c a b n c là máy tính th h m i, do ó ch c s không có

terminal xa nào k t n i t i, nh ng v n có bàn phím và màn hình th c hi n vai

trò terminal i v i ng i dùng. Ngoài ra thêm vào thành ph n c a terminal bây

gi còn có chu t.

Mainframe có m t terminal c bi t dành cho nhà qu n tr (system adminis-

trator) h th ng, c g i là console. Console th ng k t n i t i máy tính không

qua giao di n k ti p nhau mà qua m t c m riêng ( ôi khi thi t b a ra

không ph i là màn hình mà là m t thi t b in). Vì trên các h th ng UNIX ng i

ta th ng tuân theo các truy n th ng, do ó bàn phím và màn hình máy tính cá

nhân ngày nay làm vi c gi ng nh console ngày x a. i m m nh c a gi i pháp

này ch t t c nh ng ch ng trình c ã dùng qu n tr h th ng UNIX có

th làm vi c không có v n gì trên d ng console m i này.

Tuy nhiên, ngoài console Linux còn cho phép k t n i các terminal xa t i

máy tính. Và h n th n a còn cung c p kh n ng làm vi c v i m t vài terminal

o t m t console duy nh t. Hãy nh n t h p phím <Ctrl>+<Alt>+<F2>. B n

c s l i th y dòng m i ng nh p login:. Nh ng ây không ph i là làm vi c

l i t u v i h th ng mà b n c ch chuy n sang m t terminal o khác.

ây b n c có th ng nh p d i tên ng i dùng khác. Hãy th vào h th ng

b ng tên ng i dùng v a m i t o ra (nhimlui). Sau ó hãy nh n t h p phím

<Ctrl >+< Alt>+<F1>. B n s quay l i màn hình ban u. Theo m c nh, h u

h t các b n phân ph i Linux l n (Red Hat, SuSE, Debian,. . . ) m ra 6 phiên

làm vi c song song (terminal o) nh v y khi kh i ng. Nh v y r t thu n

ti n cho s d ng. chuy n gi a các terminal o chúng ta s d ng các t h p

phím <Ctrl>+<Alt>+<F1> - <Ctrl>+<Alt>+<F6>. C n nói thêm là khi làm vi c

ch v n b n (không ph i ho ) thì c ng có th s d ng các t h p phím

<Alt>+<F1> - <Alt>+<F6> và thu c k t qu t ng t . Tuy nhiên n u làm

vi c ch ho thì không th không dùng phím <Ctrl>. Do ó, t t h n h t là

làm quen ngay t u v i t h p 3 phím. Nhân ti n c ng c n nói luôn, n u trong

quá trình làm vi c b n c không nh ang n m trong terminal o nào thì hãy

s d ng câu l nh tty. L nh này s a ra tên c a terminal d ng: /dev/tty2.

Xin nói ngay l p t c n u b n mu n thoát kh i m t trong các terminal thì có

th th c hi n b ng t h p phím <Ctrl>+<D>. Thao tác này không t t máy và

c ng không kh i ng l i h th ng. ng quên r ng Linux là H H nhi u ti n

trình (multiproccess) và nhi u ng i dùng (multiuser). M t ng i dùng nào ó

d ng công vi c không có ngh a là c n ph i t t máy, còn có nh ng ng i dùng

khác v n ti p t c làm vi c. T h p phím nói trên ch n gi n là d ng phiên làm

vi c hi n th i c a m t ng i dùng, và h th ng s hi n th l i trên terminal này

48 Kh i ng Linux l n u

d u m i ng nh p (login:) mà b n c ã th y. C ng có th d ng phiên làm

vi c b ng m t trong hai câu l nh logout ho c exit.

Bây gi khi ã bi t cách b ng u và k t thúc phiên làm vi c trên h th ng,

xin b n hãy th c hi n nh ng l i khuyên trên, t c là vào h th ng d i tên ng i

dùng bình th ng (không có quy n cao "c p" c a ng i dùng root). Hãy óng t t

c nh ng phiên làm vi c mà root m ra, r i vào h th ng d i tên ng i dùng

m i t o ra.

Còn bây gi c n nói vài dòng v h v . H v hay shell (t này th ng không

d ch mà nguyên ti ng Anh) là ch ng trình th c hi n vi c giao ti p c a h

th ng v i ng i dùng. Chính shell nh n t t c nh ng câu l nh mà ng i dùng

nh p vào t bàn phím và t ch c vi c th c hi n nh ng câu l nh này. vì th shell

còn có th g i là b x lý l nh (thu t ng quen thu c i v i ng i dùng DOS).

Nói m t cách ch t ch thì câu "h th ng hi n th d u nh c" là không úng, vì

d u nh c này là do shell a ra i ng i dùng nh p vào câu l nh ti p theo.

M i l n ng i dùng nào ó vào h th ng, câu l nh login s ch y cho ng i dùng

này m t b x lý l nh ­ shell. N u b n c ng nh p vào h th ng t terminal

th hai d i tên ng i dùng nhimlui (ho c d i tên ng i dùng b n ã ch n),

thì hãy chú ý n s khác nhau trong d u nh c c a hai ng i dùng root và

nhimlui. D u nh c c a ng i dùng root có ký t # cu i, d u nh c c a t t c

nh ng ng i dùng còn l i ­ ký t $.

Không ch duy nh t l nh login có kh n ng ch y shell. B n ch c n nh p

vào l nh bash ( ây c ng là tên c a ch ng trình h v trên ph n l n các h

th ng Linux) và nh v y là ã ch y m t shell m i. Khi thoát kh i h v m i

này (b ng câu l nh exit ho c t h p phím <Ctrl>+<D>), b n s quay l i h v

ban u (h v mà t ó b n ã ch y l nh bash).

H v bash không ch là b x lý l nh mà còn là m t ngôn ng l p trình

m nh. Trong bash có y các câu l nh tích h p (n i b ) và các toán t , và

ngoài ra còn có th s d ng các ch ng trình khác n m trên a làm câu l nh.

Có th xem danh sách các câu l nh tích h p trong bash b ng l nh help. Hãy

th l nh này! Xem thông tin chi ti t v m t l nh nào ó c ng b ng l nh help

này v i tham s là tên c a l nh, ví d : help cd. Vì h v bash óng m t vai trò

h t s c quan tr ng trong Linux, nên tác gi s dành riêng m t ch ng c a cu n

sách này nói v nó. T t nhiên là b n có th tìm th y nh ng thông tin t ng

t trong b t k cu n sách nào v UNIX. C ng c n l u ý là i v i các h th ng

UNIX các nhà phát tri n ã vi t ra nhi u h v khác thay th cho bash. C ng có

th s d ng nh ng h v này trên Linux, nh ng theo m c nh s ch y bash.

Bây gi chúng ta s xem xét thêm m t câu l nh n a mà b n c c n bi t. Máy

tính c a ng i dùng thông th ng là máy cá nhân (personal computer hay nói

g n là PC) dù nhà hay c quan. Có ngh a b n c c ng là ng i dùng root

c a h th ng. Nh ng nh ã nói trên, ng nh p d i tên ng i dùng cao c p

này là không nên, vì m i thao tác không c n th n c a ng i dùng này có th

d n n nh ng h u qu không mong mu n. Khi ng nh p d i tên ng i dùng

thông th ng, ít nh t b n c c ng không th xóa ho c làm h ng các t p tin h

th ng (system files) do s không c n th n c a mình. Trong khi ó, có m t lo t

các thao tác, ví d g n h th ng t p tin, ch có ng i dùng cao c p m i có th

th c hi n. ng kh i ng l i máy tính m i l n nh v y! Câu l nh su giúp

gi i quy t nh ng tr ng h p nh v y. Ch c n nh p câu l nh su và shell hi n

3.4 So n th o dòng l nh. L ch s l nh 49

th i (hay nói không úng là "h th ng") s ch y m t shell m i mà khi vào trong

ó b n s ch y t t c các l nh v i quy n c a root. T t nhiên là có quy n này

b n c n nh p m t kh u c a root vào dòng yêu c u hi n ra (Password:). Sau

khi th c hi n xong các công vi c qu n tr h th ng, hãy thoát kh i h v và b n

s tr thành ng i dùng bình th ng v i nh ng quy n c a mình.

B ng cách t ng t nh vào h th ng d i tên root trên, còn có th vào h

th ng d i tên m t ng i dùng b t k mà b n bi t m t kh u3 (nói cách khác là

"ch y m t h v shell m i d i tên ng i dùng khác"). Nh ng c n ch ra tên

c a ng i dùng này trên dòng l nh, ví d :

[user]$ su nhimlui

Câu l nh su tr c không kèm theo tên nào, theo m c nh s t tên ng i

dùng cao c p root vào.

Nh ng trong H H Linux còn có thêm m t kh n ng chuy n t m th i vào

tài kho n c a ng i dùng root th c hi n các ch c n ng qu n tr . Hãy nh

r ng Linux là h th ng nhi u ng i dùng, trên h th ng có th làm vi c cùng lúc

nhi u ng i dùng. Vì th có th làm vi c d i tên ng i dùng root trên terminal

o th nh t, còn trên terminal o th hai ­ d i tên ng i dùng bình th ng.

Nh ng công vi c th ng ngày (so n th o v n b n, c th ,. . . ) b n có th th c

hi n b ng tài kho n bình th ng, còn khi c n th c hi n các công vi c qu n tr ,

b n s dùng tài kho n ng i dùng cao c p (root). th c hi n l a ch n này b n

ch c n nh n <Ctrl>+<Alt>+<F1> và s có ngay quy n c a nhà qu n tr . Sau

khi làm xong nh ng thao tác mà ch có ng i dùng cao c p m i có th làm, hãy

quay l i tài kho n c a ng i dùng bình th ng ngay l p t c b ng t h p phím

<Ctrl>+<Alt>+<F2>. Nh v y b n c s không có nguy c làm h ng h th ng

khi còn ch a có nhi u kinh nghi m s d ng Linux.

3.4 So n th o dòng l nh. L ch s l nh

Trong nh ng ph n tr c tác gi ã ngh b n c th c hi n m t vài l nh c a

H H Linux. Tác gi cho r ng n u trong quá trình nh p l nh có x y ra l i thì

b n có th oán c cách s a chúng. Nh ng dù sao c ng có ích n u a ra danh

sách ng n g n nh ng câu l nh (hay nói úng h n là phím và t h p phím) dùng

so n th o dòng l nh, c ng nh gây nh h ng n cách làm vi c c a shell

b ng bàn phím (b ng 3.2, chúng ta s nói v chu t m t ph n riêng).

Ghi chú: N u b n làm vi c trong ch ng trình Midnight Commander, thì có th

s không th s d ng nh ng phím nh < >, < >, <Home>, <End>, <Del> làm các

công vi c nh b ng trên, vì chúng c Midnight Commander dùng di chuy n dòng

chi u sáng trong b ng4 hi n th i. Nh ng m t s t h p phím dùng v i <Ctrl> và <Esc>

thì v n dùng c bình th ng.

Danh sách nh ng câu l nh (t h p phím) có th dùng không ch gi i h n trong

ph m vi b ng 3.2, nh ng chúng ta ch xem xét nh ng câu l nh n gi n và c n

thi t trong l n làm quen u tiên v i Linux này. có thêm thông tin hãy s

d ng câu l nh man bash ho c info bash.

3Ng i dùng root không c n ph i bi t m t kh u làm vi c này.

4panel

50 Kh i ng Linux l n u

B ng 3.2: Nh ng phím so n th o dòng l nh

Phím Ph n ng c a h th ng

< >, Di chuy n sang ph i m t ký t (trong khuôn kh nh ng ký t ã nh p

<Ctrl>+<F> c ng thêm m t ký t s nh p)

< >, Di chuy n sang trái m t ký t

<Ctrl>+<B>

<Esc>+<F> Di chuy n sang ph i m t t

<Esc>+<B> Di chuy n sang trái m t t

<Home>, Di chuy n v u dòng l nh

<Ctrl>+<A>

<End>, Di chuy n v cu i dòng l nh

<Ctrl>+<E>

<Del>, Xóa ký t n m t i v trí con tr

<Ctrl>+<D>

<Backspase> Xóa ký t n m bên trái con tr

<Enter>, B t u th c hi n câu l nh

<Ctrl>+<M>

<Ctrl>+<L> D n màn hình và a dòng l nh hi n th i lên dòng u tiên

<Ctrl>+<T> i ch hai ký t : ký t n m t i v trí con tr và ký t n m bên trái con

tr , sau ó di chuy n con tr sang ph i m t ký t

<Esc>+<T> i ch hai t : t n m t i v trí con tr và t n m bên trái con tr

<Ctrl>+<K> C t ph n dòng l nh b t u t ký t n m t i v trí con tr n cu i dòng

(ph n dòng l nh c t ra c l u trong b m và có th t vào v trí

khác)

<Ctrl>+<U> C t ph n dòng l nh b t u t ký t n m bên trái con tr n u dòng

(ph n dòng l nh c t ra c l u tron b m và có th t vào v trí

khác)

<Esc>+<D> C t ph n dòng l nh b t u t v trí con tr n cu i t (n u t i v trí

con tr là d u cách thì c t toàn b t n m bên ph i nó)

<Esc>+<Del> C t ph n dòng l nh b t u t v trí con tr n u t (n u t i v trí con

tr là d u cách thì c t toàn b t n m bên trái nó)

<Ctrl>+<W> C t ph n dòng l nh b t u t v trí con tr n d u cách bên trái

<Ctrl>+<Y> t (dán) o n dòng l nh ã c t cu i cùng vào v trí con tr

<Esc>+<C> Chuy n ký t t i v trí con tr thành vi t hoa r i di chuy n con tr t i

d u cách u tiên bên ph i so v i t hi n th i

<Esc>+<U> Chuy n t t c các ký t b t u t v trí con tr thành vi t HOA r i di

chuy n con tr t i d u cách u tiên bên ph i

<Esc>+<L> Chuy n t t c các ký t b t u t v trí con tr t i cu i t thành vi t

th ng r i di chuy n con tr t i d u cách u tiên bên ph i

<Shift>+ Nh ng t h p phím này cho phép xem các trang màn hình ã hi n th .

<PgUp>, S l ng nh ng trang này ph thu c vào b nh c a c c màn hình. Có

<Shift>+ ích khi có câu l nh nào ó a ra màn hình r t nhi u thông tin ch y

<PgDown> nhanh qua màn hình, ng i dùng không k p th y chúng

<Ctrl>+<C> D ng th c hi n câu l nh v a ch y (mà v n ang ch y)

<Ctrl>+<D> Thoát ra kh i h v bash

3.5 Ng ng làm vi c v i Linux 51

Xin l u ý b n c trong h v bash có ch ng trình tích h p giúp d dành

nh p câu l nh trên dòng l nh. G i ch ng trình con này b ng m t ho c hai l n

nh n phím <Tab> sau khi nh p m t vài ký t . N u nh ng ký t này là ph n

u c a ít nh t m t trong nh ng câu l nh mà bash bi t, thì có hai kh n ng x y

ra. N u chúng là ph n u c a duy nh t m t câu l nh, t c là bash ch tìm th y

có m t câu l nh này, thì h v s thêm ph n còn l i c a câu l nh này vào dòng

l nh. N u bash tìm th y nhi u câu l nh có ph n u này, thì s hi n th danh

sách t t c nh ng ph ng án có th ch n. Nh ó ng i dùng có kh n ng nh p

thêm m t vài ký t n a làm gi m s ph ng án ch n xu ng còn 1 r i là dùng

phím <Tab> m t l n n a. N u s ph ng án ch n là r t nhi u (ví d nh n phím

<Tab> hai l n khi dòng l nh tr ng r ng) thì b n c s nghe th y ti ng bíp sau

l n nh n <Tab> u tiên, và sau l n nh n <Tab> th hai s xu t hi n m t dòng

d ng Display all 2627 possibilities? (y or n) (Hi n th t t c 2627

kh n ng? c n ch n y ­ có ho c n ­ không).

N u nh n hai l n phím <Tab> sau tên c a m t câu l nh và m t kho ng

tr ng, thì h v bash s coi nh b n ang tìm tên t p tin dùng làm tham s

cho l nh này, và bash s a ra danh sách t p tin c a th m c hi n th i. ây là

tính n ng tr giúp c a bash trong tr ng h p ng i dùng quên tên t p tin trong

khi làm vi c c ng th ng. C ng gi ng nh tr ng h p câu l nh, n u ã nh p vào

m t ph n tên t p tin thì ph n còn l i s c t ng thêm vào. T ng t nh

v y có th oán ph n còn l i c a các bi n môi tr ng5, ch c n s d ng t h p

phím <Esc>+<$> thay cho <Tab>.

Trong khi làm vi c v i h v s có ích n u bi t r ng, bash ghi nh m t s câu

l nh (theo m c nh là 1000 l nh, giá tr này c t trong bi n HISTSIZE, xem

ch ng 5) và cho phép g i l i chúng b ng cách ch n t danh sách. ây c g i

là l ch s l nh. Có th xem l ch s l nh b ng câu l nh history. ây b n c n

s d ng các t h p phím <Shift>+<PgUp> và <Shift>+<PgDown> xem danh

sách (có th ) r t dài này. L ch s l nh c l u trong t p tin xác nh b i bi n

HISTFILE (th ng là $HOME/.bash_history). làm vi c v i l ch s câu l nh

trong h v bash ng i ta s d ng nh ng t h p phím trong b ng 3.3.

3.5 Ng ng làm vi c v i Linux

M c dù máy tính làm vi c d i s i u khi n c a H H Linux có th ch y

su t ngày êm, nh ng ph n l n ng i dùng máy tính cá nhân ã quen v i vi c

t t máy sau khi làm vi c xong. Khi làm vi c v i H H Linux không th t t máy

b ng cách ng t ngu n i n nh i v i MS-DOS. Vì trong b t k th i i m nào

trên h th ng c ng có r t nhi u quá trình ang làm vi c. B n có th th y i u

này b ng cách th c hi n l nh:

[nhimlui]$ ps ax

Th c hi n l i l nh này m t l n n a xem l i. Nh ng nguyên nhân quan tr ng

h n là ch m t s ti n trình này có th ang làm vi c v i các t p tin, và h

th ng còn ch a ghi nh t t c các thay i v i nh ng t p tin lên a mà ch l u

5environment variable

52 Kh i ng Linux l n u

B ng 3.3: T h p phím i u khi n l ch s l nh

Phím Ph n ng c a h th ng

< > ho c <Ctrl>+<P> Chuy n t i (g i vào dòng l nh) câu l nh tr c

trong danh sách (di chuy n ng c l i danh sách)

< > ho c <Ctrl>+<N> Chuy n t i câu l nh ti p theo trong danh sách

(di chuy n theo danh sách)

<PgUp> Chuy n t i câu l nh u tiên trong danh sách

l ch s l nh

<!>, <N> Th c hi n (không c n nh n <Enter> câu l nh

th n trong danh sách

<!>, <->, <N> Th c hi n câu l nh th n tính t cu i danh sách

<!>, dòng_ký_t Th c hi n dòng l nh, có ph n u trùng v i

dòng_ký_t . Vi c tìm dòng l nh c n thi t s

c th c hi n t cu i t p tin l ch s và dòng

l nh u tiên tìm th y s c th c hi n

<Ctrl>+<O> C ng gi ng nh nh n phím <Enter>, sau ó

hi n th câu l nh ti p theo trong l ch s l nh

t m chúng trong b nh (cache). N u ng t ngu n i n thì nh ng thay i này s

không c l u và s b m t, ôi khi có th d n n không kh i ng c máy

trong l n sau. Do ó c n bi t d ng h th ng m t cách úng n tr c khi t t

máy. Công vi c này do câu l nh (ch ng trình) shutdown m nhi m.

Ch có ng i dùng root m i có th th c hi n câu l nh shutdown này6, do ó

b n c n ng nh p vào h th ng d i tên ng i dùng này, ho c dùng câu l nh

su có quy n t ng ng. Câu l nh shutdown có cú pháp nh sau:

[root]# shutdown <tùy_ch n> <th i_gian> <dòng_thông_báo>

Ghi chú: R t có th khi ch y l nh, b n s nh n c câu tr l i "bash: shutdown:

command not found". i u ó có ngh a là bash không bi t tìm ch ng trình ây.

Trong tr ng h p ó b n c n nh p vào ng d n y n ch ng trình, ây là

/sbin/shutdown, vì t p tin ch ng trình c a shutdown n m t i /sbin.

Th ng s d ng hai trong s các tùy ch n c a ch ng trình shutdown:

-h ­ d ng hoàn toàn h th ng (halt, s t t máy)

-r ­ kh i ng l i h th ng (reboot).

Tham s th i_gian dùng "h n gi " th c hi n câu l nh (không nh t thi t

ph i th c hi n câu l nh ngay l p t c). Th i gian h n gi c tính t lúc nh n

phím <Enter>. Ví d , n u b n mu n kh i ng l i sau 5 phút thì hãy nh p vào

câu l nh:

[root]# shutdown -r +5

Câu l nh này có ngh a là "d ng h th ng sau 5 phút và kh i ng l i sau khi

hoàn thành công vi c". i v i chúng ta thì t m th i câu l nh sau s thích h p

h n:

6C ng có th c u hình nh ng ng i dùng khác th c hi n c shutdown, ví d qua sudo.

3.6 Tr giúp khi dùng Linux 53

[root]# shutdown -h now

Câu l nh này s t t máy ngay l p t c. T ng ng v i câu l nh này là l nh

halt. Sau khi nh n t h p phím "n i ti ng" <Ctrl>+<Alt>+<Del> trên Linux s

th c hi n các hành ng t ng t v i l nh

[root]# shutdown -r now

B ng cách này c ng có th t t máy, nh ng c n ng t ngu n i n trong khi h

th ng b t u kh i ng l i.

3.6 Tr giúp khi dùng Linux

Nh v y là b n c ã k t thúc phiên làm vi c u tiên v i H H Linux và tôi

mong r ng b n ch a c n tr giúp trong m t tình hu ng nào ó. Tác gi c ng

mong cu n sách này s th c hi n vai trò tr giúp trong th i gian u tiên này,

nh ng có th nó không gi i quy t c t t c nh ng v n c a b n. Vì th tác

gi s a ra ngay l p t c nh ng ngu n thông tin khác. Nh ng tôi s ph i " i

tr c" k v cách nh n thông tin tr giúp trong giao di n ho (X Window). Tác

gi coi cách gi i quy t này là úng vì ng i dùng c n bi t tr c cách thoát kh i

nh ng tr ng h p khó kh n.

3.6.1 Các ngu n thông tin tr giúp

N u r i vào tình hu ng mà b n không bi t ph i làm gì có c k t qu mong

mu n, thì t t nh t hãy tìm tr giúp ngay trong h th ng. Các phiên b n Linux

có hàng nghìn trang tài li u d ng t p tin, do ó câu tr l i cho câu h i c a b n

ã n m trong lòng bàn tay. Có m t vài ngu n c l p ch a thông tin v h u h t

các m t c a h th ng Linux:

các trang tr giúp man

tr giúp siêu v n b n info

tài li u i kèm v i ph n m m

HOWTO và FAQ c a d án The Linux Document Project (http://www.

tldp.org)

câu l nh locate

C n nói ngay l p t c là ph n l n thông tin t nh ng ngu n này b ng ti ng

Anh. Các d án d ch chúng sang ti ng Vi t còn ch a c t ch c ho c còn ch a

c hoàn ch nh. Do ó chúng ta s xem xét t ng ngu n thông tin này m t cách

c th h n.

54 Kh i ng Linux l n u

3.6.2 Các trang tr giúp man

Nh ã nói ng n g n trên v câu l nh man, b ng câu l nh này ng i dùng trong

hình hu ng khó kh n luôn luôn có th tìm tr giúp v b t k câu l nh nào c a

h th ng, v nh d ng t p tin, và v các g i h th ng (system call). ây là cách

nh n tr giúp chính trong t t c các h th ng UNIX. Các trang tr giúp man chia

thành các ph n sau:

B ng 3.4: Các ph n chính c a tr giúp man

Ph n N i dung

0 Các t p tin header (th ng n m trong /usr/include)

1 Ch ng trình ho c câu l nh c a ng i dùng

8 Câu l nh dùng qu n tr h th ng

2 G i h th ng (system call, hàm do nhân cung c p)

3 G i th vi n (library call, ch ng trình con, hàm trong th vi n c a ng d ng)

4 Thi t b (t p tin c bi t, th ng n m trong /dev)

5 nh d ng t p tin và quy c, ví d /etc/passwd

6 Trò ch i

7 Khác (bao g m các gói macro và quy c, ví d man(7), groff(7)

9 Nhân (kernel routines)

n các l nh Tcl/Tk

Th t li t kê ây không ph i là s nh m l n. V n ch các t p tin ch a

thông tin c a tr giúp man n m trong các th m c con c a th m c /usr/share/man

và khi câu l nh man tìm ki m thông tin c n thi t, thì nó s xem các th m c con

này theo th t ã ch ra trong b ng 3.4. N u b n ch y l nh

[user]$ man swapon

thì s nh n c tr giúp v câu l nh swapon n m trong ph n 8. Vì th n u

mu n xem tr giúp v g i h th ng swapon c n ch y l nh

[user]$ man 2 swapon

ch ra s th t c a ph n tr giúp c n tìm ki m thông tin.

Các trang man c xem b ng ch ng trình less (ho c ch ng trình xác

nh b i bi n PAGER), do ó có kh n ng xem thông tin theo t ng màn hình và di

chuy n màn hình này xu ng d i và lên trên và di chuy n có th s d ng các

phím nh trong ch ng trình less. Nh ng phím th ng dùng nh t là:

N u b n không thích c t màn hình mà c m tay c, thì có th in ra trang

man t ng ng b ng l nh

[user]$ man tên_câu_l nh | lpr

ho c n u máy in là postscript thì dùng:

[user]$ man -t tên_câu_l nh | lpr

3.6 Tr giúp khi dùng Linux 55

B ng 3.5: Phím s d ng xem trang man

Phím Ch c n ng

<Q> Thoát kh i ch ng trình

<Enter> Xem t ng dòng

<Space> Hi n th màn hình thông tin ti p theo

<B> Quay l i màn hình tr c

</>, dòng ký t , <Enter> Tìm ki m dòng ký t ch ra

<N> L p l i tìm ki m v a th c hi n.

Tuy nhiên có th nh n c thông tin mong mu n thì còn c n ph i bi t

ch tìm thông tin ó. Trong tr ng h p này có th dùng hai câu l nh whatis

và apropos. Câu l nh whatis tìm ki m t khóa a ra trong c s d li u bao

g m danh sách các câu l nh và mô t ng n g n c a chúng. L nh này ch a ra

nh ng trùng l p chính xác v i t khóa tìm ki m. Câu l nh apropos th c hi n

tìm ki m theo các ph n c a t khóa. T ng t nh l nh apropos là câu l nh

man v i tham s -k. Hãy th ch y l nh sau:

[user]$ man -k net

C n ph i nói luôn là cho các câu l nh man -k, whatis và apropos làm

vi c, thì u tiên c n t o ra c s d li u v các câu l nh có trên máy b ng cách

ch y l nh makewhatis. Trong tr ng h p ng c l i khi tìm ki m b n s nh n

c thông báo "nothing appropriate". Ch có ng i dùng root m i có quy n ch y

câu l nh makewhatis. N u b n c máy ch y c êm thì t t nh t ch y câu

l nh này d ng công vi c cho ti n trình cron7.

Cu i cùng tác gi mu n nói r ng, các trang tr giúp man không dành cho th i

gian làm quen u tiên v i Linux. Chúng dành cho nh ng ng i dùng có kinh

nghi m c n có "s tay tra c u" v nh d ng, tu ch n và cú pháp c a l nh trong

quá trình làm vi c không ph i nh m t s l ng l n nh ng thông tin này

trong u.

3.6.3 Câu l nh info

Câu l nh info là d ng tr giúp thay th và t ng ng v i man. nh n thông

tin v m t câu l nh nào ó, thì c ng gi ng nh man, c n nh p vào info cùng v i

m t tham s là tên c a câu l nh quan tâm. Ví d :

[user]$ info man

Thông tin màn b n s th y trên màn hình trong ph n l n tr ng h p s khác

v i nh ng gì mà câu l nh man a ra. Và theo ý ki n c a nhi u ng i dùng là

v chi u h ng t t h n. Nh ng s khác nhau c b n nh t ch info a ra

thông tin d ng siêu v n b n (hypertext) gi ng nh các trang web. Nh ó b n

có kh n ng xem các ph n khác nhau c a tr giúp mà không c n ph i thoát ra

kh i ch ng trình xem này. Trong khi làm vi c ch v n b n, b n có th

7cron là ch ng trình ch y t ng các công vi c theo th i gian ã nh.

56 Kh i ng Linux l n u

ch y câu l nh info trên m t trong các terminal o (hãy nh n các t h p phím

<Ctrl>+<Alt>+<F2>, <Ctrl>+<Alt>+<F3> v.v. . . ) có th chuy n sang terminal

o ó tìm tr giúp khi c n thi t. Trong tr ng h p b n không bi t tìm thông tin

c n thi t âu thì có th chuy n sang các ph n khác nhau b ng các siêu liên k t

(hyperlink) mà info t o ra. Nh ng liên k t này c ánh d u b ng ký t sao

(*), khác v i cách ánh d u liên k t trên các trang Web nh ng v n gi nguyên

c s thu n l i. Có th di chuy n qua các liên k t b ng phím <Tab>. Sau khi di

chuy n n liên k t mong mu n, hãy nh n phím <Enter>. Phím <P> a ng i

dùng tr l i trang v a xem, phím <N> a n trang ti p theo, còn <U> chuy n

lên trên m t b c trong c u trúc phân b c c a các trang tài li u này.

Ngoài ra, còn có th chuy n theo liên k t b ng cách khác t ng t nh h

th ng trình n. u tiên c n nh n phím <M>, sau ó nh p vào dòng Menu

item: cu i màn hình m t vài ký t u tiên c a tên c a ph n tr giúp c n

thi t. Tên c a nh ng ph n tr giúp này c hi n th trên màn hình. S ký t

ph i sao cho ch t ng ng v i m t ph n tr giúp, n u không thì ch ng trình

s yêu c u nh p thêm vào. Thoát ra kh i info b ng phím <Q>.

3.6.4 Câu l nh help

Nh ã nh c n trên, h th ng tr giúp v các l nh tích h p c a h v bash

là câu l nh help. N u ch y l nh help không có tham s thì s nh n c danh

sách c a t t c các l nh tích h p c a bash. N u ch y help tên, trong ó tên là

tên c a m t trong nh ng câu l nh nói trên, thì b n s nh n c gi i thi u ng n

g n v cách s d ng câu l nh này.

3.6.5 Tài li u i kèm v i b n phân ph i và ch ng trình ng d ng

N u trong quá trình cài t không b i nh ng gói tài li u, thì sau khi k t thúc

b n s tìm th y trong th m c /usr/share/doc (ho c /usr/doc) các th m c

con HOWTO, FAQ,. . . Nh ng th m c này ch a tài li u y v h th ng Linux

nói chung c ng nh nh ng ph n riêng r c a nó. Nh ng tài li u này có d ng

v n b n ASCII và có th xem chúng b ng các câu l nh more tên ho c less

tên ho c b ng ch ng trình xem có trong Midnight Commander.

Ph n l n các ch ng trình ng d ng có kèm theo tài li u h ng d n cài t

và s d ng. N u cài t ch ng trình t gói (package) d ng rpm (Fedora Core,

SuSE, Mandriva,. . . ) thì tài li u s n m trong th m c con t ng ng c a th

m c /usr/share/doc. Tên c a nh ng th m c con này t ng ng v i tên c a

ch ng trình và phiên b n c a nó. Ví d , ch ng trình nh p ti ng Vi t mà tôi

ang dùng gõ nh ng dòng này xvnkb phiên b n 0.2.9 có th m c con t ng

ng xvnkb-0.2.9 n m trong /usr/share/doc sau khi cài t.

ôi khi tìm t p tin tr giúp mong mu n b n s c n n câu l nh locate.

Câu l nh này trong m t ch ng m c nào ó t ng t v i các l nh whatis và

apropos. Khi ch y locate nó s tìm t t c nh ng t p tin có tên ch a t khóa

a ra. Ví d locate net s tìm t t c nh ng tên t p tin có tên ch a "net".

Nh ng t p tin này có r t nhi u trên máy. Trong t khóa (m u) có th s d ng

các ký t thay th *, ?, []. Tuy nhiên câu l nh locate không tìm ki m theo các

3.6 Tr giúp khi dùng Linux 57

th m c c a h th ng t p tin, mà theo c s d li u c bi t ch a tên các t p tin

c t o ra (và ôi khi c n c p nh t) b ng l nh updatedb.

Trong m t s b n phân ph i locate c thay th b i slocate (secure lo-

cate). slocate t t o cho mình c s d li u nói trên sau khi ch y v i tham s

t ng ng.

3.6.6 Câu l nh xman

ây là ch ng trình cho phép xem các trang tr giúp man khi làm vi c giao

di n ho (GUI). Vi c tìm ki m và hi n th các trang tr giúp c th c hi n

b ng cách nh n các nút và trình n. Còn l i (theo thông tin hi n th ) xman c ng

gi ng nh man.

3.6.7 Câu l nh helptool

Sau khi ch y l nh helptool s hi n ra m t c a s ho , có m t ô nh p vào

ng i dùng a ra thu t ng ang quan tâm. Ch ng trình s xem t t c các

t p tin tài li u (b n có th c u hình ch n nh ng tài li u nào c n xem khi tìm

ki m). Sau khi hoàn thành tìm ki m ch ng trình s hi n ra danh sách nh ng

t p tin có ch a thu t ng này. N u nh n chu t vào m t t p tin trong danh sách

thì s hi n ra m t c a s khác n i dung c a t p tin ã ch n. Khi này t p tin s

c hi n th d ng l u trên a: trang info, trang man, v.v. . .

3.6.8 Sách và Internet

T t nhiên, h c Linux d dàng và n gi n nh t khi có m t cu n sách t t. Tr c

tiên b n c n c tài li u h ng d n i kèm v i b n phân ph i c a mình. Các b n

phân ph i l n nh Debian, SuSE, Fedora,. . . u ã có nh ng tài li u này (r t có

th ã c d ch sang ti ng Vi t). R t ti c ng i d ch ch a c cu n sách ti ng

Vi t nào v Linux do ó không th gi i thi u v i b n c. T t nhiên n u b n có

k t n i Internet (bây gi không còn quá xa x ) và m t chút ti ng Anh thì có th

tìm c câu tr l i cho m i câu h i c a mình. Tôi xin a ra m t s a ch sau

làm b c kh i u cho b n c trong bi n thông tin vô b b n này.

Các trang ti ng Vi t

1. http://vnoss.org ­ trang web dành cho ng i dùng mã ngu n m (MNM)

Vi t Nam. Có nhi u thông tin v Linux, tài li u v Linux, di n àn cho phép

b n t câu h i c a mình. Trang web do bác Nguy n i Quý ang s ng và

làm vi c t i B qu n lý.

2. http://vnoss.net ­ tin t c v Linux và MNM.

3. http://vnlinux.org ­ ây là trang web dành cho nhóm ng i dùng

Linux Vi t Nam (vietlug). B n s tìm th y nhi u thông tin có ích ây

và có th ng ký tham gia nhóm th vietlug t câu h i. Trang này do

anh Larry Nguy n, m t Vi t Ki u M , qu n lý.

58 Kh i ng Linux l n u

4. http://vnoss.net/dokuwiki/doku.php?id=linux:tailieutiengviet

­ trên trang này t ng h p t t c nh ng tài li u ti ng Vi t v Linux, r t có

th b n s tìm th y tài li u v tài mình c n tìm hi u trên trang này.

5. http://kde-vi.org ­ trang web c a nhóm d ch giao di n KDE sang

ti ng Vi t.

Các trang ti ng Anh

1. http://www.linux.com

2. http://www.linux.org

3. http://www.linux.org.uk ­ Trang web Linux c a Châu Âu. Do Allan

Cox m t trong các nhà phát tri n Linux h tr .

4. http://www.tldp.org ­ Trang web chính ch a tài li u v Linux. R t

nhi u tài li u bao g m HOWTO, FAQ, sách. . .

5. http://freshmeat.net/ ­ Thông báo hàng ngày v nh ng ch ng trình

ng d ng m i ra dành cho Linux. Kho ph n m m kh ng l cho Linux.

6. http://www.li.org ­ T ch c Linux International.

7. http://www.linuxstart.com

8. http://oreilly.linux.co ­ ây b n s tìm th y r t nhi u tài li u.

9. http://www.linuxplanet.com

10. http://www.kde.org ­ Trang ch c a môi tr ng làm vi c KDE.

11. http://www.gnu.org ­ Các ng d ng dành cho Linux, trong ó n i ti ng

nh t là trình so n th o Emacs (GNU's Not UNIX).

12. http://slashdot.org ­ Nh ng tin t c m i nh t v công ngh máy tính

trong ó có Linux. Có các bài báo và l i bình c a ng i c (không qua ki m

duy t).

13. http://www.linuxtoday.com ­ Danh sách dài nh ng tin t c, thông báo

qu ng cáo và các thông tin khác. Xem trang này b n s bi t ph n l n nh ng

s ki n trong th gi i Linux.

14. http://www.lwn.net ­ Tin t c hàng tu n v Linux. Thông tin chia thành

t ng h ng m c: thông tin chung, th ng m i, thông tin v nhân Linux,

công c phát tri n ch ng trình m i, ch ng trình cho Linux, v.v. . . N u

b n mu n tin t ng r ng Linux phát tri n r t nhanh và mu n nh n tr

giúp c a các công ty th ng m i l n thì nh t nh ph i th m trang này.

Tin t c trên tu n báo này c ban biên t p chú thích r t t t.

15. http://www.linuxnewbie.org ­ Trang web t t cho nh ng ng i dùng

m i.

3.6 Tr giúp khi dùng Linux 59

16. http://www.linuxjournal.com ­ t p chí Linux. Th ng ng nh ng

bài báo v nhi u tài.

17. http://www.linuxgazette.com ­ t báo Linux này s thú v i v i c

ng i dùng m i và ng i dùng có kinh nghi m.

18. http://www.linuxfocus.org ­ T p chí phi th ng m i toàn c u.

19. http://www.linuxworld.com ­ M t trang web t t có r t nhi u bài báo

hay.

20. http://www.linux-mag.com ­ Linux Magazin, m t t t p chí r t thú v .

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

T t nhiên ây không ph i là danh sách y nh ng trang web nói v Linux.

Nh ng trang nói trên ch là i m kh i u t ó b n s tìm c nh ng trang

web khác trong bi n thông tin Internet. i n âu là ph thu c vào ý mu n c a

b n.N ucóv n tronglúccài t,thìhãyh id chv kháchhàngc aphânph i

a. N u b n mua a c a m t công ty chuyên môn thì s có a ch liên l c c a

d ch v này. N u b n mua a ghi l i ho c t ghi a t t p tin ISO nh n c

qua Internet thì r t có th l i cài t là do khi ghi a gây ra.

Hãy s d ng h p th i n t . B n nên ng ký v i m t vài nhóm th chung

(mailing list) nào ó, ví d mailto:[email protected]. Cách

ng ký còn ph thu c vào t ng nhóm th (nói chính xác h n là ph thu c vào

máy ch i u khi n nhóm th này). Nh ng hi n nay th ng có hai cách ng ký:

g i th n m t a ch xác nh yêu c u, ng ký qua giao di n web. Thông

tin này b n có th tìm th y trên trang web gi i thi u v nhóm th chung. Tuy

nhiên b n c n bi t là c c t t c th chung thì c n r t nhi u th i gian,

và còn ph i c r t nhi u th c a nh ng ng i dùng m i khác (ví d "Console là

gì?"), ho c th m chí có c nh ng lá th "ng ng n" (ví d "Hôm nay dùng Debian

th t vui") và t t nhiên là ph i c c nh ng th tr l i cho nh ng câu h i này

c a nh ng ai bi t m t chút gì ó. Do ó n u mu n b n có th xem kho l u tr

nh ng lá th này b ng trình duy t, r t có th ã có câu tr l i cho câu h i c a

b n ó. Và nh v y b n không c n ph i ng ký c ng nh vi t th vào nhóm

th chung n a.

T t nhiên n u không tìm th y thì ng ng i ng n t câu h i. Ng i dùng

Linux h t s c vui lòng tr l i th c a b n. B o m là b n s nh n c câu tr

l i, n u không hi u thì còn có th yêu c u gi i thích thêm.

Khi t câu h i có liên quan n h th ng Linux c a b n, c n luôn luôn thêm

vào th c a mình càng nhi u chi ti t càng t t (nh ng ng thêm thông tin th a)

bao g m: tên c a b n phân ph i (Debian, SuSE, Fedora, hay m t cái nào khác),

phiên b n nhân, có v n v i ph n c ng nào (phiên b n, dòng ch ghi trên m ch

i n t ), thông báo nào hi n ra khi có v n . ng òi h i ng i dùng khác g i

câu tr l i th ng n a ch c a b n, "vi t th vào nhóm th chung là t th

hi n, vi t th i n t c ng là s h tr k thu t. Vi t th thì mi n phí, nh ng

s h tr k thu t thì không". Xin hãy luôn nh i u ó!

Ch ng 4

Làm quen v i h th ng t p tin ext3fs1

Bây gi b n ã bi t cách kh i ng và d ng h th ng Linux, ã n lúc làm quen v i m t

trong nh ng thành ph n chính và quan tr ng c a Linux ­ ó là h th ng t p tin. H th ng t p

tin ­ là c u trúc nh ó nhân c a h i u hành có th cung c p cho ng i dùng và các ti n

trình tài nguyên c a h th ng d ng b nh lâu dài trên các a l u2 thông tin: a c ng,

a t , CD, DVD, v.v. . .

M i h th ng t p tin, gi ng nh m t cái a n, có hai m t. M t m t c a nó luôn quay v

phía ng i dùng (hay nói chính xác h n là quay v phía ng d ng), chúng ta t m g i nó là

m t tr c. T phía m t tr c này ng i dùng th y h th ng t p tin là m t c u trúc lôgíc c a

các th m c và t p tin. M t còn l i, mà ng i dùng không th y, quay v phía chính b n thân

a l u t o thành m t vùng bên trong c a h th ng t p tin i v i ng i dùng, chúng ta t m

g i là m t sau. M t này c a h th ng t p tin có c u trúc không n gi n chút nào. Vì ây

th c hi n các c ch ghi t p tin lên các a l u khác nhau, th c hi n vi c truy c p (ch n

thông tin c n thi t) và nhi u thao tác khác.

Trong ch ng hi n t i chúng ta s xem xét m t quay v phía ng i dùng c a h th ng t p

tin. M t còn l i s dành cho m t ch ng sách sau. C n nói thêm là chúng ta s xem xét

m t h th ng t p tin c th ext3fs, h th ng t p tin c b n c a Linux n th i i m hi n nay.

Còn có nh ng h th ng t p tin khác nh ng chúng ta s c p n chúng mu n h n.

4.1 T p tin và tên c a chúng

Máy tính ch là công c làm vi c v i thông tin không h n không kém. Mà

thông tin trên m i H H c l u d ng t p tin trên các a l u. T phía c a

H H thì t p tin là m t chu i liên t c các byte v i chi u dài xác nh. H i u

hành không quan tâm n nh d ng bên trong c a t p tin. Nh ng nó c n t

cho t p tin m t cái tên nào ó ng i dùng (hay nói úng h n là ch ng trình

ng d ng) có th làm vi c v i t p tin. Làm sao ng i dùng có th làm vi c v i

t p tin ó là công vi c c a h th ng t p tin, ng i dùng th ng không c n quan

tâm n. Vì th , i v i ng i dùng thì h th ng t p tin là m t c u trúc lôgíc c a

các th m c và t p tin.

Tên t p tin trong Linux có th dài 255 ký t bao g m b t k ký t nào tr ký

t có mã b ng 0 và ký t d u g ch chéo (/). Tuy nhiên còn có nhi u ký t n a có

1Ch ng này do ng i d ch vi t

2M t s tác gi thích dùng thu t ng "v t ch a" ây.

4.1 T p tin và tên c a chúng 61

ý ngh a c bi t trong h v shell và do ó không nên dùng t tên t p tin.

ó là nh ng ký t sau:

! @ # $ & ~ % * ( ) [ ] { } ' " \ : ; > < ` d u cách

N u tên t p tin ch a m t trong nh ng ký t này (không khuyên dùng nh ng

v n có th ) thì tr c nó ph i t m t d u g ch chéo ng c (\) ( i u này v n úng

trong tr ng h p có chính b n thân d u g ch chéo ng c, t c là ph i l p l i d u

này hai l n). Ví d :

[user]$ mkdir \\mot\&hai

s t o th m c \mot&hai. Còn có th t tên t p tin ho c th m c v i nh ng ký

t nói trên vào d u ng c kép. Ví d , t o th m c có tên "mot hai ba" chúng ta

c n dùng câu l nh sau:

[user]$ mkdir "mot hai ba"

vì câu l nh

[user]$ mkdir mot hai ba

s t o ba th m c: "mot", "hai" và "ba".

Làm t ng t nh v y i v i nh ng ký t khác, t c là có th thêm chúng vào

tên t p tin (th m c) n u a tên vào trong d u ngo c kép ho c dùng d u g ch

chéo ng c b i ý ngh a c bi t c a chúng. Tuy nhiên t t nh t là không s

d ng nh ng ký t này k c d u cách trong tên t p tin và th m c, b i vì có th

gây ra v n cho m t s ng d ng khi c n s d ng nh ng t p tin nh v y và c

khi di chuy n nh ng t p tin ó lên h th ng t p tin khác.

i v i d u ch m thì không ph i nh v y. Trong Linux ng i dùng th ng

t nhi u d u ch m trong tên c a t p tin, ví d xvnkb-0.2.9.tar.gz. Khi này

khái ni m ph n m r ng t p tin (th ng dùng trong DOS) không còn có ý ngh a

gì, m c dù v n dùng ph n cu i cùng c a tên t p tin sau d u ch m làm ký hi u

v các d ng t p tin c bi t (.tar.gz dùng ký hi u các t p tin nén3). Trên

Linux các t p tin ch ng trình và t p tin bình th ng không phân bi t theo ph n

m r ng c a tên (trong DOS t p tin ch ng trình có ph n m r ng exe) mà theo

các d u hi u khác, chúng ta s c p n sau. D u ch m có ý ngh a c bi t

trong tên t p tin. N u nó là d u ch m u tiên trong tên, thì t p tin này s là n

(thu c tính hidden) i v i m t s câu l nh, ví d , l nh ls không hi n th nh ng

t p tin nh v y.4

Nh ã nói ch ng tr c trong Linux có phân bi t các ký t vi t hoa và vi t

th ng. i u này c ng úng i v i tên t p tin. Vì th l4u-0.9.2.tar.gz và

L4U-0.9.2.tar.gz có th n m trong cùng m t th m c và là tên c a các t p

tin khác nhau. i u này lúc u có th gây khó kh n cho ng i dùng Windows

nh ng sau khi quen thì b n s th y nó th t s có ích.

Chúng ta ã quen v i vi c t p tin c xác nh hoàn toàn theo tên c a nó.

Tuy nhiên n u nhìn t phía h i u hành và h th ng t p tin thì không ph i

3th ng g i theo ti ng lóng là tarball, qu bóng tar

4Nh ng l nh ls -a s hi n th . c thêm ls(1) bi t chi ti t.

62 Làm quen v i h th ng t p tin ext3fs

nh v y. Chúng ta s nói k v m t sau c a h th ng t p tin trong m t s ch ng

sách s p t i, nh ng bây gi c ng c n c p n m t chút v ch s "inode".

V n ch m i t p tin trong Linux có m t "ch s ký hi u" (index descriptor)

t ng ng, hay còn g i là "inode" (t m th i ch a có thu t ng ti ng Vi t chính

xác nên xin nguyên t ti ng Anh). Chính inode l u t t c nh ng thông tin

c n thi t cho h th ng t p tin v t p tin, bao g m thông tin v v trí c a các ph n

c a t p tin trên a l u, thông tin v d ng t p tin và nhi u thông tin khác. Các

ch s inode n m trong m t b ng c bi t g i là inode table. B ng này c t o

ra trên a l u cùng lúc v i h th ng t p tin. M i a l u dù là th t s hay lôgíc

thì u có m t b ng các ch s inode c a riêng mình. Các inode trong b ng c

ánh s theo th t , và chính ch s này m i là tên th c s c a t p tin trên h

th ng. Chúng ta s g i ch s này là ch s c a t p tin. Tuy nhiên i v i ng i

dùng thì nh ng tên nh v y th t s không thu n ti n. Không ph i ai c ng có

kh n ng nh ã ghi gì trong t p tin v i s 12081982 (nói chính xác h n là ch có

m t s r t ít ng i có kh n ng này). Vì th các t p tin còn c t thêm m t

tên thân thi n v i ng i dùng và h n th n a còn c nhóm vào các th m c.

Tác gi a ra nh ng thông tin trên ch nói r ng tên c a b t k t p tin

nào trong Linux không ph i gì khác mà chính là liên k t n ch s inode c a t p

tin. Vì th m i t p tin có th có bao nhiêu tên tùy thích. Nh ng tên này còn c

g i là liên k t "c ng" (hard link) (chúng ta s làm quen k h n v i khái ni m liên

k t và cách t o nh ng liên k t này trong ch ng sau). Khi b n c xóa m t t p

tin có nhi u tên (liên k t c ng) thì trên th c t ch xóa i m t liên k t (mà b n

ch ra trên dòng l nh xóa). Th m chí c khi b n c ã xóa i liên k t cu i cùng

thì c ng không có ngh a là ã xóa n i dung c a t p tin: n u t p tin ang c h

th ng hay m t ng d ng nào ó s d ng, thì nó c l u n lúc h th ng ( ng

d ng) gi i phóng nó.

có th thêm tên khác cho t p tin ho c th m c (t o liên k t c ng), chúng

ta s d ng câu l nh ln d ng sau:

ln tên_ ã_có tên_m i

Ví d :

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

Ký t có ý ngh a c bi t, nó ch th m c cá nhân (home directory) c a ng i

dùng, chúng ta s nói k h n v ký t này ngay sau ây. Bây gi có th dùng

~/l4u.pdf thay cho ng d n dài h n projects/l4u/l4u-0.9.2.pdf.

Chi ti t v câu l nh ln b n có th c trong trang man c a nó.

Có th tìm ra s l ng liên k t c ng n t p tin (t c là s l ng tên c a t p

tin) b ng l nh ls v i tham s -l5. Ngay phía sau quy n truy c p n t p tin là

m t s cho bi t s l ng nh ng liên k t c ng này:

[user]$ ls -l

t ng 1280

-rw-r--r-- 1 teppi82 users 81409 2006-09-06 03:43 bash.tex

drwxr-xr-x 2 teppi82 users 4096 2006-09-06 02:16 images

-rw-r--r-- 2 teppi82 users 82686 2006-09-06 14:32 l4u-0.9.2.pdf

-rw-r--r-- 1 teppi82 users 3069 2006-09-06 13:52 l4u.tex

5N u b n dùng SuSE Linux thì có th nh p vào l nh ll.

4.2 Th m c 63

(Danh sách b c t b t vì không c n thi t).

4.2 Th m c

N u nh c u trúc t p tin không cho phép s d ng gì khác ngoài tên t p tin (t c

là t t c các t p tin n m trên m t danh sách chung gi ng nh các h t cát trên bãi

bi n) thì th m chí c khi không có gi i h n v dài c a tên, r t khó có th tìm

n t p tin c n thi t. Hãy t ng t ng b n có m t danh sách kho ng vài nghìn

t p tin! Xin ng nghi ng , m t h th ng Linux hoàn ch nh s có s l ng t p tin

còn l n h n th . Vì th mà các t p tin c t ch c vào các th m c, các th m c

có th n m trong các th m c khác, v.v. . . K t qu là chúng ta thu c m t c u

trúc th m c có phân b c b t u t m t th m c g c. M i th m c (con) có th

ch a các t p tin riêng l và các th m c con c a nó.

C u trúc phân b c c a th m c th ng c minh ho b ng "cây th m c",

trên ó m i th m c ó là m t nút c a "cây", còn t p tin ­ là các "lá". Trên MS

Windows ho c DOS c u trúc th m c nh v y có trên m i a (t c là chúng ta

có không ph i m t "cây" mà m t "r ng" th m c) và th m c g c c a m i c u

trúc t p tin c ánh d u b ng m t ch cái Latinh (và do ó ã có m t s h n

ch ). Trên Linux và UNIX nói chung ch có m t c u trúc th m c duy nh t cho

t t c các a l u, và th m c g c duy nh t c a c u trúc này c ký hi u b ng

d u g ch chéo "/". Có th a vào th m c g c này m t s l ng không h n ch

các th m c n m trên các a l u khác nhau (th ng nói là "g n h th ng t p

tin" ho c "g n a l u").

Tên c a th m c c ng c t theo nh ng quy nh nh i v i tên t p tin.

Và nói chung ngoài c u trúc bên trong c a mình thì th m c không khác gì so

v i nh ng t p tin thông th ng, ví d t p tin v n b n (text file).

Tên y c a t p tin (ho c còn g i là " ng d n"6 n t p tin) là danh sách

tên c a các th m c bao g m th m c ch a t p tin ó và các th m c m , b t u

t th m c g c "/" và k t thúc là b n thân tên c a t p tin. Trong ng d n này

tên c a các th m c con cách nhau b i d u g ch chéo "/" dùng ký hi u th m c

g c nh ã nói trên. Ví d /home/teppi82/projects/l4u/ext3fs.tex là

tên y c a t p tin tôi ang nh p vào trên máy c a mình.

H v shell l u giá tr c a "th m c hi n th i", t c là th m c mà ng i

dùng ang làm vi c trong ó. Có m t câu l nh cho bi t tên c a th m c hi n

th i, ó là l nh pwd. Ghi chú: n u nói m t cách chính xác, thì th m c hi n th i

luôn i li n v i m i ti n trình ã ch y (trong ó có h v shell), vì th ôi khi

ch y m t ch ng trình nào ó trong shell có th d n n vi c thay i th m c

hi n th i sau khi ch ng trình ó hoàn thành công vi c.

Ngoài th m c hi n th i m i ng i dùng còn có m t "th m c nhà" (home

directory, ph ng án d ch "th m c cá nhân" c u tiên h n, và chúng ta s

dùng thu t ng này trong cu n sách l4u). ó là th m c trong ó ng i dùng có

toàn quy n7: có th t o và xóa các t p tin, thay i quy n truy c p n chúng,

v.v. . . Trong c u trúc th m c c a Linux nh ng th m c cá nhân c a ng i dùng

th ng n m trong th m c /home và th ng có tên trùng v i tên ng nh p c a

6 ây là ng d n tuy t i

7Nói chính xác h n là: có toàn quy n n khi nào root ch a thay i chúng :).

64 Làm quen v i h th ng t p tin ext3fs

ng i dùng ó. Ví d : /home/nhimlui. M i ng i dùng có th làm vi c v i th

m c c a mình b ng ký hi u ~, t c là ng i dùng nhimlui có th làm vi c v i

th m c /home/nhimlui/hinhanh b ng ~/hinhanh. Khi ng i dùng vào h

th ng, th m c cá nhân s tr thành th m c hi n th i c a ng i dùng này.

Câu l nh cd dùng thay i th m c hi n th i. Tham s c a l nh này là

ng d n y ho c ng d n t ng i n th m c mà b n mu n dùng làm

hi n th i. Khái ni m ng d n y (tuy t i) ã gi i thích trên, bây gi

chúng ta s nói rõ h n v khái ni m ng d n t ng i. ng d n t ng i

ó là danh sách các th m c c n ph i i qua trong cây th m c có th chuy n

t th m c hi n th i n th m c khác (chúng ta g i nó là th m c ích). N u

th m c ích n m phía d i trong c u trúc th m c, t c là n m trong m t th

m c con, ho c "cháu", "ch t" nào ó c a th m c hi n th i, thì n gi n: ch c n

ch ra th m c con c a th m c hi n th i, sau ó th m c con c a th m c con

(th m c "cháu"),. . . cho n khi nào t i c th m c ích. N u nh th m c

ích n m cao h n trong c u trúc th m c, ho c n m hoàn toàn trên m t "cành"

khác c a cây th m c, thì ph c t p h n m t chút. T t nhiên trong b t k tr ng

h p nào c ng có th s d ng ng d n tuy t i, nh ng khi ó c n ph i nh p

vào m t ng d n r t dài.

V n này c gi i quy t nh sau: m i th m c (tr th m c g c) có duy

nh t m t th m c m trong cây th m c. Trong m i th m c có hai b n ghi c

bi t. M t trong s chúng có ký hi u là d u ch m (`.') và ch n chính b n thân

th m c này, còn b n ghi th hai có ký hi u là hai d u ch m n (`..'), nó ch n

th m c m . Chính nh ng d u hai ch m này c dùng ghi ng d n t ng

i. Ví d , dùng th m c m làm th m c hi n th i, thì ch c n ch y l nh:

[user]$ cd ..

Còn chuy n "leo" lên hai b c c a cây th m c, r i t ó h xu ng th m c

vnoss/doc thì c n ch y l nh:

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

Câu l nh ls dùng a ra màn hình danh sách các t p tin và th m c con

c a th m c hi n th i. C n l u ý là trên th c t n câu l nh ls ch a ra n i

dung c a t p tin mô t th m c này, và không x y ra b t k nào thao tác làm

vi c v i t p tin c a th m c. Nh ã nói trên, m i th m c ch là m t t p tin

bình th ng, trong ó có li t kê t t c nh ng t p tin và th m c con c a th m c

này. T c là không có các h p c bi t ch a các t p tin, ch có các danh sách t p

tin thông th ng xác nh t p tin hi n th i thu c v m t th m c nào ó.

N u ch y câu l nh ls không có tham s thì chúng ta ch th y tên c a các t p

tin c a th m c hi n th i. N u mu n xem n i dung c a m t th m c khác, thì

c n ph i a cho câu l nh ls ng d n tuy t i ho c t ng i n th m c

ó. Ví d :

[user]$ ls projects

BanTin drupal-vn KDE-vi mrtg Xfce

bashscripts fluxbox l4u others vim

chem-tex gnomevi manvi SuSE vnlinux

debian HocTap mc syslinux vnoss

4.3 Công d ng c a các th m c chính 65

B n ghi v t p tin trong th m c t ng ng ngoài tên còn có r t nhi u thông

tin v t p tin này. th y c nh ng thông tin chi ti t ó, thì c n dùng các

tham s m r ng khác c a câu l nh ls. N u ch y câu l nh ls v i tham s -l thì

không ch có tên t p tin mà s hi n th c d li u v quy n truy c p n t p tin

(chúng ta s nói n sau); s l ng liên k t c ng hay s l ng tên (n u là th

m c thì ngay t u ã có hai liên k t nh v y là . và .., do ó s này b ng s th

m c con công thêm 2); tên ch s h u t p tin, tên nhóm s h u t p tin (xin c

g i t t là "nhóm t p tin" m c dù t i ngh a); kích th c t p tin và th i gian s a

i cu i cùng. M t ví d minh h a khác:

[user]$ ls -l

t ng 1316

-rw-r--r-- 1 teppi82 users 81629 2006-09-08 22:11 bash.tex

-rw-rw-r-- 1 teppi82 users 98135 2006-09-08 13:54 caidat.tex

-rw-r--r-- 1 teppi82 users 783 2006-09-08 21:58 ChangeLog

-rw-r--r-- 1 teppi82 users 20778 2006-09-09 02:48 ext3fs.tex

-rw-r--r-- 1 teppi82 users 2013 2006-09-08 21:34 gioithieu.tex

drwxr-xr-x 2 teppi82 users 4096 2006-09-08 14:25 images

-rw-r--r-- 1 teppi82 users 3267 2006-09-08 23:13 l4u.tex

N u a thêm tham s -i thì trong c t u tiên s hi n th ch s inode c a

t p tin. Khi dùng tham s -t vi c s p x p c th c hi n không theo tên mà

theo th i gian s a i t p tin. Tham s -u dùng hi n th th i gian truy c p

cu i cùng thay vào ch th i gian s a i. Tham s -r o ng c l i tr t t c a

s p x p (c n ph i s d ng cùng v i các tham s -l ho c -t). C n chú ý r ng có

th li t kê các tham s m t cách riêng r nh th này:

[user]$ ls -l -i - r

ho c g p l i nh th này:

[user]$ ls -lir

Chúng ta d ng mô t ng n g n v câu l nh ls ây (chi ti t v l nh này có

th xem trên các trang man ho c info t ng ng) và chuy n sang xem xét các

th m c chính c a c u trúc t p tin trong Linux.

4.3 Công d ng c a các th m c chính

N u nh b n c ã t ng dùng Windows (ví d 2000 hay XP), thì bi t r ng m c

dù ng i dùng có toàn quy n t ch c c u trúc th m c, nh ng m t s truy n

th ng v n c tuân theo. Ví d các t p tin h th ng th ng n m trong th

m c C:\Windows, các ch ng trình th ng c cài t vào C:\Program Files,

v.v. . . Trong Linux c ng có m t c u trúc th m c ki u nh v y và th m chí còn

nghiêm ng t h n. H n n a có m t tiêu chu n xác nh c u trúc th m c cho các

H H dòng UNIX. Tiêu chu n này c g i là Filesystem Hierarchy Standart

(FHS). N u có mong mu n b n có th c toàn b tiêu chu n này t i a ch

66 Làm quen v i h th ng t p tin ext3fs

http://www.pathname.com/fhs/. Các b n phân ph i Linux l n u tuân theo

tiêu chu n này.

B ng 4.1 d i ây a ra danh sách ng n g n nh ng th m c chính c t o

ra trong c u trúc t p tin theo tiêu chu n nói trên. c t bên trái li t kê các th

m c con c a th m c g c, còn c t th hai li t kê m t vài (không ph i t t c ) th

m c con, còn c t th ba cu i cùng a ra mô t ng n g n v công d ng c a nh ng

th m c này. Mô t trong b ng này là h t s c ng n g n, chi ti t h n b n có th

c trong tiêu chu n FHS có trên http://www.pathname.com/fhs/.

B ng 4.1: C u trúc th m c c a Linux

Th m c Công d ng

/bin Th m c này g m ch y u các ch ng trình, ph n l n trong s

chúng c n cho h th ng trong th i gian kh i ng (ho c trong

ch m t ng i dùng khi b o trì h th ng). ây có l u r t

nhi u nh ng câu l nh th ng dùng c a Linux.

/boot G m các t p tin c nh c n cho kh i ng h th ng, trong ó

có nhân (kernel). T p tin trong th m c này ch c n trong th i

gian kh i ng8.

/dev Th m c các t p tin c bi t ho c các t p tin thi t b ph n

c ng. Chúng ta s nói n nh ng t p tin này ngay sau trong

m t ph n riêng. B n c có th xem qua man mknod (mkn-

ode(1)).

/etc Th m c này và các th m c con c a nó l u ph n l n nh ng

d li u c n cho quá trình kh i ng ban u c a h th ng và

l u nh ng t p tin c u hình chính. Ví d , trong /etc có t p tin

inittab xác nh c u hình kh i ng, và t p tin ng i dùng

passwd. M t ph n các t p tin c u hình có th n m trong các

th m c con c a /usr. Th m c /etc không c l u các t p

tin ch ng trình (c n t chúng trong /bin ho c /sbin. D i

ây chúng ta s xem xét công d ng c a m t vài(!) th m c con

c a th m c /etc.

/etc/rc.d Th m c này l u nh ng t p tin s d ng trong quá trình kh i

ng h th ng. Chúng ta s c p chi ti t v nh ng t p tin

này và quá trình kh i ng nói riêng trong m t vài ch ng s p

t i.

/etc/skel Khi t o ng i dùng m i, thì nh ng t p tin trong th m c này

s c sao chép vào th m c cá nhân c a ng i dùng ó.

/etc/sysconfig Th m c l u m t vài (không ph i t t c ) t p tin c u hình h

th ng.

/etc/X11 Th m c dành cho các t p tin c u hình c a h th ng X11 (ví

d , xorg.conf).

/home Thông th ng trong th m c này là các th m c cá nhân c a

ng i dùng (tr root).

8do ó m t s nhà qu n tr không t ng g n phân vùng /boot vào trong quá trình kh i ng.

4.3 Công d ng c a các th m c chính 67

Th m c Công d ng

/lib Th m c này l u các th vi n chia s c a các hàm mà trình

biên d ch C và các mô un (các driver thi t b ) c n. Th m chí

n u trên h th ng không có trình biên d ch C nào, thì các th

vi n chia s v n c n thi t, vì chúng c nhi u ch ng trình

s d ng. Nh ng th vi n này ch n p vào b nh khi có nhu

c u th c hi n hàm nào ó, nh v y cho phép gi m kích th c

mã ch ng trình n m trong b nh . Trong tr ng h p ng c

l i thì cùng m t mã l p l i nhi u l n trong các ch ng trình

khác nhau.

/lost+found Th m c này s d ng ph c h i h th ng t p tin b ng l nh

fsck. N u fsck tìm ra t p tin mà không xác nh c th

m c m thì nó s a t p tin ó vào th m c /lost+found. Vì

th m c m b m t, nên t p tin s nh n c tên trùng v i ch

s inode c a nó.

/mnt ây là i m g n (mount) nh ng h th ng t p tin g n t m th i.

N u trên máy tính có ng th i Linux và Windows (DOS) thì

th m c này th ng dùng g n các h th ng t p tin FAT.

N u b n th ng g n m t vài a l u ng nh a m m, CD,

DVD, a c ng ngoài, flash,v.v. . . thì có th t o trong th m c

này các th m c con cho t ng a l u.

/tmp Th m c dành cho các t p tin t m th i. b t k th i i m

này ng i dùng root c ng có th xóa t p tin kh i th m c này

mà không làm nh h ng l n n ng i dùng khác. Tuy nhiên

không nên xóa nh ng t p tin trong th m c này, tr khi khi

b n bi t r ng t p tin ho c nhóm t p tin nào ó ang gây nh

h ng n công vi c c a h th ng. H th ng s t ng d n d p

th m c này theo nh k , vì th không nên l u ây nh ng

t p tin mà b n có th s c n n.

/root ây là th m c cá nhân c a ng i dùng cao c p root. Hãy chú

ý là th m c này không n m cùng ch v i th m c cá nhân

c a nh ng ng i dùng khác (trong /home).

/sbin Vì th m c /bin ch y u l u các t p tin th c thi (ch ng

trình và ti n ích c a H H) s d ng trong quá trình kh i ng

và do nhà qu n tr ch y. Trong tiêu chu n FHS có nói r ng

c n c trong th m c này nh ng t p tin th c thi s s d ng

sau khi g n thành công h th ng t p tin /usr. Ít nh t trong

th m c này ph i có init, mkswap, swapon, swapoff,

halt, reboot, shutdown, fdisk, fsck.*, mkfs.*,

arp, ifconfig, route.

/proc ây là i m g n h th ng t p tin proc cung c p thông tin

v các ti n trình ang ch y, v nhân, v các thi t b tính,

v.v. . . ây là h th ng t p tin o. Chi ti t b n có th c trong

man 5 proc. Các t p tin c bi t c a th m c này s d ng

nh n và g i d li u n nhân.

68 Làm quen v i h th ng t p tin ext3fs

Th m c Công d ng

/usr Th m c này r t l n và c u trúc c a nó nhìn chung l p l i c u

trúc c a th m c g c. Trong các th m c con c a /usr là t t

c các ng d ng chính. Theo tiêu chu n FHS thì nên dành cho

th m c này m t phân vùng riêng ho c t hoàn toàn trên a

s d ng chung trong m ng. Phân vùng ho c a ó th ng g n

ch c và trên a (phân vùng) là các t p tin c u hình c ng

nh t p tin th c thi dùng chung, các t p tin tài li u, các ti n

ích h th ng và c các t p tin thêm vào (t p tin d ng include).

/usr/bin Các ch ng trình (ti n ích và ng d ng) th ng c ng i

dùng bình th ng s d ng. /usr/bin/X11 là n i th ng dùng

l u các ch ng trình ch y trên X Window. Và ây c ng

th ng là liên k t n /usr/X11R6/bin.

/usr/include Th m c con này l u mã ngu n c a các th vi n tiêu chu n

c a ngôn ng C. Ng i dùng c n có ít nh t là quy n c i v i

th m c này. Dù trong tr ng h p nào c ng ng s a nh ng

t p tin trong th m c này, vì chúng ã c các nhà phát tri n

h th ng ki m duy t k càng (không l b n bi t v h th ng

t t h n các nhà phát tri n).

/usr/lib Trong th m c này là các th vi n object c a các ch ng trình

con, các th vi n ng (dynamic library), m t s ch ng trình

không th g i tr c ti p. Các h th ng ph c t p (ví d Debian

Linux) có th có các th m c con c a mình trong th m c

này. /usr/lib/X11 ­ n i th ng dùng t các t p tin có liên

quan n X Window và các t p tin c u hình c a h th ng X

Window. Trên Linux ó th ng là liên k t m m n th m c

/usr/X11R6/lib/X11.

/usr/local ây th ng t các ch ng trình và các th m c con (n i b )

ch dành cho máy tính này, bao g m:

/usr/local/bin. ây th ng l u nh ng ch ng trình

ng d ng.

/usr/local/doc ­ các tài li u i kèm v i ch ng trình ng

d ng.

/usr/local/lib ­ th vi n và t p tin c a các ch ng trình

và h th ng n i b .

/usr/local/man ­ các trang tr giúp man.

/usr/local/sbin ­ các ch ng trình dành cho nhà qu n

tr .

/usr/local/src ­ mã ngu n c a các ch ng trình.

/usr/sbin Th m c này g m các ch ng trình th c thi dành cho nhà

qu n tr và không s d ng trong th i gian kh i ng.

4.3 Công d ng c a các th m c chính 69

Th m c Công d ng

/usr/share Th m c này dùng cho t t c các t p tin d li u dùng chung

và có quy n truy c p là ch c. Th ng dùng chia s gi a

các ki n trúc khác nhau c a H H, ví d i386, Alpha, và PPC

có th dùng chung m t th m c /usr/share n m trên m t

phân vùng ho c a chia s trên m ng. C n chú ý là th m c

này không dùng chia s gi a các H H khác nhau ho c gi a

các phiên b n khác nhau c a cùng m t H H. Tiêu chu n FHS

khuyên dùng th m c con cho m i ch ng trình. Nh ng th

m c sau ho c liên k t m m sau ph i có trong /usr/share:

man (các trang tr giúp man), misc (nh ng gi li u tùy theo

ki n trúc khác nhau). Chúng ta xem xét m t vài th m c con

c a th m c này:

/usr/share/dict ­ các danh sách t (word list) c a ti ng

Anh dùng cho các ch ng trình ki m tra chính t nh

ispell.

/usr/share/man ­ các trang tr giúp man. M i ph n c a

man n m trong m t th m c con riêng trong th m c

này.

/usr/share/misc ( ã nói trên).

/usr/src Mã ngu n c a các thành ph n khác nhau c a Linux: nhân,

ng d ng. . .

/usr/tmp M t n i n a l u các t p tin t m th i. Thông th ng ây là

liên k t m m n /var/tmp.

/usr/X11R6 Các t p tin thu c v h th ng X Window.

/usr/X11R6/bin ­ các ch ng trình ng d ng c a h

th ng này.

/usr/X11R6/lib ­ các t p tin và th vi n có liên quan n

X-Window.

/var Trong th m c này là các t p tin l u các d li u bi n i

(variable). Nh ng d li u này xác nh c u hình c a m t s

ch ng trình trong l n ch y sau ho c là nh ng thông tin l u

t m th i s s d ng sau. Dung l ng thông tin trong th m c

này có th thay i trong m t kho ng l n, vì th m c gi các

t p tin nh b n ghi (log), spool, khóa locking, các t p tin t m

th i, v.v. . .

/var/adm L u các thông tin v tài kho n và thông tin chu n oán dành

cho nhà qu n tr .

/var/lock Các t p tin i u khi n h th ng dùng d tr tài nguyên.

/var/log Các t p tin b n ghi (log).

70 Làm quen v i h th ng t p tin ext3fs

Th m c Công d ng

/var/run Các t p tin bi n i trong th i gian th c hi n các ch ng trình

khác nhau. Chúng l u thông tin v s ti n trình (PID) và ghi

thông tin hi n gh i (utmp). T p tin trong th m c này th ng

c d n s ch trong th i gian kh i ng Linux.

/var/spool T p tin c t vào hàng t c a các ch ng trình khác nhau,

ví d :

/var/spool/at ­ các công vi c mà at ã ch y.

/var/spool/cron ­ t p tin c a h th ng Verb+cron+.

/var/spool/lpd - t p tin trong hàng i in.

/var/spool/mail ­ t p tin thùng th c a ng i dùng.

/var/spool/uucp ­ t p tin c a h th ng uucp.

/var/tmp Các t p tin t m th i.

4.4 D ng t p tin

Trong các ph n tr c chúng ta ã xem xét hai d ng t p tin ó là t p tin thông

th ng và các th m c. Nh ng trên Linux còn có m t vài d ng t p tin n a.

Chúng ta s làm quen v i chúng trong ph n này.

Nh ã nói, i v i h i u hành thì t p tin ch là m t chu i các byte liên t c.

Nh v y có th dùng khái ni m t p tin cho các thi t b và các i t ng khác.

i u này n gi n hoá s t ch c và trao i các d li u, vì có th th c hi n ghi

d li u vào t p tin, chuy n d li u lên các thi t b và trao i d li u gi a các

ti n trình b ng cách t ng t nh nhau. Trong t t c các tr ng h p này s d ng

cùng m t ph ng pháp d a trên ý t ng chu i các byte. Do ó ngoài các t p tin

thông th ng và th m c, nh ng thành ph n sau c ng c Linux coi là t p tin:

các t p tin thi t b

các ng (kênh) có tên (named pipe)

các socket (t v i ngh a nh t chim)

các liên k t m m (symlinks).

4.4.1 Các t p tin thi t b

Nh ã nói, i v i Linux thì t t c các thi t b k t n i vào máy tính ( c ng,

tháo r i, terminal, máy in, máy scan, mô em, bàn phím, chu t, v.v. . . ) u là các

t p tin. Ví d , n u c n a ra màn hình terminal th nh t thông tin nào ó, thì

h th ng th c hi n thao tác ghi vào t p tin /dev/tty1.

Có hai d ng thi t b : ký t (hay còn g i là các thi t b trao i theo byte) và

kh i (trao i theo kh i). S khác nhau gi a hai d ng này n m cách c và ghi

4.4 D ng t p tin 71

thông tin vào các thi t b . Các thi t b ký t trao i thông tin theo t ng ký t

(theo t ng byte) trong ch chu i các byte. Ví d thi t b d ng này là terminal.

Còn thông tin c c và ghi vào các thi t b kh i theo các kh i. Ví d các

c ng. Không th c t a c ng và ghi lên ó t ng byte, trao i thông tin v i

a ch có th theo t ng kh i.

Trao i d li u v i các thi t b trên Linux do các driver thi t b m nhi m.

Nh ng driver này ho c n m trong nhân ho c n m riêng d ng mô un và có th

g n vào nhân sau. trao i v i các ph n khác c a h i u hành m i driver

t o ra m t giao di n liên l c có v ngoài gi ng nh t p tin. Ph n l n nh ng t p

tin nh v y ã c t o s n t tr c và n m trong th m c dev. N u nhìn vào

th m c /dev (t c là chuy n vào th m c ó b ng l nh cd r i ch y ls), thì b n

s th y m t l ng kh ng l nh ng t p tin thi t b . B ng 4.2 cho bi t nh ng t p

tin th ng dùng nh t.

B ng 4.2: Nh ng t p tin thi t b chính

T p tin Ý ngh a

/dev/console Console h th ng t c là màn hình và bàn phím k t n i t i máy tính.

/dev/hd Các c ng v i giao di n IDE. Thi t b /dev/hda1 t ng ng v i phân

vùng u tiên c a a c ng u tiên, a /dev/hda, t c là a Primary

Master.

/dev/sd c ng v i giao di n SCSI.

/dev/fd Các t p tin a m m. u tiên là /dev/fd0, th hai là

/dev/fd1.

/dev/tty Các t p tin h tr terminal c a ng i dùng. Tên g i v n c l u k t

khi k t n i teletype vào các h th ng UNIX làm terminal. Trên Linux

nh ng t p tin này h tr các terminal o (hãy nh l i ch ng tr c).

/dev/pty Các t p tin h tr terminal gi . S d ng cho các k t n i t xa qua telnet.

/dev/ttS T p tin h tr làm vi c v i các c ng k t ti p nhau (các c ng COM).

/dev/ttS0 t ng ng v i COM1 trong DOS, /dev/ttS1 t ng ng

v i COM2.

/dev/cua Các t p tin cho mô em.

/dev/null Thi t b này có th g i là "l en". T t c nh ng gì ghi vào /dev/null

s m t v nh vi n. Nh ng ng i vi t script th ng chuy n nh ng thông

báo không c n thi t vào thi t b này. N u s d ng /dev/null làm

thi t b nh p vào, thì s thu c m t chu i các s 0, t c là trong tr ng

h p này t p tin có c b ng 0.

M i d ng thi t b có th có m t vài t p tin thi t b . Vì th các t p tin thi t b

th ng có hai s : l n (major) và nh (minor). S l n c a thi t b cho nhân bi t là

t p tin này thu c v driver nào, còn s nh cho bi t c n ph i làm vi c v i thi t b

c th nào c a d ng này. i v i các t p tin thi t b , câu l nh ls -l cho bi t s

l n và s nh ã nói thay vì kích th c c a t p tin.

4.4.2 Các ng có tên (pipes)

Còn có m t d ng t p tin thi t b n a ó là các ng có tên, hay b m FIFO (First

In ­ First Out). T p tin d ng này ch y u dùng t ch c trao i d li u gi a

72 Làm quen v i h th ng t p tin ext3fs

các ch ng trình khác nhau (pipe d ch t ti ng Anh sang là ng, ng ng).

ng là ph ng ti n h t s c thu n ti n và s d ng r ng rãi trao i thông

tin gi a các ti n trình. M t ti n trình có th c t t c nh ng gì mà m t ti n

trình khác t vào ng. N u có hai ti n trình c sinh ra t cùng m t ti n trình

m trao i thông tin (th ng x y ra), thì ng có th không có tên. Trong tr ng

h p ng c l i c n t o ra m t ng có tên, ví d b ng ch ng trình mkfifo. Khi

này b n thân t p tin ng ch tham gia vào s kh i u trao i d li u.

4.4.3 Các socket

Socket ó là k t n i gi a các ti n trình, cho phép chúng giao ti p mà không ch u

nh h ng c a các ti n trình khác. Nói chung socket và s trao i qua socket

óng vai trò h t s c quan tr ng trên t t c các h th ng UNIX, trong ó có Linux:

socket là khái ni m then ch t c a TCP/IP và nh v y là d a trên socket ã xây

d ng toàn b Internet. Tuy nhiên t phía h th ng t p tin socket th c t không

khác các ng có tên: ó ch là các i m cho phép n i các ch ng trình v i nhau.

Sau khi ã t o ra k t n i, thì trao i c th c hi n mà không c n n socket:

d li u do nhân chuy n tr c ti p t ch ng trình này n ch ng trình khác.

M c dù nh ng ti n trình khác có th th y các t p tin socket, nh ng nh ng

ti n trình không tham gia vào k t n i hi n th i không th th c hi n b t k thao

tác c hay ghi nào lên t p tin socket. Trong s nh ng h th ng s d ng socket

c n k n X Window, h th ng in và h th ng syslog.

4.4.4 Liên k t m m

Trong ph n v tên t p tin ch ng tr c chúng ta ã nói r ng t p tin trong

Linux có th có vài tên hay liên k t c ng. Liên k t c ng ch là m t tên khác cho

t p tin ban u. Nó c ghi trong mô t inode c a t p tin ó. Sau khi t o liên

k t c ng không th phân bi t âu là tên t p tin còn âu là liên k t. N u b n

c xóa m t trong s nh ng t p tin này (nói úng h n là m t trong s nh ng tên

này), thì t p tin v n còn c l u trên a cho n khi v n còn ít nh t m t tên.

R t khó phân bi t tên u tiên c a t p tin và nh ng liên k t c ng c t o ra

sau ó. Vì v y ch dùng liên k t c ng nh ng n i không c n bi t s khác nhau.

M t trong nh ng ng d ng c a liên k t c ng ó là ng n ch n kh n ng xóa t p

tin m t cách vô tình. i m c bi t c a liên k t c ng là nó ch th ng n ch s

inode, và do ó liên k t c ng ch có th dùng cho t p tin c a cùng m t h th ng

t p tin, t c là trên cùng m t phân vùng ( a l u).

Nh ng trên Linux còn có m t d ng liên k t khác g i là (liên k t t ng tr ng9).

Nh ng liên k t này c ng có th coi là tên ph cho t p tin, nh ng chúng là nh ng

t p tin khác ­ nh ng t p tin liên k t m m. Khác v i liên k t c ng, liên k t m m

có th ch n nh ng t p tin n m trong h th ng t p tin khác, ví d trên nh ng

a l u ng, ho c th m chí trên m t máy tính khác. N u t p tin ban u b xóa,

thì liên k t m m tuy không b xóa nh ng tr thành vô giá tr . Hãy s d ng liên

k t m m trong nh ng tr ng h p b n mu n tránh s l m l n mà liên k t c ng

có th gây ra, ho c khi t p tin n m trên m t h th ng t p tin khác.

9thu t ng này v n ch a c th ng nh t, do ó a ra c hai tr ng h p có th g p.

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

Vi c t o b t k m t liên k t nào c ng gi ng nh sao chép t p tin, nh ng khác

ch là tên ban u c a t p tin c ng nh liên k t cùng ch n m t t p tin th c

s trên a. Vì th n u b n c thay i t p tin qua m t tên nào ó c a nó, thì s

th y nh ng thay i này khi xem t p tin qua tên khác. t o liên k t m m c n

s d ng câu l nh ln ã nói n và thêm vào tùy ch n -s:

[user]$ ln -s tên_t p_tin tên_liên_k t

Ví d :

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

Sau khi th c hi n câu l nh này trong th m c cá nhân c a tôi xu t hi n t p

tin l4u.pdf. Và bây gi n u xem danh sách t p tin trong th m c b ng câu l nh

ls -l, thì trong danh sách s có m t dòng nh sau:

lrwxrwxrwx 1 teppi82 users 20 2006-09-10 06:39 l4u.pdf -> projects/l4u/l4u-0.9.2.pdf

Hãy chú ý n ký t u tiên c a dòng này, nó cho chúng ta bi t t p tin là

m t liên k t m m. T t nhiên i u này có th th y rõ trong ph n cu i (ph n tên

t p tin), ó sau tên t p tin c a liên k t là m t m i tên ch n t p tin ban

u.N u b n t o trong th m c mot m t liên k t m m ch n m t th m c khác,

thì có th di chuy n th m c mot i âu tùy thích, liên k t m m khi ó v n làm

vi c úng. C ng nh v y i v i chính b n thân liên k t m m. Nh ng khi t o

liên k t m m, hãy h n ch s d ng ".." (liên k t n th m c m ) trong tên t p

tin ch n, b i vì v trí c a liên k t m m có th thay i, mà ".." luôn luôn là

th m c m c a th m c hi n th i.

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

B i vì Linux là h i u hành nhi u ng i dùng, nên yêu c u quy nh truy c p

n các t p tin và th m c là m t trong nh ng yêu c u thi t y u nh t mà h

i u hành ph i gi i quy t. C ch quy nh truy c p c phát tri n cho h

th ng UNIX vào nh ng n m 70 c a th k tr c r t n gi n nh ng có hi u qu

n n i ã c s d ng h n 30 n m, và hi n th i v n còn c s d ng gi i

quy t bài toán này.

C s c a c ch quy nh quy n truy c p ó là tên ng i dùng và tên nhóm

c a ng i dùng. Nh b n ã bi t trong Linux m i ng i dùng có m t tên riêng

không l p l i dùng ng nh p vào h th ng. Ngoài ra, trên h th ng còn có

các nhóm ng i dùng, và Linux cho phép m t ng i dùng có th n m trong m t

ho c nhi u nhóm. T o và xóa các nhóm là công vi c c a ng i dùng cao c p root,

và root có th thay i thành ph n c a m t nhóm nào ó. Thành viên c a các

nhóm khác nhau có th có quy n truy c p khác nhau n t p tin, ví d nhóm các

nhà qu n tr có quy n nhi u h n so v i nhóm các nhà l p trình.

Trong mô t inode c a m i t p tin có ghi tên c a ch và nhóm s h u t p tin.

Ngày t u khi t o t p tin ch c a nó là ng i dùng ã t o ra nó. Nói chính xác

h n là ng i dùng mà ti n trình t o t p tin ã ch y d i tên h . Cùng lúc v i

74 Làm quen v i h th ng t p tin ext3fs

ch s h u, tên c a nhóm s h u c ng c ghi vào theo thông tin tên nhóm c a

ti n trình t o t p tin. Có th thay i ch và nhóm s h u trong quá trình làm

vi c sau này b ng hai câu l nh chown và chgrp (chúng ta s c p k h n v

hai l nh này ngay sau ây).

Bây gi hãy th c hi n m t l n n a câu l nh ls -l, nh ng có thêm m t tham

s n a ó là tên c a m t t p tin c th nào ó. Ví d t p tin ch ng trình c a h

v bash /bin/bash. Nhân ti n, hãy chú ý kh n ng này c a câu l nh ls -l ­

hi n th thông tin v m t t p tin c th nào ó ch không ph i t t c các t p tin

trong th m c m t lúc.

[user]$ ls -l /bin/bash

-rwxr-xr-x 1 root root 501804 2006-04-23 05:46 /bin/bash

Nh b n c th y, trong tr ng h p này ch s h u là ng i dùng root, nhóm

s h u ­ root. Nh ng bây gi trên dòng này chúng ta s quan tâm h n n vùng

u tiên, vùng xác nh d ng t p tin và quy n truy c p n nó. Vùng này trong

ví d trên là chu i các ký t t m th i ch a nói lên i u gì "-rwxr-xr-x". Nh ng

ký t này có th t m chia thành b n nhóm. Nhóm th nh t ch g m m t ký t

xác nh d ng t p tin (m t trong b n d ng ã nêu ph n trên). Nó có th là m t

trong s nh ng ký t sau:

­ (g ch ngang) ­ t p tin thông th ng

d ­ th m c

b ­ t p tin thi t b kh i

c ­ t p tin thi t b ký t

s ­ socket

p ­ ng có tên (pipe)

l ­ liên k t m m (symbolic link).

Sau ký t xác nh d ng t p tin là ba nhóm, m i nhóm g m ba ký t xác nh

quy n truy c p t ng ng cho ch s h u, nhóm s h u t p tin và cho nh ng

ng i dùng khác. Trong ví d c a chúng ta quy n truy c p c a ch s h u là

rwx, có ngh a là ch s h u root có quy n c (r), ghi vào t p tin (w) và ch y

t p tin này (x). Thay b t k ký t nào trong s nh ng ký t này b ng d u g ch

ngang có ngh a là ng i dùng b t c m t quy n t ng ng. C ng trong ví d

trên chúng ta th y, t t c nh ng ng i dùng khác (k c nh ng ng i dùng c a

nhóm root) b t c m t quy n ghi vào t p tin này, có ngh a là h không th s a

t p tin và nói chung là không th thay i t p tin b ng cách nào ó.

Quy n truy c p và thông tin v d ng t p tin trên các h th ng UNIX c

l u trong mô t inode d ng c u trúc 2 byte (16 bit). i u này là t t nhiên vì

máy tính ch làm vi c d a trên các bit ch không ph i d a trên các ký t r, w,

x. B n bit trong s 16 bit này c dùng cho b n ghi v d ng t p tin. Ba bit ti p

theo xác nh các tính ch t c bi t c a t p tin th c thi (chúng ta s nói n m t

chút sau). Và cu i cùng 9 bit cu i cùng xác nh quy n truy c p n t p tin. 9

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

bit này chia thành ba nhóm, m i nhóm 3 bit. Ba bit u tiên xác nh quy n c a

ch s h u, ba bit ti p theo ­ quy n c a nhóm s h u, ba bit cu i cùng ­ quy n

c a nh ng ng i dùng còn l i (t c là t t c nh ng ng i dùng, tr ch s h u và

nhóm s h u t p tin). Khi này n u bit t ng ng có giá tr b ng "1", thì có quy n

ó, còn n u b ng "0" thì quy n ó b t c m t. d ng ch cái thì "1" c thay

th b ng các ch cái t ng ng (r, w ho c x), còn "0" th hi n d ng d u g ch

ngang.

Quy n c r t p tin có ngh a là ng i dùng có th xem n i dung t p tin b ng

các ch ng trình xem khác nhau, ví d more, ho c b ng các trình so n th o v n

b n. Nh ng khi so n th o b n s không th l u nh ng thay i trong t p tin lên

a, n u không có quy n ghi w vào t p tin này. Quy n th c thi (tôi thích dùng

thu t ng quy n g i) có ngh a là b n c có th n p t p tin vào b nh và th

ch y mã này gi ng nh tr ng h p ch ng trình. T t nhiên n u trên th c t t p

tin không ph i là ch ng trình (ho c các script shell, perl, . . . ) thì không th g i

t p tin, nh ng ng c l i n u t p tin là ch ng trình mà không có quy n g i thì

c ng không th ch y ch ng trình ó.

Nh v y là chúng ta ã bi t c trên Linux nh ng t p tin nào là có th th c

thi. B n th y không, ph n m r ng c a t p tin ây không có liên quan gì, t t

c u do tính ch t "th c thi" t ra, và khác v i các H H c a Microsoft không

ph i ai c ng có quy n g i t p tin.

N u v n th c hi n câu l nh ls -l nh ng tham s không ph i là tên t p tin

mà là tên th m c thì chúng ta s th y th m c c ng có quy n truy c p và c ng

v n nh ng ch cái r, w, x nói trên c dùng xác nh quy n truy c p n

th m c. Ví d , n u th c hi n câu l nh:

[user]$ ls -l /usr

thì s th y dòng t ng ng v i th m c share nh sau:

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

T t nhiên là i v i th m c thì ý ngh a c a các khái ni m "quy n c", "quy n

ghi" và "quy n g i" có thay i m t chút. Quy n c i v i th m c thì h t s c

d hi u, n u chúng ta nh r ng th m c c ng ch là t p tin l u danh sách các

t p tin khác trong th m c ó. Cho nên n u ng i dùng có quy n c th m c,

thì t c là có th xem n i dung c a th m c (có th nói khác là xem danh sách

t p tin trong th m c). Quy n ghi c ng d hi u. Khi có quy n này, ng i dùng

có th t o và xóa các t p tin trong th m c, t c là thêm vào ho c xóa kh i th

m c dòng l u thông tin v m t t p tin nào ó và các liên k t t ng ng. Quy n

g i i v i th m c có h i khó hi u m t chút. Trong tr ng h p này quy n g i ch

quy n chuy n vào th m c này. N u b n c là ch s h u th m c và mu n cho

nh ng ng i dùng khác quy n xem m t t p tin nào ó trong th m c c a mình

thì c n ph i cho h quy n truy c p (chuy n) vào th m c này, t c là cho nh ng

ng i dùng khác "quy n g i" (th c thi) th m c. H n n a còn c n ph i cho ng i

dùng "quy n g i" i v i t t c các th m c n m tr c th m c này trong cây th

m c. Chính vì v y mà theo m c nh t t c các th m c có t quy n g i cho ch

s h u c ng nh nhóm và nh ng ng i dùng khác. Và t t nhiên n u mu n ng n

ch n truy c p vào th m c thì ch c n b i quy n chuy n vào th m c (r) c a

76 Làm quen v i h th ng t p tin ext3fs

t t c ng i dùng (k c nhóm s h u). ng t c b quy n này c a chính b n

thân mình, n u không s ph i ph c h i l i nó tr c khi có th c các t p tin.

Sau khi c o n trên có th th y "quy n c" th m c là th a thãi vì không

cho ra tính n ng gì m i so v i "quy n g i". Tuy nhiên v n có s khác nhau gi a

hai quy n này. N u ch a ra quy n g i, thì ng i dùng có th vào th m c,

nh ng s không th y ó b t k m t t p tin nào khi ch y l nh ls (có th th y

rõ h n n u b n s d ng ch ng trình Midnight Commander). N u có quy n truy

c p t i m t th m c con nào ó c a th m c này, thì b n có th chuy n sang th

m c con b ng l nh cd, nh ng c n ph i nh tên c a th m c con này, vì s không

th y b t k danh sách và t p tin th m c nào (tr ng h p này gi ng nh khi

chúng ta i trong màn êm không th y ng, ch nh h ng i).

C ch ki m tra quy n ng i dùng khi s d ng t p tin nh sau. u tiên

h th ng ki m tra xem tên ng i dùng có trùng v i tên ch s h u t p tin hay

không. N u hai tên này trùng nhau (t c là ch s h u ang dùng t p tin c a

mình), thì ki m tra xem ch s h u có các quy n truy c p t ng ng ( c, ghi

và g i) không. ng ng c nhiên khi ch s h u l i không có t t c m i quy n,

ng i dùng root có th t c b m t s quy n c a ch s h u t p tin. N u có quy n

truy c p ó, thì s c cho phép th c hi n thao tác t ng ng. N u ch s h u

không có quy n nào ó, thì th m chí h th ng không ki m tra quy n có th có

nhóm s h u và nh ng ng i dùng khác mà a ra luôn thông báo l i không th

th chieejn c hành ng yêu c u (d ng "Permission denied").

N u tên ng i dùng không trùng v i tên ch s h u thì h th ng ki m tra

xem ng i dùng này có n m trong nhóm s h u hay không. N u có thì kh n ng

truy c p n t p tin c xác nh b ng quy n truy c p c a nhóm, và không chú

ý n các quy n c a ch s h u và nh ng ng i dùng còn l i. N u ng i dùng

không ph i là ch s h u và c ng không n m trong nhóm s h u, thì quy n c a

h c xác nh b ng nhóm tính ch t th ba (nhóm dành cho nh ng ng i dùng

còn l i). Nh v y nhóm tính ch t th ba trong quy n truy c p là dành cho t t

m i ng i dùng, tr ch s h u và nh ng ng i dùng n m trong nhóm s h u.

thay i quy n truy c p t i t p tin ng i ta s d ng l nh chmod (change

mode). Có hai cách s d ng l nh này. Khi dùng cách th nh t b n ph i ch ra rõ

ràng thêm quy n nào cho ai ho c t c quy n nào và c a ai nh sau:

[user]$ chmod wXp tên_t p_tin

Trong ó, ch ký t w ph i t m t trong các ký t sau:

u ­ ch s h u

g ­ nhóm s h u g

o ­ nh ng ng i dùng còn l i

a ­ t t c bao g m ch s h u, nhóm và nh ng ng i dùng còn l i.

ch X là m t trong các ký t sau:

+ ­ thêm quy n

­ ­ t c b quy n

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

= ­ dùng quy n ch ra thay cho quy n ã có.

ch p là m t trong nh ng ký t sau:

r ­ quy n c

w ­ quy n ghi

x ­ quy n g i (quy n th c hi n.

Sau ây là m t s ví d s d ng câu l nh chmod:

[user]$ chmod a+x tên_t p_tin

thêm quy n g i t p tin tên_t p_tin cho m i ng i dùng c a h th ng.

[user]$ chmod go-rw tên_t p_tin

t c b quy n c và ghi c a m i ng i dùng tr ch s h u t p tin.

[user]$ chmod ugo+rwx tên_t p_tin

[user]$ chmod a+rwx tên_t p_tin

cho m i ng i dùng quy n c, ghi và g i (th c hi n).

[user]$ chmod u=rwx,go=x tên_t p_tin

cho ch s h u có t t c m i quy n ( c, ghi, g i), nh ng ng i dùng còn l i ch

có quy n g i (th c hi n).

N u không ch ra ai c thêm quy n truy c p, thì s áp d ng cho t t c m i

ng i dùng, t c là có th dùng l nh:

[user]$ chmod +x tên_t p_tin

thay cho

[user]$ chmod a+x tên_t p_tin

Ph ng án s d ng th hai c a câu l nh chmod có khó hi u h n m t chút

trong th i gian u s d ng Linux, nh ng l i th ng xuyên c các nhà qu n

tr c ng nh ng i dùng có kinh nghi m dùng. Nó d a trên mã hóa quy n truy

c p d ng s . Ký t r c mã hóa b ng s 4, w ­ s 2, x ­ s 1. xác nh

quy n c a ng i dùng c n c ng các s t ng ng l i v i nhau. Sau khi thu c

ba giá tr s (cho ch s h u, nhóm s h u và nh ng ng i dùng còn l i), chúng

ta a ba s này vào dùng làm tham s cho l nh chmod. Chúng ta c n t ba s

này phía sau tên l nh và phía tr c tham s th hai (tên t p tin). Ví d , n u c n

cho ch s h u m i quy n (4+2+1=7), cho nhóm s h u quy n c và ghi (4+2=6)

và nh ng ng i dùng còn l i quy n g i (1=1), thì dùng l nh sau:

[user]$ chmod 761 tên_t p_tin

78 Làm quen v i h th ng t p tin ext3fs

N u b n bi t v mã ôi c a h c s tám, thì hi u r ng nh ng s ng sau tên

l nh không ph i gì khác mà chính là b n ghi h c s tám c a 9 bit xác nh

quy n truy c p cho ch s h u, nhóm s h u và nh ng ng i dùng còn l i.

Ch có ch s h u t p tin ho c ng i dùng cao c p m i có kh n ng thay i

quy n truy c p b ng câu l nh chmod. có th thay i quy n c a nhóm s h u,

thì ch s h u (không ph i root) ph i là thành viên c a nhóm ó.

k t thúc bài h c v quy n truy c p n t p tin c n nói thêm v nh ng tính

ch t khác có th g p c a t p tin mà c ng xác nh b ng l nh chmod. ó là nh ng

tính ch t cho các t p tin th c thi. Trong mô t inode, ph n c u trúc 2 byte xác

nh tính ch t t p tin, chúng chi m các v trí 5 ­ 7 ngay sau mã cho bi t d ng

t p tin. Tính ch t u tiên ó là "bit thay i ID10 ng i dùng". Ý ngh a c a bit

này nh sau.

Thông th ng, khi ng i dùng g i th c hi n m t ch ng trình nào ó, thì

ch ng trình này nh n c nh ng quy n truy c p n t p tin và th m c c a

ng i dùng ã ch y nó. N u nh có t "bit thay i ID ng i dùng", thì ch ng

trình nh n c quy n truy c p n t p tin và th m c c a ch s h u t p

tin ch ng trình. Nh v y bit này còn có th g i là "bit thay i ID ch s h u

ti n trình". i u này cho phép gi i quy t m t s v n khó th c hi n. Ví d

i n hình nh t là câu l nh thay i m t kh u passwd. T t c m t kh u c

l u trong t p tin /etc/passwd (ho c m t t p tin mã hóa nào khác, trong a s

tr ng h p là /etc/shadow) mà ch s h u là ng i dùng cao c p root. Vì th

ch ng trình n u do ng i dùng ch y s không th th c hi n l nh ghi vào t p tin

này. Có ngh a là ng i dùng không th thay i m t kh u c a mình. Nh ng t p

tin /usr/bin/passwd có "bit thay i ID ng i dùng", và root là ch s h u t p

tin ch ng trình này. Do ó ch ng trình thay i m t kh u passwd c ch y

v i quy n root và nh n c quy n ghi vào t p tin /etc/passwd. T t nhiên là

trong ch ng trình passwd ã có mã ng i dùng ch c phép thay i m t

dòng trong t p tin này ­ dòng tài kho n c a ng i dùng ó.

Ng i dùng cao c p root có th t "bit thay i ID ng i dùng" b ng l nh:

[root]# chmod +s tên_t p_tin

T ng t nh v y chúng ta có "bit thay i ID nhóm". Ý ngh a c a bit này

c ng gi ng nh trên nh ng ch thay th "ng i dùng" b ng "nhóm".

M t tính ch t n a c a t p tin th c thi ó là "bit dính" (chính xác h n là "bit

l u ch ng trình") hay thu t ng ti ng Anh là "sticky bit". Chúng ta s dùng

thu t ng "bit l u ch ng trình" vì úng v i ng c nh này h n. Bit này ch h

th ng bi t sau khi d ng ch ng trình c n l u l i nó trong b nh . R t thu n ti n

khi t bit này cho nh ng ch ng trình th ng g i, vì trong tr ng h p này s

ti t ki m c th i gian n p ch ng trình vào b nh m i l n ch y. Bit này ch

c n thi t trên nh ng máy c . Trên nh ng máy "top model" (high end) hi n i

thì r t hi m khi s d ng.

N u s d ng ph ng án xác nh tính ch t d ng s c a l nh chmod, thì giá

tr c a ba tính ch t v a nói ph i n m tr c nh ng s xác nh quy n truy c p

(t c là s u tiên trong dãy 4 s xác nh t t c các tính ch t c a t p tin). Ví d :

10Identificator, m i ng i dùng có m t ID d ng s nh v y. ID c a ng i dùng là duy nh t, không trùng l p.

Ví d ID c a ng i dùng cao c p root là 0.

4.6 Các câu l nh c b n làm vi c v i t p tin và th m c 79

[root]# chmod 4775 tên_t p_tin

Khi này c ng v n s d ng phép c ng nh i v i tr ng h p quy n truy c p và

các tính ch t có giá tr nh sau:

4 ­ "bit thay i ID ng i dùng"

2 ­ "bit thay i ID nhóm"

1 ­ "bit l u ch ng trình" (sticky bit).

N u có (nh ng) bit nào ó trong s ba bit này c t (nh n giá tr 1), thì

s có thay i c a k t qu c a l nh ls -l trong ph n quy n truy c p (ph n u

tiên). N u "bit thay i ID ng i dùng" b ng 1, thì ký t x trong ph n xác nh

quy n truy c p c a ch s h u s c thay th b ng ký t s. Lúc này n u ch

s h u có quy n g i t p tin thì ký t x c thay th b ng ch cái s nh , còn

ng c l i (ví d t p tin không ph i là ch ng trình), thì thay th x b ng ch cái

S l n. S thay th nh v y c ng x y ra n u có t "bit thay i ID nhóm", t t

nhiên là s thay th ký t x trong ph n xác nh quy n truy c p c a nhóm s

h u. N u "bit l u ch ng trình" (sticky bit) b ng 1, thì thay th ký t x trong

ph n xác nh quy n truy c p c a nh ng ng i dùng còn l i b ng ký t t, n u

nh ng ng i dùng còn l i có quy n th c hi n t p tin, b ng ký t T, n u ng c

l i.Nh v y,m cdùtrongk tqu c al nhls -lkhôngcónh ngv tríriêng

hi n th k t qu c a ba bit ("bit thay i ID ng i dùng", "bit thay i ID nhóm"

và "bit l u ch ng trình"), chúng ta v n có th th y c nh ng thông tin này.

M t vài 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 chúng ta th y có th li t kê nhi u t p tin trên dòng l nh ls -l, t c là

dùng nhi u t p tin làm tham s cho l nh ls.)

[user]$ touch vidu

[user]$ chmod 7766 vidu

[user]$ ls -l vidu

-rwsrwSrwT 1 teppi82 users 0 2006-09-11 12:46 vidu

4.6 Các câu l nh c b n làm vi c v i t p tin và th m c

Trong nh ng ph n tr c chúng ta ã c p n m t vài câu l nh làm vi c v i

t p tin và th m c, ó là pwd, cd, ls, ln, chmod. Trong ph n này chúng ta

s xem xét m t cách ng n g n m t vài câu l nh th ng dùng n a.

80 Làm quen v i h th ng t p tin ext3fs

4.6.1 Câu l nh chown và chgrp

Nh ng câu l nh này dùng thay i ch s h u và nhóm s h u t p tin. Ch

có ng i dùng cao c p root m i có quy n thay i ch s h u, còn thay i nhóm

s h u t p tin có th là root ho c ng i dùng ch s h u. có quy n thay i

nhóm, thì ch s h u còn ph i là thành viên c a nhóm s s h u t p tin này. Cú

pháp c a hai câu l nh này t ng t nhau:

[root]# chown tên_ng i_dùng tên_t p_tin

[root]# chgrp tên_nhóm tên_t p_tin

4.6.2 Câu l nh mkdir

Câu l nh mkdir cho phép t o th m c con trong th m c hi n th i. Tham s c a

câu l nh này là tên c a th m c mu n t o ra. Trong th m c v a t o s t ng

t o ra hai m c: . (liên k t n chính b n thân th m c này) và .. (liên k t n

th m c m ). t o ra th m c con, b n c c n ph i có quy n ghi vào th m c

hi n th i. Có th t o ra th m c con trong m t th m c khác th m c hi n th i,

nh ng khi này c n ph i ch ra ng d n t i ó. Ví d :

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

(hãy nh l i ký hi u dùng ch c a ng i dùng).

Có th dùng các tùy ch n sau c a câu l nh mkdir:

-m mode ­ xác nh quy n (ch ) truy c p cho th m c m i (ví d : -m 700)

-p ­ t o ra các th m c trung gian ch ra trong ng d n (n u ch a có

chúng). Ví d :

teppi82@ThinhQuyen:~> mkdir mot/hai

mkdir: cannot create directory 'mot/hai': No such file or directory

teppi82@ThinhQuyen:~> mkdir -p mot/hai

teppi82@ThinhQuyen:~> ls -l mot

t ng 4

drwxr-xr-x 2 teppi82 users 4096 2006-09-11 13:36 hai

4.6.3 Câu l nh cat

Câu l nh cat th ng dùng t o các t p tin, m c dù có th s d ng l nh touch.

L nh cat c ng a ra màn hình ( u ra) n i dung c a (các) t p tin dùng làm

tham s c a nó. N u chuy n k t qu làm vi c c a l nh cat vào m t t p tin nào

ó thì có th t o ra b n sao c a t p tin nh sau:

[user]$ cat t p_tin1 > t p_tin2

Chính b n thân câu l nh cat lúc u c phát tri n dùng cho vi c chuy n

h ng k t qu làm vi c. Vì nó c t o ra cho s móc n i (concatenate, n u dùng

thu t ng c a Hoá h c là "s c ng" các t p tin), t c là s k t h p các t p tin khác

nhau vào m t:

4.6 Các câu l nh c b n làm vi c v i t p tin và th m c 81

[user]$ cat t p_tin1 t p_tin2 ... t p_tinN > t p_tin_m i

Và c ng chính kh n ng chuy n h ng k t qu c a câu l nh này c dùng

t o các t p tin m i. Khi này u vào c a l nh cat ó là dòng d li u nh p t

bàn phím ( u vào tiêu chu n), còn u ra s là t p tin m i:

[user]$ cat > t p_tin_m i

Sau khi nh p vào nh ng gì mu n nh p, hãy nh n t h p phím <Ctrl>+<D>

ho c <Ctrl>+<C>, và t t c nh ng gì b n ã gõ s c l u l i trong t p tin

t p_tin_m i. T t nhiên là nh v y ch y u dùng cat t o các t p tin v n

b n ng n.

4.6.4 Câu l nh cp

M c dù ôi khi có th dùng câu l nh cat sao chép các t p tin, nh ng trong

Linux có m t câu l nh chuyên dùng cho vi c này ­ l nh cp. Có th áp d ng m t

trong hai d ng c a l nh này:

[user]$ cp [tùy_ch n] ngu n ích

[user]$ cp [tùy_ch n] th _m c_ngu n th _m c_m i

Trong tr ng h p th nh t sao chép t p tin (ho c th m c) ngu n vào t p

tin (ho c th m c) ích. Còn trong tr ng h p th hai thì t p tin có trong

th _m c_ngu n s c sao chép vào th m c th _m c_m i. sao chép thì

c n có quy n c t p tin mu n sao chép và quy n ghi vào th m c s sao chép

n ("th m c ích").

N u s d ng m t t p tin ã có vào ch c a t p tin ích thì n i dung c a nó

s b xóa m t, do v y khi sao chép c n ph i c n th n. V l i có th s d ng câu

l nh cp v i tùy ch n -i. Khi ó tr c khi ghi chèn lên t p tin ã có h th ng s

h i l i ng i dùng. R t nên dùng tùy ch n này.

Câu l nh cp còn có m t vài tùy ch n có ích khác li t kê trong b ng 4.3.

B ng 4.3: Nh ng tùy ch n chính c a l nh cp

Tùy ch n Ý ngh a

­p Gi l i th i gian s a i t p tin và c gi l i nh ng quy n truy c p

có th gi l i. N u không a ra tùy ch n này thì quy n truy c p c a

t p tin s c thi t l p theo quy n c a ng i dùng ã ch y l nh.

­R ho c ­r N u ngu n là th m c thì sao chép th m c ó cùng v i t t c nh ng

gì (t p tin, th m c con) n m trong nó, t c là gi l i c c u trúc

c a th m c b n u (recursive).

­d N u a ra tùy ch n này thì các liên k t m m s v n là các liên k t,

n u không thì s sao chép t p tin (n i dung) mà liên k t này ch n.

­f Ghi chèn t p tin khi sao chép mà không h i l i hay c nh báo.

82 Làm quen v i h th ng t p tin ext3fs

4.6.5 Câu l nh mv

N u b n không c n sao chép, mà c n di chuy n t p tin t m t th m c này vào

m t th m c khác, thì có th s d ng câu l nh mv. Cú pháp c a l nh này t ng

t nh cú pháp c a cp. H n n a, l nh này u tiên sao chép t p tin (hay th

m c), và sau ó m i xóa t p tin (th m c) ban u. Các tùy ch n c a nó c ng

gi ng nh c a cp.

Câu l nh mv không ch dùng di chuy n, mà còn dùng thay i tên t p

tin và th m c, t c là di chuy n chúng trong ph m vi c a m t th m c. Ch c n

t vào ch hai tham s tên c và tên m i c a t p tin nh th này:

[user]$ mv tên_c tên_m i

Nh ng hãy chú ý là câu l nh mv không cho phép i tên m t vài t p tin cùng

lúc b ng cách s d ng các m u tên. Do ó câu l nh:

[user]$ mv *.doc *.odt

s không làm vi c. Khi s d ng l nh mv c ng gi ng nh khi s d ng cp, ng

quy n thêm vào tùy ch n -i hi n ra c nh báo khi có t p tin s b ghi chèn.

4.6.6 Câu l nh rm và rmdir

xóa nh ng t p tin và th m c không c n thi t trên Linux có các câu l nh rm

(xóa t p tin) và rmdir (xóa th m c r ng). s d ng nh ng câu l nh này, b n

c c n có quy n ghi vào th m c l u nh ng t p tin ho c th m c mu n xóa. Khi

này quy n thay i chính b n thân các t p tin và th m c là không c n thi t.

N u mu n câu h i xác nh n s cho phép c a ng i dùng xu t hi n tr c khi xóa

t p tin, thì hãy dùng tùy ch n -i (r t d nh , tùy ch n này có nh ng câu l nh

cp, mv ã k trên).

N u dùng câu l nh rm (không có tùy ch n) xóa th m c thì s xu t hi n

thông báo d ng "cannot remove `l4u': Is a directory" (không th xóa b , ây là

th m c). xóa th m c thì c n xóa t t c nh ng t p tin có trong nó, sau ó

xóa b n th n th m c b ng l nh rmdir. Tuy nhiên có th xóa th m c không

r ng cùng v i t t c nh ng t p tin và th m c có trong nó, n u s d ng câu l nh

rm v i tùy ch n -r.

N u ch y l nh rm *, thì s xóa t t c nh ng t p tin có trong th m c hi n

th i. Các th m c con không b ng t i. xóa c t p tin và th m c con c a

th m c hi n th i c n dùng tùy ch n -r k trên. Tuy nhiên c n luôn luôn nh

r ng, trên Linux không có câu l nh ph c h i t p tin sau khi xóa, th m chí c khi

v a xóa xong11. Theo tôi ngh b t k ng i dùng Linux nào c ng có th chia s

v i b n c m giác b m t t p tin "ngay tr c m t". Vì th hãy khi hai l n tr c

khi xóa gì ó và ng quên tùy ch n -i.

11Có m t s cách ph h i t p tin ã xóa trên h th ng t p tin c ext3fs, nh ng chúng ta là nh ng ng i

dùng m i, do ó không xem xét chúng. T t nhiên b n có th tham kh o tài li u HOWTO có trên http:

//www.tldp.org này trong tr ng h p kh n c p.

4.6 Các câu l nh c b n làm vi c v i t p tin và th m c 83

4.6.7 Câu l nh more và less

Câu l nh cat cho phép a ra màn hình ( u ra tiêu chu n) n i dung c a b t k

t p tin này, tuy nhiên r t ít khi l nh cat c s d ng cho m c ích này, và ch

dùng hi n th nh ng t p tin có dung l ng r t nh . Nguyên nhân là n i dung

c a t p tin l n s ngay l p t c ch y qua màn hình và ng i dùng ch th y nh ng

dòng cu i cùng c a t p tin. Vì th cat dùng ch y u theo ch c n ng chính c a

nó, t c là dùng "c ng" các t p tin, còn xem n i dung c a các t p tin v n

b n chúng ta dùng các l nh more và less ho c các trình so n th o khác.

Câu l nh (b l c) more a n i dung c a t p tin ra màn hình theo t ng trang

có kích th c b ng kích th c màn hình (nói chính xác thì là g n b ng, vì có

m t dòng cu i cùng dành cho hi n th tr ng thái (status)). xem trang ti p

theo c n nh n vào phím tr ng <Space> (phím dài nh t trên bàn phím hi n nay).

Nh n phím <Enter> c m t dòng ti p theo. Ngoài <Space> và <Enter> còn

có m t vài phím i u khi n khác, ví d phím <B> quay l i màn hình tr c,

nh ng chúng ta s không li t kê y nh ng phím này ây, và c ng không

a ra danh sách các tùy ch n c a l nh more. Bây gi b n c ch c n nh phím

<Q> dùng thoát ra kh i ch xem c a more, n u không thì b n s ph i nh n

phím <Space> cho n khi h t t p tin (ch ng may n u nó quá dài thì b n s m t

r t nhi u th i gian). T t c các tu ch n c a l nh more b n có th c trong

trang h ng d n man (more(1)) ho c info c a nó.

Ti n ích less là m t trong nh ng ch ng trình c d án GNU phát tri n.

less có t t c các ch c n ng và l nh i u khi n c a more, và có thêm m t vài

s m r ng khác. Ví d , cho phép s d ng các phím i u khi n con tr (< >, < >,

< >, < >, <Home>, <End>, <PgUp>, <PgDown>) di chuy n trong v n b n.

Hãy nh l i, chúng ta ã nói v i u này khi nói v h th ng tr giúp man.

Các l nh more và less cho phép tìm ki m t khóa có trong t p tin ang xem,

trong ó l nh less cho phép tìm ki m theo hai h ng: t trên xu ng d i và

ng c l i. tìm ki m t khóa "string" (m t c m ký t nào ó) thì u tiên c n

nh n "/" chuy n vào ch tìm ki m, sau ó nh p vào "string" vào dòng "/"

cu i màn hình. N u tìm th y t khóa trong t p tin, thì s hi n th o n v n b n

t ng ng sao cho dòng tìm th y n m trên cùng. N u mu n ti p t c tìm ki m

hãy nh n phím <N>, trong less có th dùng t h p phím <Shift>+<N> tìm

ki m theo h ng ng c l i.

4.6.8 Câu l nh tìm ki m find và m u tên t p tin

Còn có m t câu l nh th ng dùng làm vi c v i t p tin trong Linux ó là câu

l nh tìm ki m t p tin find. Câu l nh find có th tìm ki m t p tin theo tên, theo

kích th c, th i gian t o ho c th i gian s a i t p tin và theo các tiêu chí khác.

Cú pháp chung c a câu l nh find có d ng sau:

find [danh_sách_th _m c] tiêu_chí_tìm_ki m

Trong ó tham s "danh sách th m c" xác nh n i tìm ki m t p tin mong mu n.

n gi n nh t là dùng th m c g c "/" làm n i kh i u tìm ki m. Tuy nhiên

trong tr ng h p ó tìm ki m có th kéo dài r t lâu, vì s "l c soát" t t các th

m c k c nh ng h th ng t p tin g n vào, trong ó có th có các th m c m ng

84 Làm quen v i h th ng t p tin ext3fs

(và chuy n gì x y ra n u t c ng truy n th p). Có th làm s kh i l ng

công vi c, n u dùng m t danh sách nh ng th m c, mà t p tin có th n m trong,

thay th cho th m c g c. Ví d :

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

Ph n u c a tiêu_chí_tìm_ki m xác nh xem ch ng trình find ph i

tìm cái gì. Ph n u này là tham s b t u b ng "­", "(", ")", "," ho c "!". T t c

các tham s ng tr c tiêu_chí_tìm_ki m c coi là tên th m c c n "l c

soát". N u không ch ra m t th m c nào, thì tìm ki m s b t u t th m c

hi n th i và i sâu vào trong các th m c con.

Ng i dùng th ng th c hi n tìm ki m theo tên t p tin nh ví d trên,

ây tiêu_chí_tìm_ki m có d ng "­name tên_t p_tin". ch tùy ch n -name

có th s d ng tùy ch n -path, khi ó câu l nh s tìm ki m s t ng ng c a

tên t p tin y bao g m c ng d n ch ra. Ví d , câu l nh:

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

s tìm th y trong th m c hi n th i th m c con l4u/images. Trong ví d

này, ch tên c a t p tin ho c th m c chúng ta s d ng m t "m u tên".

Và b i vì m u tên t p tin không ch s d ng cho câu l nh find mà còn s

d ng cùng v i nhi u câu l nh khác (bao g m c nh ng câu l nh ã nói n:

chmod, chown, chgrp, cp, rm, cat, mv), nên chúng ta c n chú ý và dành

th i gian nghiên c u các quy nh s d ng và vi t "m u tên".

Trong a s tr ng h p m u tên t p tin c t o ra nh các ký t c bi t "*"

và "?". Ký t "*" s d ng thay th cho b t k dòng ký t nào. Trong Linux:

"*" t ng ng v i t t c các t p tin tr nh ng t p tin n.

".*" t ng ng v i t t c nh ng t p tin n (trong ó có th m c hi n th i "."

và th m c m "..").

"*.*" ch t ng ng v i nh ng t p tin và th m c có d u ch m (.) gi a tên

ho c cu i cùng.

"a*p" t ng ng v i anhchup và anhchep.

"*a*" t ng ng v i May và march.

Ký t "?" ch thay th m t ký t b t k , vì th taptin?.txt s t ng ng v i

các tên sau (taptin1.txt, taptin2.txt, taptin9.txt.

Ngoài "*" và "?" trong Linux còn s d ng các d u ngo c vuông ([]) t o "m u

tên". Trong hai d u ngo c này t danh sách các ký t (có th d ng kho ng12)

có th g p. Ví d [xyz]* t ng ng v i t t c nh ng tên t p tin b t u b ng a,

b, c. Còn *[G-K4-7] t ng ng v i nh ng t p tin có tên k t thúc b ng G, H, I,

J, K, 4, 5, 6, 7. Hãy chú ý là không có kho ng tr ng trong c hai ví d k trên.

T t nhiên ây ch a ra nh ng thông tin th t ng n g n v "m u tên" t p

tin và các ký t thay th . B n c có th tìm th y thông tin chi ti t h n v "m u

12interval

4.6 Các câu l nh c b n làm vi c v i t p tin và th m c 85

B ng 4.4: Tiêu chí tìm ki m c a câu l nh find.

Tùy ch n Giá tr

­name m u_tên Tìm t p tin có tên t ng ng v i m u_tên.

­group tên Tìm t p tin thu c v nhóm ch ra.

­size s [c] Tìm t p tin có c b ng s kh i 512 byte 13. N u sau s có ký t

c thì có ngh a là kích th c c tính theo byte (ký t , charater),

ch không ph i theo kh i.

­mtime s _ngày Tìm t p tin c thay i l n cu i cùng tr c s _ngày ch ra.

­newer m u Tìm t p tin c thay i sau khi thay i t p tin có trong m u.

­type d ng_t p_tin Tìm t p tin d ng ch ra. D ng t p tin c xác nh b ng m t trong

các ký t sau: b (thi t b kh i), c (thi t b ký t ), d (th m c), f

(t p tin th ng), p ( ng có tên pipe), ho c l (liên k t m m).

tên" t p tin trong tài li u IBM LPI tutorial b n d ch ti ng Vi t do nhóm c ng tác

c a vnoss.org (trong ó có tôi) th c hi n có trên http://sourceforge.net/

projects/vnoss.

Còn bây gi sau khi ã làm quen v i "m u tên" t p tin, chúng ta quay tr l i

v i câu l nh find và nói chi ti t h n v nh ng kh n ng có th c a tiêu chí tìm

ki m. M t vài ví d n gi n c a tiêu chí tìm ki m có trong b ng 4.4.

Nh ng tiêu chí tìm ki m n gi n khác b n có th tìm th y trong trang man

c a câu l nh find ho c trong tài li u LPI tutorial nói trên. C n nói r ng t

nh ng tiêu chí n gi n có th t o ra nh ng tiêu chí ph c t p h n nh các phép

lôgíc and, or ho c phép ph nh (ký hi u là d u ch m than "!"). Ví d , n u b n

mu n tìm t t c nh ng t p tin có "ph n m r ng"14 là .odt và .tex, thì có th

dùng tiêu chí tìm ki m nh sau: (-name *.tex -or -name *.odt). Có th

s d ng k t h p nh v y m t s l ng b t k các tiêu chí k c tiêu chí ph c t p.

N u không ch ra phép lôgíc c th , thì coi nh dùng and, t c là có th dùng m t

trong hai cách ghi: (-name *.tex -and -name *.odt) ho c (-name *.tex

-name *.odt). N u ch dùng m t phép lôgíc and ho c !, thì có th b i d u

ngo c, còn phép lôgíc or và các tiêu chí ph c t p h n thì c n d u ngo c. Tr c

d u ngo c c n t m t d u g ch chéo ng c (\), còn sau d u ngo c c n t m t

kho ng tr ng. Ví d , n u b n c mu n tìm th m c theo tên c a nó thì có th

dùng l nh:

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

ho c dùng tiêu chí ph c t p:

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

Trong ví d sau chúng ta tìm t p tin theo tiêu chí nh sau: ho c tên t p tin

có "ph n m r ng" *.tex, ho c kích th c t p tin nh h n 200KB.

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

14 trong d u ngo c vì chúng ta bi t r ng trong Linux không có khái ni m ph n m r ng t p tin.

86 Làm quen v i h th ng t p tin ext3fs

Trong ví d cu i cùng này hãy chú ý r ng tr c giá tr kích th c t p tin có

d u "­". D u này có th s d ng v i b t k tham s có giá tr s nào trong tiêu chí

tìm ki m c a câu l nh find. Có ngh a r ng c n tìm t p tin có giá tr c a tham

s nh h n s a ra. T ng t d u "+" có ngh a là c n tìm t p tin có giá tr c a

tham s l n h n s a ra. N u không có d u "+" và d u "­" thì tìm t p tin có giá

tr c a tham s b ng s a ra.

k t thúc ph n v câu l nh find này, c n nói thêm r ng sau tiêu chí tìm

ki m có th a ra ngay thao tác x lý t t c nh ng t p tin tìm th y. Ví d n

gi n nh t là thao tác ­print.

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

dùng a ra màn hình danh sách tên c a t t c nh ng t p tin tìm th y cùng

v i ng d n y n t p tin. Thao tác này c dùng theo m c nh, t c là

luôn luôn c dùng khi không ch ra thao tác nào nh trong các ví d tr c ây.

M t ví d khác là thao tác -exec cmd {}. Trong ó cmd là m t câu l nh b t

k nào ó c a h v shell. Trong tr ng h p này s th c hi n câu l nh cmd i

v i t t c nh ng t p tin tìm th y. Sau cmd {} là d u ch m ph y (;) có d u g ch

chéo ng c "\" tr c (chúng ta s hi u rõ h n tác d ng c a d u g ch chéo ng c

trong ch ng ngay sau).

Ví d , n u b n mu n xóa t t c nh ng t p tin trong th m c hi n th i mà

ng i dùng không " ng" n trong vòng 365 ngày ho c lâu h n, thì hãy dùng

câu l nh sau:

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

ch -exec có th dùng -ok, khi ó tr c khi th c hi n câu l nh cmd cho m i

t p tin tìm th y h th ng s h i l i xem b n có mu n th c hi n th t không.

Nói chung câu l nh cmd là m t câu l nh r t m nh, có ích và là m t công c

tìm ki m t t trong h th ng t p tin. ng nhiên là ch a ph i t t c nh ng kh

n ng c a l nh này c li t kê ra ây. Hãy tìm hi u trong trang tr giúp man

ho c m t cu n sách dày c p nào ó v Linux. Và hãy c n th n khi s d ng nh ng

kh n ng c a câu l nh này nh g i nh ng câu l nh khác th c hi n trên t t

c nh ng t p tin tìm th y. Hãy nh r ng s thay i th ng là m t chi u.

4.6.9 Câu l nh split

ôi khi chúng ta c n chia m t t p tin l n thành t ng ph n nh . L y ví d b n

có m t t p tin phim d ng mpg l n, kho ng 1,2GB. Và b n mu n sao chép t p tin

này qua m t máy khác nh ng l i không có m t k t n i m ng. Và c ng không có

ghi DVD mà ch có ghi CD. Nh ng t p tin này không th n m g n trên m t

CD (dung l ng kho ng 700MB). Do ó có th chia t p tin này thành hai ph n

m i ph n nh h n 700MB sau ó s g p chúng l i. làm c vi c này chúng

ta có th s d ng l nh split.

Câu l nh split cho phép sao chép t p tin b ng cách chia chúng ra thành

t ng ph n nh theo kích th c ã nh. Tham s c a l nh này là tên c a t p tin

ban u và ph n u (prefix) tên c a các t p tin s t o ra. Các t p tin thu c

s có tên g m ph n u (prefix) này và hai ch thêm vào chúng không trùng

4.6 Các câu l nh c b n làm vi c v i t p tin và th m c 87

nhau: `aa', `ab', `ac', `ad', v.v. . . (không có kho ng tr ng và các d u ch m gi a ph n

u và nh ng ch cái này). N u không a ra ph n u, thì theo m c nh s

d ng `x', t c là s thu c các t p tin `xaa', `xab', `xac', `xad' v.v. . .

Ngoài các tham s có th thêm vào tùy ch n -b xác nh kích th c c a

các t p tin t o ra (tính theo byte). Sau -b là m t s và sau ó là m t ch cái: k

(kích th c tính theo KB) ho c m (tính theo MB). N u không a ra tùy ch n này

thì theo m c nh kích th c c a t p tin thu c b ng 1MB. gi i quy t bài

toán ã a lúc u thì c n ch y l nh:

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

Sau ó dùng ch ng trình ghi a sao chép hai t p tin thu c (phimaa, phimab)

lên hai a CD-R(W), r i a chúng (có ngh a là dùng l nh cp) lên máy th hai

vào m t th m c nào ó. Cu i cùng ph c h i t p tin ban u b ng l nh:

[user]$ cat phim* > phim.mpg

Sau ó có th xóa i các t p tin phimaa, phimab.

4.6.10 So sánh các t p tin và l nh patch

Có th b n không ý nh ng khi làm vi c v i máy tính công vi c so sánh n i

dung c a hai t p tin khác nhau g p m t cách th ng xuyên. Là vì có th sao

chép t p tin m t cách d dàng, r i sau ó quên luôn là t p tin nào m i h n ho c

t t h n. Vì th nh ng công c dùng so sánh t p tin là c n thi t và t t nhiên

là có trong Linux. Công c n gi n nh t trong s này là l nh cmp (compare).

L nh này ch so sánh n i dung c a hai t p tin theo t ng byte:

[user]$ cmp t p_tin1 t p_tin2

N u hai t p tin hoàn toàn trùng nhau, thì l nh hoàn thành công vi c mà

không a ra thông báo gì, còn n u chúng khác nhau thì a ra s th t c a

dòng và byte ch có s khác nhau.

T t nhiên thông tin mà l nh cmp a ra h i ít có th quy t nh ch n t p

tin nào trong s hai t p tin này, t p tin nào quan tr ng h n. Vì th còn có th s

d ng câu l nh diff bi t c s khác nhau gi a hai t p tin ây là gì. Ch

c n cho câu l nh này bi t tên hai t p tin mà b n mu n so sánh. Ví d :

teppi82@ThinhQuyen:~> diff ChangeLog ChangeLog2

1c1

< 11 tháng 09 n m 2006, phiên b n 0.9.3

---

> 18 tháng 09 n m 2006, phiên b n 0.9.3

Thông báo v s khác nhau s hi n th trên màn hình ( u ra tiêu chu n).

Chúng ta có th chuy n h ng báo cáo này vào m t t p tin:

88 Làm quen v i h th ng t p tin ext3fs

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

teppi@ThinhQuyen:~> more ChangeLog.diff

1c1

< 11 tháng 09 n m 2006, phiên b n 0.9.3

---

> 18 tháng 09 n m 2006, phiên b n 0.9.3

ánh giá phiên b n c a m t t p tin thì thu n ti n h n n u s d ng câu

l nh sdiff. K t qu so sánh khi này s hi n th d ng hai c t, phân cách nhau

b i các kho ng tr ng. N u hai c t có cùng s th t khác nhau, thì chúng s cách

nhau b i m t d u g ch th ng ng "|". N u m t dòng nào ó ch có trong t p tin

th nh t thì nó c ánh d u b ng m t ký t "<", n u không có trong t p tin

th hai ­ m t ký t ">".

Còn có câu l nh diff3 cho phép so sánh 3 t p tin m t lúc. Nh ng th ng s

d ng nh t trên các h th ng UNIX và Linux v n là câu l nh diff. Có th d

dàng hi u i u này n u bi t r ng k t qu báo cáo c a diff v s khác nhau gi a

hai t p tin có th s d ng cho câu l nh patch. Thông th ng kh n ng này c

dùng khi phân ph i b n c p nh t c a ch ng trình ng d ng. L y ví d n gi n

("m t cách ngu ng c"), m t ch ng trình ng d ng nào ó c a cho ng i

dùng d ng t p tin xvnkb-0.2.8.c, có ch a mã ngu n c a ch ng trình này

trên ngôn ng C. Sau ó nhà phát tri n s a các l i và c p nh t ch ng trình r i

l u mã ngu n trong m t t p tin khác xvnkb-0.2.9.c. Bây gi c n a nh ng

thay i ã làm n cho ng i dùng. T t nhiên là ch c n g i cho ng i dùng

nh ng thay i, t c là k t qu báo cáo t o ra b ng l nh:

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

Nh v y t t nhiên là kích th c c a t p tin xvnkb.diff s nh h n nhi u so

v i xvnkb-0.2.9.c, s ti t ki m c dung l ng truy n t i qua m ng Internet

n u ch g i xvnkb.c.diff. Trong tr ng h p ch ng trình ng d ng l n thì s

ti t ki m này là ánh k . Tuy nhiên ti t ki m cho ng i dùng không ph i là ng

d ng chính. Mà s phát tri n c a ng d ng mã m m i là i m chính. Chúng ta

nh r ng m t ng d ng mã m c phát tri n b i c m t nhóm các nhà phát

tri n và c ng ng. M i nhà phát tri n s óng góp o n mã c a mình b ng

chính cách này.

Tuy nhiên sau khi nh n c t p tin *.diff thì c n ph i a nh ng s a i

ã làm vào phiên b n hi n th i. Bài toán này là do patch gi i quy t. ã có

xvnkb-0.2.8.c và xvnkb.c.diff, ch c n ch y l nh:

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

s thu c t p tin xvnkb-0.2.9.c.

4.7 Các câu l nh l u tr và nén t p tin

Khi s d ng Linux r t có th b n s ít làm vi c v i ph n l n các l nh h v

shell, vì ã có nh ng ch ng trình ti n ích nh Midnight Commander và các

4.7 Các câu l nh l u tr và nén t p tin 89

môi tr ng giao di n ho nh KDE, GNOME. Và các ti n ích và môi tr ng

ó giúp b n làm vi c d dàng v i các t p tin nén s nói t i. Nh ng là ng i

dùng Linux th c s b n c ng nên bi t nh ng câu l nh nén và gi i nén làm vi c

trong h v shell. Chúng s giúp b n làm vi c nhanh h n v i nh ng t p tin nén

th ng g p trong Internet.

Ph ng ti n chính làm vi c v i các t p tin nén trong UNIX và Linux là

hai ch ng trình tar và gzip. M c dù không ai c m b n s d ng các ch ng

trình arj, pkzip, lha, rar v.v. . . Nh ng truy n th ng c a Unix ó là tar và gzip

và ph n l n mã ngu n (và không ch mã ngu n) c a các ch ng trình ng d ng

c phân ph i d ng này. Vì th bi t cách làm vi c v i tar và gzip ó là danh

d c a b t k ng i dùng Linux nào, c ng gi ng nh samurai ph i bi t s d ng

ki m v y.

4.7.1 Ch ng trình tar

Nh ng ng i dùng ã quen v i nh ng ch ng trình nén d ng winzip ( a t t

c t p tin vào m t "kho" r i sau ó nén chúng) thì có th s h i "T i sao l i c n

hai ch ng trình?". Chúng ta s tìm th y câu tr l i cho câu h i này sau khi c

xong hai ph n t i ây, và s th y ây không ph i là m t y u i m c a Linux mà

còn là i m m nh n u bi t cách k t h p "nh p nhàng" hai ch ng trình này.

Tên ch ng trình tar có ngh a là tape archiver, t c là ch ng trình này

không nén các d li u mà ch k t h p chúng vào m t t p tin chung sau ó ghi t p

tin này lên cách b ng nh (tape) th ng dùng l u tr thông tin. N u mu n

t o t p tin này trên a c ng, thì c n s d ng l nh tar v i tùy ch n f, sau ó ch

ra tên t p tin. Ch ng trình tar có 8 tùy ch n khác v i nh ng tùy ch n còn l i

ch khi ch y l nh tar thì c n ph i a ra m t trong s 8 tùy ch n này. Tám tùy

ch n này xác nh các ch c n ng chính c a ch ng trình (xem b ng 4.5).

B ng 4.5: Nh ng tùy ch n chính c a tar

Tùy ch n Ý ngh a

-A, --catenate, --concatenate Thêm t p tin vào kho ã có.

-c, --create T o kho m i.

-d, --diff, --compare Tìm s khác nhau gi a các t p tin trong kho

và trên h th ng t p tin (so sánh).

--delete Xóa t p tin kh i kho (không dùng cho b ng

ghi).

-r, --append Thêm t p tin vào cu i kho.

-t, --list a ra danh sách các t p tin trong kho.

-u, --update Ch thêm nh ng t p tin m i h n b n sao

trong kho (c p nh t kho).

-x, --extract, --get L y t p tin ra kh i kho ("gi i phóng").

N u b n làm vi c v i các t p tin kho trên a ch không ph i v i b ng ghi

( ây là a s tr ng h p s d ng máy tính cá nhân), thì nh t nh ph i dùng

tùy ch n f. Nh ng tùy ch n khác (tr 8 tùy ch n b t bu c k trên) là không c n

thi t, chúng ch dùng thêm vào các ch c n ng ph c th nào ó. Ví d , tùy

ch n v b t bu c ch ng trình ph i a ra danh sách các t p tin a vào kho.

90 Làm quen v i h th ng t p tin ext3fs

Có th li t kê các tu ch n m t ch cái (c, f, . . . ) li n nhau và d u g ch ngang

(­) phía tr c có th dùng nh ng không nh t thi t ph i có. Chúng ta s th y

ví d t i ây. Tôi s không a ra mô t t t c các tùy ch n c a l nh tar, mà ch

cho bi t m t s dòng l nh c n thi t nh t làm vi c v i các kho t p tin. Nh v y

s có ích h n trong th i gian này.

t o m t kho t p tin tar t vài t p tin c n s d ng m t trong hai l nh sau:

[user]$ tar -cf tên_kho t p_tin1 t p_tin2

[user]$ tar cf tên_kho t p_tin1 t p_tin2

trong ó tùy ch n c (t bây gi tôi s b i d u g ch ngang "­" phía tr c tu

ch n) cho bi t ch ng trình c n t o ra (create) kho t p tin, còn tu ch n f cho

bi t là kho này ph i c t o d ng t p tin có tên tên_kho phía sau tùy ch n.

Trong ph n tên t p tin mu n l u vào kho có th s d ng các "m u tên", bao

g m c các ký t thay th n gi n nh "*" và "?". Nh vào tính n ng này có th

l u vào kho ngay l p t c nhi u t p tin b ng m t câu l nh r t ng n. Ví d , t o

ra kho ch a t t c các t p tin c a m t th m c con c a th m c hi n th i, gi s

projects, thì ch c n g i l nh:

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

ho c th m chí còn n gi n h n:

[user]$ tar cf projects.tar projects

Câu l nh này s t o ra kho projects.tar trong th m c hi n th i. Kho này

không ch l u t t c nh ng t p tin có trong th m c projects mà còn l u t t

c nh ng th m c con c a nó cùng v i t t c nh ng t p tin n m trong chúng

(chúng ta dùng thu t ng "l u quy", ho c "l u toàn b c u trúc th m c").

Trong t p tin kho c u trúc th m c c a projects v n c gi nguyên.

C n chú ý là trong ví d trên n u ch "*" t "*.*" thì s ch l u nh ng t p

tin n m tr c ti p trong th m c projects và nh ng th m c con có d u ch m

trong tên (ít g p), nh ng th m c con còn l i c a projects s không c l u.

C ng trong ví d này n u không ch ra tên th m c thì s l u t t c các t p tin

và th m c con c a th m c hi n th i. N u ch y l nh sau:

[user]$ tar cvf tên_kho ./.*

thì không ch l u t t c các t p tin và th m c con c a th m c hi n th i, mà

còn l u nh ng t p tin c a th m c m .

Bây gi b n c ã bi t cách t o kho t p tin. l y (gi i phóng) t t c t p tin

ra kh i kho, c n dùng l nh:

[user]$ tar xvf tên_kho

Hi n th danh sách các t p tin trong kho b ng l nh:

[user]$ tar tvf tên_kho | less

Gi i phóng m t t p tin nào ó b ng:

4.7 Các câu l nh l u tr và nén t p tin 91

[user]$ tar xvf tên_kho tên_t p_tin

Ch ng trình tar là ph ng ti n thu n l i t o các b n sao l u tr (sao

l u) c a t p tin. T t nhiên còn có nh ng ti n ích sao l u chuyên dùng khác,

nh ng c khi b n c không bi t nh ng ti n ích này, thì v n có th sao l u d

li u quý báu c a mình lên a m m b ng:

[user]$ tar Mcvf /dev/fd0 th _m c

r i ph c h i th m c b ng l nh:

[user]$ tar Mxpvf /dev/fd0

Ho c n gi n h n, t o m t t p tin kho ch a:

[user]$ tar cvf tên_kho th _m c

r i sao chép t p tin tên_kho lên m t thi t b l u tháo r i ho c th m c trên

m ng nào ó (CD, DVD, flash, ftp,. . . ). Ph c h i l i b ng l nh:

[user]$ tar xpvf tên_kho

N u có khó kh n khi s d ng l nh tar, hãy c tr giúp man c a nó ho c c

nh ng thông tin hi n ra khi ch y tar v i tùy ch n --help

4.7.2 Ch ng trình gzip

M c dù ch ng trình tar t o ra kho t p tin, nh ng nh ã nói trên, nó không

nén kho này l i mà ch k t h p các t p tin riêng r vào m t t p tin chung.

nén t p tin này l i th ng s d ng câu l nh gzip. Tr ng h p n gi n nh t

c a l nh này trông nh sau:

[user]$ gzip tên_t p_tin

Trên dòng l nh có th a ra cùng lúc vài tên ho c "m u tên" t p tin. Nh ng

khi này m i t p tin s c nén riêng r , ch không t o m t t p tin chung.

gi i nén t p tin hãy dùng m t trong hai câu l nh sau:

[user]$ gzip -d tên_t p_tin

ho c

[user]$ gunzip tên_t p_tin

T p tin ban u sau khi nén s b xóa, ch còn l i t p tin ã nén. Còn khi

gi i nén thì t p tin nén s b xóa, ch còn l i t p tin bình th ng. Chúng ta có

c m giác nh t p tin c " a ra, a vào" m t kho. Nh ng ó là nh ng t p tin

hoàn toàn khác nhau! Hãy s d ng l nh ls -i ki m tra ch s inode c a

chúng.

Bây gi chúng ta s li t kê m t vài tùy ch n có ích c a ch ng trình gzip vào

b ng 4.6.

B i vì ch ng trình gzip không có kh n ng l u nhi u t p tin vào trong m t

t p tin, nên th ng dùng gzip nén nh ng kho t p tin do tar t o ra. H n n a

còn có th s d ng "k t h p" hai ch ng trình này. Chúng ta s xem xét v n

này ngay sau.

92 Làm quen v i h th ng t p tin ext3fs

B ng 4.6: Nh ng tùy ch n chính c a ch ng trình gzip

Tùy ch n Ý ngh a

-h, --help Hi n th tr giúp ng n g n v cách s d ng ch ng trình.

-l, --list a ra tên t p tin n m trong t p tin nén, kích th c c a nó

và m c nén (tính theo %).

-L, --license Hi n th s phiên b n và b n quy n c a ch ng trình.

-N, --name L u ho c ph c h i tên ban u và th i gian t o t p tin.

-n, --no-name Không l u ho c không ph c h i tên ban u và th i gian t o

t p tin.

-q, --quiet B i nh ng c nh báo.

-r, --recursive Nén toàn b ( quy) th m c. S d ng trong tr ng h p có

a ra "m u tên" t p tin.

­S .suf, --suffix Thêm ph n sau (suffix) vào tên t p tin nén. Theo m c nh

.suf s d ng ph n sau là gz. Chú ý: n u s d ng ph n sau khác

"gz" thì khi gi i nén ch ng trình s a ra thông báo l i

d ng "unknown suffix ­ ignored" (ph n sau không bi t ­ l

i).

-t, --test Th (ki m tra) tính nguyên v n c a t p tin nén.

-v, --verbose a ra các thông báo ph trong khi làm vi c.

-V, --version Hi n th phiên b n c a ch ng trình.

-1, --fast Nén nhanh (m c nén th p).

-9, --best M c nén m nh h n. Kích th c t p tin thu c nh h n

nh ng t t nhiên là s lâu h n.

4.7.3 Ch ng trình bzip2

Trong th i gian g n ây ng i dùng Linux th ng s d ng thêm m t ch ng

trình nén n a thay th cho gzip ­ ch ng trình bzip2. Ch ng trình này

nén m nh h n (có m c nén cao h n, t o ra các t p tin nh h n) và làm vi c

nhanh h n. Các b n phân ph i Linux m i ã có cài t s n ch ng trình này.

Ch ng trình bzip2 làm vi c t ng t nh gzip, t c là thay th m i t p tin

a vào dòng l nh b ng phiên b n ã nén c a t p tin ó, nh ng thêm vào ph n

cu i là .bz2. T p tin nén có th i gian s a i, quy n truy c p và có th c ch s

h u nh t p tin ban u. Do ó có kh n ng ph c h i nh ng tính ch t này c a

t p tin khi gi i nén.

Trong m t s tr ng h p t p tin nén có th còn l n h n theo kích th c so

v i t p tin ban u. i u này có th x y ra i v i nh ng t p tin có kích th c

nh h n 100 byte, vì c ch nén s d ng ph n u (head) có kích th c 50 byte.

Nh ng t p tin g m m t chu i ng u nhiên (random) c a các ký t , trong ó có các

t p tin nén, thì kích th c c a t p tin t ng lên kho ng 0,5%.

Câu l nh bunzip2 ho c bzip2 ­d gi i nén t p tin ch ra. N u t p tin này

không ph i do bzip2 t o ra thì ch ng trình s không gi i nén mà a ra l i

c nh báo. Khi gi i nén bzip2 s oán tên c a t p tin s t o ra theo quy lu t sau:

tên_t p_tin.bz2 thay th b ng tên_t p_tin

tên_t p_tin.bz thay th b ng tên_t p_tin

4.7 Các câu l nh l u tr và nén t p tin 93

tên_t p_tin.tbz2 thay th b ng tên_t p_tin.tar

tên_t p_tin.tbz thay th b ng tên_t p_tin.tar

tên_t p_tin khác thay th b ng tên_t p_tin.out.

Ví d :

teppi82@ThinhQuyen:~> bzip2 2

teppi82@ThinhQuyen:~> mv 2.bz2 2.sj

teppi82@ThinhQuyen:~> bunzip2 2.sj

bunzip2: Can't guess original name for 2.sj -- using 2.sj.out

Các tu ch n c a bzip2 r t gi ng v i tùy ch n c a gzip nh ng không ph i

t t c . Tôi s a ra m t danh sách ng n nh ng tùy ch n c n thi t nh t trong

b ng 4.7.

B ng 4.7: Nh ng tùy ch n chính c a ch ng trình bzip2

Tùy ch n Ý ngh a

-d, --decompress B t bu c gi i nén t p tin. Tùy ch n này c n thi t vì trên th c

t bzip2, bunzip2 và bzcat ch là m t ch ng trình. M i

ch ng trình tu theo "ph n m r ng" t p tin mà quy t nh

xem s làm gì v i t p tin ó. Tùy ch n -d b i c ch này và

b t bu c ch ng trình ph i gi i nén t p tin ã ch ra.

-z, --compress B t bu c nén t p tin (xem trên).

-t, --test Th (ki m tra) tính nguyên v n c a t p tin nén.

-f, --force Ghi chèn lên t p tin ã có. Theo m c nh bzip2 không ghi

chèn lên t p tin ã có trên a. N u mu n ghi chèn thì hãy dùng

tùy ch n này.

-k, --keep Gi gìn (không xóa) t p tin ban u khi nén ho c gi i nén.

-s, --small Gi m yêu c u i v i dung l ng b nh c n s d ng b ng

cách gi m t c nén. Ch nên dùng tùy ch n này trên nh ng

máy tính c có ít b nh (8MB ho c ít h n). Có l chúng ta

không bao gi c n n tùy ch n này ho c ít nh t là hy v ng

nh v y.

-q, --quiet B i nh ng c nh báo ít ý ngh a.

-v, --verbose a ra các thông báo ph trong khi làm vi c (ch có ý ngh a

chu n oán).

­L, --license, ­V, Hi n th s phiên b n và b n quy n c a ch ng trình.

--version

Tham s ng sau hai d u g ch ngang (--) và m t kho ng tr ng c coi là

tên t p tin, dù tham s có m t d u g ch ngang u. Ví d :

[user]$ bzip2 -- -tên_t p_tin

Bây gi ã n lúc chúng ta h c cách k t h p tar v i hai câu l nh gzip và

bzip2 làm vi c nhanh và có hi u qu h n.

94 Làm quen v i h th ng t p tin ext3fs

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

T t nhiên không ai ng n c n b n s d ng riêng r các câu l nh tar v i gzip và

bzip2, nh ng s nhanh h n n u chúng ta ch c n s d ng m t câu l nh có th

t o ra m t t p tin nén, hay gi i nén m t t p tin. Hãy t ng t ng b n nh n c

m t t p tin, ví d xvnkb-0.2.9.tar.gz. gi i nén t p tin này thông th ng

b n c n dùng hai câu l nh sau ti p n i nhau:

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

[user]$ tar xvf xvnkb-0.2.9.tar

Nh ng trong s nh ng tùy ch n c a ch ng trình tar còn có m t tu ch n

c bi t z cho phép gi i nén t p tin b ng ch ng trình gzip (th c hi n vai trò

c a l nh th nh t trong hai l nh k trên). gi i nén t p tin k trên ch c n

dùng m t câu l nh nh sau:

[user]$ tar xzvf xvnkb-0.2.9.tar.gz

K t qu thu c là hoàn toàn nh trên tr m t i m: trong tr ng h p dùng

2 câu l nh thì trên a s gi l i t p tin trung gian (xvnkb-0.2.9.tar). Nh

v y cách th hai còn có m t u i m n a là không gi l i các t p tin trung gian,

ng i dùng không c n ph i gõ thêm m t l nh xoá t p tin.

Vi c t o t p tin b ng cách s d ng k t h p tar và gz c ng c th c hi n

b ng tùy ch n z:

[user]$ tar czvf tên_t p_tin.tar.gz th _m c

C n chú ý r ng trong tr ng h p này ch ng trình s không t ng thêm ph n

uôi .gz vào tên c a t p tin thu c. Do ó c n t tên rõ ràng cho nó cùng v i

ph n uôi .tar.gz.

S d ng k t h p tar và bzip2 là hoàn toàn t ng t , nh ng c n dùng tùy

ch n j c a tar thay cho tu ch n z. T c là, gi i nén t p tin b ng l nh:

[user]$ tar xjvf tên_t p_tin.tar.bz2

và t o t p tin nén b ng:

[user]$ tar cjvf tên_t p_tin.tar.bz2 th _m c

Tôi ngh r ng nh ng thông tin k trên ã làm vi c m t cách có hi u

qu v i các ch ng trình nén tar, gzip và bzip2. có thêm thông tin hãy tìm

hi u trang tr giúp man ho c các tài li u HOWTO t ng ng.

k t thúc ph n v nh ng ch ng trình làm vi c v i t p tin nén này, tôi

mu n nói thêm r ng, n u "không may" b n nh n c m t t p tin d ng *.zip

hay *.rar thì c ng ng v i ch y sang nh m t máy s d ng Windows gi i

nén. B n có th th các ch ng trình unzip và unrar có trên h th ng Linux c a

mình. Cách s d ng nh ng l nh này h t s c n gi n, ch c n a vào dòng l nh

tên c a t p tin. N u có gì khó kh n hãy th "unzip ­help" ho c "unrar ­help".

Tôi ch c ch n là b n s t gi i quy t c v n . Và ng quên ch t o ra các

t p tin nén b ng tar, gzip ho c bzip2 vì b n là ng i dùng Linux!

4.8 T o và g n các h th ng t p tin 95

4.8 T o và g n các h th ng t p tin

Trong nh ng ph n tr c chúng ta ã c p ng n g n m t s câu l nh chính

làm vi c v i nh ng h th ng t p tin ã nh d ng s n. Bây gi chúng ta s d ng

l i v n làm sao t o ra h th ng t p tin và cách thay i nó.

Cây th m c c a Linux c t o ra t nh ng "cành" riêng r t ng ng v i

các a khác nhau. Th ng nói là cây th m c c t o thành t các h th ng

t p tin riêng. Nói nh v y vì trong UNIX (và Linux) không có khái ni m " nh

d ng a" mà s d ng khái ni m "t o h th ng t p tin". Khi chúng ta có m t

a l u m i, ví d a c ng, chúng ta c n t o trên a này h th ng t p tin. T c

là m i a c t t ng ng v i h th ng t p tin riêng. có th s d ng h

th ng t p tin này ghi các t p tin, thì u tiên c n k t n i nó và cây th m c

chung (chúng ta s d ng thu t ng "g n", mount). Nh v y là có th nói g n h

th ng t p tin ho c g n a l u cùng v i các h th ng t p tin có trên nó.

Còn c n ph i nói thêm r ng thông th ng a c ng c chia thành các phân

vùng, nh t là i v i nh ng a m i s n xu t g n ây có dung l ng l n t vài

ch c n vài tr m GB. Vi c t o nh ng phân vùng nh v y giúp th c hi n d

dàng các thao tác nh : sao l u, xác nh quy n truy c p, ng th i t ng hi u

su t làm vi c và làm gi m kh n ng m t thông tin do ch ng trình gây ra. Vì

th ti p theo chúng ta s nói v t o h th ng t p tin trên m t phân vùng, nh ng

a không b chia có th coi là m t phân vùng.

Còn m t i m n a c ng c n nói n là Linux có th làm vi c v i nhi u d ng

h th ng t p tin khác nhau. Nh ng h th ng t p tin g c c a nó là "h th ng t p

tin m r ng" (extfs) phiên b n 2 và 3. Ngoài hai h th ng t p tin này Linux còn

có th làm vi c v i các "phiên b n" khác nhau c a h th ng t p tin FAT (FAT16

và FAT32), h th ng t p tin ISO9660 s d ng ghi thông tin trên CD-ROM và

các h th ng t p tin khác (k c NTFS15). T c là khi t o và g n các h th ng t p

tin c n luôn luôn nh r ng d ng h th ng t p tin trên các a l u khác nhau có

th không gi ng nhau.

u tiên chúng ta s xem xét tr ng h p c n t o h th ng t p tin trên m t

phân vùng nào ó ( ã có) c a a. Ví d h th ng t p tin có d ng ext3fs. T o h

th ng t p tin d ng ext3fs có ngh a là t o trên phân vùng này c a a m t siêu

kh i (superblock), m t b ng các mô t inode, và các kh i d li u. Th c hi n t t

c nh ng vi c này b ng l nh mkfs16. Trong tr ng h p n gi n nh t ch c n

ch y l nh sau:

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

T t nhiên là c n thay th /dev/hda2 b ng tên c a phân vùng trên máy c a b n.

Hãy c n th n khi vi t tên phân vùng, n u ghi nh m b n s b m t d li u. N u

b n mu n t o h th ng t p tin trên a m m thì c n ch y:

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

15S h tr c ã t t, tuy nhiên s h tr ghi lên NTFS ch a th t hoàn h o.

16Trên các b n phân ph i Linux m i còn có th s d ng các câu l nh mkfs.ext2, mkfs.ext3 và các câu l nh

t ng t . N u dùng chúng thì ch c n b i ph n -t ext3 ho c -t ext2.

96 Làm quen v i h th ng t p tin ext3fs

Có th nói r ng chúng ta ã " nh d ng a m m", nh ng c n bi t là v i h th ng

t p tin ext3fs thì b n không c c a m m này trên DOS ho c Windows (n u

không dùng ch ng trình ho c driver c bi t). t o ra nh ng a m m có th

c trên DOS và Windows c n dùng tùy ch n -t v i giá tr vfat ho c nh ng ti n

ích c bi t khác. N u không a ra tùy ch n -t thì s dùng d ng h th ng t p

tin m c nh (hi n nay là phiên b n c c a ext ­ ext2fs).

Sau khi th c hi n câu l nh mkfs, s t o ra h th ng t p tin d ng ext3fs trong

phân vùng ch ra. Trong h th ng t p tin m i s t ng t o ra m t th m c v i

tên lostfound+. Th m c này c ch ng trình fsck dùng trong nh ng tr ng

h p kh n c p, vì v y ng xóa nó. b t u làm vi c v i h th ng t p tin m i,

u tiên c n k t n i (g n) nó vào cây th m c chung b ng l nh mount.

Ph i có ít nh t hai tham s cho câu l nh mount: thi t b (device, tên phân

vùng) và i m g n (mount point). i m g n là m t th m c ã có trong cây th

m c, và dùng làm "th m c g c" i v i h th ng t p tin g n vào (gi ng nh nút

n i gi a thân cây và cành cây). Ví d , câu l nh:

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

s g n h th ng t p tin c a phân vùng /dev/hda10 vào th m c /mnt/diaC.

C n ph i có th m c /mnt/diaC trong cây th m c. N u ch a có hãy t o ra

b ng l nh mkdir.

C n chú ý là sau khi g n h th ng t p tin vào th m c /mnt/diaC, thì ng i

dùng không còn truy c p c t i n i dung (bao g m c thông tin v ch s h u

c và quy n truy c p t i chính b n thân th m c) c a th m c này n a. N i

dung này s ch "quay tr l i" khi ng i dùng b g n (unmount) h th ng t p tin

ra kh i th m c. N i dung c c a th m c không b hu , b xóa, mà ch t m th i

b gi u i. Vì th t t nh t là dùng các th m c r ng ã chu n b s n t tr c

làm " i m g n" (vì th mà trong tiêu chu n FHS có c p n th m c /mnt,

hãy xem b ng 4.1).

D ng n gi n nh t trong ví d trên c a l nh mount ch làm vi c v i i u

ki n t t c nh ng tham s còn thi u có th tìm th y trong t p tin /etc/fstab.

N u không có t p tin ó (ch khi nào b n c tình ho c vô tình xóa) ho c trong

t p tin không có nh ng d li u c n thi t, thì c n s d ng d ng y c a l nh

mount, nh sau:

[root]# mount -t d ng_httt thi t_b ng_d n

trong ó d ng_httt xác nh d ng h th ng t p tin trên thi t_b (phân vùng),

còn ng_d n xác nh i m g n.

T p tin c u hình /etc/fstab ch y u dùng g n t ng các h th ng t p

tin trong quá trình kh i ng Linux. M i dòng c a t p tin này ch a thông tin v

m t h th ng t p tin và g m 6 vùng phân cách nhau b i các kho ng tr ng17:

Tên thi t b (phân vùng). Có th s d ng tên thi t b có trên máy (ví d

/dev/hda10), c ng nh tên c a h th ng t p tin m ng NFS (ví d Thin-

hQuyen:/home/nhimlui ­ th m c /home/nhimlui trên máy có tên Thin-

hQuyen).

17 ti n c các vùng th ng s p cho th ng hàng, nh ng i u ó là không nh t thi t.

4.8 T o và g n các h th ng t p tin 97

i m g n. Tên y bao g m c ng d n c a th m c s g n t p tin

vào.

D ng h th ng t p tin.

Các tu ch n g n. Theo m c nh là rw ( c và ghi).

M c dump. Vùng này c ch ng trình sao l u dump s d ng. N u

h th ng t p tin c n c sao l u thì ây ph i có s 1, n u không ­ s 0.

Có th có các giá tr khác, hãy xem trang man c a dump.

Th t u tiên ki m tra h th ng t p tin b ng câu l nh fsck. H th ng

t p tin v i giá tr nh h n s c ki m tra tr c. N u b ng nhau thì s

ki m tra song song (t t nhiên n u có th ).

Hi n nay Linux h tr các h th ng t p tin sau: minix, ext, ext2, ext3, xia,

msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs18. ch d ng h

th ng t p tin trong vùng "d ng h th ng t p tin" và sau tùy ch n -t c a l nh

mount có th t giá tr auto. Trong tr ng h p ó câu l nh mount th t xác

nh d ng c a h th ng t p tin ang g n. Tuy nhiên trong m t s tr ng h p có

th d n n l i, nên t t h n h t là ch ra d ng m t cách chính xác. Còn có th li t

kê m t s d ng phân cách nhau b i d u ph y (,). Trong câu l nh mount còn có

th a ra danh sách các d ng h th ng t p tin không c n g n b ng c (flag) no.

Kh n ng này có ích trong tr ng h p s d ng câu l nh mount v i tham s -a

(câu l nh mount v i tham s -a s g n t t c các h th ng t p tin li t kê trong

t p tin /etc/fstab). Ví d , câu l nh:

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

g n t t c các h th ng t p tin tr các d ng smb (Samba19) và ext

Khi g n h th ng t p tin có trong /etc/fstab, thì ch c n a ra m t tham

s : ho c tên c a thi t b (phân vùng) ho c i m g n. T t c các tham s khác câu

l nh mount s l y t t p tin /etc/fstab.

Thông th ng ch có ng i dùng cao c p root m i có kh n ng g n các h

th ng t p tin, nh ng n u trong vùng các tùy ch n g n có ch ra tùy ch n user,

thì t t c m i ng i dùng s có kh n ng g n (b g n) h th ng t p tin ó. Ví d ,

n u trong t p tin /etc/fstab có dòng:

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

thì b t k ng i dùng nào c ng có quy n g n h th ng t p tin trên a DVD c a

mình b ng câu l nh:

[user]$ mount /dev/hdd

ho c:

[user]$ mount /media/dvd

98 Làm quen v i h th ng t p tin ext3fs

B ng 4.8: Nh ng tùy ch n chính c a câu l nh mount

Tùy ch n Ý ngh a

async Vào/ra (ghi/ c) c a h th ng t p tin th c hi n không ng b (không

t c th i).

auto Có th g n h th ng b ng câu l nh mount v i tùy ch n -a.

defaults S d ng các tu ch n theo m c nh: rw, suid, dev, exec,

auto, nouser, async.

dev Các thi t b kh i và thi t b ký t (byte) trong h th ng t p tin là nh ng

t p tin c bi t.

noauto Ch có th t g n h th ng t p tin. Tùy ch n -a không t ng g n h

th ng t p tin này.

exec Cho phép th c hi n các t p tin ch ng trình n m trên h th ng t p tin

này.

remount Cho phép g n l i h th ng t p tin ã g n. Th ng s d ng thay i

các tùy ch n g n, c bi t trong tr ng h p m r ng quy n truy c p (ví

d thêm quy n ghi cho h th ng t p tin ã g n ch c).

ro G n h th ng t p tin ch c.

rw G n h th ng t p tin c và ghi.

suid Cho phép dùng "bit thay i ID ng i dùng" và "bit thay i ID nhóm".

sync Vào/ra (ghi/ c) c a h th ng t p tin th c hi n ng b (t c th i).

user Cho phép ng i dùng bình th ng g n h th ng t p tin. i v i nh ng

ng i dùng này luôn luôn g n v i các tùy ch n noexec, nosuid,

nodev.

nodev Không coi các thi t b kh i và thi t b ký t (byte) trong h th ng t p tin

là nh ng t p tin c bi t.

nosuid Không cho phép dùng "bit thay i ID ng i dùng" và "bit thay i ID

nhóm".

nouser C m ng i dùng bình th ng g n h th ng t p tin.

Trong b ng 4.8 có a ra thêm m t vài tùy ch n có th s d ng trong câu

l nh mount và trong t p tin/etc/fstab (vùng các tùy ch n g n).

N u mu n g n m t h th ng t p tin nào ó và ch cho phép c thì c n ch ra

tùy ch n r (read only) trên dòng t ng ng c a t p tin /etc/fstab (theo m c

nh s d ng rw, t c là c và ghi), ho c s d ng câu l nh mount v i tham s -r

Câu l nh mount và umount h tr b ng các h th ng t p tin ã g n. B ng này

n m trên a d ng t p tin /etc/mtab. Có th xem tr c ti p t p tin này b ng

các ch ng trình xem t p tin (less, more ho c b ng câu l nh mount (không có

tham s ).

Tr c khi b các a tháo r i ( a m m, flash) ra kh i máy thì c n "tháo" (b

g n) các h th ng t p tin có trên các a tháo r i này. Thao tác này c th c hi n

b ng câu l nh umount (không ph i unmount!). Tham s c a câu l nh umount là

tên thi t b (phân vùng) ho c i m g n.

Ch có ng i dùng ã g n h th ng t p tin và t t nhiên c ng i dùng cao

18Hãy xem trang man fs c mô t ng n g n v nh ng h th ng t p tin này.

19các chia s trong m ng c a Windows

4.8 T o và g n các h th ng t p tin 99

c p root m i có quy n b g n nó. b t k ng i dùng nào c ng có th b g n

h th ng t p tin thì trong t p tin /etc/fstab c n thay th tùy ch n user b ng

tùy ch n users (trong vùng các tùy ch n g n).

Ch có th b g n h th ng t p tin khi không có t p tin nào c a nó m ra,

không ti n trình nào ang ch y t t p tin ch ng trình n m trên h th ng t p

tin này và trong h th ng không có ti n trình nào s d ng h th ng t p tin này.

T c là h th ng t p tin không c b n.

C n nói r ng n u so v i Windows thì làm vi c v i các a r i ( a m m, CD,

DVD, Zip, v.v. . . ) trên Linux có m t chút ph c t p h n. Vì u tiên b n c n g n

các a này (nói chính xác là h th ng t p tin có trên a) vào cây th m c chung.

thay m t a r i khác thì u tiên c n b g n ("tháo") a ã có ra r i m i g n

ti p a th hai. Tuy trên các b n phân ph i m i ã có các d ch v cho phép t

ng g n và t ng "tháo" các a r i, nh ng b n c ng c n bi t cách làm vi c

v i các a r i n u có v n x y ra v i các d ch v ó. T t nh t hãy chu n b s n

cho m i a r i m t " i m g n" riêng. Ví d , n u b n có m t a m m, m t dvd

và m t flash thì hãy t o ba th m c floppy, dvd và flash trong /mnt làm

i m g n cho ba thi t b c a mình. M t s b n phân ph i (Debian, openSUSE)

s t o s n cho b n nh ng i m g n này.

ây là t t c nh ng gì mà ng i dùng Linux m i (và r t m i) c n bi t v h

th ng t p tin ext3fs. Xin nh c l i là nh ng gì ã nói ây ch dành cho h th ng

t p tin ext3fs (m t s thông tin v n còn úng cho phiên b n ext2fs), và m i ch

c p n "m t tr c", m t quay v phía ng i dùng c a h th ng này (ch y u

là c u trúc t p tin). M t còn l i, m t sau (c u trúc bên trong), ch c nói n

trong ch ng này khi c n thi t. Chúng ta s xem xét k h n m t sau này trong

m t vài ch ng s p t i. Còn bây gi b n c s chuy n sang nghiên c u thành

ph n quan tr ng th 2 trong 4 thành ph n chính c a Linux ­ h v bash.

Ch ng 5

Bash

T t g h n t t n c s n

­ ca dao t c ng Vi t Nam

Trong ph n này chúng ta s c p n v n làm vi c v i Linux ch text, hay

còn c g i là console ho c terminal. Nh ng ng i dùng Linux m i (newbie) th ng ngh

s ch ng bao gi làm vi c ch này, vì ã có giao di n h a. Tuy nhiên ây là m t ý

ki n sai l m, b i vì r t nhi u công vi c có th th c hi n nhanh và thu n ti n trong ch

này h n là s d ng giao di n h a. Và dù sao thì ch text c a H H Linux không ph i

là ch text m t ti n trình c a MS-DOS. Vì Linux là H H a ti n trình, nên ngay trong ch

text ã có kh n ng làm vi c trong vài c a s . Và so n th o m t t p tin v n b n không

nh t thi t ph i ch y các trình so n th o l n và ch m ch p ( c bi t trên các máy có c u

hình ph n c ng th p) c a môi tr ng h a.

5.1 H v là gì?

Chúng ta th ng nói "ng i dùng làm vi c v i h i u hành". i u này không

hoàn toàn úng, vì trên th c t "liên h " v i ng i dùng c th c hi n b i m t

ch ng trình c bi t. Có hai d ng c a ch ng trình ã c p - h v , hay shell,

làm vi c trong ch text (giao di n dòng l nh) và giao di n h a GUI

(Graphical User Interface), th c hi n "liên h " v i ng i dùng trong môi tr ng

h a. C n nói ngay r ng, b t k ch ng trình nào trong Linux có th kh i ng

t dòng l nh c a h v (n u máy ch X ã ch y), c ng nh qua giao di n h a.

Ch y ch ng trình t dòng l nh c a h v t ng ng v i vi c nháy ( úp) chu t

lên bi u t ng c a ch ng trình trong GUI. a các tham s cho ch ng trình

trên dòng l nh t ng ng v i vi c chúng ta kéo và th cái gì ó lên bi u t ng

ch ng trình trong môi tr ng h a. Nh ng m t khác, m t s ch ng trình

không th ch y GUI và ch có th th c hi n t dòng l nh. Nói ngoài l m t

chút, tên g i "h v " b ph n i r t nhi u. Theo ý ki n c a m t s chuyên gia

ngôn ng c ng nh chuyên gia Linux thì nên g i ch ng trình này m t cách úng

h n là "trình x lý l nh" hay "trình biên d ch l nh". Tuy nhiên, tên g i "h v "

(shell) c dùng cho các ch ng trình dùng biên d ch l nh trong ch text

trên m i h th ng UNIX. Trên các h th ng UNIX u tiên có m t ch ng trình,

g i là sh, vi t t t c a shell. Sau ó, vài bi n th c a sh c phát tri n và làm

t t h n, trong ó có Bourne shell - phiên b n m r ng c a sh, vi t b i Steve

5.2 Các ký t c bi t 101

Bourne. D án GNU (d án phát tri n ch ng trình ng d ng c a Stallman, xem

http://www.gnu.org/) sau ó cho ra i h v bash, tên g i c a nó c gi i mã ra

là Bourne-again shell, t c là "l i là h v c a Bourne". Trên ti ng Anh ây

là m t cách ch i ch , vì t Bourne c gi ng v i t borne (sinh ra, ra), và nh

th bash còn có th gi i mã là "shell c sinh ra l n hai". Ti p theo chúng ta

s ch xem xét bash, vì th d i khi nói n h v , xin ng m hi u ó là bash

T m t mình bash không th c hi n m t công vi c ng d ng nào. Nh ng nó h

tr vi c th c thi m i ch ng trình khác, t vi c tìm ki m ch ng trình c g i,

ch y chúng n vi c t ch c d li u u vào/ u ra. Ngoài ra, h v ch u trách

nhi m v công vi c v i các bi n môi tr ng và th c hi n m t vài bi n i (th ,

hoán i v trí) các tham s l nh. Nh ng tính ch t chính c a h v , nh ó a

h v tr thành m t công c m nh c a ng i dùng, ó là nó bao g m m t ngôn

ng l p trình n gi n. Trong toán h c t lâu ã c ch ng minh r ng, b t k

m t thu t toán nào c ng có th c xây d ng t hai (ba) thao tác c b n và m t

toán t i u ki n. H v cung c p các toán t i u ki n và toán t vòng l p. Nó

s d ng các ti n ích và ch ng trình khác (có trong thành ph n h i u hành,

hay c cài t riêng) làm các thao tác c b n cho ngôn ng l p trình mà nó

h tr . ng th i cho phép a các tham s c ng nh k t qu làm vi c c a m t

ch ng trình t i các ch ng trình khác hay t i ng i dùng. K t qu thu c là

m t ngôn ng l p trình m nh. ây c ng là s c m nh và là m t trong các ch c

n ng chính c a h v . Tr c khi b t u ph n này, b n c nên bi t các t h p

phím chính, s d ng i u khi n vi c nh p d li u trên dòng l nh. Nên nh

ít nh t cách s d ng c a các (t h p) phím <Ctrl>+<C>, <Ctrl>+<D>, <Tab> và

các phím có m i tên.

5.2 Các ký t c bi t

H v bash s d ng m t vài ký t t b 256 ký t ASCII cho các m c ính riêng,

ho c bi u th các thao tác nào ó, ho c bi n i bi u th c. Các ký t này

bao g m:

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

và ký t v i mã 0, ký t hàng m i (t o ra khi nh n phím <Enter>) và ký t

kho ng tr ng. Ph thu c vào tình hu ng các ký t c bi t này có th s d ng

v i ý ngh a c bi t c a nó hay s d ng nh m t ký t thông th ng. Nh ng

trong a s các tr ng h p không khuyên dùng các ký t v i giá tr th hai.

Tr c h t ó là vi c s d ng chúng trong tên t p tin và th m c. Tuy nhiên các

ký t _, - và . (d u g ch d i, g ch ngang và d u ch m) th ng c s d ng

trong tên t p tin, và ây là m t ví d cho th y không ph i lúc nào chúng c ng

có giá tr c bi t. Trong tên t p tin ch d u ch m (.) và g ch chéo (/) có giá tr

c bi t. Ký hi u g ch chéo dùng phân chia tên các th m c trong ng d n,

còn d u ch m có giá tr c bi t khi nó là ký t u tiên trong tên t p tin (cho

bi t t p tin là " n"). Vi c a ngay t t c ý ngh a c bi t c a nh ng ký t này

và các tình hu ng s d ng chúng t m th i không có ích. Chúng ta s xem xét

chúng d n d n trong các ph n sau, khi c n s d ng n. Tuy nhiên, 3 ký hi u

có ý ngh a l n và c n c p n u tiên. Ký hi u \ (g ch chéo ng c) có th g i

102 Bash

là "ký hi u xóa b ý ngh a c bi t" cho b t k ký t c bi t nào, ng ngay sau

\. Ví d , n u mu n s d ng kho ng tr ng trong tên t p tin, thì chúng ta c n t

tr c ký t kho ng tr ng ó m t d u Ví d , câu l nh sau:

teppi82@teppi:~$ cp lennon_imagine lennon\ imagine

Các ký t ' và " (ngo c n và ngo c kép) có th g i là "các ký t trích d n".

M i ký t này luôn luôn c s d ng trong m t c p v i b n sao c a chính nó

óng khung m t bi u th c nào ó, gi ng nh trong các v n b n, sách báo,

. . . thông th ng. N u nh m t o n v n b n nào ó t trong ngo c n, thì t t

c các ký t n m trong ngo c n này có giá tr nh các ký t thông th ng, khôn

m t ký t nào có ý ngh a c bi t. Tr l i v i ví d s d ng kho ng tr ng trong

tên t p tin trên, có th nói, n u mu n t t p tin cái tên "lennon imagine" c n

a tên ó vào d u ngo c:

teppi82@teppi:~$ cp lennon_imagine 'lennon imagine'

S khác nhau trong cách s d ng ký t ' và " ó là, trong ngo c n m t ý

ngh a c bi t t t c các ký t , còn trong ngo c kép ­ t t c chúng ngo i tr

$, ' và \ (d u ô la, ngo c n và d u g ch ng c).

5.3 Th c thi các câu l nh

Nh ã nói trên, m t trong các ch c n ng chính c a h v là t ch c vi c th c

hi n các câu l nh mà ng i dùng a vào trên dòng l nh. H v , nói riêng, cung

c p cho ng i dùng hai thao tác c bi t t ch c vi c a các câu l nh trên

dòng l nh: ; và &.

5.3.1 Thao tác ;

M c dù ng i dùng th ng ch nh p trên dòng l nh t ng câu l nh m t, nh ng

còn có th a vào dòng l nh ó ngay l p t c vài câu l nh, và chúng s th c hi n

l n l t t câu l nh này n câu l nh khác. làm c i u này c n s d ng

ký t c bi t - ;. N u dùng ký t này phân chia các câu l nh, thì câu l nh

ti p theo s c coi nh tham s c a l nh phía tr c. Nh v y, n u nh p vào

dòng l nh cái gì ó gi ng nh sau:

teppi82@teppi:~$ command1 ; command2

thì h v u tiên s th c hi n câu l nh command1, ch cho l nh ó hoàn

thành, sau ó ch y command2, ch l nh hoàn thành, sau ó l i a ra dòng

nh p l nh và ch các hành ng ti p theo c a ng i dùng.

5.4 u vào/ u ra tiêu chu n 103

5.3.2 Thao tác &

Thao tác & c dùng t ch c vi c th c hi n các câu l nh trong ch n n

sau. N u t d u & ngay sau câu l nh, thì h v s tr l i quy n i u khi n

cho ng i dùng ngay sau khi ch y câu l nh, mà không i cho câu l nh ó hoàn

thành. Ví d , n u nh p vào dòng l nh "command1 & command2 &", thì h v

ch y câu l nh command1, ngay l p t c ch y l nh command2, và sau ó không

ch m tr tr l i dòng nh p l nh cho ng i dùng.

5.3.3 Thao tác && và ||

Các thao tác && và || lá nh ng thao tác i u khi n. N u trên dòng l nh là

command1 && command2, thì command2 s th c hi n và ch th c hi n trong

tr ng h p tr ng thái thoát ra c a l nh command1 b ng không (0), t c là l nh

ó th c hi n thành công. M t cách t ng t , n u dòng l nh có d ng

command1 || command2, thì command2 s th c hi n và ch th c hi n khi tr ng

thái thoát c a l nh command1 khác không. Chúng ta s không xem xét m t k

thu t c a vi c th c hi n m t câu l nh nào ó. Ch có th nói ng n g n r ng, h

v ph i tìm mã (code) ch ng trình, n p mã ó vào b nh , chuy n các tham s

ã nh p trên dòng l nh vào cho câu l nh, và sau khi th c hi n xong thì theo m t

cách nào ó tr l i k t qu th c hi n l nh này cho ng i dùng hay ti n trình

khác. Chúng ta s xem xét qua các b c này. B c u tiên - tìm ki m câu l nh.

Các câu l nh chia thành hai lo i: n i trú (mã c a chúng có trong mã c a chính

h v ) và ngo i trú (mã c a chúng n m trong m t t p tin riêng l trên a). H

v luôn luôn tìm th y l nh n i trú, còn tìm các l nh ngo i trú ng i dùng,

theo nguyên t c, ph i ch cho h v ng d n y t i t p tin t ng ng. Tuy

nhiên g "gánh n ng" cho ng i dùng h v bi t cách tìm l nh ngo i trú trong

các th m c, mà c li t kê trong ng d n tìm ki m. Ch khi (h v ) không

th tìm th y t p tin c n thi t trong các th m c ó, nó m i quy t nh r ng

ng i dùng ã nh m khi nh p tên l nh. V cách thêm th m c vào ng d n

tìm ki m chúng ta s nói n d i, còn bây gi chúng ta s xem xét cách h v

t ch c vi c a d li u vào cho câu l nh ang th c hi n và vi c a k t qu t i

cho ng i dùng.

5.4 u vào/ u ra tiêu chu n

5.4.1 Dòng d li u vào ­ ra

Khi m t ch ng trình c th c hi n, nó c cung c p ba dòng d li u (hay còn

g i là kênh):

u vào tiêu chu n (standard input hay stdin). Qua kênh này d li u c

a vào cho ch ng trình;

u ra tiêu chu n (standard output hay stdout). Qua kênh này ch ng trình

a ra k t qu làm vi c c a mình;

104 Bash

kênh thông báo l i tiêu chu n (standard error hay stderr). Qua kênh này

ch ng trình a ra thông tin v l i.

T u vào tiêu chu n ch ng trình ch có th c, còn hai u ra và kênh

thông báo l i c ch ng trình s d ng ch ghi. Theo m c nh u vào có

liên k t1 v i bàn phím, còn u ra và kênh báo l i h ng n terminal c a ng i

dùng. Nói cách khác, toàn b thông tin c a l nh hay ch ng trình mà ng i dùng

ã ch y, và t t c nh ng thông báo l i, c a ra c a s terminal. Tuy nhiên,

chúng ta s th y d i, có th chuy n h ng thông báo u ra (ví d , vào t p

tin). cho th y kênh thông báo l i tiêu chu n làm vi c nh th nào, hãy th c

hi n câu l nh ls v i m t tham s không úng, ví d dùng tham s là m t tên t p

tin không t n t i. Trong tr ng h p này, ls a m t tin nh n báo l i ra kênh

thông báo l i tiêu chu n. Tuy nhiên, i v i ng i dùng thì trong tr ng h p này

kênh thông báo l i tiêu chu n không khác gì v i u ra tiêu chu n, b i vì chúng

ta c ng th y thông báo l i ó trên c a s terminal. Làm vi c v i u vào và u

ra tiêu chu n c minh h a t t nh t qua ví d các l nh echo và cat.

5.4.2 L nh echo

Câu l nh echo dùng chuy n t i u ra tiêu chu n dòng ký t , mà c a

vào làm tham s cho nó. Sau ó l nh này a ra tín hi u chuy n dòng và hoàn

t t công vi c. Hãy th th c hi n câu l nh sau:

[user]$ echo 'xin chao cac ban!'

Tôi ngh r ng l i gi i thích s là th a thãi (ch xin hãy s d ng d u ngo c

n, n u không k t qu có th s khác. N u b n c chú ý thì có th gi i thích

t i sao l i khác).

5.4.3 L nh cat

Chúng ta s xem xét l nh cat ây vì l nh này th ng làm vi c v i u vào và

u ra tiêu chu n. Theo m c nh k t qu làm vi c c a l nh cat h ng t i u

ra tiêu chu n. ch ng minh là l nh này theo m c nh ti p nh n dòng d li u

nh p vào, hãy ch y l nh cat không có tham s . K t qu là con tr chuy n t i

m t dòng m i, và h n n a có v nh không có gì x y ra. Lúc này câu l nh ch

các ký t n t u vào tiêu chu n. Hãy nh p b t k ký t nào, và nó s xu t

hi n ngay l p t c trên màn hình, t c là ch ng trình ngay l p t c a chúng t i

u ra tiêu chu n. Có th ti p t c nh p các ký t , và chúng c ng s xu t hi n

trên màn hình. Thông th ng bàn phím c c u hình nh p vào theo t ng

dòng, vì th n u b n nh n phím <Enter>, dòng ký t b n v a nh p s c a

t i l nh cat, và l nh này s l i a d li u ra màn hình thông qua u ra tiêu

chu n. Nh v y, m i dòng ký t nh p vào s c hi n ra hay l n: m t l n khi

gõ và l n th hai b i câu l nh cat. N u nh n t h p phím <Ctrl>+<D>, mà dùng

ng ng vi c nh p d li u, chúng ta s qua l i dòng nh p l nh. C ng có th s

d ng t h p phím <Ctrl>+<C>, mà là câu l nh trong h v d ng ch ng trình

1gi ng liên k t hóa h c

5.5 Chuy n h ng u vào/ u ra, ng ng và b l c 105

ang ch y. N u a tên m t t p tin vào làm tham s cho l nh cat, thì n i dung

c a l nh này s c a t i u vào tiêu chu n, t ó l nh cat s c n i dung

này và a t i u ra tiêu chu n (xem s ).

N i dung t p tin --> u vào tiêu chu n (stdin) --cat--> u

ra tiêu chu n (stdout)

ây ch là m t tr ng h p riêng c a vi c chuy n h ng d li u u vào, m t

c ch r t có ích c a h v . Và t t nhiên chúng ta c n xem xét k h n c ch này.

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

M c dù, nh ã nói trên, thông th ng u vào/ u ra c a m t ch ng trình

liên k t v i các u vào/ u ra tiêu chu n, trong h v còn có các môi tr ng c

bi t cho phép chuy n h ng u vào/ u ra.

5.5.1 S d ng >, < và »

chuy n h ng u vào/ra, s d ng các ký hi u ">", "<" và "»". Th ng s

d ng vi c chuy n h ng li u ra c a câu l nh vào t p tin. D i ây là m t ví

d t ng ng:

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

Theo l nh này danh sách t p tin và th m c con c a th m c, mà t ó ng i

dùng th c hi n l nh ls2 s c ghi vào t p tin /home/maikhai/ls.txt; khi

này n u t p tin ls.txt không t n t i, thì nó s c t o ra; n u t p tin ã có,

thì n i dung c a nó s b xóa và ghi è b i danh sách nói trên. N u b n không

mu n xóa n i dung c mà ghi thêm d li u u ra vào cu i t p tin, thì c n s

d ng ký hi u >> thay cho >. Khi này kho ng tr ng tr c và sau các ký hi u >

hay >> không có ý ngh a và ch dùng v i m c ích thu n ti n, d nhìn. B n có

th chuy n h ng không ch vào t p tin, mà còn t i u vào c a m t câu l nh

khác hay t i m t thi t b nào ó (ví d , máy in). Ví d , a n i dung t p tin

/home/maikhai/ls.txt v a t o trên t i c a s terminal th hai3 có th s

d ng l nh sau:

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

Nh b n th y, > dùng chuy n h ng d li u c a u ra. Ch c n ng t ng

t i v i u vào c th c hi n b i <. Ví d , có th m s t trong t p tin

ls.txt nh sau (chú ý, ây ch là m t ví d minh h a, trên th c t th ng s

d ng câu l nh n gi n h n):

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

2th m c hi n th i

3b n c n dùng t h p phím <Ctrl>+<Alt>+<F2> chuy n t i c a s terminal này và ng nh p tr c

106 Bash

Cách chuy n h ng này th ng c s d ng trong các script, cho các câu

l nh mà th ng ti p nh n (hay ch ) d li u vào t bàn phím. Trong script dùng

t ng hóa m t thao tác nào ó, có th a các thông tin c n thi t cho câu

l nh t t p tin: trong t p tin này ghi s n nh ng gì c n th c hi n l nh ó. B i

vì các ký hi u <, > và >> làm vi c v i các kênh tiêu chu n ( u vào ho c u

ra), chúng không ch c dùng theo các cách quen thu c, th ng dùng, mà còn

có th theo cách khác, "l m t" h n. Ví d , các câu l nh sau là t ng ng:

[user]$ cat > file

[user]$ cat>file

[user]$ >file cat

[user]$ > file cat

Tuy nhiên, t chúng (không có m t l nh nào, t c là không có kênh tiêu chu n

nào cho l nh) các ký t chuy n h ng này không th c s d ng, nh th

không th , ví d , nh p vào dòng l nh sau:

[user]$ file1 > file2

mà thu c b n sao c a m t t p tin nào ó. Nh ng i u này không làm gi m

giá tr c a c ch này, b i vì các kênh tiêu chu n có cho m i câu l nh. Khi này,

có th chuy n h ng không ch u vào và u ra tiêu chu n, mà còn các kênh

khác. làm c i u này, c n t tr c ký hi u chuy n h ng s c a kênh

mu n chuy n. u vào tiêu chu n stdin có s 0, u ra tiêu chu n stdout - s 1,

kênh thông báo l i stderr - s 2. T c là l nh chuy n h ng có d ng y nh

sau (xin c nh c l i, kho ng tr ng c nh > là không nh t thi t):

command N > M

Trong ó, N và M - s c a kênh tiêu chu n (0, 1, và 2) ho c tên t p tin. Trong

m t vài tr ng h p có s d ng các ký hi u <, > và >> mà không ch ra s kênh

hay tên t p tin, vì vào ch còn thi u s t, theo m c nh, 1 n u dùng >, t c là

u ra tiêu chu n, ho c 0 n u dùng <, t c là u vào tiêu chu n. Nh th , khi

không có s nào ch ra, > s c biên d ch là 1 >, còn < s c biên d ch là

0 <. Ngoài vi c chuy n h ng các kênh tiêu chu n n gi n nh v y, còn có kh

n ng không nh ng chuy n h ng d li u vào kênh này hay kênh khác, mà còn

sao chép n i dung c a các kênh tiêu chu n ó. Ký hi u & dùng th c hi n i u

này, khi t nó (&) tr c s c a kênh s chuy n d li u n:

command N > &M

L nh này có ngh a là, u ra c a kênh v i s N c g i n c u ra tiêu

chu n, và sao chép t i kênh có s M. Ví d , sao chép thông báo l i vào u ra

tiêu chu n, c n dùng l nh 2>&1, còn 1>&2 sao chép stdout vào stderr. Kh n ng

này c bi t có ích khi mu n ghi u ra vào t p tin, vì khi ó chúng ta v a có

th nhìn th y thông báo trên màn hình, v a ghi chúng vào t p tin. Ví d , tr ng

h p sau th ng c ng d ng trong các script ch y khi kh i ng Linux:

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

cat: hiho: No such file or directory

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

5.5 Chuy n h ng u vào/ u ra, ng ng và b l c 107

5.5.2 S d ng |

M t tr ng h p c bi t c a chuy n h ng u ra là s t ch c các ng ng

(ha y còn có th g i là kênh gi a các ch ng trình, ho c b ng chuy n). Hai hay

vài câu l nh, mà u ra c a l nh tr c dùng làm u vào cho l nh sau, liên k t

v i nhau (có th nói phân cách nhau, n u mu n) b i ký hi u g ch th ng ng -

"|". Khi này u ra tiêu chu n c a l nh ng bên trái so v i | d c chuy n n

u vào tiêu chu n c a ch ng trình, d ng bên ph i so v i |. Ví d :

maikhai@fpt:/sw$ cat ls.txt | grep knoppix | wc -l

Dòng này có ngh a là k t qu c a l nh cat, t c là n i dung t p tin ls.txt,

s c chuy n n u vào c a l nh grep, l nh này s phân chia n i dung nói

trên và ch l y ra nh ng dòng nào có ch a t knoppix. n l t mình, k t q a

c a l nh grep c chuy n t i u vào c a l nh wc -l, mà tính s nh ng dòng

thu c. ng ng s d ng k t h p vài ch ng trình nh l i v i nhau (m i

ch ng trình th c hi n m t bi n i xác nh nào ó trên u vào) t o thành m t

l nh t ng quát, mà k t qu c a nó s là m t bi n i ph c t p. C n chú ý r ng,

h v g i và th c hi n t t c các câu l nh có trong ng ng cùng m t lúc, ch y

m i l nh ó trong m t b n sao h v riêng. Vì th ngay khi ch ng trình th

nh t b t u a k t qu u ra, ch ng trình ti p theo b t u x lý k t qu

này. C ng y nh v y, các l nh ti p theo th c hi n các công vi c c a mình: ch d

li u t l nh tr c và a k t qu cho l nh ti p theo, gi ng nh m t dây chuy n

s n xu t. N u nh mu n m t l nh nào ó k t thúc hoàn toàn, tr c khi th c

hi n l nh ti p theo, b n có th s d ng trên m t dòng c ký hi u dây chuy n

|, c ng nh d u ch p ph y ;. Tr c m i d u ch m ph y, h v s d ng l i và

ch cho n khi th c hi n xong t t c các câu l nh tr c c a ng ng. Tr ng

thái thoát ra (giá tr lôgíc, mà c tr l i sau khi th c hi n xong ch ng trình)

c a m t ng ng s trùng v i tr ng thái thoát ra c a câu l nh sau cùng trong

ng ng. tr c câu l nh u tiên c a ng ng có th t ký hi u "!", khi

ó tr ng thái thoát ra c a ng ng s là ph nh lôgíc c a tr ng thát thoát

ra c a l nh cu i cùng trong ng ng. T c là n u tr ng thái thoát ra c a l nh

cu i cùng b ng 0 thì tr ng thái thoát ra c a ng ng s b ng 1 và ng c l i.

H v ch cho t t c các câu l nh k t thúc r i m i xác nh và a ra giá tr này.

5.5.3 B l c

Ví d cu i cùng trên (ví d v i câu l nh grep) có th dùng minh h a cho

m t khái ni m qua tr ng khác, ó là, b l c ch ng trình. B l c ­ ó là l nh

(hay ch ng trình), mà ti p nh n d li u vào, th c hi n m t vài bi n i trên d

li u này và a ra k t qu u ra tiêu chu n (t ây còn có th chuy n n n i

nào ó theo ý mu n c a ng i dùng). Các câu l nh - b l c bao g m các l nh ã

nói n trên cat, more, less, wc, cmp, diff, và c nh ng câu l nh có

trong b ng 5.1.

M t b l c c bi t, câu l nh tee, nhân ôi d li u u vào, m t m t g i d

li u này n u ra tiêu chu n, m t khác ghi nó (d li u) vào t p tin (ng i dùng

c n t tên). D th y r ng theo ch c n ng c a mình l nh tee t ng t nh nhóm

ký t chuy n h ng 1>&file. Kh n ng c a b l c có th m r ng v i vi c s d ng

108 Bash

B ng 5.1: Các câu l nh b l c

L nh Mô t ng n g n

grep, fgrep, egrep Tìm trong t p tin hay d li u u vào các dòng có ch a m u v n b n

c ch ra và a các dòng này t i u ra tiêu chu n

tr Trong d li u u vào thay th các ký t ô th nh t b i các ký t t ng

ng ô th hai. Hãy th gõ l nh tr abc ABC r i gõ vài dòng ch a

các ký t abc!

comm So sánh hai t p tin theo t ng dòng m t và a vào u ra tiêu chu n 3

c t : m t - nh ng dòng ch g p t p tin th nh t, hai - nh ng dòng ch

g p t p tin th hai, và ba - nh ng dòng có trong c hai t p tin.

pr nh d ng t p tin hay n i dung c a u tiêu chu n in n.

sed Trình so n th o t p tin theo dòng, s d ng th c hi n m t vài bi n i

trên d li u u vào (l y t t p tin hay u vào tiêu chu n)

các bi u th c chính quy ( i u khi n), cho phép, ví d , t ch c tìm ki m theo các

m u tìm ki m t n gi n n ph c t p và r t ph c t p. N u mu n, chúng ta có

th nói r t nhi u v chuy n h ng và b l c. Nh ng n i dung này có trong ph n

l n các cu n sách v UNIX và Linux (xem ph n l i k t). Vì v y, chúng ta s d ng

ây và chuy n sang m t ph n khác, c g i là "môi tr ng và các bi n môi

tr ng" t o b i h v .

5.6 Tham bi n và các bi n s . Môi tr ng c a h v

Khái ni m tham bi n trong h v bash t ng ng v i khái ni m bi n s trong các

ngôn ng l p trình thông th ng. Tên g i (hay ID) c a tham bi n có th là m t

t bao g m các ký t b ng ch cái, ch s , d u g ch d i (ch ký t u tiên c a

t này không c là ch s ), và c nh ng ký t sau: , , #, , - (g ch ngang), $,, 0,

_ (g ch d i). Chúng ta nói r ng, tham bi n c xác nh hay c t ra, n u

ng i dùng g n cho nó m t giá tr . Giá tr có th là m t dòng tr ng r ng. nhìn

th y giá tr c a tham bi n, ng i ta s d ng ký t $ tr c tên c a nó. Nh v y,

l nh:

maikhai@fpt:/sm$ echo parameter

hi n th t parameter, còn l nh

maikhai@fpt:/sm$ echo $parameter

hi n th giá tr c a tham bi n parameter (t t nhiên n u nh tham bi n ó d c

xác nh).

5.6.1 Các d ng tham bi n khác nhau

Tham bi n chia thành ba d ng: tham bi n v trí, tham bi n c bi t (các ký t

c bi t ã nói trên chính là tên c a nh ng tham bi n này) và các bi n s c a

h v . Tên (ID) c a tham bi n v trí g m m t hay vài ch s (nh ng không có

5.6 Tham bi n và các bi n s . Môi tr ng c a h v 109

tham bi n v trí 0). Giá tr c a tham bi n v trí là các tham s cho l nh, c a

ra khi ch y h v (tham s u tiên là giá tr c a tham bi n 1, tham s th hai -

tham bi n 2, v.v. . . ). Có th dùng câu l nh set thay i giá tr c a tham bi n

v trí. Giá tr c a các tham bi n này c ng thay i trong khi h v th c hi n m t

trong các hàm s (chúng ta s xem xét v n này d i). Các tham bi n c bi t

không gì khác h n là các m u, mà s thay th (phép th , phép hoán i) chúng

c th c hi n nh trong b ng 5.2:

B ng 5.2: Thay th các tham bi n c bi t

Tham bi n Quy lu t thay th

* Thay th b i các tham bi n v trí, b t u t tham bi n th nh t. N u s

thay th th c hi n trong d u ngo c kép, thì tham bi n này s c thay

b i m t t duy nh t, mà t o ra t t t c các tham bi n v trí, phân cách

nhau b i ký t u tiên c a bi n s IFS (s nói n sau). T c là "$"

t ng ng v i "$1c$2c. . . ", trong ó c - ký t u tiên trong giá tr

c a bi n s IFS. N u giá tr c a IFS tr ng, ho c không c xác nh

giá tr , thì tham bi n phân cách nhau b i các kho ng tr ng.

@ Thay th b i tham bi n v trí, b t u t tham bi n th nh t. N u thay th

th c hi n trong ngo c kép, thì m i tham bi n s c thay th b i m t

t riêng bi t. T c là, "$@" t ng ng v i "$1" "$2" . . . N u không có

tham bi n v trí, thì giá tr s không c thi t l p (tham bi n s b x

# Thay th b i giá tr th p phân c a các tham bi n v trí.

? Thay th b i tr ng thái thoát ra c a câu l nh cu i cùng trong ng ng,

mà c th c hi n trong ch n n tr c.

- (g ch ngang) Thay th b i giá tr các c , flag, c t b i l nh n i trú set hay trong

khi ch y h v .

$ Thay th b i s c a ti n trình (PID - process identificator)

Thay th b i s c a ti n trình (PID) cu i cùng trong s các câu l nh

th c hi n trong n n sau.

0 Thay th b i tên h v hay tên c a script ang ch y. N u bash ch y m t

t p tin l nh nào ó, thì $0 có giá tr b ng tên c a t p tin này. Trong

tr ng h p ng c l i giá tr này b ng ng d n u n h v (ví

d , /bin/bash

_ (g ch d i) Thay th b i tham s cu i cùng c a câu l nh tr c trong s các câu l nh

ã c th c hi n (n u ó l i là m t tham bi n hay bi n s , thì s s

d ng giá tr c a n

Các tham bi n c bi t, c li t kê b ng trên, có m t i m khác bi t ó là

ch có th "nh c" n chúng, không th gán các giá tr cho các tham bi n này.

Bi n môi tr ng, nhìn t phía h v , ó là các tham bi n c t tên. Giá tr

c a bi n môi tr ng c gán nh thao tác có d ng sau:

[user]$ name=value

Trong ó, name - tên c a bi n, còn value - giá tr mu n gán cho bi n (có th

là m t dòng tr ng). Tên c a bi n môi tr ng ch có th bao g m các ch s , ch

cái và không c b t u b i m t ch s . (Tin r ng sau khi c o n vi t v

110 Bash

tham bi n v trí thì các b n ã hi u t i sao m t bi n môi tr ng không th b t

u b i m t ch s .) Giá tr có th là b t k m t dòng v n b n nào. N u giá tr

có ch a nh ng ký t c bi t, thì c n t nó (giá tr ) vào d u ngo c. Giá tr t t

nhiên s không ch a các d u ngo c này. N u m t bi n môi tr òng c xác nh,

thì c ng có th b xóa b b ng l nh n i trú unset. T p h p t t c các bi n này

cùng v i các giá tr ã gán cho chúng g i là môi tr ng (enviroment) c a h v .

Có th xem nó (môi tr ng) nh l nh set khi không có tham s (có th c n dùng

ng ng "set | less", n u môi tr ng l n, có nhi u bi n). xem giá tr c a

m t bi n môi tr ng c th , thay vì dùng l nh set (khi này c n tìm trong k t

qu c a nó bi n mu n xem), có th s d ng l nh echo:

[user]$ echo $name

Trong ó, c n thay name b i tên bi n (nh v y, trong tr ng h p này, b n l i

c n ph i bi t tên c a bi n mu n xem). Trong s các bi n, mà b n s th y trong

k t qu c a l nh set, có nh ng bi n r t thú v . Xin hãy chú ý n, ví d , bi n

RANDOM. N u th ch y vài l n liên ti p câu l nh sau:

maikhai@fpt:/sw$ echo $RANDOM

thì m i l n b n s nh n c m t giá tr m i. Nguyên nhân là vì bi n này tr l i

m t giá tr ng u nhiên4 trong kho ng 0 - 32 768.

5.6.2 D u nh c c a h v

M t trong các bi n r t quan tr ng có tên PS1. Bi n này cho bi t d ng c a d u

nh c, mà bash a ra trong khi ch ng i dùng nh p câu l nh ti p theo. Theo

m c nh thì bi n này c gán giá tr "\s-\v\$ ", tuy nhiên trên các b n phân

ph i khác nhau th ng có các script kh i ng (hay script ng nh p) xác nh

l i bi n này. Nói chung thì trong bash có t t c b n d u nh c, c s d ng

trong các tr ng h p khác nhau. Bi n PS1 a ra d ng c a d u nh c khi h v

ch nh p l nh. D u nh c th hai, xác nh b i bi n PS2, xu t hi n khi h v

ch ng i dùng nh p thêm m t vài d li u c n thi t nào ó có th ti p t c

ch y câu l nh (ch ng trình) ã g i. Theo m c nh bi n PS2 có giá tr ">". R t

có th b n ã nhìn th y d u nh c này, khi ch y l nh cat a d li u vào

t bàn phím vào t p tin. M t ví d khác - l nh ftp, sau khi ch y l nh này d u

nh c s có d ng nh ã nói. D u nh c, xác nh b i bi n PS3, s d ng trong l nh

select. D u nh c, xác nh b i bi n PS4, c a ra tr c m i câu l nh, trong

lúc bash theo dõi quá trình th c hi n. Giá tr theo m c nh - "+". N u có mong

mu n, b n có th thay i các bi n PS1 và PS2. Khi này có th s d ng b t k

ký t nào nh p t bàn phím, c ng nh m t vài ký t chuyên dùng xác nh

d ng d u nh c nh trong b ng 5.3 (ch a ra m t vài trong s chúng làm ví d ,

danh sách y xem trong trang man c a bash - gõ l nh "man bash").

S c a l nh (s th t c a l nh ang th c hi n trong bu i làm vi c hi n th i)

có th khác v i s c a chính nó trong danh sách "l ch s các câu l nh", b i vì

danh sách còn ch a c nh ng câu l nh ã c ghi l i trong t p tin l ch s . Sau

4random là t ti ng Anh có ngh a ng u nhiên

5.6 Tham bi n và các bi n s . Môi tr ng c a h v 111

B ng 5.3: Ký t xác nh d ng d u nh c

C m ký t Giá tr (k t qu thu c)

\a Tín hi u âm thanh (mã ASCII 07)

\d Th i gian d ng "Th , tháng, ngày", ví d , Sun, Dec, 26.

\h Tên máy (hostname) n d u ch m u tiên.

\H Tên máy y , ví d teppi.phanthinh.com

\t Th i gian hi n th i d ng 24 gi : HH:MM:SS (gi :phút:giây)

\T Th i gian hi n th i d ng 12 gi : HH:MM:SS

\@ Th i gian hi n th i d ng 12 gi am/pm (sáng/chi u)

\u Tên ng i dùng ã ch y h v , ví d teppi

\w Tên y c a th m c làm vi c hi n th i (b t u t g c), ví d

/home/teppi82/project/l4u

\W Th m c hi n th i (không có ng d n)

\$ Ký t #, n u h v c ch y b i ng i dùng root, và ký t $, n u h v

c ch y b i ng i dùng th ng.

nn Ký t có mã h tám nnn

Dòng m i (chuy n dòng)

\s Tên h v

\# S hi n th i c a câu l nh

\\ D u g ch ng c (backslash)

\[ Sau ký t này t t c các ký t s không c in ra.

\] K t thúc chu i các ký t không c in ra.

\! S th t c a l nh hi n th i trong l ch s các câu l nh ã dùng.

khi giá tr c a bi n c h v c xong, s x y ra s thay th theo các quy lu t

m r ng trong b ng trên, ng th i còn x y ra s thay th trong tên các câu l nh,

trong các bi u th c s h c, và s chia t (word splitting). Chúng ta s nói n

nh ng s thay th này d i.Ví d , sau khi th c hi n l nh (vì trong dòng v n

b n có kho ng tr ng, nên nh t thi t ph i có d u ngo c):

[user/root]$ PS1="[\u@\h \W]\$"

thì trong d u nh c s có d u m ngo c vuông, tên ng i dùng, ký hi u , tên máy,

kho ng tr ng, tên c a th m c hi n th i (không có ng d n), d u óng ngo c

vuông, và ký hi u $ (n u trên h v ang làm vi c ng i dùng bình th ng) hay

#(n u h v ch y d i ng i dùng root).

5.6.3 Bi n môi tr ng PATH

Còn m t bi n c ng quan tr ng n a có tên PATH. Bi n này a ra danh sách

ng d n n các th m c, mà bash s tìm ki m t p tin (tr ng h p riêng

là các t p tin l nh) trong tr ng h p, ng d n y n t p tin không

c a ra. Các th m c trong danh sách này phân cách nhau b i d u hai

ch m (:). Theo m c nh bi n môi tr ng PATH bao g m các th m c "bin" sau:

/usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin, t c là bi n PATH

trông nh th này: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin.

thêm th m c vào danh sách này, c n th c hi n câu l nh sau:

112 Bash

[user]$ PATH=$PATH:new_path

Khi tìm ki m, h v "l c l i" các th m c theo úng th t ã li t kê trong

bi n PATH. M t chú ý nh , có th a vào danh sách này th m c hi n th i, khi

thêm vào bi n PATH m t d u ch m (.). Tuy nhiên, ây là i u không khuyên làm

v i lý do b o m t: ng i có ác ý có th t vào th m c dùng chung m t ch ng

trình nào ó, có cùng tên v i m t trong s nh ng câu l nh th ng dùng b i root,

nh ng th c hi n nh ng ch c n ng khác hoàn toàn ( c bi t nguy hi m n u th

m c hi n th i ng u danh sách tìm ki m).

5.6.4 Bi n môi tr ng IFS

Bi n này xác nh ký t (c m ký t ) phân cách (Internal Field Separator), s

d ng trong thao tác phân chia t ng khi bi n i dòng l nh, mà h v th c hi n

tr c khi ch y m t câu l nh nào ó (xem d i). Giá tr theo m c nh c a bi n này

­ "<Kho ng_tr ng><Tab><Ký_t _hàng_m i>". N u th gõ l nh "echo $IFS",

b n s nh n c m t ng c nhiên nh .

5.6.5 Th m c hi n th i và th m c cá nhân

Tên c a th m c hi n th i ghi trong bi n môi tr ng v i tên PWD, và giá tr c a

bi n này thay i sau m i l n ch y ch ng trình cd (c ng nh m i l n thay i

th m c hi n th i theo b t k cách nào, ví d , qua Midnight Commander). T ng

t nh v y tên y (g m c ng d n) c a th m c cá nhân c a ng i dùng,

ch y ti n trình ã cho, ghi trong bi n HOME.

5.6.6 Câu l nh export

Khi h v ch y m t ch ng trình hay câu l nh nào ó, nó (h v ) cung c p cho

chúng m t ph n bi n môi tr ng. có th cung c p bi n môi tr ng cho ti n

trình ch y t h v , c n gán giá tr cho bi n này v i l nh export, t c là thay vì

[user]$ name=value

c n gõ:

[user]$ export name=value

Trong tr ng h p này, t t c các ch ng trình ch y t h v (k c b n sao

th hai c a chính h v ) s có quy n truy c p t i các bi n c gán nh v y, t c

là s d ng giá tr c a chúng qua tên.

5.7 Khai tri n bi u th c

Hay h v c các câu l nh nh th nào?.

Khi h v nh n c m t dòng l nh này ó c n th c hi n, nó (h v ) tr c khi

ch y câu l nh th c hi n vi c "phân tích ng pháp" dòng l nh này (gi ng trong

5.7 Khai tri n bi u th c 113

ngôn ng , phân tích ch ng , v ng ). M t trong nh ng b c c a s phân tích

này là phép m hay khai tri n bi u th c (expansion). Trong bash có b y lo i

khai tri n bi u th c:

Khai tri n d u ngo c (brace expansion);

Thay th d u ngã (tilde expansion);

Phép th các tham bi n và bi n s ;

Phép th các câu l nh;

Phép th s h c (th c hi n t trái sang ph i);

Phép chia t (word splitting);

Khai tri n các m u tên t p tin và th m c (pathname expansion).

Các thao tác này c th c hi n theo úng th t li t kê trên. Chúng ta s

xem xét chúng theo t t này.

5.7.1 Khai tri n d u ngo c

Khai tri n d u ngo c t t nh t minh h a trên ví d . Gi thi t, chúng ta c n t o

th m c con trong m t th m c nào ó, ho c thay i ng i dùng s h u c a vài

t p tin cùng m t lúc. Có th th c hi n i u này nh các câu l nh sau:

[user]$ mkdir /usr/src/unikey/{old,new,dist,bugs}

[root]# chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}

Trong tr ng h p u, trong th m c /usr/src/unikey/ s t o ra các th

m c con old,new,dist, và bugs. Trong tr ng h p th hai, ng i dùng s h u

c a các t p tin sau s thay i (thành 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

T c là v i m i c p d u ngo c s t o ra vài dòng riêng r (s nh ng dòng

này b ng s t n ng trong d u ngo c) b ng cách ghi thêm vào tr c m i t trong

ngo c nh ng gì ng tr c d u ngo c, và ghi thêm vào sau m i t này nh ng

gì ng sau d u ngo c. M t ví d khác: dòng a{d,c,b}e khi khai tri n s thu

c ba t "ade ace abe". Khai tri n d u ngo c c th c hi n tr c các d ng

khai tri n khác trong dòng l nh, h n n a t t c các ký t c bi t có trong dòng

l nh, k c nh ng ký t n m trong d u ngo c, s c gi không thay i (chúng

s c biên d ch các b c phía sau).

5.7.2 Thay th d u ngã (Tilde Expansion)

N u nh t b t u v i ký t d u ngã (' '), t t c các ký t ng tr c d u g ch

chéo u tiên (hay t t c các ký t n u nh không có d u g ch chéo) s c hi u

là tên ng i dùng (login name). N u nh tên này là m t dòng r ng (t c là d u

g ch chéo ng ngay phía sau d u ngã), thì d u ngã s c thay th b i giá tr

c a bi n HOME. Và n u giá tr c a bi n HOME không c gán thì d u ngã s c

thay th b i ng d n u n th m c cá nhân c a ng i dùng, mà ã ch y

h v . N u nh ngay sau d u ngã (và tr c d u g ch chéo) là m t t trùng v i

tên c a m t ng i dùng h p pháp, thì d u ngã c ng v i tên ng i dùng c thay

th b i ng d n y n th m c cá nhân c a ng i dùng này. N u nh t

ng sau d u ngã không ph i là tên c a m t ng i dùng (và không r ng), thì t

không b thay i. N u nh sau d u ngã là `+', hay ký hi u này s c thay th

b i tên u c a th m c hi n th i (t c là giá tr c a bi n PWD). N u d ng sau

d u ngã là `-', thì thay th giá tr c a bi n OLDPWD (th m c "c ").

5.7.3 Phép th các tham bi n và bi n s

Ký t $ c s d ng cho các thao tác th tham bi n, th các câu l nh và th

các bi u th c s h c. Bi u th c hay tên ng sau $ có th c a vào ngo c,

không nh t thi t, nh ng r t ti n, vì d u ngo c phân cách bi u th c v i các t

hay ký t ng sau. Nh v y, g i giá tr c a tham bi n nói chung c ng nh

bi n môi tr ng nói riêng trong dòng l nh, c n t bi u th c d ng $parameter.

D u ngo c ch c n thi t, n u tên c a tham bi n có ch a vài ch s , ho c khi theo

sau tên còn có các ký t khác, mà chúng ta không mu n h v "hi u l m" chúng

là m t ph n c a tên tham bi n. Trong t t c các giá tr c a bi n s x y ra phép

th d u ngã ( ), s khai tri n tham bi n và bi n s , phép th các câu l nh, phép

th các bi u th c s h c, c ng nh xóa các ký t trích d n (xem d i). S phân

chia t không x y ra, tr tr ng h p "$" (l i gi i thích xem b ng s 3). S khai

tri n các m u tên t p tin và th m c c ng không c th c hi n.

5.7.4 Phép th các câu l nh

Phép th các câu l nh là m t công c r t m ng c a bash. Ý ngh a c a nó n m

ch thay th tên các câu l nh b i k t qu th c hi n c a chúng. Có hai d ng

phép th l nh: $(command) và `command` N u ng d ng d ng th hai (chú ý

ây s d ng d u "ngo c n ng c", phím cho nó th ng n m trên phím Tab),

thì d u g ch ng c (\) trong d u ngo c s có ch c n ng nh m t ký t thông

5.7 Khai tri n bi u th c 115

th ng, tr tr ng h p, khi ng sau nó (d u g ch ng c) là m t $, `, hay m t

\. N u nh s d ng d ng $(command), thì t t c các ký t ng trong ngo c t o

thành m t câu l nh, không có ký t nào có ý ngh a c bi t. N u phép th câu

l nh x y ra phía trong ngo c kép, thì trong k t qu c a phép th s không th c

hi n phép phân chia t và s khai tri n m u tên t p tin và th m c.

5.7.5 Phép th s h c (Arithmetic Expansion)

Phép th s h c cho phép tính giá tr c a m t bi u th c s h c và thay th nó

(bi u th c) b i k t qu thu c. Có hai d ng phép th s h c: $[expression]

((expression)) Trong ó expression c hi u ( c bash c) nh khi

ng trong ngo c kép, nh ng nh ng d u ngo c kép trong expression l i

c c nh m t ký t th ng. Phía trong expression có th c hi n các phép

th tham bi n và th câu l nh. Cú pháp c a bi u th c expression t ng t nh

cú pháp c a bi u th c s h c c a ngôn ng C, c th h n v v n này có th c

trong ph n ARITHMETIC EVALUATION c a trang man c a bash. Ví d , câu

l nh

[user]$ echo $((2 + 3 * 5))

cho k t qu b ng "17". N u bi u th c không chính xác, bash s a ra thông báo

l i.

5.7.6 Phân chia t (word splitting)

Sau khi th c hi n xong các phép th tham bi n, th l nh, và th các bi u th c s

h c, h v l i phân tích dòng l nh m t l n n a (nh ng d ng thu c sau các

phép th nói trên) và th c hi n vi c phân chia t (word splitting). Thao tác này

n m ch , h v tìm trong dòng l nh t t c các ký t phân chia, xác nh b i

bi n IFS (xem trên), và nh ó chia nh dòng l nh thành các t riêng r trong

các ch t ng ng. N u giá tr c a IFS b ng m t dòng tr ng, thì vi c phân chia

t s không x y ra. N u trong dòng l nh không th c hi n phép th nào trong các

phép th k trên, thì phân chia t c ng không x y ra.

5.7.7 Khai tri n các m u tên t p tin và th m c (Pathname Expansion)

Phép th tên ng d n và t p tin (Pathname expansion) s d ng ch nh

m t m u nh g n mà có th ch ra vài t p tin (hay th m c), t ng ng v i m u

này. Sau khi phân chia t , và n u nh không a ra tùy ch n -f, thì bash s tìm

ki m trong t ng t c a dòng l nh các ký t *, ?, và [. N u tìm th y t v i m t

hay vài ký t nh v y, thì t này s c xem nh m t m u, và c n thay th b i

các t trong danh sách ng d n, t ng ng v i m u này. N u nh không tìm

th y tên t ng ng v i m u, và bi n nullglob không c a ra, thì t s không

thay i, t c là các ký t c bi t b m t giá tr và hi u nh các ký t th ng.

N u nh bi n này c xác nh, mà ng d n t ng ng v i m u không tìm

th y, thì t s b xóa kh i dòng l nh. Các ký t dùng t o m u có các giá tr

trong b ng 5.4.

116 Bash

B ng 5.4: Các ký t t o m u

Ký t Quy lu t thay th

* T ng ng v i b t k dòng ký t nào, k c dòng r ng. Ví d , v*.txt

s c thay th b i vnoss.txt, vnlinux.txt và vntex.txt

(n u các t p tin này t n t i), và *.png s t ng ng t t c các t p tin có

ph n m r ng png (t p tin h a hai chi u).

? T ng ng b t ký m t ký t n nào. Ví d , m u

file?.txt s c thayth b i các tên t p sau

file1.txt, file2.txt, file3.txt, và filea.txt

(n u chúng t n t i), nh ng file23.txt thì không.

[...] T ng ng b t k ký t nào trong s các ký t n m trong d u ngo c

vuông này. C p ký t , phân cách nhau b i d u tr (-), ví d c-f, bi u

th m t dãy; b t ký ký t nào, theo t i n, n m gi a hai ký t này, k c

hai ký t t o ra dãy (c và f trong ví d ) c ng t ng ng v i m u. N u

ký t u tiên trong ngo c vuông là hay , thì m u ( v trí này) s t ng

ng t t c các ký t , không c ch ra trong ngo

M u tên t p tin r t th ng xuyên s d ng trong dòng l nh có ch a ls. Hãy

t ng t ng là b n mu n xem thông tin c a m t th m c, trong ó có ch a m t

s l ng l n các t p tin các d ng, ví d , t p tin hình nh, phim v i d ng gif,

jpeg, avi, v.v. . . . thu c thông tin ch c a t p tin d ng jpeg, có th dùng

câu l nh

[user]$ ls *.jpg

N u trong th m c có nhi u t p tin, mà tên c a chúng là các s g m b n ch

s (th m c /proc là m t ví d +), thì l nh sau ch a ra danh sách các t p tin

có s t 0500 n 0999:

[user]$ ls -l 0[5-9]??

5.7.8 Xóa các ký t c bi t

Sau khi làm xong t t c các phép th , các ký t \, ` và " còn l i trong dòng

l nh (chúng c s d ng hu b giá tr c bi t c a các ký t khác) s b xóa

h t.

5.8 Shell - m t ngôn ng l p trình

Nh ã nói trên, có th xây d ng b t k gi i thu t nào, c ng c n có các toán

t ki m tra i u ki n. H v bash h tr các toán t l a ch n if...then...else

và case, c ng nh các toán t vòng l p for, while, until, nh ó nó (bash)

tr thành m t ngôn ng l p trình m nh.

5.8 Shell - m t ngôn ng l p trình 117

5.8.1 Toán t if và test (ho c [ ])

C u trúc c a toán t i u ki n có d ng thu g n nh sau:

if list1 then list2 else list3 fi

trong ó, list1, list2, và list3 là các chu i câu l nh, phân cách nhau b i

d u ph y và k t thúc b i m t d u ch m ph y hay ký t dòng m i. Ngoài ra, các

chu i này có th c a vào d u ngo c nh n: list. Toán t if ki m tra giá tr

c tr l i b i các câu l nh t list1. N u trong danh sách có vài câu l nh, thì

ki m tra giá tr c tr l i b i câu l nh cu i cùng c a danh sách. N u giá tr

này b ng 0, thì s th c hi n các l nh t list2; còn n u giá tr này khác không,

thì s th c hi n nh ng l nh t list3. Giá tr c tr l i b i toán t if nh

v y, trùng v i giá tr mà chu i l nh th c hi n (list2 ho c list3) a ra. D ng

y c a l nh if nh sau:

if list then list [ elif list then list ] ... [ else list ] fi

( ây d u ngo c vuông ch có ngh a là, nh ng gì n m trong nó, ngo c vuông,

không nh t thi t ph i có). Bi u th c ng sau if hay elif th ng là câu l nh

test, mà có th c bi u th b i d u ngo c vuông [ ]. L nh test th c hi n

phép tính m t bi u th c nào ó, và tr l i giá tr 0, n u bi u th c là úng, và 1

trong tr ng h p ng c l i. Bi u th c c a t i ch ng trình test nh m t

tham s c a ch ng trình. Thay vì gõ test expression có th a bi u th c

expression vào ngo c vuông: [ expression ]

C n chú ý r ng, test và [ ó là hai tên c a c a cùng m t ch ng trình, ch

không ph i là m t phép bi n hóa th n thông nào ó c a h v bash (ch là cú

pháp c a [ òi h i ph i có d u óng ngo c). Và c ng c n chú ý r ng ch c a

test trong c u trúc if có th s d ng b t k ch ng trình nào. k t thúc m c

này, chúng ta a ra ví d s d ng if:

if [ -x /usr/bin/unicode_start ] ; then

unicode_start

else

echo "hello world"

fi

V toán t test (hay [...]) c n i sâu h n.

5.8.2 Toán t test và i u ki n c a bi u th c

Bi u th c i u ki n, s d ng trong toán t test, c xây d ng trên c s ki m

tra thu c tính t p tin, so sánh các dòng và các so sánh s h c thông th ng. Bi u

th c ph c t p h n c t o ra t các thao tác n và kép sau ("nh ng viên g ch

c s "):

-a file

úng n u t p tin có tên file t n t i.

118 Bash

-b file

úng n u file t n t i, và là m t t p tin thi t b kh i (block device) c

bi t.

-c file

úng n u file t n t i, và là m t t p tin thi t b ký t (charater device) c

bi t.

-d file

úng n u file t n t i và là m t th m c.

-e file

úng n u t p tin có tên file t n t i.

-f file

úng n u t p tin có tên file t n t i và là m t t p tin thông th ng.

-g file

úng n u t p tin có tên file t n t i và c t bit thay i nhóm.

-h file hay -L file

úng n u t p tin có tên file t n t i và là liên k t m m (liên k t t ng

tr ng).

-k file

úng n u t p tin có tên file t n t i và c t bit sticky.

-p file

úng n u t p tin có tên file t n t i và là tên c a m t ng (kênh FIFO).

-p file

úng n u t p tin có tên file t n t i và là tên c a m t ng (kênh FIFO).

-r file

úng n u t p tin có tên file t n t i và có quy n c.

-s file

úng n u t p tin có tên file t n t i và kích th c l n h n không.

-t fd

úng n u b mô t c a t p tin (fd) m và ch lên terminal.

-u file

úng n u t p tin có tên file t n t i và c t bit thay i ng i dùng.

-w file

úng n u t p tin có tên file t n t i và có quy n ghi.

-x file

úng n u t p tin có tên file t n t i và có quy n th c thi.

5.8 Shell - m t ngôn ng l p trình 119

-0 file

úng, n u t p tin có tên file và ch s h u c a nó là ng i dùng mà ID

có hi u l c ch n.

-G file

úng, n u t p tin có tên file t n t i và thu c v nhóm, xác nh b i ID

nhóm có hi u l c.

-S file

úng, n u t p tin có tên file t n t i và là socket.

-N file

úng, n u t p tin có tên file t n t i và thay i t l n c c cu i cùng.

file1 -nt file2

úng, n u t p tin file1 có th i gian s a i mu n h n file2.

file1 -ot file2

úng, n u t p tin file1 "già" h n file1 (tr ng h p ng c l i c a tr ng

h p trên).

file1 -ef file2

úng, n u t p tin file1 và file2 có cùng m t s thi t b và ch s mô t

inode.

-o optname

úng, n u tùy ch n optname c a h v c kích ho t. Chi ti t xin xem

trên trang man bash.

-z string

úng, n u dài c a chu i string b ng không.

-n string

úng, n u dài c a chu i khác không.

string1 == string2

úng, n u hai chu i trùng nhau. Có th thay hai == b ng m t =.

string1 !== string2

úng, n u hai chu i không trùng nhau.

string1 < string2

úng, n u chu i string1, theo t i n, ng tr c chu i string2 ( i v i

ngôn ng hi n th i).

string1 > string2

úng, n u chu i string1, theo t i n, ng sau chu i string2 ( i v i

ngôn ng hi n th i).

arg1 OP arg2

ây OP là m t trong các phép so sánh s h c: -eq (b ng), -ne (khác,

không b ng), -lt (nh h n), -le (nh h n ho c b ng), -gt (l n h n), -ge

120 Bash

(l n h n ho c b ng). ch các tham s arg1 và arg2 có th s d ng các s

nguyên (âm ho c d ng).

T các bi u th c i u ki n c b n này có th xây d ng các bi u th c ph c t p

theo ý mu n nh các phép lôgíc thông th ng PH NH, VÀ (c ng) và HO C:

!(expression)

Phép ph nh. úng, n u bi u th c sai.

expression1 -a expression2

Phép c ng lôgic AND. úng n u c hai bi u th c u úng.

expression1 -o expression2

Phép lôgíc ho c OR. úng n u m t trong hai bi u th c úng.

5.8.3 Toán t case

D ng c a toán t case nh sau:

case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac

Câu l nh case u tiên khai tri n t word, và so sánh nó (word) v i m i t trong

m u pattern theo th t . Sau khi tìm th y s trùng nhau u tiên thì d ng

vi c so sánh l i, và th c hi n danh sách list các câu l nh ng sau m u ã

tìm th y. Giá tr tr l i b i toán t này, b ng 0, n u không tìm th y s trùng

nhau nào. Trong tr ng h p ng c l i, tr l i giá tr mà câu l nh cu i cùng

trong danh sách list a ra. Ví d s d ng toán t case sau l y 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

N u bi n s (UTC) nh n giá tr yes ho c true, thì s th c hi n c p l nh th

nh t, nh n giá tr no ho c false - c p th hai.

5.8.4 Toán t select

Toán t select cho phép t ch c h i tho i v i ng i dùng. Nó có d ng sau:

select name [ in word; ] do list; done

5.8 Shell - m t ngôn ng l p trình 121

Lúc u t m u word hình thành m t danh sách nh ng t t ng ng v i m u

này. T p h p nh ng t này c a vào kênh thông báo l i tiêu chu n, h n n a

m i t c i kèm v i m t s th t . N u m u word b b qua (không có trong

toán t select), thì s a vào các tham bi n v trí (xem trên) theo m t cách

t ng t . Sau ó, d u nh c PS3 c a ra, và h v ch chu i nh p vào trên

u vào tiêu chu n. N u chu i nh p vào có ch a s , t ng ng v i m t trong các

s ã hi n ra, thì bi n name s c gán giá tr b ng t i kèm v i s này. N u

nh p vào m t dòng r ng, thì s và t s c hi n ra them m t l n n a. N u

nh p vào b t k m t giá tr nào khác, thì bi n name s nh n giá tr b ng không.

Chu i mà ng i dùng nh p vào, c ghi l i trong bi n REPLY. Danh sách l nh

list c th c hi n v i giá tr bi n name ã ch n. Sau ây là m t script nh

(xin hãy gõ không d u n u console c a b n ch a h tr vi c hi n th Ti ng Vi t):

#!/bin/sh

echo "B n thích dùng OS nào?"

select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris"

"QNX" "Other"; do

break

done

echo "B n ã ch n $var"

Ghi o n trên vào m t t p tin (ví d , select.sh), thay i t p tin thành

kh thi (ví d , chmod 755 select.sh), và ch y (./select.sh). Trên màn

hình s hi n ra câu h i sau:

B n thích dùng OS nào?

1) Linux 3) Free BSD 5) Solaris 7) Other

2) Gnu Hurd 4) MacOSX 6) QNX

#?

Hãy nh n m t trong 7 s a ra (t 1 n 7). N u b n nh p 4 (nh n c

<Enter>), thì s th y thông báo sau:

B n ã ch n MacOSX

5.8.5 Toán t for

Toán t for làm vi c có khác m t chút so v i for trong các ngôn ng l p

trình thông th ng. Thay vì t ng ho c gi m giá tr c a m t bi n s nào ó (lên

ho c xu ng) m t n v sau m i vòng l p, thì nó gán giá tr ti p theo trong

danh sách t a s n cho bi n ó trong m i vòng l p. Nói chung c u trúc có

d ng sau:

for name in words do list done

Quy lu t xây d ng danh sách l nh (list) gi ng trong toán t if. Ví d . Script

sau t o các t p tin fu1, fu2, và fu3:

122 Bash

for a in 1 2 3 ; do

touch fu$a

done

Có th gõ ba dòng này trên m t dòng l nh, k t qu thu c t ng t v i

script. D ng t ng quát c a toán t for nh sau:

for name [ in word; ] do list ; done

u tiên c ng x y ra s khai tri n t word theo quy lu t khai tri n bi u th c

(xem trên). Sau ó bi n name l n l t c gán các giá tr thu c t s

khai tri n này, và th c hi n danh sách l nh list trong m i l n nh v y. N u

không có "in word", thì danh sách l nh list c th c hi n m t l n cho m i

tham bi n v trí ã a ra. Trên Linux có ch ng trình seq, ti p nh n hai

s nguyên làm tham s , và a ra chu i t t c các s n m gi a hai s này (c ng

thêm c chúng). Nh câu l nh này có th s d ng for c a bash làm vi c nh

toán t for trong các ngôn ng l p trình thông th ng. làm c i u này

ch c n vi t vòng l p for nh sau:

for a in $( seq 1 6 ) ; do

cat fu$a

done

Câu l nh (script) này a ra màn hình n i dung c a 10 t p tin (n u có): "fu1",

..., "fu10".

5.8.6 Toán t while và until

Toán t while làm vi c t ng t nh if, nh ng vòng l p các câu l nh trong

list2 ch th c hi n khi i u ki n còn úng, và s ng ng khi i u ki n không

th a mãn. C u trúc có d ng nh sau:

while list1 do list2 done

Ví d :

while [ -d directory ] ; do

ls -l directory >> logfile

echo -- SEPARATOR -- >> logfile

sleep 60

done

Ch ng trình (script) trên s theo dõi và ghi l i n i dung c a th m c directory

theo t ng phút n u th m c còn t n t i. Toán t until t ng t nh toán t

while:

until list1 do list2 done

5.8 Shell - m t ngôn ng l p trình 123

i m khác bi t n m ch , s d ng giá tr ph nh c a i u ki n list1, t c

là list2 th c hi n, n u câu l nh cu i cùng trong danh sách list1 tr l i tr ng

thái thoát ra khác không.

5.8.7 Các hàm s

Cú pháp H v bash cho phép ng i dùng t o các hàm s cho mình. Hàm s

làm vi c và c s d ng gi ng nh các câu l nh thông th ng c a h v , t c là

chúng ta có th t t o các câu l nh m i. Hàm s có c u trúc nh sau:

function name () { list }

H n n a t function không nh t thi t ph i có, name xác nh tên c a hàm

(dùng g i hàm), còn ph n thâm c a hàm s t o b i danh sách các câu l nh

list, n m gi a { và }. Các câu l nh này s c th c hi n m i khi tên name

c g i (gi ng nh m t l nh thông th ng). C n chú ý r ng hàm có th là

qui, t c là g i hàm s ngay trong ph n thân c a nó. Hàm s th c hi n trong

ph m vi h v hi n th i: không có ti n trình m i nào c ch y khi biên d ch

hàm s (khác v i vi c ch y script).

5.8.8 Tham s

Khi hàm s c g i th c hi n, các tham s c a hàm s tr thành các tham

bi n v trí (positional parameters, xem trên) trong th i gian th c hi n hàm

này. Chúng c t các tên nh $n, trong ó n là s c a tham s mà chúng ta

mu n s d ng. Vi c ánh s b t u t 1, nh v y $1 là tham s u tiên. C ng

có th s d ng t t c các tham s m t lúc nh $*, và a ra s th t c a tham

s nh $# Tham s v trí s 0 không thay i. Trong khi th c hi n n u g p câu

l nh n i trú return (trong ph n thân c a hàm), thì hàm s s b d ng l i và

quy n i u khi n c trao cho câu l nh ng sau hàm. Khi th c hi n xong hàm

s , các tham bi n v trí và tham bi n c bi t # s c tr l i các giá tr mà

chúng có tr c khi ch y hàm.

5.8.9 Bi n n i b (local)

N u mu n t o m t tham bi n a ph ng, có th s d ng t khóa local. Cú

pháp a ra bi n a ph ng gi ng h t các tham bi n khác, ch có i u c n ng

sau t khóa local: local name=value. D i ây là m t ví d hàm s , th c

hi n công vi c c a l nh seq ã nh c n trên:

seq()

{local I=$1;

while [ $2 != $I ]; do

{echo -n "$I ";

I=$(( $I + 1 ))

124 Bash

};

done;

echo $2

}

C n chú ý n tùy ch n -n c a echo, nó (tùy ch n) h y b vi c t o dòng m i.

M c dù tùy ch n này không có nhi u ý ngh a v i m c ích chúng ta mu n ây,

nh ng s r t có ích trong các hàm s v i m c ích khác. Hàm s tính giai th a

fact M t ví d khác:

fact()

{if [ $1 = 0 ]; then

echo 1;

else

{echo $(( $1 * $( fact $(( $1 -- 1 )) ) ))

};

fi

}

ây là hàm s giai th a, m t ví d c a hàm qui. Hãy chú ý n s khai

tri n s h c, và phép th các câu l nh.

5.9 Script c a h v và l nh source

Script c a h v ch là các t p tin có ch a chu i l nh. T ng t hàm s script có

th c th c hi n nh m t câu l nh. Cú pháp truy c p n các tham s c ng

nh hàm s . Trong các tr ng h p thông th ng khi ch y script s có m t ti n

trình m i c ch y. có th th c hi n script trong b n bash hi n th i, c n

s d ng câu l nh source, hay m t d u ch m "." ( ng ngh a c a source). Trong

tr ng h p này script ch n gi n là m t tham s c a l nh nói trên. Câu l nh s

có d ng:

source filename [arguments]

Câu l nh này c và th c hi n các câu l nh có trong t p tin filename trong

môi tr ng hi n th i, và tr l i giá tr , xác nh b i câu l nh cu i cùng c a

filename. N u filename không ch a d u g ch chéo, thì ng d n, li t kê

trong bi n s PATH, s c s d ng tìm t p tin có tên filename. T p tin

này không nh t thi t ph i kh thi (không nh t thi t ph i có bit x). N u trong

th m c, li t kê trong PATH, không tìm th y t p tin c n, thì s tìm nó (t p tin)

trong th m c hi n th i. N u có các tham s ( a ra arguments, xem nh d ng

câu l nh trên), thì trong th i gian th c hi n script chúng s thành các tham

bi n v trí. N u không có tham s , thì tham bi n v trí không thay i. Giá tr

(tr ng thái), mà l nh source tr l i, trùng v i giá tr , tr l i b i câu l nh cu i

cùng trong script. N u không câu l nh nào c th c hi n, ho c không tìm th y

t p tin filename, thì tr ng thái thoát b ng 0.

5.10 Câu l nh sh 125

5.10 Câu l nh sh

B n luôn luôn có th ch y m t b n sao c a h v bash nh câu l nh bash hay sh.

Khi này có th b t b n sao này ch y m t script nào ó, n u a tên c a script

nh m t tham s cho l nh bash. Nh v y, th c hi n script myscript c n

a câu l nh "sh myscript". N u xem n i dung c a m t t p tin script nào ó

(nh ng t p tin nh v y có r t nhi u trên h th ng), b n s th y dòng u tiên có

d ng sau: #!/bin/sh. i u này có ngh a là, khi chúng ta g i script th c hi n

nh m t l nh thông th ng, thì /bin/sh s giúp chúng ta "thu x p" m i th . Có

th thay th dòng này b i liên k t n b t k m t ch ng trình nào, mà s c

t p tin và th c hi n các câu l nh t ng ng. Ví d , script trên ngôn ng Perl b t

u b i dòng có d ng !/bin/perl. M t chú ý khác là ký t # dùng vi t l i

chú thích trong script. T t c nh ng gì ng sau ký t này n cu i dòng s c

coi là chú thích và b bash b qua (t c là h v s không xem dòng này là câu

l nh). N u b n mu n ki m ch ng l i tác d ng c a ký t này, thì hãy nh p vào

dòng l nh m t câu l nh b t k , và t tr c nó (câu l nh) ký t #, ví d "# ls",

b n s th y r ng h v b qua câu l nh này.

Chúng ta s d ng bài h c ng n g n v bash t i ây. T t nhiên, còn r t nhi u

v n quan tr ng c n xem xét nh ng n m ngoài ph m vi c a bài h c, ví d , qu n

lý ti n trình, l ch s câu l nh, mô t v th vi n readline, tín hi u, v.v. . . Các b n

s tìm th y thông tin c n thi t trong các cu n h ng d n khác ho c trên trang

man bash.

Ch ng 6

S d ng Midnight Commander

M i th u ã c vi t ra ­ các nhà l p trình Nga.

Trong ch ng này chúng ta s h c cách s d ng ch ng trình Midnight Commander,

m t trình qu n lý t p tin m nh. Sau khi c xong ch ng này b n c s có th s d ng các

t h p phím c ng nh giao di n c a Midnight Commander th c hi n r t nhi u công vi c

có liên quan n h th ng t p tin t nh bé n n ng nh c. u tiên chúng ta hãy xem xét

cách cài t ch ng trình này. . .

6.1 Cài t ch ng trình Midnight Commander

M c dù i u khi n h th ng t p tin nói chung và làm vi c v i các t p tin

nói riêng có th s d ng các câu l nh c a h i u hành, nh pwd, ls, cd,

mv, mkdir, rmdir, cp, rm, cat, more v.v. . . nh ng s thu n ti n h n khi

s d ng ch ng trình Midnight Commander.

Midnight Commander (hay th ng rút g n thành mc) là ch ng trình cho

phép xem c u trúc cây th m c và th c hi n nh ng thao tác i u khi n h th ng

t p tin. Nói cách khác, ây là trình qu n lý t p tin (File Manager). N u nh b n

c có kinh nghi m làm vi c v i Norton Commander (nc) trong MS-DOS hay v i

FAR trong Windows, thì s làm vi c v i mc m t cách d dàng. B i vì th m chí

nh ng t h p "phím nóng" chính c a chúng c ng trùng nhau. Trong tr ng h p

này, có th làm vi c v i Midnight Commander b n c ch c n xem nhanh

nh ng n i dung phía d i. Tác gi xin có l i khuyên i v i nh ng ai còn xa l

v i NC hay FAR (n u nh có?): hãy chú ý c và th c hành ch m ch , vì Midnight

Commander s giúp r t nhi u trong khi làm vi c v i h i u hành.

Ghi chú:

1. Ki n th c trong ch ng này c vi t s d ng cho phiên b n 4.6.1-pre31, m c

dùng có th áp d ng cho nh ng phiên b n khác.

2. Ki n th c a ra ch áp d ng c hoàn toàn trong tr ng h p ch ng trình ch y

t kênh giao tác (console), hay còn g i là giao di n text. Khi làm vi c v i ch ng

trình qua trình gi l p (emulator) c a terminal trong giao di n h a, ví d

xterm, rxvt, v.v. . . thì m t s mô t ho t ng c a ch ng trình s không còn

1trong b n g c tác gi Kostromin dùng phiên b n 4.5.30, theo ý ki n ng i d ch là khá c và không còn g p

trong nh ng b n phân ph i Linux m i.

6.2 V ngoài c a màn hình Midnight Commander 127

Hình 6.1: Giao di n ti ng Vi t c a Midnight Commander

chính xác n a, vì vi c nh n phím ã b v h a chi m l y. S không t ng ng

nh v y th ng g p nh ng ch nói v phím "nóng".

Trong ph n l n các b n phân ph i ch ng trình Midnight Commander không

c t ng cài t cùng v i h th ng. Nh ng các gói (rpm, deb, tgz . . . ) c a

Midnight Commander s có trên a, và vi c cài t t các gói này là không khó

kh n gì. Và b i vì ch ng trình này s làm cho b n c "d th " h n, tác gi r t

mu n r ng ch ng trình s c cài t ngay sau khi cài xong h i u hành.2

6.2 V ngoài c a màn hình Midnight Commander

kh i ng Midnight Commander, c n gõ vào dòng l nh shell câu l nh mc

và nh n <Enter>. N u ng d ng không ch y, thì c n tìm xem t p tin ch ng

trình mc n m âu (có th dùng câu l nh find / -name mc -type f), sau

ó gõ vào dòng l nh ng d n y t i t p tin ó, ví d , trên máy tác gi là

/usr/bin/mc. Sau khi ch y ch ng trình, b n c s th y màn hình màu da tr i

làm chúng ta nh n màn hình ch ng trình Norton Commander cho MS-DOS

hay ch ng trình FAR cho Windows nh trong hình 6.2.

G n nh toàn b không gian màn hình khi làm vi c v i Midnight Commander

b chi m b i hai "b ng"3 hi n th danh sách t p tin c a hai th m c. phía trên

hai b ng này là trình n (th c n). Có th chuy n n trình n ch n các

l nh có trong ó b ng phím <F9> ho c nh phím chu t (n u nh sau khi kh i

2Ngoài ra ng i d ch cu n sách này c ng ã d ch giao di n c a Midnight Commander ra ti ng Vi t. Vì th

n u mu n b n có th s d ng giao di n ti ng m c a Midnight Commander.

3panel

128 S d ng Midnight Commander

Hình 6.2: V ngoài c a màn hình Midnight Commander

ng mc b n c không nhìn th y dòng trình n âu, thì c ng ng bu n, vì có

hi n th trình n hay không c xác nh b i c u hình ch ng trình).

Dòng d i cùng là dãy các nút, m i nút t ng ng v i m t phím ch c n ng

<F1> ­ <F10>. Có th coi dòng này là l i mách n c v cách s d ng nh ng phím

ch c n ng ã nói, và còn có th ch y tr c ti p các câu l nh t ng ng b ng cách

nh n chu t vào các nút này. Vi c hi n th các nút có th t t i, n u nh b n c

mu n ti t ki m không gian màn hình (cách làm s có sau này khi chúng ta nói

v c u hình ch ng trình). S ti t ki m có hai lý do. Th nh t, b n c s nhanh

chóng nh c công d ng c a 10 phím này, và l i mách n c s tr thành không

c n thi t (và vi c nh n chu t lên các nút không ph i lúc nào c ng thu n ti n).

Th hai, th m chí n u b n c không nh ph i dùng phím nào th c hi n công

vi c mong mu n, thì v n có th s d ng trình n File (T p tin) trong trình n

chính c a ch ng trình (ch c n nh r ng, phím chuy n vào trình n chính

là <F9>). Qua trình n File (T p tin) có th th c hi n b t k thao tác nào mà

thông th ng ph i nh các phím ch c n ng, ngo i tr <F1> và <F9>.

Dòng th hai t d i lên là dòng l nh c a ch ng trình Midnight Commander

(hay chính xác h n là dòng l nh c a shell hi n th i). ây có th nh p và th c

hi n b t k câu l nh nào c a h th ng. phía trên dòng này (nh ng phía d i

các b ng) có th hi n th "nh ng l i khuyên có ích" (hint4s). C ng có th b i

dòng l i khuyên này khi i u ch nh c u hình c a ch ng trình.

M i b ng g m ph n u, danh sách t p tin c a m t th m c nào ó và dòng

tr ng thái nh (mini-status, có th không hi n th n u t trong c u hình ch ng

trình). Trong ph n u c a m i b ng là ng d n y n th m c có n i

dung c hi n th , và ng th i còn có ba nút ­ "<", "v" và ">" s d ng i u

khi n ch ng trình b ng chu t (nh ng nút này không làm vi c n u nh b n c

ch y mc trong trình gi t o (emulator) terminal). Trên dòng tr ng thái nh có

hi n th m t vài d li u v t p tin hay th m c ang c thanh chi u sáng ch

n (ví d , kích th c t p tin và quy n truy c p).

6.3 Tr giúp 129

Ch m t trong hai b ng là hi n th i (ho t ng). B ng hi n th i có thanh

chi u sáng tên th m c ph n u và thanh chi u sáng m t trong nh ng dòng

c a b ng ó. T ng t , trong shell ã ch y ch ng trình Midnight Commander,

th m c hi n th i là th m c c hi n th trong b ng ho t ng. H u h t các

thao tác c th c hi n trong th m c này. Các thao tác nh sao chép (<F5>)

hay di chuy n (<F6>) t p tin s d ng th m c c hi n th trong b ng th hai

làm th m c ích n (s sao chép hay di chuy n n th m c này).

Trong b ng ho t ng m t dòng c chi u sáng. Thanh chi u sáng có th di

chuy n nh các phím i u khi n vi c di chuy n. Ch ng trình xem t p tin n i

trú, ch ng trình xem l i mách n c và ch ng trình xem th m c s d ng cùng

m t mã ch ng trình i u khi n vi c di chuy n. Vì th vi c di chuy n s d ng

m t b các t h p phím (nh ng trong m i ch ng trình con có các t h p phím

ch áp d ng trong n i b mà thôi). Xin a ra m t b ng ng n g n li t kê các t

h p phím dùng chung i u khi n vi c di chuy n.

B ng 6.1: Các t h p phím di chuy n dùng chung

Phím Di chuy n th c hi n

< > ho c <Ctrl>+<P> Di chuy n tr l i (lên trên) m t dòng

< > ho c <Ctrl>+<N> Di chuy n v phía tr c (xu ng d i) m t dòng

<Page Up> ho c <Alt>+<V> Quay l i m t trang

<Page Down> ho c <Ctrl>+<V> Ti n v tr c m t trang

<Home> Quay v dòng u

<End> Chuy n n dòng cu i cùng

6.3 Tr giúp

Khi làm vi c v i ch ng trình Midnight Commander, có th xem tr giúp vào b t

k lúc nào nh phím <F1>. Tr giúp c t ch c d i d ng siêu v n b n, t c

là trong v n b n có c nh ng liên k t n nh ng ph n khác. Nh ng liên k t ó

c ánh d u b i n n màu xanh nh t . Liên k t c ch n hi n th i s có n n

màu xanh m .

di chuy n trong c a s xem tr giúp có th s d ng nh ng phím m i tên

ho c chu t. Ngoài nh ng t h p phím di chuy n nói chung trong b ng 6.1, ch ng

trình xem tr giúp còn ch p nh n nh ng t h p phím s d ng trong ch ng trình

con dùng xem t p tin:

B ng 6.2: Di chuy n trong trình xem t p tin

Phím Di chuy n th c hi n

<B> ho c <Ctrl>+<B> ho c <Ctrl>+<H> ho c Lùi l i m t trang

<Backspace> ho c <Delete>

<D u cách> Ti n t i m t trang

<U> ( <D> ) Lùi l i (ti n t i) n a trang

<G> (<Shift>+<G>) i t i u (cu i) danh sách

130 S d ng Midnight Commander

Ngoài nh ng t h p phím ã ch ra còn có th s d ng nh ng t h p ch làm

vi c khi xem tr giúp (chúng c li t kê trong b ng 6.3).

B ng 6.3: Di chuy n khi xem tr giúp

Phím Di chuy n th c hi n

<Tab> i t i liên k t ti p theo

<Alt>+<Tab> Quay l i liên k t tr c

< > i t i liên k t ti p theo ho c kéo lên m t dòng

< > Quay l i liên k t tr c ho c kéo xu ng m t dòng

< > ho c <Enter> M trang mà liên k t hi n th i ch t i

< > ho c <L> M trang tr giúp v a xem tr c trang hi n th i

<F1> Tr giúp s d ng c a b n thân tr giúp

<N> Chuy n t i ph n ti p theo c a tr giúp

<P> Chuy n t i ph n n m tr c c a tr giúp

<C> Chuy n t i m c l c c a tr giúp

<F10>, <Esc> Thoát kh i tr giúp

B n có th s d ng phím tr ng (space) chuy n t i trang tr giúp ti p theo

và phím <B> quay l i m t trang. Ch ng trình ghi nh th t di chuy n theo

liên k t và cho phép tr l i ph n ã xem tr c ó b ng phím <L>.

N u nh có h tr chu t (xem ph n 6.4), thì có th s d ng chu t di chuy n.

Nh n chu t trái lên liên k t chuy n t i v n b n mà liên k t này ch t i. Chu t

ph i s d ng quay l i ph n ã xem tr c ó.

6.4 S d ng chu t

Ch ng trình Midnight Commander có h tr chu t. Tính n ng này c th c

hi n n u có ch y driver gpm không ph thu c vào n i ng i dùng làm vi c là

trên kênh giao tác Linux hay ch y Midnight Commander trên xterm (ho c th m

chí s d ng k t n i t xa qua telnet, rlogin hay ssh).

B ng cách nh n nút chu t trái s có th di chuy n dòng chi u sáng lên b t k

t p tin nào trong các b ng. ánh d u (ch n) t p tin nào ó, ch c n nh n nút

chu t ph i lên tên c a t p tin ó, khi này tên t p tin s có màu khác (theo m c

nh là màu vàng ). b ánh d u thì c ng ch c n s d ng nút chu t ph i ó.

Nh n kép chu t trái lên tên t p tin th c hi n t p tin (n u ây là m t

ch ng trình), ho c ch y ch ng trình có kh n ng và ã c gán c t p tin

này. Ví d ch ng trình xv c gán m các t p tin hình n *.jpg, thì khi

nh n kép chu t trái lên t p tin screenshot.jpg, ch ng trình xv s cho chúng

ta th y t p tin screenshot.jpg trông ra sao.

Nh n chu t (b t k nút nào) lên các nút ch c n ng (các nút F1-F10 d i

cùng) c ng ng th i ch y ch ng trình t ng ng v i nút ó. Nh n chu t (b t

k nút nào) lên trình n trên cùng s m ra (nói úng h n là m xu ng d i)

trình n con c a nó.

N u nh n chu t lên khung trên cùng c a b ng có m t danh sách các t p tin

r t dài, thì s th c hi n di chuy n dài 1 c t t p tin v phía u danh sách. Nh n

6.5 i u khi n các b ng 131

chu t lên khung n m d i c a b ng, thì t ng ng s th c hi n di chuy n dài 1

c t t p tin v phía cu i danh sách. Ph ng pháp di chuy n này c ng làm vi c khi

xem tr giúp và xem danh sách Cây th m c

N u ch y mc v i h tr chu t thì ng i dùng có th th c hi n các thao tác

sao chép và dán v n b n khi gi phím <Shift>. làm c i u này, b n c n

nh n và gi phím <Shift>, ch n o n v n b n c n thi t b ng cách kéo chu t, sau

ó th phím <Shift> ra, a con tr n n i c n dán, r i l i nh n và gi phím

<Shift> trong khi nh n chu t ph i. C n chú ý r ng tính n ng này không làm

vi c trong các trình gi l p terminal nh xterm.

6.5 i u khi n các b ng

Các b ng c a Midnight Commander thông th ng hi n th nh ng gì có trong th

m c c a h th ng t p tin (vì th th ng c g i là b ng th m c). Tuy nhiên

có th hi n th nh ng thông tin khác trên b ng. Trong ph n này s nói n cách

thay i d ng c a b ng hay cách hi n th thông tin trên b ng.

6.5.1 D ng danh sách t p tin

D ng b ng trên ó hi n th danh sách t p tin và th m c con có th thay i qua

các câu l nh c a th c n m ra khi ch n B ng trái (Left) và B ng ph i (Right).

N u b n c mu n thay i d ng hi n th danh sách t p tin, thì có th s d ng

câu l nh D ng danh sách... (Listing mode...) c a b ng (trái ho c ph i) t ng

ng. Có 4 kh n ng ch n: y (Full), Thu g n (Brief), M r ng (Long)

và Ng i dùng t xác nh (User).

Hình 6.3: H p tho i ch n nh d ng hi n th

nh d ng y (Full) hi n th tên t p tin, kích th c c a nó và th i

gian s a i g n nh t.

nh d ng Thu g n (Brief) ch hi n th tên t p tin, do ó trên m i b ng có

hai c t và hi n th c s t p tin nhi u g p ôi.

132 S d ng Midnight Commander

nh d ng M r ng (Long) hi n th t p tin nh khi th c hi n câu l nh

ls -l. V i nh d ng này m t b ng chi m h t màn hình.

N u ch n nh d ng Ng i dùng t xác nh (User), thì ng i dùng c n

a ra d ng hi n th t ch n c a mình.

Khi t a ra nh d ng, thì u tiên c n ch ra kích th c c a b ng: "half"

(m t n a màn hình) ho c "full" (toàn màn hình). Sau kích th c b ng có th ch

ra là trên b ng ph i có hai c t b ng cách thêm s 2 vào dòng nh d ng. Ti p

theo c n li t kê tên nh ng vùng hi n th cùng v i chi u r ng c a vùng. Có th s

d ng nh ng tên vùng sau:

name ­ tên t p tin.

size ­ kích th c t p tin.

bsize ­ kích th c d ng khác, khi ó ch a ra kích th c t p tin, còn i

v i th m c con thì ch a ra dòng ch "SUB-DIR" ho c "UP­DIR".

type ­ hi n th d ng t p tin (m t ký t ). Ký t này có th là m t trong

nh ng giá tr mà câu l nh ls -F a ra:

* (asterisk) ­ cho t p tin ch ng trình.

/ (slash) ­ cho th m c.

@ (at-sign) ­ cho liên k t (links).

= (gi u b ng) ­ cho các sockets.

- (g ch ngang) ­ cho các thi t b trao i theo byte.

+ (d u c ng) ­ cho các thi t b trao i theo block.

| (pipe, ng) ­ cho các t p tin d ng FIFO.

(d u sóng) ­ cho các liên k t t ng tr ng n th m c.

! (d u ch m than) ­ cho các liên k t t ng tr ng ã h ng (stalled) (liên

k t ch n t p tin không còn n a).

mtime ­ th i gian s a i t p tin cu i cùng.

atime ­ th i gian truy c p n t p tin l n cu i.

ctime ­ th i gian t o t p tin.

perm ­ dòng ch ra quy n truy c p n t p tin.

mode ­ quy n truy c p d ng s 8bit.

nlink ­ s liên k t n t p tin.

ngid ­ ch s xác nh c a nhóm (GID).

nuid ­ ch s xác nh c a ng i dùng (UID).

owner ­ ch s h u t p tin.

6.5 i u khi n các b ng 133

group ­ nhóm s h u t p tin.

inode ­ ch m c inode c a t p tin.

ng th i còn có th s d ng nh ng tên vùng sau t ch c vi c hi n th

thông tin ra màn hình:

space ­ chèn kho ng tr ng.

mark ­ chèn d u sao * (asterisk) n u t p tin c ch n, ho c kho ng tr ng

­ n u ng c l i.

| ­ chèn ng th ng ng.

có th xác nh chính xác chi u r ng c a m t vùng, c n thêm d u hai

ch m `:', sau ó ch ra s v trí (ký t ) c n gi cho vùng này. N u sau s v tr có

t d u `+', thì s ó s c hi u là chi u r ng nh nh t c a vùng, và n u màn

hình cho phép thì vùng s c m r ng.

Ví d , nh d ng y (Full) th c ch t c xác nh b i dòng:

half type,name,|,size,|,mtime

còn nh d ng M r ng (Long) thì xác nh b i:

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

D i ây là ví d d ng hi n th do ng i dùng a ra:

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

Hi n th danh sách t p tin trên m i b ng còn có th s p x p theo m t trong 8

cách:

Theo tên

Theo ph n m r ng

Theo kích th c t p tin

Theo th i gian s a i

Theo th i gian truy c p l n cu i

Theo ch m c inode

Không s p x p.

Có th ch n cách s p x p b ng cách ch n câu l nh Th t s p x p (Sort

order...) trong trình n t ng ng c a m i b ng. Khi ó s hi n ra m t h p

tho i (hình 6.4) ngoài vi c cho phép ch n cách s p x p còn cho phép ch n s p

x p theo th t ng c l i ( ánh d u tu ch n Ng c l i (Reverse)), hay s p x p

có tính n ki u ch th ng ch hoa hay không (tùy ch n Tính n ki u ch

(case sensitive)).

Theo m c nh các th m c con c hi n th u danh sách, nh ng c ng

có th thay i n u ánh d u tùy ch n Tr n l n t t c t p tin ("Mix all files")

c a câu l nh C u hình... (Configuration...) th c n C u hình (Option). Ng i

dùng c ng có th ch n ch hi n th trên b ng nh ng t p tin t ng ng v i m t

134 S d ng Midnight Commander

Hình 6.4: H p tho i s p x p

m u nào ó. Câu l nh L c t p tin... (Filter...) trong th c n c a m i b ng cho

phép a ra nh ng m u mà tên t p tin s hi n th t ng ng v i nó (ví d dùng

m u "*.tar.gz" ch hi n th nh ng t p tin nén tar.gz). Tên c a th m c con

và ng d n n th m c con luôn luôn c hi n th không ph thu c vào m u

a ra. Trong th c n c a m i b ng còn có câu l nh Quét l i (Rescan) (t ng

ng v i câu l nh C p nh t (Refresh) trong các ch ng trình khác). Câu l nh

Quét l i (phím nóng <Ctrl>+<R>) c p nh t l i danh sách t p tin hi n th trên

b ng. i u này có ích khi nh ng ti n trình khác t o hay xóa các t p tin.

6.5.2 Nh ng ch hi n th khác

Ngoài vi c a ra nh d ng hi n th danh sách t p tin trên b ng, còn có th a

b t k b ng nào vào m t trong nh ng ch sau:

Ch Thông tin (Info). Trong ch này (hình 6.5) trên b ng a ra

thông tin v t p tin c chi u sáng ( c ch n) trên b ng bên c nh, v h

th ng t p tin hi n th i (d ng, kích th c ch tr ng và t ng s ch m c inode

còn tr ng).

Ch Cây th m c (Tree). Trong ch này trên m t b ng hi n th cây

th m c d ng ho (hình 6.6). Ch này t ng t nh khi ng i

dùng ch n câu l nh Cây th m c (Directory Tree) t th c n Câu l nh

(Command), nh câu l nh sau hi n th cây th m c m t c a s riêng.

Ch Xem nhanh (Quick View). Trong ch này b ng s hi n th n i

dung c a t p tin c chi u sáng ( c ch n) trên b ng bên c nh. Ví d trên

hình 6.7 là khi dùng ch này xem nhanh n i dung t p tin HISTORY

c a gói ch ng trình mediawiki.

ra b ng xem nhanh n i dung t p tin s d ng ch ng trình xem t p tin

có s n trong mc, vì th n u dùng phím <Tab> chuy n sang b ng xem

nhanh, thì ng i dùng có th s d ng m i câu l nh i u khi n vi c xem, ví

d , nh ng phím li t kê trong b ng 6.1 và b ng 6.2.

6.5 i u khi n các b ng 135

Hình 6.5: Ch thông tin

Hình 6.6: Ch cây th m c

136 S d ng Midnight Commander

Hình 6.7: Ch xem nhanh

Ch K t n i FTP... (FTP link...) và K t n i Shell... (Shell link...). Hai

ch này ch khác ch s d ng hi n th danh sách th m c n m trên

máy xa. Còn l i m i th k c nh d ng hi n th thông tin u t ng t

nh nh ng gì s d ng cho các th m c n i b . N u ng i dùng mu n bi t

thêm v cách s d ng nh ng ch này, xin hãy xem tr giúp c a mc.

6.5.3 Các t h p phím i u khi n b ng

i u khi n ch làm vi c c a b ng có th s d ng các câu l nh c a trình

n ã nói t i trên, nh ng s thu n ti n h n n u s d ng các t h p phím i u

khi n.

<Tab> ho c <Ctrl>+. Thay i b ng hi n th i (ho t ng). Dòng chi u

sáng s chuy n t b ng ang là hi n th i sang b ng khác và nh v y b ng

sau s tr thành hiên th i.

<Alt>+<G> ho c <Alt>+<R> ho c <Alt>+<J>. S d ng di chuy n dòng

chi u sáng t ng ng lên t p tin trên u, n m gi a ho c d i cùng trong

s nh ng t p tin ang hi n th ( ang th y) trên b ng.

<Alt>+<T>. Chuy n i vòng quanh gi a các nh d ng hi n th danh sách

t p tin c a th m c hi n th i. Nh t h p phím này có th chuy n i nhanh

chóng t ch hi n th M r ng (long) sang Thu g n hay ch do ng i

dùng xác nh.

<Ctrl>+<\>. Hi n th danh sách th m c th ng dùng và chuy n t i th

m c l a ch n.

6.5 i u khi n các b ng 137

<Home> ho c <Alt>+<`<'>. Chuy n dòng chi u sáng t i v trí u tiên c a

danh sách t p tin.

<End> ho c <Alt>+<`>'>. Chuy n dòng chi u sáng t i v trí cu i cùng c a

danh sách t p tin.

<Alt>+<O>. N u trong b ng hi n th i tên th m c c chi u sáng, còn

trên b ng còn l i hi n th danh sách t p tin, thì b ng th hai s chuy n vào

ch hi n th các t p tin c a th m c c chi u sáng. N u trong b ng

hi n th i dòng chi u sáng là tên t p tin, thì trên b ng th hai s hi n th

n i dung c a th m c m c a t p tin ó.

<Ctrl>+<PageUp>, <Ctrl>+<PageDown>. Ch khi mc c ch y d i kênh

giao tác (console) c a Linux: th c hi n t ng ng vi c chuy n (chdir) t i

th m c m (..) ho c t i th m c ang c chi u sáng.

<Alt>+<Y>. Chuy n t i th m c ngay tr c trong s nh ng th m c ã

xem. T ng ng v i vi c nh n chu t lên ký t < góc trên c a b ng.

<Alt>+<U>. Chuy n t i th m c ngay sau trong s nh ng th m c ã xem.

T ng ng v i vi c nh n chu t lên ký t >.

Bạn đang đọc truyện trên: Truyen247.Pro

Tags: