Tự học cách sử dụng Linux - Phan Vĩnh Thịnh

Chia sẻ: mrbin1262006

Linux là tên gọi của một hệ điều hành máy tính và cũng là tên hạt nhân của hệ điều hành. Nó có lẽ là một ví dụ nổi tiếng nhất của phần mềm tự do và của việc phát triển mã nguồn mở. Linux là một hệ điều hành tương tự như hệ điều hành UNIX của AT&T Bell Labs. Linux có mọi đặc tính của một hệ điều hành hiện đại: hệ thống đa nhiệm, đa tuyến đoạn, bộ nhớ ảo, thư viện động, chương tŕnh dùng chung, tải theo nhu cầu, quản lư bộ nhớ, các môđun...

Bạn đang xem 20 trang mẫu tài liệu này, vui lòng download file gốc để xem toàn bộ.

Nội dung Text: Tự học cách sử dụng Linux - Phan Vĩnh Thịnh

T h c s d ng Linux
Phan Vĩnh Th nh
Phiên b n: 0.9.6
Ngày 14 tháng 2 năm 2007
Dành cho ngư i dùng m i và r t m i...
M cl c

L im đ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1 HĐH Linux: l ch s và các b n phân ph i 3
1.1 Th nào là HĐH nói chung và Linux nói riêng . . . . . . . . . . . . 3
1.1.1 Các h đi u hành d ng UNIX . . . . . . . . . . . . . . . . . . 3
1.1.2 M t chút v l ch s . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.3 Đ c đi m chính c a HĐH Linux . . . . . . . . . . . . . . . . 7
1.2 B n phân ph i Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Yêu c u đ i v i máy tính . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 L y Linux đâu? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2 Cài đ t h đi u hành Linux 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 . . . . . . . . . . . . . . 17
2.3.1 Th nào là c u trúc “hình h c c a đĩa” . . . . . . . . . . . . . 17
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 . . . . . . . . . . . . . . . . . . . . . . 24
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 . . . . . . . . . . . . . . . . . . . . 27
2.5.1 L i khuyên khi t o phân vùng . . . . . . . . . . . . . . . . . . 27
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 CL 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 . . . . . . . . . . . . . . . . . . . . . . 46
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 b n phân ph i và 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) . . . . . . . . . . . . . . . . . . . . . . . 72
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 . . . . . . . . . . . . 93
4.8 T o và g n các h th ng t p tin . . . . . . . . . . . . . . . . . . . . . 95
M CL C v


5 Bash 101
5.1 H v là gì? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.2 Các ký t đ c bi t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.3 Th c thi các câu l nh . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.3.1 Thao tác ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.3.2 Thao tác & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.3.3 Thao tác && và || . . . . . . . . . . . . . . . . . . . . . . . . 104
5.4 Đ u vào/đ u ra tiêu chu n . . . . . . . . . . . . . . . . . . . . . . . . 104
5.4.1 Dòng d li u vào – ra . . . . . . . . . . . . . . . . . . . . . . . 104
5.4.2 L nh echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.4.3 L nh cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.5 Chuy n hư ng đ u vào/đ u ra, đư ng ng và b l c . . . . . . . . . . 106
5.5.1 S d ng >, < và >> . . . . . . . . . . . . . . . . . . . . . . . . 106
5.5.2 S d ng | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.5.3 B l c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.6 Tham bi n và các bi n s . Môi trư ng c a h v . . . . . . . . . . . . 109
5.6.1 Các d ng tham bi n khác nhau . . . . . . . . . . . . . . . . . 110
5.6.2 D u nh c c a h v . . . . . . . . . . . . . . . . . . . . . . . . 112
5.6.3 Bi n môi trư ng PATH . . . . . . . . . . . . . . . . . . . . . . . 113
5.6.4 Bi n môi trư ng IFS . . . . . . . . . . . . . . . . . . . . . . . 113
5.6.5 Thư m c hi n th i và thư m c cá nhân . . . . . . . . . . . . 114
5.6.6 Câu l nh export . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.7 Khai tri n bi u th c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.7.1 Khai tri n d u ngo c . . . . . . . . . . . . . . . . . . . . . . . 115
5.7.2 Thay th d u ngã (Tilde Expansion) . . . . . . . . . . . . . . 115
5.7.3 Phép th các tham bi n và bi n s . . . . . . . . . . . . . . . 116
5.7.4 Phép th các câu l nh . . . . . . . . . . . . . . . . . . . . . . . 116
5.7.5 Phép th s h c (Arithmetic Expansion) . . . . . . . . . . . . 116
5.7.6 Phân chia t (word splitting) . . . . . . . . . . . . . . . . . . 117
5.7.7 Khai tri n các m u tên thư m c và t p tin . . . . . . . . . . 117
5.7.8 Xóa các ký t đ c bi t . . . . . . . . . . . . . . . . . . . . . . . 118
5.8 Shell — m t ngôn ng l p trình . . . . . . . . . . . . . . . . . . . . . 118
5.8.1 Toán t if và test (ho c [ ]) . . . . . . . . . . . . . . . . . . 118
5.8.2 Toán t test và đi u ki n c a bi u th c . . . . . . . . . . . . 119
5.8.3 Toán t case . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.8.4 Toán t select . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.8.5 Toán t for . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.8.6 Toán t while và until . . . . . . . . . . . . . . . . . . . . . 124
5.8.7 Các hàm s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.8.8 Tham s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.8.9 Bi n n i b (local) . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.9 Script c a h v và l nh source . . . . . . . . . . . . . . . . . . . . . 126
5.10 Câu l nh sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
vi M CL C


6 S d ng Midnight Commander 128
6.1 Cài đ t chương trình Midnight Commander . . . . . . . . . . . . . . 128
6.2 V ngoài c a màn hình Midnight Commander . . . . . . . . . . . . 129
6.3 Tr giúp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.4 S d ng chu t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.5 Đi u khi n các b ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
6.5.1 D ng danh sách t p tin . . . . . . . . . . . . . . . . . . . . . . 133
6.5.2 Nh ng ch đ hi n th khác . . . . . . . . . . . . . . . . . . . 136
6.5.3 Các t h p phím đi u khi n b ng . . . . . . . . . . . . . . . . 137
6.6 Các phím ch c năng và th c đơn T p tin . . . . . . . . . . . . . . . . 139
6.7 M u t p tin khi sao chép ho c đ i tên . . . . . . . . . . . . . . . . . 141
6.8 Thông báo khi sao chép và di chuy n t p tin . . . . . . . . . . . . . . 143
6.9 Dòng l nh c a h v . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.10 Trình đơn Câu l nh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
6.11 C u hình Midnight Commander . . . . . . . . . . . . . . . . . . . . . 153
6.12 K t n i t i máy xa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.12.1 K t n i FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.12.2 K t n i Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

7 Giao di n đ ho 162
7.1 X.Org . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
7.2 M t chút v h th ng hình nh c a máy tính . . . . . . . . . . . . . 167
7.3 C u hình chương trình ch X . . . . . . . . . . . . . . . . . . . . . . 169
7.3.1 Thu th p thông tin c n thi t . . . . . . . . . . . . . . . . . . . 170
7.3.2 C u trúc c a t p tin c u hình X . . . . . . . . . . . . . . . . . 171
7.3.3 Th c u hình /etc/X11/xorg.conf . . . . . . . . . . . . . . . . . 178
7.4 Kh i đ ng h th ng X Window . . . . . . . . . . . . . . . . . . . . . . 182
7.4.1 L a ch n trình qu n lý c a s . . . . . . . . . . . . . . . . . . 185
7.4.2 Môi trư ng làm vi c KDE và GNOME . . . . . . . . . . . . . 187
7.4.3 Môi trư ng làm vi c Xfce . . . . . . . . . . . . . . . . . . . . . 188
7.4.4 S d ng trình qu n lý màn hình . . . . . . . . . . . . . . . . 188

8 Làm vi c trong môi trư ng KDE 190
8.1 B t đ u làm vi c v i KDE . . . . . . . . . . . . . . . . . . . . . . . . 190
8.1.1 Đăng nh p vào KDE . . . . . . . . . . . . . . . . . . . . . . . 190
8.1.2 V ngoài c a KDE . . . . . . . . . . . . . . . . . . . . . . . . . 191
8.1.3 Trình đơn KMenu . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.1.4 Trung tâm đi u khi n KDE . . . . . . . . . . . . . . . . . . . 195
8.1.5 Thay đ i v ngoài . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.1.6 Đi u khi n phiên làm vi c . . . . . . . . . . . . . . . . . . . . 201
Danh sách hình v

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

6.1 Midnight Commander ti ng Vi t . . . . . . . . . . . . . . . . . . . . 129
6.2 Màn hình Midnight Commander . . . . . . . . . . . . . . . . . . . . 130
6.3 H p tho i ch n đ nh d ng hi n th . . . . . . . . . . . . . . . . . . . 133
6.4 H p tho i s p x p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
6.5 Ch đ thông tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
6.6 Ch đ cây thư m c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
6.7 Ch đ xem nhanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.8 H p tho i đ i tên t p tin . . . . . . . . . . . . . . . . . . . . . . . . . 142
6.9 C as h il i. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.10 C a s yêu c u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.11 Dòng nh p vào đ a ch IP c a máy ch FTP . . . . . . . . . . . . . . 147
6.12 B t đ u tìm ki m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
6.13 Đang tìm ki m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
6.14 Tìm ki m t t c các liên k t m m . . . . . . . . . . . . . . . . . . . . 151
6.15 H p tho i danh sách thư m c thư ng dùng . . . . . . . . . . . . . . 152
6.16 Đi u khi n công vi c n n sau . . . . . . . . . . . . . . . . . . . . . . 153
6.17 C u hình Midnight Commander . . . . . . . . . . . . . . . . . . . . . 154
6.18 Thay đ i v ngoài c a Midnight Commander . . . . . . . . . . . . . 156
6.19 Thay đ i bit hi n th c a Midnight Commander . . . . . . . . . . . . 157
6.20 Thi t l p các h p tho i h i l i ngư i dùng . . . . . . . . . . . . . . . 158
6.21 Th và c u hình các phím . . . . . . . . . . . . . . . . . . . . . . . . 158
6.22 Thi t l p h th ng t p tin o . . . . . . . . . . . . . . . . . . . . . . . 159

7.1 H th ng đ ho X Window . . . . . . . . . . . . . . . . . . . . . . . . 164
7.2 C u hình X.org qua xorgcfg . . . . . . . . . . . . . . . . . . . . . . 172
7.3 Chương trình xvidtune . . . . . . . . . . . . . . . . . . . . . . . . . 181
7.4 Chương trình xvidtune “không ch u” ch nh hình nh . . . . . . . . 181
7.5 Môi trư ng làm vi c Xfce . . . . . . . . . . . . . . . . . . . . . . . . . 189

8.1 Màn hình đăng nh p KDM . . . . . . . . . . . . . . . . . . . . . . . . 191
8.2 V ngoài c a KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
8.3 H p tho i ch y chương trình . . . . . . . . . . . . . . . . . . . . . . . 193
8.4 Tr giúp có ích tooltips . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.5 Trình đơn chính c a KDE . . . . . . . . . . . . . . . . . . . . . . . . 195
8.6 Tìm ki m trong trình đơn chính c a KDE . . . . . . . . . . . . . . . 196
8.7 Trình Thi t l p cá nhân c a KDE . . . . . . . . . . . . . . . . . . . . 197
viii DANH SÁCH HÌNH V

8.8 Cài đ t phông ch m i . . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.9 Ch n phông ch dùng cho text, trình đơn, . . . . . . . . . . . . . . . . 198
8.10 Ch n phông ch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
8.11 C nh báo khi có thay đ i chưa áp d ng . . . . . . . . . . . . . . . . . 199
8.12 Trình đơn c a thanh panel . . . . . . . . . . . . . . . . . . . . . . . . 200
8.13 Trình đơn b i c nh c a nút . . . . . . . . . . . . . . . . . . . . . . . 200
8.14 C u hình các thanh panel . . . . . . . . . . . . . . . . . . . . . . . . 201
8.15 Thay đ i màn hình . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
8.16 So n th o trình đơn chính . . . . . . . . . . . . . . . . . . . . . . . . 202
Danh sách b ng

1.1 Yêu c u đ i v i ph n c ng . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1 C u trúc c a sector kh i đ ng chính . . . . . . . . . . . . . . . . . . 20
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 . . . . . . . . . . . . 94
4.8 Nh ng tùy ch n chính c a câu l nh mount . . . . . . . . . . . . . . 99

5.1 Các câu l nh b l c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.2 Thay th các tham bi n đ c bi t . . . . . . . . . . . . . . . . . . . . . 111
5.3 Ký t xác đ nh d ng d u nh c . . . . . . . . . . . . . . . . . . . . . . 112
5.4 Các ký t t o m u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

6.1 Các t h p phím di chuy n dùng chung . . . . . . . . . . . . . . . . . 131
6.2 Di chuy n trong trình xem t p tin . . . . . . . . . . . . . . . . . . . . 131
6.3 Di chuy n khi xem tr giúp . . . . . . . . . . . . . . . . . . . . . . . 132
6.4 Các phím ch c năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.5 Các l nh đi u khi n dòng nh p vào . . . . . . . . . . . . . . . . . . . 148
L im đ u
Trong tác ph m n i ti ng th gi i c a nhà văn Nga Lev Tolstoi “Chi n tranh và
hoà bình” có đưa ra m t ví d đ minh ho cho suy nghĩ c a tác gi v vai trò c a
nh ng ngư i có ti ng (c th là Napoleon và Alecxandr đ nh t) và qu n chúng
trong l ch s nói chung cũng như trong chi n tranh châu Âu nh ng năm đ u
th k XIX. Nhân v t chính trong ví d minh ho này là con ong. Đ i v i c u bé
v a b ong c n thì m c đích c a con ong ch c n ngư i. Đ i v i m t nhà thơ
thì m c đích c a con ong là thu vào mình hương v c a nh ng bông hoa. Đ i v i
ngư i nuôi ong thì m c đích ong là thu th p m t ong. Ngư i nuôi ong có cái nhìn
sâu hơn thì cho r ng ong thu th p b i ph n hoa đ nuôi ong con và t o ong chúa,
như v y m c đích c a nó là duy trì nòi gi ng. Nhà sinh h c khi quan sát th y
ong th ph n cho hoa thì quy t đ nh đây chính là m c đích c a loài ong. Ngư i
khác quan sát quá trình di cư c a th c v t thì cho r ng ong tham gia vào quá
trình này và là m c đích c a nó. T t nhiên m c đích cu i cùng c a ong không
ph i là nh ng cái trên n m riêng bi t mà là t t c chúng c ng l i, và còn c ng
thêm nh ng gì mà t m th i b óc quan sát h n ch c a con ngư i còn chưa tìm
ra.
Microsoft nhìn th y Linux kh năng c nh tranh l n và nhi u khi coi Linux
là k thù c a mình. Nhi u t ch c chính ph cũng như phi chính ph nhìn th y
Linux m t h đi u hành nhi u h a h n và h tr cho Linux. Nh ng nư c còn
nghèo tìm th y Linux m t cách gi i quy t cho v n đ kinh t . M t s công ty
đã th y đư c Linux m t ngu n l i l n và phát tri n công vi c kinh doanh c a
mình t h đi u hành này. Đ i v i Linus Torvalds, Linux là ni m đam mê và
“Just for fun”. Các nhà l p trình nhân (kernel) tìm th y Linux s quy n rũ và
công vi c phát tri n c a h . Ngư i dùng thì th y Linux m t h th ng m nh,
thu n ti n, có th đi u ch nh theo ý mu n c a mình v.v. . .
Linux là h đi u hành phát tri n m nh. Nh ng năm đ u th p k th chín
c a th k XX Linux m i ch là đ a con tinh th n chưa bi t nói c a Torvalds.
Ch trong vài năm g n đây đã có nhi u b n phân ph i Linux chi m lĩnh đư c môi
trư ng máy ch cũng như máy đ bàn c a ngư i dùng. Trên th trư ng máy ch
hi n th i ch có m t vài tên tu i đáng chú ý. Linux cho máy đ bàn có ph n đa
d ng hơn. M i b n phân ph i thích h p cho m t nhóm ngư i dùng c th nào đó
t ngư i dùng m i đ n ngư i dùng “cao c p” (advanced) hay nói đúng hơn là m i
ngư i dùng có quy n l a ch n cho mình m t b n phân ph i thích h p và chuy n
sang s d ng b n khác khi nào mong mu n. L ch s hình thành và phát tri n
Linux chúng ta s th y ngay chương đ u tiên c a cu n sách này.
Linux ngay t ban đ u đã đư c xây d ng d a trên c ng đ ng (ti ng Anh
“community”), d a trên s c ng tác. C ng đ ng Linux không ch cung c p cho
ngư i dùng máy tính m t h đi u hành thân thi n, d s d ng mà còn luôn luôn
s n sàng giúp đ ngư i dùng m i, luôn mong mu n có thêm máy tính ch y dư i
Linux. V i k t n i m ng Internet, b n s luôn tìm th y câu tr l i cho v n đ c a
mình t s lư ng l n các di n đàn, nhóm thư, nhóm tin t c, các trang web cung
c p tin t c, bài báo, sách v Linux. . . Tuy nhiên n u b n m i b t đ u h c Linux
thì hãy tìm cho mình m t cu n sách gi i thi u ng n g n v h đi u hành này.
M t cu n sách tham kh o c m tay là không th thi u trong th i gian đ u tìm
hi u Linux. Hãy xem xét giá và n i dung cu n sách trư c khi mua. N u không
có kh năng tìm đư c sách thích h p ho c b n thích cu n sách “T h c s d ng
Linux” này thì có th in nó ra đ ti n đ c.
Tôi b t đ u h c Linux khi có trong tay 3 đĩa CD RedHat 7.0 kho ng 4 năm
trư c đây. Và bây gi Linux (c th là OpenSUSE Linux) là h th ng duy nh t
làm vi c trên máy tính c a tôi. Không ph i là tôi không mu n s d ng và ghét
b h đi u hành Windows mà đơn gi n là tôi đã quen làm vi c trong môi trư ng
KDE và Xfce, đôi khi trong console (dòng l nh không có đ ho ). Và hơn n a
m i công vi c c n đ n máy tính c a tôi có th gi i quy t nhanh g n b ng nh ng
chương trình đi kèm v i Linux. Nghe nh c b ng Amarok, qu n lý hình k thu t
s và l y chúng ra t máy hình b ng digiKam, so n th o tài li u, c th là lu n
văn t t nghi p và cu n sách này, trong chương trình Kile và biên d ch mã L TEX
A

qua nh ng chương trình có trong gói teTeX, nh ng tài li u khác có th so n th o
trong Openoffice.org, v i ngư i dùng không chuyên thì kh năng ch nh s a nh
c a The GIMP còn trên c đ , kh năng v đ ho vector c a Inkscape còn đ cho
c nh ng nhà thi t k chuyên. Tôi không ph i là m t nhà qu n lý m ng hay l p
trình chuyên nghi p và nói chung không ph i ngư i h c theo chuyên ngành công
ngh thông tin. Ngành chính c a tôi là Hoá h c, do đó xin đ ng mong đ i nh ng
ki n th c cao siêu trong sách này. Như trang th hai c a sách có ghi “Dành cho
ngư i dùng m i và r t m i. . . ”.
Như v y, cu n sách “T h c s d ng Linux” đư c t o ra v i hy v ng s giúp
ngư i dùng m i làm quen v i h đi u hành tuy t v i có tên Linux và hình tư ng
trưng là chú chim cánh c t (penguin) xinh đ p. Nh ng thông tin b n đ c tìm th y
trong cu n sách này có th áp d ng cho h u h t h t các b n phân ph i l n, tuy
nhiên m t s ph n đ c bi t ví d ph n nói v cài đ t chương trình t các gói rpm
ch áp d ng t t cho các b n phân ph i “dòng RedHat”, đó là Fedora, Mandriva,
OpenSUSE, v.v. . . Thông thư ng ngư i dùng m i b t đ u gia nh p vào th gi i
Linux b ng nh ng b n phân ph i này. Happy Using Linux!
Công c đ t o ra cu n sách b n đang đ c là h th ng s p ch L TEX. B n có
A

th tìm b n phân ph i teTeX ho c m t b n phân ph i khác c a h th ng này
trên h u h t các b đĩa cài đ t h đi u hành Linux.
Sách này đư c phân ph i mi n phí theo b n quy n Creative Commons Public
License 2.5 (http://creativecommons.org/licenses/by/2.5/). Cũng như
nh ng s n ph m khác c a c ng đ ng OSS, cu n sách này đư c t o ra, s a đ i,
thêm và b t trong th i gian r nh r i c a tôi, do đó đôi khi nó s đư c c p nh t
thư ng xuyên, và có khi không đư c c p nh t c năm. M i đ ngh s a đ i, thông
báo l i chính t , l i ki n th c cũng như đ ngh giúp đ (luôn luôn hoan nghêng)
xin g i cho Phan Vĩnh Th nh theo đ a ch teppi@vnoss.org.
Xin c m ơn Kostromin A.V. (http://linux-ve.chat.ru) đã vi t ra m t
cu n sách s d ng Linux hay làm tài li u tham kh o chính cho cu n sách này,
bác Nguy n Đ i Quý (vnpenguin@vnoss.org) và anh Nguy n Đ ng Hoàng Tuân
(tuanndh@gmail.com) đã giúp đ tôi trong khi so n cu n sách này.




Released under Creative Commons Public License 2.5
(http://creativecommons.org/licenses/by/2.5/)
Chương 1

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

“Just for fun” – Linus Torvalds.

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
1
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Đ .
4 HĐH Linux: l ch s và các b n phân ph i


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: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID:
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 (torvalds@kruuna.helsinki.fi)
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
2
protocol
1.1 Th nào là HĐH nói chung và Linux nói riêng 5


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à
3
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.
4
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.
6 HĐH Linux: l ch s và các b n phân ph i


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
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
5
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.
1.1 Th nào là HĐH nói chung và Linux nói riêng 7


m 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
8 HĐH Linux: l ch s và các b n phân ph i


đĩ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
(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.
6
ho 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
1.2 B n phân ph i Linux 9


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à
7
cho phép s d ng nhi u h đi u hành trên m t máy
8
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)
10 HĐH Linux: l ch s và các b n phân ph i


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.
1.2 B n phân ph i Linux 11


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
9
Đ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 .
12 HĐH Linux: l ch s và các b n phân ph i


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ác 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, 256 1500
các 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
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
1.4 L y Linux đâu? 13


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 router10 ). Đ 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.
Đ 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?
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 –
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.



10
máy giúp chuy n hư ng các gói m ng
Chương 2

Cài đ t h đi u hành Linux

“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;
• 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;
2.1 Chu n b cài đ t 15


• 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ư c khi b t đ u cài đ t, hãy thu th p (hãy vi t lên m t t gi y) t t c 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. . . );
– 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
16 Cài đ t h đi u hành Linux


– 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
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 đã
2.3 Phân vùng trên đĩa và quá trình kh i đ ng 17


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.


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ó
18 Cài đ t h đi u hành Linux


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
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
2.3 Phân vùng trên đĩa và quá trình kh i đ ng 19


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
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ư
20 Cài đ t h đi u hành Linux


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.

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)


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.
2.3 Phân vùng trên đĩa và quá trình kh i đ ng 21


Xin tr l i v i quá trình kh i đ ng. Int 19h c a BIOS n p trình kh i đ ng
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:

[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
22 Cài đ t h đi u hành Linux


đư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
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
2.4 L a ch n trình kh i đ ng 23


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 GRUB
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
còn r t nh 1 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
1
hãy so sánh s phiên b n c a GRUB và LILO
24 Cài đ t h đi u hành Linux


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.

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 :
2.4 L a ch n trình kh i đ ng 25


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

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:
26 Cài đ t h đi u hành Linux


• /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);

• 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.
2.5 Chu n b các phân vùng trên đĩa 27


Ngoài ra, tác gi còn th y nói đ n m t lo t 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
c a ftp://metalab.unc.edu/. Nhưng vì tôi 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à loadlin.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.


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.
28 Cài đ t h đi u hành Linux


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 (Work- 700 Mbyte
station 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.

• Đ 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
2.5 Chu n b các phân vùng trên đĩa 29


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

• 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
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:
2
Xin cám ơn bác Tony Lý v m c này
30 Cài đ t h đi u hành Linux


• 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.
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.
2.6 Windows NT và Linux: kh i đ ng qua NT OS Loader 31


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
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
32 Cài đ t h đi u hành Linux


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

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
3
Ghi chú: n u đĩa C: (/dev/hda1) có đ nh d ng FAT, thì có th t o t p tin bootsect.lnx trong thư
m c g c c a đĩa C:. 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ư sau4 :
4
có 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 đi u hành Linux


/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 GRUB
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 đ 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

color white/blue black/light-gray
2.7 S d ng trình kh i đ ng GRUB 35


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
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.
36 Cài đ t h đi u hành Linux


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

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
read-only
other = /dev/hda1
5
Ghi 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


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

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
38 Cài đ t h đi u hành Linux


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 đi u hành Linux


Đ 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-
men@elserv.ffm.fgan.de) vi t. Chương trình này thư ng có trên các đĩa c a b n
phân ph i.6
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)7 .
6
m 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
7
Ghi 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


• 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
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 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:
42 Cài đ t h đi u hành Linux


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

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òng
l nh dài hơn 127 ký t . Mô t đ y đ t t c các tham s c a câu l nh load-
lin.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

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ành. 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.




Hình 3.1: Màn hình kh i đ ng c a GRUB
44 Kh i đ ng Linux l n đ u


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úng1 . 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 ++ đ 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
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
. 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 (). 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 .
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
đúng m t kh u, b n s th y dòng như sau:
1
Trong 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à .
3.2 Đăng nh p vào h th ng 45


[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 trên d u nh c g m tên ngư i dùng (root), tên h th ng
(ThinhQuyen) 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 đ 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 , 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.

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.
46 Kh i đ ng Linux l n đ u


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 , ,
và phím tr ng. Hãy nh n phím 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
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
3.3 Console, terminal o và shell 47


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 ++. 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
+< Alt>+. 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 ++ — ++. 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
+ — + 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 . 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 +. 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
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
48 Kh i đ ng Linux l n đ u


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 +), 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
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
3.4 So n th o dòng l nh. L ch s l nh 49


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 u2 (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 ++ 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
++. 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ư , , , , đ 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 ng3 hi n th i. Nhưng m t s t h p phím dùng v i và
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.
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 sau khi nh p m t vài ký t . N u nh ng ký t này là ph n
2
Ngư i dùng root không c n ph i bi t m t kh u đ làm vi c này.
3
panel
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 c ng thêm m t ký t s nh p).
, + Di chuy n sang trái m t ký t .
+ Di chuy n sang ph i m t t .
+ Di chuy n sang trái m t t .
, + Di chuy n v đ u dòng l nh.
, + Di chuy n v cu i dòng l nh.
, + Xóa ký t n m t i v trí con tr .
Xóa ký t n m bên trái con tr .
, + B t đ u th c hi n câu l nh.
+ D n màn hình và đưa dòng l nh hi n th i lên dòng đ u tiên.
+ Đ 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 .
+ Đ i ch hai t : t n m t i v trí con tr và t n m bên trái
con tr .
+ 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).
+ 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).
+ 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ó).
+ 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ó).
+ 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.
+ Đ t (dán) đo n dòng l nh đã c t cu i cùng vào v trí con tr .
+ 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.
+ 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.
+ 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.
+, Nh ng t h p phím này cho phép xem các trang màn hình
+ đã hi n th . S lư ng nh ng trang này ph thu c vào b nh
c a c c màn hình. Có ích khi có câu l nh nào đó đưa ra màn
hình r t nhi u thông tin ch y nhanh qua màn hình, ngư i
dùng không k p th y chúng.
+ D ng th c hi n câu l nh v a ch y (mà v n đang ch y).
+ Thoát ra kh i h v bash.
3.5 Ng ng làm vi c v i Linux 51


đ 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 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
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 đ u tiên, và sau l n nh n 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 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ư ng4 , ch c n s d ng t h p
phím + thay cho .
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 + và + đ 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
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.
4
environment 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 + 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 + Chuy n t i câu l nh ti p theo trong danh
sách (di chuy n theo danh sách)
Chuy n t i câu l nh đ u tiên trong danh
sách l ch s l nh
, Th c hi n (không c n nh n câu
l nh th n trong danh sách
, , 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
+ Cũng gi ng như nh n phím , sau
đó hi n th câu l nh ti p theo trong l ch
s l nh


Ch có ngư i dùng root m i có th th c hi n câu l nh shutdown này5 , 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

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 . 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
5
Cũ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


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:

[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” ++ 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 như trong b ng 3.4.


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 ng6 (hàm do nhân cung c p)
3 G i thư vi n7 (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 có s nh m l n nào. 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 manx (x là tên c a ph n)
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
Thoát kh i chương trình
Xem t ng dòng
Hi n th màn hình thông tin ti p theo
Quay l i màn hình trư c
, dòng ký t , Tìm ki m dòng ký t ch ra
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 cron8 .
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
8
cron 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
++, ++ 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 . Sau khi di
chuy n đ n liên k t mong mu n, hãy nh n phím . Phím đưa ngư i
dùng tr l i trang v a xem, phím đưa đ n trang ti p theo, còn 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 , 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 .


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 ng 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 có 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 u có v n đ trong lúc cài đ t, thì hãy h i d ch v khách hàng c a phân ph 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:vietlug-users@userforge.net. 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
ext3fs

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ưu1 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ó
ý nghĩa đ c bi t trong h v shell và do đó không nên dùng đ đ t tên t p tin.
1
M 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


Đó 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én2 ). 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.3
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
2
thư ng g i theo ti ng lóng là tarball, qu bóng tar
3
Như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 -l4 . 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
4
N 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”5 đ 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 n6 : 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
5
đây là đư ng d n tuy t đ i
6
Nó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 đ ng7 .
/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).



7
do đó 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/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.
/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.
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 ter-
minal. 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 tb
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 tb
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 ts
l n và s nh đã nói thay vì kích thư c c a t p tin.
72 Làm quen v i h th ng t p tin ext3fs


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
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ưng8 ).
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,
8
thu 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


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.
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.
74 Làm quen v i h th ng t p tin ext3fs


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
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,
4.5 Quy n truy c p đ n t p tin và thư m c 75


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
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ư
76 Làm quen v i h th ng t p tin ext3fs


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
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:
4.5 Quy n truy c p đ n t p tin và thư m c 77


• + – thêm quy n

• – – tư c b quy n

• = – 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:
78 Làm quen v i h th ng t p tin ext3fs


[user]$ chmod 761 tên_t p_tin
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 ID9 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 :
9
Identificator, 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 c dù trong k t qu c a l nh ls -l không có nh ng v 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 +
ho 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 xong10 . 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.
10
Có 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 (phím dài nh t trên bàn phím hi n nay).
Nh n phím đ đ c m t dòng ti p theo. Ngoài và còn
có m t vài phím đi u khi n khác, ví d phím đ 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
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 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 (, ,
, , , , , ) đ 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 , trong less có th dùng t h p phím + đ 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 ng11 )
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
11
interval
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 (t c là b ng
512B x s ). 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://vnoss.org/pub.
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”12 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.
12
đ 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


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

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


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
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 “”.
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
90 Làm quen v i h th ng t p tin ext3fs


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.
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:
4.7 Các câu l nh lưu tr và nén t p tin 91


[user]$ tar tvf tên_kho | less

Gi i phóng m t t p tin nào đó b ng:

[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
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
.suf m c đ nh 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.


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.


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.
4.7 Các câu l nh lưu tr và nén t p tin 93


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

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


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:
94 Làm quen v i h th ng t p tin ext3fs


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 Hi n th s phiên b n và b n quy n c a chương trình.
–V, —-version Gi ng như --L.

[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.
4.8 T o và g n các h th ng t p tin 95


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
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à
96 Làm quen v i h th ng t p tin ext3fs


các h th ng t p tin khác (k c NTFS13 ). 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 mkfs14 . Trong trư ng h p đơn gi n nh t ch c n
ch y l nh sau:

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

T t 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

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 đ
13
S h tr đ c đã t t, tuy nhiên s h tr ghi lên NTFS chưa th t hoàn h o.
14
Trê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.
4.8 T o và g n các h th ng t p tin 97


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 ng15 :

• 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).

• Đ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, ncpfs16 . 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:
15
Đ 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.
16
Hãy xem trang man fs đ đ c mô t ng n g n v nh ng h th ng t p tin này.
98 Làm quen v i h th ng t p tin ext3fs


[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 (Samba17 ) và ext
Khi g n h th ng t p tin có trong /etc/fstab, thì ch c n đưa ra m t tham
s : ho c 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

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
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
17
cá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


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.


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
100 Làm quen v i h th ng t p tin ext3fs


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 Bourne. D
102 Bash


á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 +, +, 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:

‘ ~ ! @ # $ % ^ & * ( ) _ - [ ] { } : ; ’ " / \ >
Đ 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 “>”, “>”. 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
2
thư m c hi n th i
3
b n c n dùng t h p phím ++ đ chuy n t i c a s terminal này và đăng
nh p trư c
5.5 Chuy n hư ng đ u vào/đ u ra, đư ng ng và b l c 107


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 > 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 s đư c biên d ch là 1 >, còn < s đư c biên d ch là 0 &M
108 Bash


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.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 | đư 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.6 Tham bi n và các bi n s . Môi trư ng c a h v 109


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.

B ng 5.1: Các câu l nh b l c
L nh Mô t ng n g n
grep, fgrep, Tìm trong t p tin hay d li u đ u vào các dòng có ch a m u
egrep 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) .

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 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
110 Bash


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 đó đư 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ó 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:
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
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:
5.6 Tham bi n và các bi n s . Môi trư ng c a h v 111


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


[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.
4
random là t ti ng Anh có nghĩa ng u nhiên
112 Bash


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”).


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.
\nnn Ký t có mã h tám nnn
\n 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.
5.6 Tham bi n và các bi n s . Môi trư ng c a h v 113


S c a l nh (s th t c a l nh đang th c hi n trong bu i 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 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:

[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
— “”. N u th gõ l nh “echo $IFS”,
b n s nh n đư c m t ng c nhiên nh .
114 Bash


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
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 Khai tri n bi u th c 115


5.7.1 Khai tri n d u ngo c
Khai tri n d u ngo c t t nh t minh h a 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

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
116 Bash


đ 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 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.
5.7 Khai tri n bi u th c 117


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 ARITH-
METIC 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 thư m c và t p tin5
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.
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
Pathname Expansion
118 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 thay th 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 c.


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ó 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.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
5.8 Shell — m t ngôn ng l p trình 119


đư 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:

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.

• -b file
Đúng n u file t n t i, và là m t t p tin thi t b kh i (block device) đ c
bi t.

• -c file
Đúng n u file t n t i, và là m t t p tin thi t b ký t (charater device) đ c
bi t.

• -d file
Đúng n u file t n t i và là m t thư m c.
120 Bash


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

• -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.
5.8 Shell — m t ngôn ng l p trình 121


• 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
(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.
122 Bash


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 (ki u
t ch c kh i đ ng FreeBSD style):

case "$UTC" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS -u";
CLOCKDEF="$CLOCKDEF (utc)";
;;
no|false)
CLOCKFLAGS="$CLOCKFLAGS --localtime";
CLOCKDEF="$CLOCKDEF (localtime)";
;;
esac

N u bi n s (UTC) nh n giá tr yes ho c true, thì s th c hi n c p l nh th
nh t, nh n giá tr no ho c false - c p th hai.


5.8.4 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

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):
5.8 Shell — m t ngôn ng l p trình 123


#!/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
), 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:

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.
124 Bash


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 có tên
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

Đ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
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 }
5.8 Shell — m t ngôn ng l p trình 125


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


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
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
5.10 Câu l nh sh 127


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-pre3, m c
dù 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
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”.
6.2 V ngoài c a màn hình Midnight Commander 129


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


6.2 V ngoài c a màn hình Midnight Comman-
der
Đ kh i đ ng Midnight Commander, c n gõ vào dòng l nh shell câu l nh mc
và nh n . 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.




Hình 6.1: Giao di n ti ng Vi t c a Midnight Commander

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”2 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 ho c nh phím chu t (n u như sau khi kh i
1
Ngoà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.
2
panel
130 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
– . 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à ). 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 và .
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 – “” 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 131


Ch m t trong hai b ng là hi n th i (ho t đ ng). B ng hi n th i có thanh
chi u 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 ()
hay di chuy n () 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 + Di chuy n tr l i (lên trên) m t dòng
ho c + Di chuy n v phía trư c (xu ng dư i) m t dòng
ho c + Quay l i m t trang
ho c + Ti n v trư c m t trang
Quay v dòng đ u
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 . 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
ho c + ho c + Lùi l i m t trang
ho c ho c
Ti n t i m t trang
( ) Lùi l i (ti n t i) n a trang
(+) Đi t i đ u (cu i) danh sách
132 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
Đi t i liên k t ti p theo
+ 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 M trang mà liên k t hi n th i ch t i
ho c M trang tr giúp v a xem trư c trang hi n th i
Tr giúp s d ng c a b n thân tr giúp
Chuy n t i ph n ti p theo c a tr giúp
Chuy n t i ph n n m trư c c a tr giúp
Chuy n t i m c l c c a tr giúp
, 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 đ 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 .
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 133


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 . Đ làm đư c đi u này, b n c n
nh n và gi phím , ch n đo n văn b n c n thi t b ng cách kéo chu t, sau
đó th phím ra, đưa con tr đ n nơi c n dán, r i l i nh n và gi phím
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.
134 S d ng Midnight Commander


• Đ nh d ng M r ng (Long) hi n th t p tin như khi th c hi n 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 135


• 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)).
136 S d ng Midnight Commander




Hình 6.4: H p tho i s p x p

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
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 +) 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.
6.5 Đi u khi n các b ng 137




Hình 6.5: Ch đ thông tin

Đ 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 đ 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.

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

• ho c +. 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.

• + ho c + ho c +. 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.

• +. 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
138 S d ng Midnight Commander




Hình 6.6: Ch đ cây thư m c


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.

• +. 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.

• ho c +. Chuy n dòng chi u sáng t i v trí cu i cùng c a
danh sách t p tin.

• +. 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 đó.

• +, +. 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.

• +. 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.

• +. 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 >.
6.6 Các phím ch c năng và th c đơn T p tin 139




Hình 6.7: Ch đ xem nhanh


6.6 Các phím ch c năng và th c đơn T p tin
T trư c đ n gi chúng ta m i xem xét đ n v ngoài c a màn hình Midnight
Commander và cách thay đ i v ngoài này. Bây gi đã đ n lúc c n bi t cách làm
vi c v i t p tin nh chương trình có ích này.
R t nhi u thao tác thư ng dùng trong Midnight Commander đư c th c hi n
qua các phím ch c năng — . Xin đưa ra m t b ng 6.4 t ng h p nh ng
thao tác này.
Nh ng thao tác (l nh) li t kê trên không ch có th th c hi n b ng cách
nh n phím ch c năng tương ng mà còn b ng cách nh n chu t lên các nút tương
ng cùng c a màn hình hay b ng các l nh tương ng c a trình đơn T p tin
(File).
Trư c khi th c hi n m t thao tác nào đó ch ra trong b ng 6.4 hay l nh trong
trình đơn, c n ch n nh ng t p tin hay nhóm t p tin đ th c hi n thao tác đó lên.
Đ ch n m t t p tin thì ch c n đ t dòng chi u sáng trong b ng hi n th i lên nó
(t t nhiên đ u tiên c n chuy n t i thư m c tương ng). N u mu n th c hi n m t
thao tác nào đó lên nhi u t p tin m t lúc, thì c n đánh d u nhóm t p tin này. Đ
đánh d u t p tin đ t dư i dòng chi u sáng, hãy dùng phím ho c t h p
phím +. Khi này tên c a t p tin s có màu khác. Đ b ch n t p tin
thì cũng s d ng t h p phím như khi ch n.
Còn có th ch n nhóm t p tin còn có th dùng câu l nh Ch n nhóm c a
trình đơn T p tin (File), phím nóng cho câu l nh này là phím d u c ng .
Câu l nh này đư c dùng đ đánh d u nhóm t p tin theo m u tương ng đưa
ra. Khi ch y câu l nh Midnight Commander s đưa ra h p tho i dùng đ nh p
bi u th c chính quy xác đ nh tên c a nhóm t p tin mu n đánh d u. N u có b t
tùy ch n M u d ng shell (xem trang 155, thì c n vi t bi u th c chính quy theo
140 S d ng Midnight Commander


B ng 6.4: Các phím ch c năng
Phím F# Hành đ ng th c hi n
G i tr giúp tùy thu c vào tình hu ng
G i th c đơn do ngư i dùng t o ra
Xem t p tin đ t dư i dòng chi u sáng c a b ng hi n th i
G i trình so n th o trong đ s a t p tin đ t dư i dòng chi u
sáng c a b ng hi n th i
Sao chép t p tin hay nhóm t p tin đã đư c đánh d u t thư
m c c a b ng hi n th i sang thư m c c a b ng còn l i. Khi
sao chép m t t p tin thì còn có th đ i tên c a t p tin này3 .
Đ ng th i trong h p tho i hi n ra còn có th ch ra tên c a thư
m c mu n sao chép các t p tin đ n (đ khi c n có th sao chép
đ n thư m c khác v i thư m c hi n ra trên b ng th hai).
Di chuy n t p tin hay nhóm t p tin đã đư c đánh d u t thư
m c c a b ng hi n th i sang thư m c c a b ng còn l i. Cũng
gi ng như khi sao chép, có th thay đ i tên c a t p tin hay thư
m c di chuy n đ n.
T o thư m c con trong thư m c hi n th trên b ng hi n th i
Xóa t p tin (thư m c con) hay nhóm các t p tin đã đánh d u
G i trình đơn chính (hi n th phía trên các b ng)
Thoát kh i chương trình


các quy lu t như trong shell (xem chương 5. Còn n u t t tùy ch n này, thì s
đánh d u t p tin đư c th c hi n theo quy lu t c a các bi u th c chính quy thông
thư ng (hãy xem hư ng d n man ed).
N u bi u th c b t đ u ho c k t thúc b ng d u g ch chéo (/), thì s đánh d u
các thư m c ch không ph i t p tin.
Thao tác “B ch n” (phím t t là phím d u tr ho c g ch chéo ngư c —
) là thao tác ngư c l i đ i v i thao tác ch n nhóm t p tin và s d ng cùng
các quy lu t vi t m u như khi ch n. Thao tác này dùng đ b đánh d u kh i
nhóm t p tin đã ch n. Còn thao tác “Ch n ngư c l i” (phím ) dùng đ b ch n
nh ng t p tin đang ch n, đ ng th i ch n nh ng t p tin còn l i c a thư m c hi n
th i.
N u thư m c hi n th i có nhi u t p tin (do đó không th y h t trên b ng), thì
trư c khi đánh d u t p tin c n tìm đ n t p tin đó. Trong nh ng trư ng h p đó
các t h p phím + và + s có ích. Sau khi nh n m t trong
nh ng t h p phím này thì mc s ch y ch đ tìm ki m tên t p tin trong thư
m c hi n th i theo nh ng ký t đ u tiên c a tên. Trong ch đ này nh ng ký t
nh p vào s không hi n th dòng l nh mà hi n th dòng tìm ki m. N u ch đ
Hi n tr ng thái mini (Show mini-status) đư c b t, thì dòng tìm ki m này s
hi n th trên ch c a dòng tr ng thái mini. Khi này trong quá trình nh p ký t ,
dòng chi u sáng s di chuy n t i t p tin ti p theo có tên b t đ u b ng nh ng ký
t đã nh p vào. Có th dùng các phím ho c đ s a l i. N u
nh n + thêm m t l n n a, thì s tìm ki m t p tin tương ng ti p theo.
C n chú ý là n u trong thư m c hi n th i không có t p tin v i tên tương ng, thì
nh ng ký t nh p vào s không hi n th trên dòng tr ng thái mini, t c là b n s
6.7 M u t p tin khi sao chép ho c đ i tên 141


không th tìm th y t p tin mu n tìm.
Sau khi ch n và đánh d u t p tin đ làm vi c ch c n nh n m t trong các
phím ch c năng đ th c hi n thao tác c n thi t v i t p tin, ví d , sao chép, di
chuy n hay xóa. So v i dòng l nh thì các thao tác xem và so n th o t p tin trong
Midnight Commander thu n ti n hơn, do trong Midnight Commander có tích
h p s n các chương trình cho nh ng vi c này. Nhưng trong ph n này chúng ta s
không xem đ n trình so n th o có s n, mà đ dành đ n chương nói v làm vi c
v i các t p tin văn b n.
Như đã nói t trư c, không nh t thi t ph i s d ng các phím ch c năng đ
g i các câu l nh tương ng v i chúng. B t kỳ câu l nh nào trong s này cũng có
th th c hi n qua trình đơn T p tin (File). Ngoài các câu l nh g n v i các phím
ch c năng, trình đơn T p tin còn ch a các câu l nh sau (trong ngo c là các phím
t t tương ng).

• chmod (+,). Cho phép thay đ i quy n truy c p đ n (các) t p
tin đư c ch n.

• chown (+,). Thay đ i ch s h u b ng câu l nh chown.

• chown nâng cao. Cho phép thay đ i quy n truy c p và s h u t p tin.

• Liên k t c ng (+,). T o liên k t c ng đ n t p tin hi n th i.

• Liên k t m m (+,). T o liên k t m m đ n t p tin hi n th i.
Chương trình Midnight Commander cho bi t liên k t m m b ng ký hi u
“@” đ ng trư c tên c a liên k t đó (tr liên k t đ n thư m c con đư c đánh
d u b i d u sóng “∼”). N u trên màn hình có đưa ra dòng tr ng thái mini
(dùng tùy ch n Hi n tr ng thái mini), thì trên dòng này s hi n lên tên
c a t p tin mà liên k t ch đ n.

• cd nhanh (+). Hãy s d ng câu l nh này n u bi t đư ng d n đ y
đ đ n thư m c b n c n (và mu n chuy n thành thư m c hi n th i).

• Xem k t qu l nh (+). Khi ch y câu l nh này trên màn hình s
hi n ra dòng cho phép nh p b t kỳ câu l nh nào cùng v i tham s c a
nó (theo m c đ nh tham s s là t p tin đang đư c chi u sáng). K t qu
th c hi n l nh s hi n ra trên màn hình trong xem có s n c a Midnight
Commander.

Như b n đã th y, trình đơn T p tin (File) có ch a nh ng câu l nh thư ng
dùng nh t, c n thi t cho ngư i dùng trong nh ng thao tác cơ b n v i t p tin c a
thư m c hi n th i. T t nhiên là nh ng thao tác thư ng dùng đư c g n v i các
phím ch c năng. Do đó, chúng ta s xem xét l i các câu l nh này đ hi u rõ hơn
v chúng. Đ u tiên là câu l nh sao chép và đ i tên.


6.7 M u t p tin khi sao chép ho c đ i tên
Khi th c hi n các thao tác sao chép và di chuy n (hay đ i tên) t p tin ngư i dùng
có kh năng thay đ i tên c a các t p tin đang sao chép hay di chuy n. Đ th c
142 S d ng Midnight Commander


hi n vi c này ngư i dùng c n đưa ra m u cho tên c a các t p tin g c (g i là m u
g c) và m u cho tên c a các t p tin s đư c t o (t p tin đích đ n, g i là m u
đích). Thông thư ng m u tên th hai đó là m t vài ký t thay th (wildcards)
cu i dùng xác đ nh ch đ n c a các t p tin t o ra. Vi c đưa ra m u đư c th c
hi n trên dòng nh p vào hi n th trong c a s m ra khi ch y m t trong các
l nh sao chép hay di chuy n (hình 6.8).




Hình 6.8: H p tho i đ i tên t p tin

T t c các t p tin tho mãn m u g c s đư c đ i tên (sao chép ho c di chuy n
v i tên m i) tương ng v i m u đích. N u có các t p tin đã đư c đánh d u, thì s
ch sao chép (di chuy n) nh ng t p tin đư c đánh d u và tương ng v i m u g c.
Còn m t vài tuỳ ch n có nh hư ng đ n th c hi n thao tác sao chép và di
chuy n t p tin mà có th thi t l p cùng ngay c a s đ đưa ra các m u tên t p
tin, ho c có th thi t l p qua câu l nh c a trình đơn C u hình | C u hình....
Tùy ch n Đi theo liên k t (Follow links) xác đ nh xem khi sao chép liên k t
c ng hay m m vào thư m c đích đ n (ho c các thư m c con c a thư m c này) s
t o các liên k t đó, hay sao chép t p tin (và thư m c con) mà nh ng liên k t này
ch đ n.
Tùy ch n Vào thư m c con, n u có (Dive into subdirs) xác đ nh thao tác s
làm n u trong thư m c đích đ n đã có thư m c có cùng tên v i tên t p tin (ho c
thư m c) đang sao chép (ngu n). Theo m c đ nh tùy ch n này t t và t p tin (thư
m c) ngu n s đư c sao chép vào thư m c đích đ n. N u tùy ch n này đư c dùng
thì s t o ra trong thư m c đích đ n m t thư m c con có cùng tên và các t p tin
(thư m c) s đư c sao chép vào thư m c m i này.
Chúng ta s xem xét m t ví d đ hi u hơn tình hu ng này. B n mu n
sao chép n i dung c a thư m c one vào thư m c /two/one đã có t trư c.
Thông thư ng (khi tùy ch n b t t) mc s ch sao chép t t c các t p tin t one
vào /two/one. N u tùy ch n b t, thì t t c các t p tin s đư c sao chép vào
/two/one/one.
Tùy ch n Ghi nh thu c tính (Preserve attributes) xác đ nh xem khi sao
chép ho c di chuy n có gi l i hay không các thu c tính c a t p tin ban đ u, bao
g m: quy n truy c p, các đánh d u th i gian (truy c p và s a đ i), và n u ngư i
dùng là root thì còn c thu c tính UID và GID. N u tùy ch n không đư c dùng
thì các thu c tính s đư c đ t theo giá tr umask hi n th i.
6.8 Thông báo khi sao chép và di chuy n t p tin 143


nh hư ng đ n quá trình sao chép và di chuy n t p tin còn có tùy ch n M u
d ng shell trong trình đơn C u hình / C u hình.... Khì tùy ch n này b t, thì
ngư i dùng có th s d ng các ký t thay th (wildcards) ‘*’ và ‘?’ trong m u
ngu n. Chúng s đư c dùng tương t như trong shell. Trong m u đích ch cho
phép s d ng ‘*’ và ‘\’. Ký t ‘*’ đ u tiên trong m u đích tương ng v i
nhóm ký t thay th đ u tiên trong m u ngu n, ký t ‘*’ th hai tương ng v i
nhóm th hai v.v. . . Tương t , ký t thay th ‘\1’ tương ng nhóm ký t thay th
đ u tiên trong m u ngu n, ký t ‘\2’ – nhóm th hai v.v. . . Ký t ‘\0’ tương ng
v i toàn b tên c a t p tin ngu n. Chúng ta xem xét m t vài ví d đ hi u rõ hơn.
Ví d 1. N u m u ngu n là “*.tar.gz”, còn m u đích – “/two/*.tgz”, và tên c a
t p tin đang sao chép là “foo.tar.gz”, thì t p tin thu đư c s có tên “foo.tgz” và
n m trong thư m c “/two”.
Ví d 2. L y ví d b n c n đ i ch tên và ph n m r ng t p tin, đ “file.c” tr
thành “c.file”. M u ngu n s c n có d ng ‘*.*’, còn m u đích s là “\2.\1”.
Khi tùy ch n M u d ng shell (“Use shell patterns”) b t, thì mc s không
th c hi n vi c nhóm t đ ng. Đ ch ra nhóm các ký t trong m u ngu n s
tương ng v i các ký t thay th trong m u đích, b n c n s d ng các d u ngo c
‘\(. . . \)’. Cách này m m d o hơn, nhưng c n c n th n hơn và nhi u công s c khi
nh p vào. Chúng ta l i xem xét ti p hai ví d .
Ví d 3. N u m u ngu n có d ng “ˆ\(.*\)\.tar\.gz$”, sao chép đư c th c
hi n vào “/two/*.tgz” và đang sao chép t p tin “foo.tar.gz”, thì k t qu s là
“/two/foo.tgz”.
Ví d 4. L y ví d b n c n đ i ch tên và ph n m r ng t p tin, đ “file.c” tr
thành “c.file”. M u ngu n – ‘ˆ\(.*\)\.\(.*\)$’, còn m u đích s là “\2.\1”.
Khi th c hi n các thao tác sao chép và di chuy n ngư i dùng còn có th chuy n
ki u ch hoa/thư ng trong tên t p tin. N u s d ng ‘\u’ ho c ‘\l’ trong m u đích,
thì ký t ti p theo c a tên s đư c chuy n tương ng thành ch hoa ho c ch
thư ng. N u s d ng trong m u đích ‘\U’ ho c ‘\L’, thì s chuy n đ i t t c các
ký t phía sau đ n l n g p ‘\U’ ho c ‘\L’ ti p theo ho c đ n cu i tên t p tin.
S d ng ‘\u’ và ‘\l’ cung c p các kh năng r ng hơn so v i ‘\U’ và ‘\L’. Ví d
trong m u ngu n có ‘*’ (tùy ch n M u d ng shell b t) ho c ‘ˆ\(.*\)$’ (tùy ch n
M u d ng shell t t), còn m u đích có ‘\L\u*’, tên t p tin s đư c chuy n đ i sao
cho các ch cái đ u tiên s là ch hoa, còn l i là ch thư ng.
Ký t ‘\’ trong các m u dùng đ hu b tác d ng c a các ký t đ c bi t. Ví d ,
‘\ \’ có nghĩa là dùng ký t g ch chéo thông thư ng và ‘\*’ có nghĩa là s d ng
m t ký t d u sao thông thư ng (asterisk).


6.8 Thông báo khi sao chép và di chuy n t p tin
Khi ngư i dùng th c hi n các thao tác sao chép, di chuy n hay xóa t p tin, Mid-
night Commander hi n th trên màn hình h p tho i, trong đó cho bi t trên
(nh ng) t p tin nào s th c hi n thao tác và quá trình th c hi n di n ra như
th nào. Đ hi n th quá trình làm vi c, trên màn hình hi n ra t m t đ n ba
thanh bi u đ (progress bars). Thanh th nh t (file bar) cho bi t đã th c hi n (ví
d sao chép) đư c bao nhiêu ph n c a t p tin hi n th i. Thanh th hai (count
bar) cho bi t đ n th i đi m hi n th i đã th c hi n đư c bao nhiêu ph n, tính theo
144 S d ng Midnight Commander


t ng cái, c a nh ng t p tin đã đánh d u. Thanh th ba (bytes bar) cho bi t ph n
trăm dung lư ng tính theo byte đã làm xong. N u t t đi tuỳ ch n Thao tác v i
thông tin dài dòng (xem C u hình / C u hình...), thì hai thanh bi u đ cu i
s không đư c hi n th .
ph n dư i c a h p tho i này có hai nút. Nh n nút B qua s d n đ n vi c
b qua thao tác v i t p tin này và ti p t c thao tác t p tin sau n u có. Nh n nút
D ng s k t thúc thao tác, t t c nh ng t p tin còn l i s b b qua.
Trong quá trình th c hi n các thao tác v i t p tin ngư i dùng có th nhìn
th y 3 d ng c a s n a.

1. C a s l i đưa ra thông tin v l i và đ ngh ba cách gi i quy t. Thông
thư ng ngư i dùng ch n B qua đ không th c hi n thao tác v i t p tin
đang có v n đ , ho c D ng đ không th c hi n hoàn toàn thao tác đưa ra.
Phương án th ba là Th l i. Ch n phương án này n u ngư i dùng đã s a
đư c l i (ví d , b ng trình l nh terminal khác).

2. C a s h i l i xu t hi n khi ngư i dùng đang th c hi n thao tác d n đ n
vi c ghi chèn lên t p tin đã có, t c là trong thư m c sao chép hay di chuy n
đ n đã có t p tin cùng tên. Trong c a s h i l i s hi n ra th i gian t o ra
và kích thư c c a t p tin ngu n (đang đư c sao chép hay di chuy n) và c a
t p tin đích (s b hu b n u ghi chèn).




Hình 6.9: C a s h i l i


Dư i đây đưa ra hai câu h i l i 6.9. Câu h i th nh t “Ghi đè lên t p tin
này” có ba cách tr l i:

• Đ ng ý (nút Có)
• T ch i, không ghi chèn (nút Không)
• Ghi thêm n i dung c a t p tin đang sao chép vào cu i t p tin đã có
(nút Thêm vào cu i)
6.9 Dòng l nh c a h v 145


Còn đ tr l i cho câu h i th hai “Ghi đè lên m i t p tin đích?” chúng ta có
4 cách. Cách gi i quy t đư c dùng s làm vi c v i t t c các t p tin đã ch n,
đo đó c a s h i l i s không hi n ra m i l n có t p tin trùng tên:

• T t c – ghi chèn t t c các t p tin đã ch n, không h i l i.
• C p nh t – ch ghi chèn (đ ng đ n) nh ng t p tin đư c t o ra trư c
t p tin ngu n.
• Không – không ghi chèn các t p tin (n u không có t p tin đích, thì s
th c hi n sao chép).
• N u kích thư c khác nhau – ch ghi chèn n u kích thư c các t p tin
khác nhau.

Ngư i dùng cũng có th d ng th c hi n thao tác n u nh n nút D ng cu i
c a s h i l i. L a ch n nút mu n nh n b ng các phím mũi tên ho c phím
.

3. C a s yêu c u xóa toàn b ( 6.10) xu t hi n khi ngư i dùng đang th c
hi n thao tác xóa m t thư m c không r ng. Nh n nút Có đ xóa thư m c
cùng v i t t c các t p tin c a nó, Không đ không xóa thư m c này, ch n
T t c n u b n đã đánh d u nhi u thư m c và tin tư ng là mình đúng,
Không đ b qua, không xóa nh ng thư m c không r ng trong s đã ch n,
D ng có nghĩa là không th c hi n thao tác xóa n a. Ch ch n Có ho c T t
c khi b n th c s tin tư ng là mình mu n xóa thư m c cùng v i toàn b
các thư m c con c a nó.




Hình 6.10: C a s yêu c u


N u đã đánh d u nhóm các t p tin đ thao tác, thì sau khi th c hi n s b
đánh d u kh i nh ng t p tin đã thao tác thành công. Nh ng t p tin b b qua,
t c là không thao tác, s v n đư c đánh d u như cũ.


6.9 Dòng l nh c a h v
Như đã nói khi mô t v ngoài c a màn hình Midnight Commander, ph n dư i
c a màn hình luôn luôn có dòng l nh c a h v .
Trong th i gian làm vi c v i Midnight Commander, đ có th ch y m t câu
l nh nào đó c a h đi u hành, ngư i dùng c n gõ vào dòng l nh tên c a chương
146 S d ng Midnight Commander


trình tương ng ho c ch n chương trình đó trong b ng hi n th i (đưa dòng chi u
sáng lên tên t p tin chương trình), sau đó gõ phím . N u ngư i dùng
nh n phím khi dòng chi u sáng n m trên tên t p tin không ph i là
chương trình, thì Midnight Commander s so sánh ph n m r ng c a t p tin
này v i ph n m r ng có trong “t p tin các ph n m r ng” ~/mc.ext. N u trong
t p tin mc.ext có m t ph n nh ch ra thao tác làm vi c v i nh ng t p tin có
ph n m r ng như t p tin đã ch n, thì s th c hi n nh ng câu l nh đ t trong
ph n nh này. Trư c khi ch y các l nh có th c hi n nh ng s thay th macro đơn
gi n.
Thông thư ng vi c nh p các câu l nh đòi h i ph i gõ r t nhi u các ký t , đ c
bi t trong trư ng h p ph i ch ra các tham s c a câu l nh, trong s đó có đư ng
d n đ y đ c ng v i tên c a t p tin c n làm vi c. Đ giúp nh p câu l nh d dàng
hơn trong Midnight Commander có m t vài t h p phím cho phép gi m s l n gõ
bàn phím trong th i gian nh p và s a đ i câu l nh trên dòng l nh.

• +. Sao chép tên c a t p tin hay thư m c đang đư c chi u sáng
vào dòng l nh.

• +. Cũng như +.

• +. Th c hi n thao tác t đ ng đi n thêm4 tên t p tin, tên câu
l nh, tên ngư i dùng hay tên máy (tùy theo nh ng gì ngư i dùng đã gõ và
ph n nào c a câu l nh đang đư c nh p vào), t c là Midnight Commander
s đoán nh ng ký t mà ngư i dùng còn chưa nh p vào d a trên danh sách
t p tin c a thư m c hi n th i, danh sách câu l nh, v.v. . . Tuy nhiên n u b n
làm vi c trong giao di n đ ho , ví d trong môi trư ng KDE thì r t có th
s không dùng đư c t h p phím này, do môi trư ng làm vi c đã dùng nó
cho thao tác khác (trong trư ng h p KDE thì đó là chuy n gi a các c a s ).
T t nhiên b n có th thay đ i c u hình c a môi trư ng làm vi c, nhưng đó
đã là m t câu chuy n khác.

• +, . Sao chép vào dòng l nh tên c a các t p tin đã đư c đánh
d u trong b ng hi n th i, ho c tên c a t p tin đang đư c chi u sáng n u
không có t p tin nào đư c đánh d u.

• +, +. Sao chép vào dòng l nh tên c a các t p tin đư c
đánh d u trong b ng không ph i hi n th i.

• +,. Sao chép vào dòng l nh tên c a thư m c hi n th i, t c là
tên c a thư m c đang đư c hi n th trên b ng hi n th i.

• +, +. Sao chép vào dòng l nh tên c a thư m c đang
hi n th trên b ng không ph i hi n th i.

• +. Chèn nh ng ký t đư c chương trình Midnight Commander
biên d ch theo m t cách nào đó (ví d ký t ‘+’).

• +. Quay ngư c l i m t câu l nh theo danh sách nh ng l nh đã
ch y (l ch s l nh).
4
autocompletion
6.10 Trình đơn Câu l nh 147


• +. Đi t i câu l nh ti p theo trong danh sách l ch s l nh.
• +. Hi n th l ch s c a dòng nh p vào hi n th i, n u đó là dòng
l nh thì hi n th l ch s l nh.
Dòng nh p vào không ch là dòng l nh c a h v shell mà còn là nh ng dòng
nh p vào c a các h p tho i c a các chương trình con khác nhau. Ví d dòng nh p
vào đ a ch IP c a máy ch FTP mà b n mu n k t n i t i như trong hình 6.11
(câu l nh K t n i FTP... c a trình đơn B ng ph i ho c B ng trái). Trong b t
kỳ trư ng h p nào, khi trên màn hình xu t hi n dòng nh p vào, thì ngư i dùng
có th s d ng nh ng t h p phím đi u khi n li t kê trong b ng 6.5.




Hình 6.11: Dòng nh p vào đ a ch IP c a máy ch FTP



6.10 Trình đơn Câu l nh
Trình đơn Câu l nh cho phép th c hi n thêm m t s thao tác đi u khi n h
th ng t p tin, đ ng th i th c hi n nh ng câu l nh thay đ i d ng c a các b ng
Midnight Commander cũng như nh ng thông tin hi n th trên chúng.
Khi ch y câu l nh Cây thư m c c a trình đơn này thì s hi n ra c a s cho
th y c u trúc thư m c c a h th ng t p tin. Có th làm hi n ra cây thư m c b ng
hai cách: qua câu l nh Cây thư m c c a trình đơn Câu l nh và qua câu l nh
Cây thư m c c a trình đơn B ng ph i ho c b ng trái.
Đ tránh m t th i gian t o cây thư m c, Midnight Commander ch t o m t
ph n nh cây này ch không t o h t. N u thư m c ngư i dùng mu n xem không
đư c hi n th thì hãy chuy n t i thư m c m c a nó r i nh n + ho c
. N u thư m c không có ch a các thư m c con thì s không có gì x y ra.
Trong trư ng h p ngư c l i thì s m ra m t nhánh con c a cây thư m c.
Có hai ch đ hi n th cây thư m c. Trong ch đ tĩnh (static) đ di chuy n t i
thư m c mu n xem (t c là di chuy n dòng chi u sáng t i tên c a thư m c đó) ch
dùng các phím và . S hi n th t t c các thư m c con mà chương trình
đ c đư c t i th i đi m này. Trong ch đ đ ng (dynamic) các phím và
đư c dùng đ chuy n t i thư m c bên c nh có cùng c p b c. Đ chuy n t i thư
m c m s d ng phím , còn phím dùng đ chuy n t i các thư m c con
c a thư m c hi n th i, t c là chuy n t i m t c p b c th p hơn. Khi này ch hi n
th nh ng thư m c n m trên (bao g m c thư m c m và cao hơn), cácthuw m c
bên c nh có cùng c p b c và các thư m c con chính th c c a thư m c này, không
hi n th các thư m c “cháu”, “ch t”. D ng c a cây thư m c t đ ng thay đ i sau
m i l n di chuy n qua cây này.
Đ đi u khi n xem cây thư m c có th s d ng nh ng t h p phím sau:
148 S d ng Midnight Commander


B ng 6.5: Các l nh đi u khi n dòng nh p vào
T h p phím Hành đ ng th c hi n
+ Di chuy n con tr lên đ u dòng.
+ Di chuy n con tr t i cu i dòng.
+ () Di chuy n con tr sang trái m t ký t .
+ () Di chuy n con tr sang ph i m t ký t .
+ Di chuy n con tr sang ph i m t t .
+ Di chuy n con tr sang trái m t t .
+ () Xóa ký t n m bên trái con tr .
+ () Xóa ký t n m t i ch con tr .
+ Đánh d u b t đ u ph n văn b n mu n c t (ghi vào b
đ m).
+ Sao chép văn b n n m gi a con tr và đánh d u vào
b đ m đ ng th i xóa đi văn b n đó kh i dòng nh p
vào.
+ Sao chép văn b n n m gi a con tr và đánh d u vào
b đ m mà không xóa văn b n đó kh i dòng nh p vào.
+ Dán n i dung c a b đ m vào dòng nh p t i v trí n m
trư c (bên trái) con tr .
+ Xóa b n b n t v trí con tr t i cu i dòng.
+ và + Nh ng t h p phím này dùng đ di chuy n trong l ch
s l nh. + di chuy n t i nh ng câu l nh n m
trư c, còn + – t i nh ng câu l nh n m sau.
++ Có th dùng m t trong hai t h p phím này đ xóa t
(+) n m trư c (bên trái) con tr . T đư c coi là m t c m
ký t n m gi a hai kho ng tr ng.
+ Th c hi n thao tác t đ ng đi n thêm (autocomple-
tion) tên t p tin, tên câu l nh, tên ngư i dùng hay tên
máy.


• Nh ng phím dùng đ di chuy n li t kê trong b ng 6.1

• . Nh n phím này trong c a s xem cây thư m c đ thoát kh i ch
đ xem và hi n th danh sách t p tin c a thư m c đã ch n trong b ng hi n
th i. Khi hi n th cây thư m c trên m t b ng thì nh n phím s
hi n th thư m c tương ng lên b ng th hai, còn trên b ng hi n th i s là
cây thư m c.

• + ho c . Đ c l i n i dung c a thư m c (c p nh t, refresh).
S d ng trong trư ng h p khi cây thư m c đư c hi n th không tương ng
v i c u trúc th t s c a nó: m t s thư m c con không đư c hi n th ho c
hi n th c nh ng thư m c con đã b xóa.

• . Xóa thư m c hi n th i ra kh i cây thư m c. Câu l nh này ch s d ng
đ xóa nh ng nhánh cây hi n th không đúng. N u ngư i dùng xóa thư m c
có trên đĩa thì s hi n ra m t thông báo l i. Vì th khi xem cây thư m c thì
dòng dư i cùng (cho bi t ch c năng c a các phím F) cho bi t phím
có ch c năng Quên.
6.10 Trình đơn Câu l nh 149


• (Static/Dynamic). Chuy n đ i gi a hai ch đ di chuy n trong cây thư
m c tĩnh (dùng theo m c đ nh) và đ ng.

• . Sao chép thư m c con (c n ch ra thư m c mu n sao chép t i trong
dòng nh p vào hi n ra).

• . Di chuy n thư m c.

• . T o thư m c con trong thư m c hi n th i.

• . Xóa thư m c đ t dư i dòng chi u sáng ra kh i h th ng t p tin.

• + ho c +. Tìm thư m c ti p theo tương ng v i m u
đưa ra. N u không có thư m c đó, thì s chuy n dòng chi u sáng xu ng
dư i m t dòng.

• + ho c . Xóa ký t cu i cùng trong dòng (m u) tìm
ki m.

• . Thêm ký t này vào m u tìm ki m và di chuy n
dòng chi u sáng đ n tên c a thư m c ti p theo tho mãn m u này. Trong
ch đ xem cây thư m c thì đ u tiên c n ch y ch đ tìm ki m b ng t h p
+. M u tìm ki m s đư c hi n th trên dòng tr ng thái mini (n u
có).

Hành đ ng sau ch có th th c hi n trong c a s đang hi n th cây thư m c:
(Help) – G i tr giúp và hi n th ph n tr giúp v c a s cây thư m c.
Có th s d ng chu t trong c a s xem cây thư m c. Nh n đúp chu t có tác
d ng như khi nh n phím .
Câu l nh Tìm t p tin (phím nóng + ho c ,) c a trình
đơn Câu l nh cho phép ngư i dùng tìm trên đĩa t p tin có tên đưa ra. Sau khi
ch n câu l nh này s hi n ra m t h p tho i h i thư m c đ b t đ u tìm ki m,
tên t p tin mu n tìm (xem hình 6.12). Ngư i dùng có th ch n thư m c b t đ u
tìm ki m trong cây thư m c hi n ra khi nh n nút Cây thư m c c a h p tho i.
Trong ô N i dung (Contents) có th đưa ra các bi u th c chính quy theo các quy
lu t c a l nh egrep. Có nghĩa là đ ng trư c nh ng ký t có ý nghĩa đ c bi t
đ i v i egrep c n đ t ký t “\”. Ví d , n u mu n tìm dòng “strcmp (”, thì ngư i
dùng c n nh p vào ô N i dung dòng “strcmp \”. Đ b t đ u tìm ki m, nh n
vào nút Đ ng ý. Trong th i gian tìm ki m có th t m d ng b ng nút Hoãn và
ti p t c b ng nút Ti p t c (hình 6.13).
Có th xem danh sách nh ng t p tin tìm th y b ng các phím và .
Nút Chuy n thư m c dùng đ chuy n t i thư m c có ch a t p tin đang đư c
chi u sáng. Nút L p l i dùng đ nh p vào các tham s cho tìm ki m m i. Nút
Thoát dùng đ thoát kh i ch đ tìm ki m. Nh n nút B ng s hi n th k t qu
tìm ki m lên b ng hi n th i đ ngư i dùng có th th c hi n các thao tác khác
v i nh ng t p tin đã ch n (xem, sao chép, di chuy n, xóa, v.v. . . ). Sau khi đưa ra
b ng có th nh n + đ tr l i danh sách t p tin thông thư ng.
Ngoài ra, còn có kh năng đưa ra danh sách nh ng thư m c mà câu l nh
Tìm t p tin s b qua trong khi tìm ki m (ví d , n u ngư i dùng bi t là t p
tin đang tìm không có trên CD hay không mu n tìm ki m trong nh ng thư m c
150 S d ng Midnight Commander




Hình 6.12: B t đ u tìm ki m




Hình 6.13: Đang tìm ki m

k t n i qua NFS qua đư ng truy n r t ch m). C n ph i ch ra nh ng thư m c
mu n b qua này b ng bi n find_ignore_dirs trong ph n Misc c a t p tin
~/.mc/ini. Tên thư m c cách nhau b i d u hai ch m như sau:

[Misc]
find_ignore_dirs=/cdrom:/nfs/wuarchive:/afs

B n có th s d ng vi c đưa k t qu l nh lên trên b ng (đ c thêm B ng
ngoài dư i) đ th c hi n nh ng hành đ ng ti p n i nhau ph c t p hơn, còn
Tìm ki m t p tin ch cho phép th c hi n nh ng yêu c u đơn gi n.
Câu l nh Đ i ch hai b ng (+) đ i ch n i dung c a b ng trái
và b ng ph i. Câu l nh B t/t t b ng (+) n đi hai b ng c a mc và
hi n th k t qu làm vi c c a các l nh shell. Đ m l i các b ng mc cũng dùng
l nh (phím nóng) này. L nh này làm vi c trên xterm và dư i console c a Linux.
Câu l nh So sánh thư m c (,) so sánh n i dung c a các thư m c
đang đư c hi n th trên b ng trái và b ng ph i. Có ba phương pháp so sánh. N u
dùng phương pháp nhanh thì ch so sánh kích thư c và th i gian t o các t p tin
6.10 Trình đơn Câu l nh 151


có cùng tên. K t qu là trong c hai thư m c s chi u sáng nh ng t p tin không
có trong thư m c còn l i, ho c chi u sáng nh ng t p tin là phiên b n m i hơn.
Sau đó ngư i dùng có th s d ng câu l nh sao chép () đ làm cho n i dung
c a hai thư m c gi ng nhau. Phương pháp theo byte s so sánh n i dung c a các
t p tin (theo t ng byte). Phương pháp này không dùng đư c n u máy không h
tr g i h th ng (system call) mmap(2). Khi so sánh theo kích thư c thì ch ki m
tra kích thư c c a các t p tin tương ng và không ki m tra ngày t o ra.
Câu l nh B ng ngoài (hay đúng hơn ph i g i là “Đưa k t qu làm vi c c a
l nh lên trên b ng”) cho phép ngư i dùng th c hi n nh ng chương trình ngoài,
r i đưa k t qu c a l nh này thành n i dung c a b ng hi n th i (ví d đi n
hình là đưa k t qu c a l nh find). Ví d , n u b n mu n th c hi n m t hành
đ ng nào đó (xóa, sao chép, di chuy n,. . . ) v i t t c các liên k t m m c a thư
m c hi n th i, thì b n có th s d ng câu l nh B ng ngoài đ ch y câu l nh
find . -type l -print như trong hình 6.14.




Hình 6.14: Tìm ki m t t c các liên k t m m

Sau khi th c hi n câu l nh này, trên b ng hi n th i s không ph i là n i dung
c a thư m c tương ng mà ch có các liên k t m m n m trong thư m c đã ch ra.
N u mu n ngư i dùng có th lưu nh ng câu l nh b ng ngoài thư ng dùng b ng
nh ng tên riêng có ý nghĩa đ có th g i nhanh nh ng câu l nh này theo tên c a
chúng. Đ th c hi n vi c này c n nh p câu l nh vào dòng nh p vào (dòng “Câu
l nh”) r i nh n nút Thêm m i. Sau đó b n c n nh p vào tên c a l nh đó. L n
sau b n ch c n ch n tên tương ng trong danh sách mà không c n ph i nh p
l i câu l nh t đ u5 .
Câu l nh L ch s câu l nh hi n ra c a s v i danh sách nh ng l nh đã th c
hi n trư c đây. Có th sao chép l nh đang đư c chi u sáng (di chuy n dòng chi u
sáng b ng các phím và ) vào dòng l nh c a h v b ng phím .
5
T t nhiên b n có th dùng l ch s câu l nh (xem trên ho c ngay dư i)
152 S d ng Midnight Commander


Còn có th truy c p vào danh sách l ch s câu l nh b ng các phím +
ho c +, tuy nhiên trong trư ng h p này ngư i dùng s không th y
danh sách các câu l nh. Thay vào đó trên dòng l nh s hi n th m t trong các
l nh c a danh sách và phím + s chuy n nó thành l nh n m trên, còn
+ s chuy n thành l nh n m dư i trong danh sách.
Câu l nh Thư m c thư ng dùng (+) cho phép t o danh sách
nh ng thư m c thư ng đư c dùng và cho phép chuy n nhanh đ n nh ng thư
m c trong danh sách này (hình 6.15). Đ th c hi n vi c này, mc t o ra danh sách
các đánh d u (tên d nh ) cho các thư m c thư ng dùng này. Có th s d ng danh
sách này đ chuy n nhanh đ n thư m c c n thi t. Cũng trong h p tho i thư m c
thư ng dùng b n có th thêm đánh d u m i vào danh sách ho c xóa đánh d u đã
có. Đ thêm đánh d u m i còn có th s d ng t h p phím (+, ),
khi đó s thêm thư m c hi n th i vào danh sách thư m c thư ng dùng. Chương
trình s hi n ra yêu c u nh p tên đánh d u cho thư m c này.




Hình 6.15: H p tho i danh sách thư m c thư ng dùng

Câu l nh Công vi c n n sau cho phép ngư i dùng đi u khi n nh ng công
vi c đang làm vi c ch đ n n đã ch y t Midnight Commander (ví d thao tác
sao chép và di chuy n t p tin). S d ng câu l nh này ho c phím nóng +
, b n có th d ng, ph c h i (ti p t c ch y) ho c di t b t kỳ công vi c n n
sau này (xem hình 6.16).
Sau khi ch n câu l nh So n th o t p tin ph n m r ng ngư i dùng có th
s a đ i t p tin mc.ext xác đ nh dùng chương trình nào đ m các t p tin v i
ph n m r ng (ph n cu i c a tên sau d u ch m cu i cùng) nào. Chương trình
này s đư c ch y đ thao tác (xem, so n th o hay th c hi n) v i t p tin có ph n
m r ng tương ng khi chuy n dòng chi u sáng lên tên t p tin r i nh n .
Câu l nh So n th o t p tin trình đơn dùng đ s a trình đơn c a ngư i
dùng ~/.mc/menu (trình đơn hi n ra sau khi nh n phím ) ho c trình đơn
6.11 C u hình Midnight Commander 153




Hình 6.16: Đi u khi n công vi c n n sau

c a h th ng, có th là /usr/share/mc/mc.menu. T t nhiên trong trư ng h p
cu i cùng b n c n có quy n ghi lên t p tin tương ng.


6.11 C u hình Midnight Commander
Chương trình Midnight Commander có nhi u c u hình (tùy ch n). M i tùy ch n
có th đư c dùng ho c không. Vi c dùng hay không dùng tùy ch n đư c th c hi n
qua các c a s h i tho i c a trình đơn C u hình. Tùy ch n đư c dùng n u có
d u “x” ho c d u sao “*” (đ t vào b ng phím tr ng) trong ngo c vuông đ ng
trư c tên c a tùy ch n. Bây gi chúng ta xem xét t ng câu l nh c a trình đơn
C u hình đ bi t có th dùng ho c không dùng nh ng tùy ch n nào.
Câu l nh đ u tiên là C u hình. Khi ch n câu l nh này s hi n ra m t h p
tho i như trong hình 6.17. Nh ng tham s c u hình trong h p tho i này chia
thành ba nhóm: “C u hình b ng”, “T m ng ng sau khi ch y...” và “C u hình
khác”.
Trong vùng “C u hình b ng”, ngư i dùng có th đưa ra giá tr c a các tham
s sau:

• Hi n th t p tin sao lưu. Theo m c đ nh chương trình Midnight Com-
mander không hi n th nh ng t p tin có tên k t thúc b ng ‘∼’ (gi ng như
tùy ch n -B c a l nh ls).

• Hi n th t p tin n. Theo m c đ nh Midnight Commander hi n th t t c
các t p tin, trong đó có nh ng t p tin có tên b t đ u b ng đ u ch m (gi ng
như ls-a).

• Nhãn di chuy n xu ng. Khi ngư i dùng đánh d u t p tin (b ng t h p
phím + ho c ), thì theo m c đ nh dòng chi u sáng tên
t p tin s di chuy n xu ng dư i m t dòng.

• Đ y xu ng trình đơn. N u tùy ch n này đư c dùng, thì khi g i trình đơn
chính b ng phím s hi n th ngay l p t c danh sách các câu l nh c a
154 S d ng Midnight Commander




Hình 6.17: C u hình Midnight Commander

trình đơn (Trình đơn đ y xu ng). Trong trư ng h p ngư c l i, phím
ch đưa ngư i dùng vào trình đơn chính và ngư i dùng ph i t ch n trình
đơn tương ng b ng các phím mũi tên và dùng phím ho c ch cái
đ u tiên c a trình đơn đ m (đ y xu ng) trình đơn đó. Ví d , b n mu n
m trình đơn T p tin, thì đ u tiên c n nh n phím r i dùng phím
mũi tên sang ph i r i nh n phím , ho c nh n phím r i nh n
phím .

• Tr n l n t t c t p tin. N u dùng tùy ch n này, thì s hi n th không
phân bi t t p tin và thư m c. N u tùy ch n không đư c dùng thì thư m c
(và đư ng d n đ n thư m c) s đư c hi n th đ u danh sách, còn tên t p
tin – sau tên c a t t c các thư m c.

• N p nhanh thư m c. Theo m c đ nh tùy ch n này không đư c dùng. N u
b n b t dùng tùy ch n này, thì Midnight Commander s s d ng cách (m o)
sau đ hi n th n i dung thư m c: ch đ c l i n i dung c a thư m c trong
trư ng h p đã thay đ i b n ghi inode c a thư m c, t c là n u trong thư m c
đã t o ho c xoá đi t p tin (thư m c) nào đó; n u ch thay đ i b n ghi inode
c a các t p tin c a thư m c này (đã thay đ i kích thư c t p tin, quy n truy
c p ho c ch s h u v.v. . . ) thì s không c p nh t l i n i dung c a thư m c
đó. Trong trư ng h p đó (n u tùy ch n này đư c dùng), thì b n c n ph i t
c p nh t l i danh sách t p tin b ng t h p phím +.
Vùng T m ng ng sau khi ch y.... Sau khi th c hi n các câu l nh Midnight
Commander có th t m ng ng m t chút đ ngư i dùng có th xem và nghiên c u
k t qu làm vi c c a nh ng l nh này. đây có ba tùy ch n:
• Không bao gi . Có nghĩa là ngư i dùng không mu n xem k t qu làm vi c
c a l nh. Trên các kênh giao tác Linux ho c khi dùng xterm ngư i dùng
còn có th xem k t qu này b ng t h p phím +.
6.11 C u hình Midnight Commander 155


• Trên nh ng terminal “ngu”. S t m ng ng trên nh ng terminal không
có kh năng hi n th k t qu làm vi c c a l nh th c hi n cu i cùng.

• Luôn luôn. Chương trình Midnight Commander luôn luôn t m ng ng sau
khi th c hi n b t kỳ l nh nào.

Trong vùng C u hình khác ngư i dùng có th đ t ra các tham s sau:

• Thao tác v i thông báo dài dòng (Verbose operation). Tùy ch n này xác
đ nh có hi n th hay không các c a s ph khi th c hi n các thao tác sao
chép, di chuy n và xóa. N u b n đang dùng m t terminal ch m thì không
nên dùng tùy ch n này. Tùy ch n này cũng t đ ng không đư c dùng n u
t c đ làm vi c c a terminal nh hơn 9600 bps.

• Tính t ng kích thư c (Compute totals). N u tùy ch n này đư c dùng, thì
trư c khi th c hi n các thao tác sao chép, di chuy n, xóa Midnight Com-
mander s tính t ng s t p tin và t ng kích thư c c a chúng đ ng th i hi n
th quá trình thao tác v i nh ng t p tin này d ng các dòng bi u đ (tuy
nhiên, tính năng này s làm ch m quá trình m t chút). Tùy ch n này không
làm vi c, n u không dùng tùy ch n Thao tác v i thông báo dài dòng
trên.

• M u d ng shell (Shell Patterns). Theo m c đ nh các l nh ch n (select) và
b ch n (unselect) nhóm t p tin và hi n th t p tin theo b l c (Filter) s
d ng các bi u th c chính quy gi ng như trong h v shell. Đ có th đ t
đư c k t qu như trong shell, thì chương trình th c hi n nh ng bi n đ i
sau: thay th ‘*’ b ng ‘.*’ (không ho c vài ký t ); thay th ‘?’ b ng ‘.’ (chính
xác m t ký t ) và thay th ‘.’ b ng m t d u ch m thông thư ng (literal dot).
N u tùy ch n này không đư c dùng, thì c n dùng bi u th c chính quy theo
các lu t vi t trong man 1 ed.

• T đ ng ghi nh c u hình. N u dùng tùy ch n này, thì khi thoát kh i
chương trình Midnight Commander, giá tr c a các tham s thi t l p s
đư c lưu vào t p tin ~/.mc/ini.

• Trình đơn t đ ng. N u dùng tùy ch n này, thì trình đơn c a ngư i dùng
s t đ ng hi n th lên màn hình m i khi ch y chương trình. Tính năng này
có ích khi trên máy làm vi c ngư i dùng có ít kinh nghi m (ngư i thao tác)
và ch th c hi n nh ng thao tác đơn gi n.

• S d ng so n th o n i b . N u dùng tùy ch n này, thì đ so n th o các
t p tin Midnight Commander s dùng trình so n th o c a mình (mcedit).
N u không dùng tùy ch n này thì Midnight Commander s g i trình so n
th o đư c ch ra trong bi n môi trư ng EDITOR. N u không đ t bi n này thì
s dùng vi.

• Trình xem n i b . N u dùng tùy ch n này, thì Midnight Commander s
s d ng chương trình xem t p tin c a mình khi xem t p tin. N u không
dùng tùy ch n này, thì s g i chương trình ch ra trong bi n PAGER. N u
không ch ra bi n này thì s dùng l nh view.
156 S d ng Midnight Commander


• T đ ng hoàn thành: hi n t t c . Trong quá trình nh p l nh Midnight
Commander có th “t đ ng hoàn thành” câu l nh đó, t c là th đoán ph n
còn l i c a câu l nh đang nh p, khi nh n phím +. Theo m c
đ nh khi nh n + th nh t chương trình s tìm t t c nh ng
phương án hoàn thành, và n u như có nhi u phương án thì chương trình s
t o ra ti p bíp. Khi nh n t h p phím + l n th hai s hi n th
t t c các kh năng hoàn thành. N u mu n th y các phương án hoàn thành
ngay sau l n nh n + đ u tiên thì hãy b t dùng tùy ch n này.

• Cái ch quay. N u dùng tùy ch n này, thì Midnight Commander hi n th
góc trên bên ph i v ch quay dùng làm ch th cho bi t chương trình đang
th c hi n công vi c (thao tác) nào đó.

• Di chuy n gi ng trong Lynx. N u dùng tùy ch n này, ngư i dùng có kh
năng dùng các phím đ chuy n vào thư m c đang đư c chi u sáng và
đ chuy n lên thư m c m c a thư m c hi n th i (v i đi u ki n là
dòng l nh tr ng). Theo m c đ nh tùy ch n này không đư c dùng.

• cd theo liên k t. Dùng tùy ch n này thì Midnight Commander s tuân
theo chu i các thư m c con lôgíc khi thay đ i thư m c theo liên k t, gi ng
như khi dùng l nh cd. Theo m c đ nh bash cũng làm vi c như v y. N u
không dùng tùy ch n này thì Midnight Commander s chuy n thư m c
theo c u trúc th t s c a các thư m c. T c là n u ngư i dùng vào thư m c
hi n th i theo liên k t đ n nó, thì l nh cd .. s đưa ngư i dùng vào thư
m c m c a thư m c hi n th i, ch không ph i vào thư m c ch a liên k t.

• Xóa m t cách an toàn. Dùng tùy ch n này s ngăn ch n đư c ph n nào
vi c xóa t p tin m t cách vô tình. N u dùng tùy ch n, thì trong h p tho i
h i l i vi c xóa t p tin theo m c đ nh nút đư c ch n s chuy n t “Có” sang
“Không”. Theo m c đ nh tùy ch n này không đư c dùng.

Câu l nh th hai là V ngoài, cho phép thay đ i m t s tham s hi n th c a
s chính c a chương trình Midnight Commander trên màn hình (xem hình 6.18).

B n có th hi n th ho c không hi n th dòng trình đơn chính trên đ u màn
hình, dòng l nh, dòng g i ý (n m trên dòng l nh), dòng giúp nh v công d ng
c a các phím ch c năng cu i màn hình. Trên các kênh giao tác (console) Linux
ho c SCO còn có th đ t s dòng dành đ hi n th k t qu làm vi c c a l nh.
Ngoài ra còn có th ch ra tư th n m c a b ng là n m ngang hay d c, và có th
thay đ i kích thư c c a nh ng b ng này.
Theo m c đ nh t t c các thông tin đư c hi n th b ng m t màu, nhưng b n có
th thay đ i đ quy n truy c p và d ng t p tin có màu khác. N u dùng phân bi t
màu cho quy n truy c p, thì nh ng ô perm và mode cho bi t quy n truy c p c a
ngư i dùng đã ch y chương trình Midnight Commander s có màu xác đ nh b ng
t khóa selected trong ph n [Colors] c a t p tin kh i đ ng ~/.mc/ini. N u
dùng phân bi t màu cho các d ng t p tin, thì Midnight Commander s s d ng
các màu khác nhau cho thư m c, các t p tin core (dump c a b nh ), các t p tin
th c hi n v.v. . . N u dùng tùy ch n Hi n tr ng thái mini, thì trong ph n dư i
6.11 C u hình Midnight Commander 157




Hình 6.18: Thay đ i v ngoài c a Midnight Commander

c a m i b ng s có m t dòng cho bi t thông tin v t p tin đang đư c chi u sáng
ho c thư m c hi n th i.
Trong h p tho i Bít hi n th (hình 6.19), ngư i dùng ch ra đ nh d ng ter-
minal s s d ng đ x lý (nh p vào và hi n th trên màn hình) thông tin d ng
các byte, ví d , thông tin trong các t p tin.




Hình 6.19: Thay đ i bit hi n th c a Midnight Commander

Bit (b ng mã) đư c ch n s đư c hi n th trong h p tho i này, trong trư ng
h p hình 6.19 thì bit đư c ch n là 8 bit khác. Nh n vào nút L a ch n bên
c nh s hi n th danh sách các b ng mã có. Dùng các phím mũi tên lên, xu ng
đ ch n b ng mã thích h p sau đó nh n . Dùng tùy ch n Đ u vào 8 bit
đ y đ ch có ý nghĩa trên các terminal có kh năng hi n th t t c các ký t
8bit (ví d các ký t c a ti ng Vi t).
B ng câu l nh Xác nh n có th c u hình đ ch n có hi n th hay không h p
tho i h i l i ngư i dùng trư c khi th c hi n các thao tác xóa, ghi chèn và ch y
chương trình, cũng như trư c khi thoát kh i chương trình mc. Không hi n th
nh ng h p tho i này s gây ít nhi u nguy hi m đ n h th ng (hình 6.20).
Câu l nh Th phím (Learn keys) g i h p tho i, trong đó ngư i dùng có th
th m t s phím ( – , , ), vì nh ng phím này không
ph i làm vi c trên m i d ng terminal. Trong h p tho i hi n ra s xu t hi n m t
158 S d ng Midnight Commander




Hình 6.20: Thi t l p các h p tho i h i l i ngư i dùng

b ng v i tên c a các phím có th th . B n có th di chuy n dòng chi u sáng qua
các phím này b ng ho c các phím dùng trong trình so n th o vi ( –
sang trái, – xu ng dư i, – lên trên, – sang ph i). N u nh n vào các
phím mũi tên và sau đó bên c nh tên c a chúng xu t hi n d u OK, thì cũng có
th s d ng chúng đ đi u khi n dòng chi u sáng (hình 6.21).




Hình 6.21: Th và c u hình các phím

Đ th m t phím c n nh n t ng phím trong b ng. N u nó làm vi c bình
thư ng thì bên c nh s xu t hi n d u OK. Sau khi xu t hi n d u này thì phím
s b t đ u làm vi c ch đ bình thư ng. Ví d , l n nh n phím đ u tiên s
làm xu t hi n d u OK (n u phím làm vi c bình thư ng), còn nh ng l n nh n ti p
theo s g i c a s tr giúp. Tương t đ i v i các phím mũi tên. Phím luôn
luôn làm vi c. N u có phím nào đó không làm vi c, thì sau khi nh n lên phím
đó không xu t hi n d u OK. Trong trư ng h p đó có th dùng phím khác thay
th . Đ thay th c n chuy n dòng chi u sáng đ n tên c a phím không làm vi c
(b ng chu t, các phím mũi tên ho c phím ) r i nh n ho c phím
tr ng. Sau đó s hi n ra m t h p tho i màu đ yêu c u ngư i dùng nh n phím s
dùng thay cho phím không làm vi c. N u không mu n thay th n a thì hãy nh n
r i đ i cho h p tho i màu đ bi n m t (ho c nh n phím ). Khi
6.12 K t n i t i máy xa 159


hoàn thành vi c th nghi m và c u hình t t c các phím, ngư i dùng có th ch n
lưu nh ng c u hình này vào ph n [terminal:TERM] c a t p tin ~/.mc/ini
c a mình (trong đó TERM là tên g i c a terminal đang dùng) ho c không lưu
nh ng thay đ i này. T t nhiên n u t t c các phím làm vi c bình thư ng thì
không c n ph i lưu gì h t.
Câu l nh FS o g i h p tho i cho phép ngư i dùng đ t các giá tr c a m t s
tham s có liên quan đ n s d ng h th ng t p tin o (hình 6.22).




Hình 6.22: Thi t l p h th ng t p tin o

Câu l nh Ghi nh c u hình lưu t t c nh ng giá tr đã ch n vào t p tin ini
c a chương trình.


6.12 K t n i t i máy xa
6.12.1 K t n i FTP
Chương trình Midnight Commander s d ng H th ng t p tin FTP (ftpfs) đ
cho phép ngư i dùng đi u khi n các t p tin xa qua giao th c FTP. Đ s d ng
đư c tính năng này b n có th dùng câu l nh K t n i FTP c a trình đơn B ng
trái ho c B ng ph i tương ng ho c dùng câu l nh cd đ chuy n t i thư m c
có đư ng d n d ng như sau:

/#ftp:[!][user[:pass]@]machine[:port][remote-dir]

Các thành ph n user, port và remote-dir là không b t bu c. N u ngư i
dùng đưa ra user, thì Midnight Commander s đăng nh p vào máy xa v i tên
ngư i dùng đó, n u không s dùng đăng nh p anonymous (đăng nh p chung)
ho c dùng tên đăng nh p có trong t p tin ~/.netrc. Thành ph n pass là m t
kh u dùng đ k t n i, ch c n thi t n u có thành ph n user. Không nên đưa
th ng m t kh u vào đư ng d n t i thư m c c a ftpfs, vì b t kỳ ai cũng có th
th y m t kh u này trên màn hình, và m t kh u s đư c lưu d ng văn b n thông
160 S d ng Midnight Commander


thư ng trong l ch s các thư m c đã thăm. Chương trình Midnight Commander
s t đ ng h i m t kh u trong trư ng h p không có thành ph n pass và có tên
ngư i dùng (có user).
Đ s d ng FTP proxy, hãy thêm m t d u ch m than (!) vào phía trư c tên
máy.
Ví d :

/#ftp:192.168.10.128/linux/SuSE
/#ftp:people.vnoss.org/public/wiki
/#ftp:!people.vnoss.org/public/wiki
/#ftp:teppi@people.vnoss.org:67/public/wiki
/#ftp:teppi:abcdef@people.vnoss.org/public/wiki

H p tho i c a câu l nh K t n i FTP có d ng như trong hình 6.11. Trong ô
tên máy ngư i dùng c n nh p t t c các thành ph n c a đư ng d n t i ftpfs như
trên tr ph n đ u (/#ftp:).
Ví d :

192.168.10.128/linux/SuSE
people.vnoss.org/public/wiki
!people.vnoss.org/public/wiki
teppi@people.vnoss.org:67/public/wiki
teppi:abcdef@people.vnoss.org/public/wiki

đây b n đ c cũng có th s d ng l ch s (phím +).
Đ thay đ i các tùy ch n c a ftpfs chúng ta c n dùng câu l nh FS oc a
trình đơn C u hình (xem hình 6.22).

6.12.2 K t n i Shell
Ngoài FTP trong các phiên b n m i c a mình chương trình Midnight Comman-
der còn h tr giao th c SSH và truy n t i t p tin qua H th ng t p tin shell
(file transfer over shell filesystem). H th ng t p tin fish là h th ng t p tin d a
trên m ng máy tính, nó cho phép ngư i dùng đi u khi n t p tin trên các máy
xa gi ng như khi chúng n m trên máy c a mình. Đ s d ng tính năng này, trên
máy xa ph i có ch y máy ch fish ho c có m t h v shell tương thích v i bash.
Đ k t n i t i máy xa, b n có th dùng câu l nh K t n i Shell c a trình
đơn B ng trái ho c B ng ph i tương ng ho c dùng câu l nh cd đ chuy n t i
thư m c đ c bi t có tên d ng như sau:

/#sh:[user@]machine[:options]/[remote-dir]

Các thành ph n user, options và remote-dir là không b t bu c. N u ngư i
dùng đưa ra user, thì Midnight Commander s đăng nh p vào máy xa v i tên
ngư i dùng đó, n u không s dùng tên ngư i dùng c a b n. Các tùy ch n options
có th là ‘C’ – nén thông tin truy n t i và ‘rsh’ dùng rsh đ thay cho ssh. N u có
thành ph n remote-dir thì sau khi k t n i thư m c hi n th i trên máy xa s
là thư m c này.
Ví d :
6.12 K t n i t i máy xa 161


/#sh:192.168.10.128:r/linux/SuSE
/#sh:people.vnoss.org:C/public/wiki
/#sh:teppi@people.vnoss.org/projects

Tác gi hy v ng r ng nh ng thông tin trong chương này có th giúp b n b t
đ u làm vi c v i chương trình Midnight Commander. Tuy nhiên kh năng c a
chương trình này còn r ng hơn so v i nh ng gì đ c p đ n đây. Các b n có th
đ c thêm tr giúp c a chương trình này m i khi c n b ng phím .
Ghi chú:

• B n d ch ti ng Vi t cho giao di n c a Midnight Commander đi kèm v i chương
trình có th không ph i là b n d ch m i nh t. B n luôn luôn có th l y b n
d ch m i nh t v t kho CVS c a Midnight Commander (t p tin vi.po trong thư
m c po) ho c t http://cvs.savannah.gnu.org/viewcvs/*checkout*/mc/
mc/po/vi.po.
Cách c p nh t m t b n d ch giao di n cho h th ng s đ c p đ n trong chương nói
v ti ng Vi t trên Linux ho c n u mu n b n có th đ c trong b n tin s 3 VnOSS
có trên http://vnoss.org (t p tin bantin-so3-092006.pdf).
Chương 7

Giao di n đ ho




M c dù Linux là h đi u hành m nh và phát tri n, nhưng n u ch làm vi c qua giao di n dòng
l nh thì Linux tr thành khó s d ng và không th h p d n đư c nhi u ngư i dùng. Ngư i dùng s
ph i nh m t danh sách dài các câu l nh. Do đó ngay t nh ng ngày đ u phát tri n c a Linux đã có
m t giao di n khác “thân thi n” v i ngư i dùng hơn, đó là giao di n đ ho .
Trong giao di n đ ho ngư i dùng có th ch y các chương trình trong các c a s khác nhau, không
c n nh danh sách các câu l nh vì đã có kh năng ch y chúng b ng h th ng trình đơn (menu), h
th ng các bi u tư ng trên màn hình, và ngoài ra còn có kh năng s d ng chu t đ s p x p không
gian màn hình c a mình. Hi n nay các “môi trư ng làm vi c” l n như KDE, GNOME còn có s n
nh ng ng d ng đi kèm giúp ngư i dùng không m t nhi u th i gian l a ch n. M i th đã có s n.
Chúng ta s xem xét m t trong hai môi trư ng làm vi c này, KDE, trong m t chương sách riêng ngay
sau chương này.
Trong chương này chúng ta s xem xét cách làm vi c c a giao di n đ ho và cách c u hình nó.
cu i chương s có mô t sơ lư c m t vài môi trư ng làm vi c và cách kh i đ ng vào chúng.



7.1 X.Org
Giao di n đ ho trong Linux đư c xây d ng d a trên cơ s c a tiêu chu n X
Window System (c n chú ý là Window ch không ph i Windows, xin đ ng nh m!)
hay còn g i đơn gi n là “X” (ích-xì). Tiêu chu n này đ u tiên đư c vi t ra t i
trư ng đ i h c công ngh Massachuset. B t đ u t phiên b n th hai tiêu chu n
này đư c côngxoocxiom X h tr . Côngxoocxiom X đư c t ch c vào năm 1988 v i
m c đích tiêu chu n hóa giao di n đ h a cho các h đi u hành UNIX. B t đ u
t năm 1997 côngxoocxiom X chuy n thành X Open Group và sau đó là X.Org
Foundation (http://www.x.org). Hi n th i đã có phiên b n 11 b n phát hành
7 c a tiêu chu n X Window System cho h th ng đ ho c a UNIX, ký hi u ng n
g n là X11R7. Tuy nhiên trên các b n phân ph i Linux v n còn s d ng b n
phát hành th 6, t c là X11R6.
Cách đây không lâu các b n phân ph i Linux v n còn s d ng XFree86, m t
ph n m m ng d ng t do tuân theo tiêu chu n X11R6 cho các h th ng UNIX
7.1 X.Org 163


v i b x lý 80386/80486/Pentium. XFree86 đư c m t nhóm các nhà l p trình t o
ra, ngư i kh i đ u nhóm này là David Wexelblat. XFree86 đã đư c s d ng không
ch trên Linux mà còn trên các h th ng System V/386, 386BSD, FreeBSD và các
phiên b n UNIX khác cho Intel x86. Tuy nhiên cách đây m t th i gian (cu i năm
2003 đ u năm 2004), các phiên b n Linux đã đ ng lo t chuy n sang m t “b n
X” khác d a trên tiêu chu n X Window System (do có v n đ v i b n quy nc a
XFree86 phiên b n 4.4.0) đó là XOrg, m t nhánh phát tri n m i c a XFree86.
XOrg do t ch c cùng tên X.Org Foundation cung c p d ng ng d ng mã
ngu n m c a X Window System. Quá trình phát tri n XOrg hi n đang là m t
ph n c a c ng đ ng freedesktop.org. Ph n l n các nhà phát tri n, nhà phân
ph i và nhà cung c p ph n c ng c a d án XFree86 trư c đây đã ng ng tham
gia XFree86 và chuy n s n ph m c a mình gia nh p vào X.org Foundation. Do
đó đôi khi chúng ta không th y có s khác nhau “v cơ b n”. Hi n th i X.Org
Foudation là m t công ty khoa h c v i ban lãnh đ o bao g m nh ng guru1 hàng
đ u trong th gi i mã ngu n m :

• Stuart Anderson (Free Standards Group),

• Egbert Eich (SuSE),

• Jim Gettys (HP),

• Stuart Kreitman (SUN),

• Kevin Martin (Red Hat),

• Jim McQuillan (Linux Terminal Server Project),

• Keith Packard (HP),

• Leon Shiman (Shiman Associates).

N u mu n b n có th tìm hi u thêm v t ch c X.Org trên trang web chính c a
t ch c t i đ a ch http://x.org. Còn bây gi chúng ta s nói đôi dòng v cách
t ch c làm vi c giao di n ph n m m d a trên tiêu chu n X Window System.
H th ng X Window đư c xây d ng trên cơ s mô hình “ch /khách” (thu t ng
ti ng Anh hay đư c dùng hơn trong giao ti p: server/client) thư ng g p trong th
gi i vi tính hi n nay. Tuy nhiên mô hình này trong trư ng h p X Window đư c
dùng d ng quay ngư c l i 180 đ . Nói như v y là vì chương trình máy ch (xin
đư c g i t t là chương trình ch ) X làm vi c trên máy tính c a ngư i dùng (và
hi n th hình nh trên màn hình máy tính) ch không ph i trên m t máy (ch )
nào đó xa. Chương trình ch X làm vi c tr c ti p v i ph n c ng: v i h th ng vi-
đê-ô (c c hình,. . . ), v i các thi t b nh p vào (bàn phím, chu t,. . . ) và âm thanh.
R t có th đ i v i m t s b n đ c s d hi u hơn n u coi chương trình này là m t
driver c a h th ng hình nh, chuyên đi u khi n h th ng này. Chương trình ch
X chi m lĩnh t t c các thi t b ph n c ng và cung c p các kh năng c a thi t b
cho các chương trình khác d ng tài nguyên riêng2 theo m t giao th c (protocol)
1
nh ng ngư i có kinh nghi m làm vi c nhi u năm
2
chính vì th mà chương trình X đư c coi là ch
164 Giao di n đ ho


đ c bi t, g i là giao th c X hay giao th c k t n i m ng X (X Network Protocol).
Máy tính ch dùng đ ch y chương trình ch X đư c g i là máy X terminal.
Nhưng b n thân chương trình ch X không t o ra (v ra) hình nh trên
màn hình mà ch cung c p hình nh cho driver c c hình. N u ch ch y chương
trình ch X thì b n s ch th y m t màn hình màu xám v i m t d u X gi a.
Có th di chuy n d u X này quanh màn hình chu t. Và đó là t t c nh ng gì
b n có th làm. Nh n các nút chu t và bàn phím không đem l i l i ích gì.
Tuy nhiên ngay lúc này chương trình ch X đã s n sàng chuy n nh ng tín
hi u (nh n phím, nh n chu t) đ n các chương trình khách, nhưng t m th i
chưa có chương trình khách nào. Lúc này v n có m t s t h p phím đư c X
x lý. Đó là ++ dùng đ d ng làm vi c chương trình
ch X (n u không b đi kh năng này trong c u hình), ++ và
++ – chuy n nhanh gi a các ch đ hi n th , t c là đ phân gi i
và t n s màn hình và các t h p phím quen thu c ++ –
chuy n v ch đ văn b n vào terminal o s m.
Đ đưa ra màn hình m t hình nh nào đó có ý nghĩa hơn thì ch m t mình
chương trình ch X là không đ . Ngoài nó ra chúng ta c n ch y m t trình qu n
lý c a s và ít nh t m t chương trình khách đ t o hình nh trên màn hình.
Chương trình khách c a “ch X” có th là các ng d ng làm vi c dư i X Window,
ví d chương trình so n th o văn b n OpenOffice.org Writer, chương trình đ
ho GIMP, các chương trình gi l p terminal như xterm, urxvt, konsole,. . .
N m gi a chương trình khách và chương trình ch X còn có hai thành ph n
quan tr ng n a c a giao di n đ ho , đó là thư vi n các hàm đ ho X–lib và
trình qu n lý c a s (xem hình 7.1). Thư vi n X–lib g m các hàm đ h a cho
phép th c hi n các thao tác b c th p v i các hình m u đ ho . Trình qu n lý c a
s g i các hàm trong X–lib đ đi u khi n màn hình và th c hi n b t kỳ thao tác
chuy n đ i hình nh nào trong các c a s .




Hình 7.1: Ki n trúc c a h th ng đ ho X Window System3 .


Khi m t ng d ng X kh i đ ng, c a s s chuy n quy n đi u khi n đ n trình
qu n lý c a s . Trình qu n lý c a s cung c p các phương ti n đ th c hi n t t
c các thao tác v i các c a s , bao g m: v khung ngoài, trình đơn (menu), các
7.1 X.Org 165


bi u tư ng, thanh cu n lên, xu ng và các thành ph n khác c a c a s , đ ng th i
còn cung c p kh năng thay đ i d ng và v trí các c a s trong quá trình làm
vi c tùy theo nhu c u c a ngư i dùng.
Trình qu n lý c a s còn g i các hàm tương ng cho các chương trình khách
trong trư ng h p ngư i dùng thao tác v i các ng d ng b ng bàn phím và chu t.
Chính vì th khi c u hình X.org ngoài c c màn hình còn ph i đưa ra các tham
s c a chu t và bàn phím. Trình qu n lý màn hình c n bi t các tham s c a các
thi t b này đ th c hi n công vi c c a mình.
Các môi trư ng làm vi c đ ho m r ng như KDE, GNOME, Xfce4, CDE,
GNUStep, v.v. . . không thay th nh ng thành ph n k trên c a h th ng X Win-
dow, mà ch m r ng và thêm vào. Ví d , KDE thêm vào thư vi n các hàm đ
ho QT b sung cho X–lib. GNOME s d ng thư vi n GTK+ (bây gi là GTK2+).
Chính thư vi n này là n n t ng c a chương trình đ ho GIMP. Ngoài ra trong
GNOME còn có các thư vi n khác như Imlib cho phép m r ng các kh năng c a
h th ng đ h a.
B i vì ch và khách là các ti n trình riêng, nên chúng có th ch y trên các
máy tính khác nhau và trao đ i v i nhau qua m ng. Ví d các chương trình ng
d ng có th ch y trên m t máy ch m nh (mainframe), còn hình nh s hi n
th trên màn hình máy tính cá nhân. Đ c đi m r t m nh này c a h th ng X
Window là m t trong nh ng khác bi t c a nó so v i giao di n đ ho c a các h
đi u hành dòng Windows.
Ngoài ra trên Linux và UNIX nói chung không có s phân bi t rõ ràng gi a
các chương trình giao di n đ ho và giao di n văn b n (dòng l nh) như trong
Windows. Đ i v i h th ng thì không có s khác nhau gi a chương trình làm
vi c trong ch đ đ ho và trong ch đ bình thư ng. Chương trình cho ch đ
đ ho cũng đư c ch y như các chương trình bình thư ng, t c là t dòng l nh,
t chương trình Midnight Commander, v.v. . . Đi u ki n duy nh t c n ph i có là
chương trình ch X ph i làm vi c. N u c n chương trình s t tìm đ n chương
trình ch X qua TCP/IP nói chung và qua socket n i b khi chương trình ch và
khách làm vi c trên cùng m t máy. Chương trình th c hi n vi c này b ng cách
g i các hàm thư vi n trong X–lib. T t c nh ng gì chương trình c n bi t đ làm
vi c đó là nơi tìm chương trình ch X. Tìm ki m chương trình ch X đư c th c
hi n qua bi n môi trư ng DISPLAY ho c qua tùy ch n trên dòng l nh. Ngoài
ra còn có nh ng chương trình có th làm v i c chương trình ch X và v i c
terminal thông thư ng. Ví d chương trình so n văn b n emacs t đ ng ch n
ch đ làm vi c (đ ho hay văn b n) khi kh i đ ng.
T t nhiên nh ng gì đưa ra trong hình 7.1 ch là tương đ i. Ví d chúng ta
đã nói r ng trao đ i gi a thư vi n X–lib v i chương trình ch X trong trư ng
h p chung đư c th c hi n qua giao th c TCP/IP. Như v y là trong hình v đã b
qua nh ng chương trình ng d ng c a giao th c TCP/IP. Và còn m t tài nguyên
quan tr ng khác c a h th ng đ ho đó là phông ch . Chương trình ch X có
th thao tác v i phông ch m t cách tr c ti p, ho c có m t chương trình khác
chuyên dùng cho vi c này (đư c g i là chương trình ch phông ch ), và cũng c n
ph i thêm vào hình v trên.
X.org có m t chương trình ch X cho ph n l n c c màn hình. Chương trình
này đư c g i là xorg và n m trong thư m c /usr/X11R6/bin. Thông thư ng có
m t liên k t đ n chương trình ch này v i tên X, do đó có th ch y chương trình
166 Giao di n đ ho


ch X b ng câu l nh:

[user]$ X

Trình qu n lý c a s thì có r t nhi u, b n đ c có th ch n b t kỳ chương trình
nào trong s chúng. L a ch n trình qu n lý c a s nào ph thu c nhi u vào c u
hình máy tính c a b n (máy “m nh” hay “y u”, c c màn hình có nhi u b nh
hay không), và yêu c u công vi c. Xin đưa ra đây m t vài ví d trình qu n lý c a
s thư ng dùng:

• IceWM (http://www.icewm.org) – trình qu n lý c a s nh nh và làm
vi c r t nhanh. Trình qu n lý c a s này đang đư c r t nhi u ngư i dùng
có kinh nghi m ưa chu ng.

• Fluxbox (http://www.fluxbox.org) – m t trình qu n lý c a s g n nh
khác, làm vi c tương đ i nhanh và cũng đư c ngư i dùng có kinh nghi m
ưa chu ng. Chính trình qu n lý c a s này đư c dùng trên nhi u b n phân
ph i Linux d ng LiveCD (Linux “s ng và làm vi c” trên CD) như: Damn
Small Linux, Insert.

• WindowMaker (http://www.windowmaker.org) – trình qu n lý c a s
g n nh nhi u màu s c và m m d o trong c u hình k th a c a AfterStep.
M t đ c đi m thú v c a WindowMaker đó là các trình nh applet th c
hi n nhi u ch c năng khác nhau: theo dõi h th ng, theo dõi m ng, đ ng
h , v.v. . . N u mu n và có s h tr thì b n có th s d ng nh ng trình nh
applet này trong các trình qu n lý c a s khác như Fluxbox.

• enlightment (http://www.enlightment.org) – trình qu n lý c a s đ p
nh t hi n nay, có r t nhi u tùy ch n c u hình đ b n có th thay đ i.

• fvwm2 (Free Virtual Window Manager 2)– phiên b n nâng c p c a trình
qu n lý c a s fvwm cho phép s d ng các s c thái (theme) khác nhau và
trình đơn đ ng. Trang ch c a FVWM và FVWM2 n m t i đ a ch http:
//fvwm.org/.

Các trình qu n lý c a s khác nhau có th cho ra d ng c a s khác nhau b ng
cách s d ng các khung và trình đơn c a s khác nhau. Nhưng t t c chúng đ u
s d ng cùng m t ti n ích đ ho cơ s c a X Window, đó là chương trình ch X.
Như v y là b n đ c đã bi t đư c giao di n đ ho trên Linux đư c t o ra t
nh ng thành ph n gì. Như b n th y giao di n đ ho trên Linux đư c t o ra theo
nguyên t c môđun, và có th t xây d ng nhi u “ki u” giao di n đ ho t các
thành ph n khác nhau. Nhưng đ i v i ngư i dùng m i (và r t m i) thì đây không
ph i là cách d nh t. R t may là không nh t thi t ph i ch n cách này, vì đã có
trên t t c các b n phân ph i l n các môi trư ng làm vi c đ ho . N i ti ng nh t
trong s các môi trư ng đ ho này c n k đ n KDE (http://www.kde.org)
mà chúng ta s nghiên c u sâu hơn trong chương sách ti p theo và GNOME
(http://www.gnome.org). Ngoài ra cũng c n nói đ n môi trư ng làm vi c đ
ho g n nh hơn và cũng chi m đư c s yêu m n c a r t nhi u ngư i dùng, đó là
Xfce4 (http://www.xfce.org). T t c nh ng môi trư ng làm vi c đ ho này
7.2 M t chút v h th ng hình nh c a máy tính 167


đ u đã có h tr ti ng Vi t t t (ho c còn chưa t t), do đó càng d dàng hơn (ho c
khó khăn hơn cho ai đó?) cho b n đ c trong khi s d ng.
N n t ng c a môi trư ng làm vi c đ ho KDE (K Desktop Enviroment) là thư
vi n các hàm đ ho m r ng Qt c a công ty Troll Tech (http://www.qt.com).
B ng thư vi n này các nhà phát tri n KDE đã vi t ra trình qu n lý c a s riêng
– kwm, trình qu n lý t p tin kfm, trung tâm đi u khi n KDE và r t nhi u thành
ph n khác bao g m c gói chương trình ng d ng cho văn phòng KOffice. T t
nhiên đi u này không có nghĩa là t t c các thành ph n c a môi trư ng KDE là
do m t công ty nào đó vi t ra và phát tri n, mà nhi u nhà l p trình cùng s d ng
m t cách m t ý tư ng phát tri n chung đ t o ra các ng d ng khác nhau. K t
qu thu đư c đó là m t b đ y đ các chương trình ng d ng cho phép gi i quy t
t t c các nhu c u đi u khi n máy tính và làm vi c c a ngư i dùng. Trong các
phiên b n m i c a KDE còn có thêm trình qu n lý t p tin và cũng là trình duy t
web Konqueror (http://konqueror.kde.org) có nhi u kh năng m nh trong
vi c truy c p đ n các t p tin. Ngoài ra Konqueror còn cho phép xem tr c ti p các
t p tin có đ nh d ng (“ph n m r ng”) đã bi t, kh năng duy t web cũng không
thua kém các trình duy t khác như Internet Explorer.4
M t môi trư ng làm vi c đ ho có cùng đ ng c p v i KDE đó là GNOME
(GNU Network Object Model Environment). GNOME đư c phát tri n trong
khuôn kh c a d án GNU, có nghĩa là chương trình ng d ng t do. GNOME
đư c xây d ng d a trên thư vi n các hàm đ ho GTK+ (bây gi là GTK2+, phiên
b n 2 c a thư vi n GTK).
Còn có nhi u môi trư ng làm vi c đ ho khác nhưng chưa đ t đư c m c
đ phát tri n m nh như KDE và GNOME. Trong s chúng c n nói đ n Xfce4
(http://www.xfce.org). Phiên b n 4.4 c a Xfce4 h a h n nhi u thay đ i l n,
trong s đó c n k đ n trình qu n lý t p tin Thunar và các m r ng (plugin) c a
nó.
Các b n phân ph i Linux m i hi n nay đã cho phép cài đ t và c u hình giao
di n đ ho m t cách d dàng hơn r t nhi u so v i trư c đây. Chương trình cài
đ t c a Debian Linux, openSUSE Linux, Fedora Core, v.v. . . đã có kh năng t
đ ng xác đ nh d ng c c hình, d ng màn hình và t đ ng ch n các tham s (đ
phân gi i, t n s c p nh t) thích h p. Tuy nhiên tôi xin đưa ra đây m t vài l i
khuyên khi c u hình X Window vì r t có th b n đ c s g p v n đ nào đó, ví d
chương trình cài đ t xác đ nh d ng màn hình không đúng và do đó dùng nh ng
tham s không thích h p. Đ u tiên chúng ta c n bi t m t chút v công vi c c a
h th ng hình nh c a máy tính.


7.2 M t chút v h th ng hình nh c a máy tính
Như b n đ c đã hi u khi th y đ u đ c a ph n này, đây không ph i là hư ng
d n chi ti t dành cho các nhà chuyên môn, mà ch là nh ng ki n th c cơ b n v
h th ng hình nh c a máy tính đ giúp ngư i dùng m i và r t m i hi u đư c
cách làm vi c c a h th ng hình nh, th nào là t n s , đ phân gi i màn hình,
4
Cách đây m t th i gian KDE đã đư c công nh n là ph n m m t do. V n đ này x y ra trư c
đây là do thư vi n Qt thu c v công ty thương m i. Nhưng công ty Troll Tech đã đưa ra thông
báo cho phép dùng thư vi n này vĩnh vi n mi n phí đ phát tri n các ng d ng mã ngu n m .
168 Giao di n đ ho


v.v. . . đ có th ch n các tham s thích h p trong khi c u hình.
H th ng hình nh c a máy tính bao g m c c hình (video card) và màn hình
(monitor), chúng ta s ch xem xét trư ng h p màn hình ng đi n t (CRT) mà
không xem xét màn hình tinh th l ng (LCD).
Như b n đ c bi t, hình nh trên màn hình đư c t o ra t các đi m riêng
bi t. Đi m đư c t o ra nh các chu i electron và các đi m n m d ng dòng n m
ngang. Màn hình th c hi n hai công vi c riêng bi t: “tr i” các chu i (tia) electron
và chi u sáng các đi m riêng bi t đ t o ra hình nh. Đi u khi n màn hình có
nghĩa là đưa ra s đi m trên m t dòng (đ phân gi i theo chi u ngang), s dòng
trên màn hình (đ phân gi i theo chi u d c) và cư ng đ (intensity) c a m i màu
(trong s ba màu chính) trên t ng đi m.
Ch c năng đi u khi n màn hình là do c c hình th c hi n. C c hình chuy n t i
màn hình 3 tín hi u: tín hi u hình (RGB), đ ng b dòng (HS) và đ ng b nh (c t,
VS). Khi có tín hi u đ ng b dòng (theo chi u ngang) tia electron s đư c chuy n
t cu i m i dòng t i đ u dòng ti p theo, còn khi có tín hi u đ ng b nh (theo
chi u d c) thì s chuy n tia electron t góc dư i bên ph i v góc trên bên trái.
C n ph i bi t t n s t o ra hai tín hi u này, tính theo s tín hi u trong m t giây,
đ có th c u hình đúng chương trình ch X. Giá tr t n s đ ng b ngang và d c
này nh t đ nh có trong tài li u đi kèm v i màn hình. T n s đ ng b d c thư ng
kí hi u là VSF và có đơn v là Hz (Héc), giá tr c a VSF n m trong kho ng 50 –
180 Hz. T n s đ ng b ngang, HSF, có đơn v là KHz (1kilôhéc = 1000 héc) và
nh n giá tr trong kho ng t 31 đ n 135 KHz. Nh ng màn hình m i thư ng là
màn hình có nhi u t n s hay còn nói là có gi i t n s r ng, có nghĩa là b n có
th ch n các t n s d c và ngang t m t vùng các giá tr cho phép nào đó. M t s
màn hình nh t là màn hình r ti n có th ch có m t vài giá tr t n s cho phép.
T t nhiên t t nh t là ch n giá tr l n nh t trong s có th dùng, nhưng hãy c n
th n vì n u ch n giá tr cao quá m c thì có th làm h ng màn hình.
Còn có m t t n s quan tr ng khác n a, đó là s đi m có th hi n th trên
màn hình trong m t giây. Tia electron di chuy n qua màn hình theo m t v n t c
có h n do b vi x lý c a c c hình xác đ nh. T n s này đư c g i là DCF (“Dot
Clock Frequency” – t n s làm vi c c a c c hình).
M t tham s cũng quan tr ng n a đó là t n s c p nh t màn hình SRR
(Screen Refresh Rate). Giá tr này càng cao bao nhiêu thì m t c a ngư i dùng
càng ít m i m t b y nhiêu trong khi làm vi c v i máy tính, vì khi đó s gi m
m c đ nh p nháy c a màn hình. Không nên ch n t n s c p nh t màn hình nh
hơn 60Hz, khi đó đèn huỳnh quang s nh p nháy r t m nh. Tiêu chu n VESA
khuyên ch n giá tr này l n hơn ho c b ng 72Hz. Nhưng cũng không th đưa ra
m t t n s c p nh t màn hình quá l n, vì t n s này không th l n hơn giá tr
c a phân s :
DCF
(s đi m trên dòng) * (s c t trên màn hình)

t c là có s ph thu c v i đ phân gi i (resolution) c a màn hình. Trên th c t
t n s c p nh t còn nh hơn n a vì còn m t th i gian di chuy n các tia electron
t dòng này sang dòng khác, t cu i màn hình lên đ u màn hình. Ngoài ra đ
t o ra hình nh s c nét trên màn hình, tia electron còn di chuy n quá sang trái,
sang ph i, lên cao, xu ng th p hơn m t chút so v i hình nh (t o ra 4 dòng và
c t t i xung quanh hình nh). C n nói thêm t n s c p nh t màn hình b ng t n
7.3 C u hình chương trình ch X 169


s đ ng b d c (SRR = VSF). Như v y, t n s đ ng b d c VSF và t n s làm vi c
c a c c hình DCF xác đ nh giá tr gi i h n (l n nh t) c a đ phân gi i.
Còn có m t gi i h n n a ph thu c vào dung lư ng b nh c a c c hình – s
lư ng màu c a hình nh. Trên các màn hình màu, m i đi m đư c chi u sáng
đ ng th i b i 3 tia electron. Màu c a đi m đó đư c xác đ nh b i s pha tr n c a
ba màu cơ b n: đ (Red), xanh lá cây (Green) và xanh da tr i (Blue) – RGB.
Cư ng đ c a m i màu này l i đư c xác đ nh b i m c đ c a tín hi u trong tia
tương ng. Hình nh s đưa ra màn hình đư c t o ra trong b nh c a c c hình.
B nh này n m trên c c hình nhưng thu c v không gian b nh chung c a c
máy tính. Hình nh đư c lưu trong b nh d ng s và s chuy n đ i hình nh
v d ng tín hi u “tương t ” (analog) RGB là m t trong nh ng công vi c chính
c a c c hình. Công vi c này là do m t b ph n trên c c hình đ m nhi m, đó là
“b chuy n đ i s – tương t ”. S lư ng màu có th dùng cho m i đi m đư c gi i
h n b i dung lư ng b nh c c hình cũng như s m c đ tín hi u mà c c hình
có th t o ra cho m i tia electron. Nhưng thông thư ng c c hình có th t o ra
m t s lư ng m c đ tín hi u đ đ hi n th hình nh, do đó tham s quy t đ nh
đây là dung lư ng b nh .
Công th c xác đ nh gi i h n đ phân gi i và s lư ng màu trên hình nh r t
đơn gi n:
(Dung lư ng b nh , byte) ≥ (S đi m trên dòng) * (s c t trên màn hình)
* (s byte trên m t đi m)
Ví d , n u b n đ c mu n ch n đ phân gi i màn hình 1280 x 1024 và có 32 tri u
màu cho m i đi m, t c là 8 byte cho m i đi m, thì c n có m t c c hình v i dung
lư ng b nh ít nh t là 1280 ∗ 1024 ∗ 4 = 10485760 byte (10Mb). T t c nh ng c c
hình m i đáp ng đư c (th m chí còn vư t quá) yêu c u này. N u có m t c c hình
cũ v i dung lư ng b nh ít hơn thì c n ph i ch n đ phân gi i nh hơn ho c
ch n s lư ng màu ít hơn. Tôi nghĩ r ng b n có th t l a ch n m t đ phân gi i
và s lư ng màu thích h p cho máy tính c a mình. Còn bây gi chúng ta s xem
xét ph n th c hành c a nh ng lý thuy t đã đưa ra, t c là c u hình giao di n c a
Linux.


7.3 C u hình chương trình ch X
Chúng ta s xem xét trư ng h p sau khi cài đ t Linux b n không th chuy n vào
ch đ đ ho (r t hi m khi x y ra v i các b n phân ph i Linux m i), ho c không
hài lòng v i nh ng gì mình th y trên màn hình giao di n đ ho . N u b n rơi
vào tình hu ng th nh t trong quá trình kh i đ ng máy, thì hãy ch n kh i đ ng
vào ch đ m t ngư i dùng đ có kh năng thay đ i c u hình X. Chúng ta s bi t
đư c cách chuy n ch đ kh i đ ng trong m t vài chương t i.
N u b n không hài lòng v i hình nh c a giao di n đ ho , ho c không th
vào ch đ đ ho , nhưng v n có th truy c p t i máy tính b ng ch đ văn
b n (giao di n dòng l nh), thì v n có th s d ng m t câu l nh và chương trình
c a Linux đ c u hình l i chương trình ch X. Chương này coi như b n đã cài
đ t X.org, và t t c nh ng t p tin (chương trình) nói đ n phía sau đã có trên
đĩa. N u không thì đ u tiên b n ph i cài đ t gói chương trình X.org. Cách cài
đ t chương trình s có trong chương khác dành riêng cho ph n cài đ t chương
170 Giao di n đ ho


trình. Hy v ng r ng nh ng thông tin dư i đây giúp b n c u hình thành công
giao di n đ ho , ho c đơn gi n là giúp b n hi u hơn v giao di n này và cách
c u hình nó n u b n đã có m t h th ng X Window làm vi c t t. Nhưng xin
b n hãy luôn nh là cu n sách b n đang đ c s d ng b n quy n Creative Com-
mons Public License 2.5 (http://creativecommons.org/licenses/by/2.
5/). Tác gi không ch u trách nhi m v nh ng gì s x y ra. Hãy c n th n trong
khi làm vi c!


7.3.1 Thu th p thông tin c n thi t
Đ có th c u hình b n c n m t vài d li u sau:

• Tên c a hãng s n xu t c c hình và màn hình. Thư ng l y t tài li u đi kèm
v i chúng, n u không có thì cũng có th xem tr c ti p trên thi t b .

• D ng c a b x lý trên c c hình (chíp). C n xác đ nh d ng chíp đ ch n
môđun đúng cho c c hình. Ví d , chíp c a hãng Nvidia thư ng c n n p
môđun nv.

• Dung lư ng b nh c a c c hình.

• Kho ng t n s đ ng b ngang và d c cho phép dùng c a màn hình. L y t
tài li u đi kèm v i màn hình, n u không có tài li u thì b n c n tìm nh ng
thông tin này trên Internet, d dàng nh t là trên trang web c a nhà s n
xu t. Hai tham s này là quan tr ng.

• D ng chu t và bàn phím. Làm vi c trong giao di n đ ho mà không có
chu t thì không thu n ti n chút nào, và n u không bàn phím thì càng không
th làm vi c v i máy tính nói chung. Vì th c n ph i c u hình chương trình
ch X đ s d ng nh ng thi t b này.

Có nhi u cách đ l y nh ng thông tin này. Cách d dàng nh t cho ngư i dùng
m i là khi trên máy đã có m t h đi u hành Windows. Nh ng thông tin b n c n
có trong Trình qu n lý các thi t b . Cách ch y chương trình này không thu c vào
ph m vi c a cu n sách này vì chúng ta đang nói v h đi u hành Linux. B n có
th tìm th y thông tin trong b t kỳ cu n sách nào nói v h đi u hành Windows.
N u trên máy c a b n chưa có b t kỳ h đi u hành nào thì hãy s d ng m t h
đi u hành Linux LiveCD (ch y th ng t CD) có kh năng nh n d ng ph n c ng
t t như Knoppix. Sau khi kh i đ ng Knoppix thành công hãy sao chép t p tin c u
hình chương trình ch X c a Knoppix (thư ng n m t i /etc/X11/xorg.conf
lên đĩa m m ho c flash đ sau này có th đ c l i. V cách đ c thông tin t t p tin
c u hình X.org (c u trúc c a t p tin này) chúng ta s xem xét ngay dư i đây.
Ngoài ra có nh ng chương trình chuyên dùng cho vi c l y các d li u c n thi t
k trên, ví d bash script mkxf86config do các nhà phát tri n Gentoo vi t ra.
B n có th tìm th y script này trên m ng Internet. Tuy nhiên tôi hy v ng là các
b n s không ph i s d ng đ n nh ng ti n ích này cũng như nh ng phương án
k trên (s d ng h đi u hành khác, s d ng Knoppix): t t c nh ng thông tin
b n c n đã có trong tài li u đi kèm v i máy tính.
7.3 C u hình chương trình ch X 171


7.3.2 C u trúc c a t p tin c u hình X
T p tin c u hình chương trình ch X thư ng n m t i /etc/X11/xorg.conf.
Khi kh i đ ng và n u không ch rõ t p tin c u hình trên dòng l nh thì chương
trình ch X đ u tiên s tìm t p tin c u hình t i thư m c c a ngư i dùng, t c
là t i ∼/xorg.conf. N u không th y t p tin này thì chương trình ch X s dùng
c u hình chung c a toàn b h th ng n m trong thư m c /etc như đã nói trên
(n u có).
T p tin c u hình X ch là m t t p tin văn b n (text file) bình thư ng, do đó
có th s d ng b t kỳ trình so n th o văn b n nào đ thay đ i nó. Và đây cũng
chính là cách các nhà qu n tr h th ng có kinh nghi m s d ng đ c u hình giao
di n đ ho . Tuy nhiên, có nh ng chương trình, ti n ích chuyên dùng cho vi c
này, và chúng ta s s d ng chúng trong th i gian đ u m i làm quen v i Linux.
Cũng không c n ph i t o t p tin xorg.conf t đ u. N u trong khi cài đ t
b n có ch n cài đ t giao di n đ ho X thì trên máy đã có t p tin ch a c u hình
X đúng (và có th không). N u vì nguyên nhân nào đó b n cài đ t X.org riêng
sau khi cài đ t Linux, thì hãy ch y m t trong nh ng chương trình cho phép b n
t o ra t p tin này. Đ t o ra t p tin c u hình X m t cách t đ ng hãy s d ng
chương trình Xorg v i tùy ch n -configure. Ch c n ch y câu l nh sau (hãy
chú ý là c n có quy n ngư i dùng root:

[root]# Xorg -configure

Câu l nh này s làm vi c m t cách im l ng, sau khi hoàn thành nó s t o ra t p
tin xorg.conf và đ t t p tin này vào thư m c /etc/X11. Xin đ ng quên câu
l nh Xorg khác v i câu l nh xorg! Như đã nói t trư c trên Linux ch thư ng và
ch hoa có s khác nhau rõ ràng.
Tuy nhiên r t có th b n s mu n t t o cho mình m t t p tin c u hình riêng,
ho c đơn gi n là mu n ki m soát quá trình này. Trong XFree86 phiên b n th
4, ti n ích chính dùng đ t t o m t t p tin c u hình (XF86Config-4) là chương
trình xf86config (đôi khi xf86cfg). Trong X.org chương trình này đã đư c
thay th b ng xorgconfig. Trên th c t theo tôi th y thì hai chương trình này
không có gì khác nhau, ch có đi u xorgconfig sau khi hoàn thành công vi c s
t o ra xorg.conf ch không ph i XF86Config-4 như trư ng h p xf86config.
Trên dòng l nh hãy ch y:

[root]# xorgconfig

r i tr l i nh ng câu h i mà chương trình này đ t ra. N u không mu n ti p t c
thì hãy nh n + đ thoát ra.
Còn m t ti n ích khác có th dùng đ c u hình máy ch X, đó là xorgcfg.
Nhưng chương trình là ng d ng đ ho , t c là ch ch y trên n n m t máy ch
X đã ch y nào đó (hình 7.2), do đó không có ích trong trư ng h p b n chưa
có m t c u hình X nào. Hãy đ c các trang hư ng d n s d ng man tương ng
xorgconfig(1) và xorgcfg(1) đ bi t thêm chi ti t. Ngoài ra, m i b n phân
ph i hi n đ i có m t công c c u hình riêng c a mình, đôi khi r t m nh. Ví
d b n phân ph i OpenSUSE có sax2. Hãy s d ng nh ng chương trình này.
Chúng s giúp b n ti t ki m đư c nhi u th i gian.
172 Giao di n đ ho




Hình 7.2: C u hình X.org qua xorgcfg


B ng m t trong nh ng công c trên b n đã t o ra đư c t p tin c u hình
xorg.conf. Chúng ta s xem t p tin này trông như th nào (có nghĩa là dùng
câu l nh xem t p tin more ho c less ho c dùng m t chương trình so n th o văn
b n như vim đ m nó). Dư i đây là ví d m t t p tin xorg.conf có trên máy
c a tôi sau khi cài đ t openSUSE Linux 10.1:

# Version: 7.1
# Contact: Marcus Schaefer , 2005
# Contact: SaX-User list
#
# Automatically generated by [ISaX] (7.1)

Section "Files"
InputDevices "/dev/gpmdata"
InputDevices "/dev/input/mice"
FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/local"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
FontPath "/usr/X11R6/lib/X11/fonts/URW"
FontPath "/usr/X11R6/lib/X11/fonts/truetype"
FontPath "/usr/X11R6/lib/X11/fonts/uni:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/CID"
FontPath "/opt/kde3/share/fonts"
FontPath "/usr/local/share/fonts"
EndSection
7.3 C u hình chương trình ch X 173


Section "ServerFlags"
Option "AllowMouseOpenFail" "on"
EndSection

Section "Module"
Load "dbe"
Load "type1"
Load "freetype"
Load "extmod"
Load "glx"
Load "v4l"
EndSection

Section "InputDevice"
Driver "kbd"
Identifier "Keyboard[0]"
Option "Protocol" "Standard"
Option "XkbLayout" "us"
Option "XkbModel" "pc104"
Option "XkbRules" "xfree86"
EndSection

Section "InputDevice"
Driver "mouse"
Identifier "Mouse[1]"
Option "Buttons" "10"
Option "Device" "/dev/input/mice"
Option "Name" "Logitech USB Receiver"
Option "Protocol" "explorerps/2"
Option "Vendor" "Sysp"
Option "ZAxisMapping" "4 5"
EndSection

Section "Monitor"
DisplaySize 345 259
HorizSync 30-96
Identifier "Monitor[0]"
ModelName "SYNCMASTER 757NF(T)/707NF/700NF"
Option "DPMS"
VendorName "SAMSUNG"
VertRefresh 50-160
UseModes "Modes[0]"
EndSection

Section "Modes"
Identifier "Modes[0]"
Modeline "1280x1024" 167.32 1280 1376 1512 1744 1024 1025 1028 1078
Modeline "1280x1024" 165.29 1280 1376 1512 1744 1024 1025 1028 1077
Modeline "1280x1024" 163.41 1280 1376 1512 1744 1024 1025 1028 1077
Modeline "1024x768" 135.41 1024 1104 1216 1408 768 769 772 822
Modeline "1024x768" 132.57 1024 1096 1208 1392 768 769 772 821
Modeline "1024x768" 131.43 1024 1096 1208 1392 768 769 772 821
Modeline "800x600" 97.59 800 856 944 1088 600 601 604 650
Modeline "800x600" 96.89 800 856 944 1088 600 601 604 650
Modeline "800x600" 96.18 800 856 944 1088 600 601 604 650
EndSection
174 Giao di n đ ho


Section "Screen"
DefaultDepth 24
SubSection "Display"
Depth 15
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
SubSection "Display"
Depth 8
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
Device "Device[0]"
Identifier "Screen[0]"
Monitor "Monitor[0]"
EndSection

Section "Device"
BoardName "GeForce4 MX 440 with AGP8X"
BusID "1:0:0"
Driver "nvidia"
Identifier "Device[0]"
VendorName "NVidia"
EndSection

Section "ServerLayout"
Identifier "Layout[all]"
InputDevice "Keyboard[0]" "CoreKeyboard"
InputDevice "Mouse[1]" "CorePointer"
Option "Clone" "off"
Option "Xinerama" "off"
Screen "Screen[0]"
EndSection

Section "DRI"
Group "video"
Mode 0660
EndSection

Section "Extensions"
EndSection


C n ph i nói r ng nh ng thông tin mà chương trình cài đ t c a openSUSE dò
tìm ra là chính xác. Có th b n đ c đã nh n th y là trên Linux nh ng t p tin
c u hình có c u trúc tương t như nhau. Nh ng dòng đ u tiên thư ng là nh ng
dòng chú thích không có nh hư ng gì đ n chương trình. Nh ng dòng này có ký
t đ u tiên là # và m t kho ng tr ng sau ký t này.
T p tin xorg.conf bao g m m t vài ph n nh hơn, m i ph n có c u trúc như
sau:
7.3 C u hình chương trình ch X 175


Section "tên_c a_ph n_này"
SectionEntry1
SectionEntry2
SectionEntry3
EndSection

Các ph n có th n m trong t p tin c u hình theo th t b t kỳ. Trong t p tin c u
hình có th có các ph n sau (không nh t thi t ph i có t t c chúng):

• Files – đư ng d n đ n các t p tin.

• ServerFlags – tùy ch n c a chương trình ch .

• Module – các môđun n p t đ ng.

• InputDevice – mô t các thi t b nh p vào.

• Monitor – mô t màn hình.

• Modes – mô t các ch đ hình nh.

• Screen – c u hình màn hình.

• Device – mô t c c hình (video card).

• ServerLayout – c u hình chung.

• DRI – c u hình DRI.

• Vendor – c u hình cho các thi t b c a các nhà s n xu t c th nào đó.

• Extensions – ph n c u hình m r ng.

Cũng có th g p hai ph n ho c nhi u hơn có cùng m t d ng (Ví d Screen), tuy
nhiên khi đó chúng ph i có tên riêng không trùng nhau.
Ph n ServerLayout có ưu tiên cao nh t, t c là chương trình ch X b t
đ u đ c t p tin c u hình xorg.conf t đây. Ph n này xác đ nh nh ng thi t
b vào/ra (input/output) nào s đư c s d ng trong giao di n đ ho X. Thi t b
nh p vào thư ng là bàn phím và chu t, chúng đư c xác đ nh trong các ph n
InputDevice, m i ph n cho m t thi t b . Thi t b ra g m các thành ph n riêng
bi t là c c hình và màn hình thư ng đư c nhóm l i v i nhau trong ph n Screen.
Trong ph n ServerLayout ph i có các dòng ch đ n các ph n c a thi t b v a
nói đ n. Như v y, ph n ServerLayout ph i ch a ít nh t nh ng dòng sau:

Section "ServerLayout"
Identifier "Layout[all]"
InputDevice "Keyboard[0]" "CoreKeyboard"
InputDevice "Mouse[1]" "CorePointer"
Screen "Screen[0]"
EndSection
176 Giao di n đ ho


Ph n Screen xác đ nh màn hình và c c hình s d ng, đ ng th i đưa ra các
ch đ làm vi c c a màn hình (đ phân gi i và s lư ng màu). Ph n này có d ng
như sau:

Section "Screen"
DefaultDepth 24
SubSection "Display"
Depth 15
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
SubSection "Display"
Depth 8
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
Device "Device[0]"
Identifier "Screen[0]"
Monitor "Monitor[0]"
EndSection

Như b n th y, ph n này cho bi t c c màn hình đư c dùng là thi t b có tên
Device[0], t c là GeForce4 MX 440 with AGP8X đư c xác đ nh trong ph n
Device, và màn hình đư c s d ng có tên Screen[0] (SAMSUNG SYNCMAS-
TER 757NF(T)/707NF/700NF), xác đ nh trong ph n Monitor.
Ph n Screen còn có th ch a m t vài ph n con (Subsection) Display tương
ng v i m t giá tr “đ sâu màu”5 màn hình.6 Trong m i ph n con, ngư i dùng
c n đ t nh ng ch đ hi n th mu n dùng v i đ sâu màu tương ng. Các ch đ
đư c li t kê theo tên l y t ph n Modes, tên này n m ngay sau t Modeline, ví
d , "1280x1024", "1024x768", "800x600". Như v y, đ i v i ngư i dùng thì ý
nghĩa c a ch đ hi n th trùng v i đ phân gi i c a màn hình. Máy ch X s
s d ng ch đ đ u tiên n m trong danh sách theo m c đ nh. Đ chuy n sang
s d ng nh ng ch đ khác hãy th nh n các t h p phím ++ và
++, trong đó phím và phím n m trên bàn phím s .
Ph n Monitor xác đ nh tham s c a màn hình cũng có hai tùy ch n (hai
dòng) quan tr ng, đó là:
5
color depth
6
Đ sâu màu màn hình thư ng tính theo bit và thư ng nh n các giá tr 8, 15, 16, 24. Giá tr
này càng cao thì s lư ng màu có th hi n th càng l n và hình nh càng đ p. Tuy nhiên c c màn
hình và b n thân màn hình ph i đ t t đ có th h tr nh ng giá tr đ sâu màu l n. Đ sâu
màu m c đ nh n m trên dòng DefaultDepth.
7.3 C u hình chương trình ch X 177


HorizSync 30-96
VertRefresh 50-160

xác đ nh t n s c p nh t ngang (HorizSync) và d c (VertRefresh). đây t n
s c p nh t ngang và d c có th n m tương ng trong kho ng 30–96, 50–160.
N u mu n đ t m t s c th nào đó thay cho nh ng kho ng thì có th s a thành:

HorizSync 80
VertRefresh 100

ho c:

HorizSync 80, 90
VertRefresh 124, 138

n u mu n có thêm hai l a ch n ho c nhi u hơn. T n s c p nh t màn hình theo
chi u ngang HorizSync tính theo KHz còn t n s c p nh t d c VertRefresh
tính theo Hz. C n ph i xem xét tài li u c a màn hình đ đưa ra nh ng giá tr
chính xác. N u không có tài li u này thì hãy tìm ki m trên CD đi kèm ho c trên
trang Web c a nhà s n xu t.
Ph n ti p theo là Device mô t c c màn hình c a b n. Trong ph n này quan
tr ng nh t là dòng ch ra driver. Trên máy c a tôi dòng này có d ng:

Driver "nvidia"

T c là tôi s d ng c c màn hình v i chip c a hãng NVIDIA và đã cài đ t driver
l y v t trang Web c a hãng này. Driver g c c a X.org cho các c c màn hình
nvidia có tên ng n hơn — nv.
Hai ph n InputDevice xác đ nh chu t và bàn phím. Hi n nay ph bi n các bàn
phím có 104 phím và Linux h tr t t các bàn phím này, do đó tùy ch n Option
"XkbModel" "pc104" làm vi c trong đa s trư ng h p. Các môi trư ng làm vi c
như KDE, GNOME, Xfce đ u có các công c đ l a ch n ki u bàn phím, thay đ i
các thu c tính c a bàn phím như t c đ l p l i (repeat rate), đ t l i giá tr c a
các phím, do đó lúc này không c n thi t ph i tìm hi u sâu và c u hình k cho
ph n này. Cũng nói luôn, đ gõ ti ng Vi t thì t t nh t là s d ng m t chương
trình chuyên d ng như xvnkb, x-unikey ho c scim. Chúng ta s quay tr l i
v i ti ng Vi t trong m t chương sau.
Trong ph n InputDevice tương ng v i chu t hãy chú ý đ n 3 dòng (tùy
ch n) sau:

Option "ZAxisMapping" "4 5"
Option "Protocol" "PS/2"
Option "Device" "/dev/input/mice"

N u không có tuỳ ch n ZAxisMapping v i giá tr 4 5, thì chúng ta s không
dùng đư c nút bánh xe c a chu t đ kéo lên kéo xu ng các trang Web. Tùy ch n
Protocol xác đ nh giao th c “liên l c” v i chu t. N u chu t đư c k t n i vào m t
c ng dành riêng cho nó, thì tham s Protocol s có giá tr là PS/2 ho c m t t
dài hơn k t thúc b ng PS/2. Trong trư ng h p c a tôi là explorerps/2. Nh ng
178 Giao di n đ ho


giao th c còn l i s d ng cho chu t k t n i qua c ng ti p n i (c ng COM). N u
chu t m i đư c s n xu t thì còn có th dùng giá tr Auto (t đ ng xác đ nh)
đây. Không c n gi i thích ch c b n cũng đã nh n ra là tùy ch n Device xác đ nh
tên t p tin thi t b c a chu t.
Cu i cùng, ph n Files c a t p tin xorg.conf thư ng n m đ u t p tin
này và xác đ nh đư ng d n đ n các thư m c phông ch . Có m t vài cách đưa ra
nh ng thư m c này. Tuy nhiên trư c khi thêm m t thư m c phông ch m i c n
ki m tra l i xem thư m c này có t n t i không và có ph i là thư m c phông ch
không7 . N u khi ch y máy ch X không tìm th y m t thư m c phông ch nào đó
trong ph n Files, thì nó s đưa ra c nh báo. Đây không ph i là l i nghiêm tr ng
đ ph i d ng làm vi c, nhưng ngư i dùng c n bi t đ gi i quy t nh ng trư ng
h p như không tìm th y phông ch mong mu n.

7.3.3 Th c u hình /etc/X11/xorg.conf
Như đã nói trên, có nhi u cách đ t o ra xorg.conf, b ng câu l nh:
[root]# Xorg -configure
đ t o m t cách t đ ng ho c
[root]# xorgconfig
đ có th ki m soát quá trình này. Sau khi t o t p tin xorg.conf thông thư ng
s n m trong thư m c /etc/X11. Đây là thư m c tiêu chu n (chuyên dùng) cho
nh ng c u hình có liên quan đ n máy ch X.
Bây gi hãy th ch y giao di n đ ho b ng câu l nh X (vi t hoa). Xin chú ý
đây ch là liên k t m m đ n chương trình máy ch Xorg8 , do đó c n ph i có liên
k t m m này ho c có th th ch y th ng:
[user]$ Xorg
N u thành công, b n s th y m t con tr chu t hình ch X gi a màn hình và
có th b qua nh ng dòng dư i đây.
N u th y m t màn hình màu đen, ho c màn hình nh p nháy, t c là c u
hình v a t o có v n đ , hãy nh n t h p phím ++ đ
quay v ch đ văn b n. T h p phím này s giúp b n d ng ch y máy ch X
trong nh ng trư ng h p có v n đ , ví d khi máy ch X không tr l i (không
làm vi c), do đó hãy nh nó. Tuy nhiên đ ng v i vàng s d ng t h p phím
++, vì r t có th c n m t chút th i gian đ chuy n vào
giao di n đ ho .
Có kh năng nh ng tham s không đúng s làm h ng màn hình c a b n ho c
d n đ n nh ng h u qu không lư ng trư c, do đó không nên th c u hình X.org
b ng cách đã k trên tr khi b n ch c ch n là mình đúng. T t hơn h t là ki m tra
t p tin c u hình xorg.conf đã t o ra xem có nh ng l i nguy hi m nào không.
Đ th c hi n công vi c ki m tra ch c n dùng câu l nh:
7
Thư m c phông ch ph i có t p tin fonts.dir thư ng do câu l nh mkfontdir tr c ti p
ho c dán ti p t o ra. Câu l nh file fonts.dir cho bi t fonts.dir ch là m t t p tin văn b n
thông thư ng nhưng không nên t s a đ i nó. Hãy dùng chương trình v a nh c t i đ làm vi c
này
8
B n có th ki m tra l i đi u này b ng câu l nh ls -l
7.3 C u hình chương trình ch X 179


[user]$ X -probeonly -verbose 1 > xprobe.log 2>&1
Câu l nh này ch y máy ch X ch đ th và đưa k t qu th đó vào t p
tin xprobe.log đ sau này có th đ c d dàng hơn. N u không ch ra t p tin
xprobe.log thì k t qu th s hi n ra trên màn hình. Sau khi ch y câu l nh
này màn hình s nh p nháy, sau đó s l i th y dòng l nh c a h v và trong thư
m c hi n th i s có thêm t p tin xprobe.log.
Trong t p tin này có r t nhi u thông tin có ích v h th ng X Window. C n
nói r ng trong t p tin b n ghi /var/log/Xorg.0.log còn có nhi u thông tin
hơn, nhưng trong đa s trư ng h p, chúng ta ch c n nh ng thông tin trong
xprobe.log. Nh ng dòng đ u tiên cho bi t m t vài d li u v X.org. Dư i nh ng
dòng này là thông tin v phiên b n c a X Window System, ngày phát hành, tên
c a h đi u hành, phiên b n nhân Linux và m t vài thông tin khác. Sau đó là
thông báo v nơi đ t t p tin b n ghi (thư ng là /var/log/Xorg.0.log) và tên
c a t p tin c u hình đư c s d ng:
(==) Log file: "/var/log/Xorg.0.log", Time: Wed Jan 31 22:25:09 2007
(==) Using config file: "/etc/X11/xorg.conf"
Trong t p tin xprobe.log này chúng ta còn th y l i gi i thích cho nh ng ký
hi u s d ng dư i cũng như trong t p tin b n ghi Xorg.0.log:
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.

Như v y:
• (––) có nghĩa là nh ng giá tr tương ng thu đư c khi th (probe).
• (**) có nghĩa là tham s l y t trong t p tin c u hình (ví d xorg.conf).
• (==) có nghĩa là s d ng tham s theo m c đ nh.
• (++) có nghĩa là tham s l y t dòng l nh ch y máy ch X.
• (!!) — sau d u hi u này là nh ng chú ý.
• (II) — sau d u hi u này là nh ng thông tin khác nhau.
• (WW) — sau d u hi u này là nh ng c nh báo.
• (EE) — sau d u hi u này là nh ng thông báo l i.
• (NI) — sau d u hi u này là thông báo v nh ng tham s còn chưa đư c
phát tri n trong X.org.
• ?? — nh ng thông tin không rõ ngu n g c.
L i và c nh báo tìm th y trong xprobe.log chúng ta s s a b ng cách thay
đ i tham s tương ng trong t p tin /etc/X11/xorg.conf. Nhưng t m th i
chúng ta s ti p t c xem xét xprobe.log v a t o ra. Trong t p tin này còn có
m t vài dòng thông tin hi n th m i quan h gi a các ph n trong t p tin c u
hình:
180 Giao di n đ ho


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

trong t p tin này r t có th chúng ta s g p nh ng c nh báo v thư m c
ch a phông ch đã nói ph n trư c, có d ng sau:

(WW) The directory "/usr/share/fonts/local" does not exist.
Entry deleted from font path.
(WW) The directory "/usr/share/fonts/PEX" does not exist.
Entry deleted from font path.
(WW) The directory "/usr/share/fonts/baekmuk" does not exist.
Entry deleted from font path.
(WW) The directory "/usr/share/fonts/japanese" does not exist.
Entry deleted from font path.
(WW) The directory "/usr/share/fonts/kwintv" does not exist.
Entry deleted from font path.

T i th i đi m này, nh ng c nh báo tương t như trên không nh hư ng nhi u
đ n vi c s d ng X Window. Hãy c g ng s a h t nh ng l i ((EE) tìm th y, ki m
tra l i b ng:

[user]$ X -probeonly -verbose 1 > xprobe.log 2>&1

r i nhìn vào t p tin xprobe.log xem có còn l i nào không. N u không còn n a
thì có th m nh d n ch y ch đ đ ho b ng câu l nh X như đã nói đ u ph n
này. T t nhiên, b n c n bi t r ng, không có l i tìm th y trong xprob.log chưa
b o đ m vi c ch y thành công ch đ đ ho . Do đó n u v n th y m t màn hình
đen, thì hãy quay tr l i dòng l nh b ng t h p phím ++
r i ki m tra k càng k t qu c a câu l nh:

[user]$ X -probeonly -verbose 1 > xprobe.log 2>&1

Đôi khi có th th ch n m t đ phân gi i ho c đ sâu màu nh hơn. Ví d
ch n đ phân gi i “1024x768” và đ sâu màu “16” thay vì “1600x1200” và “24”.
Nói v ch đ làm vi c c a màn hình không th không k đ n m t ti n ích nh
nh ng có ích đó là xvidtune. S d ng ti n ích này b n s tìm đư c ch đ hi n
th thích h p cho màn hình c a mình. Ti n ích này ch y trong giao di n đ ho ,
do đó hãy ch y X b ng startx r i ch y xvidtune t m t trình l nh nào đó (ví
d xterm). Chúng ta s th y m t c a s hi n ra như trong hình 7.3, sau khi đã
đóng c a s c nh báo cho bi t các nhà phát tri n không ch u trách nhi m v vi c
s d ng xvidtune gây ra. Nh ng c nh báo như v y b n s thư ng xuyên g p
khi s d ng các s n ph m có liên quan đ n Linux như chương trình, sách, báo,
hư ng d n,. . .
và trên xterm s xu t hi n m t vài dòng thông tin:
7.3 C u hình chương trình ch X 181




Hình 7.3: Chương trình xvidtune



Vendor: SAMSUNG, Model: SYNCMASTER 757NF(T)/707NF/700NF
Num hsync: 1, Num vsync: 1
hsync range 0: 30.00 - 96.00
vsync range 0: 50.00 - 160.00

Nút Show cho bi t ch đ hi n th đang đư c s d ng d ng:

"1280x1024" 167.32 1280 1376 1512 1744 1024 1025 1028 1078

Chính nh ng dòng thông tin d ng này đư c s d ng trên các dòng Modline c a
ph n Modes t p tin c u hình xorg.conf.
Đ ch nh hình nh trên màn hình, ví d di chuy n sang ph i, hãy s d ng
(nh n vào) nút Right (khi này các s tương ng phía trên s thay đ i), r i
nh n nút Apply. Tương t như v y s d ng cách nút Left — di chuy n sang
trái, Up — lên trên, Down — xu ng dư i, Taller, Wider— tăng kích thư c
hình nh theo chi u cao, và b ngang ho c gi m chúng xu ng b ng Narrower
và Shorter. Trong l n ch y th xvidtune cu i cùng, tôi không s d ng đư c
nh ng ch c năng ch nh s a k trên và nh n đư c thông báo không th th c thi
(hình 7.4).




Hình 7.4: Chương trình xvidtune “không ch u” ch nh hình nh
182 Giao di n đ ho


Thi t l p ban đ u có th ph c h i b ng nút Restore. Kh năng này có ích khi
hình nh thu đư c sau khi ch nh s a không làm b n hài lòng b ng lúc đ u. Nút
Fetch dùng đ yêu c u nh ng giá tr thi t l p hi n th i c a màn hình. Nút Auto
dùng đ chuy n gi a hai ch đ không t đ ng và t đ ng. T đ ng có nghĩa là
ngư i dùng không c n nh n vào nút Apply đ có th th y nh ng thay đ i n a
mà s th y chúng ngay l p t c khi có ch nh s a nào đó đư c th c hi n. Nút Test
dùng đ th t m th i nh ng giá tr đã đ t ra. Nút Show dùng đ đưa ra các giá
tr như đã nói trên. Hai nút Next và Prev dùng đ chuy n các ch đ hi n th ,
gi ng như hai t h p phím ++ và ++.
Sau khi đã ch n xong các giá tr thích h p, hãy nh n nút Show r i ghi lên
gi y nh ng giá tr này, và đ ng quên thêm vào đó hai giá tr t n s c p nh t
màn hình Horizontal Sync và Vertical Sync n m góc ph i phía dư i c a
c a s xvidtune. Cu i cùng hãy m t p tin xorg.conf, ki m tra l i các dòng
Modeline và ghi vào đó các giá tr tương ng.
V i nh ng thông tin gi i thi u v ng d ng xvidtune chúng ta đã k t thúc
ph n c u hình chương trình ch X. Xin hãy lưu ý là các phiên b n m i c a các
b n phân ph i Linux có kh năng c u hình X r t t t ngay trong quá trình cài
đ t, do đó hy v ng là b n s không ph i t mình ch nh s a t p tin xorg.conf.
Tuy nhiên nh ng thông tin trong ph n này s có ích khi có v n đ gì đó x y ra,
ho c đơn gi n là khi b n mu n tìm hi u và t o cho mình m t c u hình chương
trình ch X riêng. Còn bây gi chúng ta s xem xét quá trình kh i đ ng toàn b
h th ng X Window và cách tác đ ng lên quá trình này.


7.4 Kh i đ ng h th ng X Window
Có th kh i đ ng h th ng X Window b ng nhi u cách. Trong khi cài đ t h đi u
hành Linux, có th ngư i dùng đ ng ý v i đ ngh c a trình cài đ t t đ ng ch y
h th ng này. N u vi c cài đ t và c u hình X.org bình thư ng, thì ngay sau khi
kh i đ ng h đi u hành, b n s chuy n vào ch đ đ ho . Cách kh i đ ng này
có m t vài đi m b t l i: th nh t, v s d ng b nh và s d ng tài nguyên nói
chung (trình qu n lý màn hình s “ăn” m t m t ph n b nh , và nhi u công vi c
c a b n có th th c hi n trong ch đ văn b n mà b n l i ph i đ i trong khi kh i
đ ng X); th hai, khi có v n đ x y ra có th b n s không bi t ph i gi i quy t
như th nào ngoài vi c cài đ t l i. Do đó m c dù nh ng b n phân ph i m i làm
vi c r t t t phương di n ch đ đ h a, tôi v n ch n kh i đ ng vào ch đ văn
b n (b ng cách đ t giá tr initdefault b ng 3 trong t p tin /etc/inittab)
và ch ch y X Window khi c n thi t. Làm th nào đ kh i đ ng đư c ch đ đ
ho theo cách khác?
Như b n đã bi t t nh ng ph n trư c, đ u tiên chúng ta c n kh i đ ng máy
ch X. Đi u này có th th c hi n b ng cách ch y th ng chương trình Xorg (ho c
liên k t m m X) t thư m c /usr/bin/X11/. B n đã bi t k t qu thu đư c là
m t màn hình tr ng v i con tr hình chéo n m gi a. Nhưng ngoài ra thì không
còn có gì khác và b n không th th c hi n thêm m t thao tác nào tr di chuy n
con tr b ng chu t. Đó là b i vì chưa có m t trình qu n lý c a s nào và chưa
có m t chương trình khách (client) nào đư c ch y. Vì th hãy nh n t h p phím
++ đ d ng ch y máy ch X và quay v ch đ văn b n.
7.4 Kh i đ ng h th ng X Window 183


Có m t cách t t hơn (nhưng không ph i là t t nh t) đ chuy n vào ch đ
đ ho là ch y câu l nh xinit. Câu l nh xinit, cũng n m trong thư m c
/usr/bin/X11 như Xorg, dùng đ ch y máy ch X và ít nh t m t chương trình
khách. Theo m c đ nh xinit th c hi n script

X :0

t c là ch y chương trình máy ch X trên màn hình s 0.
N u trên dòng l nh ch y xinit không ch ra chương trình khách c n ch y,
thì chương trình xinit s tìm t p tin .xinitrc có trong thư m c c a ngư i
dùng đ th c hi n t p tin này gi ng như các script khác, t c là ch y nh ng câu
l nh có trong .xinitrc. N u không có t p tin .xinitrc đó, thì theo m c đ nh
xinit s th c hi n câu l nh sau:

xterm -geometry +1+1 -n login -display :0

K t qu là ngư i dùng s th y m t màn hình tr ng không v i m t c a s trình
l nh xterm duy nh t. Và b i vì chưa có trình qu n lý c a s nào đư c ch y nên
b n s không th làm gì (di chuy n, thay đ i kích thư c, v.v. . . ) đư c v i c a s
này, nhưng có th dùng nó đ th c hi n nh ng chương trình khác k c trình
qu n lý c a s . Ví d , hãy th ch y câu l nh twm ho c fvwm (m t trong hai trình
qu n lý c a s này thư ng đư c cài đ t theo m c đ nh). Sau đó b n s th y c a
s xterm có thay đ i và đã có th di chuy n b ng cách kéo thanh trên đ u c a
nó. N u trên máy c a b n có cài các trình qu n lý c a s và môi trư ng làm vi c
khác, ví d fluxbox, icewm, Xfce4, KDE và GNOME, thì hãy th ch y m t trong
các câu l nh sau:

[user]$ fluxbox
[user]$ icewm-session
[user]$ xfce4-session
[user]$ startkde
[user]$ gnome-session

N u d ng l i cách kh i đ ng giao di n đ ho này, thì m i l n chúng ta s
ph i l p đi l p l i m t s câu l nh, đó là chúng ta còn chưa k đ n nh ng m t
y u khác c a cách này. Do đó, ngư i dùng c n s d ng kh năng t o ra t p tin
script .xinitrc đ t đ ng hóa nh ng công vi c l p l i đ n nhàm chán này. V i
m c đích h c t p, tôi xin đưa ra dư i đây ví d m t script .xinitrc dùng đ
ch y đ ng h , hai c a s xterm và cu i cùng ch y trình qu n lý c a s twm.

#!/bin/sh
xrdb -load $HOME/.Xresources
xsetroot -solid gray &
xclock -g 100x100-0+0 -bw 0 &
xload -g 50x50-100+0 -bw 0 &
xterm -g 80x24+0+0 &
xterm -g 80x24+0-0 &
exec twm
184 Giao di n đ ho


C n chú ý là nh ng chương trình ch y t .xinitrc ph i đư c th c hi n
trong ch đ n n (background), n u như chúng không k t thúc ngay l p t c.
Trong trư ng h p ngư c l i, nh ng chương trình này s ngăn c n không cho
ch y nh ng chương trình n m phía sau. Tuy nhiên m t trong nh ng chương
trình này (thư ng là trình qu n lý c a s ho c trình l nh d ng xterm) ph i đư c
th c hi n ch đ bình thư ng (foreground), đ cho vi c ch y script không b
k t thúc. Chương trình khách này có tên g i đ c bi t là “magic client”. Khi ngư i
dùng đóng “magic client”, chương trình xinit bi t là công vi c đã hoàn thành
và nó s t t t. Trong ví d trên, n u trình qu n lý c a s đư c c u hình đúng,
thì đ có th d ng phiên làm vi c (session) v i giao di n đ h a, ngư i dùng ph i
ch n m c Exit trong th c đơn c a twm.
Có th dùng nh ng tham s dòng l nh c a xinit đ thay cho script .xinitrc.
Trên dòng l nh có th ch ra chương trình khách. Chương trình khách ph i là
tham s đ u tiên c a dòng l nh g i xinit. Tên c a chương trình khách ph i
b t đ u b ng d u g ch chéo (/) ho c d u ch m (.), n u không chương trình s
coi chúng như là các tham s c n ph i thêm vào chương trình khách n m phía
trư c. B ng cách này có th thêm tham s vào cho các chương trình (ví d màu
n n và màu ch cho xterm) mà không c n ph i gõ l i dòng l nh t đ u. T t c
nh ng gì n m sau d u g ch chéo đôi (––) s đư c thêm vào dòng l nh g i chương
trình ch X. Ví d d u hai ch m và m t ch s nào đó (:n) dùng đ ch ra m t
màn hình có s th t khác 0 (theo m c đ nh).
T ng k t m t s ví d g i chương trình xinit:

• [user]$ xinit
Câu l nh này s ch y máy ch X, th c hi n script .xinitrc n u có trong
thư m c c a ngư i dùng, n u không s ch ch y xterm.

• [user]$ xinit -- :1
Ch y máy ch X trên màn hình s 1. Có ích đ th c u hình m i khi đã có
máy ch X ch y trên màn hình m c đ nh (s 0).

• [user]$ xinit -geometry 80x25+0+0 -fg white -bg black
Ch y máy ch X, và chương trình xterm ch y theo m c đ nh s nh n đư c
các tham s li t kê trên dòng l nh. Script .xinitrc s không đư c th c
hi n.

• [user]$ xinit -e widgets -- :2
Ch y máy ch X trên màn hình có s 2 và đưa t i chương trình khách xterm
tham s –e widgets.

Vì ngư i dùng m i thư ng không có đ kh năng đ t o ra m t t p tin script
.xinitrc đ t t, nên trên các b n phân ph i luôn có các script do các nhà phát
tri n vi t s n đ th c hi n ch c năng này. Ví d m t trong nh ng script này
đó là startx n m cùng ch v i Xorg (/usr/bin/X11/). Script này có m t trang
hư ng d n s d ng startx(1) riêng. C u trúc c a startx có th r t ph c t p và
không d dàng cho ngư i dùng m i chưa quen v i ngôn ng l p trình c a Bash,
nhưng n u nhìn k thì script này th c hi n 3 câu l nh chính sau:
7.4 Kh i đ ng h th ng X Window 185


xauth add $display . $mcookie
xauth add ‘hostname -f ‘$display .$mcookie
xinit $client $clientargs -- $server $display $serverargs

T c là cu i cùng thì startx cũng g i câu l nh xinit mà chúng ta v a xem xét
và ch có đ t trư c các giá tr c n thi t cho tham s dùng trên dòng l nh c a
xinit mà thôi. Ví d , tham s tên t p tin script .xinitrc đư c xác đ nh b ng
bi n clientargs. N u có t p tin .xinitrc trong thư m c c a ngư i dùng thì
s s d ng nó, t c là “clientargs” = “$HOME/.xinitrc”, n u không s l y t p tin
xinitrc c a h th ng, t c là “clientargs” = “/etc/X11/xinit/xinitrc”. Vi c đ t giá tr
cho các tham s khác cũng x y ra tương t . Câu l nh xauth và tùy ch n –auth
$HOME/.Xauthority dùng đ xác nh n ngư i dùng đang ch y ch đ đ h a.
Như v y ngay sau khi cài đ t ngư i dùng đã có th dùng câu l nh startx đ
kh i đ ng h th ng X Window thay cho l nh xinit v i các tham s khó nh .
Nhưng làm th nào đ l a ch n trình qu n lý c a s (môi trư ng làm vi c)
thích h p?


7.4.1 L a ch n trình qu n lý c a s
M t khi đã làm đư c cho h th ng X Window ch y thành công, thì b n có r t
nhi u kh năng c u hình, tùy ch nh nó theo ý c a mình. Nh ng kh năng c u
hình, tùy ch nh này l i ph thu c r t nhi u vào trình qu n lý c a s mà b n s
d ng. Như đã nói ngay t đ u, có r t nhi u trình qu n lý c a s cũng như môi
trư ng làm vi c d a trên nh ng trình qu n lý c a s này. Ngư i dùng có th l a
ch n m t trong nh ng trình qu n lý c a s ngay t lúc b t đ u ch y ch đ đ
h a. Ví d có th th c hi n đi u này b ng t p tin .xinitrc dư i đây:

#!/bin/sh
# $HOME/.xinitrc
# dùng Xfce4 theo m c đ nh
WMGR="xfce4-session"
# t t xscreensaver
xset s noblank
# ch y screensaver sau 10 phút
xset s 600 2
# ch y xterm
xterm -bg black -fg white -fn 7x14 -geometry 80x24+57+0 &
# n u đưa ra m t Window Manager khác
# thì dùng nó thay cho Xfce4
if [ "$1" != "" ] ; then WMGR=$1
fi
exec $WMGR

M c dù không c n thi t, nhưng có th chuy n t p tin này thành có th th c
thi b ng câu l nh chmod quen thu c:

[user]$ chmod u+x .xinitrc
186 Giao di n đ ho


T p tin .xinitrc này cho phép ngư i dùng l a ch n trình qu n lý c a s
(ho c môi trư ng làm vi c) khi kh i đ ng h th ng X Window b ng câu l nh
startx. Ví d đ kh i đ ng KDE, đ u tiên chúng ta tìm xem startkde n m
đâu r i đ t nó vào làm tham s cho startx như sau:
[user]$ which startkde
/opt/kde3/bin/startkde
[user]$ startx /opt/kde3/bin/startkde
Tương t như v y đ i v i GNOME:
[user]$ which gnome-session
/opt/gnome/bin/gnome-session
[user]$ startx /opt/gnome/bin/gnome-session
Chú ý là n u ch ch y startx không có tham s thì Xfce4 s đư c kh i đ ng theo
m c đ nh.
T t nhiên b n có th t o cho m i trình qu n lý c a s và môi trư ng làm vi c
m t t p tin .xinitrc riêng, ví d cho KDE — t p tin .xinitrc-kde:
#!/bin/sh
#$HOME/.xinitrc-kde

# Ch y m t s chương trình
#xset b off &

# Đ t m t s bi n, ví d thư vi n mà
# xvnkb c n
#export LD_PRELOAD=/usr/local/lib/xvnkb.so

# Dùng cách nh p SCIM làm m c đ nh
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE=scim
export QT_IM_MODULE=scim

# Ch y môi trư ng làm vi c
exec /opt/kde3/bin/startkde
Thêm thu c tính có th th c thi cho nó:
[user]$ chmod u+x .xinitrc-kde
Tương t như v y có th t o các t p tin .xinitrc-gnome, .xinitrc-xfce,
.xinitrc-fluxbox, . . . b ng cách thay th dòng cu i cùng c a t p tin k trên
tương ng b ng m t trong nh ng dòng dư i đây:
exec /opt/gnome/bin/gnome-session
exec /usr/bin/xfce4-session
exec /usr/bin/fluxbox
Và khi c n kh i đ ng m t trình qu n lý c a s nào đó, thì ch c n sao chép t p
tin tương ng vào v trí c a .xinitrc, ví d đ kh i đ ng Xfce4:
[user]$ cp .xinitrc-xfce .xinitrc
7.4 Kh i đ ng h th ng X Window 187


7.4.2 Môi trư ng làm vi c KDE và GNOME

M i ngư i dùng máy tính dù có nhi u kinh nghi m hay ít đ u c g ng t o cho
mình m t môi trư ng làm vi c quen thu c cho b n thân đ có th làm vi c nhanh
hơn (có hi u su t hơn) b ng nh ng thao tác có th đơn gi n như t o đư ng d n
đ n nh ng chương trình và thư m c thư ng dùng, thay đ i nh n n, hay ph c
t p hơn như ch n phím nóng (k c b ng bàn phím và b ng chu t) đ m nhanh
m t chương trình ho c th c hi n m t thao tác nào đó trong chương trình đang
m , l a ch n các ng d ng thích h p cho công vi c. Trên h đi u hành Linux,
ngư i dùng hơn bao gi h t có th t o cho mình m t môi trư ng làm vi c có m t
không hai, ví d b ng cách ch n m t trình qu n lý c a s ưa thích nh t r i sau
đó ch n các chương trình ng d ng riêng, c n cho công vi c c a mình.
Tuy nhiên, cách k trên không ph i lúc nào cũng thu n ti n và quan tr ng
hơn là không ph i lúc nào cũng d dàng. Ngư i dùng c n th qua nh ng trình
qu n lý c a s chính r i sau đó m i đưa ra đư c l a ch n cho mình, chưa k đ n
s lư ng các chương trình ng d ng cho Linux là không th đ m đư c. Do đó đ u
tiên nên xem xét kh năng l a ch n m t trong nh ng môi trư ng làm vi c đang
phát tri n trong nh ng năm g n đây. Trong thu t ng ti ng Anh thư ng dùng
ký hi u vi t t t GUI — Graphical User Interface, t c là giao di n đ h a c a
ngư i dùng. Chúng ta s s d ng c m ký t vi t t t này d ng g c c a nó GUI.
GUI là m t b các chương trình ng d ng đã đư c ki m tra và nhóm l i v i nhau
đ làm vi c trong ch đ đ ho , bao g m trình qu n lý c a s và các chương trình
khác và có cùng m t giao di n chung. S d ng GUI thay cho m t môi trư ng làm
vi c t t o ra có nhi u ưu đi m: đ u tiên đó là ti t ki m đư c nhi u th i gian; th
hai là s d dàng, m i th đã có s n ch c n cài đ t và s d ng; th ba, chúng
ta s thu đư c các chương trình v i m t giao di n chung, đi u này cũng h t s c
quan tr ng n u không nói là đi m khác bi t quan tr ng nh t c a GUI.
Có m t vài môi trư ng làm vi c đ h a mi n phí (t do), cũng như thương m i.
Trong s các môi trư ng t do thì KDE và GNOME ph bi n r ng rãi nh t. Có th
g i KDE và GNOME là hai “ông l n” trong th gi i GUI. Câu h i môi trư ng nào
trong s hai môi trư ng này t t hơn ho c c n l a ch n KDE hay GNOME vư t
quá khuôn kh c a cu n sách này, và trên m ng đã có r t nhi u cu c tranh cãi
cũng như bài báo xung quanh v n đ này. Fan c a GNOME thì nói GNOME t t
hơn, fan c a KDE thì nói ngư c l i. B n thân tôi thích dùng KDE hơn vì lý do s
d ng GNOME trư c đây không đư c thành công l m, ng d ng c a GNOME đã
liên t c b l i crash (v ). Theo như nhi u ngu n thông tin thì ng d ng GNOME
bây gi đã ch y n đ nh hơn, nhưng tôi v n trung thành v i KDE. Tôi thích KDE
vì giao di n đ p và có th (nói chính xác là c n thi t) ch nh s a đ đ p hơn. C n
công b ng mà nói r ng nh ng phiên b n g n đây c a GNOME cũng đã có “v
đ p” không kém KDE.
Cách kh i đ ng vào môi trư ng làm vi c KDE (GNOME) qua câu l nh startx
b n đã bi t t ph n n m ngay trư c. N u mu n s d ng KDE làm môi trư ng
làm vi c m c đ nh cho toàn b h th ng thì hãy m t p tin c u hình h th ng,
thư ng là /etc/sysconfig/windowmanager, và thay th giá tr đã có c a
DEFAULT_WM thành kde (t c là thu đư c dòng DEFAULT_WM="kde" (t c là n u
mu n s d ng GNOME, thì ch c n đ t vào giá tr gnome).
Trong chương t i chúng ta s nghiên c u k hơn v môi trư ng làm vi c
188 Giao di n đ ho


KDE. Nhưng n u mu n ngay bây gi b n đã có th xem thông tin v môi trư ng
này t trang ch c a nó http://www.kde.org ho c t trang ti ng Vi t http:
//www.kde-vi.org (r t ti c là trang KDE-vi không đư c c p nh t k p th i vì
nhi u lý do). Trang ch c a GNOME n m t i đ a ch http://www.gnome.org.


7.4.3 Môi trư ng làm vi c Xfce
Môi trư ng làm vi c Xfce, cũng gi ng như KDE và GNOME, thu c vào s môi
trư ng t do, mã ngu n m . Đi m khác chính c a Xfce là s nh g n và làm vi c
nhanh, và cũng vì v y mà có ít s lư ng chương trình ng d ng cũng như kh
năng c u hình hơn so v i hai “ông l n” k trên. Tuy nhiên đ ng vì v y mà đánh
giá th p kh năng c a Xfce. N u c n thi t b n có th ch y các ng d ng KDE
và GNOME trong Xfce. Môi trư ng Xfce c n ít b nh hơn, đ dành b nh cho
nh ng ng d ng khác. Môi trư ng Xfce không đòi h i ph i có m t b x lý m nh.
Do đó, Xfce thích h p v i nh ng máy tính có c u hình bình thư ng, không có kh
năng làm vi c v i KDE và GNOME ho c làm vi c r t ch m. T t c nh ng ưu
đi m c a Xfce d n đ n s ph bi n c a nó trong s nh ng ngư i dùng có chút
kinh nghi m làm vi c v i Linux.
Phiên b n hi n th i c a Xfce là 4 và đã có m t trình qu n lý t p tin riêng
(Thunar), m t trình gi i nén (Xarchiver), trình l nh (Terminal), trình xem phim,
h tr panel, v.v. . . B n có th xem nh ch p Xfce sau khi đã s a chút ít trên
hình 7.5 ho c làm quen g n hơn v i Xfce qua trang ch c a nó http://www.
xfce.org.


7.4.4 S d ng trình qu n lý màn hình
Như b n đã bi t, có th t đ ng ch y h th ng X Window ngay khi kh i đ ng máy
tính b ng cách s d ng chương trình có tên g i trình qu n lý màn hình (Display
Manager), ví d X Display Manager — xdm. Trong trư ng h p này, ngư i dùng
th y ngay giao di n đ h a GUI, mà không c n ph i kh i đ ng nó b ng l nh
startx. Khi này v n có kh năng chuy n v giao di n console b ng t h p phím
++ (# đây b ng t 1 đ n 6), sau đó chuy n quay l i vào môi
trư ng đ h a b ng t h p ++.
Đ t đ ng ch y trình qu n lý màn hình (ví d xdm), c n s a t p tin c u hình
kh i đ ng /etc/inittab. Tìm trong t p tin này dòng

id:3:initdefault:

xác đ nh c p đ kh i đ ng (runlevel) theo m c đ nh, và s a nó thành

id:5:initdefault:

S thay đ i này s khi n Linux chuy n sang kh i đ ng c p đ 5. Trên trình
qu n lý màn hình như xdm cũng có ô login đ ngư i dùng đưa vào tên đăng
nh p c a mình và ô password đ đưa vào m t kh u. Sau khi nh p xong login
và password ngư i dùng c n nh n đ vào môi trư ng đ h a m c đ nh
c a h th ng.
7.4 Kh i đ ng h th ng X Window 189




Hình 7.5: Môi trư ng làm vi c Xfce


N u b n có ch n cài đ t KDE ho c GNOME thì r t có th h th ng s s
d ng kdm (KDE Display Manager) ho c gdm (GNOME Display Manager) thay
cho xdm. kdm và gdm th c hi n công vi c tương t như c a xdm — cho phép ngư i
dùng đăng nh p vào h th ng, nhưng có m m d o hơn: có th ch n s c thái, t c
là thay đ i v ngoài theo ý mình, có th ch n môi trư ng làm vi c (trình qu n lý
c a s ) và ngôn ng tr c ti p trư c khi vào, có th th c hi n các thao tác khác
như t t máy, kh i đ ng l i,. . .
Chú ý là n u dùng m t trình qu n lý màn hình như kdm hay gdm thì t h p
phím ++ s không d ng máy ch X như bình thư ng,
mà s th c hi n thao tác “kh i đ ng l i” máy ch X. T c là khi này có th dùng
++ đ c p nh t nh ng thay đ i đã t o ra trong c u hình
máy ch X cũng như toàn b h th ng X Window.
Chương 8

Làm vi c trong môi trư ng KDE


“Conquer your Desktop!” — konqueror
Như đã nói trong chương trư c, môi trư ng làm vi c KDE cùng v i GNOME hi n đang ph bi n
trong th gi i ngư i dùng Linux. KDE, GNOME và Xfce có th nói là đã hình thành m t cái “ki ng ba
chân” b n v ng, trên n n t ng X.org, cho môi trư ng đ ho c a Linux. Trong chương này chúng ta
s tìm hi u k hơn v môi trư ng GUI v i tên KDE. Thông tin có trong chương này giúp b n làm quen
v i KDE, bi t cách c u hình nó theo ý mình, và t t nhiên là làm quen v i m t thành ph n r t quan
tr ng c a KDE, đó là nh ng ng d ng đi kèm giúp ngư i dùng th c hi n nh ng công vi c thư ng
ngày như so n th o văn b n, nghe nh c, xem phim, làm đ h a . . . cu i chương b n s tìm th y
m t s ngu n thông tin khác giúp b n ti p t c tìm hi u KDE. Đi u này là c n thi t vì m t chương
sách ng n không th nói h t v môi trư ng m nh này.



8.1 B t đ u làm vi c v i KDE
KDE là vi t t t c a K Desktop Environment — m t môi trư ng đ h a cho Linux
và nh ng phiên b n UNIX khác, bao g m hàng trăm ng d ng và h tr trên 60
ngôn ng khác nhau. KDE đư c phát tri n trong khuôn kh c a c ng đ ng mã
ngu n m (Open Source Software hay vi t t t là OSS), t c là đư c phân ph i
m t cách t do (mi n phí) cùng v i mã ngu n. KDE có các tính ch t c a m t môi
trư ng làm vi c hi n đ i: đ y đ tính năng, s d ng thu n ti n và thi t k đ p
m t. Phiên b n hi n th i c a KDE là 3.5.6, và các nhà phát tri n KDE đang làm
vi c ngày đêm đ cho ra đ i phiên b n 4.0, m t phiên b n mang đ y mong đ i v i
nh ng tính năng m i c a b n thân môi trư ng KDE, cũng như các ng d ng c a
nó. Nh ng hình ch p cũng như mô t dư i đây thu c v phiên b n 3.5.6, nhưng
cũng có th áp d ng cho nh ng phiên b n khác.


8.1.1 Đăng nh p vào KDE
Trong chương trư c b n đã bi t cách kh i đ ng vào môi trư ng KDE, s d ng
.xinitrc ho c t p tin c u hình /etc/sysconfig/windowmanager cùng v i
script startx. Nhưng thông thư ng khi cài đ t KDE, ngư i dùng s cài đ t c
trình qu n lý màn hình KDM. Và n u ch n ch y vào ch đ đ ho ngay sau khi
8.1 B t đ u làm vi c v i KDE 191


kh i đ ng h th ng thì b n s th y m t màn hình như trên hình 8.1 hi n ra. Như




Hình 8.1: Màn hình đăng nh p KDM


v y, màn hình đăng nh p m c đ nh c a KDM có hai ô đ ngư i dùng gõ vào tên
đăng nh p (username) và m t kh u (password) ho c ch n tên đăng nh p c a
mình bên trái hai ô này, ngoài ra có th ch n các m c sau:

• Session Type
Ch ra môi trư ng làm vi c (trình qu n lý c a s ) mu n dùng khi đăng
nh p vào. N u có nh ng môi trư ng làm vi c khác trên h th ng thì chúng
s đư c li t kê trong m t danh sách hi n ra. Ch s d ng m c này khi b n
mu n dùng m t môi trư ng làm vi c khác v i môi trư ng m c đ nh (thư ng
là KDE).
• System
Th c hi n các công vi c có liên quan đ n h th ng, như kh i đ ng l i ho c
t t máy. Remote Login (đăng nh p t xa) giúp b n đăng nh p vào môi
trư ng làm vi c trên m t máy khác qua m ng.

Đ kh i đ ng môi trư ng làm vi c m c đ nh KDE, ch c n nh p vào tên ngư i
dùng, m t kh u r i gõ .

8.1.2 V ngoài c a KDE
N u b n đã t ng kh i đ ng vào KDE, thì đã làm quen v i v ngoài c a màn hình
sau khi ch y môi trư ng này. Ví d , hình 8.2 là màn hình KDE trên máy c a tôi
192 Làm vi c trong môi trư ng KDE




Hình 8.2: V ngoài c a màn hình sau khi ch y KDE



sau khi đã có c u hình, ch nh s a m t chút. Như b n th y, màn hình có th chia
thành hai ph n:

• Các thanh panel
Các thanh panel thư ng n m ph n ngoài cùng (đư ng biên) c a màn
hình, t c là trên cùng, dư i cùng, bên trái ho c bên ph i. Panel dùng đ
ch y các ng d ng thư ng dùng, chuy n qua l i gi a các không gian làm
vi c. Trên thanh panel chính còn có nút g i là KMenu — trình đơn chính
c a h th ng KDE, thư ng n m đ u bên trái c a thanh panel. Nút này
có bi u tư ng hình ch K theo m c đ nh, nhưng m i b n phân ph i có th
đ t vào v trí này m t bi u tư ng khác nhau. Như trên hình 8.2, bi u tư ng
đó là hình con t c kè hoa, bi u tư ng c a OpenSUSE Linux. Nút KMenu
dùng đ m ra m t trình đơn các ng d ng mà KDE tìm th y trên h th ng,
giúp ngư i dùng ch y nh ng ng d ng này bao g m c nh ng chương trình
không có bi u tư ng trên thanh panel nào.

• Màn hình (Desktop)
Đây là toàn b ph n còn l i c a màn hình, trên đó có th đ t các bi u tư ng
khác nhau dùng đ ch y các ng d ng (shortcut) ho c đ t các t p tin, thư
m c thư ng dùng. Trong trư ng h p c a mình, tôi đã b đi t t c nh ng
bi u tư ng đó, tuy nhiên đ minh h a tôi đã t o ra hai cái là l4u, digikam.
8.1 B t đ u làm vi c v i KDE 193


đây c n nói thêm m t chút v khái ni m không gian làm vi c đã nh c đ n
trên. KDE, cũng như h u h t các môi trư ng làm vi c và trình qu n lý c a s c a
Linux, có h tr m t s lư ng không gian làm vi c. Nh có không gian làm vi c
ngư i dùng có th đ t các ng d ng thu c v m t công vi c trên m t màn hình
riêng. Do đó không b r i khi có nhi u ng d ng cùng ch y. N u coi môi trư ng
làm vi c KDE là m t ngôi nhà l n, thì m i không gian làm vi c là m t căn phòng
trong nhà đó, và t t c phòng trong nhà này có ch c năng như nhau, m c dù có
th có màu sơn, trang trí khác nhau.
Đ chuy n qua l i gi a các không gian làm vi c, thì c n nh n vào ô tương ng
v i không gian đó trên trình nh (applet) KPager n m trên thanh panel. Trên
hình 8.2, b n s th y trình nh đó có hai không gian làm vi c là Làm vi c và Gi i
trí. S lư ng cũng như tên g i và m t vài c u hình khác c a không gian làm vi c
có th thay đ i theo ý mu n c a ngư i dùng. Tuy nhiên, theo kinh nghi m c a
tôi thì ngư i dùng bình thư ng không c n quá 3 không gian. Và đôi khi c u hình
máy tính (b x lý, s lư ng RAM) không cho phép m quá nhi u ng d ng m t
lúc đ c n ph i s d ng nhi u không gian làm vi c. Sau m t th i gian làm vi c
b n s tìm th y s lư ng c n thi t cho mình.
Thông thư ng, ph n không gian chính c a thanh panel là vùng thanh công
c (taskbar). Thanh công c dùng đ hi n th tên g i, bi u tư ng c a nh ng ng
d ng đang ch y và chuy n qua l i gi a chúng. M i ng d ng đang ch y có m t
th riêng trên thanh công c . Khi ngư i dùng nh n chu t vào th này, thì ng
d ng đó s đư c hi n th trên màn hình, ngư i ta nói ng d ng đư c đưa vào
tr ng thái ho t đ ng hay (active).
góc bên ph i c a thanh panel thư ng có đ ng h . hai đ u có th có các
nút có hình mũi tên tam giác. Khi nh n vào nút này, thanh panel s b n đi,
gi ng như b kéo v góc tương ng c a màn hình. Khi này trên màn hình ch còn
l i mũi tên tam giác đó. Nh n vào mũi tên này s đưa thanh panel quay tr l i.
Thanh panel c a KDE còn có tên g i “Kicker”, và t p tin chương trình tương ng
là kicker. N u ch ng may có l i gì đó, và thanh panel c a b n t nhiên bi n
m t, thì b n có th ph c h i đưa nó tr l i b ng cách ch y câu l nh (trên xterm
ho c konsole ho c m t trình l nh khác):

[user]$ kicker &

ho c nh n + đ m h p tho i ch y chương trình (hình 8.3) r i gõ vào
đó kicker và . M t tính năng quan tr ng khác c a KDE đó là h th ng




Hình 8.3: H p tho i ch y chương trình
194 Làm vi c trong môi trư ng KDE


tr giúp tr c ti p trên màn hình. N u b n đưa chu t lên m t bi u tư ng, m t nút
nào đó trên màn hình ho c trên thanh panel, thì s có m t c a s nh hi n ra
cho bi t nút hay bi u tư ng đó có tên là gì và có công d ng gì, t c là mô t v nó.
Thu t ng ti ng Anh dùng cho tr giúp lo i này là tooltips. Ví d v tooltips có
trên hình 8.4.




Hình 8.4: Tr giúp có ích tooltips


Kh năng s d ng chu t c a các môi trư ng làm vi c hi n đ i là t i đa. Nút
chu t ph i trong KDE ph c v cho vi c m m t trình đơn có n i dung ph thu c
vào “hoàn c nh” (context menu). Trình đơn này s hi n ra khi nh n chu t ph i
lên b t kỳ m t thành ph n nào đó c a màn hình, k c ph n màn hình tr ng
(n n màn hình). Trong trình đơn này ngư i dùng có th ch n m t trong nh ng
hành đ ng có th áp d ng cho ph n t đó c a màn hình. Ví d , khi nh n chu t
ph i lên n n màn hình, có th ch n các câu l nh đ c u hình nó: t o bi u tư ng
m i, c p nh t, c u hình nh n n, . . .


8.1.3 Trình đơn KMenu
Đ m ra trình đơn chính c a môi trư ng làm vi c KDE (KMenu), chúng ta c n
nh n vào bi u tư ng c a nó. Bi u tư ng này theo m c đ nh có hình ch K như
bi u tư ng đ u chương sách này. Tuy nhiên các b n phân ph i Linux thư ng
thay th nó b ng bi u tư ng logo c a mình. Sau khi nh n vào bi u tư ng c a
KMenu m t trình đơn như trong hình 8.5 s hi n ra. Cách khác đ m KMenu
là dùng t h p phím +. Trình đơn này đã có s thay đ i l n so v i
trình đơn “c đi n” c a KDE, đư c th nghi m l n đ u trên OpenSUSE. Các
nhà phát tri n KDE s dùng s thay đ i này trong phiên b n 4.0 s p t i, cho nên
tôi s mô t v KMenu ki u m i này đây. Trong KMenu m i các bi u tư ng có
m t đi m gì đó chung đư c nhóm l i v i nhau và đ t vào t ng th (tab) riêng.
Trên hình 8.5 chúng ta th y có 5 th như v y: Favorites (nh ng ng d ng ưa
thích), History (nh ng ng d ng, t p tin m i m g n đây), Computer (nh ng
thư m c, đĩa, đư ng d n chính c a máy tính), Applications (nh ng ng d ng
có trên h th ng, có l đây là ph n quan tr ng nh t đ i v i b n) và Leave (dùng
đ thoát ra kh i h th ng và th c hi n m t s hành đ ng khác).
Trong ph n Applications b n s tìm th y r t nhi u ng d ng có ích. Nh ng
ng d ng này l i đư c s p x p trong m t h th ng trình đơn có tr t t , m i
ng d ng n m trong m t nhóm th c hi n m t ch c năng chung, như Internet,
Graphics, Multimedia, Office. Nhóm ng d ng s có hình mũi tên tam giác
cu i. Đ m m t nhóm ng d ng chúng ta c n nh n chu t vào tên c a nó. Khi
này s m ra nh ng ng d ng (và có th có nhóm ng d ng) thu c vào nhóm này.
Mu n quay l i thì nh n chu t vào thanh có hình mũi tên tam giác n m bên trái.
N u mu n thêm m t chương trình nào đó vào danh sách c a th Favorites, thì
8.1 B t đ u làm vi c v i KDE 195




Hình 8.5: Trình đơn chính c a KDE


c n nh n chu t ph i vào tên (bi u tư ng c a chương trình tương ng r i ch n
câu l nh Add to Favorites.
M t tính năng m i đ c bi t h u ích c a trình đơn KDE đó là tính năng tìm
ki m. Ví d b n mu n tìm ng d ng có tên amarok. Hãy nh p tên đó vào ô tìm
ki m n m bên c nh ch Search, r i nh n ho c đ i m t chút. K t qu
tìm ki m s hi n th ngay trong trình đơn KMenu (hình 8.6). Ngoài ng d ng,
trong k t qu hi n th còn có th có thêm m t vài t p tin có liên quan đ n t tìm
ki m. Mu n ch y (m ) k t qu nào đó, thì ch c n nh n vào dòng tương ng. ng
d ng tìm th y n m trong ph n Application c a k t qu . Tính năng tìm ki m này
đư c xây d ng m t ph n d a trên h th ng Kerry/Beagle. Ngoài ra trên trình
đơn chính còn có hi n th tên đăng nh p và tên máy. Thông tin này có ích khi
b n đăng nh p vào b ng tên c a ngư i dùng khác ho c đăng nh p vào máy xa.
B n s luôn luôn bi t đư c “mình là ai” và “đang đâu”.


8.1.4 Trung tâm đi u khi n KDE
Tên “Trung tâm đi u khi n” c a KDE trong nh ng phiên b n g n đây đã đư c
thay th b ng tên m i “Thi t l p cá nhân” (Personal Settings). S thay đ i này
không có gì quan tr ng mà ch có ý nghĩa tên g i, ch c năng c a chương trình là
hoàn toàn như cũ: trong Thi t l p cá nhân ngư i dùng có th thay đ i h u h t
các c u hình c a môi trư ng làm vi c KDE.
Thi t l p cá nhân (Personal Settings) có th ch y qua trình đơn chính, qua
196 Làm vi c trong môi trư ng KDE




Hình 8.6: Tìm ki m trong trình đơn chính c a KDE



bi u tư ng trên thanh panel, ho c t dòng l nh b ng cách gõ tên chương trình
là kcontrol. Chúng ta s th y m t c a s như trên hình 8.7 hi n ra. bên
trái là danh sách d ng cây c a nh ng môđun có trong Personal Settings, còn
bên ph i là nh ng th và nh ng tùy ch n thu c v môđun đang đư c ch n bên
trái. M i môđun n m trong m t nhóm nào đó. Ví d , môđun Panels n m trong
nhóm Desktop. Trong s nh ng môđun c a Personal Settings chúng ta s xem
xét m t vài môđun làm ví d , nh ng môđun còn l i b n s t t tìm hi u khi
s d ng KDE, vì s lư ng c a chúng l n. Th nh t, đ “làm đ p” KDE thì thông
thư ng tôi thay đ i các tùy ch n s c thái, t c là thay đ i nh ng môđun c a nhóm
Appearance & Themes: thay đ i tr c ti p s c thái b ng Theme Manager,
sau đó thay đ i các bi u tư ng b ng Icons, ki u dáng b ng Style, . . . và cu i
cùng ch n nh ng phông ch cho thích h p (Fonts).
Trư c khi ch n phông ch c n s d ng đ n môđun Font Installer n u mu n
thêm nh ng cái m i m i. Có th nói đây là trình cài đ t phông ch v i giao
di n đ h a c a KDE (xem hình 8.8. Như v y môđun này li t kê nh ng phông
đã có trong thư m c cá nhân c a b n (thư ng là ~/.fonts) ô bên trái, bên
ph i là ô xem phông đư c ch n. N u mu n thêm m t phông nào đó thì c n nh n
vào nút Add Fonts . . . r i tìm đ n t p tin ch a nó. N u mu n thêm phông
ch cho toàn b h th ng thì hãy chuy n vào ch đ qu n tr h th ng b ng
nút Administrator Mode . . . (khi này b n c n nh p vào m t kh u c a root).
Phông ch cho các thành ph n khác nhau c a KDE đư c l a ch n trong môđun
Fonts (hình 8.9 cho th y ph n bên ph i c a Personal Settings khi nh n vào
8.1 B t đ u làm vi c v i KDE 197




Hình 8.7: Trình Thi t l p cá nhân c a KDE



môđun này). Đ thay đ i m t phông ch nào đó c n nh n vào nút Choose . . .
tương ng v i nó. Khi đó s hi n ra c a s như trên hình 8.10. Sau khi ch n đư c
phông ch thích h p cùng v i ki u dáng (Font style) và kích thư c (Size), c n
nh n vào OK đ ch p nh n nó. Nhưng như v y phông ch v n chưa đư c dùng
trong KDE. B n c n làm thêm m t thao tác n a đó là nh n vào nút Apply ho c
OK c a môđun đ KDE bi t ch c ch n là b n mu n s d ng phông này. Thao tác
cu i cùng này là c n thi t đ i v i c nh ng môđun khác. Khi ngư i dùng th c
hi n m t thay đ i nào đó trong m t môđun (ví d ch n phông ch khác), chưa áp
d ng nó mà chuy n sang môđun khác thì s có m t h p tho i c nh báo hi n ra
như trong hình 8.11. Ý nghĩa c a các nút c a h p tho i xin đư c gi i thích m t
l n đây, chúng s l p l i nh ng trư ng h p khác. Apply — áp d ng nh ng
thay đ i, Discard — không áp d ng chúng, t c là b n ch mu n th nghi m
ch không mu n thay đ i gì, Cancel — đóng h p tho i c nh báo này và quay v
môđun đã có thay đ i đ xem xét l i. Quay l i v i môđun ch n phông ch . Trong
môđun này b n có th th c hi n thêm m t s thao tác n a. Đó là ch n t t c các
phông ch cùng m t lúc b ng nút Adjust All Fonts . . . , dùng anti-aliasing cho
phông hi n th đ p hơn (đánh d u vào ô vuông c nh dòng Use anti-aliasing for
fonts), và dùng đ phân gi i t ch n (Force fonts DPI).
Đ thay đ i nh ng “phím nóng” dùng trong KDE, c n s d ng môđun Key-
board Shortcuts. đây có th thay đ i, thêm các phím nóng đ ch y m t
chương trình nào đó, đ m trình đơn chính, v.v . . . Nói đ n phím nóng không
th không k đ n m t tính năng m i c a KDE là kh năng s d ng chu t (bàn
phím) đ th c hi n m t thao tác nh t đ nh nào đó trong m t chương trình, ho c
trên n n màn hình. Ví d , b n có th dùng nút chu t gi a (bánh xe) v lên màn
hình m t hình gì đó, ví d hình ch nh t, và khi đó chương trình OpenOffice.org
Writer s ch y. Ho c trong chương trình Konqueror, cũng b ng nút bánh xe v
hình ch L và Konqueror s m m t thư m c xác đ nh (chúng ta s nói k hơn
198 Làm vi c trong môi trư ng KDE




Hình 8.8: Cài đ t phông ch m i




Hình 8.9: Ch n phông ch dùng cho text, trình đơn, . . .


v Konqueror sau). Nh ng c u hình này đư c th c hi n trong môđun Input
Actions n m cùng nhóm v i môđun v a k trên.
Bây gi chúng ta s nghiên c u c th hơn cách thay đ i v ngoài c a KDE,
t c là thay đ i n n màn hình, trình đơn chính và các thanh panel.

8.1.5 Thay đ i v ngoài
Hai thành ph n chính c a màn hình là n n và các thay panel có th thay đ i m t
cách d dàng b ng cách nh n chu t ph i lên chúng và ch n các câu l nh tương
ng trong trình đơn m ra (trong sách này chúng ta s t m g i nó là “trình đơn
b i c nh”, d ch t ti ng Anh “context menu”). Ngư i dùng các h đi u hành có
giao di n đ ho khác ch c ch n là s s d ng trình đơn b i c nh m t cách d
dàng.
Khi nh n chu t ph i lên ph n tr ng c a thanh panel s m ra m t trình đơn
c a panel này (hình 8.12), bao g m các m c sau:
• Add Applet to Panel . . . — Thêm các trình nh có ích, như trình theo dõi
m ng, đ ng h , vào thanh panel.

• Add Application to Panel — Thêm bi u tư ng (nhóm) chương trình vào
8.1 B t đ u làm vi c v i KDE 199




Hình 8.10: Ch n phông ch




Hình 8.11: C nh báo khi có thay đ i chưa áp d ng


thanh panel đ có th tìm (chúng) nó nhanh hơn. Trong danh sách hi n ra
b n c n ch n chương trình ho c toàn b nhóm chương trình đó b ng Add
this Menu.

• Remove From Panel — G b chương trình ho c applet (đang có) kh i
thanh panel.

• Add New Panel — Thêm thanh panel m i. Ví d , b n có th thêm m t
thanh panel đ “đ ng” bi u tư ng nh ng ng d ng thư ng ch y.

• Remove Panel — G b m t thanh panel nào đó cùng v i t t c nh ng gì
có trên thanh panel này.

• Lock Panels — M t trong nh ng cái m i c a KDE, tính năng này cho phép
t m th i “khóa” panel đ không thay đ i nó m t cách vô tình.

• Configure Panel . . . — C u hình thanh panel. Khi ch n câu l nh này, s
m ra m t c a s cho phép thay đ i các tùy ch n c u hình c a panel.

• Help — Tr giúp v panel.

Ngoài ra, n u nh n chu t ph i vào m t bi u tư ng chương trình ho c applet có
trên thanh panel thì s m ra m t trình đơn b i c nh có khác m t chút, như
chúng ta có th th y trên hình 8.13. Ý nghĩa c a các câu l nh tôi nghĩ không c n
gi i thích. Trong đó quan tr ng nh n có l là l nh Configure XXX Button . . .
— đ t tên cho nút c a chương trình XXX, câu l nh c a chương trình s ch y
và m t vài c u hình khác. Như đã nói trên, khi ch n câu l nh Configure
Panel . . . c a trình đơn b i c nh c a panel ho c ch n môđun Panels (nhóm
Desktop) c a Personal Settings, s hi n ra c a s ch nh s a các thanh panel
như trên hình 8.14. Có 4 th tab (Arrangement, Hiding, Menus và Appearance)
200 Làm vi c trong môi trư ng KDE




Hình 8.12: Trình đơn c a thanh panel




Hình 8.13: Trình đơn b i c nh c a nút




cùng nhi u tùy ch n nhưng chúng ta ch chú ý đ n m t s trong đó. Đ u tiên c n
ch n thanh panel mu n c u hình b ng cách nh n vào ô n m sau dòng Settings
for (th Arrangement) r i ch n panel tương ng. Sau đó dư i có th ch n v
trí đ t thanh panel (Position), chi u dài c a nó tính theo % so v i c nh c a
màn hình (Length) và đ cao tính theo pixel (Size). Trên th Appearance, có
th ch n đ thanh panel tr thành trong su i (đ p hơn?) b ng tùy ch n Enable
transparency. N u mu n b n có th b đi các nút gi u thanh panel (hình mũi
tên tam giác) b ng cách b đi các d u X trong các ô c a Panel-Hiding Buttons
(th Hiding). Sau m i l n thay đ i đ ng quên áp d ng nó b ng nút Apply.

Tương t như các thanh panel, khi nh n chu t ph i lên ph n tr ng c a n n
màn hình s m ra m t trình đơn b i c nh c a màn hình. Trong trình đơn này
cũng có nhi u câu l nh đ b n có th nghiên c u d n d n. Câu l nh Configure
Desktop . . . là l nh chúng ta quan tâm. L nh này dùng đ c u hình không
gian làm vi c cũng như n n màn hình (như thay đ i nh n n). Khi ch n l nh
này s hi n ra c a s như trên hình 8.15. Trong c a s này ngư i dùng có th
ch n không dùng nh n n (ch dùng màu), ch n m t nh làm n n ho c ch n m t
nhóm nh thay phiên nhau sau m t kho ng th i gian nh t đ nh (slide show). S
lư ng và tên g i c a các không gian làm vi c có th th c hi n qua th Multiple
Desktops. Đ thay đ i trình đơn chính c a KDE (KMenu), ngư i dùng có th s
d ng chương trình Menu Editor. Khi nh n chu t ph i lên bi u tư ng c a trình
đơn chính b n s th y m t câu l nh có cùng tên v i chương trình này. Nh n vào
đó đ ch y chương trình so n th o trình đơn. Ho c t dòng l nh ch y câu l nh
kmenuedit. K t qu thu đư c là như nhau (hình 8.16). Cu i cùng, đ thêm bi u
tư ng lên màn hình, m c dù theo tôi là không th c s c n thi t, b n c n s d ng
câu l nh Create New (trong trình đơn b i c nh hi n ra khi nh n chu t ph i lên
màn hình như đã nói trên) và ch n m c tương ng c a l nh này. Sau khi k t
thúc công vi c b n c n bi t cách thoát kh i KDE cũng như giao di n đ ho , ho c
t t máy hoàn toàn.
8.1 B t đ u làm vi c v i KDE 201




Hình 8.14: C u hình các thanh panel




Hình 8.15: Thay đ i màn hình



8.1.6 Đi u khi n phiên làm vi c1
Phiên làm vi c (ti ng Anh là session) có th t m đ nh nghĩa là quá trình làm
vi c c a ngư i dùng b t đ u t lúc vào môi trư ng làm vi c đ n lúc thoát ra. Đ
đi u khi n phiên làm vi c, môi trư ng KDE có m t chương trình riêng — Session
Manager (Trình qu n lý phiên làm vi c). Chương trình này ch y ngay sau khi
tên ngư i dùng và m t kh u đư c h th ng xác nh n là đúng. Trình qu n lý
phiên làm vi c cho phép b n lưu l i các thi t l p hi n th i cho m i phiên làm
vi c, và đ ng th i cho phép ph c h i tr ng thái c a phiên làm vi c cu i cùng
trong l n đăng nh p sau.
Trình qu n lý phiên làm vi c có th ph c h i các thi t l p sau:

• Các thi t l p trang trí và tính năng, như phông ch , nh n n, màu và thi t
l p chu t.

• ng d ng đang ch y, như Konsole, t đi n Stardict hay OpenOffice.org.
1
Session
202 Làm vi c trong môi trư ng KDE




Hình 8.16: So n th o trình đơn chính


Tuy nhiên, c n chú ý là b n không th lưu và ph c h i nh ng ng d ng mà
Session Manager không qu n lý. Ví d , n u b n ch y câu l nh trình so n th o
vim t m t c a s terminal, thì Session Manager không th ph c h i trình so n
th o này.
M i câu l nh đi u khi n tr c ti p phiên làm vi c n m trong th Leave c a
trình đơn chính.

1. Lock — khóa màn hình c a b n. B n có th s d ng phím nóng xác đ nh
trong Personal Settings, thông thư ng là ++ ho c dùng
nút Lock trên thanh panel (n u có).
Khi khóa màn hình, chương trình b o v màn hình2 b t đ u ch y. Đ m
khóa màn hình, c n nh n chu t ho c nh n bàn phím đ hi n ra h p tho i
m khóa. h p tho i này b n c n nh p vào m t kh u c a mình.

2. Save Session — lưu tr ng thái c a phiên làm vi c hi n t i. Tr ng thái này
s đư c ph c h i vào l n đăng nh p sau.

3. Logout — thoát ra kh i KDE khi k t thúc công vi c ho c đ đăng nh p vào
môi trư ng làm vi c khác. N u đã s d ng KDM đ đăng nh p vào thì b n
s có m t vài l a ch n khác: t t máy, kh i đ ng l i. Phím nóng theo m c
đ nh đ thoát kh i KDE là ++ (chương trình s h i l i
b n có ch c ch n mu n thoát ra không) ho c +++
(thoát th ng, chương trình không h i l i). Trên thanh panel nút đ thoát
ra thư ng n m c nh nút Lock.




2
Screen Saver
Đề thi vào lớp 10 môn Toán |  Đáp án đề thi tốt nghiệp |  Đề thi Đại học |  Đề thi thử đại học môn Hóa |  Mẫu đơn xin việc |  Bài tiểu luận mẫu |  Ôn thi cao học 2014 |  Nghiên cứu khoa học |  Lập kế hoạch kinh doanh |  Bảng cân đối kế toán |  Đề thi chứng chỉ Tin học |  Tư tưởng Hồ Chí Minh |  Đề thi chứng chỉ Tiếng anh
Theo dõi chúng tôi
Đồng bộ tài khoản