T h c s d ng Linux

Tác gi : Kostromin V. A. D ch và c ng tác: Phan Vĩnh Th nh

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

M cl c
1 Cài đ t HĐH Linux trên cùng máy tính v i Windows 1.1 Chu n b cài đ t . . . . . . . . . . . . . . . . . . . . . . 1.2 Phòng xa và nh ng l i khuyên . . . . . . . . . . . . . . 1.3 Phân vùng trên đĩa và quá trình kh i đ ng . . . . . . 1.3.1 Th nào là c u trúc “hình h c c a đĩa” . . . . . 1.3.2 Phân vùng và b ng phân vùng c a đĩa . . . . . 1.3.3 Quá trình kh i đ ng HĐH công ty Microsoft . 1.3.4 V n đ v i các đĩa l n . . . . . . . . . . . . . . . 1.4 L a ch n trình kh i đ ng . . . . . . . . . . . . . . . . . 1.4.1 Trình kh i đ ng GRUB1 . . . . . . . . . . . . . 1.4.2 Trình kh i đ ng LILO . . . . . . . . . . . . . . 1.4.3 Các trình kh i đ ng khác . . . . . . . . . . . . . 1.4.4 Các phương án kh i đ ng . . . . . . . . . . . . 1.5 Chu n b các phân vùng trên đĩa . . . . . . . . . . . . 1.5.1 L i khuyên khi t o phân vùng . . . . . . . . . . 1.5.2 Chương trình đ phân chia đĩa . . . . . . . . 1.6 Windows NT và Linux: kh i đ ng qua NT OS Loader 1.7 S d ng trình kh i đ ng GRUB2 . . . . . . . . . . . . 1.7.1 Cài đ t GRUB . . . . . . . . . . . . . . . . . . . 1.7.2 C u hình GRUB . . . . . . . . . . . . . . . . . . 1.8 S d ng trình kh i đ ng LILO . . . . . . . . . . . . . 1.8.1 Cài đ t và c u hình LILO . . . . . . . . . . . . 1.8.2 Cài đ t các h đi u hành khác sau Linux . . . 1.8.3 Chuy n thư m c /boot lên phân vùng DOS . . 1.9 Kh i đ ng Linux t MS-DOS b ng loadlin.exe . . . . 2 Kh 2.1 2.2 2.3 2.4 2.5 2.6 i đ ng Linux l n đ u Kh i đ ng HĐH Linux . . . . Đăng nh p vào h th ng . . . Console, terminal o và shell So n th o dòng l nh. L ch s l Ng ng làm vi c v i Linux . . Tr giúp khi dùng Linux . . . 2.6.1 Các ngu n thông tin tr 2.6.2 Các trang tr giúp man 2 2 4 6 6 6 8 10 11 11 13 14 15 16 16 18 19 22 22 22 24 24 27 27 28 31 31 32 35 37 39 41 41 42

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

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

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

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

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

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

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

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

. . . . . . . . . . . . nh . . . . . . . . . giúp . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

1 2

Ph n v GRUB này do ngư i d ch vi t. Ph n v GRUB này do ngư i d ch vi t

. . . . . . . . . . . . . . .5 Thư m c hi n th i và thư m c cá nhân . . . . . . 3.5 Phép th s h c (Arithmetic Expansion) . . . . . . . . . . .3 Th c thi các câu l nh . .4 2. . . . . 3. . . .1 Các d ng tham bi n khác nhau . .4. . .3. . . . . . . 3. . . . . . . . . . .3 Toán t case . . . . . . .6. Tài li u đi kèm v i b n phân ph Câu l nh xman . . . . . 3. .4 Toán t select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. . .7. . . . . Câu l nh helptool . .8 Xóa các ký t đ c bi t . . . . . . . . . . . . . . . . . . . . . . . .6 Phân chia t (word splitting) . . . . . . . . . . . . . . .3. . . . . . . . . . . .7 Khai tri n bi u th c . . .1 S d ng >. . . . .7. . . . . . . . . .4.6. . . . . . . . . . . . . . . . . . . .7 2. 3. .8 Câu l nh info . . . .8 Shell . . . . . . M CL C . . . . . . . . . . . . . .5 Toán t for . . . . . . . . . . . .8. . . . .m t ngôn ng l p trình . . . . . . . . . . . . .8. . . . . . . . . . . . . . . . .7. . . . . . . . . . . . 3. . .6 Câu l nh export . . . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . . . . . . . . . . 3. . . . i và chương trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . . .4 Bi n môi trư ng IFS . . . .2 Thao tác & . .5 Chuy n hư ng đ u vào/đ u ra. . .3. . . . . .2 Thay th d u ngã (Tilde Expansion) . . . . . .6. . . . . . .6 Tham bi n và các bi n s . . .6. . . . . . . . 3. . . . . . . . . . . . .2 Các ký t đ c bi t . .5. . .2 S d ng | . . . . . . . . . . . 3. . . . . . . . . 3. . . . . . . .3 2. . . . . 3. 3. . . . . . . . . . . . .6. . . . . . . . Sách và Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . . . . . . . . . . . .6.7. . . . 43 44 44 45 45 45 48 48 49 50 50 51 51 51 51 52 52 53 53 55 55 56 56 58 59 60 60 60 60 61 62 62 62 63 63 63 64 64 64 65 68 68 69 70 70 3 Bash 3. . . . . .iv 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7. . .5 2.5. . . 3. . .6. . . 3. . . . . . . . . 3. . . . . . . . . . 3.3 B l c . . . . . . . . . . . . . . . . . . . . . đư ng ng và b l c . 3. . . . . . . . . .3 Phép th các tham bi n và bi n s . . .1 Dòng d li u vào-ra . . . . . . . . . . . . .7. . . . . . . 3. . .8. . . . . . . . . . 3. . . . . 3. . . . . . . . . 3. . .8. . . . . . . . . . . . . 3. . . . . . . . . . . .7 Khai tri n các m u tên t p tin và thư m c (Pathname Expansion) . . . .4 Đ u vào/đ u ra tiêu chu n . . . . . . . . . . . .1 Thao tác . . . . . . . . . . .7. . . . . 3. . . . . . . . . .2 D u nh c c a h v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 Toán t test và đi u ki n c a bi u th c . . . . . . . . . 3. . . . . . 3. . . 3.6. . .2 L nh echo . . .6.8. .3 L nh cat . . . . . . 3. . .6. . . . Câu l nh help . . . 3. . . . . . . . . . . . . . .1 H v là gì? . . . .7 Các hàm s . . < và » . . . . . .8. . . . . . . . . . . . . . . .6 Toán t while và until . . .6. . .4 Phép th các câu l nh . 3. . . . . . . . . . . . . . . . . . . . ng . . . . . . . . . .6 2. 3. . . . . . . . .1 Khai tri n d u ngo c . . . . . . . 3.6. . . . . . . . . . . . . . . . . . . . . . . . Môi trư ng c a h v . . .7. . . . . . . . . . . . . . . . .5. . . . 3.3 Bi n môi trư ng PATH . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. . .4. . . . . . . . .8. . . . . . . . . . . . . .1 Toàn t if và test (ho c [ ]) . . . . . . . . . . . . .3 Thao tác && và || . . . . . . . ng d . . . . . . . . . .

. .9 Script c a h v và l nh source 3. . .8. . . 3. . . . . . . . . . . . . .9 Bi n n i b (local) . . . . . .10 Câu l nh sh . . .M CL C 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Tham s . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . . . . . . . . . .8. . . . . . . . . . v 71 71 72 72 . . . . . . .

. . . . . . . . . . . . 16 2. . .2 Nhu c u s d ng không gian đĩa c a HĐH . . . . . . . . . . . .2 3. Thay th các tham bi n đ c bi Ký t xác đ nh d ng d u nh c Các ký t t o m u . . . . . 9 1. . . . . . . . . . . . . . . . . .1 2. . . . . . . .4 Nh ng câu l nh đơn gi n c a Linux Nh ng phím so n th o dòng l nh . . . .4 2. . . . . . . . . . .3 3. . . . . . . . . . . . . . . . . . . . . . Các câu l nh b l c . . . . . . . . . . . . . . . . . . . . . . . . Phím s d ng đ xem trang man . . . . . . . .Danh sách b ng 1. . . . . . . . . . . . . . . .2 2. . . . . 34 38 40 42 43 56 57 59 64 . . . . . . . . . . . . . . . . . . . . . . . . . . . T h p phím đi u khi n l ch s l nh Các ph n chính c a tr giúp man . . . . . t . . . . . . . . . . . . . . . . . . . . . . . .1 C u trúc c a sector kh i đ ng chính . . . . . . . . . .5 3. . . . . . . . .3 2. . . . . . . . . .1 3. . . . . . .

xin đư c đưa ra các liên k t t i b n g c đây: http://rus-linux.1 C p nh t cu i cùng: Ngày 6 tháng 9 năm 2006 M i đ ngh s a đ i.chat.php?name=book1/oglavl http://linux-ve. vi t m t cu n sách v Linux cho i Quý và Nguy n Đ ng Hoàng Nguy n Đ i Quý đã đ c và s a i d ch t i teppi82@gmail. A. thông báo l i chính t .L im đ u Đây là b n d ch cu n “Linux cho ngư i dùng” (sêri sách t h c) c a Kostromin Victor Alexeevich c ng thêm m t vài kinh nghi m s d ng Linux c a ngư i d ch. hai bác Nguy n Đ A Tuân đã giúp trong vi c s d ng L TEX. A.com.net/book1.5/). cũng như ngư i d ch và c ng tác không ch u trách nhi m v h u qu do vi c s d ng cu n sách này gây ra.com n u Cu n “T h c s d ng Linux” này s d ng b n quy n Creative Commons Public License 2. . Bác cho phiên b n 0. V.9. đã ngư i dùng m i tuy t v i. Xin hãy g i thư nh c ngư như ngư i d ch có quên ai đó.. l i ki n th c c a b n d ch cũng như đ ngh giúp đ d ch xin g i cho Phan Vĩnh Th nh theo đ a ch teppi82@gmail.org/licenses/by/2. Phiên b n 0.9.ru/ C m ơn Trư c tiên c n c m ơn Kostromin V. Tác gi Kostromin V. B n g c đư c vi t trên ti ng Nga.5 (http://creativecommons. Theo yêu c u c a Kostromin A.

m t cách t nhiên. Ngoài ra. Slackware. R t may là không nh t thi t ph i đánh m t t t c nh ng th đó. Fedora. ph n l n ngư i dùng Vi t Nam trư c khi b t đ u h c Linux đã làm quen và r t có th đã có kinh nghi m s d ng các HĐH dòng Windows như Windows 98. B i vì trên m t máy tính có th cùng “chung s ng hòa bình” hai HĐH và th m chí nhi u hơn n a (n u có đ ch trên đĩa!). Và t t c các b n phân ph i l n (Debian. n u ngư i dùng đã làm vi c v i HĐH Windows và quy t đ nh th nghi m v i Linux. . Chính vì th . Và trên th c t thì t m th i Linux khó có th là HĐH đ u tiên mà ngư i dùng làm quen.. cho m i tình hu ng s d ng. Thay vào đó là nh ng gì b n c n bi t và chu n b trư c khi cài đ t.. tác gi s không đưa ra các bư c c th c a vi c cài đ t.) đ u đã có cu n hư ng d n cài đ t r t chi ti t.Chương 1 Cài đ t HĐH Linux trên cùng máy tính v i Windows V n s kh i đ u nan – Trung Qu c Thông thư ng trên các đĩa c a b n phân ph i Linux đã có hư ng d n ng n g n cách cài đ t Linux. V nđ ch .1 Chu n b cài đ t Có th cài đ t Linux b ng m t trong các cách sau: ˆ T đĩa CD-ROM đĩa c ng ˆ T b n sao chép Linux trên . tác gi s đi c th và chi ti t vào nh ng gì đ c bi t khi cài đ t Linux trên máy tính đã có m t trong các h đi u hành (HĐH) Windows cũng như vi c kh i đ ng nhi u h đi u hành. Windows 2000 và Windows XP. phía dư i s nói cách cài đ t HĐH Linux trên máy tính đã cài đ t m t trong các h đi u hành c a hãng Microsoft. 1. Hãy ch đ i và hy v ng trong tương lai không xa s có b n d ch Ti ng Vi t c a nh ng cu n sách này. Chính vì v y trong cu n sách này. mà xin b n đ c hãy tìm các cu n hư ng d n tương ng. trên Internet b n có th tìm th y r t nhi u cu n sách nó v v n đ này. cùng v i nh ng gì đã t o ra và đã c u hình dư i dư i Windows. thì h không mu n m t đi môi trư ng làm vi c quen thu c c a mình. đ ng th i. Như th . Mandrake.

Theo ý ki n cá nhân c a tác gi thì thu n ti n và có tính th c t nh t là cài đ t Linux t CD-ROM. . hay giao di n khác). xin đư c đưa ra đây danh sách nh ng thông tin c n thu th p. ˆ Controller đĩa c ng: lo i (IDE hay SCSI) và dung lư ng c a đĩa (n u như b n đ c dùng đĩa IDE.1 Chu n b cài đ t ˆ T máy ch t p tin c a m ng n i b qua NFS. thì c n ki m tra xem BIOS có h tr vi c truy c p ch đ LBA hay không): – hda (Master trên controller s 1 hay Primary Master). hãy thu th p (hãy vi t lên m t t gi y) t t c nh ng thông tin c u hình c n thi t c a máy tính. ˆ T máy tính 3 xa (ví d t Internet) qua giao th c FTP. hay bus mouse). – hdb (Slave trên controller s 1 hay Primary Slave). – hdc (Master trên controller s 2 hay Secondary Master). Xin đ ng lư i bi ng và hãy c g ng ghi càng nhi u d li u v m t thi t b càng t t (t t c nh ng thông tin có th tìm th y). nh ng d li u này s c n đ n khi cài đ t và c u hình. PS/2.1. ch n l nh Properties. thì c n tìm ki m theo các cách khác. hơn n a vi c mua các đĩa CD bây gi không gây khó khăn gì. – s hi u phiên b n. Đ giúp b n đ c. đây b n có th tìm th y g n h t t t c thông tin c n thi t. N u như máy tính c a b n t m th i v n còn làm vi c dư i HĐH Windows 95/98/2000/XP. – nhà s n xu t và s m u mã c a adapter SCSI (n u có). ˆ T m t máy ch WWW qua giao th c HTTP. ˆ Chu t: – lo i chu t (serial. – đ i v i các đĩa CD-ROM không ph i IDE. khi mà vi c tìm ki m chúng s khó khăn hơn. cũng như SCSI . Trư c khi b t đ u cài đ t.nhà s n xu t và s m u mã. SCSI. ˆ Dung lư ng c a b nh (tính b ng Kilobyte ˆ CD-ROM: – Giao di n (IDE. – hdd (Slave trên controller s 2 hay Secondary Slave). N u như b n không th y thông tin nào đó. thì b n s tìm th y r t nhi u thông tin n u nh n chu t ph i vào bi u tư ng My Computer. ˆ BIOS: – nhà s n xu t. ˆ T máy tính khác trong m ng n i b qua SMB. k c vi c m v máy và đ c nh ng dòng ch trên thi t b .

Nhưng rơi vào tình hu ng như v y h t s c d dàng nh t là v i ngư i dùng l n đ u tiên cài đ t Linux. c n ghi l i nh ng . Windows không hi n th nh ng giá tr này. – đ i v i chu t c m vào c ng n i ti p thì c n s th t c a c ng đó. – đ a ch IP c a mình. MouseMan. – đ a ch IP c a gateway. – tên c a máy tính trong m ng. – s nút. và trong trư ng h p x u có th máy tính c a b n đ c s không kh i đ ng n a.2 Phòng xa và nh ng l i khuyên Trư c khi cài đ t HĐH Linux sau Windows. ). max) c a t n s làm m i theo chi u d c và theo chi u ngang (nh ng giá tr này b n đ c ch có th tìm th y trong tài li u đi kèm v i màn hình. Các thao tác này không ph i lúc nào cũng đem l i đem l i m t k t qu theo ý mu n. – m t n m ng con (subnet mask).v. c n t o m t đĩa m m kh i đ ng hay m t đĩa m m giúp ph c h i h th ng (n u b n đ c còn chưa t o). r t nên th c hi n vài thao tác “phòng xa” (“phòng cháy hơn ch a cháy”). Chính vì v y. ˆ N u như b n đ c mu n k t n i m ng (mà UNIX nói chung là HĐH dành cho m ng). Logitech. thì hãy ghi l i nh ng d li u sau: – nhà s n xu t và s m u mã c c m ng. – đ a ch IP c a các máy ch tên mi n (DNS server). ˆ Màn hình – nhà s n xu t – s m u mã. v. Có bi t cách thoát ra kh i tình hu ng này và ph c h i d li u c n thi t không đó còn là m t câu h i. đ u tiên. – tên mi n c a công ty b n đ c. thay đ i b n ghi kh i đ ng (Boot Record) và làm vi c v i các t p tin kh i đ ng cũng như các t p tin c u hình.4 Cài đ t HĐH Linux trên cùng máy tính v i Windows – giao th c (Microsoft. – s m u mã (hay chipset s d ng) – dung lư ng b nh . ˆ C c màn hình – nhà s n xu t. – đ a ch IP c a máy ch WINS(Windows Internet Name Service). – các giá tr gi i h n (min. Th hai. ˆ Lo i và nhà s n xu t c c âm thanh và game controller (n u như có) 1. Vì r t có th b n đ c s ph i phân vùng l i đĩa. và chúng r t quan tr ng trong khi c u hình giao di n đ h a). . .

ˆ Hãy đ c tài li u. CD) cài đ t cho h th ng cũ. Nguyên nhân là trong phương án theo m c đ nh thì tư ng l a đư c cài đ t. Đ c bi t trong các trư ng h p. thì trong quá trình cài đ t c n ch rõ các d ch v đư c m . và t đ ng nh n lên nút Next. Xin chia s m t kinh nghi m bu n: khi l n đ u tiên tác gi cài Linux trên máy tính đã có Windows NT. Th nh t. Vì v y có th nói r ng Werner Almesberger đúng. quá trình cài đ t HĐH Linux nói riêng không ph i là đ tài c a cu n sách. m c dù đã c u hình giao di n m ng cho máy. Đ minh ch ng cho l i khuyên này xin đư c k l i trư ng h p khi tác gi cài Red Hat 7. ki m tra l i nhi u l n thao tác c a mình. tác gi khuyên không nên đ ng ý v i vi c t đ ng kh i đ ng vào giao di n đ h a. Và th ba. t c là c n chia đĩa thành s phân vùng c n thi t. chu n b các đĩa (phân vùng) đ cài đ t. Nhưng chúng ta quá v i vàng! Th hai. NFS. Vì cu i cùng ngư i dùng không khó khăn gì khi gõ câu l nh startx. c n quy t đ nh s t ch c kh i đ ng nhi u HĐH như th nào. khi h th ng làm nh ng gì b n đ c không mong đ i. và k t qu là máy tính không th kh i đ ng đư c. t c là các t p tin ghi l i s ki n c a h th ng (c n tìm chúng trong thư m c /var/log). . Như đã nói trên. M t l i khuyên quan tr ng khác: n u có gì đó x y ra không theo ý mu n thì không nên hoang mang. tác gi cũng mu n đưa ra vài l i khuyên đ giúp ngư i dùng đưa ra quy t đ nh trong khi cài đ t. K t qu là tác gi không th truy c p đư c đ n máy này qua các giao th c m ng (telnet. Không hi u h t v n đ tác gi nghĩ là không còn cách gì khác ngoài đ nh d ng l i đĩa và cài đ t l i t đ u. còn vi c c u hình giao di n đ h a (n u có gì đó làm vi c không đúng) v i ngư i dùng m i r t khó thành công. vì cho r ng phương án theo m c đ nh là đ . xin đư c nói qua m t chút v c u trúc c a đĩa và quá trình kh i đ ng HĐH. hãy th m i cách đ tìm ra nguyên nhân. N u ai đó không đ kiên nh n đ đ c ph n lý thuy t này. Ch sau khi đó m i th c hi n các bư c s a l i. và tư ng l a đóng h t các truy c p t m ng. chu n b các t p tin (đĩa m m.1.2 Phòng xa và nh ng l i khuyên 5 d li u có giá tr (backup). N u như có gì đó không làm vi c. thì có th b qua chúng và chuy n th ng đ n v n đ ch n chương trình kh i đ ng. Tuy nhiên.1. khi trong hư ng d n s d ng LILO có đưa ra nh ng l i khuyên sau cho ngư i dùng khi rơi vào trư ng h p khó khăn như v y: ˆ Không ho ng h t. Bây gi thì tác gi đã hi u là có th ph c h i l i n u như không quy t đ nh quá v i vàng. Xin thêm m t l i khuyên ph bi n sau: * Hãy xem các t p tin log. Samba). Ngư i dùng c n tìm các cu n hư ng d n tương ng. Nhưng trư c khi chuy n sang các bư c c th đ chu n b đĩa. Sau khi làm xong các công vi c phòng xa. Đ m truy c p này. đ ng v i vàng và hãy chú ý đ c nh ng thông báo s hi n th trên màn hình. và hãy suy nghĩ k khi ch n câu tr l i. ftp.

3. M i rãnh l i chia thành các sector. /* }. Đ c/Ghi d li u đư c th c hi n b i các đ u đ c n m gi a các đĩa này. B ng phân vùng ch a 4 b n ghi 16 byte cho 4 phân vùng chính. 83 -. t là đ c và ghi thông tin theo các kh i. 0: không kích ho t */ CHS sector đ u tiên. Sector đư c đánh đ a ch theo s th t cylinder.1 Phân vùng trên đĩa và quá trình kh i đ ng Th nào là c u trúc “hình h c c a đĩa” Như b n đ c bi t. và kích thư c nh nh t c a kh i b ng m t sector (512 byte). còn có hai chương trình đ làm vi c v i phân vùng đĩa: cfdisk và sfdisk. tính t 0) */ s sector có trong phân vùng (32 bit) */ B ng phân vùng đĩa thư ng đư c t o b i chương trình fdisk. Trên HĐH Linux ngoài chương trình fdisk “truy n th ng” (tuy v y r t khác so v i chương trình fdisk trong MS-DOS và Windows). /* char begin[3]. 24 bit lo i phân vùng (ví d . /* int length.2 Phân vùng và b ng phân vùng c a đĩa Trong các h th ng Intel đĩa thư ng đư c chia thành các phân vùng. Chương trình cfdisk. Vì th đ c đi m c a m t đĩa thư ng là t p h p ba sô: s cylinder/s rãnh trong cylinder/s sector trên rãnh hay còn vi t t t là C/H/S (ba ch cái đ u tiên c a các thu t ng Ti ng Anh tương ng: Cyliner/Head/Sector). 1. còn t p h p các rãnh n m ch ng lên nhau g i là cylinder. đĩa c ng g m vài đĩa có ph l p t tính. Đ có th ghi thông tin lên đĩa. M t trư ng h p nói riêng đó là trong các phân vùng khác nhau có th cài đ t các h đi u hành khác nhau. n m trên cùng m t tr c và quay v i v n t c l n.3.6 Cài đ t HĐH Linux trên cùng máy tính v i Windows 1. Vòng tròn đ u đ c v ra trên các đĩa khi quay quanh chúng g i là rãnh (track).LINUX_NATIVE) */ CHS sector cu i cùng. M i b n ghi có c u trúc như sau: struct partition { char active. M i phân vùng đư c dùng như m t đĩa v t lý riêng r . s th t đ u đ c (hay rãnh) và s th t sector trên rãnh. c n đ t đ u đĩa đúng v trí. Ba s này g i là c u trúc “hình h c c a đĩa”. và có th ghi vào m i sector 512 byte thông tin. Đ làm đư c đi u này. t c là ch cho controller bi t c n ghi thông tin này vào sector nào. /* int start. Đĩa c ng là các thi t b kh i. /* char end[3]. trong sector s 0 c a đĩa (sector s 0 c a rãnh đ u tiên trong cylinder s 0) ghi nh b ng chia đĩa thành các phân vùng (partition table). 0x80: phân vùng kích ho t. Khi đó đã nghĩ ra vi c chia đĩa thành các phân vùng. Ch khác bi t v i fdisk giao di n thu n ti n: ch d n s d ng . /* char type. gi ng như fdisk ch dành đ làm vi c v i b ng phân vùng đĩa: nó không quan tâm chú ý đ n thông tin có trên đĩa.3 1. R t có th nguyên nhân c a vi c phân vùng là nguyên nhân l ch s : các phiên b n MS-DOS đ u tiên không th s d ng đư c các đĩa l n. Đĩa v i c u trúc hình h c C/H/S có dung lư ng C*H*S*512 byte. mà dung lư ng đĩa l i phát tri n nhanh hơn kh năng c a DOS. 24 bit */ s c a sector đ u tiên (32-bit. di chuy n t tâm đĩa ra rìa ngoài c a đĩa.

Tuy nhiên trên th c th v n có nh ng h n ch . còn phân vùng thì không th l n hơn 2. và m i m t xích ti p theo – m t phân vùng lôgíc và v trí c a b ng ti p theo. hay trong m t phân vùng m r ng ch a nó (có th g i là “m ”) ch có th làm m t: không m t chương trình phân . ngay c v i các BIOS m i (v v n đ này s nói đ n sau). vì m i phân vùng lôgíc có th ch a b ng phân vùng và các phân vùng lôgíc c a mình. Phân vùng m r ng trên m t đĩa v t lý. 63 sectors/track Units = cylinders of 8225280 bytes. Và trong phân vùng m r ng ngư i ta t o ra các phân vùng lôgíc. Như v y.1. DOS s d ng trư ng begin và end c a b ng phân vùng và Interrupt 13 c a BIOS (Int 13h) đ truy c p t i đĩa. ch s d ng có hai dòng đ đưa ra m t phân vùng lôgíc và m t phân vùng m r ng. t c là dung lư ng có th đ t 2 Tbyte Vì trong b ng chia đĩa ch có 4 dòng cho các phân vùng. cho phép thao tác trên các phân vùng đã có c a đĩa. s phân vùng chính trên đĩa ngay t đ u dã h n ch : không th l n hơn 4. trong b ng này.3 Phân vùng trên đĩa và quá trình kh i đ ng 7 l nh và h th ng trình đơn (th c đơn). 255 heads. Linux thì ch s d ng trư ng start và length c a b ng phân vùng đĩa và h tr các phân vùng ch a đ n 232 sector. m t xích đ u tiên mô t ba phân vùng chính. còn hai cái còn l i không đư c s d ng. Ví d . vì th không th s d ng đĩa có dung lư ng l n hơn 8. M t trong s các phân vùng chính tr thành m r ng (lo i phân vùng . Phân vùng m r ng không đư c s d ng tr c ti p mà ch dùng đ ghi các phân vùng lôgíc.5 hay F hay 85 trong h cơ s mư i sáu).4 Gbyte. m t cho phân vùng m r ng khác. blocks of 1024 bytes.1 Gbyte (nhưng đây là do h n ch c a h th ng t p tin FAT16). Chương trình sfdisk trên Linux cho th y toàn b chu i này: [root]# sfdisk -l -x /dev/hda Disk /dev/hda: 784 cylinders. cũng gi ng như trong phân vùng m r ng chính. Linux không th làm vi c v i hơn 15 phân vùng trên các đĩa SCSI và hơn 63 phân vùng trên đĩa IDE. Khi mà 4 phân vùng tr thành ít. Chương trình sfdisk có vài kh năng cao hơn. thu đư c m t chu i các m t xích t b ng phân vùng. counting from 0 Device /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 /dev/hda5 — — — /dev/hda6 — — — Boot * Start 0+ 190 0 0 190+ 381 190 190 381+ 381 381 381 End 189 783 — — 380 783 189 189 783 380 380 380 #cyls 190594 0 0 191403 0 0 4030 0 0 #blocks 1526143+ 4771305 0 0 1534176 3237097+ 0 0 3237066 0 0 0 Id 6 5 0 0 6 5 0 0 7 0 0 0 System FAT16 Extended Empty Empty FAT16 Extended Empty Empty HPFS/NTFS Empty Empty Empty S phân vùng lôgíc theo nguyên t c không h n ch . M i phân vùng m r ng có m t b ng chia c a mình. ví d . Sector đ u tiên c a phân vùng m r ng ghi nh b ng phân vùng v i b n đ u vào: m t dùng cho phân vùng lôgíc. thì ngư i ta sáng ch ra phân vùng lôgíc.

Các phân vùng chính có thêm s 14 trong tên thi t b : /dev/hda1. /dev/sda. MS-DOS. Trong Windows các phân vùng lôgíc nh n đư c tên (ch cái). /dev/hda7 . Hãy b t đ u t MS-DOS và MS Windows cũ (xin đ ng quên r ng. kh i đ ng các th adaptor. và m t chương trình nh – trình kh i đ ng chính. kích thư c ch có 446 (0x1BE) byte. Int 19h c a BIOS n p trình kh i đ ng . thì trong sector s 0 c a đĩa có b n ghi kh i đ ng chính – Master Boot Record (MBR). Công vi c c a Int 19h là tìm thi t b kh i đ ng. Ngoài “s màu nhi m” MBR còn ch a b ng phân vùng đĩa đã nói trên. v. c ng. trong Windows NT và 2000/XP có th thay đ i tên c a các phân vùng đĩa. thì nh ng phân vùng lôgíc này s đư c đ t tên E: và F:.1 cho th y c u trúc c a sector kh i đ ng chính sau khi cài đ t Windows. . .8 Cài đ t HĐH Linux trên cùng máy tính v i Windows chia đĩa nào trong s đã có (fdisk và tương t ) có th t o thêm m t phân vùng m r ng th hai.3 Quá trình kh i đ ng HĐH công ty Microsoft Dù h đi u hành có là gì. c n n p HĐH vào b nh . Chương trình xác đ nh dung lư ng b nh . Chúng ta ch quan tâm đ n vi c kh i đ ng t đĩa c ng. đĩa trên Linux nói riêng ( đĩa v t lý) đư c truy c p qua tên c a thi t b : /dev/hda. và xác đ nh các thành ph n khác (bàn phím. Ngoài ra cũng có th t o MBR c a MS v i câu l nh DOS sau: fdisk /mbr.v. CD-ROM và qua m ng. Xin nói thêm. vi c phát tri n và hoàn thi n máy tính cá nhân song song v i s phát tri n c a HĐH c a Microsoft và nh ng quy t đ nh s d ng trong các HĐH này có nh hư ng m nh đ n quy t đ nh c a các nhà phát tri n thi t b ). 1. thì đ có th b t đ u đi u khi n máy tính. Sau khi hoàn thành vi c th nghi m POST g i Int 19h. . c ng COM và v. /dev/hda6. danh sách các thi t b nh n ra ( đĩa c ng và m m. Hai byte cu i cùng c a MBR – “s màu nhi m”. là d u hi u cho bi t sector có MBR. nên s không xem xét đ n vi c kh i đ ng t đĩa m m. Vì th hãy xem xét qua quá trình kh i đ ng c a các HĐH khác nhau. v vi c th nghi m b nh . /dev/hda3. th nghi m b nh . B ng 1. Trên màn hình thư ng xu t hi n các thông báo v dung lư ng b nh .v. N u đĩa có th kh i đ ng. ). . Vi c tìm ki m th c hi n theo th t xác đ nh trong Setup BIOS và theo cách thăm dò sector s 0 c a các thi t b tương ng. trong phân vùng m r ng t o ra hai phân vùng lôgíc. khi b t máy tính đ u tiên s ch y chương trình POST (Power On Self Test). b x lý. Ví d n u m t đĩa c ng có hai phân vùng chính (C: và D:) và m t phân vùng m r ng. /dev/hdb. . (b t đ u t s 5). b t đ u t ch cái cu i dùng dành cho phân vùng chính. và theo đó đĩa có th kh i đ ng. Như b n đ c bi t.3. T nh ng gì đ c p đ n trên có th suy ra t i sao l i có th b qua các tên như /dev/hda3 hay /dev/hda4 (đơn gi n là phân vùng chính th ba và th tư không đư c t o ra) và ngay sau /dev/hda2 b n đ c th y /dev/hda5 (phân vùng lôgíc trong phân vùng m r ng /dev/hda2). . còn phân vùng lôgíc thì có các tên: /dev/hda5. và sau đó thì vi c đánh s l i theo th t thông thư ng. /dev/hda2. ). Xin tr l i v i quá trình kh i đ ng. . Windows95 và NT ghi nh DOS MBR trong khi cài đ t. .

Đây là m t chương trình m ng và có th làm đư c nhi u th . trình kh i đ ng th hai chi m vài sector. Trình kh i đ ng th hai n p l p chương trình đ u tiên.3 Phân vùng trên đĩa và quá trình kh i đ ng 9 B ng 1. Nhưng chương trình “bé nh ” này không đ kh năng kh i đ ng HĐH. N u vì lý do nào đó không tìm th y trên đĩa phân vùng kích ho t. Dư i đây là m t ví d t p tin boot. trình kh i đ ng th hai chi m m t sector (512 byte). nhưng kh năng này có th có ích trong trư ng h p nào đó. c n thi t cho vi c kh i đ ng h đi u hành. Khi b n đ c ch n kh i đ ng DOS. khi h đi u hành kh i đ ng t máy ch . Vì trình kh i đ ng th hai trên các h th ng khác nhau có đ dài khác nhau. sau đó MSDOS.DOS. thì quá trình kh i đ ng s ti p t c v i vi c x lý Int 18h. Đ làm đư c đi u này. b t đ u t sector lôgíc đ u tiên c a phân vùng kích ho t. Hãy chú ý đ n c m t “b t đ u t ”. t t c nh ng gì mà nó có th làm – đó là n p vào b nh chương trình m nh hơn – trình kh i đ ng th hai. Quá trình kh i đ ng ti p t c v i vi c n p IO. Như th .SYS theo đ a ch 700h. Các t p tin DOS đư c gi l i dư i các tên tương ng IO. ˆ Windows NT4 s d ng MBR DOS.ini xác đ nh m t phương án (m t HĐH) kh i đ ng và đư c vi t theo m u sau: đ a_ch _trình_kh i_đ ng_th _hai=‘‘tên_g i_c a_phương_án’’ Đ a ch c a trình kh i đ ng th hai có th là m t phân vùng c th nào đó c a đĩa cũng như t p tin kh i đ ng. Đ i v i các HĐH khác c a Microsoft thì quá trình kh i đ ng di n ra tương t .SYS và chuy n quy n đi u khi n cho SYSINIT c a môđun IO. Trư ng h p này trên th c t r t hi m khi s d ng. Trong phân vùng đư c đ nh d ng dư i h th ng t p tin FAT. Trong trư ng h p MS DOS chương trình kh i đ ng đ ng n p IO. M i dòng c a ph n [operating systems] trong t p tin boot. Trong phân vùng đ nh d ng dư i h th ng t p tin NTFS. nhưng thay th b n ghi kh i đ ng c a phân vùng kích ho t b ng cách thay th NTLDR vào ch IO. có th tìm t p tin boot. ˆ Windows95 kh i đ ng gi ng như DOS nhưng thay th IO.ini: .ini và n u như tham s timeout l n hơn 0. nó tìm trong b ng phân vùng kích ho t và đ c vào b nh trình kh i đ ng th hai. thì đưa ra trình đơn (th c đơn) kh i đ ng. thì Int này đư c POST chuy n hư ng lên ROM c a c c m ng.SYS và MSDOS. Ví d .SYS.DOS và MSDOS.1: C u trúc c a sector kh i đ ng chính D ch chuy n N i dung 0x000 Mã c a trình kh i đ ng chính 0x1BE B ng phân vùng đĩa 0x1FE “S màu nhi m” (0xAA55) chính vào b nh máy tính và chuy n quy n đi u khi n cho chương trình này.SYS b i các t p tin c a mình. Trong khi kh i đ ng t xa. Windows95 s đ i tên các t p tin c a mình v i ph n m r ng w40 và ph c h i tên ban đ u c a các t p tin h th ng c a DOS.SYS. sector kh i đ ng c a DOS và Windows95 là như nhau.SYS.1.

BIOS v n không th làm vi c v i đĩa dung lư ng l n hơn 1024*63*16*512 = 528 Mbyte. vì tên c a t p tin kh i đ ng đư c l y theo m c đ nh: bootsect. và dù có dùng 10 bit đ ch ra cylinder. ngư i ta áp d ng nhi u cách “láu cá” khác nhau. Nhưng các nhà phát tri n càng ngày càng tăng m t đ ghi c a đĩa. (C n lưu ý r ng vi c đánh s cylinder v t lý và rãnh thư ng b t đ u t 0. Ví d . 5-0 tương ng s sector.LNX c n ghi n i dung c a b n ghi kh i đ ng. Ch c n thêm vào boot. có th s d ng cách đó. Đ vư t qua h n ch này. 1. còn sector trên rãnh đánh s b t đ u t 1). Cách này cho phép làm vi c v i đĩa có dung lư ng đ n 8192*16*63*512 = 4 227 858 432 byte hay 4. Trên dòng tương ng v i phương án Microsoft Windows. Tuy nhiên trên th c t s đ u đ c không quá 16. Extended CHS (ECHS) hay “Large disk support” (đôi khi còn g i là “Large”) s d ng ba bit chưa dùng đ n c a s th t đ u đ c đ tăng s cylinder.4 V n đ v i các đĩa l n Trên MS-DOS và các phiên b n đ u tiên c a Windows truy c p t i đĩa (trong đó có c bư c kh i đ ng đ u tiên c a HĐH) đư c t ch c qua Int 13 (Int 13h) c a BIOS.LNX="Linux" N u ngư i dùng ch n NT. Đ i v i vi c kh i đ ng các h th ng khác. ˆ DH — s c a đ u đ c. thì s kh i đ ng theo đ a ch phân vùng đư c ch trên dòng đ u tiên. Khi này s d ng s đánh đ a ch sector trên đĩa trên cơ s C/H/S (xem trên). T p tin đư c n p vào b nh và quá trình kh i đ ng đư c ti p t c gi ng như khi b n ghi kh i đ ng đư c n p b i mã chương trình t MBR. Ví d . Cách này cho pehsp s d ng c u trúc “hình h c gi m o c a đĩa” v i 1024 cylinder.dos. s sector trên rãnh không còn c đ nh mà tr thành khác nhau trên các rãnh . còn s sector trên rãnh – không quá 63.10 Cài đ t HĐH Linux trên cùng máy tính v i Windows [operating systems] multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4" C:\="Microsoft Windows" C:\BOOTSECT. ˆ DL — s c a đĩa(80h hay 81h).ini các dòng ch a liên k t đ n t p tin kh i đ ng khác. Trong ví d trên Linux cũng đư c kh i đ ng theo các này. Chính xác hơn: ˆ AH — ch n thao tác. Trong t p tin C:\BOOTSECT. s đĩa và s rãnh. ch đưa ra “C:\”. t o b i Linux (nói đúng hơn – LILO. ˆ CH — 8 bit nh hơn c a s cylinder. ˆ CL — 7-6 bit tương ng bit l n c a s cylinder. và còn phát minh ra các phương pháp khác đ tăng dung lư ng đĩa. Khi ch n các dòng này s kh i đ ng HĐH tương ng.3. 128 đ u đ c và 63 sector/rãnh. trình kh i đ ng tiêu chu n c a Linux).2 Gbyte. Bi n đ i Extended CHS thành đ a ch CHS th c (có th ch a đ n 8192 cylinder) đư c BIOS th c hi n.

“LBA”. Vì th trong giai đo n kh i đ ng đ u tiên b t kỳ h th ng nào cũng c n s d ng BIOS. b t đ u t sector đ u tiên trên rãnh s 0 c a cylinder s 0. Đi u này h n ch vi c đ t nhi u h th ng ra ngoài vùng 8 Gbyte đĩa đ u tiên: chúng không th kh i đ ng t đó. Đ có th hi u cách thoát kh i nh ng h n ch này. và theo đó. h th ng ph i đư c n p. vì không th s d ng nh ng trình kh i đ ng khác. M t l n n a mu n nh c l i r ng. Okuji chuy n GRUB thành m t gói chương trình GNU. . m c dù sau khi kh i đ ng thì có th làm vi c v i các đĩa có dung lư ng l n hơn nhi u. Thay vào ch đ a ch CHS m i sector nh n đư c m t đ a ch lôgíc – s th t c a sector trong t ng s t t c sector.1 L a ch n trình kh i đ ng Trình kh i đ ng GRUB1 GRUB (GRand Unified Bootloader) – trình kh i đ ng h t s c m nh có kh năng kh i đ ng r t nhi u HĐH mi n phí cũng như HĐH thương m i.đánh đ a ch các kh i theo đư ng th ng (“Linear Block Addressing” hay LBA). s c a sector đư c chuy n vào các l nh SCSI. t t c nh ng h n ch nói trên ch có ý nghĩa trong giai đo n kh i đ ng HĐH.4. Sau đó vào năm 1999 Gordon Matzigkeit và Yoshinori K. Khi đó ngư i ta nghĩ ra phương pháp khác đ làm vi c v i các đĩa lên qua Int 13h . s sector đư c tăng lên). Như v y. và sau đó t đĩa tìm ra v trí c n thi t. mà s d ng driver riêng c a mình.H. Không đi sâu vào chi ti t. vì th h n ch lên dung lư ng đĩa không xu t hi n. Nhưng trư c khi có th s d ng driver c a mình. B i vì Linux và các phiên b n Windows m i nh t khi làm vi c v i đĩa đã không còn s d ng Int 13 c a BIOS. GRUB đư c Erich Boleyn vi t vào năm 1995 đ kh i đ ng h th ng GNU Mach. Vì nguyên nhân này xu t hi n h n ch lên dung lư ng c a đĩa: BIOS. Trong các controller c a đĩa SCSI. có th nói r ng t t c sector trên đĩa đư c đánh s m t cách tu n t . Vi c đánh s sector lôgíc b t đ u t 0. mà Int 13h v n s d ng b 3D (C.4 L a ch n trình kh i đ ng 11 khác nhau (trên các rãnh n m g n rìa ngoài c a đĩa.S). 1. C n chú ý r ng h n ch nói trên ch áp d ng v i các đĩa có giao di n IDE. và các phiên b n BIOS cũ không th h tr truy c p t i toàn b không gian đĩa.1. dài hơn. và “Normal” (phương án cu i cùng có nghĩa là không th c hi n bi n đ i đ a ch ). MS-DOS và các phiên b n Windows đ u tiên không th đánh đ a ch các đĩa có dung lư ng l n hơn 8. Trong Setup BIOS h tr bi n đ i s th t theo đư ng th ng thành đ a ch CHS có d ng “H tr LBA”. M c dù m i ra đ i và s phiên b n 1 Ph n v GRUB này do ngư i d ch vi t.4 1. trong đó sector s 0 ch a b n ghi kh i đ ng chính (MBR). đưa chương trình này thành m t ph n m m mã ngu n m . K t qu là b ba s C/H/S không còn ph n ánh đúng c u trúc “hình h c c a đĩa”.4 Gbyte. Tuy nhiên trong ch đ LBA vi c s d ng đĩa v t lý v n đư c th c hi n qua Int 13h. trong các phiên b n BIOS m i thư ng có l a ch n v i ba phương án: “Large”. chúng ta c n m t chút ki n th c v quá trình kh i đ ng c a HĐH Linux.

t c là c ng th nh t. Ví d 2: (hd0. S nguyên ‘0’ đ u tiên cho bi t s th t c a . 2 hãy so sánh s phiên b n c a GRUB và LILO . ) cũng đã chuy n sang s d ng GRUB làm l a ch n theo m c đ nh. . Các b n phân ph i Linux l n (Debian. Ph n fd có nghĩa là đĩa m m. Làm sao đ ch ra m t t p tin? Hãy xem ví d sau đây: (hd0. H t s c đơn gi n! Thông tin trong ph n này s giúp b n hi u đư c c u hình c a GRUB s nói đ n s p t i đây. Fedora.. B ng grub shell b n có th “gi l p” (emulate) trình kh i đ ng này và cài đ t GRUB. Xin nh c l i m t l n n a là các s đ m đ u b t đ u t s không ‘0’.0)/vmlinuz Dòng này ch ra t p tin ‘vmlinuz’ n m trên phân vùng đ u tiên c a c ng đ u tiên. N u không có nhu c u đ c bi t nào đó thì b n nên ch n trình kh i đ ng này. GRUB s d ng m t phân vùng c a đĩa ch không ph i toàn b đĩa. M t đi m m nh khác c a GRUB đó là “grub shell” có th ch y khi b t đ u kh i đ ng ho c sau khi đã kh i đ ng xong h th ng. S ‘0’ ch ra s th t c a . Chú ý r ng các phân vùng m r ng đư c đ m b t đ u t ‘4’ không ph thu c vào s phân vùng chính (“primary partition”) th c t có trên đĩa. Trong trư ng h p này đây là phân vùng th hai c a c ng th nh t. Ngoài ra. đ m b t đ u t 0.4) Đây là phân vùng m r ng (“extended partition”) th nh t c a đĩa c ng th nh t.1) đây ‘hd’ có nghĩa là c ng. SuSE. S nguyên th hai (‘1’) cho bi t s th t c a phân vùng (chúng ta không xem xét các HĐH khác Linux). n u không mu n dùng giao di n dòng l nh. Ví d 3: (hd0. thì b n có th cài đ t và s d ng giao di n th c đơn và thay đ i giao di n th c đơn theo mong mu n c a mình.12 Cài đ t HĐH Linux trên cùng máy tính v i Windows còn r t nh 2 nhưng đây là s l a ch n t t đ i v i ph n l n ngư i dùng máy tính cá nhân. Bây gi chúng ta xem xét ng n g n v tên g i thi t b dùng trong GRUB. . Ví d m t cú pháp là: (fd0) Trư c tiên c n nói GRUB yêu c u t t c các tên thi t b ph i đ t trong ngo c ‘(’ và ‘)’. M t trong nh ng tính năng quan tr ng c a GRUB là tính m m d o. C n chú ý thêm là GRUB không phân bi t IDE và SCSI. vì cú pháp thi t b trong trình kh i đ ng này có khác m t chút so v i nh ng gì mà b n đã th y trên nh ng h th ng c a mình. Nó đ m s th t b t đ u t ‘0’ không ph thu c vào d ng đĩa. GRUB có th hi u các h th ng t p tin và đ nh d ng th c thi c a nhân. vì th b n có th n p HĐH theo cách ưa thích. B n c n hi u cú pháp này đ bi t cách ch ra m t đĩa hay phân vùng nào đó.

OS/2. và các t p tin ph c v : ˆ chương trình /sbin/lilo. đ nh d ng c a sector kh i đ ng t o ra b i LILO khác v i đ nh d ng MBR c a DOS. Sector kh i đ ng c a LILO có th đư c thi t k đ s d ng như sector kh i đ ng c a phân vùng. thì các h đi u hành đã cài c a Microsoft s ng ng kh i đ ng (n u như không có các bi n pháp b sung). ). . SCO UNIX. ˆ các t p tin ph c v . .v. trong t p tin này có ch ra v trí c a nhân. . S th t là ph n l n chương trình d ng fdisk không đ ra kh năng kh i đ ng kh i đ ng t phân vùng m r ng và t ch i vi c kích ho t phân vùng này. ˆ sector kh i đ ng c a phân vùng lôgíc trong phân vùng m r ng đĩa c ng đ u tiên (/dev/hda5. thư ng có tên /etc/lilo. DR DOS. M t t p tin quan tr ng khác – t p tin c u hình LILO. Tuy nhiên chương trình fdisk c a b n phân ph i Linux h tr kh năng kích ho t phân vùng m r ng. Windows NT/2000/XP. ph c v đ ghi t t c thông tin c n thi t trong giai đo n kh i đ ng vào các ch tương ng. . C hai ph n thư ng đư c ghi trên đĩa trong t p tin /boot/boot. LILO có th kh i đ ng nhân Linux t đĩa m m. Ph n th nh t đư c ghi vào sector kh i đ ng và ph c v đ n p ph n th hai. LILO không ph i là chương trình đơn l mà là m t b g m nhi u chương trình: trình kh i đ ng.2 Trình kh i đ ng LILO Trình kh i đ ng LILO đư c vi t b i Werner Almesberber. c n cho LILO trong th i gian kh i đ ng. . và cũng có th kh i đ ng các h đi u hành khác: PC/MS-DOS. . các chương trình s d ng đ cài đ t và c u hình trình kh i đ ng. trong đó có ch cho b ng phân vùng. . Trình kh i đ ng g m có hai ph n. Sector kh i đ ng c a LILO trong khi cài đ t có th đ t vào nh ng ch sau: ˆ sector kh i đ ng c a đĩa m m trong đ nh d ng Linux (/dev/fd0. C n nh r ng. ). Vì th n u ghi sector kh i đ ng LILO vào MBR.b. trình kh i đ ng n p nhân Linux hay sector kh i đ ng c a h đi u hành khác. .conf. C n ch y chương trình này sau m i l n có thay đ i trong nhân hay trong t p tin c u hình LILO. . ). ˆ MBR c a đĩa c ng đ u tiên (/dev/hda. LILO cho phép ch n đ n 16 h đi u hành khác nhau đ kh i đ ng. Quan tr ng nh t trong s chúng – đó là b n thân trình kh i đ ng (xem phía dư i) và t p tin map (/boot/map). ˆ trình kh i đ ng – đây là ph n LILO đư c n p vào b nh đ u tiên qua Int c a BIOS. Unixware v. Nh ng t p tin này thư ng n m trong thư m c /boot. . ˆ sector kh i đ ng c a phân vùng chính v i h th ng t p tin Linux trên đĩa c ng đ u tiên (/dev/hda1. /dev/hda2. .1. ch y dư i Linux. .4 L a ch n trình kh i đ ng 13 1. C n s d ng tùy ch n -b ho c bi n BOOT. có kích thư c l n hơn r t nhi u. 386BSD.4. Vì v y trong thành ph n LILO có ch a m t chương trình đ c bi t (activate) cho phép vư t qua h n ch này. đĩa c ng. ). . /dev/sda. Windows 95/98. . .

b i vì chúng c n đư c truy c p qua BIOS. 1.14 Cài đ t HĐH Linux trên cùng máy tính v i Windows Sector kh i đ ng c a LILO không th đ t vào các ch sau: ˆ sector kh i đ ng c a đĩa m m hay phân vùng chính. ˆ /boot/map (t o ra b i l nh /sbin/lilo). Xem ph n nói v h n ch c a BIOS trên. ˆ N u như trư c khi cài đ t Linux đã có HĐH Windows NT/2000/XP. ví d . B t đ u t phiên b n 21. LILO trong th i gian kh i đ ng c n nh ng t p tin sau: ˆ /boot/boot. đĩa th hai trên controller th hai (Secondary Slave). LILO đưa ra màn hình trình đơn (th c đơn) cho phép ch n h th ng đ kh i đ ng (trư c đây c n nh n phím Tab đ g i trình đơn này). thì trình kh i đ ng b n đ c có th s d ng là OS Loader c a NT. ˆ trên đĩa c ng th hai. ˆ N u như trư c khi cài đ t Linux b n đ c ch có HĐH Windows 95 hay Windows 98 và không có Windows NT/2000 hay XP. ˆ trong phân vùng swap c a Linux. t t c c u hình cũ không b m t (chúng ta có th ch n kh i đ ng Windows hay Linux theo l a ch n).b. ˆ sector kh i đ ng c a các h đi u hành khác mà b n đ c mu n kh i đ ng qua LILO. .exe (thư ng đi kèm v i b n phân ph i Linux). v i đ nh d ng h th ng t p tin khác Linux. ˆ t p tin ch a các thông báo đưa ra khi kh i đ ng (n u đư c xác đ nh). c n nh r ng. ˆ t t c phiên b n nhân kh i đ ng (n u b n đ c ch n phiên b n nhân khi kh i đ ng). và th hai. So sánh v i LILO thì trình kh i đ ng OS Loader có ít nh t hai ưu th . có th cài đ t Linux lên đĩa mà LILO không th kh i đ ng. thì OS Loader không đư c cài đ t. sector kh i đ ng LILO cũng như nh ng t p tin đã li t kê (trong s đó có các t p tin b n đ c s cài đ t sau này) c n n m trong ph m vi 1024 cylinder đ u tiên c a đĩa c ng. Như v y. Ngoài ra.4. Và n u như vì m t lý do nào đó b n đ c không mu n cài đ t LILO.3 Các trình kh i đ ng khác Ngoài GRUB và LILO đ kh i đ ng Linux có th kh i đ ng các trình kh i đ ng khác. Th nh t. thì có th s đ ng chương trình kh i đ ng loadlin.

ho c đ u tiên ch y DOS và sau đó kh i đ ng Linux nh chương trình loadlin. R t nhi u HOWTO kh ng đ nh r ng không c n s đ ng LILO. ˆ N u có Windows 95 hay Windows 98 trên FAT16.1. nhưng chúng ta s không xét đ n).4. Và t t c nh ng l i khuyên dùng sau c a tác gi s d a trên vi c s d ng LILO. theo ý ki n c a tác gi có các phương án kh i đ ng sau: ˆ N u trên máy ch có m t h đi u hành Linux duy nh t.unc. Tuy nhiên trư c khi cài đ t trình kh i đ ng c n chu n b các phân vùng trên đĩa. và t o cho tác gi m t n tư ng t t. m c dù tác gi không rõ nguyên nhân. Chúng ta s nói v chương trình này trong ph n nh ti p theo. thì hãy s d ng GRUB.4 L a ch n trình kh i đ ng 15 ˆ Th i gian g n đây trong thành ph n b n phân ph i Linux thư ng có chương trình kh i đ ng GRUB.edu/. c a tác gi đã k t thúc không thành công. Trong r t nhi u hư ng d n ngư i ta khuyên dùng chương trình này đ t i ch c kh i đ ng nhi u HĐH.4 Các phương án kh i đ ng Như v y. ˆ Trong các ngu n thông tin khác nhau còn nh c đ n chương trình System Commander. . NT Loader và loadlin. N u như có ý mu n cài đ t chương trình kh i đ ng khác. và b n đ c không mu n cài đ t thêm chương trình kh i đ ng. thì b n đ c c n đ c hư ng d n cài đ t và s d ng c a nó. trong trư ng h p này tác gi đã ph i s d ng chương trình loadlin. Trong nh ng ph n ti p theo tác gi s cho bi t cách cài đ t Linux. n u như phân vùng kích ho t có đ nh d ng FAT32. hãy dùng GRUB. s d ng t t c b n phương án kh i đ ng: qua trình kh i đ ng NT Loader. ˆ N u đã cài đ t Windows NT hay Windows 2000/XP. thì c n s d ng loadlin. Nhưng vì tác gi không s d ng nh ng chương trình này.exe đ kh i đ ng Linux. Ngoài ra tác gi còn th y nói đ n m t lo t trình kh i đ ng khác (m t s có th tìm th y trong thư m c /public/ftp/pub/Linux/system/boot/loaders trên trang ftp://metalab. thì có th s d ng GRUB ho c LILO.exe. ˆ Thêm m t trình kh i đ ng khác có trong thành ph n gói PartitionMagic c a công ty Power Quest. Vì th . trình kh i đ ng GRUB. Chương trình này đã hoàn thành t t nhi m v . cài đ t trên phân vùng FAT32. ˆ N u đã cài đ t Windows 95 OSR2 hay Windows 98 trên FAT32. 1.exe. có vài chương trình như v y. ˆ Trong thành ph n OS/2 c a công ty IBM có chương trình kh i đ ng Boot Manager.exe. trình kh i đ ng LILO và trình kh i đ ng loadlin. nên không th nói c th cách s d ng chúng. và b n đ c không mu n cài đ t chương trình kh i đ ng nào khác. Tuy nhiên thí nghi m kh i đ ng Linux qua NT Loader.exe (hay m t chương trình tương t .exe. vì th tác gi khuyên b n đ c s d ng loadlin. hay ít nh t là nghĩ cách t ch c chúng.

. đây không th ch chia m t phân vùng. . B ng 1.4 Gbyte (nói chính xác hơn – s cylinder không vư t quá 1024).16 Cài đ t HĐH Linux trên cùng máy tính v i Windows 1. Hãy tính r ng. thì s có 384 Mbyte b nh o.2: Nhu c u s d ng không gian đĩa c a HĐH Yêu c u 100 Mbyte 200 Mbyte 200 Mbyte 700 Mbyte 6. còn đ i v i Windows 200 thì c n phân vùng l n hơn. c n chia m t phân vùng swap riêng bi t cho Linux. . chương trình so n th o r t m nh Lyx. Nhưng cũng xin th đưa ra vài đ ngh sau. Chính vì th t t hơn h t là dành cho m i h đi u hành m t (ho c th m chí m t vài như chúng ta s th y dư i) phân vùng riêng. Tác gi s đ t tên đĩa và phân vùng theo “tiêu chu n” c a Linux. 700 Mbyte dành cho Linux trong b ng nói trên ch dành cho các chương trình cài đ t cùng v i Linux theo m c đ nh.1 Chu n b các phân vùng trên đĩa L i khuyên khi t o phân vùng Đưa ra l i khuyên đây không ph i là vi c d dàng. Bây gi chúng ta s xem xét v n đ chia các phân vùng cho Linux. vì phân vùng đĩa ph c thu c r t nhi u vào ý thích và nhu c u c a ch nhân đĩa. t c là /dev/hda. Vi c phân chia đĩa thành các phân vùng là c n thi t. – đ i v i các phân vùng. v. RAM và không gian swap h p l i t o thành b nh o chung.2 (Worksta. v.700 Mbyte H đi u hành Windows 95 Windows 98 Windows NT Windows 2000 Linux Red Hat tion v i KDE) Tuy nhiên xin hãy nh r ng. Windows NT và Linux các phân vùng v i kích thư c 800-1000 Mbyte là đ (t t nhiên.v. n u b n đ c có 256 MByte RAM và 128 Mbyte không gian swap. Đ u tiên chúng ta hãy xem xét m t trư ng h p đơn gi n – dung lư ng đĩa c a b n đ c không vư t quá 8. mà còn ph i tính c kích thư c c a các chương trình b n đ c d tính ch y. Trong trư ng h p này m i th đ u đơn gi n: b n đ c ch vi c chia đĩa làm sao đ đ ch cho h đi u hành s cài đ t.Org).5. như OpenOffice. /dev/hdb. n u b n đ c không cài đ t các gói chương trình l n. Theo kinh nghi m c a tác gi thì đ làm vi c v i Windows 95/98. Đ i v i Windows cũng tương t như v y. /dev/hda2. đ i v i đĩa và /dev/hda1. Và còn ph i dành m t ph n d tr không nh cho các chương trình s cài đ t sau này (không th tránh kh i!). trong s đó có. b i vì Windows và Linux s d ng các cách lưu tr thông tin trên đĩa và sau đó đ c chúng t đĩa khác nhau.2. Th nh t. Ví d .5 1. ví d . . không nh ng ph i tính kích thư c các t p tin c a b n thân h đi u hành. Khi xác đ nh dung lư ng c a phân vùng swap Linux c n tính đ n nh ng y u t sau: ˆ Trong Linux. .v. Có th s d ng d li u cho bi t kích thư c đĩa nh nh t c n thi t đ cài đ t h đi u hành v i c u hình cơ b n trong b ng 1.

NT Loader không nh t thi t ph i đ t vào phân vùng NTFS. ch nên suy nghĩ v v n đ dung lư ng c a phân vùng swap khi có m t đĩa nh và ít b nh RAM. b n đ c mu n c p nh t phiên b n m i c a b n phân ph i. Vi c phân chia như v y d a trên nh ng lý l sau. Ví d .1. c n đ t chương trình kh i đ ng trong ph m vi 1024 cylinder đ u tiên. thì th nh tho ng cũng c n cài đ t l i. Phân vùng th hai dành cho thư m c /home. 1 Gbyte là đ ) s ch a h th ng t p tin g c (/). Nhân ti n. T nh ng gì đã nói đ n ph n trư c (h n ch dung lư ng đĩa c ng). ho c vì ít kinh nghi m s d ng nên làm h ng t p tin h th ng quan tr ng. thì phân vùng này có th không c n thi t. Ph n l n nh ng gói chương trình này đư c cài vào thư m c /usr. Bây gi chúng ta xem xét trư ng h p đĩa v i s cylinder l n hơn 1024. Trong trư ng h p ngư c l i hãy phân chia đ t ng s dung lư ng c a b nh o (g m RAM và phân vùng swap) không nh hơn 128 Mbyte. Còn n u như b n đ c có 128 Mbyte RAM hay nhi u hơn. hay cài b ng phương pháp khác. thì c n phân vùng swap không nh hơn 12 Mbyte.3 ˆ Khi tính kích thư c c a không gian swapping. trong trư ng h p ch có m t đĩa nh . Theo tác gi th y. Tuy nhiên.5 Chu n b các phân vùng trên đĩa 17 ˆ Đ làm vi c v i Linux c n ít nh t 16 Mbyte b nh o. thì nh ng chương trình nói trên s đư c gi l i và có th s làm vi c (r t có th c n vài c u hình nh ) sau khi cài đ t l i h th ng. ho c đơn gi n là mu n cài đ t m t b n phân ph i khác. thì không c n đ n không gian swap. Thông thư ng ch c n dùng swap khi máy ít b nh RAM ho c ch y máy ch v i nhi u ng d ng n ng. N u như t t c đư c cài đ t vào m t phân vùng. T t nhiên. T t c các ph n còn l i c a Linux và các chương trình h tr theo nguyên t c có th đ t vào m t phân vùng. cũng như không nh t 3 Xin cám ơn bác Tony Lý v m c này . kích thư c chính xác c a không gian swap ph thu c l n vào chương trình s đư c cài đ t. ˆ Kích thư c c a phân vùng swap có th l n bao nhiêu tùy thích. thì khi cài đ t l i nh ng d li u đã làm ra và ghi nh trong thư m c cá nhân s b m t (n u không có b n sao chép). Trên máy tính v i 16 Mbyte RAM khi cài đ t Linux v i c u hình chu n và các chương trình ng d ng chu n thì 48 Mbyte không gian swapping là đ . s b m t c nh ng chương trình đã cài t mã ngu n. Còn phân vùng th ba đư c g n vào thư m c /usr. Ngoài ra. vi c đ t h th ng t p tin Linux lên vài phân vùng riêng r là có ý nghĩa. Còn n u cài đ t Linux v i c u hình nh nh t. N u dành cho thư m c này m t phân vùng riêng và khi cài đ t không đ nh d ng l i chúng. c n nh r ng kích thư c quá l n có th là vô ích. vì th n u b n đ c ch có 4 Mbyte RAM. Trong tiêu chu n v h th ng t p tin c a Linux FHS (c th xin xem chương ??) cũng có l i khuyên v vi c đ t thư m c /usr lên m t phân vùng riêng. Ví d . có nhà chuyên gia khuyên nên dành cho h th ng t p tin Linux ba phân vùng (n u tính c swap thì thành 4). Phân vùng th nh t (theo ý ki n cá nhân tác gi . Trong t t c m i trư ng h p t t nh t tránh dùng swap vì nó ch m hơn RAM nhi u. Dù HĐH Linux có n đ nh và đáng tin c y đ n đâu. Nói chung. tuy nhiên không c n c u hình quá nhi u n u không c n thi t. nh ng ý ki n nói trên đã đ đ b n đ c t tìm ra phương án phân chia đĩa c a mình.

c n l a ch n công c đ đưa k ho ch này thành hi n th c. ˆ ph n còn l i c a đĩa đ t thành phân vùng m r ng. kích thư c kho ng 1 Gbyte. . fdisk không thích h p cho nh ng m c đích như v y. Trong thành ph n các b n phân ph i Red Hat và BlackCat (r t có th trong các b n phân ph i khác) có chương trình fips. không ch a b t ký d li u nào. n u như phân chia đĩa tr ng. thì m t phân vùng FAT16 cũng không th a. b n đ c ch có m t đĩa c ng. thì có th đ Windows trên phân vùng đ u tiên. N u như b n đ c có 2.5. còn trong /usr – chương trình s cài đ t). ph c v cho phân chia đĩa. T t nhiên. Nhưng chúng ta đang xem xét trư ng h p đã có HĐH nào đó trên đĩa và c n phân chia đĩa mà không làm m t thông tin. Như v y trong trư ng h p này.18 Cài đ t HĐH Linux trên cùng máy tính v i Windows thi t ph i đ t vào phân vùng ch a các t p tin khác c a HĐH. ˆ trong phân vùng m r ng t o các phân vùng lôgíc cho m i HĐH s cài đ t: Windows 98. ch có đi u phân vùng swap t t hơn đ t trên đĩa khác v i đĩa dành cho Linux. Như đã nói trên. Chương trình phân chia đĩa đư c bi t đ n nhi u nh t là fdisk. ˆ phân vùng chính ti p theo dành cho thư m c g c (/). còn các thư m c khác – ch nào tùy thích. Nh ng l i khuyên này đưa ra v i gi thi t r ng. Th nh t. Và không c n gì hơn ngoài chương trình này. h th ng t p tin FAT16 đư c h tr trên m i HĐH. nh ng đ ngh c a tác gi cho ra b ng t ng k t sau: ˆ ph n kh i đ ng c a t t c các h th ng Microsoft đ t vào phân vùng chính đ u tiên c a đĩa. vì th phân vùng này có th ph c v cho vi c trao đ i t p tin gi a các h th ng. thì v n s d ng đư c nh ng l i khuyên này. Windows NT/2000/XP. v i đ nh d ng FAT16 (DOS). n u như b n đ c ch có Windows 95 v i FAT16. Chính vì v y hãy dành cho phân vùng này kho ng 256 ho c 512 Mbyte. và đ ng th i cho các h th ng t p tin /home và /usr c a HĐH Linux (trong /home s đ t các t p tin riêng c a ngư i dùng. vì FAT16 s d ng không gian đĩa r t không h p lý. Ngư i ta nói r ng như v y tăng t c đ làm vi c trong Linux (cũng d hi u vì đ u đ c ít ph i ch y hơn). N u như trên máy đã cài đ t Windows NT hay có FAT32. k c trong trư ng h p h th ng có v n đ . trên m i h đi u hành đ u có phiên b n riêng c a chương trình này. 1. Th hai. đ i v i Linux có th đ t thư m c g c cùng v i thư m c con /boot vào các cylinder “th p” (trong vòng 1024 đ u tiên). trong đó có Linux. Nhưng không nên đ phân vùng này l n.2 Chương trình đ phân chia đĩa Sau khi hoàn thành k t ho ch chia đĩa. b n đ c có th kh i đ ng t đĩa m m DOS (t m th i khi chưa làm quen v i Linux m t cách “tư ng t n”) và th y đư c r ng đĩa c ng làm vi c bình thư ng. ˆ phân vùng chính th ba dành cho swap c a Linux (l i khuyên v kích thư c c a phân vùng này xem trên).

thì trư c khi b t đ u c n chu n b đĩa m m kh i đ ng và ph c h i Windows NT. Tác gi hy v ng r ng b n đ c đã sao lưu nh ng thông tin có giá tr c a mình. T c là c n tr l i “Yes.powerquest.ini t thư m c g c c a đĩa kh i đ ng NT. 3.1. không ch t o đư c phân vùng m i t ch tr ng trên đĩa. make a BOOT DISK” (hay tương t th . 1. Cách tính kích thư c c a chúng đã nói trên. mà còn có th di chuy n các phân vùng đã có theo ý mu n. vì “quan h ” c a chúng đ i v i vi c cài đ t Linux hoàn toàn gi ng nhau. Chúng ta gi thi t là Windows NT đã đư c cài vào phân vùng /dev/hda2 (n u như b n đ c nh . Vì th ti p theo chúng ta s xem xét các phương án cài đ t hai HĐH trên m t máy tính.com) và s d ng chương trình này. nghĩa là trình kh i đ ng OS Loader cũng đã đư c cài đ t. Khi này. Th hai. Vì th l i khuyên c a tác gi v i b n đ c.6 Windows NT và Linux: kh i đ ng qua NT OS Loader 19 Tuy nhiên. Khi t o phân vùng c n đ ý không cho ranh gi i gi a các phân vùng c t l n nhau. Trong khi cài đ t c n chú ý đ n nh ng đi m sau: ˆ th nh t. và m i thao tác cũng như thay đ i đ u th y rõ ràng. theo ý ki n c a ngư i dùng thì không nên s d ng chương trình này. r i sao chép lên đó các t p tin ntldr. Đ t o đĩa m m kh i đ ng ch c n đ nh d ng l i đĩa m m. 2. Cài đ t Linux theo ch d n c a b n phân ph i. /dev/hda1 s dành cho phân vùng FAT16).com và boot. N u HĐH Windows NT đã đư c cài đ t. tùy thu c vào b n phân ph i) khi đư c h i có t o đĩa m m kh i đ ng hay không. Các bư c cài đ t có th mô t như sau: 1. Tác gi cho r ng. Đĩa m m này s đư c dùng đ n sau. chương trình này (th m chí trong phiên b n dành cho DOS) cung c p m t giao di n đ h a d s d ng có h tr chu t. ntdetect. Dùng chương trình Partition Magic đ l y m t ph n đĩa tr ng và t đó t o ra phân vùng v i d ng ext2(3) (h th ng t p tin Linux) và phân vùng swap. thì hãy tìm chương trình Partition Magic c a công ty Power Quest (http://www. t t c nh ng cài đ t và c u hình trư c đó s đư c ghi l i). Chương trình t o đĩa ph c h i Windows 2000/XP có th ch y t trình đơn h th ng (l nh Backup trong Start/Program/Accessories). Và như th có th s d ng chương trình này đ kh i đ ng Linux. khi nói v Windows NT xin ng m hi u c Windows 2000 và NT. nh ng thông tin đã đưa đ đ b n đ c l p k ho ch và th c hi n vi c phân chia đĩa thành các phân vùng.6 Windows NT và Linux: kh i đ ng qua NT OS Loader Trong ph n này. Đi u này r t quan tr ng v i ngư i dùng m i. Th nh t. nh ng ngư i dùng Linux m i – n u như mu n phân chia l i đĩa mà không làm m t thông tin. trong quá trình cài đ t nh t đ nh ph i t o ra các đĩa m m kh i đ ng Linux. N u như b n đ c chưa cài đ t Linux bao gi . chương trình này cho phép phân chia l i đĩa mà không làm m t thông tin (t c là. Ngoài ra. Đây cũng . có th s d ng đĩa m m này đ kh i đ ng Linux.

b ng câu l nh: [root]# shutdown -h now Ghi chú: n u đĩa C: (/dev/hda1) có đ nh d ng FAT. vì th không nên s d ng thư ng xuyên. đ nh d ng MBR t o b i LILO và Windows (DOS) khác nhau. n u như b n đ c cài LILO vào MBR. Đĩa m m này còn c n thi t cho c u hình đ kh i đ ng nhi u HĐH. thì không ph i m i th đã h ng h t. nhưng t t hơn h t là b n đ c cài LILO ngay l p t c vào sector đ u tiên c a phân vùng đã cài Linux. T m th i nhân Linux còn chưa h tr t t vi c ghi lên phân vùng NTFS. 5. 4 . khi cài đ t Linux c n cài LILO vào sector đ u tiên c a phân vùng dành cho thư m c g c (/) c a Linux. ˆ th hai. Sau khi cài đ t xong. Chúng ta gi thi t Linux đư c cài vào phân vùng /dev/hda3. Tác gi cũng s nói cách ph c h i. V n đ ch . K t qu cu i cùng (kh i đ ng qua NT Loader) v n có th đ t đư c nhưng c n b ra m t chút công s c.lnx bs=512 count=1 đ ghi n i dung sector kh i đ ng c a đĩa /dev/hda3 vào t p tin /mnt/floppy/bootsect. Vi c sao chép th c hi n như sau: đ u tiên g n m t đĩa m m tr ng (m i mua thì càng t t). Sao chép sector kh i đ ng c a Linux vào m t t p tin. Tác gi không bi t (chưa th ) có th kh i đ ng không c n đĩa m m không. thì có th t o t p tin bootsect.lnx trong thư m c g c c a đĩa C:. n u phân vùng chính đ u tiên có đ nh d ng NTFS. Tuy nhiên đây cũng không có v n đ gì. Ch s d ng trong trư ng h p “b t đ c dĩ”. kh i đ ng Linux b ng đĩa m m (n u như b n đ c cài LILO vào phân vùng c a Linux và không đ ng gì đ n MBR. Ti p theo c n kh i đ ng l i đ vào Windows NT. và hơn n a khác v i đĩa m m kh i đ ng DOS. Như v y LILO s đư c cài vào sector đ u tiên c a /dev/hda3 Theo nguyên t c. Vì th n u b n đ c cài LILO vào MBR. 4. thì đây là kh năng duy nh t). Tuy nhiên cách kh i đ ng này cũng có đi u ti n. t p tin này s c n đ trình kh i đ ng Windows NT/2000 có th kh i đ ng Linux. ch c n sao chép sector kh i đ ng qua đĩa m m như đang trình bày. sau khi kh i đ ng h th ng không còn yêu c u đĩa m m n a.20 Cài đ t HĐH Linux trên cùng máy tính v i Windows là m t phương án kh i đ ng. thì c u ph c h i l i MBR c a Windows. có th b nó ra kh i . [root]# mount -t vfat /dev/fd0 /mnt/floppy chuy n vào thư m c /mnt/floppy [root]# cd /mnt/floppy và th c hi n câu l nh [root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx4 6. ch không ph i vào sector kh i đ ng chính c a đĩa (MBR). s d ng đ đ c các đĩa m m khác.

Ph c h i l i b n ghi kh i đ ng chính c a đĩa. trong d u ngo c kép b n đ c có th đ t tên b t kỳ. Nh p l nh cd /etc và m t p tin lilo. T p tin bootsect. ch không mu n dùng LILO. trong ví d này là /dev/hda3 . 7.ini và thêm vào dòng sau: C:\bootsect.6 Windows NT và Linux: kh i đ ng qua NT OS Loader 21 Vì MBR chưa có gì thay đ i. N u như b n đ c v n còn mu n s d ng trình kh i đ ng OS Loader c a NT. và vi c kh i đ ng Windows NT (bư c th 6 trên) là không th .lnx có th đ t thu c tính ch đ c (read-only). thì hãy ch y câu l nh mount và tìm k t qu tương t như sau5 : 5 có nghĩa là tìm phân vùng đã g n vào thư m c g c /. đ u t p tin này có liên k t đ n phân vùng kh i đ ng theo m c đ nh. N u như b n đ c không nh đã cài Linux vào đâu. Trong trư ng h p này b n ghi kh i đ ng Windows NT (hay 2000) s b xóa.init ch a trong đó (nh ng t p tin này có th n!). thì LILO s đư c ch y và sau đó nó (LILO) s n p Linux. Dùng b t kỳ trình so n th o nào.) 8. Đây có th là phân vùng FAT16 hay phân vùng NTFS. thì nh ng bư c trên có thay đ i m t chút: thay cho bư c th 6 c n làm các thao tác sau. Kh i đ ng Windows NT t đĩa m m kh i đ ng (đã t o trư c khi cài đ t Linux. t c là thay th /dev/hda thành /dev/hda3. Vi c còn l i là kh i đ ng l i máy tính m t l n n a. và trong trình đơn ch n h đi u hành s có LINUX. N u ch n LINUX. CoolEdit c a Midnight Commander. nên Windows NT s kh i đ ng. n u không có thì b n đ c c n tìm m t máy khác đang ch y Windows NT r i t o).conf. Đ c đi m đ nh n ra phân vùng này là hai t p tin ntldr và boot. hay chính xác hơn là vào thư m c g c c a phân vùng mà t đó kh i đ ng Windows NT. MBR). m c dù trong m t s bài báo nói cách ph c h i MBR như v y không ph i lúc nào cũng làm vi c. 5. Trong NT c n sao chép t p tin bootsect. Còn bây gi chúng ta s xem xét trư ng h p b n đ c (do vô tình hay c ý) cài đ t LILO vào b n ghi kh i đ ng chính c a đĩa (Master Boot Record. /dev/hda.1. Sau đó tìm t p tin boot. S d ng câu l nh fdisk /mbr. Tác gi dùng l nh này thành công. 2. Trong trình đơn (th c đơn) c a trình kh i đ ng c n ch n l nh Recover. ví d . N u Linux đư c cài vào phân vùng /dev/hda3. r i ch n ch đ Command mode. Trong Windows 2000 có các l nh chuyên dùng fixboot và fixmbr (ch y t console ph c h i h th ng). thì c n ghi cái đó.lnx vào thư m c g c c a đĩa C:. Kh i đ ng l i máy tính t đĩa m m kh i đ ng Linux và đăng nh p vào h th ng v i quy n ngư i dùng root. 4.lnx="LINUX" (t t nhiên. 1. Ch y hai l nh này theo th t đã ch ra. Sau đó đăng nh p vào tài kho n nhà qu n tr (administrator). ví d . 3. Sau đó Windows 2000 s kh i đ ng bình thư ng. đ thay th giá tr này thành phân vùng đã cài Linux lên (chính xác hơn là thành phân vùng đư c g n như g c (/) c a Linux).

2 C u hình GRUB GRUB có m t giao di n trình đơn đ t đó ngư i dùng có th ch n m t m c (m t h đi u hành) b ng các phím mũi tên r i nh n <Enter> đ kh i đ ng. b n ghi kh i đ ng c a Windows đư c gi nguyên v n. 1.lst’ n m trong thư m c kh i đ ng /boot. Đ dùng đư c trình đơn đó. Ch y l nh /sbin/lilo đ ghi trình kh i đ ng vào phân vùng /dev/hda3 (c n ch y l nh lilo không có tham s ).7. Hãy xem ví d m t t p tin như v y dư i đây: # GRUB example configuration file on the teppi’s openSUSE system. 1. 1.7. M t s b n phân ph i. nhưng s có ích n u b n bi t đư c cách c u hình Linux đ x lý nh ng l i có th x y ra và hơn th n a bi t cách c u hình đ kh i đ ng h đi u hành mong mu n khi không có t đ ng c u hình. Chúng ta s xem xét c u hình GRUB trong ph n ti p theo. Quá trình cài đ t Linux k t thúc đây. thì l a ch n t t hơn cho trình kh i đ ng là chương trình có trong thành ph n c a m i b n phân ph i HĐH Linux – GRUB (GRand Unified Bootloader).1 Cài đ t GRUB Cách d nh t đ có th cài đ t trình kh i đ ng GRUB là ch n dùng trình kh i đ ng này trong quá trình cài đ t h th ng Linux c a b n. ví d Xandros còn t đ ng tìm th y nh ng h đi u hành đã có này và thêm chúng vào t p tin c u hình c a GRUB. M c dù vi c t đ ng c u hình này h t s c thu n ti n. B n đ c đã có th ch n HĐH s kh i đ ng và đi u khi n máy tính c a mình. và ph c h i MBR c a Windows. 7. “quy trình” ph c t p v i hai l n kh i đ ng l i ch đ chuy n sector kh i đ ng Linux t MBR vào sector đ u tiên c a phân vùng dành cho Linux. Last modification on Sun Apr 2 22:22:11 MSD 2006 6 Ph n v GRUB này do ngư i d ch vi t .22 Cài đ t HĐH Linux trên cùng máy tính v i Windows /dev/hda3 on / type reiserfs (rw) 6. Th c hi n các bư c 6-8 như trên. # Modified by YaST2. S có c nh báo v vi c phân vùng không ph i là đ u tiên trên đĩa. Nh đó sau khi cài đ t b n có th ch n kh i đ ng Linux ho c h đi u hành (thư ng là Windows) đã có. Trong nh ng phiên b n m i c a các b n phân ph i Linux m i khi này có th ch n c u hình cho nh ng h đi u hành đã có trên máy.7 S d ng trình kh i đ ng GRUB6 Như đã nói trong ph n l a ch n chương trình kh i đ ng. b n c n m t t p tin c u hình ‘menu. n u trên máy đã cài Windows 98 v i h th ng t p tin FAT16. D dàng đoán ra r ng. Thông thư ng t p tin này đư c t o ra khi cài đ t. Đây chính là đi u chúng ta c n.

Tùy ch n timeout cho bi t GRUB s kh i đ ng m t cách t đ ng sau kho ng th i gian ch ra (tính theo giây) n u không nh n phím nào.3).0)/initrd ###Don’t change this comment .YaST2 identifier: Original name: windows### title Windows map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd1.0) makeactive chainloader +1 ###Don’t change this comment .YaST2 identifier: Original name: xen### title XEN kernel (hd0.0)/vmlinuz-xen root=/dev/hda5 vga=0x31a selinux=0 splash=silent resume=/dev/hda7 showopts module (hd0. Ngoài dòng chú thích GRUB cũng b qua nh ng dòng tr ng. M i ph n đ u b t đ u b ng l nh ‘title’ theo sau là tên s hi n th trong trình đơn.0)/xen.0)/initrd-xen ###Don’t change this comment . Khác v i trư ng h p LILO. sau khi thay đ i c u GRUB không c n ph i ch y b t kỳ l nh nào đ nh ng thay đ i này có hi u l c.7 S d ng trình kh i đ ng GRUB7 23 color white/blue black/light-gray default 0 timeout 8 ###Don’t change this comment . Hãy nh l i. Chúng s đư c c p nh t m t . . trong GRUB vi c đánh s đư c b t đ u t ‘0’ ch không ph i ‘1’. S ‘0’ ch ra đó là h đi u hành th nh t trong danh sách (t c là SuSE Linux 9. Tùy ch n default ch ra h đi u hành kh i đ ng theo m c đ nh (n u không đ ng vào bàn phím khi kh i đ ng).1. nên b n có th nh p b t kỳ th gì vào phía sau.YaST2 identifier: Original name: floppy### title Floppy root (fd0) chainloader +1 Tác gi nghĩ r ng c n gi i thích c th hơn m t chút v t p tin này. Trong trư ng h p này là sau 8 giây. Sau nh ng thi t l p chung là ph n thi t l p cho t ng h đi u hành c th .gz dom0_mem=196608 module (hd0.3”. ph n th hai – “Windows”.0)/vmlinuz root=/dev/hda5 vga=0x31a selinux=0 splash=silent resume=/dev/hda7 showopts initrd (hd0. ph n đ u tiên là đ kh i đ ng “SUSE LINUX 9. Có th b n đã đoán ra nh ng dòng b t đ u b ng ký t ‘#’ là nh ng dòng chú thích. v. Tùy ch n color dùng đ ch n màu cho trình đơn (hãy th nó!).YaST2 identifier: Original name:linux### title SUSE LINUX 9.v.3 kernel (hd0. nh ng tùy ch n có liên quan đ n giao di n c a trình đơn. đ u t p tin là nh ng thi t l p chung (global options). Như b n th y trong t p tin c u hình trên. Chúng đư c đ t trư c các m c b t đ u b ng ‘title’. . B n có th ghi b t kỳ câu gì mong mu n vào dòng này và không nh hư ng gì đ n công vi c c a chương trình. Và vì l nh này hi n th tham s m t cách nguyên v n.

vì th chúng ta s không xem xét đ n. Sau m t th i gian làm vi c v i Linux và có đ kinh nghi m b n s bi t cách tìm thêm thông tin v trình kh i đ ng tuy t v i này. N u dung lư ng đĩa c ng vư t quá 8.4 Gbyte thì hãy đ c k các ph n 1. nhưng tác gi khuyên b n đ c nên làm. nhưng đ i v i ngư i dùng m i thì như v y là đ . 1.22 label = linux Ghi chú. Chúng ta xem xét m t ví d nh c a t p tin c u hình LILO.conf và câu l nh /sbin/lilo. Cài đ t Linux theo ch d n đi kèm v i b n phân ph i. T t nhiên đây không ph i là t t c nh ng kh năng s d ng c a GRUB.24 Cài đ t HĐH Linux trên cùng máy tính v i Windows cách t đ ng trong l n kh i đ ng sau. 8 . n u b n mu n s d ng trình kh i đ ng LILO. Trong ví d này chúng ta s coi như thi t b /dev/hda1 là phân vùng v i DOS/Windows. Trong trư ng h p đó MBR c n ph i có kh năng n p LILO. thì trong quá trình cài d t Linux c n ch n phương án cài LILO vào b n ghi kh i đ ng chính (Master Boot Record).1 S d ng trình kh i đ ng LILO Cài đ t và c u hình LILO Gi ng như trư ng h p Windows NT.txt root = current image = /boot/vmlinuz-2. C n nh r ng. còn phân vùng /dev/hda2 ch a Linux.8. 2. Trong trư ng h p đó /etc/lilo. 3. Trình kh i đ ng LILO không b t bu c ph i cài đ t vào b n ghi kh i đ ng chính c a đĩa.3 và 1. Cách chia đĩa đã nói trên. T o các đĩa m m kh i đ ng theo nguyên t c là không b t bu c. Tuy nhiên tác gi chưa nhìn th y s c n thi t c a ng d ng này (n u đã ch n LILO làm trình kh i đ ng chính thì hãy s d ng cho “tr n b ”). LILO có th n m b n ghi kh i đ ng c a phân vùng chính đư c kích ho t và ch a thư m c g c c a Linux ho c th m chí trên phân vùng lôgíc trong phân vùng m r ng.5. 1.conf có d ng g n như sau: boot = /dev/hda2 compact delay = 50 # message = /boot/bootmesg. Đây là m t đi m m nh c a GRUB so v i LILO.8 4. chúng ta s đưa ra các bư c c n th c hi n đ có th kh i đ ng nhi u HĐH. Trư c khi cài đ t Linux hãy chu n b đĩa m m kh i đ ng Windows.4.8 1. ví d khi MBR là trình kh i đ ng c a MS-DOS hay Windows. Câu l nh này dùng đ cài đ t (hay cài đ t l i) LILO. Bư c ti p theo c n c u hình LILO đ có th kh i đ ng các HĐH theo l a ch n. Dùng chương trình Partition Magic đ l y ph n không gian đĩa còn tr ng và trên đó t o ra m t phân vùng ext2(3) (h th ng t p tin Linux) và m t phân vùng swap. LILO đư c c u hình b ng t p tin /etc/lilo.

ini b ng không. tính năng (nén) này tăng t c đ c a kh i đ ng đ u.8 S d ng trình kh i đ ng LILO read-only other = /dev/hda1 table = /dev/hda label = dos Vài l i gi i thích cho ví d : Dòng boot cho bi t thi t b kh i đ ng. t c là s d ng tên đã đ t trên dòng label. Dòng table=<device> cho bi t tên thi t b ch a b ng phân chia đĩa. 25 Dòng compact b t ch đ nén t p tin map – t p tin ch a đ c tính c a nhân đư c kh i đ ng. Trong ví d này. Trên dòng này ghi tên c n nh p vào d u nh c LILO hay tên s hi n th trong trình đơn c a LILO đ có th ch n HĐH mu n kh i đ ng. Có th ch ra h đi u hành đư c kh i đ ng theo m c đ nh khi thêm m t dòng có d ng default=dos. N u đ t dòng (g i là ph n nh thì t t hơn) other = /dev/hda1 trong t p tin /etc/lilo. trong trình đơn c a LILO n u ch n dos thì s hi n ra trình đơn c a NT Loader r i t đó ch n m t trong hai HĐH Windows đ kh i đ ng). Ch c n đ t th i gian ch kh i đ ng trong t p tin boot. thì hãy thêm .) Đ ng quên r ng.1 giây). n u vì m t lý do nào đó b n mu n th y trình đơn này thì giá tr timeout trong t p tin boot. B t đ u t dòng image là các ph n nh c a t p tin c u hình. m i ph n tương ng v i m t h đi u hành s kh i đ ng theo l a ch n c a ngư i dùng.conf. t c là thay đ i bi n table.conf: other = /boot/bootsect. thì s kh i đ ng HĐH theo m c đ nh. Tuy nhiên.dos label = win trong đó bootsect. s kh i đ ng Linux theo m c đ nh.1.ini c n đ t khác không (th i gian ch đư c tính theo giây). Windows NT và Windows 98. N u b n đ c mu n kh i đ ng Windows tr c ti p t ph n nh sau vào /etc/lilo. sau khi thay đ i ch d n đ n b ng phân chia đĩa. vì ph n c u hình tương ng v i Linux n m đ u tiên trong t p tin. Trong m i ph n như v y có m t dòng label. Câu l nh message dùng đ đưa ra thông báo theo ý mu n khi kh i đ ng.dos l y t thư m c g c c a đĩa ch a NT Loader. đ không th y trình đơn kh i đ ng c a NT Loader. LILO s không đưa thông tin v phân chia đĩa cho h đi u hành đư c kh i đ ng n u bi n này không đư c đưa ra. (M t s h đi u hành có công c khác đ xác đ nh là đã đư c kh i đ ng t phân vùng nào. c n th c hi n câu l nh /sbin/lilo. Đi u này có th c n thi t khi mu n kh i đ ng c Windows 98 t trình đơn c a NT Loader (trong trư ng h p này s có 3 HĐH: Linux. và LILO kh i đ ng thành công Windows NT. Trên m t máy c a tác gi đó n m trình kh i đ ng NT Loader (vì Windows NT đư c cài đ t trư c Linux). thì trong thư m c g c c a đĩa /dev/hda1 (đĩa C: trong h th ng thu t ng Microsoft) c n có trình kh i đ ng ph (không ph i là chính). LILO. N u như tên không đư c nh p sau kho ng th i gian ch trên dòng delay (tính theo ph n mư i giây – c n nhân v i 0.

.conf theo ý mu n.0300 of=/dev/hda bs=446 count=1 hay [root:~#] dd if=/boot/boot. Câu l nh này (trong tài li u hư ng d n g i là map-installer) cài đ t trình kh i đ ng ph . và cách kh c ph c (n u có th ). ho c phân vùng ch a LILO chưa đư c kích ho t. N u kh i đ ng b b ngưng gi a ch ng. và không đ ng gì đ n b ng phân chia đĩa). thì nó không b ghi đè lên.NNNN. . thì n i dung cũ c a sector này s t đ ng đư c ghi nh vào m t t p tin. Cũng có th ph c h i MBR cũ khi c n thi t b ng câu l nh /sbin/lilo v i tùy ch n -u. không nh t thi t ph i dùng /boot/boot. ˆ Không ch cái nào hi n ra – không có ph n nào c a LILO đư c n p. Khi có tham s này s th c hi n t t c các th t c cài đ t trình kh i đ ng. thì qua s ch cái đưa ra có th nh n đ nh v nguyên nhân xu t hi n v n đ . Theo m c đ nh đó là t p tin /boot/boot. T p tin /boot/boot. mà s đư c kích ho t trong l n kh i đ ng ti p theo. N u cho thêm tùy ch n -v. hãy th c hi n câu l nh này v i tham s -t. thì b n đ c s đư c bi t thêm thông tin chi ti t v nh ng gì l nh /sbin/lilo s th c hi n. Tuy nhiên có th đ t m t tên khác đ ghi sector kh i đ ng. n u không còn cách ph c h i nào khác đơn gi n hơn. tr vi c thay đ i t p tin map. t c là ch ch y th c u hình m i. 0300 – tương ng /dev/hda. và b ng phân chia đĩa. nó đưa ra màn hình t “LILO”. Đ k t thúc ph n nói v LILO này chúng ta s xem xét vài khó khăn có th xu t hi n khi s d ng LILO. Trư c khi ch y /sbin/lilo đ thay đ i bư c kh i đ ng.v. trong đó NNNN tương ng v i s c a thi t b . 0800 – /dev/sda. Khi này m i ch cái bi u th s k t thúc m t hành đ ng nào đó hay k t thúc m t bư c n p LILO. L nh này ch thay đ i mã chương trình kh i đ ng n m trong MBR. v.NNNN. b n ghi sector kh i đ ng. mà không thay đ i b ng phân chia đĩa.NNNN có th s d ng đ ph c h i n i dung cũ c a sector kh i đ ng. Nhưng c n bi t r ng. Sau khi cài đ t l i trình kh i đ ng c n kh i đ ng l i máy tính và th các phương án kh i đ ng khác nhau đ ki m tra. 6. . Khi /sbin/lilo ghi đè n i dung m i lên sector kh i d ng. Câu l nh đ th c hi n có d ng: [root:~#] dd if=/boot/boot. Sau khi s a xong t p tin /etc/lilo.0800 of=/dev/hda bs=446 count=1 (bs=446 vì ch ph c h i chương trình kh i đ ng. Ho c LILO không đư c cài đ t.26 Cài đ t HĐH Linux trên cùng máy tính v i Windows 5. c n ch y câu l nh /sbin/lilo đ nh ng thay đ i có hi u l c. Khi LILO đư c n p. ví d . MBR c a MS-DOS có th đư c ph c h i b ng cách kh i đ ng vào DOS t đĩa m m (CD) r i ch y câu l nh fdisk /mbr (xem trên). N u t p tin này đã có trên đĩa. câu l nh này ch làm vi c đúng v i đi u ki n là thư m c LILO (t c là /boot) không thay đ i k t khi cài đ t.

ˆ LIL — trình kh i đ ng ph đã đư c ch y. ho c kích ho t phân vùng ch a LILO (n u LILO đư c cài vào phân vùng chính).8. Mã l i hai ký t cho bi t nguyên nhân c th c a v n đ (cách gi i mã c n tìm trong tài li u k thu t c a LILO). Như th . nhưng không ch y đư c nó.8. Thông thư ng thì v n đ n y sinh do đĩa x u (có khuy t t t) hay không đ t đúng c u trúc hình h c c a đĩa. Mà trình kh i đ ng MS-DOS và Windows 95/98 ch “bi t” chuy n quy n đi u khi n cho sector đ u tiên c a phân vùng kích ho t.3 Chuy n thư m c /boot lên phân vùng DOS Nh ng phiên b n nhân Linux m i nh t h tr kh năng đ t các t p tin c n thi t trên giai đo n kh i đ ng vào h th ng t p tin MS-DOS (hay UMSDOS). n u như b n đ c đ u tiên cài đ t Linux. ˆ LIL. ˆ LILO – t t c các ph n c a LILO đư c n p thành công. thì Linux s không th kh i đ ng. Thông thư ng do l i đưa ra c u trúc hình h c c a đĩa ho c t p tin /boot/boot. Thông thư ng do l i đưa ra c u trúc hình h c c a đĩa ho c t p tin /boot/boot. thì v n đ thư ng d gi i quy t. ˆ LI – trình kh i đ ng chính đã n p đư c trình kh i đ ng ph .– b ng mô t trong t p tin map b phá h y. ho c t p tin boot/boot.b b di chuy n mà ngư i dùng quên không ch y /sbin/lilo. Có th ph c h i l i LILO b ng cách ch y l nh /sbin/lilo (n u LILO đư c cài vào MBR). 1. trình kh i đ ng c a chúng (không ph thu c vào ý mu n c a b n đ c) đư c ghi vào Master Boot Record (MBR). nhưng nó không th n p trình kh i đ ng ph . và sau đó m i cài đ t Windows 95/98 hay MS-DOS. và d u kích ho t trong b ng phân vùng s đư c chuy n sang phân vùng MS-DOS (Windows 95/98). Khi có v n đ sau khi cài đ t m t h đi u hành khác sau Linux. nhưng nó không th n p b ng mô t t t p tin map. mà ti p t c đưa ra m t chu i vô t n các mã l i. ˆ LIL? – trình kh i đ ng ph đã đư c n p vào đ a ch không đúng.b b di chuy n mà ngư i dùng quên không ch y /sbin/lilo. Nguyên nhân thư ng do khuy t t t c a đĩa ho c không đưa đúng c u trúc hình h c c a đĩa.2 Cài đ t các h đi u hành khác sau Linux Khi cài đ t MS-DOS và Windows 95/98.1. khi mà thư m c /boot không th n m trên phân vùng dành cho Linux. thư ng có th gi i quy t b ng cách kh i đ ng vào Linux b ng đĩa m m kh i đ ng. nên cho phép gi i quy t nhi u v n đ c a đĩa l n. Có th là l i đưa c u trúc hình h c c a đĩa. . Vì trong ph n l n các trư ng h p phân vùng DOS chi m các vùng đĩa đ u (không có h n ch c a BIOS). s a l i t p tin c u hình LILO (thêm ph n nh cho HĐH m i).b b di chuy n mà ngư i dùng quên không ch y /sbin/lilo. N u LILO không d ng l i đây. 1.8 S d ng trình kh i đ ng LILO 27 ˆ L [mã l i] – trình kh i đ ng chính đã đư c n p và đã ch y (t c là đã nh n đư c quy n đi u khi n). r i ch y /sbin/lilo.

Ph n l n ngư i dùng m i (và không ch h ) không đ kiên nh n đ đ c tài li u r t hay nhưng r t dài (và l i vi t trên ti ng Anh n a) c a LILO. zImage là đ nh d ng nh phân cũ c a nhân. nhân khi gi i nén có kích thư c lên t i 2 Mbyte.conf.ffm. Vi c s d ng loadlin.exe cung c p cách kh i đ ng Linux t c ng an toàn nh t. Phương án kh i đ ng này đư c khuyên s d ng cho ngư i dùng Linux m i.exe và nhân ( nh c a nhân) lên m t trong các đĩa mà DOS nh n ra. Như v y. Vì th h thư ng s d ng LILO không đúng cách.exe đ kh i đ ng và b t đ u tìm hi u Linux. và chuy n t t c các t p tin t thư m c /boot vào đó. ch c n đ t chương trình – t p tin loadlin.exe làm vi c v i m i c u hình DOS và có r t ít h n ch . khi có phân vùng kích ho t là DOS hay Windows.73) có kích thư c lên t i 1 Mbyte. bzImage)10 .TGZ. Phiên b n này có th s d ng b nh m r ng. Có th tìm th y trên đĩa phân ph i d ng không nén hay trong gói LOADLIN16.fgan. vì chương trình này h tr “kh i đ ng lôgíc” c a máy tính. Có th dùng chương trình này đ kh i đ ng Linux t CD ho c t đĩa trong m ng mà không c n s d ng đĩa m m kh i đ ng.de) vi t. do Hans Lermen (lermen@elserv.exe vào thư m c c a ngư i dùng root 10 Ghi chú. mà c ti n trình kh i đ ng Linux nói chung có th đư c t ch c t DOS. Phiên b n 1. v trí m i c a thư m c /boot c n ch ra trong t p tin /etc/lilo. Ti p theo chúng ta s ch nói v các t p tin zImage. thì ph i kh i đ ng l i máy tính.exe. bzImage là đ nh d ng m i hơn (s phiên b n nhân l n hơn 1.3.9 Kh i đ ng Linux t MS-DOS b ng loadlin. ˆ C n có nh nén c a nhân Linux (zImage. thông thư ng ghi t p tin loadlin. c n phân vùng DOS ch đ đ c/ghi. và k t qu là không th kh i đ ng đư c b t kỳ h đi u hành nào (tác gi cũng đã rơi vào trư ng h p như v y).6 c a loadlin. 1. Chương trình này thư ng có trên các đĩa c a b n phân ph i.9 Loadlin. ví d . và sau đó DOS đư c thay th hoàn toàn b ng Linux.exe không có nghĩa là Linux làm vi c dư i DOS.exe thành m t công c tuy t v i đ kh i đ ng Linux khi có v n đ v i LILO. ˆ Trên máy tính c a b n (t t nhiên v i b x lý 386 ho c cao hơn) c n cài đ t DOS hay WINDOWS 95. Đ i v i nh ng ngư i dùng m i thì s thu n ti n hơn khi s d ng loadlin. Kh năng này bi n loadlin. m c dù b n đ c có th thay th zImage thành bzImage 9 . do đó.exe. N u như b n đ c mu n quay tr l i DOS. thư m c /boot đư c chuy n thành liên k t tư ng trưng đ n thư m c /dos/linux. b ng câu l nh reboot. có th n p các nhân l n (các bzImage) và các nh đĩa o (initrd) tr c ti p vào vùng b nh n m trên. t o trong đó m t thư m c (ví d . “không vào hang c p sao b t đư c c p”. ˆ Chương trình loadlin.28 Cài đ t HĐH Linux trên cùng máy tính v i Windows Đ th c hi n phương án kh i đ ng này.exe Không ch các t p tin kh i đ ng và nhân có th n m trong phân vùng DOS. /dos/linux).exe. Chương trình loadlin. Tuy nhiên. Gói nén này còn ch a hư ng d n m t s b n phân ph i còn có gói cài đ t cho chương trình này.exe không yêu c u ph i cài đ t. và cu i cùng ch y l nh /sbin/lilo. c n làm gì đ có th s d ng chương trình loadlin. Kh năng này th c hi n nh chương trình đ c bi t loadlin.

exe 29 s d ng DOC\MANUAL. 3. Sau khi k t thúc ph n cài đ t hãy kh i đ ng Linux (n u không có cách nào khác.22 t /boot vào /mnt/C/loadlin và đ i tên thành vmlinuz (vi c đ i tên là không nh t thi t. Cài đ t Linux vào phân vùng đã chia. Ngoài ra sao chép t thư m c /boot vào thư m c đó c t p tin ch a nh c a nhân Linux.22.4. và ch có ý nghĩa thu n ti n cho s d ng): [root]# cp /boot/vmlinuz-2.1. Chia các phân vùng cho Linux (cách làm xem ph n 1.. và hư ng d n cách đưa các tham s DOC\PARAMS. Bây gi i kh i đ ng l i máy tính vào DOS tr c ti p (n u b n đ c có Windows 95/98 thì c n nh n phím <F8> khi kh i đ ng đ hi n th trình đơn cho phép ch n DOS).PAR. Ví d tên c a t p tin này là vmlinuz-2. n u b n đ c mu n n p nhân cùng v i đĩa RAM: .4.exe không có tham s C:\LOADLIN> loadlin thì s nh n đư c hư ng d n s d ng ng n g n. còn phân vùng Linux là /dev/hda3): [root]# mount -t vfat /dev/hda1 /mnt/C T o thư m c /mnt/C/loadlin và gi i nén t p tin LOADLIN16. Sao chép t p tin vmlinuz-2. Có th tìm t p tin ch a nh c a nhân c n thi t nh t p tin /etc/lilo.22 /mnt/C/loadlin/vmlinuz 4. Thu n ti n hơn đ đ c hư ng d n này.4. Sau khi vào DOS hãy chuy n sang thư m c C:\LOADLIN (l nh CD \LOADLIN) và th c hi n l nh C:\LOADLIN> LOADLIN vmlinuz /dev/hda3 ro vga=ask ho c. ho c qua h p tho i l a ch n khi nh n l nh t t máy (shutdown) Windows 95/98.TGZ vào đó. 1. hãy s d ng đĩa m m kh i đ ng).” và b n đ c s th y tên c n thi t phía bên ph i d u b ng.conf: tìm trong t p tin c u hình dòng “image=.. t p tin tham s ví d DOC\TEST.TXT.exe đ kh i đ ng.9 Kh i đ ng Linux t MS-DOS b ng loadlin. N u b n ch y loadlin. khi ch y chương trình v i tham s more (gi ng trong Linux) C:\LOADLIN> loadlin | more Bây gi chúng ta có th xem xét các bư c cài đ t Linux khi s d ng loadlin.5) 2. LILO c n cài đ t vào sector đ u tiên c a phân vùng Linux đ không ghi đè lên MBR và không b m t kh năng kh i đ ng vào Windows.DOC (đ ng quên r ng chúng là nh ng t p tin DOS). G n phân vùng DOS (gi thi t là /dev/hda1.

exe có th tìm th y trong t p tin PARAMS. (Đ ch y giao di n đ h a. và DOS s đư c kh i đ ng thay cho Windows 95/98. và khi ch y t p tin này.exe vào t p tin (ví d v i tên params) và g i câu l nh đó d ng sau: C:\LOADLIN> LOADLIN @params Kh năng này đ c bi t có ích khi đưa nhi u tham s dòng l nh và khi đ dài c a dòng l nh l n hơn 127 ký t .bat). n u như có hi n th bi u tư ng Windows. Có th vi t thêm l nh g i loadlin vào t p tin autoexec. . không đư c kh i đ ng Linux t giao di n đ h a DOS/Windows và c n t t m t vài tùy ch n trong t p tin n C:\MSDOS. máy tính s chuy n vào ch đ DOS trư c.unc. c n nh p câu l nh C:> win).edu/mdw/HOWTO/BootPromptHOWTO.anu.edu/ gpg109/BootPrompt-HOWTO.30 Cài đ t HĐH Linux trên cùng máy tính v i Windows C:\LOADLIN> LOADLIN vmlinuz /dev/ram rw initrd=diskimage Còn có th ghi t t c các tham s c a l nh loadlin. sau đó thì ch y Linux.bat ho c t o m t t p tin l nh (ví d .html. linux. Công vi c duy nh t còn l i là làm sao đ không ph i gõ l nh loadlin v i t t c các tham s sau m i l n kh i đ ng l i. C n nói thêm r ng. đ i v i m t s c c màn hình Linux s đưa ra m t màn hình tr ng r ng sau khi kh i đ ng. Tác gi cho r ng nh ng thông tin đã đưa ra trên đ đ t o t p tin bat c n thi t. b ng cách thêm vào hai dòng sau (n u chưa có): BootGUI=0 Logo=0 Dòng đ u tiên t t giao di n đ h a. Mô t đ y đ t t c các tham s c a câu l nh loadlin. V n đ ch . Bây gi b n đ c có th s d ng cách này đ kh i đ ng Linux. Dòng Logo=0 t t vi c hi n th bi u tư ng Windows (c a s ).DOC ho c Internet trên trang http://sunsite.html và http://rsphy1.SYS (đây là t p tin văn b n thông thư ng).

ví d SuSE Linux. thì trên màn hình s xu t hi n r t nhi u thông báo mà t m th i chúng ta s không xem xét ý nghĩa c a chúng2 . T t nhiên màn hình đăng nh p c a b n đ c s khác.1. Ph i làm gì đ có th ti p t c làm vi c v i h th ng Linux? Sau khi làm vi c xong thì t t máy th nào? Có nh ng chương trình nào nên bi t? Trong khi làm vi c có v n đ n y sinh thì tìm câu tr l i đâu? Trong chương này chúng ta s tìm th y câu tr l i cho nh ng câu h i trên.1 Kh i đ ng HĐH Linux Như v y là vi c cài đ t Linux đã hoàn thành1 . ví d đưa ra nh ng câu chào d ng “Xin chào! Hôm nay là 02 tháng 09 năm 2006. 2. N u ngư i dùng đã cài đ t GRUB làm trình kh i đ ng. B n d ch đã c p nh t l i và s d ng trình kh i đ ng GRUB 2 Trong nh ng b n phân ph i Linux m i. Trong trư ng h p đó. thì sau nh ng dòng ch BIOS thư ng đưa ra s xu t hi n màn hình d ng như trong hình 2. Hãy nh p vào tên ngư i dùng và m t kh u”. N u Linux không ph i là h đi u hành (HĐH) duy nh t trên máy tính.. có s d ng màn hình flash. Cu i cùng xu t hi n màn hình cho phép ngư i dùng đăng nh p vào h th ng. Phím này thư ng là <Esc>. N u không ch m vào bàn phím.Chương 2 Kh i đ ng Linux l n đ u Ngư i d ch: Sau khi cài đ t r t có th b n đ c s không bi t bư c ti p theo ph i làm gì. hãy nh n phím tương ng đ chuy n v màn hình kh i đ ng bình thư ng.. 1 . Do đó có th b n đ c s không th y nh ng thông báo này. N u b n đã ch n t đ ng ch y ch đ đ ho thì hãy nh n <Ctrl>+<Alt>+<F1> đ th y màn hình đăng nh p như sau: ThinhQuyen login: Màn hình đăng nh p này xu t hi n trên máy c a tác gi khi kh i đ ng Debian Linux. B t máy tính lên. N u kh i đ ng b ng đĩa m m thì quá trình cũng tương t nhưng ch m hơn m t chút. đ i h th ng kh i đ ng xong và . N u có đ kiên nh n đ đ c h t cu n sách này. thì trên màn hình kh i đ ng GRUB s xu t hi n danh sách các h đi u hành tìm Ngư i d ch: Thông tin trong ph n này c a b n g c ti ng Nga đã hơi cũ và trình kh i đ ng b n g c s d ng là LILO. thì b n s bi t cách thay đ i màn hình này. Tuy nhiên bây gi v n còn s m đ nói v v n đ này. ng i nhìn.

khi hi n ra dòng m i này thì đ u tiên c n nh p vào tên ngư i dùng.2 Đăng nh p vào h th ng Như b n đã bi t. có th thêm. th m chí làm h ng h th ng. sau đó nh p vào m t kh u khi có yêu c u đ vào h th ng.32 Kh i đ ng Linux l n đ u Hình 2. và trong khi cài đ t b n quên t o thêm ngư i dùng. thì hãy nh p vào tên ngư i dùng “root” (ngư i dùng cao c p).v. thì h th ng s t đ ng quay tr l i dòng h i tên ngư i dùng login:. M t kh u này là m t kh u đã đưa ra cho ngư i dùng root trong quá trình cài đ t. . đây là m t kh u c a root. Ngư i dùng này là ch s h u có toàn quy n đ i v i h th ng bây gi cũng như sau này. N u đã ch n kh i đ ng Linux thì cu i cùng ngư i dùng ph i th y dòng login:. H th ng s đưa ra câu h i m t kh u: Password: T t nhiên là b n c n nh p vào m t kh u tương ng v i ngư i dùng đã đưa ra. Nh ng thao tác không c n th n c a ngư i dùng này có th d dàng d n đ n nh ng h u qu khó lư ng. N u sau khi nh p vào tên ngư i dùng r i r t lâu sau không vào m t kh u. xóa nh ng ngư i dùng khác. Sau khi nh p m t kh u cũng nh n <Enter>. Đây là ngư i dùng duy nh t luôn luôn có tài kho n đư c t o ra trong quá trình cài đ t. t c là dòng m i nh p vào tên đăng nh p. . Vì th thư ng ch đăng nh p dư i tên ngư i dùng này khi th c hi n các công vi c qu n tr h th ng. 2. Tuy nhiên chúng ta đang trong trư ng h p này. Có th ch n HĐH mu n kh i đ ng b ng các phím <↑> và <↓> r i nh n phím <Enter>. d ng h th ng v.1: Màn hình kh i đ ng c a GRUB th y. t c là có quy n truy c p không gi i h n đ n các tài nguyên. Sau khi nh p . vì th hãy nh p “root” vào dòng login: r i nh n phím <Enter> (<Return>). N u đây là l n đăng nh p đ u tiên vào h th ng ngay sau khi cài đ t.

t c là có phân bi t ch hoa và ch thư ng. New Password: Hãy nh p vào m t kh u. “đăng nh p”) dư i tên ngư i dùng này. Câu l nh đ u tiên chúng ta s nh p vào là useradd. tên h th ng (ThinhQuyen) và thư m c hi n th i (/root). nhimlui: [root]# useradd nhimlui Ngay sau khi nh n phím <Enter> đ ch y l nh này. ví d . Sau khi nh p xong. trên h th ng s bi t r ng ngư i dùng nhimlui t n t i (chúng ta nói. k c ki u ch .2 Đăng nh p vào h th ng đúng m t kh u. Trong ví d đưa ra d u nh c g m tên ngư i dùng (root). Trong MS-DOS và Windows(TM) màn hình đen và d u nh c h th ng thư ng đư c g i là ch đ dòng l nh. c n ph i “t o” thêm cho ngư i dùng này m t kh u b ng câu l nh: [root]# passwd nhimlui S xu t hi n dòng: Changing password for nhimlui. th i đi m này nó có nghĩa là b n đã đăng nh p vào h th ng m t cách thành công. thì s xu t hi n thông báo thành công d ng: Password changed. Xu t hi n d u nh c có nghĩa là h th ng đã s n sàng ti p nh n và th c hi n câu l nh c a ngư i dùng.2. Chúng ta s g i ch đ này là văn b n đ phân bi t v i ch đ đ ho c a h th ng X Window. Reenter New Password: Đ ng ng c nhiên. k c d u sao ‘*’ như thư ng th y. Vì th c n nh p vào t t c các câu l nh cũng như tham s c a chúng như ch ra trong ví d . Tuy nhiên v n chưa th vào h th ng (thư ng nói. h th ng s h i nh p m t kh u m t l n n a đ ki m tra. Sau này b n có th thay đ i d ng c a d u nh c này. cũng nh n phím <Enter>. Trong t t c các ví d ti p theo chúng ta s s d ng d u nh c ch g m có tên ngư i dùng. Trư c khi đ ngh b n đ c nh p vào câu l nh đ u tiên. b n s th y dòng như sau: [root@ThinhQuyen /root]# 33 Dòng này đư c g i là d u nh c. c n nói r ng trên b t kỳ h th ng UNIX nào ki u ch cũng đ u đóng vai trò quan tr ng. b n s không nhìn th y m t kh u vào vì h th ng s không hi n th gì ra. “m tài kho n cho ngư i dùng nhimlui”). . N u b n đã nh p đúng t t c . Sau tên c a câu l nh c n kho ng tr ng và sau đó là tên ngư i dùng. Đ h th ng cho phép ngư i dùng m i nhimlui làm vi c.

Vì thông tin thư ng không th n m g n trên m t màn hình nên khi xem c n s d ng các phím <PageUp>. Hãy nh n phím <Q> b t kỳ th i đi m nào đ thoát ra kh i màn hình xem man và quay l i dòng nh p l nh. <PageDown>. B n đ c còn có th th ch y thêm m t vài câu l nh n a và theo dõi xem h th ng làm gì. hãy th nh ng câu l nh li t kê trong b ng 2. Câu l nh ti p theo mà b t kỳ ngư i dùng Linux nào cũng c n ph i bi t đó là câu l nh man. C n ph i nh p vào câu l nh này v i m t tham s – tên c a câu l nh khác ho c t khóa. Bây gi xin b n đ c hãy th xem thông tin v hai câu l nh đã đ c p đ n trên – login và passwd. thì s xu t hi n dòng c nh báo (d ng Bad password: too short).34 Kh i đ ng Linux l n đ u và s l i xu t hi n d u nh c c a h th ng. ngư i dùng s d n d n làm quen v i chúng trong quá trình đ c cu n sách này và th c hành trên HĐH Linux c a mình. man là h th ng tr giúp luôn luôn đi kèm v i h th ng Linux. Do đó b n s nh n đư c nh ng trang này b ng ti ng Anh. Th hai.1: Nh ng câu l nh đơn gi n c a Linux Câu l nh Mô t ng n g n whoami Thông báo tên đăng nh p c a b n w ho c who Cho bi t nh ng ngư i dùng nào hi n đang làm vi c trên h th ng pwd Cho bi t tên c a thư m c hi n th i ls -l Hi n th danh sách t p tin và thư m c con c a thư m c hi n th i cd tên_thư_m c Chuy n thư m c hi n th i đ n tên_thư_m c ps ax Hi n th danh sách các ti n trình đang ch y Hãy xem mô t v nh ng câu l nh này b ng man. Ví d : [root]# man passwd K t qu là b n s nh n đư c m t văn b n mô t câu l nh tương ng ho c thông tin v đ tài mà t khoá đưa ra. N u nh p vào m t kh u không t t (m t kh u quá ng n ho c quá đơn gi n). Hãy ch y l nh: [root]# man man R t ti c theo như tác gi bi t thì hi n th i các trang thông tin man còn chưa đư c d ch sang ti ng Vi t. . thì hay kiên nh n đ c cu n sách này ho c m t cu n sách khác cùng đ tài. Ví d . và phím tr ng. B ng 2. N u như b n không có kh năng đ c ti ng Anh. Như v y là b n đ c đã làm quen v i hai câu l nh đ u tiên c a h th ng Linux: useradd và passwd.1 (hãy nh p chúng cùng v i nh ng tham s có trong b ng). nhưng h th ng v n ti p nh n m t kh u và cho phép ngư i dùng m i đăng nh p vào h th ng. có th đ c v nh ng câu l nh chính trong b t kỳ cu n sách nào nói v UNIX. Chú ý là có th xem thông tin v chính b n thân câu l nh man. Vì th nh t. Chúng ta s không xem xét chi ti t danh sách t t c nh ng câu l nh có th g p.

. Nhân ti n cũng c n nói luôn. Vì trên các h th ng UNIX ngư i ta thư ng tuân theo các truy n th ng. Terminal – thi t b dùng đ giao ti p gi a ngư i dùng và máy tính.. Theo m c đ nh. đây b n đ c có th đăng nh p dư i tên ngư i dùng khác. Đ ng quên r ng Linux là HĐH nhi u ti n trình (multiproccess) và nhi u ngư i dùng (multiuser). M t ngư i dùng nào đó d ng công vi c không có nghĩa là c n ph i t t máy. Khi h th ng UNIX đ u tiên m i đư c t o ra. Mainframe có m t terminal đ c bi t dành cho nhà qu n tr (system administrator) h th ng. n u trong quá trình làm vi c b n đ c không nh đang n m trong terminal o nào thì hãy s d ng câu l nh tty. còn có nh ng ngư i dùng khác v n ti p t c làm vi c. Nhưng đây không ph i là làm vi c l i t đ u v i h th ng mà b n đ c ch chuy n sang m t terminal o khác. ) m ra 6 phiên làm vi c song song (terminal o) như v y khi kh i đ ng. L nh này s đưa ra tên c a terminal d ng: /dev/tty2. Máy tính cá nhân c a b n đ c là máy tính th h m i. C n nói thêm là khi làm vi c ch đ văn b n (không ph i đ ho ) thì cũng có th s d ng các t h p phím <Alt>+<F1> — <Alt>+<F6> và thu đư c k t qu tương t . Hãy nh n t h p phím <Ctrl>+<Alt>+<F2>. Ngoài ra thêm vào thành ph n c a terminal bây gi còn có chu t. Hãy th vào h th ng b ng tên ngư i dùng v a m i t o ra (nhimlui). h u h t các b n phân ph i Linux l n (Red Hat. terminal o và shell Như v y là b n đ c đã có kinh nghi m làm vi c đ u tiên ch đ văn b n (hay còn g i là kênh giao tác “console”) c a h th ng Linux. thư ng g m màn hình và bàn phím.2. . đư c g i là console. ngoài console Linux còn cho phép k t n i các terminal xa t i máy tính. Như v y r t thu n ti n cho s d ng. terminal o và shell 35 2. t t hơn h t là làm quen ngay t đ u v i t h p 3 phím. do đó ch c s không có terminal xa nào k t n i t i. và h th ng s hi n th l i trên terminal này .3 Console. Đ chuy n gi a các terminal o chúng ta s d ng các t h p phím <Ctrl>+<Alt>+<F1> — <Ctrl>+<Alt>+<F6>. Đi m m nh c a gi i pháp này ch t t c nh ng chương trình cũ đã dùng đ qu n tr h th ng UNIX có th làm vi c không có v n đ gì trên d ng console m i này. Chúng ta s còn g p thư ng xuyên nh ng khái ni m trình l nh “terminal” và “console”.3 Console. Do đó. Debian. máy tính còn r t to (mainframe) và ngư i dùng làm vi c trên nh ng máy tính này qua m t h th ng nh ng giao di n k ti p nhau dùng đ k t n i các terminal xa. do đó bàn phím và màn hình máy tính cá nhân ngày nay làm vi c gi ng như console ngày xưa. Tuy nhiên n u làm vi c ch đ đ ho thì không th không dùng phím <Ctrl>. do đó tác gi gi i thích k hơn nh ng khái ni m này. B n s quay l i màn hình ban đ u. nhưng v n có bàn phím và màn hình th c hi n vai trò terminal đ i v i ngư i dùng. B n đ c s l i th y dòng m i đăng nh p login:. SuSE. Console thư ng k t n i t i máy tính không qua giao di n k ti p nhau mà qua m t c m riêng (đôi khi thi t b đưa ra không ph i là màn hình mà là m t thi t b in). Thao tác này không t t máy và cũng không kh i đ ng l i h th ng. Tuy nhiên. Sau đó hãy nh n t h p phím <Ctrl >+< Alt>+<F1>. Và hơn th n a còn cung c p kh năng làm vi c v i m t vài terminal o t m t console duy nh t. Xin nói ngay l p t c n u b n mu n thoát kh i m t trong các terminal thì có th th c hi n b ng t h p phím <Ctrl>+<D>. T h p phím nói trên ch đơn gi n là d ng phiên làm vi c hi n th i c a m t ngư i dùng.

ví d : help cd. Vì h v bash đóng m t vai trò h t s c quan tr ng trong Linux. xin b n hãy th c hi n nh ng l i khuyên trên. Cũng có th d ng phiên làm vi c b ng m t trong hai câu l nh logout ho c exit. D u nh c c a ngư i dùng root có ký t # cu i. ch có ngư i dùng cao c p m i có th th c hi n. T t nhiên là b n có th tìm th y nh ng thông tin tương t trong b t kỳ cu n sách nào v UNIX. r i vào h th ng dư i tên ngư i dùng m i t o ra. nên tác gi s dành riêng m t chương c a cu n sách này đ nói v nó. Máy tính c a ngư i dùng thông thư ng là máy cá nhân (personal computer hay nói g n là PC) dù nhà hay cơ quan. vì d u nh c này là do shell đưa ra đ đ i ngư i dùng nh p vào câu l nh ti p theo. H v hay shell (t này thư ng không d ch mà đ nguyên ti ng Anh) là chương trình th c hi n vi c giao ti p c a h th ng v i ngư i dùng. Cũng có th s d ng nh ng h v này trên Linux. Đ ng kh i đ ng l i máy tính m i l n như v y! Câu l nh su giúp đ gi i quy t nh ng trư ng h p như v y. Có nghĩa b n đ c cũng là ngư i dùng root c a h th ng. Bây gi chúng ta s xem xét thêm m t câu l nh n a mà b n đ c c n bi t. N u b n đ c đăng nh p vào h th ng t terminal th hai dư i tên ngư i dùng nhimlui (ho c dư i tên ngư i dùng b n đã ch n). t c là vào h th ng dư i tên ngư i dùng bình thư ng (không có quy n cao “c p” c a ngư i dùng root). thì hãy chú ý đ n s khác nhau trong d u nh c c a hai ngư i dùng root và nhimlui. Có th xem danh sách các câu l nh tích h p trong bash b ng l nh help. H v bash không ch là b x lý l nh mà còn là m t ngôn ng l p trình m nh. và ngoài ra còn có th s d ng các chương trình khác n m trên đĩa làm câu l nh. Hãy th l nh này! Xem thông tin chi ti t v m t l nh nào đó cũng b ng l nh help này v i tham s là tên c a l nh. Nhưng như đã nói trên. Khi đăng nh p dư i tên ngư i dùng thông thư ng. Cũng c n lưu ý là đ i v i các h th ng UNIX các nhà phát tri n đã vi t ra nhi u h v khác thay th cho bash. M i l n ngư i dùng nào đó vào h th ng. d u nh c c a t t c nh ng ngư i dùng còn l i – ký t $. nhưng theo m c đ nh s ch y bash. Ch c n nh p câu l nh su và shell hi n . Chính shell nh n t t c nh ng câu l nh mà ngư i dùng nh p vào t bàn phím và t ch c vi c th c hi n nh ng câu l nh này. vì th shell còn có th g i là b x lý l nh (thu t ng quen thu c đ i v i ngư i dùng DOS). B n ch c n nh p vào l nh bash (đây cũng là tên c a chương trình h v trên ph n l n các h th ng Linux) và như v y là đã ch y m t shell m i. Bây gi khi đã bi t cách b ng đ u và k t thúc phiên làm vi c trên h th ng. có m t lo t các thao tác. Hãy đóng t t c nh ng phiên làm vi c mà root m ra.36 Kh i đ ng Linux l n đ u d u m i đăng nh p (login:) mà b n đ c đã th y. đăng nh p dư i tên ngư i dùng cao c p này là không nên. Trong bash có đ y đ các câu l nh tích h p (n i b ) và các toán t . b n s quay l i h v ban đ u (h v mà t đó b n đã ch y l nh bash). ví d g n h th ng t p tin. Còn bây gi c n nói vài dòng v h v . Trong khi đó. vì m i thao tác không c n th n c a ngư i dùng này có th d n đ n nh ng h u qu không mong mu n. câu l nh login s ch y cho ngư i dùng này m t b x lý l nh – shell. Nói m t cách ch t ch thì câu “h th ng hi n th d u nh c” là không đúng. Không ch duy nh t l nh login có kh năng ch y shell. Khi thoát kh i h v m i này (b ng câu l nh exit ho c t h p phím <Ctrl>+<D>). ít nh t b n đ c cũng không th xóa ho c làm h ng các t p tin h th ng (system files) do s không c n th n c a mình.

<←>. hãy quay l i tài kho n c a ngư i dùng bình thư ng ngay l p t c b ng t h p phím <Ctrl>+<Alt>+<F2>. . vì chúng đư c Midnight Commander dùng đ di chuy n dòng chi u sáng trong b ng4 hi n th i. còn có th vào h th ng dư i tên m t ngư i dùng b t kỳ mà b n bi t m t kh u3 (nói cách khác là “ch y m t h v shell m i dư i tên ngư i dùng khác”). Nhưng c n ch ra tên c a ngư i dùng này trên dòng l nh. Sau khi th c hi n xong các công vi c qu n tr h th ng. cũng như gây nh hư ng đ n cách làm vi c c a shell b ng bàn phím (b ng 2. Vì th có th làm vi c dư i tên ngư i dùng root trên terminal o th nh t. Ghi chú: N u b n làm vi c trong chương trình Midnight Commander.2.2. chúng ta s nói v chu t m t ph n riêng). Đ có thêm thông tin hãy s d ng câu l nh man bash ho c info bash. Nhưng m t s t h p phím dùng v i <Ctrl> và <Esc> thì v n dùng đư c bình thư ng. nhưng chúng ta ch xem xét nh ng câu l nh đơn gi n và c n thi t trong l n làm quen đ u tiên v i Linux này. Như v y b n đ c s không có nguy cơ làm h ng h th ng khi còn chưa có nhi u kinh nghi m s d ng Linux. T t nhiên là đ có quy n này b n c n nh p m t kh u c a root vào dòng yêu c u hi n ra (Password:). hãy thoát kh i h v và b n s tr thành ngư i dùng bình thư ng v i nh ng quy n c a mình. L ch s l nh 37 th i (hay nói không đúng là “h th ng”) s ch y m t shell m i mà khi vào trong đó b n s ch y t t c các l nh v i quy n c a root.4 So n th o dòng l nh. 3 4 Ngư i dùng root không c n ph i bi t m t kh u đ làm vi c này. Nhưng dù sao cũng có ích n u đưa ra danh sách ng n g n nh ng câu l nh (hay nói đúng hơn là phím và t h p phím) dùng đ so n th o dòng l nh. B ng cách tương t như vào h th ng dư i tên root trên. Hãy nh r ng Linux là h th ng nhi u ngư i dùng. <Home>. còn trên terminal o th hai – dư i tên ngư i dùng bình thư ng.2.. ví d : [user]$ su nhimlui Câu l nh su trư c không kèm theo tên nào. <End>. đ c thư. Nhưng trong HĐH Linux còn có thêm m t kh năng chuy n t m th i vào tài kho n c a ngư i dùng root đ th c hi n các ch c năng qu n tr . <Del> đ làm các công vi c như b ng trên. panel . Đ th c hi n l a ch n này b n ch c n nh n <Ctrl>+<Alt>+<F1> và s có ngay quy n c a nhà qu n tr . thì có th s không th s d ng nh ng phím như <→>. 2. Danh sách nh ng câu l nh (t h p phím) có th dùng không ch gi i h n trong ph m vi b ng 2. trên h th ng có th làm vi c cùng lúc nhi u ngư i dùng. . ) b n có th th c hi n b ng tài kho n bình thư ng. Tác gi cho r ng n u trong quá trình nh p l nh có x y ra l i thì b n có th đoán đư c cách s a chúng. L ch s l nh Trong nh ng ph n trư c tác gi đã đ ngh b n đ c th c hi n m t vài l nh c a HĐH Linux. b n s dùng tài kho n ngư i dùng cao c p (root). theo m c đ nh s đ t tên ngư i dùng cao c p root vào.4 So n th o dòng l nh. Nh ng công vi c thư ng ngày (so n th o văn b n. Sau khi làm xong nh ng thao tác mà ch có ngư i dùng cao c p m i có th làm. còn khi c n th c hi n các công vi c qu n tr .

<Ctrl>+<M> <Ctrl>+<L> <Ctrl>+<T> <Esc>+<T> <Ctrl>+<K> B ng 2. <Shift>+ <PgDown> <Ctrl>+<C> <Ctrl>+<D> .38 Kh i đ ng Linux l n đ u Phím <→>. <Ctrl>+<A> <End>.2: Nh ng phím so n th o dòng l nh Ph n ng c a h th ng Di chuy n sang ph i m t ký t (trong khuôn kh nh ng ký t đã nh p c ng thêm m t ký t s nh p) Di chuy n sang trái m t ký t Di chuy n sang ph i m t t Di chuy n sang trái m t t Di chuy n v đ u dòng l nh Di chuy n v cu i dòng l nh Xóa ký t n m t i v trí con tr Xóa ký t n m bên trái con tr B t đ u th c hi n câu l nh D n màn hình và đưa dòng l nh hi n th i lên dòng đ u tiên Đ i ch hai ký t : ký t n m t i v trí con tr và ký t n m bên trái con tr . ngư i dùng không k p th y chúng D ng th c hi n câu l nh v a ch y (mà v n đang ch y) Thoát ra kh i h v bash <Ctrl>+<U> <Esc>+<D> <Esc>+<Del> <Ctrl>+<W> <Ctrl>+<Y> <Esc>+<C> <Esc>+<U> <Esc>+<L> <Shift>+ <PgUp>. <Ctrl>+<F> <←>. <Ctrl>+<D> <Backspase> <Enter>. S lư ng nh ng trang này ph thu c vào b nh c a c c màn hình. <Ctrl>+<E> <Del>. Có ích khi có câu l nh nào đó đưa ra màn hình r t nhi u thông tin ch y nhanh qua màn hình. <Ctrl>+<B> <Esc>+<F> <Esc>+<B> <Home>. sau đó di chuy n con tr sang ph i m t ký t Đ i ch hai t : t n m t i v trí con tr và t n m bên trái con tr C t ph n dòng l nh b t đ u t ký t n m t i v trí con tr đ n cu i dòng (ph n dòng l nh c t ra đư c lưu trong b đ m và có th đ t vào v trí khác) C t ph n dòng l nh b t đ u t ký t n m bên trái con tr đ n đ u dòng (ph n dòng l nh c t ra đư c lưu tron b đ m và có th đ t vào v trí khác) C t ph n dòng l nh b t đ u t v trí con tr đ n cu i t (n u t i v trí con tr là d u cách thì c t toàn b t n m bên ph i nó) C t ph n dòng l nh b t đ u t v trí con tr đ n đ u t (n u t i v trí con tr là d u cách thì c t toàn b t n m bên trái nó) C t ph n dòng l nh b t đ u t v trí con tr đ n d u cách bên trái Đ t (dán) đo n dòng l nh đã c t cu i cùng vào v trí con tr Chuy n ký t t i v trí con tr thành vi t hoa r i di chuy n con tr t i d u cách đ u tiên bên ph i so v i t hi n th i Chuy n t t c các ký t b t đ u t v trí con tr thành vi t HOA r i di chuy n con tr t i d u cách đ u tiên bên ph i Chuy n t t c các ký t b t đ u t v trí con tr t i cu i t thành vi t thư ng r i di chuy n con tr t i d u cách đ u tiên bên ph i Nh ng t h p phím này cho phép xem các trang màn hình đã hi n th .

Vì trong b t kỳ th i đi m nào trên h th ng cũng có r t nhi u quá trình đang làm vi c. N u s phương án ch n là r t nhi u (ví d nh n phím <Tab> hai l n khi dòng l nh tr ng r ng) thì b n đ c s nghe th y ti ng bíp sau l n nh n <Tab> đ u tiên. giá tr này đư c đ t trong bi n HISTSIZE. Đây đư c g i là l ch s l nh.5 Ng ng làm vi c v i Linux M c dù máy tính làm vi c dư i s đi u khi n c a HĐH Linux có th đ ch y su t ngày đêm. Trong khi làm vi c v i h v s có ích n u bi t r ng.3. xem chương 3) và cho phép g i l i chúng b ng cách ch n t danh sách. t c là bash ch tìm th y có m t câu l nh này. thì có hai kh năng x y ra. ch c n s d ng t h p phím <Esc>+<$> thay cho <Tab>. Nhưng nguyên nhân quan tr ng hơn là ch m t s ti n trình này có th đang làm vi c v i các t p tin. N u bash tìm th y nhi u câu l nh có ph n đ u này. N u nh n hai l n phím <Tab> sau tên c a m t câu l nh và m t kho ng tr ng. nhưng ph n l n ngư i dùng máy tính cá nhân đã quen v i vi c t t máy sau khi làm vi c xong. thì h v s thêm ph n còn l i c a câu l nh này vào dòng l nh. Cũng gi ng như trư ng h p câu l nh. bash ghi nh m t s câu l nh (theo m c đ nh là 1000 l nh.5 Ng ng làm vi c v i Linux 39 Xin lưu ý b n đ c trong h v bash có chương trình tích h p giúp d dành nh p câu l nh trên dòng l nh.2. đây b n c n s d ng các t h p phím <Shift>+<PgUp> và <Shift>+<PgDown> đ xem danh sách (có th ) r t dài này. Nh đó ngư i dùng có kh năng nh p thêm m t vài ký t n a làm gi m s phương án ch n xu ng còn 1 r i là dùng phím <Tab> m t l n n a. Khi làm vi c v i HĐH Linux không th t t máy b ng cách ng t ngu n đi n như đ i v i MS-DOS. n u đã nh p vào m t ph n tên t p tin thì ph n còn l i s đư c t đ ng thêm vào. N u chúng là ph n đ u c a duy nh t m t câu l nh. G i chương trình con này b ng m t ho c hai l n nh n phím <Tab> sau khi nh p m t vài ký t . B n có th th y đi u này b ng cách th c hi n l nh: [nhimlui]$ ps ax Th c hi n l i l nh này m t l n n a đ xem l i. thì h v bash s coi như b n đang tìm tên t p tin đ dùng làm tham s cho l nh này. L ch s l nh đư c lưu trong t p tin xác đ nh b i bi n HISTFILE (thư ng là $HOME/. Tương t như v y có th đoán ph n còn l i c a các bi n môi trư ng5 . và sau l n nh n <Tab> th hai s xu t hi n m t dòng d ng Display all 2627 possibilities? (y or n) (Hi n th t t c 2627 kh năng? c n ch n y – có ho c n – không). thì s hi n th danh sách t t c nh ng phương án có th ch n. 2. Có th xem l ch s l nh b ng câu l nh history.bash_history). và h th ng còn chưa ghi nh t t c các thay đ i v i nh ng t p tin lên đĩa mà ch lưu 5 environment variable . và bash s đưa ra danh sách t p tin c a thư m c hi n th i. Đây là tính năng tr giúp c a bash trong trư ng h p ngư i dùng quên tên t p tin trong khi làm vi c căng th ng. Đ làm vi c v i l ch s câu l nh trong h v bash ngư i ta s d ng nh ng t h p phím trong b ng 2. N u nh ng ký t này là ph n đ u c a ít nh t m t trong nh ng câu l nh mà bash bi t.

Th i gian h n gi đư c tính t lúc nh n phím <Enter>. Ch có ngư i dùng root m i có th th c hi n câu l nh shutdown này6 . Thư ng s d ng hai trong s các tùy ch n c a chương trình shutdown: ˆ -h – d ng hoàn toàn h th ng (halt. s t t máy) ˆ -r – kh i đ ng l i h th ng (reboot). Do đó c n bi t d ng h th ng m t cách đúng đ n trư c khi t t máy. Vi c tìm dòng l nh c n thi t s đư c th c hi n t cu i t p tin l ch s và dòng l nh đ u tiên tìm th y s đư c th c hi n <Ctrl>+<O> Cũng gi ng như nh n phím <Enter>.3: T h p phím đi u khi n l ch s l nh Phím Ph n ng c a h th ng <↑> ho c <Ctrl>+<P> Chuy n t i (g i vào dòng l nh) câu l nh trư c trong danh sách (di chuy n ngư c l i danh sách) <↓> ho c <Ctrl>+<N> Chuy n t i câu l nh ti p theo trong danh sách (di chuy n theo danh sách) <PgUp> Chuy n t i câu l nh đ u tiên trong danh sách l ch s l nh <!>. do đó b n c n đăng nh p vào h th ng dư i tên ngư i dùng này. có ph n đ u trùng v i dòng_ký_t .40 Kh i đ ng Linux l n đ u B ng 2. n u b n mu n kh i đ ng l i sau 5 phút thì hãy nh p vào câu l nh: [root]# shutdown -r +5 Câu l nh này có nghĩa là “d ng h th ng sau 5 phút và kh i đ ng l i sau khi hoàn thành công vi c”. đây là /sbin/shutdown. Ví d . Tham s th i_gian dùng đ “h n gi ” th c hi n câu l nh (không nh t thi t ph i th c hi n câu l nh ngay l p t c). ví d qua sudo. ho c dùng câu l nh su đ có đ quy n tương ng. Đi u đó có nghĩa là bash không bi t tìm chương trình đây. N u ng t ngu n đi n thì nh ng thay đ i này s không đư c lưu và s b m t. Đ i v i chúng ta thì t m th i câu l nh sau s thích h p hơn: 6 Cũng có th c u hình đ nh ng ngư i dùng khác th c hi n đư c shutdown. Công vi c này do câu l nh (chương trình) shutdown đ m nhi m. . b n s nh n đư c câu tr l i “bash: shutdown: command not found”. đôi khi có th d n đ n không kh i đ ng đư c máy trong l n sau. <N> Th c hi n câu l nh th n tính t cu i danh sách <!>. vì t p tin chương trình c a shutdown n m t i /sbin. <N> Th c hi n (không c n nh n <Enter> câu l nh th n trong danh sách <!>. dòng_ký_t Th c hi n dòng l nh. Trong trư ng h p đó b n c n nh p vào đư ng d n đ y đ đ n chương trình. sau đó hi n th câu l nh ti p theo trong l ch s l nh t m chúng trong b nh (cache). <->. Câu l nh shutdown có cú pháp như sau: [root]# shutdown <tùy_ch n> <th i_gian> <dòng_thông_báo> Ghi chú: R t có th khi ch y l nh.

Các d án d ch chúng sang ti ng Vi t còn chưa đư c t ch c ho c còn chưa đư c hoàn ch nh. Các phiên b n Linux có hàng nghìn trang tài li u d ng t p tin.org) ˆ câu l nh locate C n nói ngay l p t c là ph n l n thông tin t nh ng ngu n này b ng ti ng Anh. Tác gi coi cách gi i quy t này là đúng vì ngư i dùng c n bi t trư c cách thoát kh i nh ng trư ng h p khó khăn. tldp.6. Nhưng tôi s ph i “đi trư c” k v cách nh n thông tin tr giúp trong giao di n đ ho (X Window). thì t t nh t hãy tìm tr giúp ngay trong h th ng. Vì th tác gi s đưa ra ngay l p t c nh ng ngu n thông tin khác. Có m t vài ngu n đ c l p ch a thông tin v h u h t các m t c a h th ng Linux: ˆ các trang tr giúp man ˆ tr giúp siêu văn b n info ˆ tài li u đi kèm v i ph n m m ˆ HOWTO và FAQ c a d án The Linux Document Project (http://www.1 Các ngu n thông tin tr giúp N u rơi vào tình hu ng mà b n không bi t ph i làm gì đ có đư c k t qu mong mu n. Sau khi nh n t h p phím “n i ti ng” <Ctrl>+<Alt>+<Del> trên Linux s th c hi n các hành đ ng tương t v i l nh [root]# shutdown -r now B ng cách này cũng có th t t máy. 2. nhưng c n ng t ngu n đi n trong khi h th ng b t đ u kh i đ ng l i. nhưng có th nó không gi i quy t đư c t t c nh ng v n đ c a b n.6 Tr giúp khi dùng Linux [root]# shutdown -h now 41 Câu l nh này s t t máy ngay l p t c.2. do đó câu tr l i cho câu h i c a b n đã n m trong lòng bàn tay. Tác gi cũng mong cu n sách này s th c hi n vai trò tr giúp trong th i gian đ u tiên này. Do đó chúng ta s xem xét t ng ngu n thông tin này m t cách c th hơn. Tương đương v i câu l nh này là l nh halt. 2.6 Tr giúp khi dùng Linux Như v y là b n đ c đã k t thúc phiên làm vi c đ u tiên v i HĐH Linux và tôi mong r ng b n chưa c n tr giúp trong m t tình hu ng nào đó. .

V n đ ch các t p tin ch a thông tin c a tr giúp man n m trong các thư m c con c a thư m c /usr/share/man và khi câu l nh man tìm ki m thông tin c n thi t. Các trang man đư c xem b ng chương trình less (ho c chương trình xác đ nh b i bi n PAGER). Nh ng phím thư ng dùng nh t là: N u b n không thích đ c t màn hình mà c m tay đ c. hàm do nhân cung c p) 3 G i thư vi n (library call. chương trình con.6.4. do đó có kh năng xem thông tin theo t ng màn hình và di chuy n màn hình này xu ng dư i và lên trên và đ di chuy n có th s d ng các phím như trong chương trình less.4: Các ph n chính c a tr giúp man Ph n N i dung 0 Các t p tin header (thư ng n m trong /usr/include) 1 Chương trình ho c câu l nh c a ngư i dùng 8 Câu l nh dùng đ qu n tr h th ng 2 G i h th ng (system call. thư ng n m trong /dev) 5 Đ nh d ng t p tin và quy ư c. Đây là cách nh n tr giúp chính trong t t c các h th ng UNIX. Các trang tr giúp man chia thành các ph n sau: B ng 2. v đ nh d ng t p tin.42 Kh i đ ng Linux l n đ u 2. N u b n ch y l nh [user]$ man swapon thì s nh n đư c tr giúp v câu l nh swapon n m trong ph n 8. Vì th n u mu n xem tr giúp v g i h th ng swapon c n ch y l nh [user]$ man 2 swapon đ ch ra s th t c a ph n tr giúp c n tìm ki m thông tin. hàm trong thư vi n c a ng d ng) 4 Thi t b (t p tin đ c bi t. b ng câu l nh này ngư i dùng trong hình hu ng khó khăn luôn luôn có th tìm tr giúp v b t kỳ câu l nh nào c a h th ng. ví d /etc/passwd 6 Trò chơi 7 Khác (bao g m các gói macro và quy ư c. groff(7) 9 Nhân (kernel routines) n các l nh Tcl/Tk Th t li t kê đây không ph i là s nh m l n. ví d man(7). thì có th in ra trang man tương ng b ng l nh [user]$ man tên_câu_l nh | lpr ho c n u máy in là postscript thì dùng: [user]$ man -t tên_câu_l nh | lpr . thì nó s xem các thư m c con này theo th t đã ch ra trong b ng 2. và v các g i h th ng (system call).2 Các trang tr giúp man Như đã nói ng n g n trên v câu l nh man.

Hãy th ch y l nh sau: [user]$ man -k net C n ph i nói luôn là đ cho các câu l nh man -k. c n nh p vào info cùng v i m t tham s là tên c a câu l nh quan tâm. Câu l nh whatis tìm ki m t khóa đưa ra trong cơ s d li u bao g m danh sách các câu l nh và mô t ng n g n c a chúng. Đ nh n thông tin v m t câu l nh nào đó. <Enter> <N> ng 2. các trang tr giúp man không dành cho th i gian làm quen đ u tiên v i Linux. Chúng dành cho nh ng ngư i dùng có kinh nghi m c n có “s tay tra c u” v đ nh d ng. Nh đó b n có kh năng xem các ph n khác nhau c a tr giúp mà không c n ph i thoát ra kh i chương trình xem này. Nhưng s khác nhau cơ b n nh t ch info đưa ra thông tin d ng siêu văn b n (hypertext) gi ng như các trang web. Câu l nh apropos th c hi n tìm ki m theo các ph n c a t khóa. Tương t như l nh apropos là câu l nh man v i tham s -k.2. Ví d : [user]$ info man Thông tin màn b n s th y trên màn hình trong ph n l n trư ng h p s khác v i nh ng gì mà câu l nh man đưa ra. thì đ u tiên c n t o ra cơ s d li u v các câu l nh có trên máy b ng cách ch y l nh makewhatis. 2.3 Câu l nh info Câu l nh info là d ng tr giúp thay th và tương đương v i man. Cu i cùng tác gi mu n nói r ng. . N u b n đ c đ máy ch y c đêm thì t t nh t ch y câu l nh này d ng công vi c cho ti n trình cron7 . dòng ký t . whatis và apropos làm vi c.5: Phím s d ng đ xem trang man Ch c năng Thoát kh i chương trình Xem t ng dòng Hi n th màn hình thông tin ti p theo Quay l i màn hình trư c Tìm ki m dòng ký t ch ra L p l i tìm ki m v a th c hi n. tuỳ ch n và cú pháp c a l nh trong quá trình làm vi c đ không ph i nh m t s lư ng l n nh ng thông tin này trong đ u. Trong khi làm vi c ch đ văn b n.6. Trong trư ng h p ngư c l i khi tìm ki m b n s nh n đư c thông báo “nothing appropriate”. Tuy nhiên đ có th nh n đư c thông tin mong mu n thì còn c n ph i bi t ch tìm thông tin đó.6 Tr giúp khi dùng Linux 43 B Phím <Q> <Enter> <Space> <B> </>. Trong trư ng h p này có th dùng hai câu l nh whatis và apropos. Ch có ngư i dùng root m i có quy n ch y câu l nh makewhatis. thì cũng gi ng như man. Và theo ý ki n c a nhi u ngư i dùng là v chi u hư ng t t hơn. b n có th 7 cron là chương trình đ ch y t đ ng các công vi c theo th i gian đã đ nh. L nh này ch đưa ra nh ng trùng l p chính xác v i t khóa tìm ki m.

h th ng tr giúp v các l nh tích h p c a h v bash là câu l nh help.. n u không thì chương trình s yêu c u nh p thêm vào. []. .6. Khi ch y locate nó s tìm t t c nh ng t p tin có tên ch a t khóa đưa ra. S ký t ph i đ sao cho ch tương ng v i m t ph n tr giúp. còn <U> chuy n lên trên m t b c trong c u trúc phân b c c a các trang tài li u này. Nh ng thư m c này ch a tài li u đ y đ v h th ng Linux nói chung cũng như nh ng ph n riêng r c a nó. <Ctrl>+<Alt>+<F3> v.9 n m trong /usr/share/doc sau khi cài đ t. . khác v i cách đánh d u liên k t trên các trang Web nhưng v n gi nguyên đư c s thu n l i. 2. thì b n s nh n đư c gi i thi u ng n g n v cách s d ng câu l nh này. 2. N u cài đ t chương trình t gói (package) d ng rpm (Fedora Core. . phím <N> đưa đ n trang ti p theo. Thoát ra kh i info b ng phím <Q>. Nh ng liên k t này đư c đánh d u b ng ký t sao (*). Tên c a nh ng thư m c con này tương ng v i tên c a chương trình và phiên b n c a nó. Ph n l n các chương trình ng d ng có kèm theo tài li u hư ng d n cài đ t và s d ng. Phím <P> đưa ngư i dùng tr l i trang v a xem. Trong t khóa (m u) có th s d ng các ký t thay th *. Nh ng tài li u này có d ng văn b n ASCII và có th xem chúng b ng các câu l nh more tên ho c less tên ho c b ng chương trình xem có trong Midnight Commander. Tên c a nh ng ph n tr giúp này đư c hi n th trên màn hình. Câu l nh này trong m t ch ng m c nào đó tương t v i các l nh whatis và apropos. thì sau khi k t thúc b n s tìm th y trong thư m c /usr/share/doc (ho c /usr/doc) các thư m c con HOWTO. . hãy nh n phím <Enter>. còn có th chuy n theo liên k t b ng cách khác tương t như h th ng trình đơn. Mandriva. sau đó nh p vào dòng Menu item: cu i màn hình m t vài ký t đ u tiên c a tên c a ph n tr giúp c n thi t. ) thì tài li u s n m trong thư m c con tương ng c a thư m c /usr/share/doc. Tuy nhiên câu l nh locate không tìm ki m theo các .6. N u ch y l nh help không có tham s thì s nh n đư c danh sách c a t t c các l nh tích h p c a bash. chương trình nh p ti ng Vi t mà tôi đang dùng đ gõ nh ng dòng này xvnkb phiên b n 0. ) đ có th chuy n sang terminal o đó tìm tr giúp khi c n thi t.v. Ví d locate net s tìm t t c nh ng tên t p tin có tên ch a “net”. . . trong đó tên là tên c a m t trong nh ng câu l nh nói trên.44 Kh i đ ng Linux l n đ u ch y câu l nh info trên m t trong các terminal o (hãy nh đ n các t h p phím <Ctrl>+<Alt>+<F2>. Trong trư ng h p b n không bi t tìm thông tin c n thi t đâu thì có th chuy n sang các ph n khác nhau b ng các siêu liên k t (hyperlink) mà info t o ra.4 Câu l nh help Như đã nh c đ n trên.2. SuSE.2. FAQ.. Ví d . Đ u tiên c n nh n phím <M>.9 có thư m c con tương ng xvnkb-0. ?. N u ch y help tên.5 Tài li u đi kèm v i b n phân ph i và chương trình ng d ng N u trong quá trình cài đ t không b đi nh ng gói tài li u. Nh ng t p tin này có r t nhi u trên máy. Có th di chuy n qua các liên k t b ng phím <Tab>. Ngoài ra. Sau khi di chuy n đ n liên k t mong mu n. Đôi khi đ tìm t p tin tr giúp mong mu n b n s c n đ n câu l nh locate.

2. http://vnoss. tài li u v Linux. Trong m t s b n phân ph i locate đư c thay th b i slocate (secure locate).org – trang web dành cho ngư i dùng mã ngu n m (MNM) Vi t Nam.v. Trang web do bác Nguy n Đ i Quý đang s ng và làm vi c t i B duy trì.6. . . 2.net – tin t c v Linux và MNM. B n s tìm th y nhi u thông tin có ích đây và có th đăng ký tham gia nhóm thư vietlug đ đ t câu h i. di n đàn cho phép b n đ t câu h i c a mình. đ u đã có nh ng tài li u này (r t có th đã đư c d ch sang ti ng Vi t). trang man. 2. Có nhi u thông tin v Linux. Fedora. 2. Các trang ti ng Vi t 1. . Các b n phân ph i l n như Debian. .. http://vnoss. SuSE.2. Vi c tìm ki m và hi n th các trang tr giúp đư c th c hi n b ng cách nh n các nút và trình đơn. Khi này t p tin s đư c hi n th d ng lưu trên đĩa: trang info. . Trang này do anh Larry Nguy n.8 Sách và Internet T t nhiên. v. duy trì. Còn l i (theo thông tin hi n th ) xman cũng gi ng như man.org – đây là trang web dành cho nhóm ngư i dùng Linux Vi t Nam (vietlug). R t ti c ngư i d ch chưa đ c cu n sách ti ng Vi t nào v Linux do đó không th gi i thi u v i b n đ c. slocate t t o cho mình cơ s d li u nói trên sau khi ch y v i tham s tương ng. N u nh n chu t vào m t t p tin trong danh sách thì s hi n ra m t c a s khác n i dung c a t p tin đã ch n. Sau khi hoàn thành tìm ki m chương trình s hi n ra danh sách nh ng t p tin có ch a thu t ng này. mà theo cơ s d li u đ c bi t ch a tên các t p tin đư c t o ra (và đôi khi c n c p nh t) b ng l nh updatedb.6.6 Tr giúp khi dùng Linux 45 thư m c c a h th ng t p tin. Trư c tiên b n c n đ c tài li u hư ng d n đi kèm v i b n phân ph i c a mình. có m t ô nh p vào đ ngư i dùng đưa ra thu t ng đang quan tâm. h c Linux d dàng và đơn gi n nh t khi có m t cu n sách t t. m t Vi t Ki u M . 3. Chương trình s xem t t c các t p tin tài li u (b n có th c u hình đ ch n nh ng tài li u nào c n xem khi tìm ki m). T t nhiên n u b n có k t n i Internet (bây gi không còn quá xa x ) và m t chút ti ng Anh thì có th tìm đư c câu tr l i cho m i câu h i c a mình. Tôi xin đưa ra m t s đ a ch sau làm bư c kh i đ u cho b n đ c trong bi n thông tin vô b b n này.6.7 Câu l nh helptool Sau khi ch y l nh helptool s hi n ra m t c a s đ ho .6 Câu l nh xman Đây là chương trình cho phép xem các trang tr giúp man khi làm vi c giao di n đ ho (GUI). http://vnlinux.

org – T ch c Linux International. Xem trang này b n s bi t ph n l n nh ng s ki n trong th gi i Linux.linuxplanet.com 8. Có các bài báo và l i bình c a ngư i đ c (không qua ki m duy t). R t nhi u tài li u bao g m HOWTO.com 10. thông báo qu ng cáo và các thông tin khác.org 3. Thông tin chia thành t ng h ng m c: thông tin chung. 15. http://www. 6.co – 9.lwn.com – Danh sách dài nh ng tin t c. .linuxgazette.linuxnewbie.46 Kh i đ ng Linux l n đ u 4.org – Trang ch c a môi trư ng làm vi c KDE. FAQ. http://freshmeat. http://www. .linux. Kho ph n m m kh ng l cho Linux. 16.org. Tin t c trên tu n báo này đư c ban biên t p chú thích r t t t. 13.gnu. sách. Các trang ti ng Anh 1.tldp. 11. 7.linuxtoday. http://www. http://www.org – Trang web chính ch a tài li u v Linux.li.linuxstart.org – Nh ng tin t c m i nh t v công ngh máy tính trong đó có Linux. Do Allan Cox m t trong các nhà phát tri n Linux h tr .kde. 14. trong đó n i ti ng nh t là trình so n th o Emacs (GNU’s Not UNIX). N u b n mu n tin tư ng r ng Linux phát tri n r t nhanh và mu n nh n tr giúp c a các công ty thương m i l n thì nh t đ nh ph i thăm trang này.linuxjournal. http://www. http://www. http://www.net – Tin t c hàng tu n v Linux. http://www. http://www.uk – Trang web Linux c a Châu Âu.v.org – Trang web t t cho nh ng ngư i dùng m i. đây b n s tìm th y r t nhi u tài li u.linux. . 5. http://kde-vi. 4. 17. http://www.com 2.linux. .org – trang web c a nhóm d ch giao di n KDE sang ti ng Vi t.com – t báo Linux này s thú v đ i v i c ngư i dùng m i và ngư i dùng có kinh nghi m.linux. thương m i. http://www. Thư ng đăng nh ng bài báo v nhi u đ tài.com – t p chí Linux. http://www.net/ – Thông báo hàng ngày v nh ng chương trình ng d ng m i ra dành cho Linux. http://oreilly.org – Các ng d ng dành cho Linux. http://www. . v. http://www. http://slashdot. công c phát tri n chương trình m i. chương trình cho Linux. thông tin v nhân Linux. 12.

nhưng s h tr k thu t thì không”. 21.linux-mag. Khi đ t câu h i có liên quan đ n h th ng Linux c a b n. Tuy nhiên b n c n bi t là đ đ c đư c t t c thư chung thì c n r t nhi u th i gian. Ngư i dùng Linux h t s c vui lòng tr l i thư c a b n. Cách đăng ký còn ph thu c vào t ng nhóm thư (nói chính xác hơn là ph thu c vào máy ch đi u khi n nhóm thư này). Nhưng hi n nay thư ng có hai cách đăng ký: g i thư đ n m t đ a ch xác đ nh đ yêu c u. 47 19. Đ ng đòi h i ngư i dùng khác g i câu tr l i th ng đ n đ a ch c a b n.org – T p chí phi thương m i toàn c u. “vi t thư vào nhóm thư chung là t th hi n. N u có v n đ trong lúc cài đ t. Do đó n u mu n b n có th xem kho lưu tr nh ng lá thư này b ng trình duy t. thông báo nào hi n ra khi có v n đ . thì hãy h i d ch v khách hàng c a phân ph i đĩa.com – Linux Magazin. Đi đ n đâu là ph thu c vào ý mu n c a b n. phiên b n nhân. B n nên đăng ký v i m t vài nhóm thư chung (mailing list) nào đó. N u b n mua đĩa c a m t công ty chuyên môn thì s có đ a ch liên l c c a d ch v này.net. dòng ch ghi trên m ch đi n t ).penguinmagazine.2. n u không hi u thì còn có th yêu c u gi i thích thêm.com.6 Tr giúp khi dùng Linux 18. r t có th đã có câu tr l i cho câu h i c a b n đó. Nh ng trang nói trên ch là đi m kh i đ u đ t đó b n s tìm đư c nh ng trang web khác trong bi n thông tin Internet. B o đ m là b n s nh n đư c câu tr l i. và còn ph i đ c r t nhi u thư c a nh ng ngư i dùng m i khác (ví d “Console là gì?”). http://www. http://www. SuSE. Vi t thư thì mi n phí. đăng ký qua giao di n web. http://www. T t nhiên đây không ph i là danh sách đ y đ nh ng trang web nói v Linux.linuxfocus. Và như v y b n không c n ph i đăng ký cũng như vi t thư vào nhóm thư chung n a. m t t t p chí r t thú v . c n luôn luôn thêm vào thư c a mình càng nhi u chi ti t càng t t (nhưng đ ng thêm thông tin th a) bao g m: tên c a b n phân ph i (Debian.com – M t trang web t t có r t nhi u bài báo hay. vi t thư đi n t cũng là s h tr k thu t. Hãy s d ng h p thư đi n t . Xin hãy luôn nh đi u đó! . Fedora. ho c th m chí có c nh ng lá thư “ng ng n” (ví d “Hôm nay dùng Debian th t vui”) và t t nhiên là ph i đ c c nh ng thư tr l i cho nh ng câu h i này c a nh ng ai bi t m t chút gì đó. 20.linuxworld. có v n đ v i ph n c ng nào (phiên b n. ví d mailto:vietlug-users@userforge. N u b n mua đĩa ghi l i ho c t ghi đĩa t t p tin ISO nh n đư c qua Internet thì r t có th l i cài đ t là do khi ghi đĩa gây ra. Thông tin này b n có th tìm th y trên trang web gi i thi u v nhóm thư chung. http://www. hay m t cái nào khác). T t nhiên n u không tìm th y thì đ ng ng i ng n đ t câu h i.

1 H v là gì? Chúng ta thư ng nói “ngư i dùng làm vi c v i h đi u hành”. nên ngay trong ch đ text đã có kh năng làm vi c trong vài c a s .h v . g i là sh. vài bi n th c a sh đư c phát tri n và làm . th c hi n “liên h ” v i ngư i dùng trong môi trư ng đ h a. Tuy nhiên đây là m t ý ki n sai l m. C n nói ngay r ng. tên g i “h v ” (shell) đư c dùng cho các chương trình dùng đ biên d ch l nh trong ch đ text trên m i h th ng UNIX. Nhưng m t khác. đ làm vi c trong ch đ text (giao di n dòng l nh) và giao di n đ h a GUI (Graphical User Interface). vi t t t c a shell. Nh ng ngư i dùng Linux m i (newbie) thư ng nghĩ s ch ng bao gi làm vi c ch đ này. Theo ý ki n c a m t s chuyên gia ngôn ng cũng như chuyên gia Linux thì nên g i chương trình này m t cách đúng hơn là “trình x lý l nh” hay “trình biên d ch l nh”. Nói ngoài l m t chút. Đi u này không hoàn toàn đúng. vì đã có giao di n đ h a. tên g i “h v ” b ph n đ i r t nhi u. Vì Linux là HĐH đa ti n trình. Tuy nhiên.Chương 3 Bash T t g hơn t t nư c sơn – ca dao t c ng Vi t Nam Trong ph n này chúng ta s đ c p đ n v n đ làm vi c v i Linux ch đ text. 3. Có hai d ng c a chương trình đã đ c p . Đưa các tham s cho chương trình trên dòng l nh tương đương v i vi c chúng ta kéo và th cái gì đó lên bi u tư ng chương trình trong môi trư ng đ h a. Và dù sao thì ch đ text c a HĐH Linux không ph i là ch đ text m t ti n trình c a MS-DOS. hay shell. hay còn đư c g i là console ho c terminal. Trên các h th ng UNIX đ u tiên có m t chương trình. Sau đó. Và đ so n th o m t t p tin văn b n không nh t thi t ph i ch y các trình so n th o l n và ch m ch p (đ c bi t trên các máy có c u hình ph n c ng th p) c a môi trư ng đ h a. b t kỳ chương trình nào trong Linux có th kh i đ ng t dòng l nh c a h v (n u máy ch X đã ch y). cũng như qua giao di n đ h a. m t s chương trình không th ch y GUI và ch có th th c hi n t dòng l nh. vì trên th c t “liên h ” v i ngư i dùng đư c th c hi n b i m t chương trình đ c bi t. Ch y chương trình t dòng l nh c a h v tương đương v i vi c nháy (đúp) chu t lên bi u tư ng c a chương trình trong GUI. b i vì r t nhi u công vi c có th th c hi n nhanh và thu n ti n trong ch đ này hơn là s d ng giao di n đ h a.

2 Các ký t đ c bi t 49 t t hơn. vì th dư i khi nói đ n h v . xin ng m hi u đó là bash T m t mình bash không th c hi n m t công vi c ng d ng nào. đó là nó bao g m m t ngôn ng l p trình đơn gi n. tên g i c a nó đư c gi i mã ra là Bourne-again shell. và như th bash còn có th gi i mã là “shell đư c sinh ra l n hai”. K t qu thu đư c là m t ngôn ng l p trình m nh. b t kỳ m t thu t toán nào cũng có th đư c xây d ng t hai (ba) thao tác cơ b n và m t toán t đi u ki n.gnu. g ch ngang và d u ch m) thư ng đư c s d ng trong tên t p tin. <Tab> và các phím có mũi tên. Ti p theo chúng ta s ch xem xét bash. H v cung c p các toán t đi u ki n và toán t vòng l p. Nhưng trong đa s các trư ng h p không khuyên dùng các ký t v i giá tr th hai. (d u g ch dư i. b n đ c nên bi t các t h p phím chính. Vi c đưa ngay t t c ý nghĩa đ c bi t c a nh ng ký t này và các tình hu ng s d ng chúng t m th i không có ích. Đ ng th i cho phép đưa các tham s cũng như k t qu làm vi c c a m t chương trình t i các chương trình khác hay t i ngư i dùng. ho c đ bi u th các thao tác nào đó.[ ] { } : .) và g ch chéo (/) có giá tr đ c bi t. vì t Bourne đ c gi ng v i t borne (sinh ra. trong đó có Bourne shell . t vi c tìm ki m chương trình đư c g i.phiên b n m r ng c a sh. Nhưng nó h tr vi c th c thi m i chương trình khác. Tuy nhiên các ký t _. khi c n s d ng đ n. Trư c khi b t đ u ph n này. Trong tên t p tin ch d u ch m (.2 Các ký t đ c bi t H v bash s d ng m t vài ký t t b 256 ký t ASCII cho các m c đính riêng. 3 ký hi u . Ký hi u g ch chéo dùng đ phân chia tên các thư m c trong đư ng d n. Các ký t này bao g m: ‘ ~ ! @ # $ % ^ & * ( ) _ -. Trong toán h c t lâu đã đư c ch ng minh r ng.và . h v ch u trách nhi m v công vi c v i các bi n môi trư ng và th c hi n m t vài bi n đ i (th . Trư c h t đó là vi c s d ng chúng trong tên t p tin và thư m c. ch y chúng đ n vi c t ch c d li u đ u vào/đ u ra. . Ph thu c vào tình hu ng các ký t đ c bi t này có th s d ng v i ý nghĩa đ c bi t c a nó hay s d ng như m t ký t thông thư ng. <Ctrl>+<D>. Chúng ta s xem xét chúng d n d n trong các ph n sau.3. Tuy nhiên. Nhưng tính ch t chính c a h v . và đây là m t ví d cho th y không ph i lúc nào chúng cũng có giá tr đ c bi t. Ngoài ra. vi t b i Steve Bourne. ho c đ bi n đ i bi u th c. 3. D án GNU (d án phát tri n chương trình ng d ng c a Stollman. còn d u ch m có giá tr đ c bi t khi nó là ký t đ u tiên trong tên t p tin (cho bi t t p tin là “ n”). nh đó đưa h v tr thành m t công c m nh c a ngư i dùng. hoán đ i v trí) các tham s l nh. đ ra). ’ ‘‘ / \ > < và ký t v i mã 0.org/) sau đó cho ra đ i h v bash. Trên ti ng Anh đây là m t cách chơi ch . s d ng đ đi u khi n vi c nh p d li u trên dòng l nh. ký t hàng m i (t o ra khi nh n phím <Enter>) và ký t kho ng tr ng. t c là “l i là h v c a Bourne”. Đây cũng là s c m nh và là m t trong các ch c năng chính c a h v . Nên nh ít nh t cách s d ng c a các (t h p) phím <Ctrl>+<C>. xem http://www. hay đư c cài đ t riêng) đ làm các thao tác cơ b n cho ngôn ng l p trình mà nó h tr . Nó s d ng các ti n ích và chương trình khác (có trong thành ph n h đi u hành.

câu l nh sau: teppi82@teppi:~$ cp lennon_imagine lennon\ imagine Các ký t ’ và " (ngo c đơn và ngo c kép) có th g i là “các ký t trích d n”.3.. n u mu n đ t t p tin cái tên “lennon imagine” c n đưa tên đó vào d u ngo c: teppi82@teppi:~$ cp lennon_imagine ’lennon imagine’ S khác nhau trong cách s d ng ký t ’ và " đó là. n u nh p vào dòng l nh cái gì đó gi ng như sau: teppi82@teppi:~$ command1 . thì câu l nh ti p theo s đư c coi như tham s c a l nh phía trư c. nhưng còn có th đưa vào dòng l nh đó ngay l p t c vài câu l nh.1 Thao tác . và chúng s th c hi n l n lư t t câu l nh này đ n câu l nh khác. . sau đó ch y command2. H v . thông thư ng. thì t t c các ký t n m trong ngo c đơn này có giá tr như các ký t thông thư ng. m t trong các ch c năng chính c a h v là t ch c vi c th c hi n các câu l nh mà ngư i dùng đưa vào trên dòng l nh. n u mu n s d ng kho ng tr ng trong tên t p tin. M c dù ngư i dùng thư ng ch nh p trên dòng l nh t ng câu l nh m t. trong ngo c đơn m t ý nghĩa đ c bi t t t c các ký t . . Ví d . command2 thì h v đ u tiên s th c hi n câu l nh command1. Tr l i v i ví d s d ng kho ng tr ng trong tên t p tin trên. sách báo. ch cho l nh đó hoàn thành. khôn m t ký t nào có ý nghĩa đ c bi t. cung c p cho ngư i dùng hai thao tác đ c bi t đ t ch c vi c đưa các câu l nh trên dòng l nh: . Như v y. ’ và \ (d u đô la. 3. Đ làm đư c đi u này c n s d ng ký t đ c bi t .50 Bash có ý nghĩa l n và c n đ c p đ n đ u tiên. . N u dùng ký t này đ phân chia các câu l nh. nói riêng.3 Th c thi các câu l nh Như đã nói trên. còn trong ngo c kép – t t c chúng ngo i tr $. ngo c đơn và d u g ch ngư c).. . gi ng như trong các văn b n. Ký hi u \ (g ch chéo ngư c) có th g i là “ký hi u xóa b ý nghĩa đ c bi t” cho b t kỳ ký t đ c bi t nào. N u như m t đo n văn b n nào đó đ t trong ngo c đơn. M i ký t này luôn luôn đư c s d ng trong m t c p v i b n sao c a chính nó đ đóng khung m t bi u th c nào đó. đ ng ngay sau \. có th nói. ch l nh hoàn thành. 3. và &. thì chúng ta c n đ t ˙ trư c ký t kho ng tr ng đó m t d u Ví d . sau đó l i đưa ra dòng nh p l nh và ch các hành đ ng ti p theo c a ngư i dùng.

còn bây gi chúng ta s xem xét cách h v t ch c vi c đưa d li u vào cho câu l nh đang th c hi n và vi c đưa k t qu t i cho ngư i dùng.3. thì h v s tr l i quy n đi u khi n cho ngư i dùng ngay sau khi ch y câu l nh.3 Thao tác && và || Các thao tác && và || lá nh ng thao tác đi u khi n.3. nó đư c cung c p ba dòng d li u (hay còn g i là kênh): ˆ đ u vào tiêu chu n (standard input hay stdin). Qua kênh này chương trình đưa ra k t qu làm vi c c a mình. và sau khi th c hi n xong thì theo m t cách nào đó tr l i k t qu th c hi n l nh này cho ngư i dùng hay ti n trình khác. Qua kênh này d li u đư c đưa vào cho chương trình. thì command2 s th c hi n và ch th c hi n khi tr ng thái thoát c a l nh command1 khác không. N u trên dòng l nh là command1 && command2. nó m i quy t đ nh r ng ngư i dùng đã nh m khi nh p tên l nh. mà đư c li t kê trong đư ng d n tìm ki m.tìm ki m câu l nh. mà không đ i cho câu l nh đó hoàn thành. thì h v ch y câu l nh command1.4. ph i ch cho h v đư ng d n đ y đ t i t p tin tương ng.4 3.2 Thao tác & Thao tác & đư c dùng đ t ch c vi c th c hi n các câu l nh trong ch đ n n sau. V cách thêm thư m c vào đư ng d n tìm ki m chúng ta s nói đ n dư i. N u đ t d u & ngay sau câu l nh. t c là l nh đó th c hi n thành công. 3. Tuy nhiên đ g “gánh n ng” cho ngư i dùng h v bi t cách tìm l nh ngo i trú trong các thư m c. Ch có th nói ng n g n r ng. còn đ tìm các l nh ngo i trú ngư i dùng. ngay l p t c ch y l nh command2.3. h v ph i tìm mã (code) chương trình. ˆ đ u ra tiêu chu n (standard output hay stdout). Ch khi (h v ) không th tìm th y t p tin c n thi t trong các thư m c đó.4 Đ u vào/đ u ra tiêu chu n 51 3. . M t cách tương t . H v luôn luôn tìm th y l nh n i trú. thì command2 s th c hi n và ch th c hi n trong trư ng h p tr ng thái thoát ra c a l nh command1 b ng không (0). n p mã đó vào b nh . theo nguyên t c. n u nh p vào dòng l nh “command1 & command2 &”.1 Đ u vào/đ u ra tiêu chu n Dòng d li u vào-ra Khi m t chương trình đư c th c hi n. 3. Ví d . Các câu l nh chia thành hai lo i: n i trú (mã c a chúng có trong mã c a chính h v ) và ngo i trú (mã c a chúng n m trong m t t p tin riêng l trên đĩa). Bư c đ u tiên . chuy n các tham s đã nh p trên dòng l nh vào cho câu l nh. và sau đó không ch m tr tr l i dòng nh p l nh cho ngư i dùng. Chúng ta s xem xét qua các bư c này. n u dòng l nh có d ng command1 || command2. Chúng ta s không xem xét m t k thu t c a vi c th c hi n m t câu l nh nào đó.

hãy ch y l nh cat không có tham s . mà dùng đ ng ng vi c nh p d li u. 3. Thông thư ng bàn phím đư c c u hình đ nh p vào theo t ng dòng. Theo m c đ nh k t qu làm vi c c a l nh cat hư ng t i đ u ra tiêu chu n. Như v y. và t t c nh ng thông báo l i. Hãy nh p b t kỳ ký t nào.4. Theo m c đ nh đ u vào có liên k t1 v i bàn phím. mà đư c đưa vào làm tham s cho nó. còn hai đ u ra và kênh thông báo l i đư c chương trình s d ng ch đ ghi. Làm vi c v i đ u vào và đ u ra tiêu chu n đư c minh h a t t nh t qua ví d các l nh echo và cat. Tuy nhiên. b i vì chúng ta cũng th y thông báo l i đó trên c a s terminal. Có th ti p t c nh p các ký t . vào t p tin). và nó s xu t hi n ngay l p t c trên màn hình. N u b n đ c chú ý thì có th gi i thích t i sao l i khác). Đ ch ng minh là l nh này theo m c đ nh ti p nh n dòng d li u nh p vào. đ i v i ngư i dùng thì trong trư ng h p này kênh thông báo l i tiêu chu n không khác gì v i đ u ra tiêu chu n.52 Bash ˆ kênh thông báo l i tiêu chu n (standard error hay stderr). chúng ta s th y dư i. và l nh này s l i đưa d li u ra màn hình thông qua đ u ra tiêu chu n. Tuy nhiên. hãy th c hi n câu l nh ls v i m t tham s không đúng.3 L nh cat Chúng ta s xem xét l nh cat đây vì l nh này thư ng làm vi c v i đ u vào và đ u ra tiêu chu n.2 L nh echo Câu l nh echo dùng đ chuy n t i đ u ra tiêu chu n dòng ký t . n u không k t qu có th s khác. và hơn n a có v như không có gì x y ra. có th chuy n hư ng thông báo đ u ra (ví d . ls đưa m t tin nh n báo l i ra kênh thông báo l i tiêu chu n. Hãy th th c hi n câu l nh sau: [user]$ echo ’xin chao cac ban!’ Tôi nghĩ r ng l i gi i thích s là th a thãi (ch xin hãy s d ng d u ngo c đơn. mà là câu l nh trong h v đ d ng chương trình 1 gi ng liên k t hóa h c . chúng ta s qua l i dòng nh p l nh. N u nh n t h p phím <Ctrl>+<D>. toàn b thông tin c a l nh hay chương trình mà ngư i dùng đã ch y. Trong trư ng h p này. T đ u vào tiêu chu n chương trình ch có th đ c. t c là chương trình ngay l p t c đưa chúng t i đ u ra tiêu chu n. vì th n u b n nh n phím <Enter>. Cũng có th s d ng t h p phím <Ctrl>+<C>. Lúc này câu l nh ch các ký t đ n t đ u vào tiêu chu n. m i dòng ký t nh p vào s đư c hi n ra hay l n: m t l n khi gõ và l n th hai b i câu l nh cat. Nói cách khác.4. còn đ u ra và kênh báo l i hư ng đ n terminal c a ngư i dùng. Sau đó l nh này đưa ra tín hi u chuy n dòng và hoàn t t công vi c. K t qu là con tr chuy n t i m t dòng m i. và chúng cũng s xu t hi n trên màn hình. đư c đưa ra c a s terminal. ví d dùng tham s là m t tên t p tin không t n t i. Đ cho th y kênh thông báo l i tiêu chu n làm vi c như th nào. 3. dòng ký t b n v a nh p s đư c đưa t i l nh cat. Qua kênh này chương trình đưa ra thông tin v l i.

B n có th chuy n hư ng không ch vào t p tin.5 Chuy n hư ng đ u vào/đ u ra. máy in). đư ng ng và b l c M c dù. đư ng ng và b l c 53 đang ch y. Dư i đây là m t ví d tương ng: maikhai@fpt:/some/where$ ls -l > /home/maikhai/ls.txt Theo l nh này danh sách t p tin và thư m c con c a thư m c.txt như sau (chú ý. < và » Đ chuy n hư ng đ u vào/ra. Khi này kho ng tr ng trư c và sau các ký hi u > hay >> không có ý nghĩa và ch dùng v i m c đích thu n ti n. n u t p tin đã có. d nhìn. 3.txt > /dev/tty2 Như b n th y.txt không t n t i. Ch c năng tương t đ i v i đ u vào đư c th c hi n b i <. khi này n u t p tin ls. > dùng đ chuy n hư ng d li u c a đ u ra. thì n i dung c a nó s b xóa và ghi đè b i danh sách nói trên. trên th c t thư ng s d ng câu l nh đơn gi n hơn): maikhai@fpt:/sw$ wc -w < /home/maikhai/ls. trong h v còn có các môi trư ng đ c bi t cho phép chuy n hư ng đ u vào/đ u ra. N u đưa tên m t t p tin vào làm tham s cho l nh cat.5 Chuy n hư ng đ u vào/đ u ra. thì nó s đư c t o ra. có th đ m s t trong t p tin ls. thì n i dung c a l nh này s đư c đưa t i đ u vào tiêu chu n.txt. “<” và “»”. như đã nói trên. Ví d . thông thư ng đ u vào/đ u ra c a m t chương trình liên k t v i các đ u vào/đ u ra tiêu chu n. mà t đó ngư i dùng th c hi n l nh ls2 s đư c ghi vào t p tin /home/maikhai/ls. đ đưa n i dung t p tin /home/maikhai/ls. Và t t nhiên chúng ta c n xem xét k hơn cơ ch này. m t cơ ch r t có ích c a h v .txt v a t o trên t i c a s terminal th hai3 có th s d ng l nh sau: maikhai@fpt:/sw$ cat /home/maikhai/ls.3.txt 2 3 thư m c hi n th i b n c n dùng t h p phím <Ctrl>+<Alt>+<F2> đ chuy n t i c a s terminal này và đăng nh p trư c . 3.1 S d ng >. N u b n không mu n xóa n i dung cũ mà ghi thêm d li u đ u ra vào cu i t p tin. Thư ng s d ng vi c chuy n hư ng đ li u ra c a câu l nh vào t p tin. đây ch là m t ví d minh h a. t đó l nh cat s đ c n i dung này và đưa t i đ u ra tiêu chu n (xem sơ đ ). thì c n s d ng ký hi u >> thay cho >. s d ng các ký hi u “>”.5. Ví d . N i dung t p tin --> Đ u vào tiêu chu n (stdin) --cat--> đ u ra tiêu chu n (stdout) Đây ch là m t trư ng h p riêng c a vi c chuy n hư ng d li u đ u vào. mà còn t i đ u vào c a m t câu l nh khác hay t i m t thi t b nào đó (ví d .

cho các câu l nh mà thư ng ti p nh n (hay ch ) d li u vào t bàn phím. kho ng tr ng c nh > là không nh t thi t): command N > M Trong đó. c n dùng l nh 2>&1. Ví d . khi không có s nào ch ra. vì khi đó chúng ta v a có th nhìn th y thông báo trên màn hình. Như th . T c là l nh chuy n hư ng có d ng đ y đ như sau (xin đư c nh c l i. các câu l nh sau là tương đương: [user]$ [user]$ [user]$ [user]$ cat > file cat>file >file cat > file cat Tuy nhiên. 1. Trong script dùng đ t đ ng hóa m t thao tác nào đó. t c là đ u vào tiêu chu n. t c là đ u ra tiêu chu n. > và >> mà không ch ra s kênh hay tên t p tin. Trong m t vài trư ng h p có s d ng các ký hi u <. c n đ t trư c ký hi u chuy n hư ng s c a kênh mu n chuy n. còn < s đư c biên d ch là 0 <. 1 n u dùng >. B i vì các ký hi u <. kênh thông báo l i stderr . mà còn sao chép n i dung c a các kênh tiêu chu n đó. chúng không ch đư c dùng theo các cách quen thu c. ví d . N và M . có th chuy n hư ng không ch đ u vào và đ u ra tiêu chu n. còn 1>&2 sao chép stdout vào stderr. và 2) ho c tên t p tin.s c a kênh tiêu chu n (0. Khi này. có th đưa các thông tin c n thi t cho câu l nh t t p tin: trong t p tin này ghi s n nh ng gì c n đ th c hi n l nh đó. còn có kh năng không nh ng chuy n hư ng d li u vào kênh này hay kênh khác. “l m t” hơn. đ u ra c a kênh v i s N đư c g i đ n c đ u ra tiêu chu n. b i vì các kênh tiêu chu n có cho m i câu l nh. Ngoài vi c chuy n hư ng các kênh tiêu chu n đơn gi n như v y. mà còn các kênh khác. v a ghi chúng vào t p tin. Đ u vào tiêu chu n stdin có s 0.s 2. nh p vào dòng l nh sau: [user]$ file1 > file2 mà thu đư c b n sao c a m t t p tin nào đó. vì vào ch còn thi u s đ t. đ u ra tiêu chu n stdout . như th không th .54 Bash Cách chuy n hư ng này thư ng đư c s d ng trong các script. Đ làm đư c đi u này.s 1. Nhưng đi u này không làm gi m giá tr c a cơ ch này. khi đ t nó (&) trư c s c a kênh s chuy n d li u đ n: command N > &M L nh này có nghĩa là. ho c 0 n u dùng <. mà còn có th theo cách khác. theo m c đ nh. > và >> làm vi c v i các kênh tiêu chu n (đ u vào ho c đ u ra). t c là không có kênh tiêu chu n nào cho l nh) các ký t chuy n hư ng này không th đư c s d ng. trư ng h p sau thư ng đư c ng d ng trong các script ch y khi kh i đ ng Linux: teppi82@teppi:~$ cat hiho > /dev/null cat: hiho: No such file or directory teppi82@teppi:~$ cat hiho > /dev/null 2>&1 . Ký hi u & dùng đ th c hi n đi u này. và sao chép t i kênh có s M. Kh năng này đ c bi t có ích khi mu n ghi đ u ra vào t p tin. đ sao chép thông báo l i vào đ u ra tiêu chu n. t chúng (không có m t l nh nào. Ví d . > s đư c biên d ch là 1 >. thư ng dùng. Ví d .

b n có th sư d ng trên m t dòng c ký hi u dây chuy n |. less.5 Chuy n hư ng đ u vào/đ u ra. mà đ u ra c a l nh trư c dùng làm đ u vào cho l nh sau. D th y r ng theo ch c năng c a mình l nh tee tương t như nhóm ký t chuy n hư ng 1>&file. th c hi n m t vài bi n đ i trên d li u này và đưa ra k t qu đ u ra tiêu chu n (t đây còn có th chuy n đ n nơi nào đó theo ý mu n c a ngư i dùng). nhân đôi d li u đ u vào. T c là n u tr ng thái thoát ra c a l nh cu i cùng b ng 0 thì tr ng thái thoát ra c a đư ng ng s b ng 1 và ngư c l i. Kh năng c a b l c có th m r ng v i vi c s d ng . trư c câu l nh đ u tiên c a đư ng ng có th đ t ký hi u “!”. l nh này s phân chia n i dung nói trên và ch l y ra nh ng dòng nào có ch a t knoppix. Ví d : maikhai@fpt:/sw$ cat ls. t c là n i dung t p tin ls. H v ch cho t t c các câu l nh k t thúc r i m i xác đ nh và đưa ra giá tr này. Đư ng ng s d ng đ k t h p vài chương trình nh l i v i nhau (m i chương trình th c hi n m t bi n đ i xác đ nh nào đó trên đ u vào) t o thành m t l nh t ng quát. Tr ng thái thoát ra (giá tr lôgíc. mà k t qu c a nó s là m t bi n đ i ph c t p. ch y m i l nh đó trong m t b n sao h v riêng. m t m t g i d li u này đ n đ u ra tiêu chu n. diff. liên k t v i nhau (có th nói phân cách nhau.5. Vì th ngay khi chương trình th nh t b t đ u đưa k t qu đ u ra. Các câu l nh . Đ n lư t mình. n u mu n) b i ký hi u g ch th ng đ ng “|”.2 S d ng | M t trư ng h p đ c bi t c a chuy n hư ng đ u ra là s t ch c các đư ng ng (ha y còn có th g i là kênh gi a các chương trình. wc. d ng bên ph i so v i |. h v s d ng l i và ch cho đ n khi th c hi n xong t t c các câu l nh trư c c a đư ng ng. cũng như d u ch p ph y . mà đư c tr l i sau khi th c hi n xong chương trình) c a m t đư ng ng s trùng v i tr ng thái thoát ra c a câu l nh sau cùng trong đư ng ng. 3..3 B l c Ví d cu i cùng trên (ví d v i câu l nh grep) có th dùng đ minh h a cho m t khái ni m qua tr ng khác. b l c chương trình. cmp. h v g i và th c hi n t t c các câu l nh có trong đư ng ng cùng m t lúc. chương trình ti p theo b t đ u x lý k t qu này. Khi này đ u ra tiêu chu n c a l nh đ ng bên trái so v i | dư c chuy n đ n đ u vào tiêu chu n c a chương trình. và c nh ng câu l nh có trong b ng 3. Hai hay vài câu l nh.b l c bao g m các l nh đã nói đ n trên cat. mà ti p nh n d li u vào. m t khác ghi nó (d li u) vào t p tin (ngư i dùng c n đ t tên). mà tính s nh ng dòng thu đư c. ho c băng chuy n). các l nh ti p theo th c hi n các công vi c c a mình: ch d li u t l nh trư c và đưa k t qu cho l nh ti p theo. đó là. s đư c chuy n đ n đ u vào c a l nh grep.3.1. câu l nh tee. more.txt. B l c – đó là l nh (hay chương trình). trư c khi th c hi n l nh ti p theo.5. N u như mu n m t l nh nào đó k t thúc hoàn toàn. M t b l c đ c bi t. khi đó tr ng thái thoát ra c a đư ng ng s là ph đ nh lôgíc c a tr ng thát thoát ra c a l nh cu i cùng trong đư ng ng. C n chú ý r ng. k t q a c a l nh grep đư c chuy n t i đ u vào c a l nh wc -l. đư ng ng và b l c 55 3.txt | grep knoppix | wc -l Dòng này có nghĩa là k t qu c a l nh cat. Cũng y như v y. gi ng như m t dây chuy n s n xu t. Trư c m i d u ch m ph y.

tham bi n đư c xác đ nh hay đư c đ t ra.nh ng dòng ch g p t p tin th nh t.1: Các câu l nh b l c L nh Mô t ng n g n grep. chúng ta có th nói r t nhi u v chuy n hư ng và b l c. N u mu n. còn l nh maikhai@fpt:/sm$ echo $parameter hi n th giá tr c a tham bi n parameter (t t nhiên n u như tham bi n đó dư c xác đ nh). Vì v y.56 Bash B ng 3. ch s . egrep Tìm trong t p tin hay d li u đ u vào các dòng có ch a m u văn b n đư c ch ra và đưa các dòng này t i đ u ra tiêu chu n tr Trong d li u đ u vào thay th các ký t ô th nh t b i các ký t tương ng ô th hai. hai . Chúng ta nói r ng. đư c g i là “môi trư ng và các bi n môi trư ng” t o b i h v . chúng ta s d ng đây và chuy n sang m t ph n khác.1 Các d ng tham bi n khác nhau Tham bi n chia thành ba d ng: tham bi n v trí. 0. ngư i ta s d ng ký t $ trư c tên c a nó. Đ nhìn th y giá tr c a tham bi n.nh ng dòng ch g p t p tin th hai. s d ng đ th c hi n m t vài bi n đ i trên d li u đ u vào (l y t t p tin hay đ u vào tiêu chu n) các bi u th c chính quy (đi u khi n). sed Trình so n th o t p tin theo dòng. ví d . Tên g i (hay ID) c a tham bi n có th là m t t bao g m các ký t b ng ch cái. _ (g ch dư i). Giá tr có th là m t dòng tr ng r ng. Tên (ID) c a tham bi n v trí g m m t hay vài ch s (nhưng không có . và ba .(g ch ngang). Hãy th gõ l nh tr abc ABC r i gõ vài dòng ch a các ký t abc! comm So sánh hai t p tin theo t ng dòng m t và đưa vào đ u ra tiêu chu n 3 c t : m t . d u g ch dư i (ch ký t đ u tiên c a t này không đư c là ch s ). . cho phép. n u ngư i dùng g n cho nó m t giá tr . t ch c tìm ki m theo các m u tìm ki m t đơn gi n đ n ph c t p và r t ph c t p.nh ng dòng có trong c hai t p tin.6 Tham bi n và các bi n s . tham bi n đ c bi t (các ký t đ c bi t đã nói trên chính là tên c a nh ng tham bi n này) và các bi n s c a h v . $.6. . fgrep. 3. . 3. Nhưng n i dung này có trong ph n l n các cu n sách v UNIX và Linux (xem ph n l i k t). l nh: maikhai@fpt:/sm$ echo parameter hi n th t parameter. và c nh ng ký t sau: . Như v y. pr Đ nh d ng t p tin hay n i dung c a đ u tiêu chu n đ in n. . Môi trư ng c a h v Khái ni m tham bi n trong h v bash tương ng v i khái ni m bi n s trong các ngôn ng l p trình thông thư ng. #.

ký t đ u tiên trong giá tr c a bi n s IFS.3. phân cách nhau b i ký t đ u tiên c a bi n s IFS (s nói đ n sau).(g ch ngang) Thay th b i giá tr các c . N u giá tr c a IFS tr ng. b t đ u t tham bi n th nh t. đư c li t kê b ng trên. 0 Thay th b i tên h v hay tên c a script đang ch y. không th gán các giá tr cho các tham bi n này. trong đó c . Môi trư ng c a h v 57 tham bi n v trí 0). thì tham bi n phân cách nhau b i các kho ng tr ng. đư c đưa ra khi ch y h v (tham s đ u tiên là giá tr c a tham bi n 1. “$@” tương đương v i “$1” “$2” . N u s thay th th c hi n trong d u ngo c kép. có m t đi m khác bi t đó là ch có th “nh c” đ n chúng. . . .process identificator) Thay th b i s c a ti n trình (PID) cu i cùng trong s các câu l nh th c hi n trong n n sau. @ Thay th b i tham bi n v trí. Tên c a bi n môi trư ng ch có th bao g m các ch s . . phép hoán đ i) chúng đư c th c hi n như trong b ng 3. thì giá tr s không đư c thi t l p (tham bi n s b x # Thay th b i giá tr th p phân c a các tham bi n v trí. đư c đ t b i l nh n i trú set hay trong khi ch y h v .v. flag. Giá tr c a bi n môi trư ng đư c gán nh thao tác có d ng sau: [user]$ name=value Trong đó. ch cái và không đư c b t đ u b i m t ch s . mà t o ra t t t c các tham bi n v trí. .2: Thay th các tham bi n đ c bi t Tham bi n Quy lu t thay th * Thay th b i các tham bi n v trí. mà đư c th c hi n trong ch đ n n trư c. mà s thay th (phép th . ? Thay th b i tr ng thái thoát ra c a câu l nh cu i cùng trong đư ng ng. thì $0 có giá tr b ng tên c a t p tin này. ”. ). còn value . Giá tr c a các tham bi n này cũng thay đ i trong khi h v th c hi n m t trong các hàm s (chúng ta s xem xét v n đ này dư i). Các tham bi n đ c bi t không gì khác hơn là các m u. đó là các tham bi n đư c đ t tên. Trong trư ng h p ngư c l i giá tr này b ng đư ng d n đ u đ đ n h v (ví d . Bi n môi trư ng.giá tr mu n gán cho bi n (có th là m t dòng tr ng). nhìn t phía h v . . . Có th dùng câu l nh set đ thay đ i giá tr c a tham bi n v trí.tên c a bi n.6 Tham bi n và các bi n s . N u bash ch y m t t p tin l nh nào đó.2: B ng 3. /bin/bash _ (g ch dư i) Thay th b i tham s cu i cùng c a câu l nh trư c trong s các câu l nh đã đư c th c hi n (n u đó l i là m t tham bi n hay bi n s . thì m i tham bi n s đư c thay th b i m t t riêng bi t. thì s s d ng giá tr c a n Các tham bi n đ c bi t. $ Thay th b i s c a ti n trình (PID . v. b t đ u t tham bi n th nh t. Giá tr c a tham bi n v trí là các tham s cho l nh. N u thay th th c hi n trong ngo c kép. N u không có tham bi n v trí. ho c không đư c xác đ nh giá tr . T c là “$” tương đương v i “$1c$2c. name . tham s th hai tham bi n 2. T c là. (Tin r ng sau khi đ c đo n vi t v . thì tham bi n này s đư c thay b i m t t duy nh t.

xác đ nh b i bi n PS2.3 (ch đưa ra m t vài trong s chúng làm ví d . Giá tr t t nhiên s không ch a các d u ngo c này. xác đ nh b i bi n PS4. D u nh c. Bi n PS1 đưa ra d ng c a d u nh c khi h v ch nh p l nh. 3. M t ví d khác . Theo m c đ nh bi n PS2 có giá tr “>”. D u nh c.6. T p h p t t c các bi n này cùng v i các giá tr đã gán cho chúng g i là môi trư ng (enviroment) c a h v . N u giá tr có ch a nh ng ký t đ c bi t. mà b n s th y trong k t qu c a l nh set. b n l i c n ph i bi t tên c a bi n mu n xem).gõ l nh “man bash”). tuy nhiên trên các b n phân ph i khác nhau thư ng có các script kh i đ ng (hay script đăng nh p) xác đ nh l i bi n này. b n có th thay đ i các bi n PS1 và PS2. D u nh c th hai.58 Bash tham bi n v trí thì các b n đã hi u t i sao m t bi n môi trư ng không th b t đ u b i m t ch s . đư c đưa ra trư c m i câu l nh. c n thay name b i tên bi n (như v y. trong trư ng h p này. Khi này có th s d ng b t kỳ ký t nào nh p t bàn phím. Nguyên nhân là vì bi n này tr l i m t giá tr ng u nhiên4 trong kho ng 0 . N u có mong mu n. có nh ng bi n r t thú v . Xin hãy chú ý đ n. đư c s d ng trong các trư ng h p khác nhau. thì c n đ t nó (giá tr ) vào d u ngo c. Theo m c đ nh thì bi n này đư c gán giá tr “\s-\v\$ ”. thay vì dùng l nh set (khi này c n tìm trong k t qu c a nó bi n mu n xem). R t có th b n đã nhìn th y d u nh c này. S c a l nh (s th t c a l nh đang th c hi n trong bu i làm vi c hi n th i) có th khác v i s c a chính nó trong danh sách “l ch s các câu l nh”. s d ng trong l nh select.l nh ftp. trong lúc bash theo dõi quá trình th c hi n. ví d . xu t hi n khi h v ch ngư i dùng nh p thêm m t vài d li u c n thi t nào đó đ có th ti p t c ch y câu l nh (chương trình) đã g i. sau khi ch y l nh này d u nh c s có d ng như đã nói. Có th xem nó (môi trư ng) nh l nh set khi không có tham s (có th c n dùng đư ng ng ’set | less“. Trong s các bi n. khi ch y l nh cat đ đưa d li u vào t bàn phím vào t p tin. N u th ch y vài l n liên ti p câu l nh sau: maikhai@fpt:/sw$ echo $RANDOM thì m i l n b n s nh n đư c m t giá tr m i.32 768. mà bash đưa ra trong khi ch ngư i dùng nh p câu l nh ti p theo.2 D u nh c c a h v M t trong các bi n r t quan tr ng có tên PS1.“+”. có th s d ng l nh echo: [user]$ echo $name Trong đó. xác đ nh b i bi n PS3. Đ xem giá tr c a m t bi n môi trư ng c th . bi n RANDOM. N u m t bi n môi trưòng đư c xác đ nh. b i vì danh sách còn ch a c nh ng câu l nh đã đư c ghi l i trong t p tin l ch s . cũng như m t vài ký t chuyên dùng đ xác đ nh d ng d u nh c như trong b ng 3. Sau 4 random là t ti ng Anh có nghĩa ng u nhiên . Bi n này cho bi t d ng c a d u nh c. có nhi u bi n). thì cũng có th b xóa b b ng l nh n i trú unset.) Giá tr có th là b t kỳ m t dòng văn b n nào. danh sách đ y đ xem trong trang man c a bash . Giá tr theo m c đ nh . Nói chung thì trong bash có t t c b n d u nh c. n u môi trư ng l n.

tên máy. Dec. ví d teppi. và ký hi u $ (n u trên h v đang làm vi c ngư i dùng bình thư ng) hay #(n u h v ch y dư i ngư i dùng root). K t thúc chu i các ký t không đư c in ra. ngày”. Ký t có mã h tám nnn Dòng m i (chuy n dòng) Tên h v S hi n th i c a câu l nh D u g ch ngư c (backslash) Sau ký t này t t c các ký t s không đư c in ra. đư ng d n đ y đ đ n t p tin không đư c đưa ra. Theo m c đ nh bi n PATH ch a các thư m c /usr/local/bin.phanthinh. Môi trư ng c a h v 59 C m ký t \a \d \h \H \t \T \@ \u \w \W \$ \nnn \n \s \# \\ \[ \] \! B ng 3. s x y ra s thay th theo các quy lu t m r ng trong b ng trên. Các thư m c trong danh sách này phân cách nhau b i d u hai ch m (:).3 Bi n môi trư ng PATH Còn m t bi n cũng quan tr ng n a có tên PATH. tên c a thư m c hi n th i (không có đư ng d n). t c là có d ng: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin: Đ thêm thư m c vào danh sách này. Chúng ta s nói đ n nh ng s thay th này dư i. ví d /home/teppi82/project/l4u Thư m c hi n th i (không có đư ng d n) Ký t #. ký hi u . trong các bi u th c s h c. 3. Tên máy (hostname) đ n d u ch m đ u tiên. Sun.3. c n th c hi n câu l nh sau: . tên ngư i dùng. và ký t $. và s chia t (word splitting). /bin. ví d teppi Tên đ y đ c a thư m c làm vi c hi n th i (b t đ u t g c). d u đóng ngo c vuông. nên nh t thi t ph i có d u ngo c): [user/root]$ PS1="[\u@\h \W]\$" thì trong d u nh c s có d u m ngo c vuông.6. Bi n này đưa ra danh sách đư ng d n đ n các thư m c. mà bash s tìm ki m t p tin (trư ng h p riêng là các t p tin l nh) trong trư ng h p. ví d . 26.6 Tham bi n và các bi n s . khi giá tr c a bi n đư c h v đ c xong. kho ng tr ng. /usr/bin. sau khi th c hi n l nh (vì trong dòng văn b n có kho ng tr ng.3: Ký t xác đ nh d ng d u nh c Giá tr (k t qu thu đư c) Tín hi u âm thanh (mã ASCII 07) Th i gian d ng “Th . S th t c a l nh hi n th i trong l ch s các câu l nh đã dùng. tháng. /usr/X11R6/bin. đ ng th i còn x y ra s thay th trong tên các câu l nh. n u h v đư c ch y b i ngư i dùng thư ng.com Th i gian hi n th i d ng 24 gi : HH:MM:SS (gi :phút:giây) Th i gian hi n th i d ng 12 gi : HH:MM:SS Th i gian hi n th i d ng 12 gi am/pm (sáng/chi u) Tên ngư i dùng đã ch y h v .Ví d . Tên máy đ y đ . n u h v đư c ch y b i ngư i dùng root.

5 Thư m c hi n th i và thư m c cá nhân Tên c a thư m c hi n th i ghi trong bi n môi trư ng v i tên PWD.60 [user]$ PATH=$PATH:new_path Bash Khi tìm ki m.7 Khai tri n bi u th c Hay h v đ c các câu l nh như th nào? Khi h v nh n đư c m t dòng l nh này đó c n th c hi n. ch y ti n trình đã cho. Đ có th cung c p bi n môi trư ng cho ti n trình ch y t h v . qua Midnight Commander). ghi trong bi n HOME. t t c các chương trình ch y t h v (k c b n sao th hai c a chính h v ) s có quy n truy c p t i các bi n đư c gán như v y. đây là đi u không khuyên làm v i lý do b o m t: ngư i có ác ý có th đ t vào thư m c dùng chung m t chương trình nào đó. nhưng th c hi n nh ng ch c năng khác hoàn toàn (đ c bi t nguy hi m n u thư m c hi n th i đ ng đ u danh sách tìm ki m). 3. nó (h v ) cung c p cho chúng m t ph n bi n môi trư ng.6.6 Câu l nh export Khi h v ch y m t chương trình hay câu l nh nào đó. 3. phân tích ch ng . mà h v th c hi n trư c khi ch y m t câu l nh nào đó (xem dư i). M t chú ý nh . 3. Tương t như v y tên đ y đ (g m c đư ng d n) c a thư m c cá nhân c a ngư i dùng. Tuy nhiên.6. v ng ). Giá tr theo m c đ nh c a bi n này – “<Kho ng_tr ng><Tab><Ký_t _hàng_m i>”. M t trong nh ng bư c c a s phân tích này là phép m hay khai tri n bi u th c (expansion). t c là thay vì [user]$ name=value c n gõ: [user]$ export name=value Trong trư ng h p này.6. ví d . c n gán giá tr cho bi n này v i l nh export. có cùng tên v i m t trong s nh ng câu l nh thư ng dùng b i root. b n s nh n đư c m t ng c nhiên nh .). s d ng trong thao tác phân chia t ng khi bi n đ i dòng l nh.4 Bi n môi trư ng IFS Bi n này xác đ nh ký t (c m ký t ) phân cách (Internal Field Separator). có th đưa vào danh sách này thư m c hi n th i. khi thêm vào bi n PATH m t d u ch m (. N u th gõ l nh “echo $IFS”. nó (h v ) trư c khi ch y câu l nh th c hi n vi c “phân tích ng pháp” dòng l nh này (gi ng trong ngôn ng . h v “l c l i” các thư m c theo đúng th t đã li t kê trong bi n PATH. Trong bash có b y lo i khai tri n bi u th c: . và giá tr c a bi n này thay đ i sau m i l n ch y chương trình cd (cũng như m i l n thay đ i thư m c hi n th i theo b t kỳ cách nào. t c là s d ng giá tr c a chúng qua tên. 3.

1 Khai tri n d u ngo c Khai tri n d u ngo c t t nh t minh h a trên ví d .lib/{ex?. ˆ Phép chia t (word splitting). và ghi thêm vào sau m i t này nh ng gì đ ng sau d u ngo c.?*.dist. 3. Trong trư ng h p th hai.b}e khi khai tri n s thu đư c ba t “ade ace abe”. ˆ Phép th s h c (th c hi n t trái sang ph i). ngư i dùng s h u c a các t p tin sau s thay đ i (thành root): ˆ /usr/ucb/ex ˆ /usr/lib/ex?.? ˆ /usr/ucb/edit ˆ /usr/lib/ex?. k c nh ng ký t n m trong d u ngo c. ˆ Phép th các tham bi n và bi n s . hơn n a t t c các ký t đ c bi t có trong dòng l nh.edit}. Có th th c hi n đi u này nh các câu l nh sau: [user]$ mkdir /usr/src/unikey/{old. 61 Các thao tác này đư c th c hi n theo đúng th t li t kê trên.dist.bugs} [root]# chown root /usr/{ucb/{ex.7. và bugs.7 Khai tri n bi u th c ˆ Khai tri n d u ngo c (brace expansion). Khai tri n d u ngo c đư c th c hi n trư c các d ng khai tri n khác trong dòng l nh.how_ex} Trong trư ng h p đ u. s đư c gi không thay đ i (chúng s đư c biên d ch các bư c phía sau).new.3. . Gi thi t.? ˆ /usr/ucb/ex ˆ /usr/lib/how_ex ˆ /usr/ucb/edit ˆ /usr/lib/how_ex T c là v i m i c p d u ngo c s t o ra vài dòng riêng r (s nh ng dòng này b ng s t n ng trong d u ngo c) b ng cách ghi thêm vào trư c m i t trong ngo c nh ng gì đ ng trư c d u ngo c.c. ˆ Thay th d u ngã (tilde expansion). Chúng ta s xem xét chúng theo t t này. trong thư m c /usr/src/unikey/ s t o ra các thư m c con old. M t ví d khác: dòng a{d. ˆ Khai tri n các m u tên t p tin và thư m c (pathname expansion). chúng ta c n t o thư m c con trong m t thư m c nào đó. ho c thay đ i ngư i dùng s h u c a vài t p tin cùng m t lúc. ˆ Phép th các câu l nh.new.

c n đ t bi u th c d ng $parameter. hay m t \. mà chúng ta không mu n h v “hi u l m” chúng là m t ph n c a tên tham bi n. ‘. ho c khi theo sau tên còn có các ký t khác. t t c các ký t đ ng trư c d u g ch chéo đ u tiên (hay t t c các ký t n u như không có d u g ch chéo) s đư c hi u là tên ngư i dùng (login name). N u như t đ ng sau d u ngã không ph i là tên c a m t ngư i dùng (và không r ng). phím cho nó thư ng n m trên phím Tab). đ g i giá tr c a tham bi n nói chung cũng như bi n môi trư ng nói riêng trong dòng l nh. vì d u ngo c phân cách bi u th c v i các t hay ký t đ ng sau. N u như sau d u ngã là ’+’. Trong t t c các giá tr c a bi n s x y ra phép th d u ngã (∼). thì d u ngã s đư c thay th b i giá tr c a bi n HOME. Ý nghĩa c a nó n m ch thay th tên các câu l nh b i k t qu th c hi n c a chúng. D u ngo c ch c n thi t. N u như tên này là m t dòng r ng (t c là d u g ch chéo đ ng ngay phía sau d u ngã). mà đã ch y h v . không có ký t nào có ý nghĩa đ c bi t. không nh t thi t. N u như s d ng d ng $(command). Như v y. cũng như xóa các ký t trích d n (xem dư i). phép th các câu l nh. S phân chia t không x y ra. 3.2 Thay th d u ngã (Tilde Expansion) N u như t b t đ u v i ký t d u ngã (’∼’). tr trư ng h p “$” (l i gi i thích xem b ng s 3).7. Có hai d ng phép th l nh: $(command) và ‘command‘ N u ng d ng d ng th hai (chú ý đây s d ng d u “ngo c đơn ngư c”. N u d ng sau d u ngã là ’-’. N u như ngay sau d u ngã (và trư c d u g ch chéo) là m t t trùng v i tên c a m t ngư i dùng h p pháp.62 Bash 3.4 Phép th các câu l nh Phép th các câu l nh là m t công c r t m ng c a bash. thì d u g ch ngư c (\) trong d u ngo c s có ch c năng như m t ký t thông thư ng. thì t t c các ký t đ ng trong ngo c t o thành m t câu l nh. n u tên c a tham bi n có ch a vài ch s . thì trong k t qu c a phép th s không th c hi n phép phân chia t và s khai tri n m u tên t p tin và thư m c.3 Phép th các tham bi n và bi n s Ký t $ đư c s d ng cho các thao tác th tham bi n.7. nhưng r t ti n. thì t không b thay đ i. s khai tri n tham bi n và bi n s . thì thay th giá tr c a bi n OLDPWD (thư m c “cũ”). . Bi u th c hay tên đ ng sau $ có th đư c đưa vào ngo c. thì d u ngã c ng v i tên ngư i dùng đư c thay th b i đư ng d n đ y đ đ n thư m c cá nhân c a ngư i dùng này. khi đ ng sau nó (d u g ch ngư c) là m t $. 3. N u phép th câu l nh x y ra phía trong ngo c kép. tr trư ng h p.7. hay ký hi u này s đư c thay th b i tên đ u đ c a thư m c hi n th i (t c là giá tr c a bi n PWD). S khai tri n các m u tên t p tin và thư m c cũng không đư c th c hi n. phép th các bi u th c s h c. Và n u giá tr c a bi n HOME không đư c gán thì d u ngã s đư c thay th b i đư ng d n đ u đ đ n thư m c cá nhân c a ngư i dùng. th các câu l nh và th các bi u th c s h c.

N u như bi n này đư c xác đ nh. Hãy tư ng tư ng là b n mu n xem thông tin c a m t thư m c. câu l nh [user]$ echo $((2 + 3 * 5)) cho k t qu b ng “17”. bash s đưa ra thông báo l i. mà đư ng d n tương ng v i m u không tìm th y. c th hơn v v n đ này có th đ c trong ph n ARITHMETIC EVALUATION c a trang man c a bash. và c n thay th b i các t trong danh sách đư ng d n. jpeg. và nh đó chia nh dòng l nh thành các t riêng r trong các ch tương ng. . thì t s b xóa kh i dòng l nh.7.7 Khai tri n các m u tên t p tin và thư m c (Pathname Expansion) Phép th tên đư ng d n và t p tin (Pathname expansion) s d ng đ ch nh m t m u nh g n mà có th ch ra vài t p tin (hay thư m c).6 Phân chia t (word splitting) Sau khi th c hi n xong các phép th tham bi n. phim v i d ng gif. Các ký t dùng đ t o m u có các giá tr trong b ng 3. và [. thì vi c phân chia t s không x y ra. Ví d . . có th dùng câu l nh [user]$ ls *. h v l i phân tích dòng l nh m t l n n a (nhưng d ng thu đư c sau các phép th nói trên) và th c hi n vi c phân chia t (word splitting). và th các bi u th c s h c. N u trong dòng l nh không th c hi n phép th nào trong các phép th k trên. ?. Cú pháp c a bi u th c expression tương t như cú pháp c a bi u th c s h c c a ngôn ng C. nhưng nh ng d u ngo c kép trong expression l i đư c đ c như m t ký t thư ng. . N u bi u th c không chính xác.7. 3. thì bash s tìm ki m trong t ng t c a dòng l nh các ký t *. thì t này s đư c xem như m t m u.3.7 Khai tri n bi u th c 63 3. N u tìm th y t v i m t hay vài ký t như v y. th l nh. 3. và bi n nullglob không đư c đưa ra. thì t s không thay đ i. Thao tác này n m ch . xác đ nh b i bi n IFS (xem trên). Phía trong expression có th c hi n các phép th tham bi n và th câu l nh. v. và n u như không đưa ra tùy ch n -f. Có hai d ng phép th s h c: $[expression] ((expression)) Trong đó expression đư c hi u (đư c bash đ c) như khi đ ng trong ngo c kép.4 M u tên t p tin r t thư ng xuyên s d ng trong dòng l nh có ch a ls.5 Phép th s h c (Arithmetic Expansion) Phép th s h c cho phép tính giá tr c a m t bi u th c s h c và thay th nó (bi u th c) b i k t qu thu đư c. N u giá tr c a IFS b ng m t dòng tr ng. t c là các ký t đ c bi t b m t giá tr và hi u như các ký t thư ng. N u như không tìm th y tên tương ng v i m u. avi. thì phân chia t cũng không x y ra.v. t p tin hình nh. tương ng v i m u này. tương ng v i m u này. Đ thu đư c thông tin ch c a t p tin d ng jpeg. Sau khi phân chia t .7.jpg . ví d . trong đó có ch a m t s lư ng l n các t p tin đ các d ng. h v tìm trong dòng l nh t t c các ký t phân chia.

] B ng 3.else và case. Tương ng b t kỳ ký t nào trong s các ký t n m trong d u ngo c vuông này. các ký t \. nhưng file23. Ví d . và *.txt. thì l nh sau ch đưa ra danh sách các t p tin có s t 0500 đ n 0999: [user]$ ls -l 0[5-9]?? 3. 3.txt (n u các t p tin này t n t i). N u ký t đ u tiên trong ngo c vuông là hay ˆ thì m u ( v trí này) s tương .. Toán t if ki m tra giá tr đư c tr l i b i các câu l nh t list1. còn n u giá tr này khác . file3. list2. phân cách nhau b i d u tr (-). cũng c n có các toán t ki m tra đi u ki n. ví d c-f.64 Bash Ký t * ? [. vnlinux.txt (n u chúng t n t i). v*.1 Toàn t if và test (ho c [ ]) C u trúc c a toán t đi u ki n có d ng thu g n như sau: if list1 then list2 else list3 fi trong đó.m t ngôn ng l p trình Như đã nói trên. phân cách nhau b i d u ph y và k t thúc b i m t d u ch m ph y hay ký t dòng m i. các chu i này có th đư c đưa vào d u ngo c nh n: list..8 Xóa các ký t đ c bi t Sau khi làm xong t t c các phép th . m u file?.txt s đư c thay th b i vnoss.txt và vntex. H v bash h tr các toán t l a ch n if.then.8 Shell .. và filea. N u trong danh sách có vài câu l nh. và list3 là các chu i câu l nh. 3. N u giá tr này b ng 0. mà tên c a chúng là các s g m b n ch s (thư m c /proc là m t ví d +). nh đó nó (bash) tr thành m t ngôn ng l p trình m nh.txt.txt. thì s th c hi n các l nh t list2. Tương ng b t ký m t ký t đơn nào.. C p ký t .png s tương ng t t c các t p tin có ph n m r ng png (t p tin đ h a hai chi u)..txt.txt thì không. đ có th xây d ng b t kỳ gi i thu t nào. theo t đi n. list1. bi u th m t dãy. while.4: Các ký t t o m u Quy lu t thay th Tương ng v i b t kỳ dòng ký t nào.7. không đư c ch ra trong ngo N u trong thư m c có nhi u t p tin. Ví d . file2. cũng như các toán t vòng l p for. until. ng t t c các ký t . thì ki m tra giá tr đư c tr l i b i câu l nh cu i cùng c a danh sách.txt s đư c thayth b i các tên t p sau file1. b t ký ký t nào. ‘ và " còn l i trong dòng l nh (chúng đư c s d ng đ hu b giá tr đ c bi t c a các ký t khác) s b xóa h t. k c hai ký t t o ra dãy (c và f trong ví d ) cũng tương ng v i m u. Ngoài ra.8. n m gi a hai ký t này. k c dòng r ng..

. và là m t t p tin thi t b kh i (block device) đ c bi t. Bi u th c đ ng sau if hay elif thư ng là câu l nh test.m t ngôn ng l p trình 65 không.3.. mà có th đư c bi u th b i d u ngo c vuông [ ]. then unicode_start else echo "hello world" fi V toán t test (hay [. ˆ -b file Đúng n u file t n t i.]) c n đi sâu hơn. Bi u th c ph c t p hơn đư c t o ra t các thao tác đơn và kép sau (“nh ng viên g ch cơ s "): ˆ -a file Đúng n u t p tin có tên file t n t i.2 Toán t test và đi u ki n c a bi u th c Bi u th c đi u ki n. Đ k t thúc m c này. và 1 trong trư ng h p ngư c l i. và tr l i giá tr 0. ˆ -d file Đúng n u file t n t i và là m t thư m c.8.. Bi u th c đư c đưa t i chương trình test như m t tham s c a chương trình. 3. so sánh các dòng và các so sánh s h c thông thư ng. .8 Shell . nh ng gì n m trong nó. s d ng trong toán t test. ch không ph i là m t phép bi n hóa th n thông nào đó c a h v bash (ch là cú pháp c a [ đòi h i ph i có d u đóng ngo c). đư c xây d ng trên cơ s ki m tra thu c tính t p tin. và là m t t p tin thi t b ký t (charater device) đ c bi t.. ˆ -e file Đúng n u t p tin có tên file t n t i. chúng ta đưa ra ví d s d ng if: if [ -x /usr/bin/unicode_start ] . n u bi u th c là đúng. Và cũng c n chú ý r ng ch c a test trong c u trúc if có th s d ng b t kỳ chương trình nào. [ else list ] fi ( đây d u ngo c vuông ch có nghĩa là. D ng đ y đ c a l nh if như sau: if list then list [ elif list then list ] . ngo c vuông. thì s th c hi n nh ng l nh t list3. trùng v i giá tr mà chu i l nh th c hi n (list2 ho c list3) đưa ra. test và [ đó là hai tên c a c a cùng m t chương trình. Thay vì gõ test expression có th đưa bi u th c expression vào ngo c vuông: [ expression ] C n chú ý r ng. ˆ -c file Đúng n u file t n t i. L nh test th c hi n phép tính m t bi u th c nào đó. Giá tr đư c tr l i b i toán t if như v y. không nh t thi t ph i có).

. ˆ -x file Đúng n u t p tin có tên file t n t i và có quy n th c thi. ˆ -N file Đúng. ˆ -k file Đúng n u t p tin có tên file t n t i và đư c đ t bit sticky. ˆ -p file Đúng n u t p tin có tên file t n t i và là tên c a m t ng (kênh FIFO). n u t p tin có tên file t n t i và là socket. n u t p tin file1 có th i gian s a đ i mu n hơn file2. ˆ -w file Đúng n u t p tin có tên file t n t i và có quy n ghi. Bash ˆ -h file hay -L file Đúng n u t p tin có tên file t n t i và là liên k t m m (liên k t tư ng trưng). ˆ -u file Đúng n u t p tin có tên file t n t i và đư c đ t bit thay đ i ngư i dùng. ˆ -0 file Đúng. n u t p tin có tên file t n t i và thay đ i t l n đư c đ c cu i cùng. ˆ -S file Đúng. ˆ -G file Đúng. ˆ -t fd Đúng n u b mô t c a t p tin (fd) m và ch lên terminal.66 ˆ -f file Đúng n u t p tin có tên file t n t i và là m t t p tin thông thư ng. ˆ -p file Đúng n u t p tin có tên file t n t i và là tên c a m t ng (kênh FIFO). ˆ -g file Đúng n u t p tin có tên file t n t i và đư c đ t bit thay đ i nhóm. n u t p tin có tên file và ch s h u c a nó là ngư i dùng mà ID có hi u l c ch đ n. n u t p tin có tên file t n t i và thu c v nhóm. xác đ nh b i ID nhóm có hi u l c. ˆ -s file Đúng n u t p tin có tên file t n t i và kích thư c l n hơn không. ˆ file1 -nt file2 Đúng. ˆ -r file Đúng n u t p tin có tên file t n t i và có quy n đ c.

3.8 Shell - m t ngôn ng l p trình

67

ˆ file1 -ot file2 Đúng, n u t p tin file1 “già” hơn file1 (trư ng h p ngư c l i c a trư ng h p trên). ˆ file1 -ef file2 Đúng, n u t p tin file1 và file2 có cùng m t s thi t b và ch s mô t inode. ˆ -o optname Đúng, n u tùy ch n optname c a h v đư c kích ho t. Chi ti t xin xem trên trang man bash. ˆ -z string Đúng, n u đ dài c a chu i string b ng không. ˆ -n string Đúng, n u đ dài c a chu i khác không. ˆ string1 == string2 Đúng, n u hai chu i trùng nhau. Có th thay hai == b ng m t =. ˆ string1 !== string2 Đúng, n u hai chu i không trùng nhau. ˆ string1 < string2 Đúng, n u chu i string1, theo t đi n, đ ng trư c chu i string2 (đ i v i ngôn ng hi n th i). ˆ string1 > string2 Đúng, n u chu i string1, theo t đi n, đ ng sau chu i string2 (đ i v i ngôn ng hi n th i). ˆ arg1 OP arg2 đây OP là m t trong các phép so sánh s h c: -eq (b ng), -ne (khác, không b ng), -lt (nh hơn), -le (nh hơn ho c b ng), -gt (l n hơn), -ge (l n hơn ho c b ng). ch các tham s arg1 và arg2 có th s d ng các s nguyên (âm ho c dương).

T các bi u th c đi u ki n cơ b n này có th xây d ng các bi u th c ph c t p theo ý mu n nh các phép lôgíc thông thư ng PH Đ NH, VÀ (c ng) và HO C:
ˆ !(expression) Phép ph đ nh. Đúng, n u bi u th c sai. ˆ expression1 -a expression2 Phép c ng lôgic AND. Đúng n u c hai bi u th c đ u đúng. ˆ expression1 -o expression2 Phép lôgíc ho c OR. Đúng n u m t trong hai bi u th c đúng.

68

Bash

3.8.3

Toán t case

D ng c a toán t case như sau: case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac Câu l nh case đ u tiên khai tri n t word, và so sánh nó (word) v i m i t trong m u pattern theo th t . Sau khi tìm th y s trùng nhau đ u tiên thì d ng vi c so sánh l i, và th c hi n danh sách list các câu l nh đ ng sau m u đã tìm th y. Giá tr tr l i b i toán t này, b ng 0, n u không tìm th y s trùng nhau nào. Trong trư ng h p ngư c l i, tr l i giá tr mà câu l nh cu i cùng trong danh sách list đưa ra. Ví d s d ng toán t case sau l y t script /etc/rc.d/rc.sysinit (FreeBSD-style): case "$UTC" in yes|true) CLOCKFLAGS="$CLOCKFLAGS -u"; CLOCKDEF="$CLOCKDEF (utc)"; ;; no|false) CLOCKFLAGS="$CLOCKFLAGS --localtime"; CLOCKDEF="$CLOCKDEF (localtime)"; ;; esac N u bi n s (UTC) nh n giá tr yes ho c true, thì s th c hi n c p l nh th nh t, nh n giá tr no ho c false - c p th hai.

3.8.4

Toán t select

Toán t select cho phép t ch c h i tho i v i ngư i dùng. Nó có d ng sau: select name [ in word; ] do list; done Lúc đ u t m u word hình thành m t danh sách nh ng t tương ng v i m u này. T p h p nh ng t này đư c đưa vào kênh thông báo l i tiêu chu n, hơn n a m i t đư c đi kèm v i m t s th t . N u m u word b b qua (không có trong toán t select), thì s đưa vào các tham bi n v trí (xem trên) theo m t cách tương t . Sau đó, d u nh c PS3 đư c đưa ra, và h v ch chu i nh p vào trên đ u vào tiêu chu n. N u chu i nh p vào có ch a s , tương ng v i m t trong các s đã hi n ra, thì bi n name s đư c gán giá tr b ng t đi kèm v i s này. N u nh p vào m t dòng r ng, thì s và t s đư c hi n ra them m t l n n a. N u nh p vào b t kỳ m t giá tr nào khác, thì bi n name s nh n giá tr b ng không. Chu i mà ngư i dùng nh p vào, đư c ghi l i trong bi n REPLY. Danh sách l nh list đư c th c hi n v i giá tr bi n name đã ch n. Sau đây là m t script nh (xin hãy gõ không d u n u console c a b n chưa h tr vi c hi n th Ti ng Vi t):
#!/bin/sh echo "B n thích dùng OS nào?"

3.8 Shell - m t ngôn ng l p trình
select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris" "QNX" "Other"; do break done echo "B n đã ch n $var"

69

Ghi đo n trên vào m t t p tin (ví d , select.sh), thay đ i đ t p tin thành kh thi (ví d , chmod 755 select.sh), và ch y (./select.sh). Trên màn hình s hi n ra câu h i sau: B n thích dùng OS nào? 1) Linux 3) Free BSD 2) Gnu Hurd 4) MacOSX #? 5) Solaris 6) QNX 7) Other

Hãy nh n m t trong 7 s đưa ra (t <Enter>), thì s th y thông báo sau: B n đã ch n MacOSX

1 đ n 7). N u b n nh p 4 (nh n c

3.8.5

Toán t for

Toán t for làm vi c có khác m t chút so v i for trong các ngôn ng l p trình thông thư ng. Thay vì tăng ho c gi m giá tr c a m t bi n s nào đó (lên ho c xu ng) m t đơn v sau m i vòng l p, thì nó gán giá tr ti p theo trong danh sách t đưa s n cho bi n đó trong m i vòng l p. Nói chung c u trúc có d ng sau: for name in words do list done Quy lu t xây d ng danh sách l nh (list) gi ng trong toán t if. Ví d . Script sau t o các t p tin fu1, fu2, và fu3: for a in 1 2 3 ; do touch fu$a done Có th gõ ba dòng này trên m t dòng l nh, k t qu thu đư c tương t script. D ng t ng quát c a toán t for như sau: for name [ in word; ] do list ; done Đ u tiên cũng x y ra s khai tri n t word theo quy lu t khai tri n bi u th c (xem trên). Sau đó bi n name l n lư t đư c gán các giá tr thu đư c t s khai tri n này, và th c hi n danh sách l nh list trong m i l n như v y. N u không có “in word”, thì danh sách l nh list đư c th c hi n m t l n cho m i tham bi n v trí đã đưa ra. Trên Linux có chương trình seq, ti p nh n hai s nguyên làm tham s , và đưa ra chu i t t c các s n m gi a hai s này (c ng thêm c chúng). Nh câu l nh này có th s d ng for c a bash làm vi c như toán t for trong các ngôn ng l p trình thông thư ng. Đ làm đư c đi u này ch c n vi t vòng l p for như sau: v i

t c là g i hàm s ngay trong ph n thân c a nó. Hàm s có c u trúc như sau: function name () { list } Hơn n a t function không nh t thi t ph i có.SEPARATOR -.7 Các hàm s Cú pháp H v bash cho phép ngư i dùng t o các hàm s cho mình. còn ph n thâm c a hàm s t o b i danh sách các câu l nh list. t c là list2 th c hi n. t c là chúng ta có th t t o các câu l nh m i. 3. . name xác đ nh tên c a hàm (dùng đ g i hàm). Hàm s làm vi c và đư c s d ng gi ng như các câu l nh thông thư ng c a h v .8.. C n chú ý r ng hàm có th là đ qui. Các câu l nh này s đư c th c hi n m i khi tên name đư c g i (gi ng như m t l nh thông thư ng). s d ng giá tr ph đ nh c a đi u ki n list1. n u câu l nh cu i cùng trong danh sách list1 tr l i tr ng thái thoát ra khác không. n m gi a { và }. C u trúc có d ng như sau: while list1 do list2 done Ví d : while [ -d directory ] . do ls -l directory >> logfile echo -. do cat fu$a done Bash Câu l nh (script) này đưa ra màn hình n i dung c a 10 t p tin (n u có): “fu1”. nhưng vòng l p các câu l nh trong list2 ch th c hi n khi đi u ki n còn đúng. “fu10”... và s ng ng khi đi u ki n không th a mãn.>> logfile sleep 60 done Chương trình (script) trên s theo dõi và ghi l i n i dung c a thư m c directory theo t ng phút n u thư m c còn t n t i. Toán t until tương t như toán t while: until list1 do list2 done Đi m khác bi t n m ch . .70 for a in $( seq 1 6 ) . Hàm s th c hi n trong ph m vi h v hi n th i: không có ti n trình m i nào đư c ch y khi biên d ch hàm s (khác v i vi c ch y script). 3.8.6 Toán t while và until Toán t while làm vi c tương t như if.

else { echo $(( $1 * $( fact $(( $1 -. Trong khi th c hi n n u g p câu l nh n i trú return (trong ph n thân c a hàm). done. và phép th các câu l nh. nó (tùy ch n) h y b vi c t o dòng m i. M c dù tùy ch n này không có nhi u ý nghĩa v i m c đích chúng ta mu n đây. như v y $1 là tham s đ u tiên.3.9 Bi n n i b (local) N u mu n t o m t tham bi n đ a phương.8. Cú pháp đưa ra bi n đ a phương gi ng h t các tham bi n khác. Hàm s tính giai th a fact M t ví d khác: fact() { if [ $1 = 0 ]. I=$(( $I + 1 )) }. 3. có th s d ng t khóa local. xem trên) trong th i gian th c hi n hàm này. then echo 1. các tham bi n v trí và tham bi n đ c bi t # s đư c tr l i các giá tr mà chúng có trư c khi ch y hàm. m t ví d c a hàm đ qui. Cũng có th s d ng t t c các tham s m t lúc nh $*. Chúng đư c đ t các tên như $n. Hãy chú ý đ n s khai tri n s h c. Khi th c hi n xong hàm s . các tham s c a hàm s tr thành các tham bi n v trí (positional parameters. Dư i đây là m t ví d hàm s . ch có đi u c n đ ng sau t khóa local: local name=value. echo $2 } C n chú ý đ n tùy ch n -n c a echo.m t ngôn ng l p trình 71 3. thì hàm s s b d ng l i và quy n đi u khi n đư c trao cho câu l nh đ ng sau hàm. Vi c đánh s b t đ u t 1. . nhưng s r t có ích trong các hàm s v i m c đích khác.8. trong đó n là s c a tham s mà chúng ta mu n s d ng.8 Shell .1 )) ) )) }. do { echo -n "$I ". th c hi n công vi c c a l nh seq đã nh c đ n trên: seq() { local I=$1. fi } Đây là hàm s giai th a.8 Tham s Khi hàm s đư c g i đ th c hi n. while [ $2 != $I ]. và đưa ra s th t c a tham s nh $# Tham s v trí s 0 không thay đ i.

còn r t nhi u v n đ quan tr ng c n xem xét nhưng n m ngoài ph m vi c a bài h c. Cú pháp truy c p đ n các tham s cũng như hàm s . M t chú ý khác là ký t # dùng đ vi t l i chú thích trong script. Có th thay th dòng này b i liên k t đ n b t kỳ m t chương trình nào. thì trong th i gian th c hi n script chúng s thành các tham bi n v trí. . Tương t hàm s script có th đư c th c hi n như m t câu l nh. n u đưa tên c a script như m t tham s cho l nh bash. Trong các trư ng h p thông thư ng khi ch y script s có m t ti n trình m i đư c ch y. Chúng ta s d ng bài h c ng n g n v bash t i đây.” (đ ng nghĩa c a source). Đi u này có nghĩa là. mà l nh source tr l i. Trong trư ng h p này script ch đơn gi n là m t tham s c a l nh nói trên. T p tin này không nh t thi t ph i kh thi (không nh t thi t ph i có bit x). đ th c hi n script myscript c n đưa câu l nh “sh myscript”. hay m t d u ch m “.10 Câu l nh sh B n luôn luôn có th ch y m t b n sao c a h v bash nh câu l nh bash hay sh. Giá tr (tr ng thái). N u không câu l nh nào đư c th c hi n. thì tham bi n v trí không thay đ i. N u b n mu n ki m ch ng l i tác d ng c a ký t này. Khi này có th b t b n sao này ch y m t script nào đó. s đư c s d ng đ tìm t p tin có tên filename. Như v y. thì tr ng thái thoát b ng 0. trùng v i giá tr . và đ t trư c nó (câu l nh) ký t #. thì hãy nh p vào dòng l nh m t câu l nh b t kỳ. mô t v thư vi n readline. tín hi u. ví d “# ls”. b n s th y r ng h v b qua câu l nh này. script trên ngôn ng Perl b t đ u b i dòng có d ng !/bin/perl. qu n lý ti n trình. và tr l i giá tr . c n s d ng câu l nh source. T t nhiên. xác đ nh b i câu l nh cu i cùng c a filename. v. mà s đ c t p tin và th c hi n các câu l nh tương ng. Các b n s tìm th y thông tin c n thi t trong các cu n hư ng d n khác ho c trên trang man bash.v.72 Bash 3. không tìm th y t p tin c n. Câu l nh s có d ng: source filename [arguments] Câu l nh này đ c và th c hi n các câu l nh có trong t p tin filename trong môi trư ng hi n th i. N u có các tham s (đưa ra arguments. . b n s th y dòng đ u tiên có d ng sau: #!/bin/sh. xem đ nh d ng câu l nh trên). 3. ví d . li t kê trong PATH. N u xem n i dung c a m t t p tin script nào đó (nh ng t p tin như v y có r t nhi u trên h th ng).9 Script c a h v và l nh source Script c a h v ch là các t p tin có ch a chu i l nh. tr l i b i câu l nh cu i cùng trong script. N u trong thư m c. T t c nh ng gì đ ng sau ký t này đ n cu i dòng s đư c coi là chú thích và b bash b qua (t c là h v s không xem dòng này là câu l nh). . thì s tìm nó (t p tin) trong thư m c hi n th i. thì đư ng d n. N u filename không ch a d u g ch chéo. l ch s câu l nh. ho c không tìm th y t p tin filename. li t kê trong bi n s PATH. Đ có th th c hi n script trong b n bash hi n th i. khi chúng ta g i script đ th c hi n như m t l nh thông thư ng. N u không có tham s . thì /bin/sh s giúp chúng ta “thu x p” m i th . Ví d .

Sign up to vote on this title
UsefulNot useful