Tài liệu tham khảo hệ điều hành Linux

pdf 194 trang phuongnguyen 4840
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu tham khảo hệ điều hành Linux", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftai_lieu_tham_khao_he_dieu_hanh_linux.pdf

Nội dung text: Tài liệu tham khảo hệ điều hành Linux

  1. Simpo PDF Merge and Split Unregistered Version - Ban chỉ đạo công nghệ thông tin của cơ quan đảng TàI liệu tham khảo Hệ điều hành Linux Hà nội, 2003 1
  2. Simpo PDF Merge and Split Unregistered Version - Ch−ơng 1. Giới thiệu chung về lệnh trong linux 1.1. Giới thiệu về UNIX và Linux 10 1.1.1. Sơ bộ về hệ điều hành đa ng−ời dùng 10 1.1.2. Xuất xứ, sự phát triển và một số đặc tr−ng của hệ điều hành UNIX 10 1.1.3. Giới thiệu sơ bộ về Linux 13 1.2. Sơ bộ về các thành phần của Linux 14 1.2.1. Sơ bộ về nhân 14 1.2.2. Sơ bộ về shell 15 1.3. Giới thiệu về việc sử dụng lệnh trong Linux 16 1.3.1. Các quy −ớc khi viết lệnh 18 1.3.2. Tiếp nối dòng lệnh 22 1.4. Trang Man (Man Page) 23 Ch−ơng 2. Lệnh thao tác với hệ thống 2.1. Quá trình khởi động Linux 26 2.2. Thủ tục đăng nhập và các lệnh thoát khỏi hệ thống 27 2.2.1. Đăng nhập 27 2.2.2. Ra khỏi hệ thống 28 2.2.3. Khởi động lại hệ thống 30 2.3. Lệnh thay đổi mật khẩu 30 2.4. Lệnh xem, thiết đặt ngày, giờ hiện tại và xem lịch trên hệ thống 32 2.4.1 Lệnh xem, thiết đặt ngày, giờ 32 2.4.2. Lệnh xem lịch 34 2.5. Lệnh gọi ngôn ngữ tính toán số học 35 2.6. Xem thông tin hệ thống 37 2.7. Hiện dòng văn bản 38 2.8. Thay đổi nội dung dấu nhắc shell 39 Ch−ơng 3. Hệ thống tập tin 3.1 Tổng quan về hệ thống tập tin 41 3.1.1. Một số khái niệm 41 3.1.2. Sơ bộ kiến trúc nội tại của hệ thống tập tin 43 3.1.3. Liên kết t−ợng tr−ng (lệnh ln) 46 3.2 Quyền truy nhập th− mục và tập tin 48 3.2.1 Quyền truy nhập 48 3.2.2. Các lệnh cơ bản 50 2
  3. Simpo PDF Merge and Split Unregistered Version - a. Thay đổi quyền sở hữu tập tin với lệnh chown 50 b. Thay đổi quyền sở hữu nhóm với lệnh chgrp 51 c. Thay đổi quyền truy cập tập tin với lệnh chmod 52 d. đăng nhập vào một nhóm ng−ời dùng mới với lệnh newgrp 53 3.3 Thao tác với th− mục 54 3.3.1 Một số th− mục đặc biệt 54 * Th− mục gốc / 54 * Th− mục /root 54 * Th− mục /bin 54 * Th− mục /dev 55 * Th− mục /etc 55 * Th− mục /lib 55 * Th− mục /lost+found 55 * Th− mục /mnt 55 * Th− mục /tmp 55 * Th− mục /usr 55 * Th− mục /home 56 * Th− mục /var 56 * Th− mục /boot 56 * Th− mục /proc 56 * Th− mục /misc và th− mục /opt 56 * Th− mục /sbin 56 3.3.2 Các lệnh cơ bản về th− mục 56 * Xác định th− mục hiện thời với lệnh pwd 56 * Xem thông tin về th− mục với lệnh ls 56 * Lệnh tạo th− mục mkdir 58 * Lệnh xóa bỏ th− mục rmdir 59 * Lệnh đổi tên th− mục mv 60 3.4. Các lệnh làm việc với tập tin 60 3.4.1 Các kiểu tập tin có trong Linux 60 3.4.2. Các lệnh tạo tập tin 61 * Tạo tập tin với lệnh touch 61 * Tạo tập tin bằng cách đổi h−ớng đầu ra của lệnh (>) 61 * Tạo tập tin với lệnh cat 62 3.4.3 Các lệnh thao tác trên tập tin 62 3
  4. Simpo PDF Merge and Split Unregistered Version - * Sao chép tập tin với lệnh cp 62 * Đổi tên tập tin với lệnh mv 64 * Xóa tập tin với lệnh rm 65 * Lệnh đếm từ và dòng trong tập tin wc 66 * Lệnh loại bỏ những dòng không quan trọng uniq 67 * Sắp xếp nội dung tập tin với lệnh sort 69 3.4.4 Các lệnh thao tác theo nội dung tập tin 71 * Sử dụng lệnh file để xác định kiểu tập tin 71 * Xem nội dung tập tin với lệnh cat 72 * Xem nội dung các tập tin lớn với lệnh more 73 * Thêm số thứ tự của các dòng trong tập tin với lệnh nl 75 * Xem qua nội dung tập tin với lệnh head 77 * Xem qua nội dung tập tin với lệnh tail 78 * Tìm sự khác nhau giữa hai tập tin (lệnh diff) 79 3.4.5 Các lệnh tìm tập tin 80 * Tìm theo nội dung tập tin bằng lệnh grep 80 * Tìm theo các đặc tính của tập tin với lệnh find 85 3.5 Nén và sao l−u các tập tin 88 3.5.1 Sao l−u các tập tin (lệnh tar) 88 3.5.2 Nén dữ liệu 91 * Nén, giải nén và xem nội dung các tập tin với lệnh gzip, gunzip và zcat 91 * Nén, giải nén và xem tập tin với các lệnh compress, uncompress, zcat 93 3.6 Sử dụng rpm 94 3.6.1.Giới thiệu chung về rpm 94 3.6.2 RPM với ng−ời dùng 95 * Cài đặt gói: 95 * Xóa một gói ra khỏi hệ thống 95 * Nâng cấp một gói 95 * Lấy thông tin về các gói phần mềm (package) 95 * Dùng RPM để kiểm tra các gói đã cài đặt 96 Ch−ơng 4. Lệnh quản lý tài khoản Ng−ời dùng 4.1 Tài khoản ng−ời dùng 97 4.2 Các lệnh cơ bản quản lý ng−ời dùng 97 4.2.1 Tập tin /etc/passwd 97 4
  5. Simpo PDF Merge and Split Unregistered Version - 4.2.2 Thêm ng−ời dùng với lệnh useradd 98 Tạo th− mục cá nhân của ng−ời dùng mới với lệnh mkdir 100 Thiết lập mật khẩu của ng−ời dùng với lệnh passwd 100 4.2.3 Thay đổi thuộc tính ng−ời dùng 100 4.2.4 Xóa bỏ một ng−ời dùng (lệnh userdel) 102 4.3 Các lệnh cơ bản liên quan đến nhóm ng−ời dùng 102 4.3.1 Nhóm ng−ời dùng và tập tin /etc/group 102 4.3.2 Thêm nhóm ng−ời dùng 103 4.3.3 Sửa đổi các thuộc tính của một nhóm ng−ời dùng (lệnh groupmod) 104 4.3.4 Xóa một nhóm ng−ời dùng (lệnh groupdel) 104 4.4 Các lệnh cơ bản khác có liên quan đến ng−ời dùng 104 4.4.1 Đăng nhập với t− cách một ng−ời dùng khác khi dùng lệnh su 104 4.4.2 Xác định ng−ời dùng đang đăng nhập (lệnh who) 105 * Có một cách khác để xác định thông tin ng−ời dùng với lệnh id 106 4.4.3 Xác định các tiến trình đang đ−ợc tiến hành (lệnh w) 107 Ch−ơng 5. Các lệnh quản lý thiết bị ngoại vi 5.1 Giới thiệu về cách thức Linux quản lý thiết bị ngoại vi 108 5.2 Các cách quản lý thiết bị l−u trữ trong Linux 109 5.2.1 Lệnh mount và lệnh umount 110 * Lệnh mount 110 * Lệnh umount 111 5.2.2 Các lệnh định dạng đĩa và tạo hệ thống tập tin trong Linux 112 * ổ đĩa cứng 112 * Xây dựng một hệ thống tập tin trên Linux với lệnh mkfs 114 * Định dạng mức thấp một đĩa mềm (lệnh fdformat) 114 * Thêm hệ thống tập tin vào đĩa mềm đã đ−ợc định dạng với lệnh mformat 115 5.2.3 Lệnh quản lý đĩa 117 * Xem dung l−ợng đĩa đã sử dụng với lệnh du: 117 * Kiểm tra dung l−ợng đĩa trống với lệnh df: 118 5.3 Các cổng nối tiếp và modem 120 5.4 Các cổng song song và máy in 120 5.4.1 Khởi tạo và thiết lập máy in trong lpd 120 5.4.2 Các lệnh in ấn cơ bản 122 5
  6. Simpo PDF Merge and Split Unregistered Version - * In một tập tin với lệnh lpr 122 * Định dạng tập tin tr−ớc khi in với lệnh pr 124 * Làm việc với hàng đợi in thông qua lệnh lpq 126 * Xóa bỏ hàng đợi in với lệnh lprm 127 * Lệnh lpc 128 5.5 Sound card 129 Ch−ơng 6. Trình soạn thảo vim 6.1 Khởi động vim 132 6.1.1 Mở ch−ơng trình soạn thảo vim 132 6.1.2. Tính năng mở nhiều cửa sổ 133 6.1.3. Ghi và thoát trong vim 134 6.2. Di chuyển trỏ soạn thảo trong Vim 134 6.2.1. Di chuyển trong văn bản 134 6.2.2. Di chuyển theo các đối t−ợng văn bản 135 6.2.3. Cuộn màn hình 135 6.3. Các thao tác trong văn bản 136 6.3.1. Các lệnh chèn văn bản trong vim 136 6.3.2. Các lệnh xoá văn bản trong vim 136 6.3.3. Các lệnh khôi phục văn bản trong vim 137 6.3.4. Các lệnh thay thế văn bản trong vim 137 6.3.5. Sao chép và di chuyển văn bản trong vim 138 * Sao chép văn bản vào bộ nhớ đệm 138 * Dán văn bản: 138 6.3.6. Tìm kiếm và thay thế văn bản trong vim 139 6.3.7. Đánh dấu trong vim 140 6.3.8. Các phím sử dụng trong chế độ chèn 140 6.3.9. Một số lệnh trong chế độ ảo 141 6.3.10. Các lệnh lặp 142 6.4. Các lệnh khác 142 6.4.1. Cách thực hiện các lệnh bên trong Vim 142 6.4.2. Các lệnh liên quan đến tập tin 142 Ch−ơng 7. Lệnh đối với tiến trình 7.1. Khái niệm 144 6
  7. Simpo PDF Merge and Split Unregistered Version - 7.2. Các lệnh cơ bản 144 7.2.1. Lệnh fg và lệnh bg 144 7.2.2. Tìm ra các tiến trình đang chạy với lệnh ps 147 7.2.3. Hủy tiến trình với lệnh kill 149 7.2.4. Cho máy ngừng hoạt động một thời gian với lệnh sleep 150 7.2.5. Xem cây tiến trình với lệnh pstree 150 7.2.6. Lệnh thiết đặt lại độ −u tiên của tiến trình nice và lệnh renice 152 Ch−ơng 8. Midnight Commander 8.1. Giới thiệu về Midnight Commander (MC) 154 8.2. Khởi động MC 154 8.3. Giao diện của MC 154 8.4. Dùng chuột trong MC 155 8.5. Các thao tác bàn phím 155 8.6. Thực đơn thanh ngang (menu bar) 157 8.7. Các phím chức năng 160 8.8. Bộ soạn thảo của Midnight Commander 160 * Thanh thực đơn 160 Thực đơn File: 160 Thực đơn Edit: 161 Thực đơn Sear/Repl: 161 Thực đơn Command: 161 Thực đơn Options: 161 * Các phím chức năng 162 Ch−ơng 9. Mtools - tiện ích truy cập ổ đĩa DOS trong Linux 9.1 Phần giới thiệu 163 9.2 Các thuộc tính chung của các lệnh mtools 163 9.2.1 Các tuỳ chọn và tên các tập tin 163 Tên ổ đĩa 163 Th− mục làm việc hiện thời 163 Tên tập tin dài kiểu VFAT 163 Xung đột tên tập tin 164 Định dạng dung l−ợng lớn 166 Nhiều sector hơn 166 7
  8. Simpo PDF Merge and Split Unregistered Version - Sectors lớn hơn 166 Định dạng 2m 167 Định dạng XDF 167 Mã thoát ra 167 V−ớng mắc 167 Các lệnh hay sử dụng 168 * Lệnh floppyd_installtest 168 * Lệnh mattrib 168 * Lệnh mbadblocks 169 * Lệnh mcat 169 Lệnh mcd 169 *Lệnh mcopy 170 V−ớng mắc 171 Lệnh mdel 171 Lệnh mdeltree 171 Lệnh mdir 171 Lệnh mdu 172 Lệnh mformat 172 Lệnh mkmanifest 174 V−ớng mắc 176 Lệnh minfo 176 Lệnh mlabel 176 Lệnh mmd 176 Lệnh mmount 176 Lệnh mmove 177 Lệnh mpartition 177 Lệnh mrd 179 Lệnh mren 179 Lệnh mshowfat 179 Lệnh mtoolstest 179 Lệnh mtype 180 Lệnh mzip 180 Lệnh xcopy 181 V−ớng mắc 182 A.1. Giới thiệu sơ bộ về Linux 183 A.2. Chuẩn bị cho việc cài đặt 183 8
  9. Simpo PDF Merge and Split Unregistered Version - A.3. Tạo đĩa mềm khởi động 184 A.4. Phân vùng lại ổ đĩa DOS/Windows hiện thời 184 A.5. Các b−ớc cài đặt (bản RedHat 6.2 và khởi động từ CD-ROM) 184 A.5.1. Lựa chọn chế độ cài đặt 184 A.5.2. Lựa chọn ngôn ngữ hiển thị. 185 A.5.3. Lựa chọn cấu hình bàn phím 185 A.5.4. Chọn cấu hình chuột. 185 A.5.5. Hệ thống đ−a ra lời giới thiệu về bản Red Hat đang cài đặt. 185 A.5.6. Lựa chọn kiểu cài đặt. 185 A.5.7. Xác định các Partition 187 A.5.8. Chọn Partition để Format. 188 A.5.9. Chọn cấu hình LILO (Linux Loader) 188 A.5.10. Chọn múi giờ 189 A.5.11. Thiết đặt cấu hình Account (ng−ời sử dụng) 189 A.5.12. Thiết đặt cấu hình quyền hạn (Authentication Configuration) 190 A.5.13. Lựa chọn các gói phần mềm cài đặt (Pakage Selection) 190 A.5.14. Thiết đặt cấu hình X (X Configuration) 191 A.5.15. Bắt đầu quá trình copy từ đĩa CD vào ổ cứng 192 A.6. Các hạn chế về phần cứng đối với Linux 192 A.6.1. Các bộ vi xử lý mà Linux hỗ trợ 192 A.6.2. Các yêu cầu về không gian ổ cứng 193 A.6.3. Các yêu cầu về bộ nhớ 193 A.6.4. Sự t−ơng thích với các hệ điều hành khác: DOS, OS/2, 386BSD, Win95 193 9
  10. Simpo PDF Merge and Split Unregistered Version - Ch−ơng 1. Giới thiệu chung về lệnh trong linux 1.1. Giới thiệu về UNIX và Linux 1.1.1. Sơ bộ về hệ điều hành đa ng−ời dùng UNIX (và Linux) là hệ điều hành đa ng−ời dùng (multi-users). Hệ điều hành đa ng−ời dùng thuộc vào loại hệ điều hành đa ch−ơng trình định h−ớng "thân thiện với ng−ời dùng". Tại cùng một thời điểm, có nhiều ng−ời dùng cùng sử dụng máy tính và đối với mỗi ng−ời dùng nh− vậy đều có cảm giác nh− đ−ợc sử dụng máy tính một cách "độc quyền" vì họ đ−ợc trực tiếp liên kết với ch−ơng trình của mình đang thực hiện trong máy tính. Điều này t−ơng ứng với một chức năng của hệ điều hành là "hệ điều hành nh− một máy tính ảo" theo góc độ của ng−ời sử dụng. Nh− vậy, trong máy tính đồng thời xuất hiện nhiều ch−ơng trình ng−ời dùng, các ch−ơng trình này chia nhau sử dụng các tài nguyên của hệ thống, trong đó có các tài nguyên quan trọng nhất là CPU, bộ nhớ trong và hệ thống tập tin (hệ thống File). Mỗi ng−ời dùng h−ớng đến tài nguyên chung qua trạm cuối (terminal) của mình (các trạm cuối này đ−ợc đặt tên và đ−ợc hệ thống quản lý). Trong tr−ờng hợp đơn giản, trạm cuối chỉ bao gồm hai thiết bị là màn hình (để hiện thông tin cho ng−ời dùng) và bàn phím (để ng−ời dùng đ−a yêu cầu đối với hệ điều hành). Trong nhiều tr−ờng hợp khác, có thể sử dụng một máy tính cá nhân đóng vai trò của một trạm cuối và nh− vậy mỗi ng−ời dùng vừa đ−ợc phép sử dụng tài nguyên riêng vừa đ−ợc phép sử dụng tài nguyên chung. Điển hình nhất trong công việc phân chia tài nguyên của hệ thống máy tính trong hệ điều hành đa ng−ời dùng là việc phân chia CPU theo một chu kỳ thời gian mà mỗi ng−ời dùng đ−ợc sử dụng CPU trong một khoảng thời gian nhất định (đ−ợc gọi là l−ợng tử thời gian) và sau khi mỗi ng−ời đã đ−ợc phân chia CPU thì lại chuyển đến l−ợt phân chia tiếp theo. Nh− vậy, phân chia thời gian (Time shared system) là cách thức của hệ đa ng−ời dùng khi điều phối CPU. Là một hệ điều hành đa ng−ời dùng, UNIX đã khá phổ biến trong các lĩnh vực hoạt động CNTT, có thể đ−ợc sử dụng từ máy vi tính cho tới máy tính mainframe. Nó đặc biệt thích hợp đối với các hệ Client-Server và mạng máy tính diện rộng. 1.1.2. Xuất xứ, sự phát triển và một số đặc tr−ng của hệ điều hành UNIX Năm 1965, Viện công nghệ Massachusetts (MIT: Massachusetts Institute of Technology) và Phòng thí nghiệm Bell của hãng AT&T thực hiện dự án xây dựng một hệ điều hành có tên gọi là Multics (MULTiplexed Information and Computing Service) với mục tiêu: tạo lập đ−ợc một hệ điều hành phủ trên vùng lãnh thổ rộng (hoạt động trên tập các máy tính đ−ợc kết nối), đa ng−ời dùng, có năng lực cao về tính toán và l−u trữ. Dự án nói trên thành công ở mức độ hết sức khiêm tốn và ng−ời ta đã biết đến một số khiếm khuyết khó khắc phục của Multics. Năm1969, Ken Thompson, một chuyên viên tại phòng thí nghiệm Bell, ng−ời đã tham gia dự án Multics, cùng Dennics Richie viết lại hệ điều hành đa-bài toán trên máy PDP-7 với tên là UNICS (UNiplexed Information and Computing Service) từ một câu gọi đùa của một đồng nghiệp. Trong hệ điều hành UNICS, một số khởi thảo đầu tiên về Hệ thống tập tin đã đ−ợc Ken Thompson và Dennis Ritchie thực hiện. Đến năm 1970 hệ điều hành đ−ợc viết trên assembler cho máy PDP-11/20 và mang tên là UNIX. 10
  11. Simpo PDF Merge and Split Unregistered Version - Năm 1973, Riche và Thompson viết lại nhân của hệ điều hành UNIX trên ngôn ngữ C, và hệ điều hành đã trở nên dễ dàng cài đặt tới các loại máy tính khác nhau; tính chất nh− thế đ−ợc gọi là tính khả chuyển (portable) của UNIX. Tr−ớc đó, khoảng năm 1971, hệ điều hành đ−ợc thể hiện trên ngôn ngữ B (mà dựa trên ngôn ngữ B, Ritche đã phát triển thành ngôn ngữ C). Hãng AT&T phổ biến ch−ơng trình nguồn UNIX tới các tr−ờng đại học, các công ty th−ơng mại và chính phủ với giá không đáng kể. Năm 1982, hệ thống UNIX-3 là bản UNIX th−ơng mại đầu tiên của AT&T. Năm 1983, AT&T giới thiệu Hệ thống UNIX-4 phiên bản thứ nhất trong đó đã có trình soạn thảo vi, th− viện quản lý màn hình đ−ợc phát triển từ Đại học Tổng hợp California, Berkley. Giai đoạn 1985-1987, UNIX-5 phiên bản 2 và 3 t−ơng ứng đ−ợc đ−a ra vào các năm 1985 và 1987. Trong giai đoạn này, có khoảng 100000 bản UNIX đã đ−ợc phổ biến trên thế giới, cài đặt từ máy vi tính đến các hệ thống lớn. Đầu thập kỷ 1990. UNIX-5 phiên bản 4 đ−ợc đ−a ra nh− là một chuẩn của UNIX. Đây là sự kết hợp của các bản sau: AT&T UNIX-5 phiên bản 3, Berkley Software Distribution (BSD), XENIX của MicroSoft SUN OS Trong thời gian gần đây (khoảng năm 1997) một số phiên bản mới của UNIX đ−ợc giới thiệu và phổ biến trên Internet. Có thể tìm thấy các nội dung liên quan tại địa chỉ website Các nhóm nhà cung cấp khác nhau về UNIX đang hoạt động trong thời gian hiện nay đ−ợc kể đến nh− sau: Unix International (viết tắt là UI). UI là một tổ chức gồm các nhà cung cấp thực hiện việc chuyển nh−ợng hệ thống UNIX-5 và cung cấp bản AT&T theo các nhu cầu và thông báo phát hành mới, chẳng hạn nh− điều chỉnh bản quyền. Giao diện đồ họa ng−ời dùng là Open Look. Open Software Foundation (OSF). OSF đ−ợc hỗ trợ bởi IBM, DEC, HP theo h−ớng phát triển một phiên bản của Unix nhằm tranh đua với hệ thống UNIX-5 phiên bản 4. Phiên bản này có tên là OSF/1 với giao diện đồ họa ng−ời dùng đ−ợc gọi là MOTIF. Free SoftWare Foundation: một tổ chức chủ tr−ơng phát hành một dòng của UNIX mã nguồn mở, miễn phí: đó là hệ điều hành Linux. Bảng sau đây liệt kê một số cài đặt UNIX khá phổ biến (th−ờng thấy có chữ X ở cuối tên gọi của Hệ điều hành): Tên hệ Nhà cung cấp Nền phát triển AIX International Business Machines AT&T System V A/UX Apple Computer AT&T System V Dynix Sequent BSD (Berkeley SoftWare Distribution) HP-UX Hewlett-Packard BSD 11
  12. Simpo PDF Merge and Split Unregistered Version - Irix Silicon Graphics AT&T System V Linux Free SoftWare Foundation NextStep Next BSD OSF/1 Digital Equipment Corporation BSD SCO UNIX Santa Cruz Operation AT&T System V Solaris Sun Microsystems AT&T System V SunOS Sun Microsystems BSD UNIX Ultrix Digital Equipment Corporation BSD UNIX Unicos Cray AT&T System V UnixWare Novell AT&T System V XENIX MicroSoft AT&T System III-MS D−ới đây liệt kê một số đặc tr−ng của hệ điều hành UNIX: Hệ điều hành đ−ợc viết trên ngôn ngữ bậc cao; bởi vậy, rất dễ đọc, dễ hiểu, dễ thay đổi để cài đặt trên loại máy mới (tính dễ mang chuyển, nh− đã nói), Có giao diện ng−ời dùng đơn giản đủ năng lực cung cấp các dịch vụ mà ng−ời dùng mong muốn (so sánh với các hệ điều hành có từ tr−ớc đó thì giao diện của UNIX là một tiến bộ v−ợt bậc), Thỏa mãn nguyên tắc xây dựng các ch−ơng trình phức tạp từ những ch−ơng trình đơn giản hơn: tr−ớc hết có các môđun cơ bản nhất của nhân sau đó phát triển để có toàn bộ hệ điều hành, Sử dụng duy nhất một hệ thống File có cấu trúc cho phép dễ dàng bảo quản và sử dụng hiệu quả, Sử dụng phổ biến một dạng đơn giản trình bày nội tại của File nh− một dòng các byte cho phép dễ dàng khi viết các ch−ơng trình ứng dụng truy nhập, thao tác với các dữ liệu trong File, Có kết nối đơn giản với thiết bị ngoại vi: các file thiết bị đã đ−ợc đặt sẵn trong Hệ thống File tạo ra một kết nối đơn giản giữa ch−ơng trình ng−ời dùng với các thiết bị ngoại vi, Là hệ điều hành đa ng−ời dùng, đa tiến trình, trong đó mỗi ng−ời dùng có thể thực hiện các tiến trình của mình một cách độc lập. Mọi thao tác vào - ra của hệ điều hành đ−ợc thực hiện trên hệ thống File: mỗi thiết bị vào ra t−ơng ứng với một file. Ch−ơng trình ng−ời dùng làm việc với file đó mà không cần quan tâm cụ thể tên file đó đ−ợc đặt cho thiết bị nào trong hệ thống. Che khuất cấu trúc máy đối với ng−ời dùng, đảm bảo tính độc lập t−ơng đối của ch−ơng trình đối với dữ liệu và phần cứng, tạo điều kiện thuận lợi hơn cho ng−ời lập trình khi viết các ch−ơng trình chạy UNIX với các điều kiện phần cứng hoàn toàn khác biệt nhau. 12
  13. Simpo PDF Merge and Split Unregistered Version - 1.1.3. Giới thiệu sơ bộ về Linux Linus Tovalds (một sinh viên Phần lan) đã đ−a ra phiên bản đầu tiên của hệ điều hành Linux vào tháng 8 năm 1991. Linus Tovalds đã xây dựng hệ điều hành Linux dựa trên một phiên bản nhỏ của UNIX có tên Minix (Minix do một chuyên gia hàng đầu về hệ điều hành là Giáo s− Andrew S. Tanenbaum xây dựng) theo h−ớng hoạt động trên máy tính cá nhân. Từ thời điểm đó, theo t− t−ởng GNU, hàng nghìn chuyên gia trên toàn thế giới đã tham gia vào quá trình phát triển Linux và vì vậy Linux ngày càng đáp ứng nhu cầu của ng−ời dùng. Có thể kể ra một số đặc điểm sau đây của hệ điều hành Linux hiện tại: Linux t−ơng thích với nhiều hệ điều hành nh− DOS, MicroSoft Windows : Có thể cài Linux cùng với các hệ điều hành khác trên cùng một ổ cứng: Linux có thể truy nhập đến các file của các hệ điều hành cùng một ổ đĩa. Linux cho phép chạy mô phỏng các ch−ơng trình thuộc các hệ điều hành khác. Do giữ đ−ợc chuẩn của UNIX nên sự chuyển đổi giữa Linux và các hệ UNIX khác là dễ dàng. Linux là một hệ điều hành UNIX tiêu biểu: đa ng−ời dùng, đa ch−ơng trình và đa xử lý. Linux có giao diện đồ hoạ (GUI) qua X-Window. Linux hỗ trợ nhiều giao thức mạng. Linux còn hỗ trợ tính thời gian thực. Linux khá mạnh và chạy rất nhanh ngay cả khi nhiều quá trình hoặc nhiều cửa sổ. Linux đ−ợc cài đặt trên nhiều chủng loại máy tính khác nhau: PC, mini và việc cài đặt khá thuận lợi song ch−a xuất hiện trên máy tính lớn (mainframe). Linux ngày càng đ−ợc hỗ trợ bởi các phần mềm ứng dụng: soạn thảo, quản lý mạng, quản trị cơ sở dữ liệu, bảng tính v.v. Linux hỗ trợ tốt cho tính toán song song và máy tính cụm (PC-cluster) là một h−ớng nghiên cứu triển khai ứng dụng nhiều triển vọng hiện nay. Là một hệ điều hành với mã nguồn mở, đ−ợc phát triển qua Free SoftWare Foundation nên Linux phát triển nhanh và là một hệ điều hành đ−ợc quan tâm nhiều nhất trên thế giới hiện nay. Linux là một hệ điều hành hỗ trợ đa ngôn ngữ một cách toàn diện nhất. Do Linux cho phép hỗ trợ các bộ mã chuẩn từ 16 bit trở lên (trong đó có các bộ mã Unicode, ISO10646) cho nên việc bản địa hóa trên Linux là triệt để nhất trong các hệ điều hành. Tuy nhiên cũng còn một số khó khăn làm cho Linux ch−a thực sự trở thành một hệ điều hành phổ dụng, trong đó có thể kể đến một số khó khăn nh− sau: Khó khăn khi cài đặt Linux và khả năng t−ơng thích của Linux với một số loại thiết bị phần cứng còn thấp do ch−a có các trình điều khiển cho nhiều thiết bị, Phần mềm ứng dụng chạy trên nền Linux tuy đã phong phú song so với các hệ điều hành khác nh− MS Windows thì vẫn còn có khoảng cách. Với sự hỗ trợ của nhiều công ty Tin học hàng đầu (IBM, SUN, HP ) và sự tham gia phát triển của hàng vạn chuyên gia trên toàn thế giới, các khó khăn của Linux chắc chắn sẽ nhanh chóng đ−ợc khắc phục. Chính vì lẽ đó đã hình thành một số nhà cung 13
  14. Simpo PDF Merge and Split Unregistered Version - cấp Linux trên thế giới. Bảng d−ới đây là tên của một số nhà cung cấp Linux có tiếng nhất và địa chỉ website của họ. Đáng chú ý nhất là Red Hat Linux và Red Flag Linux. Red Hat đ−ợc coi là lâu đời và tin cậy, còn Red Flag là một công ty Linux của Trung quốc, có quan hệ với cộng đồng Linux Việt nam và chúng ta có thể học hỏi một cách trực tiếp kinh nghiệm cho quá trình đ−a Linux vào Việt nam. Tên công ty Địa chỉ website Caldera OpenLinux www.caldera.com Corel Linux www.corel.com Debian GNU/Linux www.debian.com Linux Mandrake www.mandrake.com Red Hat Linux www.redhat.com Red Flag Linux www.redflag-linux.com Slackware Linux www.slackware.com SuSE Linux www.suse.com TurboLinux www.turbolinux.com 1.2. Sơ bộ về các thành phần của Linux Hệ điều hành Linux đ−ợc chia thành 4 thành phần nh− sau: Nhân (system kernel), Shell, Hệ thống tập tin (File system), Các tiện ích (utilities) hay là hệ thống lệnh của Linux. Tiện ích chính là lệnh đã có sẵn trong hệ điều hành (d−ới đây tiện ích đ−ợc coi là lệnh th−ờng trực). Nội dung chính yếu của cuốn sách này giới thiệu chi tiết về một số lệnh thông dụng nhất của Linux. Hệ thống tập tin sẽ đ−ợc giới thiệu trong ch−ơng 3. Trong các ch−ơng sau của cuốn sách đề cập tới nhiều nội dung liên quan đến nhân và shell, song ngay sau đây thì một số nét sơ bộ về chúng sẽ đ−ợc giới thiệu. 1.2.1. Sơ bộ về nhân Nhân (còn đ−ợc gọi là hệ lõi) của Linux, là một bộ các môdun ch−ơng trình có vai trò điều khiển các thành phần của máy tính, phân phối các tài nguyên cho ng−ời dùng (các tiến trình ng−ời dùng). Nhân chính là cầu nối giữa ch−ơng trình ứng dụng với phần cứng. Ng−ời dùng sử dụng bàn phím gõ nội dung yêu cầu của mình và yêu cầu đó đ−ợc nhân gửi tới shell: Shell phân tích lệnh và gọi các ch−ơng trình t−ơng ứng với lệnh để thực hiện. Một trong những chức năng quan trọng nhất của nhân là giải quyết bài toán lập lịch, tức là hệ thống cần phân chia CPU cho nhiều tiến trình hiện thời cùng tồn tại. Đối với Linux, số l−ợng tiến trình có thể lên tới con số hàng nghìn. Với số l−ợng tiến trình đồng thời nhiều nh− vậy, các thuật toán lập lịch cần phải đủ hiệu quả: Linux th−ờng lập lịch theo chế độ Round Robin (RR) thực hiện việc luân chuyển CPU theo l−ợng tử thời gian. Thành phần quan trọng thứ hai trong nhân là hệ thống các môđun ch−ơng trình (đ−ợc gọi là lời gọi hệ thống) làm việc với hệ thống tập tin. Linux có hai cách thức 14
  15. Simpo PDF Merge and Split Unregistered Version - làm việc với các tập tin: làm việc theo byte (kí tự) và làm việc theo khối. Một đặc điểm đáng chú ý là việc tập tin trong Linux có thể đ−ợc nhiều ng−ời cùng truy nhập tới nên các lời gọi hệ thống làm việc với tập tin cần đảm bảo việc tập tin đ−ợc truy nhập theo quyền và đ−ợc chia xẻ cho ng−ời dùng. 1.2.2. Sơ bộ về shell Một số nội dung chi tiết về shell (còn đ−ợc gọi là hệ vỏ) trong Linux đ−ợc trình bày trong ch−ơng "Lập trình trên shell". Những nội dung trình bày d−ới đây cho chúng ta một cách nhìn sơ bộ về shell và vai trò của nó trong hoạt động chung của hệ điều hành. Ng−ời dùng mong muốn máy tính thực hiện một công việc nào đó thì cần gõ lệnh t−ơng ứng thể hiện yêu cầu của mình để hệ thống đáp ứng yêu cầu đó. Shell là bộ dịch lệnh và hoạt động nh− một kết nối trung gian giữa nhân với ng−ời dùng: Shell nhận dòng lệnh do ng−ời dùng đ−a vào; và từ dòng lệnh nói trên nhân tách ra các bộ phận để nhận đ−ợc một hay một số lệnh t−ơng ứng với các đoạn văn bản có trong dòng lệnh. Một lệnh bao gồm tên lệnh và tham số: từ đầu tiên là tên lệnh, các từ tiếp theo (nếu có) là các tham số. Tiếp theo, shell sử dụng nhân để khởi sinh một tiến trình mới (khởi tạo tiến trình) và sau đó, shell chờ đợi tiến trình con này tiến hành, hoàn thiện và kết thúc. Khi shell sẵn sàng tiếp nhận dòng lệnh của ng−ời dùng, một dấu nhắc shell (còn gọi là dấu nhắc nhập lệnh) xuất hiện trên màn hình. Linux có hai loại shell phổ biến là: C-shell (dấu nhắc %), Bourne-shell (dấu nhắc $) và một số shell phát triển từ các shell nói trên (chẳng hạn, TCshell - tcsh với dấu nhắc ngầm định > phát triển từ C-shell và GNU Bourne - bash với dấu nhắc bash # phát triển từ Bourne-shell). Dấu mời phân biệt shell nói ở trên không phải hoàn toàn rõ ràng do Linux cho phép ng−ời dùng thay đổi lại dấu nhắc shell nhờ việc thay giá trị các biến môi tr−ờng PS1 và PS2. Trong cuốn sách này, chúng ta sử dụng kí hiệu "hàng rào #" để biểu thị dấu nhắc shell. C-shell có tên gọi nh− vậy là do cách viết lệnh và ch−ơng trình lệnh Linux tựa nh− ngôn ngữ C. Bourne-shell mang tên tác giả của nó là Steven Bourne. Một số lệnh trong C-shell (chẳng hạn lệnh alias) không còn có trong Bourne-shell và vì vậy để nhận biết hệ thống đang làm việc với shell nào, chúng ta gõ lệnh: # alias Nếu một danh sách xuất hiện thì shell đang sử dụng là C-shell; ng−ợc lại, nếu xuất hiện thông báo "Command not found" thì shell đó là Bourne-shell. Lệnh đ−ợc chia thành 3 loại lệnh: Lệnh th−ờng trực (có sẵn của Linux). Tuyệt đại đa số lệnh đ−ợc giới thiệu trong cuốn sách này là lệnh th−ờng trực. Chúng bao gồm các lệnh đ−ợc chứa sẵn trong shell và các lệnh th−ờng trực khác. Tập tin ch−ơng trình ngôn ngữ máy: chẳng hạn, ng−ời dùng viết trình trên ngôn ngữ C qua bộ dịch gcc (bao gồm cả trình kết nối link) để tạo ra một ch−ơng trình trên ngôn ngữ máy. Tập tin ch−ơng trình shell (Shell Scrip). Khi kết thúc một dòng lệnh cần gõ phím ENTER để shell phân tích và thực hiện lệnh. 15
  16. Simpo PDF Merge and Split Unregistered Version - 1.3. Giới thiệu về việc sử dụng lệnh trong Linux Nh− đã giới thiệu ở phần trên, Linux là một hệ điều hành đa ng−ời dùng, đa nhiệm, đ−ợc phát triển bởi hàng nghìn chuyên gia Tin học trên toàn thế giới nên hệ thống lệnh cũng ngày càng phong phú; đến thời điểm hiện nay (năm 2000) Linux có khoảng hơn một nghìn lệnh. Tuy nhiên chỉ có khoảng vài chục lệnh là thông dụng nhất đối với ng−ời dùng. Cuốn sách này cũng hạn chế giới thiệu khoảng vài chục lệnh đó. Chúng ta đừng e ngại về số l−ợng lệnh đ−ợc giới thiệu chỉ chiếm một phần nhỏ trong tập hợp lệnh bởi vì đây là những lệnh thông dụng nhất và chúng cung cấp một phạm vi ứng dụng rộng lớn, đủ thỏa mãn yêu cầu của chúng ta. Cũng nh− đã nói ở trên, ng−ời dùng làm việc với máy tính thông qua việc sử dụng trạm cuối: ng−ời dùng đ−a yêu cầu của mình bằng cách gõ "lệnh" từ bàn phím và giao cho hệ điều hành xử lý. Khi cài đặt Linux lên máy tính cá nhân thì máy tính cá nhân vừa đóng vai trò trạm cuối, vừa đóng vai trò máy tính xử lý. Dạng tổng quát của lệnh Linux có thể đ−ợc viết nh− sau: # [ ] ↵ trong đó: Tên lệnh là một dãy ký tự, không có dấu cách, biểu thị cho một lệnh của Linux hay một ch−ơng trình. Ng−ời dùng cần hệ điều hành đáp ứng yêu cầu gì của mình thì phải chọn đúng tên lệnh. Tên lệnh là bắt buộc phải có khi gõ lệnh. Các tham số có thể có hoặc không có, đ−ợc viết theo quy định của lệnh mà chúng ta sử dụng, nhằm cung cấp thông tin về các đối t−ợng mà lệnh tác động tới. ý nghĩa của các dấu [, , ] đ−ợc giải thích ở phần quy tắc viết lệnh. Các tham số đ−ợc phân ra thành hai loại: tham số khóa và tham số vị trí. Tham số vị trí th−ờng là tên tập tin, th− mục và th−ờng là các đối t−ợng chịu sự tác động của lệnh. Khi gõ lệnh, tham số vị trí đ−ợc thay bằng những đối t−ợng mà ng−ời dùng cần h−ớng tác động tới. Tham số khóa chính là những tham số điều khiển hoạt động của lệnh theo các tr−ờng hợp riêng. Trong Linux, tham số khóa th−ờng bắt đầu bởi dấu trừ "-" hoặc hai dấu trừ liên tiếp " ". Khi gõ lệnh, cũng giống nh− tên lệnh, tham số khóa phải đ−ợc viết chính xác nh− trình bày trong mô tả lệnh. Một lệnh có thể có một số hoặc rất nhiều tham số khóa. Phụ thuộc vào yêu cầu cụ thể của mình, ng−ời dùng có thể chọn một hoặc một số các tham số khóa khi gõ lệnh. Trong các mô tả lệnh, phổ biến xuất hiện các tùy chọn lệnh mà đ−ợc viết tắt là tùy-chọn. Các tùy chọn lệnh (hầu hết là các tham số khóa) cho phép điều chỉnh hoạt động của lệnh trong Linux, làm cho lệnh có tính phổ dụng cao. Các tuỳ chọn lệnh cho phép lệnh có thể đáp ứng ý muốn của ng−ời dùng đối với hầu hết (tuy không phải lúc nào cũng vậy) các tình huống đặt ra cho thao tác ứng với lệnh. Ký hiệu "↵" biểu thị việc gõ phím hết dòng . Để kết thúc một yêu cầu, ng−ời dùng nhất thiết phải gõ phím "↵". Ví dụ, khi ng−ời dùng gõ lệnh xem thông tin về các tập tin: # ls -l g*↵ trong lệnh này: 16
  17. Simpo PDF Merge and Split Unregistered Version - ls là tên lệnh thực hiện việc đ−a danh sách các tên tập tin/ th− mục con trong một th− mục, -l là tham số khóa, cho biết yêu cầu xem đầy đủ thông tin về các đối t−ợng hiện ra. Chú ý, trong tham số khóa chữ cái (chữ "l") phải đi ngay sau dấu trừ "- ". T−ơng ứng với lệnh ls còn có các tham số khóa -a, -L, và chúng cũng là các tùy chọn lệnh. Trong một số tham số khóa có nhiều chữ cái thay cho một dấu "-" là hai dấu " " ở đầu tham số. Ví dụ, nh− tr−ờng hợp tham số file của lệnh date. g* là tham số vị trí chỉ rõ ng−ời dùng cần xem thông tin về các tập tin có tên gọi bắt đầu là chữ cái "g". Trong cuốn sách này, chúng ta quy −ớc rằng khi viết một lệnh (trong mô tả lệnh và gõ lệnh) thì không cần phải viết dấu "↵" ở cuối dòng lệnh đó, song luôn ghi nhớ rằng phím ENTER ("↵") là bắt buộc khi gõ lệnh. L−u ý: Linux (và UNIX nói chung) đ−ợc xây dựng trên ngôn ngữ lập trình C, vì vậy khi gõ lệnh phải phân biệt chữ th−ờng với chữ hoa. Ngoại trừ một số ngoại lệ, trong Linux chúng ta thấy phổ biến là: Các tên lệnh là chữ th−ờng, Một số tham số có thể là chữ th−ờng hoặc chữ hoa (ví dụ, trong lệnh date về thời gian hệ thống thì hai tham số -r và -R có ý nghĩa hoàn toàn khác nhau). Tên các biến môi tr−ờng cũng th−ờng dùng chữ hoa. Trong cuốn sách này, tại những dòng văn bản diễn giải, chúng tôi viết tên lệnh, các tham số khóa bằng kiểu chữ không chân, đậm nh− date, -R, -r Linux phân biệt siêu ng−ời dùng (tiếng Anh là superuser hoặc root, còn đ−ợc gọi là ng−ời quản trị hay ng−ời dùng tối cao hoặc ng−ời dùng cao cấp) với ng−ời dùng thông th−ờng. Trong tập hợp lệnh của Linux, có một số lệnh mà chỉ siêu ng−ời dùng mới đ−ợc phép sử dụng còn ng−ời dùng thông th−ờng thì không đ−ợc phép (ví dụ nh− lệnh adduser thực hiện việc bổ sung thêm ng−ời dùng). Mặt khác trong một số lệnh, với một số tham số khóa thì chỉ siêu ng−ời dùng đ−ợc phép dùng, còn với một số tham số khác thì mọi ng−ời dùng đều đ−ợc phép (ví dụ nh− lệnh passwd thay đổi mật khẩu ng−ời dùng). Một dòng lệnh có thể có nhiều hơn một lệnh, trong đó lệnh sau đ−ợc ngăn cách bởi với lệnh đi ngay tr−ớc bằng dấu ";" hoặc dấu "|". Ví dụ về một số dòng lệnh dạng này: # ls -l; date # head Filetext | sort >temp Ch−ơng về lập trình shell sẽ giới thiệu chi tiết hơn về các cách thức nói trên. Sau khi ng−ời dùng gõ xong dòng lệnh, shell tiếp nhận dòng lệnh này và phân tích nội dung văn bản của lệnh. Nếu lệnh đ−ợc gõ đúng thì lệnh đ−ợc thực hiện; ng−ợc lại, trong tr−ờng hợp có sai sót khi gõ lệnh thì shell sẽ thông báo về sai sót và dấu nhắc shell lại hiện ra để chờ lệnh tiếp theo của ng−ời dùng. Về phổ biến, nếu nh− sau khi ng−ời dùng gõ lệnh, không thấy thông báo sai sót hiện ra thì có nghĩa lệnh đã đ−ợc thực hiện một cách bình th−ờng. 17
  18. Simpo PDF Merge and Split Unregistered Version - Tr−ớc khi đi vào nội dung chi tiết các lệnh thông dụng, chúng ta xem xét về một số quy định dùng trong mô tả lệnh đ−ợc trình bày trong cuốn sách này. 1.3.1. Các quy −ớc khi viết lệnh Trong cuốn sách này, các lệnh đ−ợc trình bày theo một bộ quy tắc cú pháp nhất quán. Bộ quy tắc này cho phép phân biệt trong mỗi lệnh các thành phần nào là bắt buộc phải có, các thành phần nào có thể có hoặc không D−ới đây là nội dung của các quy tắc trong bộ quy tắc đó. Tên lệnh là bắt buộc, phải là từ đầu tiên trong bất kỳ lệnh nào, phải đ−ợc gõ đúng nh− khi mô tả lệnh. Tên khái niệm đ−ợc nằm trong cặp dấu ngoặc quan hệ ( ) biểu thị cho một lớp đối t−ợng và là tham số bắt buộc phải có. Khi gõ lệnh thì tên khái niệm (có thể đ−ợc coi là "tham số hình thức") phải đ−ợc thay thế bằng một từ (th−ờng là tên tập tin, tên th− mục và có thể đ−ợc coi là "tham số thực sự") để chỉ đối t−ợng liên quan đến thao tác của lệnh. Ví dụ, mô tả cú pháp của lệnh more xem nội dung tập tin là # more Thì từ more là tên lệnh, còn là tham số trong đó tập-tin là tên khái niệm và là tham số bắt buộc phải có. Lệnh này có tác động là hiện lên màn hình theo cách thức cuộn nội dung của tập tin với tên đã chỉ trong lệnh. Để xem nội dung tập tin có tên là temp, ng−ời dùng gõ lệnh: # more temp Nh− vậy, tên lệnh more đ−ợc gõ đúng nh− mô tả cú pháp (cả nội dung và vị trí) còn "tập-tin" đã đ−ợc thay thế bằng từ "temp" là tên tập tin mà ng−ời dùng muốn xem nội dung. Các bộ phận nằm giữa cặp dấu ngoặc vuông [ và ] là có thể gõ hoặc không gõ cũng đ−ợc. Ví dụ, mô tả cú pháp của lệnh halt là # halt [tùy-chọn] Với các tùy chọn là -w, -n, -d, -f, -i mã mỗi tùy chọn cho một cách thức hoạt động khác nhau của lệnh halt. Lệnh halt có tác động chính là làm ngừng hoạt động của hệ điều hành, tuy nhiên khi ng−ời dùng muốn có một cách hoạt động nào đó của lệnh này thì sẽ chọn một (hoặc một số) tuỳ chọn lệnh t−ơng ứng. Một số cách gõ lệnh halt của ng−ời dùng nh− sau đây là đúng cú pháp: # halt # halt -w # halt -n # halt -f Các giá trị có trong cặp { và } trong đó các bộ phận cách nhau bằng dấu sổ đứng "|" cho biết cần chọn một và chỉ một trong các giá trị nằm giữa hai dấu ngoặc đó. 18
  19. Simpo PDF Merge and Split Unregistered Version - Ví dụ, khi giới thiệu về tùy chọn lệnh của lệnh tail xem phần cuối nội dung của tập tin, chúng ta thấy: -f, follow[={tên | đặc tả}] Nh− vậy, sau tham số khóa follow, nếu xuất hiện thêm dấu bằng "=" thì phải có hoặc tên hoặc đặc tả. Đây là tr−ờng hợp các chọn lựa "loại trừ nhau". Dấu ba chấm thể hiện việc lặp lại thành phần cú pháp đi ngay tr−ớc dấu này, việc lặp lại đó có thể từ không đến nhiều lần (không kể chính thành phần cú pháp đó). Cách thức này th−ờng đ−ợc dùng với các tham số nh− tên tập tin. Ví dụ, mô tả lệnh chown nh− sau: chown [tùy-chọn] [,[nhóm]] Nh− vậy trong lệnh chown có thể không có hoặc có một số tùy chọn lệnh và có từ một đến nhiều tên tập tin. Các bộ phận trong mô tả lệnh, nếu không nằm trong các cặp dấu [ ], có nghĩa là thay bằng tên tập tin cần xem nội dung, nếu kết hợp thêm dấu ngoặc vuông [ và ], tức là có dạng sau (chính là dạng tổng quát của lệnh more): # more [ ] thì nói chung phải có trong lệnh more, tuy nhiên trong một số tr−ờng hợp có thể bỏ qua tham số tập-tin. L−u ý: Đối với nhiều lệnh, cho phép ng−ời dùng gõ tham số khóa kết hợp t−ơng ứng với tùy-chọn trong mô tả lệnh. Tham số khóa kết hợp đ−ợc viết theo cách - , trong đó xâu-kí-tự gồm các chữ cái trong tham số khóa. Ví dụ, trong mô tả lệnh in lịch cal: cal [tùy-chọn] [tháng [năm] ] có ba tham số khóa là -m, -j, -y. Khi gõ lệnh có thể gõ một tổ hợp nào đó từ ba tham số khóa này để đ−ợc tình huống sử dụng lệnh theo ý muốn. Chẳng hạn, nếu gõ lệnh cal -mj 3 thì lệnh cal thực hiện theo điều khiển của hai tham số khóa -m (chọn Thứ Hai là ngày đầu tuần, thay vì cho ngầm định là Chủ Nhật) và -j (hiển thị ngày trong tháng d−ới dạng số ngày trong năm kể từ đầu năm). Trong một số lệnh, có hai tham số khóa cùng t−ơng ứng với một tình huống thực hiện lệnh, trong đó một tham số gồm một kí tự còn tham số kia lại là một từ. Tham số dài một từ là tham số chuẩn của lệnh, còn tham số một kí tự là cách viết ngắn gọn. Tham số chuẩn dùng đ−ợc trong mọi Linux và khi gõ phải có đủ kí tự trong từ. 19
  20. Simpo PDF Merge and Split Unregistered Version - Ví dụ, khi mô tả lệnh date có tùy chọn: -d, date=STRING nh− vậy hai tham số -d và date=STRING có cùng ý nghĩa. Ngoài những quy −ớc trên đây, ng−ời dùng đừng quên một quy định cơ bản là cần phân biệt chữ hoa với chữ th−ờng khi gõ lệnh. Làm đơn giản thao tác gõ lệnh: Việc sử dụng bàn phím để nhập lệnh tuy không phải là một công việc nặng nề, song Linux còn cho phép ng−ời dùng sử dụng một số cách thức để thuận tiện hơn khi gõ lệnh. Một số trong những cách thức đó là: Sử dụng việc khôi phục dòng lệnh, Sử dụng các phím đặc biệt, Sử dụng các kí hiệu thay thế và phím , Sử dụng thay thế alias, Sử dụng ch−ơng trình lệnh. Cách thức sử dụng thay thế alias và ch−ơng trình lệnh (shell script) sẽ đ−ợc giới thiệu chi tiết trong các ch−ơng liên quan. D−ới đây, chúng ta xem xét cách thức sử dụng việc khôi phục dòng lệnh, phím đặc biệt và kí hiệu thay thế. Việc khôi phục dòng lệnh: Linux cung cấp một cách thức đặc biệt là khả năng khôi phục lệnh. Tại dấu nhắc shell: Ng−ời dùng sử dụng các phím mũi tên lên/xuống (↑/↓) trên bàn phím để nhận lại các dòng lệnh đã đ−ợc đ−a vào tr−ớc đây tại dấu nhắc shell, chọn một trong các dòng lệnh đó và biên tập lại nội dung dòng lệnh theo đúng yêu cầu mới của mình. Ví dụ, ng−ời dùng vừa gõ xong dòng lệnh: # ls -l tenfile* sau đó muốn gõ lệnh ls -l tentaptin thì tại dấu nhắc của shell, ng−ời dùng sử dụng các phím di chuyển lên (↑) hoặc xuống (↓) để nhận đ−ợc: # ls -l tenfile* dùng các phím tắt để di chuyển, xoá kí tự (xem phần sau) để có đ−ợc: # ls -l ten và gõ tiếp các kí tự "taptin" để nhận đ−ợc: # ls -l tentaptin chính là kết quả mong muốn. Trong tr−ờng hợp số l−ợng kí tự thay thế là rất ít so với số l−ợng kí tự của toàn dòng lệnh thì hiệu quả của cách thức này rất cao. L−u ý: Việc nhấn liên tiếp các phím di chuyển lên (↑) hoặc xuống (↓) cho phép ng−ời dùng nhận đ−ợc các dòng lệnh đã gõ từ tr−ớc mà không chỉ dòng lệnh mới đ−ợc gõ. Cách thức này t−ơng tự với cách thức sử dụng tiện ích DOSKEY trong hệ điều hành MS-DOS. 20
  21. Simpo PDF Merge and Split Unregistered Version - Một số phím đặc biệt khi gõ lệnh: Khi ng−ời dùng gõ lệnh có thể xẩy ra một số tình huống nh− sau: Dòng lệnh đang gõ có chỗ sai sót, không đúng theo yêu cầu của ng−ời dùng vì vậy cần phải sửa lại đôi chút nội dung trên dòng lệnh đó. Trong tr−ờng hợp đó cần sử dụng các phím đặc biệt (còn gọi là phím viết tắt hay phím tắt) để di chuyển, xoá bỏ, bổ sung vào nội dung dòng lệnh. Sau khi sử dụng cách thức khôi phục dòng lệnh, chúng ta nhận đ−ợc dòng lệnh t−ơng tự với lệnh cần gõ và sau đó sử dụng các phím tắt để hoàn thiện lệnh. D−ới đây giới thiệu các phím tắt và ý nghĩa của việc sử dụng chúng: • Nhấn phím → để di chuyển con trỏ sang bên phải một vị trí • Nhấn phím ← để di chuyển con trỏ sang bên trái một vị trí • Nhấn phím để xoá một từ bên trái con trỏ • Nhấn phím để xoá một từ bên phải con trỏ • Nhấn phím để di chuyển con trỏ sang bên phải một từ • Nhấn phím để di chuyển con trỏ sang bên trái một từ • Nhấn phím để di chuyển con trỏ về đầu dòng lệnh • Nhấn phím để di chuyển con trỏ về cuối dòng • Nhấn phím để xóa dòng lệnh Có thể dùng phím thay cho phím . Các kí hiệu mô tả nhóm tập tin và phím : Khi gõ lệnh thực sự nhiều tr−ờng hợp ng−ời dùng mong muốn một tham số trong lệnh không chỉ xác định một tập tin mà lại liên quan đến một nhóm các tập tin mà tên gọi của các tập tin trong nhóm có chung một tính chất nào đó. Trong những tr−ờng hợp nh− vậy, ng−ời dùng cần sử dụng các kí hiệu mô tả nhóm tập tin (wildcards), chúng ta gọi là kí hiệu mô tả nhóm (còn đ−ợc gọi là kí hiệu thay thế). Ng−ời ta sử dụng các kí tự *, ? và cặp hai dấu [ và ] để mô tả nhóm tập tin. Các kí tự này mang ý nghĩa nh− sau khi viết vào tham số tên tập tin thực sự: • "*" : là ký tự mô tả nhóm gồm mọi xâu kí tự (thay thế mọi xâu). Mô tả này cho một nhóm lớn nhất trong ba mô tả. • "?" : mô tả nhóm gồm mọi xâu với độ dài không quá 1 (thay thế một kí tự). Nhóm này là tập con của nhóm đầu tiên (theo kí tự "*"). • [xâu-kí-tự] : mô tả nhóm gồm mọi xâu có độ dài 1 là mỗi kí tự thuộc xâu nói trên. Mô tả này cho một nhóm có lực l−ợng bé nhất trong ba mô tả. Nhóm này là tập con của nhóm thứ hai (theo kí tự "?"). Khi gõ lệnh phải gõ cả hai dấu [ và ]. Một dạng khác của mô tả nhóm này là [ - ] nghĩa là giữa cặp dấu ngoặc có ba kí tự trong đó kí tự ở giữa là dấu nối (dấu -) thì cách viết này t−ơng đ−ơng với việc liệt kê mọi kí tự từ đến . Chẳng hạn, cách viết [a-d] t−ơng đ−ơng với cách viết [abcd]. 21
  22. Simpo PDF Merge and Split Unregistered Version - Ví dụ, giả sử khi muốn làm việc với tất cả các tập tin trong một th− mục nào đó, ng−ời dùng gõ * thay thế tham số tập-tin thì xác định đ−ợc các tên tập tin sau (chúng ta viết bốn tên tập tin trên một dòng): info-dir initlog.conf inittab lynx.cfg mail.rc mailcap minicom.users motd mtab mtools.conf services shadow shadow- shells smb.conf sysctl.conf syslog.conf temp termcap up2date.conf temp termcap Nếu ng−ời dùng gõ s* (để chỉ các tên có chữ cái đầu là s) thay thế tham số tập-tin thì xác định đ−ợc các tên tập tin sau: shadow shadow- shells sysctl.conf syslog.conf Nếu ng−ời dùng gõ [si]* (để chỉ các tên có chữ cái đầu là s hoặc i, chú ý dùng cả hai kí tự [ và ]) thay thế tham số tập-tin thì xác định các tên tập tin sau: info-dir initlog.conf inittab services shadow shadow- shells smb.conf sysctl.conf syslog.conf L−u ý: Nh− vậy, Linux (và UNIX nói chung) không chỉ sử dụng hai kí tự mô tả nhóm * và ? mà còn có cách thức sử dụng cặp kí tự [ và ]. Cần phân biệt cặp dấu [ và ] đ−ợc sử dụng khi ng−ời dùng gõ lệnh có ý nghĩa hoàn toàn khác với ý nghĩa của chúng khi đ−ợc sử dụng trong mô tả lệnh. Hơn thế nữa, Linux còn cung cấp cho ng−ời dùng cách thức sử dụng phím để hoàn thành nốt tên tập tin (tên th− mục) trong lệnh. Ví dụ, khi chúng ta gõ dòng lệnh # ls /u local b thì nó cũng t−ơng đ−ơng nh− gõ dòng lệnh (và đây chính là nội dung xuất hiện tại dấu nhắc shell): # ls /usr/local/bin với điều kiện trong th− mục /usr chỉ có th− mục local đ−ợc bắt đầu bởi chữ "l" và trong th− mục local cũng chỉ có th− mục bin đ−ợc bắt đầu bởi chữ "b". Trong tr−ờng hợp nếu nh− một kí tự ch−a đủ xác định, ng−ời dùng cần gõ thêm kí tự tiếp theo trong tên tập tin (tên th− mục) và nhấn phím để hoàn thành dòng lệnh. 1.3.2. Tiếp nối dòng lệnh Nh− đã l−u ý trên đây, một dòng lệnh có thể gồm một hoặc một số lệnh, mặt khác tham số của lệnh có thể là rất dài không thể trong khuôn khổ của một dòng văn bản đ−ợc. Khi gõ lệnh, nếu dòng lệnh quá dài, Linux cho phép ngắt dòng lệnh xuống dòng d−ới bằng cách thêm kí tự báo hiệu chuyển dòng " \ " tại cuối dòng; trong tr−ờng hợp đó, kí tự " \ " phải là ký tự cuối cùng thuộc dòng lệnh tr−ớc. 22
  23. Simpo PDF Merge and Split Unregistered Version - Ví dụ, # cd vsd\ thumuc thì dòng thứ hai là phần tiếp theo của dòng thứ nhất và kết hợp cả hai dòng này thực chất là một dòng lệnh Linux. 1.4. Trang Man (Man Page) Chúng ta có thể nói rằng Linux là một hệ điều hành rất phức tạp với hàng nghìn lệnh và mỗi lệnh lại có thể có tới vài hoặc vài chục tình huống sử dụng do chúng cho phép có nhiều tùy chọn lệnh. Để thuộc hết đ−ợc nội dung tất cả các lệnh của Linux là một điều hết sức khó khăn, có thể nói là không thể. Linux cho phép ng−ời dùng sử dụng cách thức gọi các trang Man để có đ−ợc các thông tin đầy đủ giới thiệu nội dung các lệnh. D−ới đây là một số nội dung về cách thức sử dụng trang Man. "Man" trong "trang Man" là từ viết tắt của "manual", đ−ợc coi là tài liệu trực tuyến trong Linux đã l−u trữ toàn bộ các lệnh có sẵn với các thông tin tham khảo khá đầy đủ cho phép ng−ời dùng có thể mở ra để nhận đ−ợc trợ giúp. Để mở trang Man của một lệnh, chúng ta sử dụng lệnh man của Linux và gõ: # man Nội dung của trang Man nói chung là không quá khó hiểu, song để hiểu hết đ−ợc nó cũng đòi hỏi không ít thời gian. Tuy nhiên, khi quên nội dung một lệnh nào đó thì cách tốt nhất là hãy sử dụng trang Man. Cấu trúc chung của một trang Man nh− sau: COMMAND(1) Linux Programmer's Manual COMMAND(1) NAME tên lệnh - khái quát tác dụng của lệnh SYNOPSIS cú pháp của lệnh DESCRIPTION mô tả cụ thể hơn về tác dụng của lệnh OPTIONS liệt kê các tùy chọn lệnh và tác dụng của chúng FILES liệt kê các tập tin mà lệnh sử dụng hoặc tham chiếu đến SEE ALSO liệt kê các lệnh, các tài liệu, , có liên quan đến lệnh REPORTING BUGS địa chỉ liên hệ nếu gặp lỗi khi sử dụng lệnh AUTHOR tên tác giả của lệnh 23
  24. Simpo PDF Merge and Split Unregistered Version - Ng−ời dùng thậm chí không nhớ chính xác tên lệnh. Linux còn có một cách thức hỗ trợ ng−ời dùng có thể nhanh chóng tìm đ−ợc lệnh cần sử dụng trong tr−ờng hợp chỉ nhớ những chữ cái đầu của tên lệnh, đó là cách thức sử dụng phím TAB. Trong cách thức này, ng−ời dùng cần nhớ một số chữ cái đầu tiên của tên lệnh. Có thể trình bày cách thức đó theo cú pháp sau đây: # Trong đó dãy-chữ-cái có từ một đến một vài chữ cái thuộc phần đầu của tên lệnh. Chú ý rằng, các chữ cái và hai phím phải đ−ợc gõ liên tiếp nhau. Kết hợp cách thức này với cách thức sử dụng lệnh man (với sự phong phú về tùy chọn của lệnh man) nhận đ−ợc một cách thức khá tuyệt vời trợ giúp ng−ời dùng. Ví dụ, muốn sử dụng lệnh history nh−ng lại không nhớ chính xác tên lệnh đ−ợc viết ra nh− thế nào mà chỉ nhớ nó đ−ợc bắt đầu bởi chữ h, hãy gõ chữ h đó tại dấu nhắc shell và nhấn phím TAB hai lần, sẽ thấy một danh sách các lệnh có chữ cái đầu tiên là h đ−ợc hiện ra trên màn hình: # h h2ph hboot help hexdump history hostname htdigest h2xs hcc helpme hf77 hltest hoststat htpasswd halt hcp helptool hinotes host hpcdtoppm hash head hexbin hipstopgm hostid hpftodit Nh− vậy, tất cả các lệnh có tên bắt đầu với chữ h đ−ợc hiển thị trên màn hình và cho phép ng−ời dùng có thể xác định đ−ợc lệnh cần quan tâm. Tr−ờng hợp tồn tại một số l−ợng lớn các lệnh có cùng chữ cái đầu tiên mà ng−ời dùng đã gõ, thay vì hiện hết mọi tên lệnh, hệ điều hành cho ra một thông báo hỏi ng−ời dùng có muốn xem toàn bộ các lệnh đó hay không. Ng−ời dùng đáp ứng thông báo đó tuỳ theo ý muốn của mình. Ví dụ, khi ng−ời dùng gõ nội dung nh− sau: # p thì hệ thống đáp lại là: There are 289 possibilities. Do you really wish to see them all? (y or n) Ng−ời dùng gõ phím "y" nếu muốn xem, hoặc gõ "n" nếu bỏ qua. Ng−ời dùng có thể gõ nhiều hơn một chữ cái ở đầu tên lệnh và điều đó cho phép giảm bớt số tên lệnh mà hệ thống tìm đ−ợc và hiển thị. Chẳng hạn, khi biết hai chữ cái đầu là "pw" và ng−ời dùng gõ: # pw thì hệ thống sẽ hiện ra danh sách các tên lệnh bắt đầu bởi "pw": pwck pwconv pwd pwdb_ chkpwd pwunconv 24
  25. Simpo PDF Merge and Split Unregistered Version - Trong tr−ờng hợp này, ng−ời dùng sẽ nhận biết đ−ợc tên lệnh đang cần tìm thuận tiện hơn. 25
  26. Simpo PDF Merge and Split Unregistered Version - Ch−ơng 2. lệnh thao tác với hệ thống 2.1. Quá trình khởi động Linux Quá trình cài đặt Linux đ−ợc trình bày trong phụ lục A của cuốn sách này. Trong phần này, chúng ta xem xét sơ bộ quá trình khởi động hệ điều hành Linux. Một trong những cách thức khởi động Linux phổ biến nhất là cách thức do ch−ơng trình LILO (LInux LOader) thực hiện. Ch−ơng trình LILO đ−ợc nạp lên đĩa của máy tính khi cài đặt hệ điều hành Linux. LILO đ−ợc nạp vào Master Boot Record của đĩa cứng hoặc vào Boot Sector tại phân vùng khởi động (trên đĩa cứng hoặc đĩa mềm). Giả sử máy tính của chúng ta đã cài đặt Linux và sử dụng LILO để khởi động hệ điều hành. LILO thích hợp với việc trên máy tính đ−ợc cài đặt một số hệ điều hành khác nhau và theo đó, LILO còn cho phép ng−ời dùng chọn lựa hệ điều hành để khởi động. Giai đoạn khởi động Linux tùy thuộc vào cấu hình LILO đã đ−ợc lựa chọn trong tiến trình cài đặt Linux. Trong tình huống đơn giản nhất, Linux đ−ợc khởi động từ đĩa cứng hay đĩa mềm khởi động. Quá trình khởi động Linux có thể đ−ợc mô tả theo sơ đồ sau: LILO Nhân init Theo sơ đồ này, LILO đ−ợc tải vào máy để thực hiện mà việc đầu tiên là đ−a nhân vào bộ nhớ trong và sau đó tải ch−ơng trình init để thực hiện việc khởi động Linux. Nếu cài đặt nhiều phiên bản Linux hay cài Linux cùng các hệ điều hành khác (trong các tr−ờng hợp nh− thế, mỗi phiên bản Linux hoặc hệ điều hành khác đ−ợc gán nhãn - label để phân biệt), thì thông báo sau đây đ−ợc LILO đ−a ra: LILO boot: cho phép nhập xâu là nhãn của một trong những hệ điều hành hiện có trên máy để khởi động nó. Tại thời điểm đó, ng−ời dùng cần gõ nhãn của hệ điều hành cần khởi động vào, ví dụ, gõ LILO boot: linux nếu chọn khởi động để làm việc trong Linux, hoặc gõ LILO boot: dos nếu chọn khởi động để làm việc trong MS-DOS, Windows. L−u ý: Nếu chúng ta không nhớ đ−ợc nhãn của hệ điều hành có trong máy để chọn, hãy gõ phím để đ−ợc LILO cho biết nhãn của các hệ điều hành. LILO boot: sẽ hiện ra danh sách các nhãn (ví dụ nh−): linux dos và hiện lại thông báo nói trên để ta gõ nhãn của hệ điều hành. LILO cũng cho phép đặt chế độ chọn ngầm định hệ điều hành để khởi động mà theo đó nếu chúng ta không có tác động gì sau thông báo chọn hệ điều hành thì LILO sẽ tự động chọn hệ điều hành ngầm định ra để khởi động. Nếu chúng ta không can thiệp vào các tập tin t−ơng ứng của trình LILO thì hệ điều hành Linux là hệ điều hành ngầm định. 26
  27. Simpo PDF Merge and Split Unregistered Version - Giả sử Linux đã đ−ợc chọn để khởi động. Khi init thực hiện, chúng ta sẽ thấy một chuỗi (khoảng vài chục) dòng thông báo cho biết hệ thống phần cứng đ−ợc Linux nhận diện và thiết lập cấu hình cùng với tất cả trình điều khiển phần mềm đ−ợc nạp khi khởi động. Quá trình init là quá trình khởi thủy, là cha của mọi quá trình. Tại thời điểm khởi động hệ thống init thực hiện vai trò đầu tiên của mình là chạy ch−ơng trình shell trong tập tin /etc/inittab và các dòng thông báo trên đây chính là kết quả của việc chạy ch−ơng trình shell đó. Sau khi ch−ơng trình shell nói trên đ−ợc thực hiện xong, quá trình ng−ời dùng đăng nhập (login) vào hệ thống đ−ợc tiến hành. 2.2. Thủ tục đăng nhập và các lệnh thoát khỏi hệ thống 2.2.1. Đăng nhập Sau khi hệ thống Linux (lấy Red Hat 6.2 làm ví dụ) khởi động xong, trên màn hình xuất hiện những dòng sau: Ret Hat Linux release 6.2 (Zoot) Kernel 2.2.14-5.0 on an i686 May1 login: Dòng thứ nhất và dòng thứ hai cho biết loại phiên bản Linux, phiên bản của nhân và kiến trúc phần cứng có trên máy, dòng thứ ba là dấu nhắc đăng nhập để ng−ời dùng thực hiện việc đăng nhập. Chú ý là các dòng trên đây có thể thay đổi chút ít tùy thuộc vào phiên bản Linux. Chúng ta có thể thay đổi các dòng hiển thị nh− trình bày trên đây bằng cách sửa đổi tập tin /etc/rc.d/rc.local nh− sau: Thay đoạn ch−ơng trình echo "" > /etc/issue echo "$R" >> /etc/issue echo "Kernel $(uname -r) on $a $SMP$(uname -m)" >> /etc/issue cp -f /etc/issue /etc/issue.net echo >> /etc/issue thành echo "" > /etc/issue echo "Thông báo muốn hiển thị" >> /etc/issue ví dụ sửa thành: echo "" > /etc/issue echo "This is my computer" >> /etc/issue thì trên màn hình đăng nhập sẽ có dạng sau: This is my computer hostname login: Tại dấu nhắc đăng nhập, hãy nhập tên ng−ời dùng (còn gọi là tên đăng nhập): đây là tên kí hiệu đã cung cấp cho Linux nhằm nhận diện một ng−ời dùng cụ thể. Tên 27
  28. Simpo PDF Merge and Split Unregistered Version - đăng nhập ứng với mỗi ng−ời dùng trên hệ thống là duy nhất, kèm theo một mật khẩu đăng nhập. May1 login: root Password: Khi nhập xong tên đăng nhập, hệ thống sẽ hiện ra thông báo hỏi mật khẩu và di chuyển con trỏ xuống dòng tiếp theo để ng−ời dùng nhập mật khẩu. Mật khẩu khi đ−ợc nhập sẽ không hiển thị trên màn hình và chính điều đó giúp tránh khỏi sự "nhòm ngó" của ng−ời khác. Nếu nhập sai tên đăng nhập hoặc mật khẩu, hệ thống sẽ đ−a ra một thông báo lỗi: May1 login: root Password: Login incorrect May1 login: Nếu đăng nhập thành công, ng−ời dùng sẽ nhìn thấy một số thông tin về hệ thống, một vài tin tức cho ng−ời dùng Lúc đó, dấu nhắc shell xuất hiện để ng−ời dùng bắt đầu phiên làm việc của mình. May1 login: root Password: Last login: Fri Oct 27 14:16:09 on tty2 root@may1 /root]# Dãy kí tự trong dòng cuối cùng chính là dấu nhắc shell. Trong dấu nhắc này, root là tên ng−ời dùng đăng nhập, may1 là tên máy và /root tên th− mục hiện thời (vì đây là ng−ời dùng root). Khi dấu nhắc shell xuất hiện trên màn hình thì điều đó có nghĩa là hệ điều hành đã sẵn sàng tiếp nhận một yêu cầu mới của ng−ời dùng. Dấu nhắc shell có thể khác với trình bày trên đây (Mục 2.8 sẽ cung cấp cách thức thay đổi dấu nhắc shell), nh−ng có thể hiểu nó là chuỗi kí tự bắt đầu một dòng có chứa trỏ chuột và luôn xuất hiện mỗi khi hệ điều hành hoàn thành một công việc nào đó. 2.2.2. Ra khỏi hệ thống Để kết thúc phiên làm việc ng−ời dùng cần thực hiện thủ tục ra khỏi hệ thống. Có rất nhiều cách cho phép thoát khỏi hệ thống, ở đây chúng ta xem xét một số cách thông dụng nhất. Cách đơn giản nhất để đảm bảo thoát khỏi hệ thống đúng đắn là nhấn tổ hợp phím CTRL+ALT+DEL. Khi đó, trên màn hình sẽ hiển thị một số thông báo của hệ thống và cuối cùng là thông báo thoát tr−ớc khi tắt máy. Cần chú ý là: Nếu đang làm việc trong môi tr−ờng X Window System, hãy nhấn tổ hợp phím CTRL+ALT+BACKSPACE tr−ớc rồi sau đó hãy nhấn CTRL+ALT+DEL. Cách thứ hai là sử dụng lệnh shutdown với cú pháp nh− sau: shutdown [tùy-chọn] [cảnh-báo] Lệnh này cho phép dừng tất cả các dịch vụ đang chạy trên hệ thống. 28
  29. Simpo PDF Merge and Split Unregistered Version - Các tùy-chọn của lệnh này nh− sau: -k không thực sự shutdown mà chỉ cảnh báo. -r khởi động lại ngay sau khi shutdown. -h tắt máy thực sự sau khi shutdown. -f khởi động lại nhanh và bỏ qua việc kiểm tra đĩa. -F khởi động lại và thực hiện việc kiểm tra đĩa. -c bỏ qua không chạy lệnh shutdown. Trong tùy chọn này không thể đ−a ra tham số thời gian nh−ng có thể đ−a ra thông báo giải thích trên dòng lệnh gửi cho tất cả các ng−ời dùng. -t số-giây qui định init(8) chờ khoảng thời gian số-giây tạm dừng giữa quá trình gửi cảnh báo và tín hiệu kill, tr−ớc khi chuyển sang một mức chạy khác. và hai tham số vị trí còn lại: time đặt thời điểm shutdown. Tham số time có hai dạng. Dạng tuyệt đối là gg:pp (gg: giờ trong ngày, pp: phút) thì hệ thống sẽ shutdown khi đồng hồ máy trùng với giá trị tham số. Dạng t−ơng đối là + là hẹn sau thời khoảng phút sẽ shutdown; coi shutdown lập tức t−ơng đ−ơng với +0. cảnh-báo thông báo gửi đến tất cả ng−ời dùng trên hệ thống. Khi lệnh thực hiện tất cả các máy ng−ời dùng đều nhận đ−ợc cảnh báo. Ví dụ, khi ng−ời dùng gõ lệnh: shutdown +1 Sau mot phut nua he thong se shutdown! trên màn hình của tất cả ng−ời dùng xuất hiện thông báo "Sau mot phut nua he thong se shutdown! " và sau một phút thì hệ thống shutdown thực sự. Cách thứ ba là sử dụng lệnh halt với cú pháp nh− sau: halt [tùy-chọn] Lệnh này thực hiện việc tắt hẳn máy. Các tuỳ chọn của lệnh halt: -w 29
  30. Simpo PDF Merge and Split Unregistered Version - không thực sự tắt máy nh−ng vẫn ghi các thông tin lên tập tin /var/log/wtmp (đây là tập tin l−u trữ danh sách các ng−ời dùng đăng nhập thành công vào hệ thống). -d không ghi thông tin lên tập tin /var/log/wtmp. Tùy chọn -n có ý nghĩa t−ơng tự song không tiến hành việc đồng bộ hóa. -f thực hiện tắt máy ngay mà không thực hiện lần l−ợt việc dừng các dịch vụ có trên hệ thống. -i chỉ thực hiện dừng tất cả các dịch vụ mạng tr−ớc khi tắt máy. Chúng ta cần nhớ rằng, nếu thoát khỏi hệ thống không đúng cách thì dẫn đến hậu quả là một số tập tin hay toàn bộ hệ thống tập tin có thể bị h− hỏng. L−u ý: Có thể sử dụng lệnh exit để trở về dấu nhắc đăng nhập hoặc kết thúc phiên làm việc bằng lệnh logout. 2.2.3. Khởi động lại hệ thống Ngoài việc thoát khỏi hệ thống nhờ các cách thức trên đây (ấn tổ hợp ba phím Ctrl+Alt+Del, dùng lệnh shutdown hoặc lệnh halt), khi cần thiết (chẳng hạn, gặp phải tình huống một trình ứng dụng chạy quẩn) có thể khởi động lại hệ thống nhờ lệnh reboot. Cú pháp lệnh reboot: reboot [tùy-chọn] Lệnh này cho phép khởi động lại hệ thống. Nói chung thì chỉ siêu ng−ời dùng mới đ−ợc phép sử dụng lệnh reboot, tuy nhiên, nếu hệ thống chỉ có duy nhất một ng−ời dùng đang làm việc thì lệnh reboot vẫn đ−ợc thực hiện song hệ thống đòi hỏi việc xác nhận mật khẩu. Các tùy chọn của lệnh reboot nh− sau là -w, -d, -n, -f, -i có ý nghĩa t−ơng tự nh− trong lệnh halt. 2.3. Lệnh thay đổi mật khẩu Mật khẩu là vấn đề rất quan trọng trong các hệ thống đa ng−ời dùng và để đảm bảo tính bảo mật tối đa, cần thiết phải chú ý tới việc thay đổi mật khẩu. Thậm chí trong tr−ờng hợp hệ thống chỉ có một ng−ời sử dụng thì việc thay đổi mật khẩu vẫn là rất cần thiết. Mật khẩu là một xâu kí tự đi kèm với tên ng−ời dùng để đảm bảo cho phép một ng−ời vào làm việc trong hệ thống với quyền hạn đã đ−ợc quy định. Trong quá trình đăng nhập, ng−ời dùng phải gõ đúng tên và mật khẩu, trong đó gõ mật khẩu là công việc bắt buộc phải thực hiện. Tên ng−ời dùng có thể đ−ợc công khai song mật khẩu thì tuyệt đối phải đ−ợc đảm bảo bí mật. • Việc đăng ký tên và mật khẩu của siêu ng−ời dùng đ−ợc tiến hành trong quá trình khởi tạo hệ điều hành Linux. 30
  31. Simpo PDF Merge and Split Unregistered Version - • Việc đăng ký tên và mật khẩu của một ng−ời dùng thông th−ờng đ−ợc tiến hành khi một ng−ời dùng mới đăng ký tham gia sử dụng hệ thống. Thông th−ờng siêu ng−ời dùng cung cấp tên và mật khẩu cho ng−ời dùng mới (có thể do ng−ời dùng đề nghị) và dùng lệnh adduser (hoặc lệnh useradd) để đăng ký tên và mật khẩu đó với hệ thống. Sau đó, ng−ời dùng mới nhất thiết cần thay đổi mật khẩu để bảo đảm việc giữ bí mật cá nhân tuyệt đối. Lệnh passwd cho phép thay đổi mật khẩu ứng với tên đăng nhập ng−ời dùng. Cú pháp lệnh passwd nh− sau: passwd [tùy-chọn] [tên-ng−ời-dùng] với các tùy chọn nh− sau: -k thay đổi mật khẩu ng−ời dùng. Lệnh đòi hỏi phải xác nhận quyền bằng việc gõ mật khẩu đang dùng tr−ớc khi thay đổi mật khẩu. Cho phép ng−ời dùng thay đổi mật khẩu của mình độc lập với siêu ng−ời dùng. -f đặt mật khẩu mới cho ng−ời dùng song không cần tiến hành việc kiểm tra mật khẩu đang dùng. Chỉ siêu ng−ời dùng mới có quyền sử dụng tham số này. -l khóa một tài khoản ng−ời dùng. Việc khóa tài khoản thực chất là việc dịch bản mã hóa mật khẩu thành một xâu ký tự vô nghĩa bắt đầu bởi kí hiệu "!". Chỉ siêu ng−ời dùng mới có quyền sử dụng tham số này. -stdin việc nhập mật khẩu ng−ời dùng chỉ đ−ợc tiến hành từ thiết bị vào chuẩn không thể tiến hành từ đ−ờng dẫn (pipe). Nếu không có tham số này cho phép nhập mật khẩu cả từ thiết bị vào chuẩn hoặc từ đ−ờng dẫn. -u mở khóa (tháo bỏ khóa) một tài khoản (đối ngẫu với tham số -l). Chỉ siêu ng−ời dùng mới có quyền sử dụng tham số này. -d xóa bỏ mật khẩu của ng−ời dùng. Chỉ siêu ng−ời dùng mới có quyền sử dụng tham số này. -S hiển thị thông tin ngắn gọn về trạng thái mật khẩu của ng−ời dùng đ−ợc đ−a ra. Chỉ siêu ng−ời dùng mới có quyền sử dụng tham số này. Nếu tên-ng−ời-dùng không có trong lệnh thì ngầm định là chính ng−ời dùng đã gõ lệnh này. Ví dụ khi ng−ời dùng user1 gõ lệnh: # passwd user1 hệ thống thông báo: Changing password for user user1 31
  32. Simpo PDF Merge and Split Unregistered Version - New UNIX password: để ng−ời dùng nhập mật khẩu mới của mình vào. Sau khi ng−ời dùng gõ xong mật khẩu mới, hệ thống cho ra thông báo: BAD PASSWORD: it is derived from your password entry Retype new UNIX password: để ng−ời dùng khẳng định một lần nữa mật khẩu vừa gõ dòng trên (nhớ phải gõ lại đúng hệt nh− lần tr−ớc). Chớ nên quá phân vân vì thông báo ở dòng phía trên vì hầu hết khi gõ mật khẩu mới luôn gặp những thông báo kiểu đại loại nh− vậy, chẳng hạn nh−: BAD PASSWORD: it is too simplistic/systematic Và sau khi chúng ta khẳng định lại mật khẩu mới, hệ thống cho ra thông báo: Passwd: all authentication tokens updated successfully. cho biết việc thay đổi mật khẩu thành công và dấu nhắc shell lại hiện ra. Khi siêu ng−ời dùng gõ lệnh: # passwd -S root sẽ hiện ra thông báo Changing password for user root Password set, MD5 encryption cho biết thuật toán mã hóa mật khẩu mà Linux sử dụng là một thuật toán hàm băm có tên là MD5. L−u ý: Có một lời khuyên đối với ng−ời dùng là nên chọn mật khẩu không quá đơn giản quá (nhằm tránh ng−ời khác dễ dò tìm ra) hoặc không quá phức tạp (tránh khó khăn cho chính ng−ời dùng khi phải ghi nhớ và gõ mật khẩu). Đặc biệt không nên sử dụng họ tên, ngày sinh, số điện thoại của bản thân hoặc ng−ời thân làm mật khẩu vì đây là một trong những tr−ờng hợp mật khẩu đơn giản nhất. Nếu thông báo mật khẩu quá đơn giản đ−ợc lặp đi lặp lại một vài lần và không có thông báo mật khẩu mới thành công đã quay về dấu nhắc shell thì nên gõ lại lệnh và chọn một mật khẩu mới phức tạp hơn đôi chút. 2.4. Lệnh xem, thiết đặt ngày, giờ hiện tại và xem lịch trên hệ thống 2.4.1 Lệnh xem, thiết đặt ngày, giờ Lệnh date cho phép có thể xem hoặc thiết đặt lại ngày giờ trên hệ thống. Cú pháp của lệnh gồm hai dạng, dạng xem thông tin về ngày, giờ: date [tùy-chọn] [+định-dạng] và dạng thiết đặt lại ngày giờ cho hệ thống: date [tùy-chọn] [MMDDhhmm[ [CC]YY] [.ss]] Các tùy-chọn nh− sau: -d, date=xâu-văn-bản 32
  33. Simpo PDF Merge and Split Unregistered Version - hiển thị thời gian d−ới dạng xâu-văn-bản, mà không lấy "thời gian hiện tại của hệ thống” nh− theo ngầm định; xâu-văn-bản đ−ợc đặt trong hai dấu nháy đơn hoặc hai dấu nháy kép. -f, file=tập-tin-văn-bản giống nh− một tham số date nh−ng ứng với nhiều ngày cần xem: mỗi dòng của tập-tin-văn-bản có vai trò nh− một xâu-văn-bản trong tr−ờng hợp tham số date. -I, iso-8601[=mô-tả] hiển thị ngày giờ theo chuẩn ISO-8601 (ví dụ: 2000-11-8). -I t−ơng đ−ơng với tham số iso-8601='date' Với iso-8601: nếu mô-tả là 'date' (hoặc không có) thì hiển thị ngày, nếu mô-tả là 'hours' hiển thị ngày+giờ, nếu mô-tả là 'minutes': ngày+giờ+phút; nếu mô-tả là 'seconds': ngày + giờ + phút + giây. -r, reference= tập-tin hiển thị thời gian sửa đổi tập-tin lần gần đây nhất. -R, rfc-822 hiển thị ngày theo RFC-822 (ví dụ: Wed, 8 Nov 2000 09:21:46 -0500). -s, set=xâu-văn-bản thiết đặt lại thời gian theo kiểu xâu-văn-bản. -u, utc, universal hiển thị hoặc thiết đặt thời gian theo UTC (ví dụ: Wed Nov 8 14:29:12 UTC 2000). help hiển thị thông tin trợ giúp và thoát. Trong dạng lệnh date cho xem thông tin ngày, giờ thì tham số định-dạng điều khiển cách hiển thị thông tin kết quả. Định-dạng là dãy có từ một đến nhiều cặp gồm hai kí tự, trong mỗi cặp kí tự đầu tiên là % còn kí tự thứ hai mô tả định dạng. Do số l−ợng định dạng là rất nhiều vì vậy chúng ta chỉ xem xét một số định dạng điển hình (để xem đầy đủ các định dạng, sử dụng lệnh man date). D−ới đây là một số định dạng điển hình: %% Hiện ra chính kí tự %. %a Hiện ra thông tin tên ngày trong tuần viết tắt theo ngôn ngữ bản địa. %A Hiện ra thông tin tên ngày trong tuần viết đầy đủ theo ngôn ngữ bản địa. %b Hiện ra thông tin tên tháng viết tắt theo ngôn ngữ bản địa. 33
  34. Simpo PDF Merge and Split Unregistered Version - %B Hiện ra thông tin tên tháng viết đầy đủ theo ngôn ngữ bản địa. Trong dạng lệnh date cho phép thiết đặt lại ngày giờ cho hệ thống thì tham số [MMDDhhmm[ [CC]YY] [.ss]] mô tả ngày, giờ mới cần thiết đặt, trong đó: MM: hai số chỉ tháng, DD: hai số chỉ ngày trong tháng, hh: hai số chỉ giờ trong ngày, mm: hai số chỉ phút, CC: hai số chỉ thế kỉ, YY: hai số chỉ năm trong thế kỉ. Các dòng ngay d−ới đây trình bày một số ví dụ sử dụng lệnh date, mỗi ví dụ đ−ợc cho t−ơng ứng với một cặp hai dòng, trong đó dòng trên mô tả lệnh đ−ợc gõ còn dòng d−ới là thông báo của Linux. # date Wed Jan 3 23:58:50 ICT 2001 # date -d='01/01/2000' Sat Jan 1 00:00:00 ICT 2000 # date -iso-8601='seconds' 2000-12-01T00:36:41-0500 # date -d='01/01/2001' Mon Jan 1 00:00:00 ICT 2001 # date 010323502001.50 Wed Jan 3 23:50:50 ICT 2001 # date +%a%A Wed Wednesday # date +%a%A%b%B Wed Wednesday Jan January # date +%D%%%j 01/05/01%005 2.4.2. Lệnh xem lịch Lệnh cal cho phép xem lịch trên hệ thống với cú pháp nh− sau: cal [tùy-chọn] [ [ ]] nếu không có tham số, lịch của tháng hiện thời sẽ đ−ợc hiển thị. Các tuỳ-chọn là: -m 34
  35. Simpo PDF Merge and Split Unregistered Version - chọn ngày Thứ hai là ngày đầu tiên trong tuần (mặc định là ngày Chủ nhật). -j hiển thị số ngày trong tháng d−ới dạng số ngày trong năm (ví dụ: ngày 1/11/2000 sẽ đ−ợc hiển thị d−ới dạng là ngày thứ 306 trong năm 2000, số ngày bắt đầu đ−ợc tính từ ngày 1/1). -y hiển thị lịch của năm hiện thời. Ví dụ: # cal 1 2001 January 2001 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Khi nhập dòng lệnh trên, trên màn hình sẽ hiển thị lịch của tháng 1 năm 2001, mặc định chọn ngày chủ nhật là ngày bắt đầu của tuần. D−ới đây là ví dụ hiển thị số ngày trong tháng 3 d−ới dạng số ngày trong năm 2001. # cal -j 3 2001 March 2001 Su Mo Tu We Th Fr Sa 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 2.5. Lệnh gọi ngôn ngữ tính toán số học Linux cung cấp một ngôn ngữ tính toán với độ chính xác tùy ý thông qua lệnh bc. Khi yêu cầu lệnh này, ng−ời dùng đ−ợc cung cấp một ngôn ngữ tính toán (và cho phép lập trình tính toán có dạng ngôn ngữ lập trình C) hoạt động theo thông dịch. Trong ngôn ngữ lập trình đ−ợc cung cấp (tạm thời gọi là ngôn ngữ bc), tồn tại rất nhiều công cụ hỗ trợ tính toán và lập trình tính toán: kiểu phép toán số học phong phú, phép toán so sánh, một số hàm chuẩn, biến chuẩn, cấu trúc điều khiển, cách thức định nghĩa hàm, cách thức thay đổi độ chính xác, đặt lời chú thích Chỉ cần sử dụng một phần nhỏ tác động của lệnh bc, chúng ta đã có một "máy tính số bấm tay" hiệu quả. Cú pháp lệnh bc: bc [tùy-chọn] [tập-tin ] với các tuỳ chọn sau đây: -l, mathlib 35
  36. Simpo PDF Merge and Split Unregistered Version - thực hiện phép tính theo chuẩn th− viện toán học (ví dụ: 5/5=1.00000000000000000000). -w, warn khi thực hiện phép tính không tuân theo chuẩn POSIX (POSIX là một chuẩn trong Linux) thì một cảnh báo xuất hiện. -s, standard thực hiện phép tính chính xác theo chuẩn của ngôn ngữ POSIX bc. -q, quiet không hiện ra lời giới thiệu về phần mềm GNU khi dùng bc. Tham số tập-tin là tên tập tin chứa ch−ơng trình viết trên ngôn ngữ bc, khi lệnh bc thực hiện sẽ tự động chạy các tập tin ch−ơng trình này (Nếu có nhiều tham số thì có nghĩa sẽ chạy nhiều ch−ơng trình liên tiếp nhau). D−ới đây là một ví dụ sử dụng lệnh bc ở dạng đơn giản nhất. Khi gõ lệnh tại dấu nhắc: # bc -l màn hình xuất hiện lời giới thiệu về GNU khi dùng bc và ngôn ngữ bc đ−ợc kích hoạt để phục vụ ng−ời dùng. bc 1.05 Copyright 1991, 1992, 1993, 1994, 1997, 1998 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 5^3 125 12+12+78*7-62/4 554.50000000000000000000 a=4 a^a 256 a*78 312 b=45 a*b 180 a/b .08888888888888888888 a%b .00000000000000000040 36
  37. Simpo PDF Merge and Split Unregistered Version - ở đây * là phép nhân, ^ là phép tính luỹ thừa, / là phép chia lấy th−ơng, % là chia lấy phần d−. L−u ý: Ngôn ngữ lập trình tính toán bc là một ngôn ngữ rất mạnh có nội dung hết sức phong phú cho nên trong khuôn khổ của cuốn sách này không thể mô tả hết các nội dung của ngôn ngữ đó đ−ợc. Chúng ta cần sử dụng lệnh man bc để nhận đ−ợc thông tin đầy đủ về lệnh bc và ngôn ngữ tính toán bc. ở đây trình bày sơ bộ một số yếu tố cơ bản nhất của ngôn ngữ đó (bt là viết tắt của biểu thức, b là viết tắt của biến): Các phép tính: - bt: lấy đối; ++ b, b, b ++, b : phép toán tăng, giảm b; các phép toán hai ngôi cộng +, trừ -, nhân *, chia /, lấy phần d− %, lũy thừa nguyên bậc ^; gán =; gán sau khi thao tác =; các phép toán so sánh , >=, bằng ==, khác != Phép so sánh cho 1 nếu đúng, cho 0 nếu sai. Bốn biến chuẩn là scale số l−ợng chữ số phần thập phân; last giá trị tính toán cuối cùng; ibase cơ số hệ đếm đối với input và obase là cơ số hệ đếm với output (ngầm định hai biến này có giá trị 10). Các hàm chuẩn sin s (bt); cosin c (bt); arctg a (bt); lôgarit tự nhiên l (bt); mũ cơ số tự nhiên e (bt); hàm Bessel bậc nguyên n của bt là j (n, bt). 2.6. Xem thông tin hệ thống Lệnh uname cho phép xem thông tin hệ thống với cú pháp là: uname [tùy-chọn] Nếu không có tuỳ chọn thì hiện tên hệ điều hành. Lệnh có các tùy chọn là: -a, all hiện tất cả các thông tin. -m, machine kiểu kiến trúc của bộ xử lý (i386, i486, i586, i686 ). -n, nodename hiện tên của máy. -r, release hiện nhân của hệ điều hành. -s, sysname hiện tên hệ điều hành. -p, processor hiện kiểu bộ xử lý của máy chủ. Ví dụ, nếu gõ lệnh # uname -a thì màn hình sẽ hiện ra nh− sau: 37
  38. Simpo PDF Merge and Split Unregistered Version - Linux linuxsrv.linuxvn.net 2.2.14-5.0 #1 Tue Mar 7 21:07:39 EST 2000 i686 unknown # Thông tin hiện ra có tất cả 6 tr−ờng là: Tên hệ điều hành: Linux Tên máy: linuxsrv.linuxvn.net Tên nhân của hệ điều hành: 2.2.14-5.0 Ngày sản xuất: #1 Tue Mar 7 21:07:39 EST 2000 Kiểu kiến trúc bộ xử lý: i686 Kiểu bộ xử lý của máy chủ: unknown Ví dụ nếu gõ lệnh: # uname -spr thì màn hình sẽ hiện ra nh− sau: Linux 2.2.14-5.0 unknown là tên hệ điều hành, tên nhân và kiểu bộ xử lý của máy chủ. L−u ý: Chúng ta làm rõ thêm nội dung l−u ý trong mục 1.3.1 về tham số khóa kết hợp: Trong ví dụ trên đây khi viết tham số -spr là yêu cầu thực hiện lệnh usame với nghĩa kết hợp tình huống theo cả ba tham số khóa -s, -p, -r. Chú ý rằng, không thể viết -s -p -r thay cho -spr đ−ợc. Nh− đã l−u ý ở mục 1.3.1 trong nhiều lệnh của Linux cho phép viết kết hợp các tham số khóa theo cách thức nh− trên miễn là các tham số đó không xung khắc với nhau. 2.7. Hiện dòng văn bản Lệnh echo hiện ra dòng văn bản đ−ợc ghi ngay trong dòng lệnh có cú pháp: echo [tùy-chọn] [xâu ký tự] với các tuỳ chọn nh− sau: -n hiện xâu ký tự và dấu nhắc trên cùng một dòng. -e bật khả năng thông dịch đ−ợc các ký tự điều khiển. -E tắt khả năng thông dịch đ−ợc các ký tự điều khiển. help hiện hỗ trợ và thoát. Một số bản Linux không hỗ trợ tham số này. Ví dụ, dùng lệnh echo với tham số -e # echo -e ‘thử dùng lệnh echo \n’ sẽ thấy hiện ra chính dòng văn bản ở lệnh: 38
  39. Simpo PDF Merge and Split Unregistered Version - thử dùng lệnh echo # ở đây ký tự điều khiển ‘\n’ là ký tự xuống dòng. 2.8. Thay đổi nội dung dấu nhắc shell Trong Linux có hai loại dấu nhắc: dấu nhắc cấp một (dấu nhắc shell) xuất hiện khi nhập lệnh và dấu nhắc cấp hai (dấu nhắc nhập liệu) xuất hiện khi lệnh cần có dữ liệu đ−ợc nhập từ bàn phím và t−ơng ứng với hai biến nhắc tên là PS1 và PS2. PS1 là biến hệ thống t−ơng ứng với dấu nhắc cấp 1: Giá trị của PS1 chính là nội dung hiển thị của dấu nhắc shell. Để nhận biết thông tin hệ thống hiện tại, một nhu cầu đặt ra là cần thay đổi giá trị của các biến hệ thống PS1 và PS2. Linux cho phép thay đổi giá trị của biến hệ thống PS1 bằng lệnh gán trị mới cho nó. Lệnh này có dạng: # PS1=' ' Năm (5) kí tự đầu tiên của lệnh gán trên đây (PS1=') phải đ−ợc viết liên tiếp nhau. Dãy kí tự nằm giữa cặp hai dấu nháy đơn (có thể sử dụng cặp hai dấu kép ") và không đ−ợc phép chứa dấu nháy. Dãy kí tự này bao gồm các cặp kí tự điều khiển và các kí tự khác, cho phép có thể có dấu cách. Cặp kí tự điều khiển gồm hai kí tự, kí tự đầu tiên là dấu sổ xuôi "\" còn kí tự thứ hai nhận một trong các tr−ờng hợp liệt kê trong bảng d−ới đây. Bảng d−ới đây giới thiệu một số cặp ký tự điều khiển có thể đ−ợc sử dụng khi muốn thay đổi dấu nhắc lệnh: Ký tự điều khiển ý nghĩa \! Hiển thị thứ tự của lệnh trong lịch sử \# Hiển thị thứ tự của lệnh \$ Hiển thị dấu đô-la ($). Đối với siêu ng−ời dùng (super user), thì hiển thị dấu số hiệu (#) \\ Hiển thị dấu sổ (\) \d Hiển thị ngày hiện tại \h Hiển thị tên máy (hostname) \n Ký hiệu xuống dòng \s Hiển thị tên hệ shell \t Hiển thị giờ hiện tại \u Hiển thị tên ng−ời dùng \W Hiển thị tên thực sự của th− mục hiện thời (ví dụ th− mục hiện thời là /mnt/hda1 thì tên thực sự của nó là /hda1) \w Hiển thị tên đầy đủ của th− mục hiện thời (ví dụ /mnt/hda1) Ví dụ, hiện thời dấu nhắc shell có dạng: root@may1 /hda1]# Sau khi chúng ta gõ lệnh root@may1 /hda1]# PS1='[\h@\u \w : \d]\$' 39
  40. Simpo PDF Merge and Split Unregistered Version - thì dấu nhắc shell đ−ợc thay đổi là: [may1@root /mnt/hda1 : Fri Oct 27 ]# ngoài việc đổi thứ tự giữa tên ng−ời dùng và máy còn cho chúng ta biết thêm về ngày hệ thống quản lý và tên đầy đủ của th− mục hiện thời. Linux cung cấp cách thức hoàn toàn t−ơng tự nh− đối với biến PS1 để thay đổi giá trị biến hệ thống PS2 t−ơng ứng với dấu nhắc cấp hai. 40
  41. Simpo PDF Merge and Split Unregistered Version - Ch−ơng 3. Hệ thống tập tin 3.1 Tổng quan về hệ thống tập tin 3.1.1. Một số khái niệm Ng−ời dùng đã từng làm việc với hệ điều hành DOS/Windows thì rất quen biết với các khái niệm: tập tin (File), th− mục, th− mục hiện thời Để cuốn sách mang tính hệ thống và thuận tiện cho ng−ời dùng ch−a từng làm việc thành thạo với một hệ điều hành nào khác, ch−ơng này vẫn giới thiệu về các khái niệm này một cách sơ bộ. Một đối t−ợng điển hình trong các hệ điều hành đó là tập tin. Tập tin là một tập hợp dữ liệu có tổ chức đ−ợc hệ điều hành quản lý theo yêu cầu của ng−ời dùng. Cách tổ chức dữ liệu trong tập tin thuộc về chủ của nó là ng−ời dùng đã tạo ra tập tin. Tập tin có thể là một văn bản (tr−ờng hợp đặc biệt là ch−ơng trình nguồn trên C, PASCAL, shell script ), một ch−ơng trình ngôn ngữ máy, một tập hợp dữ liệu Hệ điều hành tổ chức việc l−u trữ nội dung tập tin trên các thiết bị nhớ lâu dài (chẳng hạn đĩa từ) và đảm bảo các thao tác lên tập tin. Chính vì có hệ điều hành đảm bảo các chức năng liên quan đến tập tin nên ng−ời dùng không cần biết tập tin của mình l−u ở vùng nào trên đĩa từ, bằng cách nào đọc/ghi lên các vùng của đĩa từ mà vẫn thực hiện đ−ợc yêu cầu tìm kiếm, xử lý lên các tập tin. Hệ điều hành quản lý tập tin theo tên gọi của tập tin (tên tập tin) và một số thuộc tính liên quan đến tập tin. Tr−ớc khi giới thiệu mộ t số nội dung liên quan đến tên tập tin và tên th− mục, chúng ta giới thiệu sơ bộ về khái niệm th− mục. Để làm việc đ−ợc với các tập tin, hệ điều hành không chỉ quản lý nội dung tập tin mà còn phải quản lý các thông tin liên quan đến các tập tin. Th− mục (directory) là đối t−ợng đ−ợc dùng để chứa thông tin về các tập tin, hay nói theo một cách khác, th− mục chứa các tập tin. Các th− mục cũng đ−ợc hệ điều hành quản lý trên vật dẫn ngoài và vì vậy, theo nghĩa này, th− mục cũng đ−ợc coi là tập tin song trong một số tr−ờng hợp để phân biệt với "tập tin" th− mục, chúng ta dùng thuật ngữ tập tin thông th−ờng. Khác với tập tin thông th−ờng, hệ điều hành lại quan tâm đến nội dung của th− mục. Một số nội dung sau đây liên quan đến tên tập tin (bao gồm cả tên th− mục): Tên tệp tin trong Linux có thể dài tới 256 ký tự, bao gồm các chữ cái, chữ số, dấu gạch nối, gạch chân, dấu chấm. Tên th− mục/tập tin trong Linux có thể có nhiều hơn một dấu chấm, ví dụ: This_is.a.VERY_long.filename. Nếu trong tên tập tin có dấu chấm "." thì xâu con của tên tập tin từ dấu chấm cuối cùng đ−ợc gọi là phần mở rộng của tên tập tin (hoặc tập tin). Ví dụ, tên tập tin trên đây có phần mở rộng là .filename. Chú ý rằng khái niệm phần mở rộng ở đây không mang ý nghĩa nh− một số hệ điều hành khác. L−u ý: Chúng ta nên l−u ý rằng, không phải ký tự nào cũng có nghĩa. Nếu có hai tập tin chỉ khác nhau ở ký tự cuối cùng, thì đối với Linux, đó là hai tập tin trùng tên. Bởi lẽ, Linux chỉ lấy 32 hay 64 ký tự đầu tiên trong tên tập tin mà thôi (tùy theo phiên bản Linux), phần tên tập tin còn lại dành cho chủ của tập tin, Linux theo dõi thông tin, nh−ng th−ờng không xem các ký tự đứng sau ký tự thứ 33 hay 65 là quan trọng đối với nó. Xin nhắc lại l−u ý về phân biệt chữ hoa và chữ th−ờng đối với tên th− mục/tập tin, ví dụ hai tập tin FILENAME.tar.gz và filename.tar.gz là hai tập tin khác nhau. 41
  42. Simpo PDF Merge and Split Unregistered Version - Nếu trong tên th− mục/tập tin có chứa khoảng trống, sẽ phải đặt tên th− mục/tập tin vào trong cặp dấu nháy kép để sử dụng th− mục/tập tin đó. Ví dụ, để tạo th− mục có tên là ”My document” chẳng hạn, hãy đánh dòng lệnh sau: # mkdir "My document" Một số ký tự sau không đ−ợc sử dụng trong tên th− mục/tập tin: !, *, $, &, # Khi sử dụng ch−ơng trình mc (Midnight Commander - ch−ơng 8), các tập tin khả thi trong Linux có dấu "*" đ−ợc đặt tr−ớc tên tập tin, các tập tin sao l−u có dấu "~" và các tập tin có tên bắt đầu bởi dấu "." là các tập tin ẩn, các tập tin có dấu "@" là các tập tin liên kết Tập hợp tất cả các tập tin có trong hệ điều hành đ−ợc gọi là hệ thống tập tin là một hệ thống thống nhất. Bởi chính từ cách thức sử dụng th− mục, hệ thống tập tin đ−ợc tổ chức lôgic theo dạng hình cây: Hệ thống tập tin đ−ợc xuất phát từ một th− mục gốc (đ−ợc kí hiệu là "/") và cho phép tạo ra th− mục con trong một th− mục bất kỳ. Thông th−ờng, khi khởi tạo Linux đã có ngay hệ thống tập tin của nó. Hình 3.1. cho minh họa một phần trong cây lôgic của hệ thống tập tin. / root bin etc usr home dev peng office52 sh date who X11 src bin user1 user2 tty00 tty01 xinit Xclients Xmodmap Hình 3.1. Một phần cấu trúc lôgic dạng cây của hệ thống File Để chỉ một tập tin hay một th− mục, chúng ta cần đ−a ra một đ−ờng dẫn, ví dụ để đ−ờng dẫn xác định tập tin Xclients trong hình 3.1. chúng ta viết nh− sau: /etc/X11/xinit/Xclients Đ−ờng dẫn này cho biết Xclients nằm trong xinit, xinit nằm trong X11, X11 nằm trong etc và etc nằm trong gốc /. Tên tập tin th−ờng là tham số thực sự khi gõ lệnh và công việc gõ lệnh trở nên rất nặng nề đối với ng−ời dùng nếu nh− trong lệnh phải gõ một đ−ờng dẫn dài theo dạng trên (đ−ợc biết với tên gọi là đ−ờng dẫn tuyệt đối). Vì vậy, Linux (cũng nh− nhiều hệ điều hành khác) sử dụng khái niệm th− mục hiện thời của mỗi ng−ời dùng làm việc trong hệ thống. Th− mục hiện thời là một th− mục trong hệ thống tập tin mà hiện thời "ng−ời dùng đang ở đó". Qua th− mục hiện thời, Linux cho phép ng−ời dùng chỉ một tập tin trong lệnh ngắn gọn hơn nhiều. Ví dụ, nếu th− mục hiện thời là th− mục xinit thì để chỉ tập tin đã nói, ng−ời dùng chỉ cần viết Xclients hoặc ./Xclients trong đó kí hiệu "." để chỉ 42
  43. Simpo PDF Merge and Split Unregistered Version - th− mục hiện thời. Đ−ờng dẫn đ−ợc xác định qua th− mục hiện thời đ−ợc gọi là đ−ờng dẫn t−ơng đối. Khi một ng−ời dùng đăng nhập vào hệ thống, Linux luôn chuyển ng−ời dùng vào th− mục riêng, và tại thời điểm đó th− mục riêng là th− mục hiện thời của ng−ời dùng. Th− mục riêng của siêu ng−ời dùng là /root, th− mục riêng của ng−ời dùng có tên là user1 là /home/user1 Linux cho phép dùng lệnh cd để chuyển sang th− mục khác (lấy th− mục khác làm th− mục hiện thời). Hai dấu chấm " " đ−ợc dùng để chỉ th− mục ngay trên th− mục hiện thời (cha của th− mục hiện thời). Linux còn cho phép ghép một hệ thống tập tin trên một thiết bị nhớ (đĩa mềm, vùng đĩa cứng ch−a đ−ợc đ−a vào hệ thống tập tin) thành một th− mục con trong hệ thống tập tin của hệ thống bằng lệnh mount. Các hệ thống tập tin đ−ợc ghép thuộc vào các kiểu khác nhau. Hai mục tiếp theo (3.1.2 và 3.1.3.) giới thiệu những nội dung sâu hơn về hệ thống tập tin Linux dành cho các bạn đọc muốn tìm hiểu thêm về hệ thống tập tin của một hệ điều hành UNIX điển hình. 3.1.2. Sơ bộ kiến trúc nội tại của hệ thống tập tin Trên đĩa từ, hệ thống tập tin đ−ợc coi là dãy tuần tự các khối lôgic mỗi khối chứa hoặc 512B hoặc 1024B hoặc bội của 512B là cố định trong một hệ thống tập tin. Trong hệ thống tập tin, các khối dữ liệu đ−ợc địa chỉ hóa bằng cách đánh chỉ số liên tiếp, mỗi địa chỉ đ−ợc chứa trong 4 byte (32 bit). Cấu trúc nội tại của hệ thống tập tin bao gồm 4 thành phần kế tiếp nhau: Boot block (dùng để khởi động hệ thống), Siêu khối (Super block), Danh sách inode và Vùng dữ liệu. D−ới đây, chúng ta xem xét sơ l−ợc nội dung các thành phần cấu trúc nội tại một hệ thống tập tin. Siêu khối: Siêu khối chứa nhiều thông tin liên quan đến trạng thái của hệ thống tập tin. Trong siêu khối có các tr−ờng sau đây: Kích th−ớc của danh sách inode (khái niệm inode sẽ đ−ợc giải thích trong mục sau): định kích cỡ vùng không gian trên Hệ thống tập tin quản lý các inode. Kích th−ớc của hệ thống tập tin. Hai kích th−ớc trên đây tính theo đơn vị dung l−ợng bộ nhớ ngoài vật lý, Một danh sách chỉ số các khối rỗi (th−ờng trực trên siêu khối) trong hệ thống tập tin. Chỉ số các khối rỗi th−ờng trực trên siêu khối đ−ợc dùng để đáp ứng nhu cầu phân phối mới. Chú ý rằng, danh sách chỉ số các khối rỗi có trên siêu khối chỉ là một bộ phận của tập tất cả các khối rỗi có trên hệ thống tập tin. Chỉ số của khối rỗi tiếp theo trong danh sách các khối rỗi. Chỉ số khối rỗi tiếp theo dùng để hỗ trợ việc tìm kiếm tiếp các khối rỗi: bắt đầu tìm từ khối có chỉ số này trở đi. Điều đó có nghĩa là mọi khối có chỉ số không lớn hơn chỉ số này hoặc có trong danh sách các khối rỗi th−ờng trực hoặc đã đ−ợc cấp phát cho một tập tin nào đó. 43
  44. Simpo PDF Merge and Split Unregistered Version - Nhiều thao tác tạo tập tin mới, xoá tập tin, thay đổi nội dung tập tin v.v. cập nhật các thông tin này. Một danh sách các inode rỗi (th−ờng trực trên siêu khối) trong hệ thống tập tin. Danh sách này chứa chỉ số các inode rỗi đ−ợc dùng để phân phối ngay đ−ợc cho một tập tin mới đ−ợc khởi tạo. Thông th−ờng, danh sách này chỉ chứa một bộ phận các inode rỗi trên hệ thống tập tin. Chỉ số inode rỗi tiếp theo trong danh sách các inode rỗi. Chỉ số inode rỗi tiếp theo định vị việc tìm kiếm tiếp thêm inode rỗi: bắt đầu tìm từ inode có chỉ số này trở đi. Điều đó có nghĩa là mọi inode có chỉ số không lớn hơn chỉ số này hoặc có trong danh sách các inode rỗi th−ờng trực hoặc đã đ−ợc t−ơng ứng với một tập tin nào đó. Hai tham số trên đây tạo thành cặp xác định đ−ợc danh sách các inode rỗi trên hệ thống tập tin các thao tác tạo tập tin mới, xoá tập tin cập nhật thông tin này. Các tr−ờng khóa (lock) danh sách các khối rỗi và danh sách inode rỗi: Trong một số tr−ờng hợp, chẳng hạn khi hệ thống đang làm việc thực sự với đĩa từ để cập nhật các danh sách này, hệ thống không cho phép cập nhật tới hai danh sách nói trên. Cờ chỉ dẫn về việc siêu khối đã đ−ợc biến đổi: Định kỳ thời gian siêu khối ở bộ nhớ trong đ−ợc cập nhật lại vào siêu khối ở đĩa từ và vì vậy cần có thông tin về việc siêu khối ở bộ nhớ trong khác với nội dung ở bộ nhớ ngoài: nếu hai bản không giống nhau thì cần phải biến đổi để chúng đ−ợc đồng nhất. Cờ chỉ dẫn rằng hệ thống tập tin chỉ có thể đọc (cấm ghi): Trong một số tr−ờng hợp, hệ thống đang cập nhật thông tin từ bộ nhớ ngoài thì chỉ cho phép đọc đối với hệ thống tập tin, Số l−ợng tổng cộng các khối rỗi trong hệ thống tập tin, Số l−ợng tổng cộng các inode rỗi trong hệ thống tập tin, Thông tin về thiết bị, Kích th−ớc khối (đơn vị phân phối dữ liệu) của hệ thống tập tin. Hiện tại kích th−ớc phổ biến của khối là 1KB. Trong thời gian máy hoạt động, theo từng giai đoạn, nhân sẽ đ−a siêu khối lên đĩa nếu nó đã đ−ợc biến đổi để phù hợp với dữ liệu trên hệ thống tập tin. Một trong khái niệm cốt lõi xuất hiện trong hệ thống tập tin đó là inode. Các đối t−ợng liên quan đến khái niệm này sẽ đ−ợc trình bày trong các mục tiếp theo. Inode: Mỗi khi một quá trình khởi tạo một tập tin mới, nhân hệ thống sẽ gán cho nó một inode ch−a sử dụng. Để hiểu rõ hơn về inode, chúng ta xem xét sơ l−ợc mối quan hệ liên quan giữa tập tin dữ liệu và việc l−u trữ trên vật dẫn ngoài đối với Linux. Nội dung của tập tin đ−ợc chứa trong vùng dữ liệu của hệ thống tập tin và đ−ợc phân chia các khối dữ liệu (nội dung tập tin) và hình ảnh phân bố nội dung tập tin có trong một inode t−ơng ứng. Liên kết đến tập hợp các khối dữ liệu này là một inode, chỉ thông qua inode mới có thể làm việc với dữ liệu tại các khối dữ liệu: Inode chứa dựng thông tin về tập hợp các khối dữ liệu nội dung tập tin. Có thể quan niệm rằng, tập hợp bao gồm inode và tập các khối dữ liệu nh− vậy là một tập tin vật lý: inode có thông tin 44
  45. Simpo PDF Merge and Split Unregistered Version - về tập tin vật lý, trong đó có địa chỉ các khối dữ liệu chứa nội dung của tập tin vật lý. Thuật ngữ inode là sự kết hợp của hai từ index với node và đ−ợc sử dụng phổ dụng trong Linux. Các inode đ−ợc phân biệt nhau theo chỉ số của inode: đó chính là số thứ tự của inode trong danh sách inode trên hệ thống tập tin. Hệ thống dùng 2 bytes để l−u trữ chỉ số của inode. Với cách l−u trữ chỉ số nh− thế, không có nhiều hơn 65535 inode trong một hệ thống tập tin. Nh− vậy, một tập tin chỉ có một inode song một tập tin lại có một hoặc một số tên tập tin. Ng−ời dùng tác động thông qua tên tập tin và tên tập tin lại tham chiếu đến inode (hai nội dung về tên tập tin và chỉ số inode là hai tr−ờng của một phần tử của một th− mục). Một inode có thể t−ơng ứng với một hoặc nhiều tên tập tin, mỗi t−ơng ứng nh− vậy đ−ợc gọi là một liên kết. Các inode đ−ợc l−u trữ trên hệ thống tập tin tại vùng danh sách các inode. Trong quá trình làm việc, Linux dùng một vùng bộ nhớ, đ−ợc gọi là bảng inode (trong một số tr−ờng hợp, nó còn đ−ợc gọi t−ờng minh là bảng sao in-core inode) với chức năng t−ơng ứng với vùng danh sách các inode có trong hệ thống tập tin, hỗ trợ cho quá trình truy nhập dữ liệu trong hệ thống tập tin. Nội dung của một in-core inode không chỉ chứa các thông tin trong inode t−ơng ứng mà còn đ−ợc bổ sung các thông tin mới giúp cho quá trình xử lý inode. Chúng ta xem xét cấu trúc nội tại của một inode để thấy đ−ợc sự trình bày nội tại của một tập tin. Inode bao gồm các tr−ờng thông tin sau đây: Kiểu tập tin. Trong Linux phân loại các kiểu tập tin: tập tin thông th−ờng (regular), th− mục, đặc tả kí tự, đặc tả khối và ống dẫn FIFO (pipes). Linux quy định tr−ờng kiểu tập tin có giá trị 0 t−ơng ứng đó là inode ch−a đ−ợc sử dụng. Quyền truy nhập tập tin. Trong Linux, tập tin là một tài nguyên chung của hệ thống vì vậy quyền truy nhập tập tin đ−ợc đặc biệt quan tâm để tránh những tr−ờng hợp truy nhập không hợp lệ. Đối với một inode, có 3 mức quyền truy nhập liên quan đến các đối t−ợng: mức chủ nhân của tập tin (đối t−ợng này đ−ợc ký hiệu là u: từ chữ user), mức nhóm ng−ời dùng của chủ nhân của tập tin (đối t−ợng này đ−ợc ký hiệu là g: từ chữ group), mức ng−ời dùng khác (đối t−ợng này đ−ợc ký hiệu là a: từ chữ all). Quyền truy nhập là đọc, ghi, thực hiện hoặc một tổ hợp nào đó từ nhóm gồm 3 quyền trên. Chú ý rằng, quyền thực hiện đối với một th− mục nào đó t−ơng ứng với việc cho phép tìm một tên tập tin nào đó có trong th− mục đó. Số l−ợng liên kết đối với inode: Đây chính là số l−ợng các tên tập tin trên các th− mục đ−ợc liên kết với inode này, Định danh chủ nhân của inode, Định danh nhóm chủ nhân: xác định tên nhóm ng−ời dùng mà chủ tập tin là một thành viên của nhóm này, Độ dài của tập tin tính theo byte, Thời gian truy nhập tập tin: thời gian tập tin đ−ợc sửa đổi muộn nhất, 45
  46. Simpo PDF Merge and Split Unregistered Version - thời gian tập tin đ−ợc truy nhập muộn nhất, thời gian tập tin đ−ợc khởi tạo, • Bảng chứa các địa chỉ khối nhớ chứa nội dung tập tin. Bảng này chứa 13 phần tử địa chỉ, trong đó có 10 phần tử trực tiếp, 1 phần tử gián tiếp bậc 1, 1 phần tử gián tiếp bậc 2 và một phần tử gián tiếp bậc 3. Nội dung của tập tin thay đổi khi có thao tác ghi lên nó; nội dung của một inode thay đổi khi nội dung của tập tin thay đổi hoặc thay đổi chủ hoặc thay đổi quyền hoặc thay đổi số liên kết. Ví dụ về nội dung một inode nh− sau: type regular perms rwxr-xr-x links 2 owner 41CT group 41CNTT size 5703 bytes accessed Sep 14 1999 7:30 AM modified Sep 10 1999 1:30 PM inode Aug 1 1995 10:15 AM Các phần tử địa chỉ dữ liệu Bản sao in-core inode còn bổ sung thêm tr−ờng trạng thái của in-core inode. • Tr−ờng trạng thái của in-core inode có các thông tin sau: inode đã bị khoá, một quá trình đang chờ đợi khi inode tháo khóa, in-core inode khác với inode do sự thay đổi dữ liệu trong inode, in-core inode khác với inode do sự thay đổi dữ liệu trong tập tin, số l−ợng các tên tập tin nối với tập tin đang đ−ợc mở, số hiệu thiết bị lôgic của hệ thống tập tin chứa tập tin nói trên chỉ số inode: dùng để liên kết với inode trên đĩa, các móc nối tới các in-core inode khác. Trong bộ nhớ trong, các in- core inode đ−ợc liên kết theo một hàng băm và một danh sách tự do. Trong danh sách hàng băm các in-core inode hòa hợp theo số hiệu thiết bị lôgic và số hiệu inode. Trong quá trình hệ thống làm việc, nảy sinh khái niệm inode tích cực nếu nh− có một quá trình đang làm việc với inode đó (nh− mở tập tin). Một inode thuộc vào danh sách các inode rỗi khi không có tập tin vật lý nào t−ơng ứng với inode đó. 3.1.3. Liên kết t−ợng tr−ng (lệnh ln) Trong Linux có hai kiểu liên kết đó là liên kết t−ợng tr−ng (liên kết mềm) và liên kết cứng. 46
  47. Simpo PDF Merge and Split Unregistered Version - "Liên kết cứng" là một cách gọi khác đối với một tập tin đang tồn tại (không có sự phân biệt giữa tập tin gốc và tập tin liên kết). Theo cách nói kỹ thuật, chúng cùng chia sẻ một inode và inode này chứa đựng tất cả các thông tin về tập tin. Không thể tạo một liên kết cứng tới một th− mục. "Liên kết t−ợng tr−ng" là một kiểu tập tin đặc biệt, trong đó, một tập tin liên kết thực sự tham chiếu theo tên đến một tập tin khác. Có thể hiểu kiểu tập tin này nh− là một con trỏ trỏ tới một tập tin hoặc một th− mục, và đ−ợc sử dụng để thay thế cho tập tin hoặc th− mục đ−ợc trỏ tới. Hầu hết các thao tác (nh− mở, đọc, ghi ) đ−ợc thực hiện trên các tập tin liên kết, sau đó, nhân hệ thống sẽ tự động "tham chiếu" và thực hiện trên tập tin đích của liên kết. Tuy nhiên, có một số các thao tác nh− xóa tập tin, tập tin liên kết sẽ bị xóa bỏ chứ không phải tập tin đích của nó. Để tạo một liên kết t−ợng tr−ng, hãy sử dụng lệnh ln với cú pháp nh− sau: ln [tùy-chọn] [tên-nối] Lệnh này sẽ tạo một liên kết đến th− mục/tập tin đích với tên tập tin liên kết là tên-nối. Nếu tên-nối không có, một liên kết với tên tập tin liên kết giống nh− tên tập tin đích sẽ đ−ợc tạo ra trong th− mục hiện thời. Các tuỳ chọn của lệnh ln: -b, backup[=CONTROL] tạo liên kết quay trở lại cho mỗi tập tin đích đang tồn tại. -f, force xóa bỏ các tập tin đích đang tồn tại. -d, -F, directory tạo liên kết cứng đến các th− mục (tùy chọn này chỉ dành cho ng−ời dùng có quyền quản trị hệ thống). Một số phiên bản không có tùy chọn này. -n, no-dereference một tập tin bình th−ờng đ−ợc xem là đích liên kết từ một th− mục. -i, interactive vẫn tạo liên kết dù tập tin đích đã bị xóa bỏ. -s, symbolic tạo các liên kết t−ợng tr−ng. target-directory= xác định th− mục tên-th−-mục là th− mục có chứa các liên kết. -v, verbose hiển thị tên các tập tin tr−ớc khi tạo liên kết. help hiển thị trang trợ giúp và thoát. Ví dụ, muốn tạo liên kết đến tập tin /usr/doc/g77/DOC với tên tập tin liên kết là g77manual.txt, thì gõ lệnh nh− sau: 47
  48. Simpo PDF Merge and Split Unregistered Version - # ln -s /usr/doc/g77/DOC g77manual.txt Khi chạy ch−ơng trình mc, các tập tin liên kết có tên bắt đầu bởi dấu "@", và khi vệt sáng di chuyển đến tập tin liên kết thì tên tập tin đ−ợc liên kết đến sẽ hiển thị ở bên d−ới. 3.2 Quyền truy nhập th− mục và tập tin 3.2.1 Quyền truy nhập Mỗi tập tin và th− mục trong Linux đều có một chủ sở hữu và một nhóm sở hữu, cũng nh− một tập hợp các quyền truy nhập. Cho phép thay đổi các quyền truy nhập và quyền sở hữu tập tin và th− mục nhằm cung cấp truy nhập nhiều hơn hay ít hơn. Thông tin về một tập tin phổ biến có dạng sau (đ−ợc hiện ra theo lệnh hiện danh sách tập tin ls -l): drwxr-xr-x 12 root root 4096 Oct 23 2000 LinuxVN.com Tập hợp Số liên Ng−ời Nhóm Kích Ngày Tên tập quyền truy kết đến tập chủ tập tin chủ tập tin th−ớc tập tin giờ tạo tập tin nhập tin (th− (byte) tin mục) Trong đó, dãy 10 ký tự đầu tiên mô tả kiểu tập tin và quyền truy nhập đối với tập tin đó. Theo mặc định, ng−ời dùng tạo một tập tin chính là ng−ời chủ (sở hữu) của tập tin đó và là ng−ời có quyền sở hữu nó. Ng−ời chủ của tập tin có đặc quyền thay đổi quyền truy nhập hay quyền sở hữu đối với tập tin đó. Tất nhiên, một khi đã chuyển quyền sở hữu của mình cho ng−ời dùng khác thì ng−ời chủ cũ không đ−ợc phép chuyển quyền sở hữu và quyền truy nhập đ−ợc nữa. Tập hợp một chuỗi có 10 ký tự đã giới thiệu trên đây đ−ợc chia ra làm 4 phần: kiểu tập tin, các quyền truy nhập đến tập tin của chủ sở hữu, của nhóm sở hữu và ng−ời dùng khác. Có một số kiểu tập tin trong Linux. Ký tự đầu tiên trong tập hợp 10 ký tự mô tả kiểu tập tin và quyền truy nhập sẽ cho biết tập tin thuộc kiểu nào (chữ cái đó đ−ợc gọi là chữ cái biểu diễn). Bảng d−ới đây sẽ liệt kê các kiểu tập tin trong Linux: Chữ cái biểu diễn Kiểu tập tin d Th− mục (directory) b Tập tin kiểu khối (block-type special file) c Tập tin kiểu ký tự (character-type special file) l Liên kết t−ợng tr−ng (symbolic link) p Tập tin đ−ờng ống (pipe) s Socket - Tập tin bình th−ờng (regular file) 48
  49. Simpo PDF Merge and Split Unregistered Version - Chín ký tự tiếp theo trong chuỗi quyền truy nhập đ−ợc chia ra làm 3 nhóm t−ơng ứng với quyền truy nhập của ng−ời sử hữu, nhóm sở hữu và ng−ời dùng khác. Ví dụ, 10 ký tự đầu tiên trong dòng ví dụ ngay tr−ớc đây sẽ đ−ợc phân tích thành: drwxr-x Kiểu tập Quyền Quyền Quyền của tin: th− mục của ng−ời của nhóm ng−ời dùng hủ hủ khác Để hiểu đ−ợc chính xác quyền truy nhập có ý nghĩa nh− thế nào đối với hệ thống máy tính, phải nhớ rằng Linux xem mọi thứ đều là tập tin. Nếu cài đặt một ứng dụng, nó cũng sẽ đ−ợc xem nh− mọi ch−ơng trình khác, trừ một điều: hệ thống nhận biết rằng một ứng dụng là một ch−ơng trình khả thi, tức là nó có thể chạy đ−ợc. Một bức th− gửi cho mẹ là một dạng tập tin văn bản bình th−ờng, nh−ng nếu thông báo cho hệ thống biết đó là một ch−ơng trình khả thi, hệ thống sẽ cố để chạy ch−ơng trình (và tất nhiên là lỗi). Có ba loại quyền truy nhập chính đối với th− mục/tập tin, đó là: đọc (read - r), ghi (write - w) và thực hiện (execute - x). Quyền đọc cho phép ng−ời dùng có thể xem nội dung của tập tin với rất nhiều ch−ơng trình khác nhau, nh−ng họ sẽ không thể thay đổi, sửa chữa hoặc xóa bất kỳ thông tin nào trong đó. Tuy nhiên, họ có thể sao chép tập tin đó thành tập tin của họ và sửa chữa tập tin bản sao. Quyền ghi là quyền truy nhập tiếp theo. Ng−ời sử dụng với quyền ghi khi truy nhập vào tập tin có thể thêm thông tin vào tập tin. Nếu có quyền ghi và quyền đọc đối với một tập tin, có thể soạn thảo lại tập tin đó - quyền đọc cho phép xem nội dung, và quyền ghi cho phép thay đổi nội dung tập tin. Nếu chỉ có quyền ghi, sẽ thêm đ−ợc thông tin vào tập tin, nh−ng lại không thể xem đ−ợc nội dung của tập tin. Loại quyền truy nhập thứ ba là quyền thực hiện, quyền này cho phép ng−ời dùng có thể chạy đ−ợc tập tin, nếu đó là một ch−ơng trình khả thi. Quyền thực hiện độc lập với các quyền truy nhập khác, vì thế hoàn toàn có thể có một ch−ơng trình với quyền đọc và quyền thực hiện, nh−ng không có quyền ghi. Cũng có tr−ờng hợp một ch−ơng trình chỉ có quyền thực hiện, có nghĩa là ng−ời dùng có thể chạy ứng dụng, nh−ng họ không thể xem đ−ợc cách nó làm việc hay sao chép nó. Bảng d−ới đây giới thiệu cách ký hiệu của các quyền truy nhập: Quyền truy nhập ý nghĩa Không cho phép quyền truy nhập nào r Chỉ đ−ợc quyền đọc r-x Quyền đọc và thực hiện (cho ch−ơng trình và shell script) rw- Quyền đọc và ghi rwx Cho phép tất cả các quyền truy nhập (cho ch−ơng trình) Tuy nhiên, đối với th− mục thì chỉ có ba loại ký hiệu của các quyền truy nhập là: , r-x và rwx, vì nội dung của th− mục là danh sách của các tập tin và các th− mục 49
  50. Simpo PDF Merge and Split Unregistered Version - có bên trong th− mục đó. Quyền đọc một th− mục là đ−ợc xem nội dung của th− mục đó và quyền thực hiện đối với một th− mục là đ−ợc xem nội dung của các tập tin và th− mục con có trong th− mục. Nh− vậy, với ví dụ đang đ−ợc xem xét, chúng ta nhận đ−ợc đây là một th− mục và quyền truy nhập nó đ−ợc giải thích nh− sau: drwxr-xr- Kiểu Quyền Quyền Quyền tập tin: của ng−ời của nhóm ng−ời dùng th− mục chủ: đọc, chủ: đọc, khác: đọc, thực ghi, thực thực hiện hiện (không hiệ (không ghi) ghi) Giải thích: Sự hạn chế tr−ờng hợp về quyền truy nhập th− mục đ−ợc giải thích theo các lập luận nh− sau: Hãy hình dung, giả sử chỉ có quyền đọc trên th− mục, khi đó sẽ xem đ−ợc có những tập tin hay th− mục nào trong th− mục nh−ng lại không thể xem cụ thể nội dung của một tập tin hay th− mục có trên th− mục đó. Hoặc giả sử có quyền thực hiện - quyền này sẽ cho phép thao tác với các tập tin có trên th− mục - nh−ng lại không có quyền đọc đối với một th− mục, vậy thì làm thế nào để biết đ−ợc trong th− mục có những tập tin nào. 3.2.2. Các lệnh cơ bản a. Thay đổi quyền sở hữu tập tin với lệnh chown Để thay đổi quyền sở hữu đối với một tập tin, hãy sử dụng lệnh chown với cú pháp nh− sau: chown [tùy-chọn] [chủ][.nhóm] Lệnh này cho phép thay chủ sở hữu tập tin. Nếu chỉ có tham số về chủ, thì ng−ời dùng chủ sẽ có quyền sở hữu tập tin và nhóm sở hữu không thay đổi. Nếu theo sau tên ng−ời chủ là dấu "." và tên của một nhóm thì nhóm đó sẽ nhóm sở hữu tập tin. Nếu chỉ có dấu "." và nhóm mà không có tên ng−ời chủ thì chỉ có quyền sở hữu nhóm của tập tin thay đổi, lúc này, lệnh chown có tác dụng giống nh− lệnh chgrp (lệnh chgrp đ−ợc trình bày d−ới đây). Các tùy chọn của lệnh chown: -c, changes hiển thị dòng thông báo chỉ với các tập tin mà lệnh làm thay đổi sở hữu (số thông báo hiện ra có thể ít hơn tr−ờng hợp -v, -verbosr). -f, silent, quiet bỏ qua hầu hết các thông báo lỗi. -R, recursive thực hiện đổi quyền sở hữu đối với th− mục và tập tin theo đệ quy. 50
  51. Simpo PDF Merge and Split Unregistered Version - -v, verbose hiển thị dòng thông báo với mọi tập tin liên quan mà chown tác động tới (có hoặc không thay đổi sở hữu). help đ−a ra trang trợ giúp và thoát. Ví dụ, th− mục LinuxVN.com có thông tin về các quyền truy nhập nh− sau: drwxr-xr-x 12 thu root 4096 Oct 23 2000 LinuxVN.com Ng−ời sở hữu hiện tại th− mục LinuxVN.com là ng−ời dùng thu. Để ng−ời dùng lan là chủ sở hữu th− mục trên, hãy gõ lệnh: # chown lan LinuxVN.com Khi đó, nếu dùng lệnh ls thì thông tin về th− mục LinuxVN.com sẽ có dạng: drwxr-xr-x 12 lan root 4096 Oct 23 2000 LinuxVN.com với ng−ời sở hữu th− mục bây giờ là ng−ời dùng lan. Khi chuyển quyền sở hữu tập tin cho một ng−ời khác, ng−ời chủ cũ mất quyền sở hữu tập tin đó. b. Thay đổi quyền sở hữu nhóm với lệnh chgrp Các tập tin (và ng−ời dùng) còn thuộc vào các nhóm, đây là ph−ơng thức truy nhập tập tin thuận tiện cho nhiều ng−ời dùng nh−ng không phải tất cả ng−ời dùng trên hệ thống. Khi đăng nhập, mặc định sẽ là thành viên của một nhóm đ−ợc thiết lập khi ng−ời dùng cao cấp root tạo tài khoản ng−ời dùng. Cho phép một ng−ời dùng thuộc nhiều nhóm khác nhau, nh−ng mỗi lần đăng nhập chỉ là thành viên của một nhóm. Để thay đổi quyền sở hữu nhóm đối với một hoặc nhiều tập tin, hãy sử dụng lệnh chgrp với cú pháp nh− sau: chgrp [tùy-chọn] {nhóm| reference=nhómR} Lệnh này cho phép thay thuộc tính nhóm sở hữu của tập tin theo tên nhóm đ−ợc chỉ ra trực tiếp theo tham số nhóm hoặc gián tiếp qua thuộc tính nhóm của tập tin có tên là nhómR. Các tùy chọn của lệnh là (một số t−ơng tự nh− ở lệnh chown): -c, changes hiển thị dòng thông báo chỉ với các tập tin mà lệnh làm thay đổi sở hữu (số thông báo hiện ra có thể ít hơn tr−ờng hợp -v, -verbosr). -f, silent, quiet bỏ qua hầu hết các thông báo lỗi. -R, recursive thực hiện đổi quyền sở hữu đối với th− mục và tập tin theo đệ quy. -v, verbose hiển thị dòng thông báo với mọi tập tin liên quan mà chgrp tác động tới (có hoặc không thay đổi sở hữu). 51