tu hoc su dung Linux

Màu nền
Font chữ
Font size
Chiều cao dòng

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