’
DANH SÁCH BANG 1
`
¯ˆ
Loi nói dau
`’
D ’ ´
ˆ ’`’ ’ ’
¯ ây là ban dich cuon "Linux cho nguoi dùng" (sêri sách tu hoc) cua Kostromin Victor
Alexeevich co ˙ng thêm mot vài (rat ít) kinh nghiem su dung Linux cua teppi. Ban goc d oc
´
ˆ ’’ ˙ ˙ ’ ’ ´ ¯u ’
ˆ ˆ ˆ ˆ ’
´ ´
viet trên tieng˙ Nga. Theo˙yêu cau cua Kostromin˙ A. V., xin d oc d a ra các liên ket toi ban
` ’ ˙ ´ ´’ ’ ˙
ˆ ˆ ˆ ¯u ’ ¯u
’ ’ ˆ
´ ¯ây:
goc d ˙
ˆ
http://rus-linux.net/book1.php?name=book1/oglavl
http://linux-ve.chat.ru/
`’ ’ ’
Loi cam on
’ ’ ¯ã ¯o ¯ã ´ ˆ ˆ ´
ˆ `
Xin cam on các bác sau d giúp d ˜’: Kostromin V. A. d viet mot cuon sách ve Linux cho
ˆ
nguoi dùng moi tuyet voi; Truong Manh Cuong d dành cho teppi ˆ ˙ mot khoang không trên
’
’`’ ´’ ˆ `’ ’’ ’`’ ¯ã
˙ d ’ d ˘ t cuon sách này; hai bác Nguyen Dai Quý và Nguyen Dang
http://phoc.minidns.net ¯e ¯a ´ ˙ ˆ˜ ¯ ˙ ˜
ˆ ˘
ˆ ˆ
˙ c su dung LT X. Bác Nguyen Da˙ Quý d d c và su¯ ˙
Hoàng Tuân d giúp trong vie ’’ A ˜
ˆ ¯ i ’’a cho
¯ã ˆ E ¯ã ¯o
phiên ban 0.9. Xin hãy gui thu nhac teppi tai teppi@vnlinux.org neu nhu teppi ˙ quên ai d
’ ’’ ’ ˙ ´ ˘ ˙ ˙
´
ˆ ’ có ¯ó.
˙
’ `
ˆ
Ban quyen
´ ’’ ’ `
Cuon "Bash cho nguoi dùng" này su dung ban quyen GPL. Nói mot cách ngan gon, ban có
ˆ ’`’ ˆ ˆ ´
˘
theˆ’ làm bat ký thu gì: in, tang, bán, d´ t,... nhung xin hãy thêm hai d ˙’ong dan sau vào các ban
´
ˆ ´’ ˘ ¯oˆ
˙
’ ¯u `’ ˜
ˆ
˙ ˙ ’
’
sao cua mình: ˙
http://rus-linux.net/book1.php?name=book1/oglavl
http://teppi.org/l4u/
’ `
Tác gia Kostromin V. A. cung nhu nguoi dich không chiu trách nhiem ve hau qua do viec su
˜ ’ ’`’ ˆ ˆ ˆ ’ ˆ ’’
´
dung cuon sách này gây ra. ˙ ˙ ˙ ˙ ˙
ˆ
˙
’ ˆ ˆ
Phiên ban và cap nhat
’
Phiên ban 0.9 ˙ ˙
ˆ ˆ ´
Cap nhat cuoi cùng Ngày 9 tháng 2 nam 2005
ˆ ˘
˙ i d ` ˙nghi sua d ’i, thông báo loi chính ta, loi kien thuc cua ban dich cung nhu d ` nghi giúp
Mo ¯e ’’ ¯o ˜ ’ ˆ ´˜ ˆ ´’ ’ ’
ˆ ˆ ˆ ˜ ’ ¯e
ˆ
d ˜’˙dich xin ˙gui cho Phan Vınh Thinh theo d a chı teppi@vnlinux.org.
’’ ’ ˙ ˙
¯o ˜ ¯i
˙ ˙ ˙
Chuong 1
’’
’’ ’ ´
ˆ
HDH Linux: lich su và các ban phân phoi
¯
˙
Chuong 2
’’
Cài dat HDH Linux trên cùng máy tính
¯˘ ¯
´’ ˙
voi Windows
’ ’’ ¯a `
Van su khoi d ˆ u nan – Trung Quoc ´ˆ
˙ ˙
¯ı ’ ’ ´
Thông thuong trên các d˜a cua ban phân phoi Linux d có huong dan ngan gon cách cài d ˘ t
’`’ ˆ ¯ã ’´’ ˜
ˆ ´
˘ ¯a
Linux. Ngoài ra, trên Internet ban có the ’ tìm thay rat nhieu cuon sách nó ve van d ˆ này. Và tat
ˆ ´ ´
ˆ ˆ ˆ` ´
ˆ ` ´ ˙ ¯e
ˆ ˆ ` ´˙
ˆ
ca ´ ´’ ˙
’ các ban phân phoi lon (Debian, Slackware, Fedora, Mandrake, ...) d ˆ u d có cuon huong
’ ` ¯ã ´
ˆ ¯e ˆ ’´’
˜
ˆ ¯a ´ ˆ ´
ˆ ´
ˆ ’’
dan cài d ˘ t rat chi tiet, cho moi tình huong su dung. Hãy cho d ’i và hy vong trong tuong lai `’ ¯o ’’
không xa˙se có ban dich Tieng Viet cua nhung cuon sách này. Chính vì vay trong cuon sách
˜ ’ ´ ˙ ˆ ’
ˆ ˜’
˙ ´
ˆ
˙ ˙
ˆ ´
ˆ
˙ d a ra các buoc cu the cua viec cài d ˘ t, mà xin ba˙n d c hãy tìm các
˙ ´
’ ˜
này, tác gia se không ¯u ’ ’’ ˆ’ ’ ˆ ¯a ¯o
cuon huong dan tuong ung. Thay vào d ˙ là nhung gì ban ca˙ biet và chuan bi truoc khi cài
´
ˆ ’´’ ˜
ˆ ’ ’ ´’ ¯ó ˜’
˙
ˆn ´
` ˆ
˙’ ˙
ˆ ’´’
d ˘ t, d ˆ `’ ’ ˜ ¯i ’ ´ ˙
`ng thoi, tác gia se d cu the và chi tiet vào nhung gì d ˘ c biet khi cài d ˘ t Linux trên máy ˙
¯a ¯o ˆ ˆ ˜’ ¯a ˆ ¯a
tính d có mot trong các he d˙ ˆ u hành Windows cung nhu viec khoi d ˆ ng nhieu he d ˆ u hành.
˙
¯ã ˆ ˆ ¯ie ` ˜ ’
˙
ˆ
˙’
’ ¯o
˙`
ˆ ˆ ¯ie `
˙ ˜ ˙
´ n d ˆ o cho, phan lon nguoi dùng Viet Nam truoc khi bat d ˆ u hoc Linux d làm quen và
` ’’ ˆ ` ´’ ˙´ ` ˙ ˙
Va ¯e
ˆ ˆ ’`’ ˆ ’´’ ˘ ¯a ¯ã
rat có the d có kinh nghiem su dung các˙ HDH dòng Windows nhu˙Windows 98, Windows
´ˆ ˆ’ ¯ã ˆ ’’ ¯ ’
2000 và Windows XP. Và trên thuc˙te thì tam thoi Linux khó có the là HDH d ˆ u tiên mà nguoi
˙
’ ´ ˆ `’ ˆ’ ¯ `
¯a ’`’
dùng làm quen. Nhu the ˆ ˙ ˙
´ , mot cách tu nhiên, neu nguoi dùng d làm viec voi HDH Windows
´
’ ˆ ’ ˆ ’`’ ¯ã ˆ ´’ ¯
và quyet d nh thu nghiem voi Linux, thì ho không muon mat d môi ˙ ’ong làm viec quen
´ ¯i
ˆ ’’ ˆ
˙´
’
˙ ´ˆ ´ ¯i
ˆ tru `’ ˆ
˙ ˙´ i nhung gì d tao ra và d cau hình duoi duoi Windows. Rat˙ may là
˙ ´ ´
ˆ ’
thuoc cua mình, cùng vo ’ ˜’ ¯ã ¯ã ˆ ’´’ ’´’ ˆ
˙ nhat thiet phai d ´ ´ ’ ˙ ˜’
không ˆ ´ ´
ˆ ’ ¯ánh mat tat ca nhung thu d Boi vì trên mot máy tính có the cùng
ˆ ˆ ´’ ¯ó. ’’ ˆ ˆ’
´ ` ˙ ’ cho trên d a!). Chính
˜
"chung song hòa bình hai HDH và tham chí nhieu hon nua (neu có d
ˆ ¯ ˆ ˆ ’ ˜’ ´ ˆ ¯u ˆ ¯ı˜
´ , o phía duoi se nói cách cài d ˘ t˙HDH Linux trên máy tính d cài d ˘ t mot trong các he
vì the ’’
ˆ ’´’ ˜ ¯a ¯ ¯ã ¯a ˆ ˆ
` ’
d ˆ u hành cua hãng Microsoft. ˙ ˙ ˙ ˙
¯ie
2.1 ˆ’
Chuan bi cài dat
¯˘
˙ ˙
ˆ’ ¯a `
Có the cài d ˘ t Linux bang mot trong các cách sau:
˘ ˆ
˙ ˙
`’ ˆ’ ¯ı
• Tu o d˜a CD-ROM
`’ ’ ˆ’ ¯ı ´’
• Tu ban sao chép Linux trên o d˜a cung
’ ˆ ’
• Tu máy chu tap tin cua mang noi bo qua NFS;
`’ ˆ ˆ
˙ ˙ ˙ ˙
• Tu máy tính khác trong mang noi bo qua SMB;
`’ ˆ ˆ
˙ ˙ ˙
4 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
`’ ’’
• Tu máy tính o xa (ví du tu Internet) qua giao thuc FTP;
`’ ´’
˙
`’ ˆ ’
• Tu mot máy chu WWW qua giao thuc HTTP. ´’
˙
´
ˆ ’ ’ ˆ ˆ ’ ´ ´
Theo ý kien cá nhân cua tác gia thì thuan tien và có tính thuc te nhat là cài d ˘ t Linux tu
ˆ ˆ ¯a `’
CD-ROM, hon nua viec mua các d˜a CD bây `’ ˙ gio không gây khó khan gì.
˙ ˙ ˘ ˙
’ ˜’ ˆ ¯ı
Truoc khi bat d ˆ u ˙cài d ˘ t, hãy thu thap (hãy viet lên mot to giay) tat ca nhung thông tin
’´’ ´ ¯a
˘ ` ¯a ˆ ´
ˆ ˆ `’ ´ ˆ ´ ’ ˜’
ˆ
´ ` ´ ’
cau hình can thiet cua máy ˙tính. Neu nhu máy tính cua ban tam thoi van còn làm viec duoi
´ ˙ ’ ˙ `’ ˆ ˜
ˆ ˆ ˆ ˆ ’ ˆ ’´’
HDH Windows 95/98/2000/XP, thì ban se tìm thay rat nhie ´ ´ ˙ `u ˙thông tin neu nhan chuot phai
´ ´ ˙ ’
¯ ˜ ˆ ˆ ˆ ˆ ˆ ˆ
’u tuong My Computer, chon lenh Properties. O d ban có the tìm thay gan he˙ tat ca
vào bie ’ ’
ˆ ˆ
˙ ’’ ¯ây ’
ˆ ´ ˆ ´t ´ ’
ˆ ` ˆ ˆ
thông tin can thiet. Neu nhu ban không thay thông tin nào d ˙ thì can tìm kiem theo các cách
`
ˆ
˙ ´
ˆ ´
ˆ ’
˙ ˙ ´
ˆ ¯ó, `
ˆ ´
ˆ
˙
ˆ’ ’ ˆ ’’ ’
khác, ke ca viec mo vo máy và d c nhung dòng chu trên thiet bi.
¯o ˜’ ˜’ ´
ˆ
’ giúp ba ¯o˙n d c, xin d oc d ˙a ra d danh sách nhung thông tin can thu thap. Xin d ` ng
˙ `
¯ e
Dˆ ¯u ’ ¯u
’ ’ ¯ây ˜’
˙ co gang ghi càng nhieu du lieu ve mot thiet bi càng tot (tat ca ˙ ng thông
˙´ ˘ ˙
ˆ ˆ ¯u’
luoi bieng và hãy ˆ ´
’`’ ´ ˆ `
ˆ ˜’ ˆ ˆ ˆ ` ´
ˆ ´ ´ ’ nhu
ˆ ˆ ˜’
tin có the tìm thay), nhung du lieu này se can˙d´ n khi cài d ˘ t ˙ cau hình, khi mà viec tìm
ˆ’ ´
ˆ ˜’ ˜’ ˆ ` ˆ
˜ ˆ ¯e
˙
¯a và ´ ˆ ˆ
´
kiem chúng se khó khan hon. ˘ ˙ ˙ ˙
ˆ ˜ ’
• BIOS:
’ ´
– nhà san xuat;ˆ
´ ˆ
– so hieu phiên ban.
ˆ ’
˙
ˆ’ ¯ı ´’ ’’ ’ ˆ’ ¯ı ´
• Controller o d˜a cung: loai (IDE hay SCSI) và dung luong cua o d˜a (neu nhu ban d c
ˆ ’ ¯o
˙’ ˜ ’ ˙ˆ ´ ¯o ˙ ˙
`n kiem tra xem BIOS có ho tro viec truy cap o che d ˆ LBA hay
dùng d˜a IDE, thì ca
¯ı ˆ ˆ ˆ ˆ ’’ ˆ
không): ˙ ˙ ˙ ˙
´
– hda (Master trên controller so 1 hay Primary Master);
ˆ
´
– hdb (Slave trên controller so 1 hay Primary Slave);
ˆ
´
– hdc (Master trên controller so 2 hay Secondary Master);
ˆ
´
– hdd (Slave trên controller so 2 hay Secondary Slave).
ˆ
’ ´ ˆ ˜
´ ˆ ’ ´
– nhà san xuat và so mau mã cua adapter SCSI (neu có).
ˆ ˆ
’ ˆ ´’ `
• Dung luong cua bo nho (tính bang Kilobyte
’’ ˘
˙ ˙
• CD-ROM:
– Giao dien (IDE, SCSI, hay giao dien khác);
ˆ ˆ
˙ ˙
¯o ´’
ˆ ˆ’ ¯ı
– d´ i voi các o d˜a CD-ROM không phai IDE, cung nhu SCSI - nhà san xuat và so
’ ˜ ’ ’ ´
ˆ ´
ˆ
˜
mau mã.
ˆ
• Chuot:
ˆ
˙
– loai chuot (serial, PS/2, hay bus mouse);
ˆ
˙ ˙
– giao thuc (Microsoft, Logitech, MouseMan, v.v. . . );
´’
´
– so nút;
ˆ
¯o ´’
ˆ ˆ ˘ ˆ’ ˆ ˆ ˆ ´ ´’ ’ ’ ˆ’ ¯ó.
` ˆ
– d´ i voi chuot cam vào cong noi tiep thì can so thu tu cua cong d
´ ´ ´
˙ ˙
• Cac màn hình
˙
2.2 Phòng xa và nhung loi khuyên
˜’ `’ 5
’ ´
– nhà san xuat;
ˆ
ˆ ˜
´ ˆ ’’
– so mau mã (hay chipset su dung)
˙
– dung luong bo nho;
’’ ˆ ´’
˙ ˙
• Màn hình
’ ´
– nhà san xuat
ˆ
ˆ ˜
´ ˆ
– so mau mã;
’ ˆ ´ ` ˆ `
– các giá tri gioi han (min, max) cua tan so làm moi theo chieu doc và theo chieu
´’ ´’ ˆ `
ˆ
˙ ng giá tri này ban d c chı có the tìm thay trong tài lieu˙ d kèm voi màn
˙
ngang (nhu ˜’ ¯o ’ ˆ’ ´
ˆ ˆ ¯i ´’
hình, Windows không ˆ ˙ hien thi˙ nhung giá tri này, và chúng rat˙ quan trong trong
’˙ ´
˜’ ˆ
khi ca ´ u hình giao dien d ˆ hoa).
` ˙ ˙ ˙
ˆ ˆ ¯o
˙ ˙
´
ˆ ’ ´ ´ ´
• Neu nhu ban d c muon ket noi mang (mà UNIX nói chung là HDH dành cho mang),
¯o ˆ ˆ ˆ ¯
thì hãy ghi˙lai nhung du lieu sau: ˙
˙
˜’ ˜’ ˆ
˙
˙ ˙
’ ´ ˆ ˜
´ ˆ
– nhà san xuat và so mau mã cac mang;
ˆ
˙ ˙
’ ’
– d a chı IP cua mình;
¯i
˙
’
– tên cua máy tính trong mang;
˙
– mat na mang con (subnet mask);
˘
˙ ˙ ˙
’ ’
– d a chı IP cua gateway;
¯i
˙
¯i ’ ’ ’ `
– d a chı IP cua các máy chu tên mien (DNS server);
ˆ
˙
’ ’ ’
– d a chı IP cua máy chu WINS(Windows Internet Name Service);
¯i
˙
`
ˆ ’
– tên mien cua công ty ban d c. ¯o
˙ ˙
’ ´
• Loai và nhà san xuat cac âm thanh và game controller (neu nhu có)
ˆ ´
ˆ ’
˙ ˙
2.2 Phòng xa và nhung loi khuyên
˜’ `’
¯a ¯ ´
Truoc khi cài d ˘ t HDH Linux sau Windows, rat nên thuc hien vài thao tác "phòng xa" ("phòng
’´’ ˆ ’ ˆ
˙cháy"). Vì rat có the ban d c se phai˙ phân vùng lai o d a, thay d ’i ban ghi
’ ˙
cháy hon chua ’ ˜’ ´ˆ ˆ ¯o ˜ ’ ˆ’ ¯ı ˜ ¯o ’
ˆ
’’i d ˆ ng (Boot Record) và làm viec vo
kho ¯o ˙ i các tap tin khoi d ng cung nhu các tap tin cau hình.
˙ ’’ ¯o ˙ ´
ˆ ´’ ˆ ˆ ˜ ’ ˆ ˆ
˙ tác này không phai lúc nào cung d ˙ lai d lai mot ket qua theo ý ˙ ´ n, và trong
˙ ˙
Các thao ’ ˜ ¯em ¯em ˆ ´ ˆ ’ muo
ˆ
truong hop xau có the máy tính cua ban d c se ˙không khoi ˙¯ong nua. Có biet cách thoát ra
’`’ ’ ´ ˆ ˆ’ ’ ¯o ˜
˙ ’ d
’ ˆ ˜’ ´
ˆ
kho ’ i tình ´ ˙huong này và phuc hoi du lieu can thiet không d còn˙là mot câu hoi. Nhung roi vào
` ˜’ ˆ ˆ ˙ `˙ ´ ’
ˆ ˆ ˆ ¯ó ˆ ’ ’
´ ˙ ˜ ˙´ ` ` ˙
ˆ ’ ˆ ´ ´’ ˆ
tình huong nhu vay het suc de dàng nhat là voi nguoi dùng lan d ˆ u tiên cài d ˘ t Linux. Chính
ˆ ˆ ´’ ’`’ ˆ ¯a ¯a
` ˙` ` ` ˙ `
ˆ ˆ ’’ ¯o
vì vay, d ˆ u tiên, can tao mot d˜a mem khoi d ˆ ng hay mot d˜a mem giúp phuc hoi he thong
ˆ ¯a ˆ ¯ı ˆ ¯ı ˆ ˆ ˆ ´ ˆ
(neu´ ˙ ban d c còn chu˙ tao). Thu hai, can ghi˙ lai nhung ˙du lieu có giá tri (backup).˙Và thu
a ˙ ´’ ` ˙ ´’
ˆ ¯o ’ ˆ ˜’ ˜’ ˆ
˙ ’n bi các tap tin (d a mem, CD) cài d ˘ t cho he thong cu. Mot loi khuyên quan trong
˙ ˙ ` ˙ ˙ ˙
ba, chua ˆ ˆ ˜
¯ı ˆ ¯a ˆ ´ ˆ ˜ ˆ `’
khác: ne ´ u có gì d ˙ xay ra không theo ý muo˙ thì không nên hoang mang. Xin chia se mot
ˆ
˙
¯ó ’ ´n
ˆ
˙ ˙ ’ ˙ˆ
` ` ` ’
kinh nghiem buon: khi lan d ˆ u tiên tác gia cài Linux trên máy tính d có Windows NT, và ˙
ˆ ˆ ˆ ¯a ¯ã
˙máy tính không the khoi d ng d oc. Không hieu het van d ` tác gia nghı là không
´
ket qua là
ˆ ’ ˆ’ ’’ ¯o ¯u ’ ˆ ’ ˆ’ ´ ´ ¯e
ˆ ˆ ˆ ’ ˜
còn cách gì khác ngoài d nh dang lai o ¯ı ˙’ d a và cài d ˘ t lai tu d `u. Bây gio thì tác gia d hieu là
˙ `’ ¯a `’ ’ ¯ã ˆ’
¯i ˆ ˜ ¯a ˆ
có the phuc hoi lai neu nhu không ˙quyet d nh quá˙vo˙ vàng. Vì vay có the nói rang Werner
ˆ’ `
ˆ ´ ˙ ’ ˙
ˆ ´ ¯i
ˆ ˆi ˆ ˆ’ `
˘
Almesberger ¯úng, ˙ d ˙ khi trong huong dan su˙ dung LILO có d a ra ˙ ng loi khuyên sau cho
˜ ’’ ˙ nhu
’´’ ˆ ¯u’ ˜’ `’
nguoi dùng khi roi vào truong hop khó khan nhu vay:
’ `’ ’ ’ `’ ’ ˘ ˙ ’ ˆ
˙ ˙
6 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
• Không hoang hot. Neu nhu có gì d không làm viec, hãy thu moi cách d ˆ’ tìm ra nguyên
’ ´
ˆ ´ˆ ’ ¯ó ˆ ’’ ¯e
nhân, kiem tra lai nhieu lan thao tác cua mình. Chı sau khi d ˙moi thuc hien các buoc
ˆ’ ` `
ˆ ˆ ’ ˙’
¯ó ´’ ’ ˆ ’´’
’’ ˆ˜i.
sua lo ˙ ˙ ˙
¯o ˆ D˘ ˆ ’`’ ’ ˆ ´
• Hãy d c tài lieu. ¯ ac biet trong các truong hop, khi he thong làm nhung gì ban d c
ˆ ˜’ ¯o
không ˙mong d˙ i. ˙ ˙ ˙ ˙ ˙ ˙
¯o ’
˙
ˆ’ ´
Xin thêm mot loi khuyên pho bien sau: * Hãy xem các tap tin log, tuc là các tap tin ghi
ˆ `’ ˆ ˆ ´’ ˆ
lai su kien cua he ´ ˙ thong (can tìm chúng trong thu muc /var/log).
` ˙ ˙
’ ˆ ’ ˆ ˆ ˆ ’
˙ ˙ ˙ ˙
’’ ˙ ’ ` ’ ´
Nhu d nói o trên, quá trình cài d ˘ t HDH Linux nói riêng không phai là d ˆ tài cua cuon
’ ¯ã ¯a ¯ ¯e ˆ
`
sách. Nguoi dùng can tìm các cuon hu ´’
`’ ´ ˙ong dan tuong ung. Tuy nhiên, tác gia cung muon d a
˜ ’ ’ ´’ ’ ˜ ´ ¯u
’ ˆ ˆ ’ ˆ ˆ ’
ra vài loi khuyên d ˆ’ giúp nguoi dùng d ’a ra quyet d nh trong khi cài d ˘ t.
`’ ¯e ’`’ ¯u ´ ¯i
ˆ ¯a
˙ ˙
´’ ´ ¯u
Thu nhat, d `’ng voi vàng và hãy chú ý d c nhung thông báo se hien thi trên màn hình,
ˆ ˆ ¯o ˜’ ˜ ˆ’
˙ ’ `’ D ˆ’ ˙ ˙
và hãy suy nghı ky khi chon câu tra loi. ¯ e minh chung cho loi khuyên này xin d ’oc ke lai
˜ ˜ ´’ `’ ¯u ’ ˆ’
truong hop khi tác gia cài Red ’ ˙ Hat 7.1, và tu d ng nhan lên nút Next, vì cho rang phuong án
´ ` ˙ ˙
’`’ ’ ’ ¯o ˆ ˆ ˘ ’’
theo mac d nh là d ’ . Ket qua là tác gia không˙the truy cap d ’oc d´ n máy này qua các giao
˘ ˙ ¯i ¯u ´ ˆ ’ ’ ˙
ˆ’ ˆ ¯u ’ ¯e ˆ
thuc ma (telnet, ftp, NFS, Samba), mac dù d cau hình giao ˙dien mang cho máy. Nguyên
´’ ˙ ng ˙ ˘ ¯ã ´ ˆ
˙
ˆ
’’ ˘ ¯i ˙ ’`’ ’’ ¯u ’
nhân là˙trong phuong án theo mac d nh thì tuong lua d ’oc cài d ˘ t, và tuong lua d ¯a
˙ ˙`
’ ’ ’’ ¯óng het các ´ˆ
D ˆ’ ’’
truy cap tu mang. ¯ e mo truy cap
`’ ˙ này, thì trong quá trình cài d ˘ t can chı rõ các dich vu d oc
˙ ˙ ˙ ` ’
ˆ ˆ ¯a ˆ ¯u ’
’
’’
mo. Nhu ˙ ng chúng ta quá voi vàng! Thu hai, tác gia khuyên không nên d `ng ý˙voi viec ˙
˙ ˙ ´’ ’ ˙ ´’ ˆ ’˙ tu
’ ˆ ¯oˆ
’’ ¯o ˙ ` ´
d ˆ ng khoi d ˆ ng vào giao dien d ˆ hoa. Vì cuoi cùng nguoi dùng không khó khan gì khi gõ ˙ ˙
¯o ˆ ¯o ˆ ’`’ ˘
˙ ˙ ˙ ˙
ˆ ˆ ´ ˆ `
câu lenh startx, còn viec cau hình giao dien d ˆ hoa (neu có gì d làm viec không d
ˆ ¯o ´ˆ ¯ó ˆ ¯úng)
˙ oi dùng moi rat khó thành công.
voi ngu `’
´’ ´’ ˆ ´ ˙ ˙ ˙ ˙
’
`
Sau khi làm xong các công viec phòng xa, can quyet d nh se to chuc khoi d ˆ ng nhieu
ˆ ˆ ´ ¯i
ˆ ˜ ˆ’ ´’ ’’ ¯o ˆ`
˙ a (phân vùng) d ’ cài d ˘˙ tuc là can chia o d a thành so ˙
¯ ’ ´
HDH nhu the nào, chuan bi các o d˜
ˆ ˆ’ ˆ’ ¯ı ¯e
ˆ ¯at, ´’ `
ˆ ˆ’ ¯ı˜ ´ˆ
phân vùng ca ´ ˙ ’ ˙
`n thiet. Nhung truoc khi chuyen sang các buoc cu the d ˆ’ chuan bi o d˜a, xin ’ ¯e ’ ’ ¯ı
ˆ ˆ ’ ’´’ ˆ ’´’ ˆ ˆ ˆ
d ’oc nói qua mot chút ve cau trúc cua d˜a và quá trình khoi d ˆ ng HDH. Neu ai d˙ không d ’
¯u ’ ˆ ˆ ´
` ˆ ’ ¯ı ’’ ¯o ˙ ¯ ´ˆ ¯ó ¯u
˙ nhan d ’ d ˙c phan lý thuyet này, thì có the bo qua chúng và chuyen thang d´ n van d `
˜ ¯e ¯o ` ´ ’ ’ ˙ ’ ’
kiên ˆ ˆ ˆ ˆ ˆ ˆ ˘ ¯e ´ ¯e
ˆ ˆ ˆ
chon chuong trình ˙ khoi d ng.
’’ ¯o
’’ ˆ
˙ ˙
2.3 ’’ ¯ ˆ
Phân vùng trên d˜a và quá trình khoi dong
¯ı
˙
2.3.1 ´
ˆ ´
ˆ ’ ¯ı
The nào là cau trúc "hình hoc cua d˜a"
˙
’ ¯o ´ ¯ı ´’
ˆ `
ˆ ¯ı ’ ´’ `’ `
Nhu ban d c biet, d˜a cung gom vài d˜a có phu lop tu tính, nam trên cùng mot truc và quay
˘ ˆ
˙ toc lon. Doc/Ghi du lieu d oc thuc hien boi các d `u d c nam giua ˙ ˙ a này, di
voi van ´ ’ ¯ ˙ ´ ’’ `
´’ ˆ ˆ ˜’ ˆ ¯u ’ ’ ’ ˆ ¯a ¯o
ˆ ˘ ˜’ các d˜¯ı
chuye ˙n tu tâm d a ra rìa ngoài cua d ˙ Vòng tròn d `u d c ve ra ˙
’ `’ ˙ ˙’ ˙ ˙
ˆ ˜
¯ı ¯ıa.
˜ ¯a ¯o ˜ trên các d˜a khi quay quanh
ˆ ¯ı
ˆ ’ ` ˙ˆ
˘ `
chúng goi là rãnh (track), còn tap hop các rãnh nam chong lên nhau goi là cylinder. Moi ˜
ˆ
˙ ˙ có ˙the ghi vào moi sector 512 byte thông tin. Vì the d ˘ c
˙
rãnh lai chia thành các sector, và ˆ’ ˜
ˆ ´ ¯a
ˆ
dˆ ˙’
’m cua mot o d˜a thuong là tap hop ba sô: so cylinder/so rãnh trong cylinder/so sector trên
’ ¯ı ´ ´ ´ ˙
¯ie ˆ ˆ ’`’ ˆ ’ ˆ ˆ ˆ
rãnh hay còn viet tat là C/H/S ˙ chu cái d ˆ u tiên cua các thuat ngu Tieng Anh tuong ung:
˙ ´ ´
ˆ ˘ (ba ˙ ˜’ ¯a` ’ ˆ ˜’ ´ ˆ ’ ’ ´’
Cyliner/Head/Sector). Ba so này goi là cau trúc "hình hoc cua d˜ ¯ ˜ ´’ ´
´ ´ ’ ¯ı ˙a". Dıa voi cau trúc hình hoc
ˆ ˆ ˆ
˙
C/H/S có dung luong C*H*S*512˙byte.
’’
˙
˙ ´ ´ ´’ ¯o ´ ’
¯ ˜a cung là các thiet bi khoi, tu là d ˙ c và ghi thông tin theo các khoi, và kích thuoc nho
Dı ´’ ˆ
˙
ˆ ˆ ’´’
´ ’
ˆ ´ `
nhat cua khoi bang mot sector (512 byte). ¯ e
ˆ ˘ ˆ Dˆ ’ có the ghi thông tin lên d˜a, can d ˘ t d ˆ u d˜a
ˆ’ ¯ı `
ˆ ¯a ¯a ¯ı`
d ˙ ´ ˆ `
’ cho controller biet can ghi thông tin này vào sector nào. Sector d ’oc ˙
¯úng vi trí, tuc là chı
´’ ˆ ¯u ’
d ˙ ’ ´ ´’ ’ ´ ´’ ’ ¯a ¯o ` ´ ´’ ’ ˙
¯ánh d a chı theo so thu tu cylinder, so thu tu d ˆ u d c (hay rãnh) và so thu tu sector trên rãnh.
¯i ˆ ˆ ˆ
˙ ˙ ˙ ˙ ˙
¯ı ’’ ¯ ˆ
2.3 Phân vùng trên d˜a và quá trình khoi dong 7
˙
2.3.2 ’ ’ ¯ı
Phân vùng và bang phân vùng cua d˜a
ˆ ´ ˆ’ ¯ı
Trong các he thong Intel o d˜a thuong d ’oc chia thành các phân vùng. Rat có the nguyên
ˆ ’`’ ¯u ’ ´
ˆ ˆ’
˙ phân vùng là nguyên nhân li˙ su: các phiên ban MS-DOS d `u tiên không the
’
nhân cua viec ˆ ch ’’ ’ ¯a
ˆ ˆ’
˙ c các d a lon, mà dung luong˙ d a lai phát trien nhanh hon kha nang cua DOS.
’’
su dung d ’o ¯u ’ ¯ı ´’
˜ ˜
’ ’ ¯ı ˆ’ ’ ’ ˘ ’
Khi d ¯ã˙ d nghı ra viec chia o d a thành các phân vùng. De làm d oc d `u này, trong sector
˙ ’ ¯ı ˙ ˙ ’
¯ó ˜ ˆ ˆ ˜ ¯ ˆ ¯u ’ ¯ie
’ ˆ
˙ ˙´ ’
´ˆ ’ ¯ı ´
ˆ ’ ` ´ ˆ’ ¯ı
so 0 cua d˜a (sector so 0 cua rãnh d ˆ u tiên trong cylinder so 0) ghi nho bang chia o d˜a thành
¯a ˆ ’
các phân vùng (partition table). Mo ˜i phân vùng d ’oc dùng nhu mot d˜a vat lý riêng re. Mot
ˆ ¯u ’ ’ ˆ ¯ı ˆ ˜ ˆ
truong hop nói riêng d là trong các phân vùng khác ˙ nhau có the˙ cài d ˘ t˙ các he d `u hành
’ ˙
’`’ ’ ¯ó ˆ ¯a ˆ ¯ie ˆ
khác nhau. ˙ ˙ ˙
’ ´’ ’ ˜
ˆ ’
Bang phân vùng chua 4 ban ghi 16 byte cho 4 phân vùng chính. Moi ban ghi có cau trúc ´
ˆ
nhu sau:
’
kênh giao tác
struct partition {
char active; /* 0x80: phân vùng kích hoat, 0: không kích hoat */
` ˙ ˙
char begin[3]; /* CHS sector dˆu tiên, 24 bit
¯a
char type; /* loai phân vùng (ví du, 83 — LINUX_NATIVE, 82 — LINUX_SWAP) */
˙ ´ ˙
char end[3]; /* ˆ
CHS sector cuoi cùng, 24 bit */
int start; /* ´ ’ `
so cua sector dˆu tiên (32-bit, tính tu 0) */
ˆ ¯a `
’
int length; /* ´
ˆ
so sector có trong phân vùng (32 bit) */
};
’ ¯ı ’`’ ¯u ’ ’’
Bang phân vùng d˜a thuong d ’oc tao boi chuong trình fdisk. Trên HDH Linux ngoài
’’ ¯
chuong trình fdisk "truye
’’ `n thong" (tuy˙vay rat khác so voi chuong trình fdisk trong MS-DOS
ˆ ´
ˆ
˙
ˆ ´ ˆ ´’ ’’
˙
và Windows), còn có hai chuong trình d ˆ’ làm viec voi phân vùng d˜a: cfdisk và sfdisk.
’’ ¯e ˆ ´’ ¯ı
’’ ´ˆ ’ ’ ˙ ¯e
Chuong trình cfdisk, giong nhu fdisk chı dành d ˆ’ làm viec voi bang phân vùng d˜a: nó ˆ ´’ ’ ¯ı
không quan tâm chú ý d ˆ ´ n thông tin có trên d˜a. Chı khác bie˙t voi fdisk o giao dien thuan
¯e ¯ı ’ ˆ ´’ ’’ ˆ ˆ
˜ ˙ ˙ ˙’
ˆ ’ ˆ ’’ ˆ ˆ ´
tien: chı dan su dung lenh và he thong trình d ’n (thuc d ’n). Chuong trình sfdisk có vài kha
ˆ ¯o ’ ¯o ’’
na˙ng cao hon, ví ˙ , cho phép ˙
˘ du ˙ thao tác trên các phân ˙ vùng d có cua d a. ’ ¯ı
’ ¯ã ˜
˙
’’ dung truong begin và end cua bang phân vùng và Interrupt 13 cua BIOS (Int 13h)
’ ’ ’
DOS su ’`’
d ˆ’ truy cap to ¯ı ˙i d a, vì the không the su dung d a có dung luong lon hon 8,4 Gbyte, ngay ca
¯e ˆ ´’ ˜ ´
ˆ ˆ’ ’’ ¯ı˜ ’’ ´’ ’ ’
˙
voi các BIOS moi (ve ˆ
´’ ´’ ˆ ` van d ˆ này se nói d˙ n o sau), còn phân˙ vùng thì không the lon hon 2,1
´ ¯e ` ´ ’’ ’ ´’ ’
˜ ¯eˆ ˆ
´ ’ ˆ ´
Gbyte (nhung d là do han che cua he thong tap tin FAT16).
’ ¯ây ˆ ˆ ˆ
’ ’’ ˙ ˙ ˙ ’ ’ ˜
Linux thì chı su dung truong start và length cua bang phân vùng d˜a và ho tro các phân
’ `’ ¯ı ˆ ’
vùng chua d ˆ´’ ¯e ˙
´ n 232 sector, tuc là dung luong có the d t 2 Tbyte
´’ ’ ¯a ˙
’’ ˆ
˙ ˙
’ ˆ’ ¯ı ’
Vì trong bang chia o d˜a chı có 4 dòng cho các phân vùng, so phân vùng chính trên d˜a ´
ˆ ¯ı
` ´ ˆ’ ´’ ’
ngay tu d ˆ u dã han che: không the lon hon 4. Khi mà 4 phân vùng tro thành ít, thì nguoi ta
`’ ¯a ˆ ’’ ’`’
sáng che ra phân ˙
´
ˆ ´
vùng lôgíc. Mot trong so các phân vùng chính tro thành mo rong (loai phân
ˆ ˆ ’’ ’ ˆ
’
˙
ˆ ’ ´ ’`’
vùng - 5 hay F hay 85 trong he co so muoi sáu). Và trong phân vùng mo rong nguoi ta tao ra
ˆ ’’ ˆ ˙ ’`’ ˙
˙
các phân vùng lôgíc. Phân vùng mo rong không d ’oc su dung truc tiep mà chı dùng d ˆ’ ghi ˙ ˙
’’ ˆ ¯u ’ ’’ ’ ´ ˆ ’ ¯e
các phân vùng lôgíc. Sector d ˆ u tiên cu ` ˙ ’ a phân vùng mo rong ghi nho bang phân vùng voi
˙ ’ ˙ ˙ ´’ ’ ´’
¯a ’ ˆ
´ ¯a `
bon d ˆ u vào: mot dùng cho phân vùng lôgíc, mot cho phân vùng mo rong khác, còn hai cái ˙ ’’ ˆ
ˆ ˆ ˆ
còn lai không d ˙oc su dung. Moi phân vùng mo ˙ ˆ ng có mot bang chia ˙ ’ a mình, trong bang
¯u ’ ’’
’ ˜
ˆ ’’ ro ˆ ’ cu ’
này, cu˙ ng giong nhu trong phân vùng mo rong chính, chı su dung có hai dòng d ’ d a ra mot
´ ˙ ˙ ’’ ˆ ˙ ’ ˙’
’
˜ ˆ ’ ¯e ¯u
ˆ ’ ˆ
phân vùng lôgíc và mot phân vùng mo rong. Nhu vay, thu d ˙oc mot chuoi các mat xích tu
ˆ ’’ ˆ ˙ ’ ˆ ¯u ’ ˆ
’ ˜
ˆ ´
˘ ˙`
’
’ ´ ˙
bang phân vùng, mat xích d ˆ u tiên mô ta
˘ ` ’˙ ba phân vùng chính, và moi mat xích tiep theo –
˙ ˙ ˙˜ ´ ´
¯a ˆ ˘ ˆ
mot phân vùng lôgíc và vi trí cua bang tiep theo.
ˆ ’ ’ ´
ˆ
˙ ˙ ´ ˜
Chuong trình sfdisk trên Linux cho thay toàn bo chuoi này:
’’ ˆ ˆ ˆ
˙
8 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
kênh giao tác
[root]# sfdisk -l -x /dev/hda
Disk /dev/hda: 784 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/hda1 * 0+ 189 190- 1526143+ 6 FAT16
/dev/hda2 190 783 594 4771305 5 Extended
/dev/hda3 0 — 0 0 0 Empty
/dev/hda4 0 — 0 0 0 Empty
/dev/hda5 190+ 380 191- 1534176 6 FAT16
— 381 783 403 3237097+ 5 Extended
— 190 189 0 0 0 Empty
— 190 189 0 0 0 Empty
/dev/hda6 381+ 783 403- 3237066 7 HPFS/NTFS
— 381 380 0 0 0 Empty
— 381 380 0 0 0 Empty
— 381 380 0 0 0 Empty
´ ´ ´
So phân vùng lôgíc theo nguyên tac không han che, vì moi phân vùng lôgíc có the chua
ˆ ˘ ˆ ˆ˜ ˆ’ ´’
˙ Tuy nhiên trên thuc the van có nhung han
’
bang phân vùng và các phân vùng lôgíc cua mình. ’ ’ ´ ˆ ˆ ˜ ˜’
che ’
´ . Ví du, Linux không the làm viec voi hon 15 phân vùng trên các d˜a SCSI và hon 63 phân ˙ ˙
ˆ ˆ ˆ ´’ ’ ¯ı ’
˙
vùng trên d˜a IDE. ˙
¯ı
’’ ˆ
Phân vùng mo rong trên mot d˜a vat lý, hay trong mot phân vùng mo rong chua nó (có
ˆ ¯ı ˆ ˆ ’’ ˆ ´’
the ’ goi là "me") chı có the làm mot: không mot chuong trình phân chia o d˜a˙nào trong so d
ˆ ’ ˙ ’
ˆ
˙
ˆ
˙
ˆ ’’
˙
ˆ’ ¯ı ´ ¯ã
ˆ
˙ ˙ tuong tu) có the tao˙ thêm mot phân vùng mo rong thu hai.
˙
có (fdisk và ’ ’ ’ ˆ’ ˆ ’’ ˆ ´’
˙ ˙’ ˙ ˙
ˆ’ d˜a trên Linux nói riêng (o d˜a vat lý) d ’oc truy cap qua tên cua thiet bi: /dev/hda,
O ¯ı ˆ ¯ı ˆ ¯u ’ ˆ ’ ´
ˆ
/dev/hdb, /dev/sda, v.v. . . Các phân
˙ vùng˙ chính có thêm so 1-4 trong˙ tên thiet bi:
˙ ´ ´
ˆ ˆ
/dev/hda1, /dev/hda2, /dev/hda3, còn phân vùng lôgíc thì có các tên: /dev/hda5, /dev/hda6, /dev/
˙
´ `
˘ ¯a `’ ´ ˆ `’ ˜’ `
¯e ˆ ¯e ’’ ˆ ˆ’
. . . (bat d ˆ u tu so 5). Tu nhung gì d ˆ cap d´ n o trên có the suy ra tai sao lai có the bo qua các ˆ’ ’
tên nhu /dev/hda3 hay /dev/hda4 ¯o ˙ (d n gian là phân vùng chính thu˙ba và thu tu không
’ ˙ ´’ ´’ ’
’ ’
d ’oc tao ra) và ngay sau /dev/hda2 ban d c tha
¯u ’ ¯o ´ y /dev/hda5 (phân vùng lôgíc trong phân
ˆ
vùng mo rong /dev/hda2), và sau d ˙ viec d
˙ ˙’
’ ˆ
˙ ´
¯ó thì ˆ ¯ánh so lai theo thu tu thông thuong.
ˆ ´’ ’ ’`’
˙
Trong Windows các phân vùng lôgíc nha ¯u ’ ˙ n d oc tên (chu cái), bat d `u tu chu cái cuoi
˙ ˙´˘ ¯a `’ ˜’ ´
ˆ ’ ˜’ ˆ ˆ
dùng dành cho phân vùng chính. Ví du neu mo ¯ı ’ ´ ˙ t d a cung có hai phân vùng chính (C: và D:)
˙ ´
ˆ ˆ ˜
’’ ˆ ˙ ˙’
và mot phân vùng mo rong, trong phân vùng mo rong tao ra hai phân vùng lôgíc, thì nhung
ˆ ’ ˆ ˜’
phân ˙vùng lôgíc này se ˙ oc d ˘ t tên E: và F:. Xin nói thêm, trong Windows NT và 2000/XP
˙ ˙
˜ d ’ ’ ¯a
¯u
có the thay d ˆ’i tên cua các˙phân vùng d˜a.
ˆ’ ¯o ’ ˙
¯ı
2.3.3 ’’ ¯ ˆ
Quá trình khoi dong HDH công ty Microsoft
¯
˙
Dù he d ˆ u hành có là gì, thì d ˆ’ có the bat d ˆ u d ˆ u khien máy tính, can nap HDH vào bo
`
ˆ ¯ie ¯e ˆ’ ´ ¯a ¯ie
˘ ` ` ˆ’ `
ˆ ˆ
´’ ˙ the hãy xem xét qua quá trình khoi d ng cua các HDH khác nhau. Chúng ¯ta chı quan
nho. Vì ´ ’’ ¯o ’ ˙ ’ ˙
ˆ ˆ ¯
’’ ¯o `’ ˆ’ ¯ı ´’
tâm d´ n viec khoi d ˆ ng tu o d˜a cung, nên se ˙không xem xét d´ n viec khoi d ng tu d a mem,
’’ ¯o `’ ¯ı `
¯e
ˆ ˆ ˜ ¯eˆ ˆ ˆ ˜ ˆ
CD-ROM và ˙ qua mang. Hãy bat d `u tu MS-DOS và MS Windows˙ cu (xin d ` ng quên rang,
˙ ´ ˆ
˘ ¯a `’ ˙ `
˘
˜ ¯u’
viec phát trie ˙
’n và hoàn thien máy tính cá nhân song song voi su phát trien cua HDH cua
´’ ’ ’ ’ ’
ˆ ˆ ˆ ˆ ¯
˙
Microsoft và nhung quye ¯i ´ t d nh su dung trong các HDH này có a˙ huong manh d´ n quyet
˙ ’’ ’ nh ’’’ ´
˜’ ˆ ¯ ¯e
ˆ ˆ
˙ ´ t bi). ˙ ˙
’ ˆ’
d nh cua các nhà phát trien thie
¯i ˆ
˙ ˙
¯ı ’’ ¯ ˆ
2.3 Phân vùng trên d˜a và quá trình khoi dong 9
˙
’ ¯o ´ ˆ ˆ `
Nhu ban d c biet, khi bat máy tính d ˆ u tiên se chay chuong trình POST (Power On Self
¯a ˜ ’’
˙ong ˙trình xác d nh dung luong bo nho, thu ˙nghiem bo nho, và xác d nh các thành
˙
Test). Chu ’ ’ ¯i ’’ ˆ ´’ ’’ ˆ ˆ ´’ ¯i
`
phan khác (bàn phím, o ´’
ˆ ˆ’ cu˙ng. . . ), kho˙ d ˆ ng các the adaptor. Trên màn hình thu˙’ng xuat hien
’’i ¯o ˙ ’ ˙ ˙
’o
` ´ ˆ
ˆ
các thông báo ve ˆ ’’ ˆ ´’ ˆ `˙ ˆ
` dung luong bo nho, ve viec thu nghiem bo nho, danh sách các thiet bi nhan
’’ ˆ ˆ ´’ ´
ˆ
˙
ˆ
ra (o d˜a cung và mem, bo xu lý, cong COM và v.v. . .˙). ˙
ˆ’ ¯ı ´’ `
ˆ
˙
ˆ ’’
˙ ’
ˆ
˙ ˙ ˙
˙ ’’ ´
ˆ ˆ ˆ ’
Sau khi hoàn thành viec thu nghiem POST goi Int 19h. Công viec cua Int 19h là tìm thiet ˆ
’’ ¯o
bi khoi d ˆ ng. Viec tìm kie ˙ m thuc hien theo thu ˙ xác d nh trong Setup BIOS và theo cách
´ ˙ ´’ tu ˙
ˆ ˆ ’ ˆ ’ ¯i
˙˘ ˙ ´˙ ’ ´˙ ˙ ´ ¯ı ˙ ˆ’ ’’ ¯o
˙
tham dò sector so 0 cua các thiet bi tuong ung. Neu d˜a có the khoi d ˆ ng, thì trong sector so ´
ˆ ˆ ’ ’ ´’ ˆ ˆ
0 cu ¯ı ’ ’ ¯o ˙
’ a d˜a có ban ghi khoi d ˆ ng chính – Master Boot Record (MBR). Hai byte cuoi cùng cua ˙ ´ ’
’ ˆ
˙´
´
ˆ ˆ ˆ ˆ ´
MBR – "so màu nhiem", là dau hieu cho biet sector có MBR, và theo d d˜a có the khoi d ˆ ng.
ˆ ¯ó ¯ı ˆ’ ’’ ¯o
´ ˙ ˙ ´ ’ ’’ ˙
Ngoài "so màu nhiem" MBR còn chua bang phân vùng d˜a d nói o trên, và mot chuong trình
ˆ ˆ ’ ¯ı ¯ã ˆ ’’
nho – trình khoi d ˆ˙ng chính, kích thuoc chı có 446 (0x1BE) byte.
’ ’ ¯o
’ ’´’ ’
˙
’ ˙ ´ ´ ’ ’’ ¯o
Bang 2.1 cho thay cau trúc cua sector khoi d ˆ ng chính sau khi cài d ˘ t Windows.
ˆ ˆ ¯a
˙ ˙
’ ´ ’ ’’ ¯o
Bang 2.1: Cau trúc cua sector khoi d ˆ ng chính
ˆ
˙
ˆ’
Dich chuyen Noi dung
ˆ
˙ ˙ ’ ’’ ¯o
0x000 Mã cua trình khoi d ˆ ng chính
˙
0x1BE ’ ˆ’ ¯ı
Bang phân vùng o d˜a
0x1FE ´
"So màu nhiem" (0xAA55)
ˆ ˆ
˙
MS-DOS, Windows95 và NT ghi nho DOS MBR trong khi cài d ˘ t. Ngoài ra cung có the
´’ ¯a ˜ ˆ’
’
tao MBR cua MS voi câu lenh DOS sau: fdisk /mbr.
´’ ˆ ˙
˙ Xin tro lai voi quá trình˙ khoi d ng. Int 19h cua BIOS nap trình khoi d ng chính vào bo
’’ ´’ ’’ ¯o ’ ’’ ¯o
ˆ ˆ ˆ
nho máy tính ˙ và chuyen quyen d `u khien cho chuong trình này. Nhung ˙ ong trình "bé
’ ` ¯ie ˙ ’ ˙ ˙
´’ ˆ ˆ ˆ ˆ ’’ ’ chu ’ ’
¯u ’ ˘ ’’ ¯o ´ ’ ˜’
nho" này không d ’ kha nang khoi d ˆ ng HDH; tat ca nhung gì mà nó có the làm – d là nap
’ ˆ ˆ’ ¯ó
vào bo nho chuong trình manh hon – ˙ trình¯khoi d ng thu hai.
’’ ¯o ˙
ˆ ´’ ’ ’ ’ ˆ ´’
˙
D ˆ’ ` ˙ ’ ˙
¯ e làm d ’oc d ˆ u này, nó tìm trong bang phân vùng kích hoat và d ˙ c vào bo nho trình
¯u ’ ¯ie ¯o ˆ ´’
khoi d ˆ ng thu ˙
’’ ¯o ´’ hai, bat d ˆ u tu sector lôgíc d ˆ u tiên cua phân vùng˙ kích hoat. Hãy˙ chú ý d´ n
´ `
˘ ¯a `’ ¯a` ’ ¯eˆ
cum tu ˘ ˆ ˙ "bat d `u tu". Vì trình khoi d ng thu hai trên các he thong khác nhau có d dài khác
`’ ´ ¯a `’ ’’ ¯o ´’ ´ ˙
ˆ ˆ ˆ ¯o ˆ
˙
nhau. ˙ ˙ ˙
¯u ’ ¯i ’´’ ˆ ´
Trong phân vùng d ’oc d nh dang duoi he thong tap tin FAT, trình khoi d ˆ ng thu hai chiem
ˆ ˆ ’’ ¯o ´’ ´
ˆ
mot sector (512 byte). Trong ˙ ˙ phân vùng d ˙ dang ˙duoi he thong tap tin NTFS, trình khoi
˙ ´ ˙ ’’
ˆ ¯inh ’´’ ˆ ˆ ˆ
dˆ ˙ng thu hai chiem vài sector.
´’ ´ ˙ ˙ ˙ ˙
¯o ˆ
˙ Trình khoi d ng thu hai nap lop chuong trình d `u tiên, can thiet cho viec khoi d ng he
’’ ¯o ´’ ´’ ` ´ ’’ ¯o
ˆ ’’ ¯a
ˆ ˆ ˆ ˆ ˆ ˆ
`
d ˆ u hành. Trong ’`’ ˙ truong hop MS DOS chuong trình khoi d ng d ng nap IO.SYS theo d a chı
˙ ’’ ¯o ¯o ˙ ˙ ˙’
¯ie ’ ’’ ˆ ˆ ¯i
700h, sau d MSDOS.SYS ˙ và chuyen quyen d `u khien cho SYSINIT cua môd IO.SYS.
’ ` ’ ˙ ˙ ˙ ’ ˙
¯ó ˆ ˆ ¯ie ˆ ˆ ¯un
Ne ´ u vì lý do nào d không tìm thay trên d˜a phân vùng kích hoat, thì quá trình kho d ˆ ng
ˆ ¯ó ´ˆ ¯ı ’’ ¯o
˙ ´ m khi su dung, nhung ˙
˜ ´ ´’ ˆ ’’
se tiep tuc voi viec xu lý Int 18h. Truong hop này trên thuc te rat hie
ˆ ’`’ ’ ’ ´ ´ˆ ˆ ˆ ’’ ’
’ ˘
kha nang the ˙
˙ này có ˙ ’ có ích trong truong hop nào d Trong khi khoi d ng tu xa, khi he d `u ˙ ’’ ¯o ˙
ˆ ’`’ ’ ¯ó. ˆ `’ ˆ ¯ie ˆ
hành kho ¯o ˙
’’i d ˆ ng tu máy chu, thì Int này d ’oc POST chuyen huong lên ROM cua cac mang.
`’ ’ ’ ’´’ ˙ ’ ˙
¯u ’ ˆ
¯Doi voi các HDH khác cua Microsoft thì quá trình khoi d ˆ ng dien ra tuong tu.˙
´ ´’ ˙
ˆ ¯ ’ ˙ ’’ ¯o ˜
ˆ ’’ ’
˙
˙ ˙
’’ ¯o ´
• Windows95 khoi d ˆ ng giong nhu DOS nhung thay the IO.SYS và MSDOS.SYS boi
ˆ ’ ’ ´ˆ ’’
các tap tin cua mình. ’ ˙ Các tap tin DOS d oc giu lai duoi các tên tuong ung IO.DOS và
ˆ ˆ ¯u ’ ˜’
’ ’´’ ’ ’ ´’
MSDOS.DOS. Khi ban d ˙ chon khoi d ˆ ng DOS, Windows95 se d ˆ’i tên các tap tin
˙
¯o c ’’ ¯o ˙ ˙
˜ ¯o ˆ
` ˙ rong w40 và phuc ˙hoi tên ban d `u cua các tap tin he thong cua
˙ ˙ ` ˙ ’
’
cua mình voi phan mo ˆ
´’ ˆ ’’ ˆ ¯a ’
ˆ ˆ ˆ ´ ˆ
DOS. Quá trình khoi d ˆ ng ´ ˙ tiep tuc voi viec nap IO.SYS. Nhu the, sector khoi d ng cua
˙ ˙ ˙
’’ ¯o ˆ ´’ ˆ ’ ´ ˆ ’’ ¯o ˆ ’
DOS và Windows95 là ˙ nhu nhau. ˙ ˙ ˙ ˙
’
10 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
’’ ´ ’
• Windows NT4 su dung MBR DOS, nhung thay the ban ghi khoi d ˆ ng cua phân vùng
’ ˆ ’’ ¯o ’
`
kích hoat bang cách ˙thay the NTLDR vào cho IO.SYS. Dây là mot ˙ ong trình mang
´ ˜
˘ ˆ ˆ ¯ ˆ chu ’
’
và có the làm d ’oc nhieu thu. Ví du, có the tìm tap tin boot.ini˙ và neu nhu tham˙ so
˙’
ˆ ¯u ’ `
ˆ ´’ ˆ’ ˆ ´
ˆ ’ ´
ˆ
timeout lon hon 0,
´’ ’ ˙ thì d a ra trình d ˙n (thuc d n) khoi d ng. ˙ ’
¯u ’ ¯o’ ’ ¯o ’ ’ ¯oˆ
˙ ˙
˜
ˆ ’ ˆ`
Moi dòng cua phan [operating systems] trong tap tin boot.ini xác d nh mot ˆ ¯i ˆ
phuong án (mot HDH) kho ¯o
’’ ˆ ¯ ’’i d ˆ ng và d ’oc viet theo mau sau: ˙
¯u ’ ˆ ´ ˜
ˆ
˙ ˙
d a_chı˙
¯i ’ ˙ ¯o
’
˙ ´
’_trình_khoi_dˆng_thu_hai="tên_goi_cua_phuong_án"
’ ’ ’’
˙ ’ ’ ’’ ¯o ˙ ˙ ’
’ là mot phân vùng cu the nào d cua d˜a cung
¯ ˙a chı cua trình khoi d ˆ ng thu hai có the
Di ´’ ˆ ˆ ˆ ¯ó ’ ¯ı ˜
’ ˆ ’’i d ˆ ng. Duoi ˙d là mot ví du tap tin˙ boot.ini:
nhu tap tin kho ¯o ’´’ ¯ây ˆ ˆ
˙
˙ ˙ ˙ ˙ ˙
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)WINNT="Windows NT Workstation 4.00 VIE
multi(0)disk(0)rdisk(0)partition(3)WINNT="Windows NT Workstation 4.00 VIE
C:="Microsoft Windows"
C:BOOTSECT.LNX="Linux"
´ ˜ ’’ ¯o ’ ¯u ’ ’
Neu nguoi dùng chon NT, thì se khoi d ˆ ng theo d a chı phân vùng d ’oc chı trên dòng d ˆ u
ˆ ’`’ ¯i `
¯a
tiên. Trên dòng tuong u ˙ ng voi phuong án ˙Microsoft˙Windows, chı d a ˙ "C:", vì tên cua
’ ¯u ra ’
’ ’ ´’ ´’ ’’ ’
ˆ ’’ ¯o ¯u ’ ´
tap tin khoi d ˆ ng d ’oc lay theo mac d nh: bootsect.dos. Tap tin d ’oc nap vào bo nho và quá
ˆ ˘ ¯i ˆ ¯u ’ ˆ ´’
˙ khoi d ng d oc˙tiep tuc giong nhu khi ban ghi khoi d˙ ng d oc nap boi mã chuong trình
˙
trình ’’ ¯o ¯u ’ ˆ ´ ´ ˙ ˙’ ’ ’’ ¯o ¯u ’ ˙ ˙ ’ ˙
ˆ ’ ˆ ˆ ’ ’ ’’
tu MBR. ˙
`’ ˙ ˙ ˙ ˙ ˙
D´ ´’ ˆ ’’ ¯o ˆ ´ ˆ’ ’’ `
¯ó. ’ ˆ
¯ oi voi viec khoi d ˆ ng các he thong khác, có the su dung cách d Chı can thêm vào
ˆ ˆ
˙ chua liên ket d´˙n tap tin khoi d ng khác. ˙Khi chon các dòng này se khoi
˙ ´ ¯e ˆ ’’ ¯o
boot.ini các dòng ´’ ˆ ˆ ˆ ˜ ’’
d ˆ ng HDH tuong ung. Trong ví du trên ˙ Linux cung d oc khoi d ng˙ theo các này. Trong tap
˙ ’’ ¯o
¯o ¯ ’ ’ ´’ ˜ ¯u ’
’ ˆ ˆ
˙ C:BOOTSECT.LNX can ghi ˙noi dung cua ban ghi khoi d ng, tao boi Linux (nói d ˙
tin ` ’ ’ ˙ ’ ˙ ’’
ˆ ˆ ’ ¯oˆ ¯úng
’’ ¯o ˙ ’ ’
hon – LILO, trình khoi d ˆ ng tiêu chuan cua Linux). ˙ ˙
’ ˆ
˙
2.3.4 ´ ¯ˆ ´’
ˆ `
Van de voi các d˜a lon
¯ı ´’
’ ¯a ` ’
Trên MS-DOS và các phiên ban d ˆ u tiên cua Windows truy cap toi d˜a (trong d có ca buoc
ˆ ´’ ¯ı ¯ó ’ ’´’
` ’ ´’ ˙ ’
’’i d ˆ ng d ˆ u tiên cua HDH) d ’oc to chuc qua Int 13 (Int 13h) cua BIOS. Khi này su dung
kho ¯o ¯a ’ ¯ ’’
¯u ’ ˆ
su d ˙ d a chı sector trên d˜a trên co so C/H/S (xem trên). Chính xác hon:
’ ¯ánh ¯i ’ ¯ı
˙
’ ’’ ’
˙
˙ ˙
• AH — chon thao tác;
˙
’ ’ ’ ´
• CH — 8 bit nho hon cua so cylinder;
ˆ
’ ’ ´’ ´’ ’ ´ ˆ ’ ’ ´’ ´
• CL — 7-6 bit tuong ung bit lon cua so cylinder, 5-0 tuong ung so sector;
ˆ
´ ’ ¯a ¯o
`
• DH — so cua d ˆ u d c;
ˆ
˙
´ cua d˜a(80h hay 81h).
• DL — so
ˆ ’ ¯ı
`
ˆ ’ `
(Can luu ý rang viec d
˘ ´ ´ ¯a `’
˘ `
ˆ ¯ánh so cylinder vat lý và rãnh thuong bat d ˆ u tu 0, còn sector trên
ˆ ˆ ’`’
rãnh d ´ bat d ˆ u tu 1). Tuy nhiên trên ˙thuc te so d ˆ u d c không quá 16, còn so sector
¯ánh so ˘
ˆ ´ ¯a ˙`’
` ´ ´ ¯a ¯o
’ ˆ ˆ ` ´ˆ
˙ d ’ chı ra cylinder, BIOS van không the làm
˙
trên rãnh – không quá 63, và dù có dùng 10 bit ¯e ’ ˆ ˜
ˆ ˆ’
viec voi d˜a dung luong lon hon 1024*63*16*512 = 528 Mbyte.
ˆ ´’ ¯ı ’ ’ ´’ ’
˙ De vuot qua han ˙ ´ này, nguoi ta áp dung nhieu cách "láu cá" khác nhau. Ví du, Extended
’ ’’ che `
¯ ˆ ˙ ˆ ’`’ ˆ
CHS (ECHS) hay ˙"Large disk support" (d˙ khi còn goi là "Large") su dung ba bit chua dùng
’’ ˙
¯ôi ’
˙ ˙
’ ’’ ¯ ˆ
2.4 Lua chon trình khoi dong 11
˙ ˙ ˙
d´ n cua so thu tu d ˆ u d c d ˆ’ tang so cylinder. Cách này cho pehsp su dung cau trúc "hình
¯e ’ ´ ´’ ’ ¯a ¯o ¯e ˘
ˆ ˆ ` ´
ˆ ’’ ´
ˆ
’
hoc gia mao cua ¯ı ’ ˜ ˙ d a" voi 1024 cylinder, 128 d `u d c và 63 sector/rãnh. Bien d ’i Extended
˙
´’ ˙ ´
¯a ¯o
ˆ ˆ ¯o ˆ
˙ thành d a chı CHS thuc (có the chua d´ n 8192 cylinder) d oc BIOS thuc hien. Cách này
CHS ˙ ’ ’ ´’ ¯e ˙
¯i ’ ˆ ˆ ¯u ’
’ ’ ˆ
cho phép làm ˆ ´’ ¯ı ˙ viec voi d a có dung luong d´ n 8192*16*63*512 = 4 227 858˙ 432˙byte hay 4,2
˙ ˙
˜ ’ ’ ¯e ˆ
Gbyte. ˙ ˙
’ ˆ’
Nhung các nhà phát trien càng ngày càng tang mat d ˆ ghi cua d˜a, so d˜a và so rãnh, và
˘ ˆ ¯o ’ ¯ı ´ ¯ı ˆ ´ˆ
còn phát minh ra các phuong pháp khác d ˆ’ tang dung ’o ˘ ˙ lu˙ ng d a. Ví du, so sector trên rãnh
´
’’ ¯e ’ ¯ı ˜ ˆ
không còn co d nh mà tro thành khác nhau trên các rãnh ˙
´ ¯i
ˆ ’’ ˙
khác nhau (trên các rãnh nam gan `
˘ ˆ`
rìa ngoài cu ¯ı ˙ ´
’ a d˜a, dài hon, so sector d ’oc tang lên). Ket qua là bo ba so C/H/S không còn ´ ’ ´
’ ˆ ¯u ’ ˘ ˆ ˆ ˆ
’
phan ánh d ´ ’ ¯ı˙
¯úng cau trúc "hình hoc cua d˜a", và các phiên ban BIOS cu không the ho tro truy
ˆ ’ ˙
˜ ˆ’ ˆ ’˜
cap toi toàn bo không gian d˜a. ˙ ˙
ˆ ´’ ˆ ¯ı
˙ ˙
Khi d nguoi ta nghı ra phuong pháp khác d ˆ’ làm viec voi các d˜a lên qua Int 13h - d
¯ó ’`’ ˜ ’’ ¯e ˆ ´’ ¯ı ¯ánh
’ ´ ’ ˙
¯i ˆ ¯u ` ’ ˘
d a chı các khoi theo d ’ong thang ("Linear Block Addressing" hay LBA). Không d sâu vào ¯i
˙ ´
ˆ’ ` ´ ’
chi tiet, có the nói rang tat ca sector trên d˜a d ’oc d
ˆ ˘ ˆ ´ ˆ ˆ ’ ´ ¯a `’
`
¯ı ¯u ’ ¯ánh so mot cách tuan tu, bat d ˆ u tu sector
ˆ ˘ `
` ´
d ˆ u tiên trên rãnh so 0 cua cylinder so 0. Thay ’ ´ ˙ vào cho d a˙chı CHS mo˙ sector nhan d oc
˜ ’ ˜
¯a ˆ ˆ ˆ ¯i ˆi ˆ ¯u ’ ’
’ ´ ´’ ’ ’
mot d a chı lôgíc – so thu tu cua sector trong to ´ ´ ’ ˙
’ng so tat ca sector. Viec d ´ ˙ ˙
ˆ ¯i ˆ ˆ ˆ ˆ ˆ ¯ánh so sector lôgíc
ˆ
˙ d `˙u tu 0, trong d sector so 0 chua ban ghi khoi d ng chính (MBR). Trong Setup BIOS
´ ˆ
bat ¯a `’
˘ ˙ ´ ´’ ’ ’’ ¯o ˙
¯ó ˆ ˆ
’
ho tro bien d ˆ’i so thu tu theo d ’ong thang thành d a chı CHS có dang "Ho tro LBA". Nhu
˜ ˙ ’ ˜
ˆ ’ ´ ¯o ´ ´’ ’
ˆ ˆ ¯u `’ ˘ ¯i ˆ ’ ’
˙
vay, trong các phiên ban ’ ˙ BIOS moi thuong có lua chon voi ba phuo˙ng án: "Large", "LBA",
´’ ˙ ˙
ˆ ’`’ ’ ´’ ’’
và "Normal" (phuong án cuoi cùng có nghıa là không˙thuc hien bien d ˆ’i d a chı).
˙
’’ ´ˆ ˜
˙
’ ˆ ´ ¯o ¯i
ˆ ’
´ ¯o ˙˜ ˙ ˙
ˆ ˆ ’’
Tuy nhiên trong che d ˆ LBA viec su dung d˜a vat lý van d ’oc thuc hien qua Int 13h, mà
¯ı ˆ ˆ ¯u ’ ’ ˆ
Int 13h va ˙ ˙ ˙
˜n su dung bo 3D (C,H,S). Vì nguyên nhân này xuat hien han che lên dung luong
’’ ˙ ´ ˙ˆ ˙ ˙´
ˆ ˆ ˆ ˆ ’’
cua d˜a: BIOS, và theo˙d MS-DOS và các phiên ban Windows d˙ˆ u tiên không the d ˙d a
’ ¯ı ˙
¯ó, ’ ` ˙
¯a ˆ’ ¯ánh ¯i
’
chı các d˜a có dung luong lon hon 8,4 Gbyte. ˙
¯ı ’ ’ ´’ ’
` ` ˙ ´ ’
Can chú ý rang han che nói trên chı áp dung voi các d˜a có giao dien IDE. Trong các
ˆ ˘ ˆ ´’ ¯ı ˆ
controller cua d˜a SCSI, ´ ’
’ ¯ı ˙ so cua sector d oc chuyen vào các lenh SCSI, và sau d tu d a tìm
˙ ’ ˙
ˆ ¯u ’
’ ˆ ˆ ¯ó ’ ¯ı ˜
ra vi trí ca `n thiet, vì the han che lên dung lu ’ ¯ı
´ ´ ´ ˙ ong d a không xuat hien. ˙
´ ˆ ˙
ˆ ˆ ˆ ˆ ’ ˜ ˆ
˙ ` ˜’ ´ ˙
´ ` ´ ’ ˙ ˜’ ´ ˙ ’
Mot lan nua muon nhac lai rang, tat ca nhung han che nói trên chı có ý nghıa trong giai
ˆ ˆ ˆ ˘ ˘ ˆ ˆ ˜
d n khoi d ˆ ng HDH. Boi vì ˙
¯oa
˙ ’
’ ¯o ’˙
’’ Linux và các phiên ban Windows moi nhat khi làm viec voi d˜a ´’ ´ ˆ ˆ ´’ ¯ı
d ˙ ’ ¯
˙không còn su dung Int 13 cua BIOS, mà su dung driver riêng cua mình. Nhung ˙truoc khi
’ ’’ ’
¯ã ’ ’ ’´’
˙ ’ ’ ¯u ˙’
ˆ’ ’’ ˆ ´
có the su dung driver cua mình, he thong phai d ’oc nap. Vì the trong giai d n khoi d ˆ ng d ˆ u
ˆ ´
ˆ ¯oa ’’ ¯o ¯a `
´ t ky ˙he thong nào cung can su dung BIOS. ¯ ieu này han che viec d ˘˙t nhieu he thong
tiên ba ` ˆ ˆ
ˆ ´ ˜ ` ˙ ’’
ˆ
˙ D ˙`
ˆ ´ ˆ ¯a
ˆ ˆ` ˙ˆ ´ ˆ
ra ngoài vùng ˙ 8 Gbyte d a d `u tiên: chúng không the khoi d ˙ng tu d ˙ mac dù sau khi khoi
˙ ’ ’’ ¯o `’ ¯ó, ˘ ˙ ˙ ’’
˜ ˆ
¯ı ¯a ˆ ˆ
d ˆ ng thì có the làm viec voi các d˜a có dung luong lon hon nhie ¯ ˆ’ ˙ `u. De có the hieu cách thoát
˙ ’ ’
¯o ˆ’ ˆ ´’ ¯ı ’ ’ ´’ ’ ˆ ˆ ˆ
˙ ’ i nhung han che này, chúng ta can mot chút kien thuc ve quá trình khoi d ng cua HDH
kho ´ ˙ ` ˙ ´ ´’ ˆ ` ’’ ¯o ’ ¯
˜’ ˆ ˆ ˆ ˆ ˆ
Linux. ˙ ˙ ˙
2.4 ’’ ¯ ˆ
Lua chon trình khoi dong
’
˙ ˙ ˙
2.4.1 ’’ ¯ ˆ ’
Trình khoi dong LILO cua HDH Linux
¯
˙
’’ ¯o ¯u ’ ´ ’’ ˆ’ ’’ ¯o
Trình khoi d ˆ ng LILO d ’oc viet boi Werner Almesberber. LILO có the khoi d ˆ ng nhân
ˆ
Linux tu d˜a me
`’ ¯ı ˙ `m, d a cung, và cung có the khoi d ng các he d `u hành khác: PC/MS-DOS,
˙ ’ ’’ ¯o ˙
ˆ ¯ı ´’
˜ ˜ ˆ ˆ ˆ ¯ieˆ
˙ ˙
DR DOS, OS/2, Windows 95/98, Windows NT/2000/XP, 386BSD, SCO UNIX, Unixware
v.v. . . LILO cho phép chon d´ n 16 he d ˆ u hành khác nhau d ˆ’ khoi d ˆ ng.
¯e
ˆ ˆ ¯ie` ¯e ’’ ¯o
LILO không pha ’ i là chuong trình˙d ’n le mà là mot bo gom nhieu chuong trình: trình khoi
˙
’’ ¯o ’ ˆ ˆ ˆ ` ` ˙ ’’
ˆ ’’
d ˆ ng, các chuong trình su dung d ˆ’ cài d ˘ t và cau hình
’’ ´ ˙ trình khoi d ng, và các tap tin phuc vu:
˙ ’’ ¯o
¯o ’’ ¯e ¯a ˆ ˆ ˆ
˙ ˙ ˙ ˙ ˙ ˙ ˙
12 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
• chuong trình /sbin/lilo, chay duoi Linux, phuc vu d ˆ’ ghi tat ca thông tin can thiet
’’ ’´’ ¯e ´ ’
ˆ `
ˆ ´
ˆ
’’ ¯o ˙ cho tuong ung. Ca˙ chay chuong trình này sau moi
trong giai d n khoi d ˆ ng vào các ˆ ’ ’ ´’ ˜ ˙ `n ˜
¯oa ˆ ’’ ˆ
`
lan có thay d ˆ ˙’i trong nhân hay trong tap tin cau hình LILO;
˙ ´ ˙
ˆ ¯o ˆ ˆ
˙
ˆ `
ˆ ’’ ¯o
• các tap tin phuc vu, can cho LILO trong thoi gian khoi d ˆ ng. Nhung tap tin này thuong
`’ ˜’ ˆ ’`’
na` m ˙trong thu muc /boot. Quan trong nhat trong so ˙
˘ ˙ ˙
’ ´
ˆ ˆ ¯ó
˙ ’
´ chúng – d là ban thân trình
’’ ¯o ˙ ˙
khoi d ˆ ng (xem phía duoi) và tap tin map (/boot/map); trong tap tin này có chı ra
´’ ’
’ ˆ ˆ
vi trí cu˙’ a nhân. Mot tap tin quan trong khác – tap tin cau hình LILO; thuong có tên
˙ ´ ˙
ˆ ˆ ˆ ˆ ’`’
˙
/etc/lilo.conf;
˙ ˙ ˙ ˙
’’ ¯o ` `
• trình khoi d ˆ ng – d là phan LILO d ’oc nap vào bo nho d ˆ u tiên qua Int cua BIOS;
¯ây ˆ ¯u ’ ˆ ´’ ¯a ’
’’ ¯o
trình khoi d ˆ ˙ ng nap nhân Linux hay sector˙khoi d ˙ cua he d `u hành khác. Trình
˙ ’’ ¯ong ’ ˆ ¯ie
ˆ ˆ
’’ ¯o
khoi d ˆ ng go ˙ m có˙ hai phan. Phan thu nhat d oc ghi vào sector khoi d ng và phuc vu
` ` ` ´’ ˆ ’ ´ ¯u ’ ˙ ˙ ’’ ¯o
ˆ ˆ ˆ ˆ
d ˆ’ nap˙phan thu hai, có kích thuoc lon hon rat nhieu. Ca hai phan thuong d ’oc ghi trên
¯e `
ˆ ´’ ’´’ ´’ ’ ´ ˙ ˆ ˆ ` ’ ˆ` ’`’ ˙ ¯u ’ ˙ ˙
˙
d˜a trong tap tin /boot/boot.b. ˙
¯ı ˆ
˙
` ´’ ` ’ ’’ ¯o ’’
Can nho rang, d nh dang cua sector khoi d ˆ ng tao ra boi LILO khác voi d nh dang MBR
ˆ ˘ ¯i ´’ ¯i
cua DOS. Vì the ne˙ ghi˙sector khoi d ˆ ng LILO vào MBR, thì các he d ˆ u hành d cài cua
’ ´ ´u
ˆ ˆ ’’ ¯o ˙ ˙
ˆ ¯ie` ˙ ˙
¯ã ’
’’ ¯o
Microsoft se ngung khoi d ˆ ng (neu nhu ´ ˙ không có các bien pháp bo sung).’ ˙
˜ `’ ˆ ’ ˆ ˆ
Sector kho ¯o ’’i d ˆ ng cua LILO có the d ’oc thiet ke d ˆ’˙ su dung nhu sector khoi d ˆ ng cua
’ ˙ ˆ’ ¯u ’ ´ ´ ¯e ’’
ˆ ˆ ’ ’’ ¯o ’
phân vùng; trong d ˙ có cho cho bang phân˙vùng.
˜ ’ ˙ ˙
¯ó ˆ
’’ ¯o ’ ˆ’ ¯a
Sector khoi d ˆ ng cua LILO trong khi cài d ˘ t có the d ˘ t vào nhung cho sau:
¯a ˜’ ˜
ˆ
˙ ˙ ˙
’’ ¯o ’ ¯ı `
• sector khoi d ˆ ng cua d˜a mem trong d nh dang Linux (/dev/fd0, . . . );
ˆ ¯i
˙ ˙ ˙
`
’ a d˜a cung d ˆ u tiên (/dev/hda, /dev/sda, . . . );
• MBR cu ¯ı ´’ ¯a
’’ ¯o ’ ´’ ˆ ´ `
• sector khoi d ˆ ng cua phân vùng chính voi he thong tap tin Linux trên d˜a cung d ˆ u tiên
ˆ ˆ ¯ı ´’ ¯a
(/dev/hda1, ˙ /dev/hda2, . . . ); ˙ ˙
’’ ¯o ’ ’’ ˆ
• sector khoi d ˆ ng cua phân vùng lôgíc trong phân vùng mo rong d˜a cung d ˆ u tiên¯ı ´’ ¯a `
(/dev/hda5, ˙. . . ). Su that là phan lon chuong trình dang fdisk không d ` ra kha nang
` ˙ ’ ˘
’ ˆ ˆ ´’ ’’ ¯e
ˆ
’’i d ˆ ng khoi d ˆ ng tu phân vùng mo rong và tu choi ˙ ˆ c kích hoat phân vùng này. Vì
kho ¯o ’’ ¯o ˙`’ ˙ ’’ ˆ `’ ˆ´ vie
vay trong thành phan LILO có chua mot chuong trình d˙˘ c biet (activate) cho phép
ˆ
˙ ˙ `
ˆ ´’ ˆ˙ ’’ ¯a ˆ
˙
˙ ot qua han che này. Tuy nhiên chuong trình fdisk cu˙a ban phân phoi Linux ho tro
vu ’ ´ ˙ ’ ’ ˙ ´ ˜
’ ˆ ’’ ˆ ˆ ’
˙ nang kích hoat phân vùng mo rong. Can su dung tùy chon -b hoac bien BOOT. ˙
’ ˙ ’’ ˆ ` ´
kha ˘ ˆ ’’ ˘ ˆ
˙ ˙ ˙ ˙ ˙
’’ ¯o ’ ˆ’ ¯a
Sector khoi d ˆ ng cua LILO không the d ˘ t vào các cho sau: ˜
ˆ
˙ ˙
’’ ¯o ’ ¯ı `
• sector khoi d ˆ ng cua d˜a mem hay phân vùng chính, voi d nh dang he thong tap tin
ˆ ´’ ¯i ˆ ´ ˆ ˆ
khác Linux; ˙ ˙ ˙ ˙ ˙
’
• trong phân vùng swap cua Linux;
• trên d˜a cung thu hai.
¯ı ´’ ´’
`
ˆ `
´’ ˘ `’ ’’ ¯o
Ngoài ra, can nho rang, LILO trong thoi gian khoi d ˆ ng nhung tap tin sau:
˜’ ˆ
˙ ˙
• /boot/boot.b;
’’ ˆ
• /boot/map (tao ra boi lenh /sbin/lilo);
˙ ˙
’ ’’ ¯ ˆ
2.4 Lua chon trình khoi dong 13
˙ ˙ ˙
´ ’
ˆ ’ ’’ ¯o ´
ˆ ¯o ’ ’’ ¯o
• tat ca phiên ban nhân khoi d ˆ ng (neu ban d c chon phiên ban nhân khi khoi d ˆ ng);
˙ ˙ ˙ ˙ ˙
’’ ¯o ’ `
ˆ ¯ie ¯o ´
ˆ ’’ ¯o
• sector khoi d ˆ ng cua các he d ˆ u hành khác mà ban d c muon khoi d ˆ ng qua LILO;
˙ ˙ ˙ ˙ ˙
ˆ ¯u ’’ ¯o ´ ¯u ’
• tap tin chua các thông báo d ’a ra khi khoi d ˆ ng (neu d ’oc xác d nh).
´’ ˆ ¯i
˙ ˙ ˙ ˙
’ ˆ ’’ ¯o ’ ˜’ ˆ ¯ã ˆ ´ ¯ó
Nhu vay, sector khoi d ˆ ng LILO cung nhu nhung tap tin d liet kê (trong so d có các tap
˜ ˆ ˆ
tin ban d c ˜˙ se cài d ˘ t sau này) can nam trong pham vi 1024 cylinder d `u tiên cua d a cung,
˙ ` ` ˙ ˙ ’ ¯ı ´’ ˙
¯o ¯a ˆ ˘ ¯aˆ ˜
boi vì chúng can d ’˙’c truy cap qua BIOS. Xem phan nói ve han che cua BIOS o trên.
’’ ˙ ˙ `
ˆ ¯uo ˆ
˙ `
ˆ `
ˆ ´ ’
ˆ ’’
` `’ ˙ ’ ˙ ˙
´ t d ˆ u tu phiên ban 21, LILO d ’a ra màn hình trình d ’n (thuc d ’n) cho phép chon he
Ba ¯a
˘ ¯u ¯o ’ ¯o ˆ
´ ` ´ ˙
thong d ˆ’ khoi d ˆ ng (truoc d can nhan phím Tab d ˆ’ goi trình d ’n này). ˙ ˙
ˆ ¯e ’’ ¯o ’´’ ¯ây ˆ ˆ ¯e ¯o
˙ ˙
2.4.2 ’’ ¯ ˆ
Các trình khoi dong khác
˙
¯e ’’ ¯o ˆ’ ’’ ¯o
Ngoài LILO d ˆ’ khoi d ˆ ng Linux có the khoi d ˆ ng các trình khoi d ˆ ng khác.
’’ ¯o
˙ ˙ ˙
´
ˆ ¯a ¯ã ¯ ’’ ¯o
• Neu nhu truoc khi cài d ˘ t Linux d có HDH Windows NT/2000/XP, thì trình khoi d ˆ ng
’ ’´’
¯o ’ su dung˙ là OS Loader cua NT. So sánh voi LILO thì trình khoi d ˙ ng
ban d c có the ’’
ˆ ’ ´’ ’’ ¯oˆ
˙ ˙
OS Loader có ít nha˙t hai uu the. Thu nhat, tat ca cau hình cu không bi mat (chúng ta
´
ˆ ’ ˆ ´ ´’ ´ ´ ’ ´
ˆ ˆ ˆ ˜ ´
ˆ
˙
ˆ’ ’’ ¯o ´’ ˙ ˆ’
có the chon khoi d ˆ ng Windows hay Linux theo lua chon), và thu hai, có the cài d ˘ t
’ ¯a
˙d a mà LILO không the khoi d ng, ví du,˙o d a˙thu hai trên controller thu hai
Linux lên ¯ı ˙ ’ ’’ ¯o ’ ¯ı ´’ ˙
˜ ˆ ˆ ˆ ˜ ´’
(Secondary Slave). ˙ ˙
´ˆ ¯a ¯o ’
• Neu nhu truoc khi cài d ˘ t Linux ban d c chı có HDH Windows 95 hay Windows 98 và
’ ’´’ ¯
˙
không có Windows NT/2000 hay XP, ˙ thì OS Loader không d oc cài d ˘ t. Và neu nhu vì
˙ ´
¯u ’
’ ¯a ˆ ’
mot lý do nào d ban d c không muo
ˆ ¯ó ¯o ´ n cài d ˘ t LILO, thì có the su d ˙ng chuong trình
ˆ ¯a
˙’ ’
ˆ ’ ¯u ’’
˙’ ˙ ˙ ` ´’ ’ ˙ ´
khoi d ˆ ng loadlin.exe (thuong d kèm voi ban phân phoi Linux); ˙
’ ¯o ’’ ¯i ˆ
˙
` `
ˆ ’ ´ ’’
• Thoi gian gan d trong thành phan ban phân phoi Linux thuong có chuong trình khoi
`’ ˆ ¯ây ˆ ’`’ ’’
d ˆ ng GRUB.
¯o
˙
` ’ ’’ ¯o
• Trong thành phan OS/2 cua công ty IBM có chuong trình khoi d ˆ ng Boot Manager.
ˆ ’’
˙
Trong rat nhieu huong dan nguoi ta khuyên dùng chuong trình này d ˆ’ toi chuc khoi
´
ˆ `
ˆ ’´’ ˜
ˆ ’`’ ’’ ¯e ˆ’ ´’ ’’
¯o `u HDH.
d ˆ ng nhie ¯
ˆ
˙
`
ˆ ´ ¯e
• Trong các nguon thông tin khác nhau còn nhac d´ n chuong trình System Commander;
˘ ˆ ’’
’’ ¯o ` ’
• Thêm mot trình khoi d ˆ ng khác có trong thành phan gói PartitionMagic cua công ty
ˆ ˆ
˙ ˙se nói ve chuong trình này trong phan nho tiep theo.
Power Quest. Chúng ta ˜ ` ’’ ` ’ ˆ ´
ˆ ˆ
Ngoài ra tác gia còn thay nguoi ta nói d´ n mot loat trình khoi d ˆ ng khác (mot so có the
’ ´
ˆ ’`’ ¯e
ˆ ˆ ’’ ¯o ˆ ´ ˆ ˆ’
tìm tha ˙ ˙ ˙
´ y trong thu muc /public/ftp/pub/Linux/system/boot/loaders trên trang ˙
ˆ ’
˙ ’ ’’
ftp://metalab.unc.edu/. Nhung vì tác gia không su dung nhung chuong trình này, nên không
’ ˜’ ’’
the’ nói cu the cách su dung chúng. Và tat ca nhung ˙loi khuyên dùng sau cua tác gia se dua
ˆ ’
ˆ ’’ ´ ’ ˜’
ˆ `’ ’ ’ ˜ ’
trên viec su˙ ’ dung LILO, ˙NT Loader và loadlin.exe. Neu nhu có ý muon cài d ˘ t chuong trình
´ ´ ˙
ˆ ’ ˆ ’ ˆ ¯a ’’
khoi d ˆ ng khác, thì ban d c can d c huong dan cài d ˘ t và su dung cua nó. ˙
’’ ¯o˙ ˙ `
¯o ˆ ¯o ’´’ ˜
ˆ ¯a ’’ ’
˙ ˙ ˙ ˙ ˙ ˙
14 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
2.4.3 ’’ ¯ ˆ
Các phuong án khoi dong
’’
˙
´ ’ ’ ’’ ¯o
Nhu vay, theo ý kien cua tác gia có các phuong án khoi d ˆ ng sau:
’ ˆ ˆ ’’
˙ ˙
´ ¯ã
• Neu d cài d ˘ t Windows NT hay Windows 2000/XP, thì hãy su dung NT Loader.
ˆ ¯a ’’
˙ ˙
´
• Neu có Windows 95 hay Windows 98 trên FAT16, và ban d c không muon cài d ˘ t
ˆ ¯o ´
ˆ ¯a
chuong trình kho ¯o
’’ ’’i d ˆ ng nào khác, thì có the su dung LILO, hoa˙ d ˆ u tiên chay DOS và
ˆ’ ’’ ˙ ˘c `
¯a
˙
˙ ˙ ˙ ˙
¯ó ’’ ¯o
sau d khoi d ˆ ng Linux nho chuong trình loadlin.exe (hay mot chuong trình tuong tu,
`’ ’ ’ ˆ ’’ ’’ ’
có vài chuong ˙ trình nhu vay, nhung chúng ta se không xét d´ n). ˙ ˙
’’ ’ ˆ ’ ˜ ¯e
ˆ
˙
´ ¯ã
• Neu d cài d ˘ t Windows 95 OSR2 hay Windows 98 trên FAT32, và ban d c không
ˆ ¯a ¯o
muo ´ n cài d ˘ t˙ thêm chuong trình khoi d ˆ ng, thì can su dung loadlin.exe. Rat nhieu
ˆ ¯a ’’ ’’ ¯o ` ’’
ˆ
˙ ˙´
ˆ ˆ`
˙˘ ng d nh rang không can su d ng LILO, neu nhu phân vùng kích hoat có
’ ` ` ˙ ´ ˙
HOWTO kha ¯i ˘ ˆ ’’ ¯u ˆ ’
d nh dang FAT32, ˘ ˙ mac dù tác gia không rõ nguyên nhân. Tuy nhiên thí nghiem ˙ ’ i
’ ˙
¯i ˆ kho ’
dˆ˙ ng Linux qua NT ˙Loader, cài d ˘ t trên phân vùng FAT32, cua tác gia d ket thúc
˙ ’ ’ ¯ã ˙ ´
¯o ¯a ˆ
˙ ´ ˙` ’ ¯ã ’ ’’
không thành công. Vì the, trong truong hop này tác gia d phai su dung chuong trình
ˆ ’’ ’ ’’
˙
loadlin.exe. Chuong trình này d hoàn thành tot nhiem vu, và tao cho tác gia mot ´ n
´ ˙ ’ ˆ a
’’ ¯ã ˆ ˆ ˆ
tuong tot, vì the tác gia khuyên ban d c su dung loadlin.exe d ˆ’ khoi d ˆ ng Linux. ˙
’’ ˆ ´ ´ˆ ’ ¯o ’’
˙ ˙ ˙
¯e ’’ ¯o
˙ ˙ ˙ ˙ ˙
ˆ ´
` ˆ ’ ˜ ´
ˆ ¯a ’’ ´ ’
Trong nhung phan tiep theo tác gia se cho biet cách cài d ˘ t Linux, su dung tat ca ba
˜’ ˆ
’’ ¯o ’’ ¯o
phuong án khoi d ˆ ng: qua trình khoi d ˆ ng NT Loader, trình kho ¯o ˙’ i d ng LILO ˙và trình khoi
’’
’’ ’ ˆ
˙ ˙ d ˘ t trình khoi d ng can chuan bi các phân vùng
d ˆ ng loadlin.exe. Tuy nhiên truoc khi cài ¯a ’’ ¯o ` ˙ ˆ’
¯o ’´’ ˆ ˆ
˙ ˙ ˙ ˙
¯ı ´
ˆ ˜ ˆ’ ´’
trên d˜a, hay ít nhat là nghı cách to chuc chúng.
2.5 ˆ’
Chuan bi các phân vùng trên d˜a
¯ı
˙
2.5.1 Loi khuyên khi tao phân vùng
`’
˙
D’ `’ ’’ ¯ây ’ ˆ ˆ ˜
¯ ua ra loi khuyên o d không phai là viec de dàng, vì phân vùng d˜a phuc thuoc rat nhieu ¯ı ˆ ´ ˆ `
ˆ
vào ý thích và nhu ca ’ `u cua chu nhân d˜a. Nhung cung xin thu d ’a ra vài˙ d ˆ nghi sau. Tác
ˆ ’ ¯ı
˙
’ ˜ ’’ ¯u ` ˙
¯e
˙
’ ˜ ¯a ˆ’ ’
gia se d ˘ t tên d˜a và phân vùng theo "tiêu chuan" cua Linux, tuc là /dev/hda, /dev/hdb,
¯ı ´’
˙ i voi d a và /dev/hda1, /dev/hda2, v.v. . . – d´ i voi các phân vùng.
v.v. . . d´ ´’ ¯ı
¯oˆ ˜ ¯o ´’
ˆ
Viec phân chia d˜a thành các phân vùng là ca
ˆ ¯ı `n thiet, boi vì Windows và Linux su dung
ˆ ´
ˆ ’’ ’’
˙ luu tru thông tin trên d a và sau d d c chúng tu d a khác nhau. Chính vì the tot hon
các cách ’ ˜’ `’ ¯ı ´ ´ ˙’
˜
¯ı ¯ó ¯o ˜ ˆ ˆ
he ˜ ˆ ¯ie `
´ t là dành cho moi he d ˆ u hành mot (hoac tha ˘ ˙ m chí mot vài nhu chúng ta se thay o duoi) ´ ’’ ’´’
ˆ ˆ ˆ ˆ ˆ ’ ˜ ˆ
phân vùng riêng. ˙ ˙ ˙ ˙ ˙
Dˆ `
¯ au tiên chúng ta hãy xem xét mot truong hop d ’n gian – dung luong o d˜a cua ban d ˙ c
ˆ ’`’ ’ ¯o ’ ’ ’ ˆ’ ¯ı ’ ¯o
không vuot quá 8,4 Gbyte (nói chính ˙ xác hon – so cylinder không vuot quá 1024). ˙Trong
˙ ´ ˙
’’ ’ ˆ ’’
truong ho˙ này moi thu d ˆ u d ’n gian: ban d c chı viec chia d˜a làm sao d ˆ’ d ’ cho cho he
’`’ ’p `
´’ ¯e ¯o ’ ¯o ’ ˆ ¯ı
˙
¯e ¯u ˆ ˜ ˆ
` ˙ se cài d ˘ t. Có the su dung du lieu cho biet kích thuoc d a nho nhat can thiet d ’ cài
˙ ’ ’’ ˙ ˙ ´ ˙ ’ ´ ˆ ´ ¯e ˙
d ˆ u hành ˜
¯ie ¯a ˆ ˜’ ˆ ˆ ’´’ ¯ı ˜ ˆ ` ˆ ˆ
d ˘ t he d ˆ
¯a ˆ ¯ie `u hành voi cau hình co ˙ban trong bang 2.2.
˙´ ´
’ ˆ ’ ’ ˙ ’
˙ ˙ ` ’ ’ ’
Tuy nhiên xin hãy nho rang, không nhung phai tính kích thuoc các tap tin cua ban thân
´’ ˘ ˜’ ’´’ ˆ
he d ˆ
ˆ ¯ie `u hành, mà còn phai tính ca kích thuoc cua các chuong trình ban d ˙ c du tính chay. Và
’ ’ ’´’ ’ ’’ ¯o ’
còn phai dành mot phan du tru không nho cho các chuong trình se cài˙d ˘ t ˙ này (không the
˙ ’ ˆ `
ˆ ’ ˜’ ’ ’’ ˜ ¯a sau ˙ ˙
ˆ’
’
tránh khoi!). Hãy ˙ tính rang, 700 Mbyte dành cho Linux o trong bang nói trên chı dành cho
`
˘ ˙ ’’ ’ ˙ ’
các chuong trình cài d ˘ t cùng voi Linux theo mac d nh, trong so ¯ó
’’ ¯a ´’ ˘ ¯i ´ d có, ví du, chuong trình
ˆ ’’
soan thao rat manh Lyx. ¯ oi voi Windows cung ˙ ’ong tu nhu vay.
’ ´ ˆ
˙ D´ ´
ˆ ’ ˜ tu ’
˙
’ ’ ˆ
˙
˙ ˙ ˙ ˙
ˆ’
2.5 Chuan bi các phân vùng trên d˜a
¯ı 15
˙
’ `
ˆ ’’ ¯ı ’ ¯
Bang 2.2: Nhu cau su dung không gian d˜a cua HDH
`
He d ˆ u hành `
Yêu cau ˙
ˆ ¯ie ˆ
˙
Windows 95 100 Mbyte
Windows 98 200 Mbyte
Windows NT 200 Mbyte
Windows 2000 700 Mbyte
Linux Red Hat 6.2 (Worksta- 700 Mbyte
tion voi KDE)
´’
Theo kinh nghiem cua tác gia thì d ˆ’ làm viec voi Windows 95/98, Windows NT và Linux
ˆ ’ ’ ¯e ˆ ´’
˙
˙kích thuoc 800-1000 Mbyte là d ’ (tat nhiên, neu ban d c không cài d ˘ t
các phân vùng voi ´’ ’´’ ¯u ´ ˆ ´
ˆ ¯o ¯a
˙ ˙ `
´ i voi Windows 200 thì can phân vùng
các gói chuong trình lon, nhu OpenOffice.Org), còn d ˆ ´’
´’ ˙
’’ ’ ¯o ˆ
lon hon.
´’ ’
`’ ˜ ´ ¯e
ˆ ` ’’ ¯ây
Bây gio chúng ta se xem xét van d ˆ chia các phân vùng cho Linux. O d không the chı ˆ’ ’
ˆ ˆ `
´’ ´ ˆ
chia mot phân vùng. Thu nhat, can chia mot phân vùng swap riêng biet cho Linux. Khi xác
ˆ ˆ
˙ luong cua phân vùng swap Linux can tính d´ n nhung yeu to˙ sau:
d nh dung ’ ’ ’ ˙ ` ´ ´
¯i ˆ ¯eˆ ˜’ ˆ ˆ
˙ ˙
ˆ ´’ ’
• Trong Linux, RAM và không gian swap hop lai tao thành bo nho ao chung. Ví du, neu
’ ´
ˆ
ban d c có 256 MByte RAM và 128 Mbyte ˙ không gian swap, thì se có 384 Mbyte bo
˙ ˙ ˙ ˙
¯o ˜ ˆ
˙ ´ ao.
nho ’˙ ˙
’
D ˆ’ ` ´ ˆ ´’ ’ ´ ´ ’
• ¯ e làm viec voi Linux can ít nhat 16 Mbyte bo nho ao, vì the neu ban d c chı có 4
ˆ ´’ ˆ ˆ ˆ ˆ ¯o
Mbyte RAM,˙ thì can phân vùng swap không nho hon 12 Mbyte.
` ˙’ ˙ ˙
ˆ ’
• Trên Linux kích thuoc mot phân vùng swap không the vuot quá 128 Mbyte. Nghıa là
’´’ ˆ ˆ’ ’ ’ ˜
˙ ˙
’ có kích thuoc lon bao nhiêu tùy thích nhung Linux không the
phân vùng swap có the ˆ ’´’ ´’ ’ ˆ’
’’ ´ ´ ˆ ´’ ’ ´’ ’
su dung hon 128 Mbyte. Neu ban d c muon có bo nho ao lon hon, thì can tao hai phân
’ ˆ ¯o ˆ `
ˆ
vùng ˙ swap hoac su dung tap tin swap.
˘ ’’ ˙ ˙ ˙ ˙
ˆ
˙ ˙ ˙
’´’ ’ `
• Khi tính kích thuoc cua không gian swapping, can nho rang kích thuoc quá lon có the
ˆ ´’ ˘ ` ’´’ ´’ ˆ’
là vô ích. Trên máy tính voi 16 Mbyte RAM khi cài d ˘ t Linux voi cau hình chuan và
´’ ¯a ´’ ´ ˆ ˆ’
˙gian swapping là d ’ . Còn neu
các chuong trình ung dung chuan thì 48 Mbyte không
’’ ´’ ˆ’ ¯u ´
ˆ
cài d ˘ t Linux voi ca ´’ ˆ ˙
´ u hình nho nhat, thì không can d´ n không gian swap. Tat nhiên,
’ ˆ ´ ` ¯e ´
¯a ˆ ˆ ˆ
˙ ´ ’
kích thuoc chính xác cua không gian swap phu thuoc lon vào chuong trình se d ’oc cài
´’
’’ ˆ ’’ ˜ ¯u ’
d ˘ t. ˙ ˙ ˙
¯a
˙
’ ˜ ˆ ´ ¯e
` ˆ `
Nói chung, chı nên suy nghı ve van d ˆ dung luong cua phân vùng swap khi có mot d˜a
’’ ’ ˆ ¯ı
˙ phân chia d ’ tong so dung luong cua ˙ ’
’
nho và ít bo nho RAM. Trong truong hop nguoc lai hãy
ˆ ´’ ’`’ ’ ’’ ¯e ˆ’
ˆ ´
ˆ ’’
bo nho ao (gom RAM và phân vùng swap) không˙nho hon 128 Mbyte. Còn neu nhu ban d c
ˆ ´’ ’
˙ `
ˆ
˙ ˙ ’ ’ ´
ˆ ’
˙
¯o
˙ ˙ ˙
`
có 128 Mbyte RAM hay nhieu hon, thì phân vùng này có the không can thiet.
ˆ ’ ˆ’ `
ˆ ´ˆ
´ ’ ` ’ ˜
Tat ca các phan còn lai cua Linux và các chuong trình ho tro theo nguyên tac có the d ˘ t
ˆ ˆ ’’ ˆ ’ ´
˘ ˆ’ ¯a
˙ ˙ vài phân vùng riêng re là ˙
ˆ ˆ ¯a ˆ ´
vào mot phân vùng. Tuy nhiên, viec d ˘ t he thong tap tin Linux lên ˆ ˆ ˜
có ý nghıa. Ví du, có nhà chuyên ˙gia ˙ ˙ nên ˙
˙
˜ khuyên ˆ ´
dành cho he thong tap tin Linux ba phân
ˆ ˆ
vùng (ne ˙
’ ´’ ˆ ´ ˙ ´
´ u tính ca swap thì thành 4). Phân vùng thu nhat (theo ý kien cá nhân tác gia, 1 Gbyte ˙ ’
ˆ ˆ
¯u ˜ ´’ ˆ ´ ˆ ˆ ´
là d ’ ) se chua he thong tap tin goc (/). Phân vùng thu hai dành cho thu muc /home. Còn
ˆ ´’ ’
phân vùng thu ba d ’oc ga˙ vào thu muc /usr. Viec phân chia nhu vay dua trên nhung lý le
´’ ˙ ¯u ’ ˘ n ´ ’ ˆ ’ ˆ ’
˙
˜’ ˜
sau. Dù HDH Linux có ˆ ˙ on d nh và d ˙ tin cay d´ n d thì thınh thoa˙ cung can cài d ˘ t lai.
’ ¯i ˙ ’ ’ ng ˜ ˙ `
¯ ¯áng ˆ ¯e ¯âu,
ˆ ˆ ¯a
Ví du, ban d c muon cap nhat phiên ban moi cua ban phân phoi, hoac vì ít kinh nghie˙m ˙ ’’
¯o ´ ˆ
ˆ
˙
ˆ ’ ´˙ ’ ’
’ ´ˆ ˘ ˆ su
˙ ˙ ˙ ˙ ˙ ˙ ˙
16 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
’ ˆ ´
dung nên làm hong tap tin he thong quan trong, hoac d ’n gian là muon cài d ˘ t mot ban phân
ˆ ˆ ˘ ¯o ’ ´
ˆ ¯a ˆ ’
˙ ´ i khác. Neu nhu tat ca d ˙ oc cài d ˘ t vào˙mot phân vùng, thì khi cài d ˘ t lai nhung du lieu
pho ´ ˙´ ’ ˙ ˙ ˙
ˆ ˆ ’ ˆ ¯u ’
’ ¯a ˆ ¯a ˜’ ˜’ ˆ
˙ muc cá˙ nhân se ˙ mat (neu không có ban sao ˙ ˙ chép). Ngoài ra, ˙
d làm ra và ghi nho trong thu
¯ã ´’ ’ ˜ bi ´ ´ ˆ ˆ ’
se bi mat ca nhung chuong trình ˙d cài tu mã nguon, hay cài bang phuong pháp khác. Phan
˜ ´ ’ ˜’
ˆ ’’ ¯ã `’ ˙ `
ˆ `
˘ ’’ `
ˆ
lon nhu
´’ ˙ ng gói chuong trình này d oc cài vào thu muc /usr. Neu dành cho thu muc này mot ´
˜’ ’’ ¯u ’
’ ’ ˆ ’ ˆ
phân vùng riêng và khi cài d ˘ t không ¯i ˙ d nh dang la˙ chúng, thì nhung chuong trình nói trên
i ˙ ˙
¯a ˜’ ’’
˙ ˙ ˙ ’ ` ˙
˜ ¯u ’ ˜’ ˆ’ ˜ ˆ ´
se d ’oc giu lai và có the se làm viec (rat có the can vài cau hình nho) sau khi cài d ˘ t lai he
ˆ ˆ ˆ ´
ˆ ’ ¯a ˆ
´
thong. ˙ Trong˙tiêu chuan ve he thong tap tin cua Linux FHS (cu the xin xem o chu˙ ng ??)
’ ˆ ˆ ´` ˙ ’ ’ ’’ ’o ˙ ˙
ˆ ˆ ˆ ˆ ˆ ’
cung có loi khuyên ve viec d ˘˙ thu muc /usr lên mot phân vùng riêng.
˜ `’ `
ˆ ˆ ¯at ’
˙
ˆ
˙
˙ ˙ ´ ˙ ˙
Theo tác gia thay, nhung ý kien nói trên d d ’ d ˆ’ ban d c tu tìm ra phuong án phân chia
’ ´ ˆ ˜’ ˆ ¯ã ¯u ¯e ¯o ’ ’’
o d˜a cua mình, trong truong hop chı có mot o d˜a nho. ˙ ˙gio˙chúng ta xem xét truong hop
ˆ’ ¯ı ’ ’`’ ’ ’ ˆ ˆ’ ¯ı ’ Bây `’ ’`’ ’
d˜a voi so ´ cylinder lon hon 1024. ˙ ˙ ˙
¯ı ´’ ˆ ´’ ’
Tu nhung gì d nói d´ n o phan truoc (han che dung luong d˜a cung), can d ˘ t chuong trình
`’ ˜’ ¯ã ¯e ’’ ˆ
ˆ ` ’´’ ´
ˆ ’ ’ ¯ı ´’ `
ˆ ¯a ’’
’’ ¯o
khoi d ˆ ng trong pham vi 1024 cylinder d ˆ u ` ˙ tiên. Nhân tie˙ NT Loader không˙nhat thiet phai ´ ´ ’
¯a ˆ n, ˆ ˆ
d ˘ t vào ˙ phân vùng NTFS, cung nhu không nhat thiet pha˙i d ˘ t vào phân vùng chua các tap tin
˙ ´ ´ ’ ¯a ´’
¯a ˜ ’ ˆ ˆ ˆ
khác cua HDH. Nhu d nói o trên, d´ i voi Linux có the d ˘˙t thu muc goc cùng voi thu˙ muc
˙ ’ ¯ ’ ¯ã ’’ ¯oˆ ´’ ˆ’ ¯a ’ ´
ˆ ´’ ’
´ ` ˙
con /boot vào các cylinder "thap" (trong vòng 1024 d ˆ u tiên), còn các thu muc khác – o cho
ˆ ¯a
˙
’ ’’ ˙ ˆ˜
nào tùy thích. ˙
` ’
Nhu vay trong truong hop này, nhung d ˆ nghi cua tác gia cho ra bang tong ket sau:
’ ˆ ’`’ ’ ˜’ ¯e ’ ’ ˆ’ ´
ˆ
˙ ˙ ˙
` ’’ ¯o ’ ´ ’ ˆ ´ ` ’
• phan khoi d ˆ ng cua tat ca các he thong Microsoft d ˘ t vào phân vùng chính d ˆ u tiên cua
ˆ ˆ ˆ ¯a ¯a
d˜a, voi d nh˙ dang FAT16 (DOS); ˙ ˙
¯ı ´’ ¯i
˙ ˙
´
ˆ ’ ´ˆ ’´’ ’
• phân vùng chính tiep theo dành cho thu muc goc (/), kích thuoc khoang 1 Gbyte;
˙
’ ` ’´’ ’
• phân vùng chính thu ba dành cho swap cua Linux (loi khuyên ve kích thuoc cua phân
´’ `’ ˆ
’’
vùng này xem o trên);
` ’ ¯ı ¯a ’’ ˆ
• phan còn lai cua d˜a d ˘ t thành phân vùng mo rong;
ˆ
˙ ˙ ˙
’’ ˆ ˜
• trong phân vùng mo rong tao các phân vùng lôgíc cho moi HDH se cài d ˘ t: Windows
ˆ ˜ ¯a
˙ ˙và d `ng thoi cho các he thong tap¯ tin /home và /usr cua
˙
98, Windows NT/2000/XP, ¯oˆ `’ ˆ ´ ˆ ˆ ’
HDH Linux (trong /home se d ˘ t các tap tin riêng cu ˙ ’ a nguoi dùng, còn trong /usr –
˙
¯ ˜ ¯a ˆ ’`’
chuong trình se cài d ˘ t). ˙ ˙
’’ ˜ ¯a
˙
Tat nhiên, neu nhu ban d c chı có Windows 95 voi FAT16, thì có the d ˆ’ Windows trên
´
ˆ ´
ˆ ’ ¯o ’ ´’ ˆ’ ¯e
`
phân vùng d ˆ u tiên. Neu ´ ˙nhu˙trên máy d cài d ˘ t Windows NT hay có FAT32, thì mot phân
¯a ˆ ’ ¯ã ¯a ˆ
˜ `’ ´’ ´ ˆ’ ’ ˙
vùng FAT16 cung không thua. Thu nhat, ke ca trong truong hop he thong có van d ˆ , ban d c
ˆ ’`’ ’ ˆ ´ ˆ ´ ¯e ˙ ¯o
ˆ `
˙ ˙´ ˙ `˙
ˆ’ ’’ ¯o `
có the khoi d ˆ ng tu d˜a mem DOS (tam thoi khi chua làm quen voi Linux mot cách "tuong
`’ ¯ı ˆ `’ ’ ’ ˆ ’’
ˆ ´ ˙¯u ’ ˘
ˆ ` ˙
tan") và thay d ’oc rang d˜a cung làm viec bình thuong. Thu hai, he thong tap tin FAT16 d ’oc
¯ı ´’ ˆ ’`’ ´’ ˆ ´ ˆ ˆ
˙
¯u ’
ho tro trên moi HDH, trong d có Linux, vì the phân vùng này có the phu˙ vu cho viec trao
˙˜
ˆ ’
˙
¯ ¯ó
˙ ´
ˆ
˙ ’
ˆ c ˆ
˙
d ˆ’i tap tin giua các he thong. Nhung không nên d ˆ’ phân vùng này lon, ˙vì FAT16 su dung
¯o ˆ
˙ ˙
˜’ ˆ ´ ˆ ’ ¯e ´’ ˙ ˙
’’
˙ ˙ ˙˘
¯ı ´
không gian d˜a rat không hop lý. Chính vì vay hãy dành cho phân vùng này khoang 256 hoac
ˆ ’ ˆ ’
512 Mbyte. ˙ ˙ ˙
˜’ ¯u ´’ ’ ´ ˘ ˆ `
Nhung loi khuyên này d ’a ra voi gia thiet rang, ban d c chı có mot d˜a cung. Neu nhu
`’ ¯o ’ ˆ ¯ı ´’ ´ˆ ’
˜ ˙này, chı có d `u phân vùng swap tot
˙ ’ ˙ ´
¯o ˆ ’’
ban d c có 2, thì van su dung d ’oc nhung loi khuyên
¯u ’ ˜’ `’ ¯ie
ˆ ˆ
hon d ˘ t trên d˜a khác voi d˜˙ dành ˙cho Linux. Nguoi ta nói rang nhu vay tang toc d ˆ làm viec
˙ ˙
’ ¯a ¯ı ´’ ¯ıa ’`’ `
˘ ’ ˆ ˘ ´ ¯o
ˆ ˆ
˙ ˙ ˙ ˙
ˆ ˆ’
˜ `
trong Linux (cung de hieu vì d ˆ u d c ít phai chay hon).
˜ ¯a ¯o ’ ’
˙ ˙
’’ ¯ ˆ ’
2.6 Windows NT và Linux: khoi dong qua OS Loader cua NT 17
˙
2.5.2 ¯ˆ’ ˆ’ ¯ı
Chuong trình de phân chia o d˜a
’’
Sau khi hoàn thành ket hoach chia o d˜a, can lua chon công cu d ˆ’ d ’a ke hoach này thành
´ˆ ˆ’ ¯ı ˆ ’ ` ¯e ¯u ´ ˆ
hien thuc. Chuong trình phân ˙ chia d a d oc bie˙ d´ n ˙nhieu nha˙ là fdisk; trên moi he d `u
´ t ¯e ` ´t ˙
ˆ ’ ’’ ˜ ’
¯ı ¯u ’ ˆ ˆ ˆ ˆ ˆ ¯ieˆ
˙ ˙
` ’ ’ ˙
hành d ˆ u có phiên ban riêng cua chuong trình này. Và không can gì hon ngoài chuong trình ` ˙ ˙
¯e ’’ ˆ ’ ’’
´
ˆ ’ ˆ’ ¯ı ´ ˘ ´’ ´
này, neu nhu phân chia o d˜a trang, không chua bat ký du lieu nào. Nhung chúng ta d
ˆ ˜’ ˆ ’ ¯ang xem
xét truong hop d có HDH nào d trên d˜a và ca ˙ ’
`n phân chia o d˜a mà không làm mat thông ´
’`’ ’ ¯ã ¯ ¯ó ¯ı ˆ ˆ ¯ı ˆ
˙
tin. fdisk không thích hop cho nhung muc d nhu vay.
’ ˜’ ¯ích ’ ˆ
Trong thành phan các ban phân phoi Red Hat và˙BlackCat (rat có the trong các ban
`
ˆ
˙ ’ ´˙
ˆ ´
ˆ ˆ’ ’
´
phân phoi khác) có chuong trình fips, phuc vu cho phân chia o d˜a. Tuy nhiên, theo ý
ˆ ’’ ˆ’ ¯ı
´ ˙ ˙ ´ `’
ˆ ’ ’’
kien cua nguoi dùng thì không nên su dung chuong trình này. Vì the loi khuyên cua tác
’`’ ’’ ˆ ’
˙
’ voi ban d c, nhung nguoi dùng Linux moi – neu nhu muon phân chia lai o d˜a mà
gia ´’ ´ ´ ’ ¯ı
¯o ˜’ ’`’ ´’ ˆ ’ ˆ ˆ
không làm ma˙ thông tin, thì hãy tìm chuong trình Partition Magic cua công ty Power Quest
˙ ´t
ˆ ’’ ’ ˙
’’
(http://www.powerquest.com) và su dung chuong trình này. ’’
˙
´’ ´ ˆ ’’ ˆ’ ¯ı
Thu nhat, chuong trình này cho phép phân chia lai o d˜a mà không làm mat thông tin (tuc ´
ˆ ´’
´ ’ ˜’ ´
là, tat ca nhung cài d ˘ t và cau hình truoc d se d ’o ˙c ghi lai). Khi này, không chı tao d oc ’
ˆ ¯a ˆ ’´’ ¯ó ˜ ¯u ’ ¯u ’
’
phân vùng moi tu cho ˆ ´’ `’ ˆ ˜ trong trên d˜a, mà còn có the di chuyen các phân vùng d có theo˙ý
˙ ´
¯ı
˙’
ˆ
˙ ’
ˆ ¯ã
˙
muon.´ˆ
Thu hai, chuong trình này (tham chí trong phiên ban dành cho DOS) cung cap mot giao
´’ ’’ ˆ ’ ´
ˆ ˆ
` ˜ ’’ ˜ ’ ˙
dien d ˆ hoa de su dung có ho tro chuot, và moi thao tác cung nhu thay d ˆ’i d ˆ u thay rõ ràng. ` ´ ˙
ˆ ¯o ˆ ˆ ˆ ˜ ’ ¯o ¯e ˆ
Dieu này ˙ ´ t quan trong voi ngu˙`’i dùng moi. ˙
¯
˙`
ˆ raˆ
˙ ´’ ’o
˙ ´’
˙ `
Khi tao phân vùng can d ˆ’ ý không cho ranh gioi giua các phân vùng cat lan nhau.
´’ ˜’ ˘ ˜
´ ˆ
ˆ ¯e
˙ ’ cho rang, nhung thông tin d d a d ’ d ’ ban d c lap ke hoach và thuc hien viec
`
Tác gia ˘ ˜’ ¯ã ¯u ¯u ¯e
’ ˆ ¯o ˆ ´ ˆ ’ ˆ ˆ
phân chia o ¯ı ’ d˜a thành các phân vùng. Vì the tiep theo chúng ta˙se xem xét các phuong án cài
ˆ ´ ´
ˆ ˆ
˙ ˙
˜
˙ ˙
’’
˙ ˙
d ˘ t hai HDH trên mot máy tính.
¯a ¯ ˆ
˙ ˙
2.6 ’’ ¯ ˆ ’
Windows NT và Linux: khoi dong qua OS Loader cua NT
˙
` ` ` ˆ’ ’
Trong phan này, khi nói ve Windows NT xin ngam hieu ca Windows 2000 và NT, vì "quan
ˆ ˆ ˆ
he" cua chúng d´ i voi viec cài d ˘ t Linux hoàn toàn giong nhau. Chúng ta gia thiet là Windows
ˆ ’ ¯o ´’ ˆ
ˆ ¯a ´
ˆ ’ ´ ˆ
˙ d d oc cài vào phân vùng ˙
NT ¯ã ¯u ’ ˙ /dev/hda2 (ne ´ u nhu ban d c nho, /dev/hda1 se dành cho
´’
’ ˆ ’ ¯o ˜
˙ ´ ˙ ˙
phân vùng FAT16). Neu HDH Windows NT d d ’oc cài d ˘ t, nghıa là trình khoi d ˆ ng OS ’’ ¯o
ˆ ¯ ¯ã ¯u ’ ¯a ˜
Loader cung d d ’oc cài d ˘ t. Và nhu the có the su dung chuong trình này d ˆ’ khoi d ˆ ng˙ Linux.
˜ ¯ã ¯u ’ ¯a ’ ´
ˆ ˆ’ ’’
˙
’’
˙
¯e ’’ ¯o
Tác gia hy vong ra˙ ban ˙¯oc d sao luu nhung thông tin có giá tri cua mình. Các buoc cài
’ `
˘ ng d ¯ã ’ ˜’
˙ ’ ˙
’´’
d ˘ t có the
¯a ’ mô ta nhu sau: ˙
ˆ
˙ ’
’
˙ ˙
˙
´
1. Neu nhu ban d c chua cài d ˘ t Linux bao gio, thì truoc khi bat d ˆ u can chuan bi d˜a
ˆ ’ ¯o ’ ¯a `’ ’´’ ´ ¯a ˆ
˘ ` ` ˆ’ ¯ı
`
mem khoi d ˆ ’’ ¯o˙ ng và phuc hoi˙Windows NT. De tao d a mem khoi d ng chı can ˙ nh
˙ ` ’ ` ’’ ¯o ` ¯i
’ ˆ d
ˆ ˆ ¯ ˆ ¯ı˜ ˆ ˆ
dang lai d˜a mem, roi sao chép lên d các tap tin ˙
¯ı
˙ `
ˆ ` ˙
ˆ ¯ó ˆ
˙
ntldr, ntdetect.com và boot.ini tu ˙ ’ `’ thu
˙ c goc cua o d a khoi d ng NT. Chuong trình tao d a phuc hoi Windows 2000/XP có
mu ˆ ´˙ ’ ’ ’’ ¯o ˙ `
ˆ ¯ı˜ ˆ ’’ ˜
¯ı ˆ
˙ ˙ ˙ ˙
ˆ’ `’ ¯o ˆ ´
the chay tu trình d ’n he thong (lenh Backup trong Start/Program/Accessories).
ˆ ˆ
˙ ˙ ˙
2. Dùng chuong trình Partition Magic d ˆ’ lay mot phan d˜a trong và tu d tao ra phân vùng
’’ ¯e ´ ˆ ˆ ˆ ¯ı ´
` ˆ `’ ¯ó
˙ ˙
´’ ˆ ´
voi dang ext2(3) (he thong tap tin Linux) và phân vùng swap. Cách tính kích thuoc cua
ˆ ˆ ’´’ ’
chúng ¯ã ˙ d nói o trên.
’’ ˙ ˙
¯a ˜
3. Cài d ˘ t Linux theo chı dan cua ban phân phoi. Trong khi cài d ˘ t can chú ý d´ n nhung
’ ˆ ’ ’ ´
ˆ ¯a ˆ ` ¯e
ˆ ˜’
˙
d ˆ’m sau: ˙
¯ie
18 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
´’ ´ ´ ¯i
• thu nhat, trong quá trình cài d ˘ t nhat d nh phai tao ra các d˜a mem khoi d ˆ ng
ˆ ¯a ˆ ’ ¯ı ˆ` ’’ ¯o
` ˙ ˙ ˙ (hay tuong tu the, tùy thuoc ´ ˙
ˆ ’ `’
Linux. Tuc là can tra loi "Yes, make a BOOT DISK"
´’ ’’ ’ ˆ ˆ
vào ban phân phoi) khi d ’oc hoi có tao d˜a mem khoi d ˆ ng hay không. ¯ ˜a me˙
’ ´
ˆ ¯u ’ ’ ¯ı `
ˆ ’’ ¯o ˙ Dı `
ˆm
này se d ’oc dùng d ˆ
˜ ¯u ’ ¯e ’’ ˙ ˙
´ n o sau. Ngoài ra, có the su dung d˜a mem này d ˆ’ khoi d ˆ ng
’ ’’
ˆ ¯ı
˙ `
ˆ ¯e ’’ ¯o
D˙ ˜ ˆ ’’ ’’ ¯o
Linux. ¯ ây cung là mot phuong án khoi d ˆ ng, và hon nua khác voi d˜a mem khoi ˙
’ ˜’ ´’ ¯ı ˆ` ˙ ’’
˙’ i d ng he thong không còn yêu cau d a mem nua, có the
˙
d ˆ ng DOS, sau khi kho ¯o
¯o ’ ˆ ˆ ´ ˆ ` ˜
ˆ ¯ı `
ˆ ˜’ ˆ’
˙ nó ra khoi o, su dung o˙d ’ d ˙c các d a mem khác. Tuy nhiên cách khoi d ng
’ ˆ’ ’’
bo ’ ˆ’ ¯e ¯o
ˆ ˜
¯ı ˆ` ’’ ¯o ˆ
này cung có d ˆ u tien, ` ´ ˙
˙ vì the không nên su dung thuong xuyên. Chı su dung trong
’’ ’ ’’ ˙
˜ ¯ie ˆ ˆ ’`’
truong hop "bat d ´ c ˜ ¯ ˜
´ ¯a ˙ dı". Dıa mem này còn ˙ `n thiet cho cau hình d ’ khoi d ng
` ca ´ ´ ˙ ’
’`’ ’ ˆ ˘ ˆ ˆ ˆ ˆ ¯e
ˆ ’ ¯oˆ
`
nhieu HD ˙ H. ˙
ˆ ¯
´’ ¯a ˆ`
• thu hai, khi cài d ˘ t Linux can cài LILO vào sector d ˆ u tiên cua phân vùng dành ¯a` ’
cho thu muc go
’ ´ c ˙(/) cua Linux, chu không phai vào sector khoi d ˆ ng chính cua
ˆ ’ ´’ ’ ’’ ¯o ’
˙ ’ ´
d˜a (MBR). Chúng ta gia thiet Linux d ’oc cài vào phân vùng /dev/hda3. Nhu ˙
¯ı ˆ ¯u ’ ’
vay LILO se d ’oc cài vào sector d ˆ u tiên cua /dev/hda3 ` ˙ ’
ˆ ˜ ¯u ’ ¯a
˙ ˙
´
˘ ´
Theo nguyên tac, neu nhu ban d c cài LILO vào MBR, thì không phai moi thu d hong
ˆ ’ ¯o ’ ´’ ¯ã ’
he´ t. Ket qua cuoi cùng (kho˙i d ˆ˙ qua NT Loader) van có the d t d ’oc ˙nhung can bo
ˆ ´ˆ ’ ˆ ´ ’’ ¯ong ˜
ˆ ’ ¯a ¯u ’
ˆ ’ `
ˆ ’
´’ ´ ¯e ’’ ˆ ˙ ˜, d nh dang MBR tao boi LILO và Windows (DOS) ˙ ˙
ra mot chút công suc. Van d ˆ o cho ¯i
ˆ ˆ ` ’’
khác ˙ nhau. Vì the neu ban d c cài LILO ˙vào MBR,˙ thì cau phuc hoi lai MBR cua
´ ´ ˙ ` ` ’
ˆ ˆ ¯o ˆ ˆ
Windows. Tác gia ˜ ’ cung se nói cách phuc hoi, nhung tot hon het là ban d˙ c cài LILO
˙ ˙
˜ `
ˆ ’ ´
ˆ ’ ˆ ´ ˙ ¯o
` ’
ngay lap tuc vào sector d ˆ u tiên cua phân vùng d cài Linux. ˙ ˙ ˙
ˆ ´’ ¯a ¯ã
˙
¯a ’’ ¯o `
4. Sau khi cài d ˘ t xong, khoi d ˆ ng Linux bang d˜a mem (neu nhu ban d c cài LILO vào
˘ ¯ı `
ˆ ´
ˆ ’ ¯o
phân vùng cua ’ ˙ Linux và không d ng gì d´ n MBR, thì d là kha nang˙ duy nhat).
˙ ’ ˙˘ ´
¯oˆ ¯eˆ ¯ây ˆ
˙
5. Sao chép sector khoi d ˆ ng cua Linux vào mot tap tin; tap tin này se can d ˆ’ trình khoi
’’ ¯o ’ ˆ ˆ ˆ ˜ ˆ ¯e` ’’
d ˆ ng Windows NT/2000 ˙ có the khoi d ng Linux. Viec sao chép thuc hien nhu sau: d `u
’ ’’ ¯o ˙ ˙ ˙
¯o ˆ ˆ ˆ ’ ˆ ’ ¯a
ˆ
˙ gan mot d a mem trang (moi mua ˙thì càng tot), ˙
tiên ˘ ´ ` ´
˘ ´’ ´ ˙ ˙
ˆ ¯ı ˜ ˆ ˆ
˙
kênh giao tác
[root]# mount -t vfat /dev/fd0 /mnt/floppy
ˆ’
chuyen vào thu muc /mnt/floppy
’
˙
kênh giao tác
[root]# cd /mnt/floppy
và thuc hien câu lenh
’ ˆ ˆ
˙ ˙ ˙
kênh giao tác
[root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1
d ˆ’ ghi noi dung sector khoi d ˆ ng cua d˜a /dev/hda3 vào tap tin /mnt/floppy/bootsect.lnx.
¯e ˆ ’’ ¯o ’ ¯ı ˆ
1 ˙ ˙ ˙
6. Tiep theo can khoi d ˆ ng lai d ˆ’ vào Windows NT, bang câu lenh:
´
ˆ `
ˆ ’’ ¯o ¯e `
˘ ˆ
˙ ˙ ˙
1 ´ ¯ı
ˆ ¯i ˆ’ ˆ ’ ´ ’
Ghi chú: neu d˜a C: (/dev/hda1) có d nh dang FAT, thì có the tao tap tin bootsect.lnx trong thu muc goc cua
ˆ
d˜a C:. Tác gia không biet (chua thu) có˙the khoi d ˆ ng không can d˜a mem không, neu phân vùng ˙chính d ˆ u
¯ı ’ ´
ˆ ’ ’’ ˙
ˆ’ ’’ ¯o `˙ ˙ ˆ
ˆ ¯ı ` ´
ˆ ¯a`
˙ ´ ¯e
¯i ’’ ¯ây ˜ ˆ ` ’ ˆ` ’’ ¯o
tiên có d nh dang NTFS. Tuy nhiên o d cung không có van d ˆ gì, chı can sao chép sector khoi d ˆ ng qua d˜a ¯ı
mem nhu d ˙ trình bày. Tam thoi nhân Linux còn chua ho tro tot viec ghi lên phân vùng NTFS. ˙
`
ˆ
˙
’ ¯ang `’ ˜
’ ˆ ’ ´ ˆ ˆ
˙ ˙ ˙
’’ ¯ ˆ ’
2.6 Windows NT và Linux: khoi dong qua OS Loader cua NT 19
˙
kênh giao tác
[root]# shutdown -h now
Vì MBR chua có gì thay d ˆ’i, nên Windows NT se khoi d ˆ ng. Trong NT can sao chép
’ ¯o ˜ ’’ ¯o ˆ`
´ ’ ¯ı
tap tin bootsect.lnx vào thu muc goc cua d˜a C:, hay chính ˙ xác hon là vào thu muc goc ´
ˆ ’ ˆ ’ ’ ˆ
˙’ a phân vùng mà tu d khoi d ng Windows NT. Dây có the là phân vùng FAT16 hay
cu `’ ¯ó ’’ ˙¯o ’ ˙
ˆ ¯ ˆ
phân vùng NTFS. ¯ ac d ˆ’m d ˆ’˙ nhan ra phân vùng này là hai tap tin ntldr và boot.init
D ˘ ¯ie ¯e ˆ ˆ
˙ ’’ ˙
˙ tap tin này có the an!). Tap tin bootsect.lnx có the d ˘ t thuoc tính
chua trong d (nhung ˆ
´’ ¯ó ˜’ ˆˆ ˆ ˆ’ ¯a ˆ
’ ¯o
chı d c (read-only). ˙ ˙ ˙ ˙
˙
7. Sau d tìm tap tin boot.ini và thêm vào dòng sau:
¯ó ˆ
˙
C:bootsect.lnx="LINUX"
´
ˆ ´
ˆ ˘ ¯o ˆ’ ¯a
(tat nhiên, trong dau ngoac kép ban d c có the d ˘ t tên bat ky.) ´ `
ˆ
˙ ˙ ˙ ˙
ˆ ’’ ¯o `
8. Viec còn lai là khoi d ˆ ng lai máy tính mot lan nua, và trong trình d ’n chon he d ˆ u
ˆ ˆ ˜’ ¯o `
ˆ ¯ie
˙ se có˙LINUX. Neu chon LINUX, thì˙LILO se d oc chay và sau d nó ˙(LILO) se
hành ˜ ´˙ ˙ ˙
ˆ ˜ ¯u ’
’ ¯ó ˜
nap Linux. ˙ ˙ ˙
˙
`’ ˜ ’`’ ’ ¯o ´
Còn bây gio chúng ta se xem xét truong hop ban d c (do vô tình hay co ý) cài d ˘ t LILO
ˆ ¯a
’ ’’ ¯o ’ ¯ı ˙ ˙ ˙ MBR). Trong truong hop ˙ ban
vào ban ghi khoi d ˆ ng chính cua d˜a (Master Boot Record, ’`’ ’ này ’
’’ ¯o ˙ ’’ ¯o
ghi khoi d ˆ ng Windows NT (hay 2000) se bi xóa, và viec khoi d ˆ ng Windows NT (buoc thu ˙
˜ ˆ ’´’ ´’
6 o trên) là không the. Neu nhu ban d c van còn muon˙ su dung ˙trình khoi d ˆ ng OS Loader
’’ ˙ ’ ´
ˆ ˆ ’ ¯o ˆ ˜˙ ´ ’’
ˆ ’’ ¯o
cua NT, chu không muon dùng LILO, thì nhung buoc trên ˙ thay d ˆ’i mot ˙chút: thay cho
’ ´’ ´
ˆ
˙ ˙
˜’ ’´’ có ¯o ˆ
buoc thu 6 ca `n làm các thao tác sau. ˙
’´’ ´’ ˆ
’’ ¯o `’ ¯ı `
ˆ ’’ ¯o
1. Khoi d ˆ ng Windows NT tu d˜a mem khoi d ˆ ng (d tao truoc khi cài d ˘ t Linux, neu
¯ã ’´’ ¯a ´
ˆ
không có ˙ thì ban d c can tìm mot máy khác ˙d
` ˙y Windows NT roi tao). Trong
˙
`
¯o ˆ ˆ ¯ang cha ˆ
trình d ’n (thuc d ’n) cua trình khoi d ˆ ng can chon ˙lenh Recover, roi chon che d ˆ
¯o ’
˙ ˙ ’
¯o
˙ ’
’ ¯o `
ˆ ˆ `
ˆ
˙ ´ ¯o
ˆ
Command mode. ˙ Sau d d ˘ ng nhap vào tài khoan nhà quan tri (administrator).
˙ ’ ˙ ˙ ’ ˙ ˙
¯ó ¯a ˆ
˙ ˙
2. Phuc ho ˆ`i lai ban ghi khoi d ˆ ng chính cua d˜a. Su dung câu lenh fdisk /mbr. Tác gia
’ ’’ ¯o ’ ¯ı ’’ ˆ ’
dùng lenh ˙ thành công, mac dù trong mot so bài ˙ nói cách phuc hoi MBR nhu
˙
ˆ này ˙˘
ˆ ˆ ´ báo ˙ `
ˆ ’
˙ ’ ˙ ˙
vay không phai lúc nào cung làm viec. Trong Windows 2000 có các lenh chuyên dùng ˙
ˆ ˜ ˆ ˆ
˙ ˙ ˙
`’ ˆ ˆ ´
`
fixboot và fixmbr (chay tu console phuc hoi he thong). Chay hai lenh này theo thu tu
ˆ ˆ ´’ ’
d chı ra. Sau d Windows 2000 se khoi d ˆ ng ˙
¯ã ’ ¯ó
˙ ˙
˜ ’’ ¯o bình thuong. ’`’ ˙ ˙ ˙
˙
’’ ¯o `’ ¯ı `
ˆ ’’ ¯o
3. Khoi d ˆ ng lai máy tính tu d˜a mem khoi d ˆ ng Linux và d ˘ ng nhap vào he thong voi
¯a ˆ ˆ ´ ˆ ´’
quye `n nguoi˙dùng root.
ˆ
˙ `
’’
˙ ˙ ˙
ˆ ˆ ’’ ˆ ’’ ¯a ˆ
4. Nhap lenh cd /etc và mo tap tin lilo.conf. O d ˆ u tap tin này có liên ket d´ n phân
` ´ ¯e
ˆ ˆ
vùng ˙ khoi d ng theo mac d nh, ví du, /dev/hda.
˙’ ˘ ¯i ˙ ˙
’ ¯o
ˆ
˙ ˙ ˙ ˙
5. Dùng bat ky trình soan thao nào, ví du, CoolEdit cua Midnight Commander, d ˆ’ thay
´ `
ˆ ’ ’ ¯e
´ ˙
the giá tri này thành phân vùng d cài ˙ Linux lên (chính xác hon là thành phân vùng
ˆ ¯ã ’
d ’oc gan˙nhu goc (/) cua Linux). Neu Linux d ’oc cài vào phân vùng /dev/hda3, thì
¯u ’ ´ ˘ ’ ´
ˆ ’ ´
ˆ ¯u ’
`
can ˙ ghi cái d tuc là thay the /dev/hda thành ˙
´ ´
/dev/hda3. Neu nhu ban d c không
ˆ ¯ó, ´’ ˆ ˆ ’ ¯o
nho d cài Linux vào d thì hãy chay câu lenh mount và tìm ke
´’ ¯ã ¯âu, ˆ ´ t qua ˙tuong tu nhu
ˆ ’ ’’˙ ’ ’
sau2 : ˙ ˙ ˙
2 ´ ´
có nghıa là tìm phân vùng d gan vào thu muc goc /, trong ví du này là /dev/hda3
˜ ¯ã ˘ ’ ˆ
˙ ˙
20 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
kênh giao tác
/dev/hda3 on / type reiserfs (rw)
6. Chay lenh /sbin/lilo d ˆ’ ghi trình khoi d ˆ ng vào phân vùng /dev/hda3 (can chay
ˆ ¯e ’’ ¯o `
ˆ
lenh ˙ lilo không có tham so). Se có canh báo ve viec phân vùng không phai là d ˙ u
˙ ´ ’ ˙ ` ’ `
ˆ ˆ ˜ ˆ ˆ ¯a
ˆ
˙ trên d a. Dây chính là d `u chúng ta can, ban ghi khoi d ng cua Windows d oc giu
tiên ` ’ ˙ ’ ’
˜
¯ı ¯ ¯ie
ˆ ˆ ’ ¯o
ˆ ¯u ’ ˜’
’
nguyên ven. ˙ ˙
˙
’ ˆ ’´’ ’ ’’
7. Thuc hien các buoc 6-8 nhu o trên.
˙ ˙
˜
De dàng d
ˆ `
˘ ´’ ´’ `
ˆ ’’ ¯o ’ ¯e ˆ’
¯oán ra rang, "quy trình" phuc tap voi hai lan khoi d ˆ ng lai chı d ˆ’ chuyen sector
`
khoi d ˆ ng Linux tu MBR vào sector d ˆ u tiên ’
’’ ¯o `’ ˙ ˙
˙ cua phân vùng dành cho Linux, và phuc hoi `
¯a ˆ
MBR cu ˙’ a Windows. ˙
´ ’’ ¯ây. ˆ’ ˜ ’’ ¯o
Quá trình cài d ˘ t Linux ket thúc o d Ban d c d có the chon HDH se khoi d ˆ ng và d ˆ u
¯a ˆ ¯o ¯ã `
¯ie
˙ mình. ˙ ˙ ˙ ¯ ˙
ˆ’
khien máy tính cua ’
2.7 ’’ ’’ ¯ ˆ
Su dung trình khoi dong LILO
˙ ˙
2.7.1 ´
ˆ
Cài dat và cau hình LILO
¯˘
˙
’ ¯ã `
ˆ ’ ’’ ’’ ¯o ´
Nhu d nói trong phan lua chon chuong trình khoi d ˆ ng, neu trên máy d cài Windows 98
ˆ ¯ã
´’ ˆ ´
voi he thong tap tin FAT16,˙ thì˙ lua chon tot hon cho trình khoi d ng là chuong trình có trong
´ ’ ˙ ’’ ¯o
ˆ ˆ ’ ˆ ˆ ’’
thành˙ phan cu˙ moi ban phân phoi HDH Linux – LILO (LInux LOader).
`
ˆ ’a ’ ˙´
ˆ ¯
˙ ˙
˙
Giong nhu truong hop Windows NT, chúng ta se d ’a ra các buoc can thuc hien d ˆ’ có the
´
ˆ ’ ’`’ ’ ˜ ¯u `
’´’ ˆ ’ ˆ ¯e ˆ’
’’ ¯o `
khoi d ˆ ng nhieu HDH. ˙ ˙ ˙
ˆ ¯
˙
’´’ ¯a ˆ’ ¯ı `
ˆ ’’ ¯o
1. Truoc khi cài d ˘ t Linux hãy chuan bi d˜a mem khoi d ˆ ng Windows.
˙ ˙ ˙
2. Dùng chuong trình Partition Magic d ˆ ˆ
’’ ’ lay phan không gian d˜a còn trong và trên d
¯e ´ `
ˆ ¯ı ´
ˆ ¯ó
ˆ ´
tao ra mot phân vùng ext2(3) (he thong tap tin Linux) và mot phân vùng swap. Cách
ˆ ˆ ˆ ˆ
chia o d˜˙ d nói o trên. Neu dung luong o d˜a cung vuot quá˙8,4 Gbyte thì hãy d c ky
˙ ’ a
ˆ ¯ı ¯ã ’’ ´ˆ
˙ ˙
’ ’ ˆ’ ¯ı ´’ ’’ ¯o ˜
`
các phan 2.3 và 2.5. ˙ ˙ ˙
ˆ
¯a ˜
’ ˆ ¯i ´’ ’ ´ ` ` ´
3. Cài d ˘ t Linux theo chı dan d kèm voi ban phân phoi. Can nho rang, neu ban muon su
ˆ ˆ ´’ ˘ ˆ ´ ’’
ˆ
˙ ’’ ¯o `
dung trình khoi d ˆ ng LILO, thì trong quá trình cài dat Linux can chon phu ’
˘ ˙ ong án cài
ˆ ’
LILO vào ban ghi˙khoi d ˆ ng chính (Master Boot Record). Tao các d˜a mem khoi d ˆ ng
˙ ’ ’’ ¯o ˙
¯ı
˙ `
ˆ ’’ ¯o
´
theo nguyên tac là không ˘
˘ ˙bat buoc, nhung tác gia khuyên ba˙ d c nên làm.3
´ ’ n ¯o ˙
ˆ ’
˙ ˙ ˙
4. Buoc tiep theo can cau hình LILO d ˆ’ có the khoi d ˆ ng các HDH theo lua chon. LILO
’´’ ´ ˆ ˆ ´
` ˆ ¯e ˆ’ ’’ ¯o ¯ ’
d ’oc ca
¯u ’ ˆ ´ u hình bang tap tin /etc/lilo.conf và câu lenh /sbin/lilo˙. Câu˙lenh này
`
˘ ˆ
˙
ˆ ˆ
˙ d ’ cài d ˘ t (hay ˙ d ˘ t lai) LILO.
dùng ¯e cài ¯a ˙ ˙
ˆ ¯a
˙ ˙ ˙
’ ’ ˆ ´
Chúng ta xem xét mot ví du nho cua tap tin cau hình LILO. Trong ví du này chúng
ˆ ˆ
˙ /dev/hda1 là phân vùng voi DOS/Windows, còn phân vùng
˙ ˙ ˙
˜ ’ ´
ta se coi nhu thiet bi ˆ ´’
˙
3 ’’ ¯o ´ ’ ’ ’’ ¯o ’ ¯ı
Ghi chú. Trình khoi d ˆ ng LILO không bat buoc phai cài d ˘ t vào ban ghi khoi d ˆ ng chính cua d˜a, LILO
˘ ˆ ¯a
ˆ’ ˘ ’’ ’
` ’’ ˙ ’ ˙ ˙ ˙´ ’
có the nam o ban ghi khoi d ˆ ng cua phân vùng chính d ’oc kích hoat và chua thu muc goc cua Linux hoac tham
¯o ¯u ’ ´’ ’ ˆ ˘ ˆ
˙ ’’ ˆ ˙ ˙ ` ˙ ’ ’ ˘
chí trên phân vùng lôgíc trong phân vùng mo rong. Trong truong hop d MBR can phai có kha nang nap LILO,
`’ ˙ ˙
’ ’ ¯ó ˆ
’’ ¯o ’
ví du khi MBR là trình khoi d ˆ ng cua MS-DOS ˙ hay Windows. Tuy nhiên tác gia chua nhìn thay su ˙can thiet
˙ ’ ´ ` ´
’ ˆ ’ ˆ ˆ
cua ung dung này (neu d chon˙LILO làm trình khoi d ˆ ng chính thì hãy su dung cho "tron bo"), vì the chúng ta
’ ˙’´ ´ ¯ã
ˆ ’’ ¯o ’’ ˆ
˙
´
ˆ
˙
se không xem xét d´ n. ˙ ˙ ˙ ˙ ˙
˜ ¯eˆ
’’ ’’ ¯ ˆ
2.7 Su dung trình khoi dong LILO 21
˙ ˙
’`’ ’ ¯ó `
/dev/hda2 chua Linux. Trong truong hop d /etc/lilo.conf có dang gan nhu
´’ ˆ ’
sau: ˙ ˙
kênh giao tác
boot = /dev/hda2
compact
delay = 50
# message = /boot/bootmesg.txt
root = current
image = /boot/vmlinuz-2.4.22
label = linux
read-only
other = /dev/hda1
table = /dev/hda
label = dos
`’ ’
Vài loi giai thích cho ví du: Dòng boot cho biet thiet bi khoi d ˆ ng. ´
ˆ ´
ˆ ’’ ¯o
˙ ˙ ˙
ˆ ´ ¯o
Dòng compact bat che d ˆ nén tap tin map – tap tin chua d ˘ c tính cua nhân d ’oc khoi
ˆ ˆ ˆ ´’ ¯a ’ ¯u ’ ’’
d ˆ ng; tính nang (nén) ˘ ˙ này˙tang toc d cua khoi d ng d `u. ˙
˘ ˙
´ ¯o ’ ˙
’’ ¯o ¯a ˙
¯o ˆ ˆ ˆ ˆ
˙ ˙ ˙
Câu lenh message dùng d ˆ’ d ’a ra thông báo theo ý muon khi khoi d ˆ ng.
ˆ ¯e ¯u ´
ˆ ’’ ¯o
˙ ˙
´ ` ` ’ ’ ˆ
Bat d ˆ u tu dòng image là các phan nho cua tap tin cau hình, moi phan tuong ung voi
˘ ¯a `’ ˆ ´
ˆ ˜
ˆ `
ˆ ’ ’ ´’ ´’
` ˙’ a nguoi dùng. Trong moi phan nhu vay ˜ `
ˆ ˆ ¯ie ˜ ’’ ¯o
mot he d ˆ u hành se khoi d ˆ ng theo lua chon cu ’ ’`’ ˆ ˆ ’ ˆ
có ˆ˙ mo˙t dòng label. Trên ˙ dòng này ˙ghi tên can nhap vào dau nhac LILO hay tên ˙
˙ ` ´ ´
˘ se
ˆ ˆ ˆ ˜
˙
hien thi trong trình d ’n cua LILO d ˆ’ có the chon HDH muon khoi d ˆ ng. Neu nhu tên ˙
ˆ’ ¯o ’ ¯e ˆ’ ¯ ´
ˆ ’’ ¯o ´
ˆ ’
˙
không d ’oc nhap sau khoang thoi gian chı trên ˙
¯u ’ ˆ ’ `’ ’ dòng delay (tính theo phan muoi giây ˙ `
ˆ ’`’
– can nhân voi˙ 0,1 giây), thì se khoi d ˆ ng HDH theo mac d nh. Trong ví du này, se
ˆ` ˙ ´
’ ˜ ’’ ¯o ˘ ¯i ˜
khoi d ˆ ng Linux theo mac d nh, vì phan ´
’’ ¯o ˘ ¯i `˙ cau ¯hình tuong ˙ung˙voi Linux nam˙d `u tiên `
ˆ ˆ ’ ’ ´’ ´’ ˘ ¯a ˆ
˙ ˙ ˙ `
ˆ ˆ’ ’
trong tap tin. Có the chı ra he d ˆ u hành d ’oc khoi d ˆ ng theo mac d nh khi thêm mot
ˆ ¯ie ¯u ’ ’’ ¯o ˘ ¯i ˆ
dòng có ˙ dang default=dos˙, tuc là su dung tên d d ˘ t trên dòng˙ label.
´’ ’’ ˙ ˙ ˙ ˙
¯ã ¯a
˙ ˙ ˙
´ˆ ´
Dòng table=<device> cho biet tên thiet bi chua bang phân chia d˜a. LILO se không
ˆ ´’ ’ ¯ı ˜
d ’a thông tin ve
¯u ˆ ¯ı ˆ ¯ie ` ˙
` phân chia d˜a cho he d ˆ u hành d ’oc khoi d ˆ ng neu bien này không
¯u ’ ’’ ¯o ´ˆ ´
ˆ
d ’oc d ’a ra. (Mot so he d ˆ u hành có công cu khác ˙¯e xác d nh là d d ’oc khoi d ˆ ng
¯u ’ ¯u ˆ ´ ˆ ¯ie
ˆ ` ˙ d ˆ’ ¯i
˙
¯ã ¯u ’ ’’ ¯o
˙
tu phân vùng nào.) ¯ `’ ˙ Dung quên rang, can thuc ˙ n câu lenh /sbin/lilo,˙ sau khi thay
˙ ` ` ˙ ˙
`’ ˘ ˆ ’ hie ˆ ˆ
˙ ˙
d ˆ’i chı dan d´ n bang phân chia d˜a, tuc là thay d ˆ’i bien table. Neu d ˘ t dòng (goi
˜ ˆ ˙
¯o ’ ˆ ¯e ’ ¯ı ´’ ¯o ´ ˆ ´ ¯a
ˆ
` ’ ´
là phan nho thì tot hon) other = /dev/hda1 trong tap tin /etc/lilo.conf, thì ˙ ˙
ˆ ˆ ’ ˆ
´ ’ ¯ı
trong thu muc goc cua d˜a /dev/hda1 (d˜a C: trong he tho ˙´ ng thuat ngu Microsoft) can `
’ ˆ ¯ı ˆ ˆ ˆ ˜’ ˆ
có trình khoi ¯o ˙ d ng phu (không phai là chính). Trên mo˙t máy cua tác gia o d nam trình
’’ ˆ ’ ’ ˙ ’ ’’ ¯ó ˘ `
ˆ
’’ ¯o
khoi d ˆ ng NT Loader ˙ ˙(vì Windows NT d oc cài d ˘ t truoc Linux), và LILO khoi d ng
˙ ´ ’’ ¯o
¯u ’
’ ¯a ’ ’ ˆ
˙
thành công Windows NT. Chı ˆ ’ can d ˘ t tho˙ gian cho khoi d ˆ ng trong tap tin boot.ini
` ¯a `’i ˙` ’ ˙
’ ’ ¯o ˆ
bang không, d ˆ’ không thay trình d ’n ˙ ’’i d ˆ ng cua NT Loader. Tuy nhiên, neu vì mot
`
˘ ¯e ´
ˆ ¯o kho ¯o ’ ˙ ˙ ´
ˆ ˆ
lý do nào d ban muo ´ n thay trình d ’n này thì
´ ˙ giá tri timeout trong tap tin boot.ini ca˙n `
¯ó ˆ ˆ ¯o ˆ ˆ
˙ `
d ˘ t khác không (thoi gian cho d ’oc tính theo giây). ¯ ieu này có the can thiet khi muon
`’ ¯u ’ ˙ `
Dˆ ’ ˙ˆ ` ´ ´
¯a ’ ˆ ˆ ˆ
˙’ ’ `’ ˙ ¯o ’
khoi d ˆ ng ca Windows 98 tu trình d ’n cua NT Loader (trong truong hop này se có 3
’ ¯o ’`’ ’ ˜
HDH: ˙
¯ Linux, Windows NT và Windows 98, trong trình d ’n cua LILO˙ neu chon dos ¯o ’ ´
ˆ
thì se hien ra trình d ’n cua NT Loader roi tu d chon mot trong hai HDH Windows d ˆ’
` ˙
˜ ˆ ¯o ’ ˆ `’ ¯ó ˆ ¯ ¯e
’’ ¯o
khoi d ˆ ng). ˙ ˙ ˙
˙
´ ´ ’’ ¯o ’ ´ `’
Neu ban d c muon khoi d ˆ ng Windows truc tiep tu LILO, thì hãy thêm phan nho sau
ˆ ¯o ˆ ˆ `
ˆ ’
˙ ˙
vào /etc/lilo.conf: ˙ ˙
22 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
kênh giao tác
other = /boot/bootsect.dos
label = win
¯ó ´ `’ ’
ˆ ´ ’ ˆ’ ¯ı
trong d bootsect.dos lay tu thu muc goc cua o d˜a chua NT Loader.
ˆ ´’
˙
’’ ´
5. Sau khi sua xong tap tin /etc/lilo.conf theo ý muon, can chay câu lenh /sbin/lilo
ˆ ˆ ˆ ` ˆ
¯e’ nhung thay d ˆ’i có hieu luc. Câu lenh này (trong tài lieu ˙ ’ong dan goi là map-
d ˆ ˜’ ¯o
˙
ˆ ’ ˆ ˆ hu ´’
˙˜
ˆ
installer) cài d ˘ t trình kho ¯o ˙’ i d˙ ng phu, ˙mà se d oc kích hoat trong lan khoi˙ d ng tiep
˙ ` ’’ ¯o ´
¯a ’ ˆ ˜ ¯u ’’ ˆ ˆ ˆ
theo. Truoc khi ´’ ˙ chay /sbin/lilo d˙’ thay d ’i buoc khoi d ˙ ng, hãy thuc hien câu lenh
˙ ˙´ ’’ ¯o ˙
’ ¯eˆ ¯o ’ ’
ˆ ˆ ’ ˆ ˆ
´ ˙
ˆ ´ˆ ˜ ’ ˆ ´ ’
này voi tham so -t. Khi có tham so này se thuc hien tat ca các thu tuc cài d ˘ t trình
´’ ˆ
˙ ’ ˙ ˙
¯a
˙
khoi d ˆ ng, tru viec thay d ˆ’i tap tin map, ban ghi˙ sector khoi d ˆ ng, và bang phân chia o
’’ ¯o `’ ˆ ¯o ˆ ’ ˙ ’’ ¯o ˙
’ ˙
ˆ’
d˜a, tuc ˙ là chı chay thu cau hình moi. Neu cho thêm tùy chon˙ -v, thì ban d c se d oc
’ ˙ ’’ ´ ˙ ´’ ´
¯ı ´’ ˆ ˆ ¯o ˜ ¯u ’ ’
bie´ t thêm thông tin chi tiet ve nhung gì lenh /sbin/lilo se thuc hien.˙ ˙
ˆ
˙ ´ ˆ ˜’
ˆ ` ˆ
˙
˜ ’ ˆ
˙
˙ ˙ ˙
Khi /sbin/lilo ghi d noi dung moi lên sector khoi dong, thì noi dung cu cua
¯è ˆ ´’ ’’ ˆ ˆ ˜ ’
sector này se tu d ˆ ng d ’oc ˙ ghi nho vào mot tap tin. Theo mac d nh d là tap tin
´’ ˙ ˘ ˙
˜ ’ ¯o ¯u ’ ˆ ˆ ¯i ¯ó ˆ
˙ ´ ˙ ´ ´ ’ ˙´ ˙
˙ ˙ , trong d NNNN tuong ung voi so cua thiet bi, ví du, 0300 –
˙ ˙
/boot/boot.NNNN ¯ó ’’ ’ ’ ˆ ˆ
´ ˆ
tuong ung /dev/hda, 0800 – /dev/sda, v.v. . . Neu tap tin này d có trên d˜a, thì nó ˙ ˙
’ ’ ´’ ˆ ¯ã ¯ı
không bi ghi d lên. Tuy nhiên có the ¯a ˆ ’ d ˘ t mot tên khác d ˙ ’ ghi sector khoi d ng, không
’’ ¯o
¯è ˆ ¯e ˆ
nha ˆ ´˙
´ t thiet phai dùng /boot/boot.NNNN. ˙
ˆ ’ ˙ ˙
ˆ ˆ’ ’’
Tap tin /boot/boot.NNNN có the su dung d ˆ’ phuc hoi noi dung cu cua sector khoi
¯e `
ˆ ˆ ˜ ’ ’’
dˆ˙ ng, neu không còn cách phuc hoi nào ˙
´ ` khác d ’n gia ˙ ’ n hon. Câu lenh d ’ thuc hien có
˙
¯o ˆ ˆ ¯o ’ ˆ ¯e ’ ˆ
ˆ
da˙ng: ˙ ˙ ˙ ˙
˙
kênh giao tác
[root:~#] dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1
hay
kênh giao tác
[root:~#] dd if=/boot/boot.0800 of=/dev/hda bs=446 count=1
(bs=446 vì chı phuc hoi chuong trình khoi d ˆ ng, và không d ˆ ng gì d´ n bang phân chia
’ ˆ` ’’ ’’ ¯o ¯o ¯e ’
ˆ
d˜a). ˙ ˙ ˙
¯ı
˜ ˆ’ `
ˆ ˜ `
ˆ ´ ˘
ˆ `
Cung có the phuc hoi MBR cu khi can thiet bang câu lenh /sbin/lilo voi tùy chon
ˆ ´’
-u. Nhung ca ’ `n biet rang, câu lenh này chı làm viec d ˙ voi d ˆ u kien là thu muc LILO
ˆ
˙´ `
ˆ ˘ ˆ ’ ˆ ¯úng ´’ ¯ie ` ˆ ’
˙
(tuc là /boot) không thay d ˆ’i˙ ke tu khi cài d ˘ t. ˙
´’ ¯o ˆ’ `’ ¯a
˙ ˙
˙
’ ˆ’ ¯u ’ ` `
MBR cua MS-DOS có the d ’oc phuc hoi bang cách khoi d ˆ ng vào DOS tu d˜a mem
ˆ ˘ ’’ ¯o `’ ¯ı `
ˆ
(CD) ro ˆ`i chay câu lenh fdisk /mbr (xem trên). Lenh này chı ˙thay d ˆ’i mã chuong trình
ˆ
˙ ˙
ˆ ’ ¯o ’’
˙ ˙
khoi d ˆ ng nam trong MBR, mà không thay d ˆ’i bang phân chia d˜a.
’’ ¯o ` ˙
˘ ¯o ’ ¯ı
˙
’’ ¯o ` ’’ ¯o
6. Sau khi cài d ˘ t lai trình khoi d ˆ ng can khoi d ˆ ng lai máy tính và thu các phuong án
¯a ˆ ’’ ’’
˙ ˙
’’i d ˆ ng khác nhau d ˆ’ kiem tra.
kho ¯o ’ ˙ ˙ ˙
¯e ˆ
˙
D ˆ’ ´ ˆ ˆ` `
¯ e ket thúc phan nói ve LILO này chúng ta se xem xét vài khó khan có the xuat hien khi
ˆ ˜ ˘ ˆ’ ´ ˆˆ
’’ ´
su dung LILO, và cách khac phuc (neu có the).
˘ ´ ’ ˙
ˆ ˆ
Khi LILO d ’oc nap, nó d ’a˙ra màn hình tu "LILO". Khi này moi chu cái bieu thi su ket
˙
¯u ’ ¯u `’ ˜
ˆ ˜’ ˆ’ ’ ´ˆ
thúc mot hành d ˆ ˙ng nào d hay ket thúc mot buoc nap LILO. Neu khoi d ng bi bi˙ ngung
˙ ´ ´ ’’ ¯o ˙
ˆ ¯o ¯ó ˆ ˆ ’´’ ˆ ˆ ’
giua chung, thì qua so chu cái d ’a ra có the nhan d nh ˙ve nguyên nhân xuat hien van˙d ˆ .
˜’
˙
`’ ˙ ´
ˆ ˜’ ¯u
˙
ˆ’ ˆ ¯i `
ˆ ´ ˙ ˆ ˙´ ¯e
ˆ ˆ `
˙ ˙ ˙
’’ ’’ ¯ ˆ
2.7 Su dung trình khoi dong LILO 23
˙ ˙
˜’ ˆ ˆ` ’
• Không chu cái nào hien ra – không có phan nào cua LILO d ’oc nap. Hoac LILO không ¯u ’ ˘
d ’oc cài d ˘ t, hoac phân
˘ ˙ vùng chua LILO chua d oc kích hoat. ˙
´’ ˙ ˙
¯u ’ ¯a ’ ’ ¯u ’
˙ ˙ ˙ ˙ ˙
˜
ˆ ’’ ¯o
• L [mã loi] – trình khoi d ˆ ng chính d d ’oc nap và d chay (tuc là d nhan d ’oc quyen
¯ã ¯u ’ ¯ã ´’ ¯ã ˆ ¯u ’ ˆ`
˙ ˙ khoi d ng phu. Mã loi hai ˙ tu˙cho biet
˙ ’ ˙
`
¯ie ˆ’
d ˆ u khien), nhung nó không the nap trình
’ ˆ’ ’ ¯o ˆ ˜
ˆ ký ’ ´
ˆ
nguyên nhân cu the ’ ˆ ˆ’ cua van d ˆ (cách giai mã can tìm trong˙tài lieu ky thuat cua LILO).
´ ¯e ` ˙ ’
ˆ` ˙ ˆ ˜ ˆ ’
˙
Thông thuong ˙ van d ˆ nay sinh do o d˜a xau (có khuyet tat) hay không˙d ˘ t d
’`’ thì ´ ¯e ’
ˆ ` ’ ¯ı ´
ˆ ˆ ´ ˆ ˙
ˆ ¯a ¯úng cau ´
ˆ
trúc hình hoc cua d˜a. Neu LILO không dung lai o d mà ´
’ ¯ı ´ `’ ’’ ¯ây, ˙ tiep tuc d a ra˙ mot chuoi ˜
ˆ ˆ ¯u ’ ˆ ˆ
vô tan các mã ˆ ˙ loi, thì van d ` thuong de giai quyet.
˜ ´ ¯e ’`’ ˜ ’ ˙
´ ˙ ˙
ˆ ˆ ˆ ˆ ˆ
˙
’’ ¯o ¯ã ¯u ’ ’’ ¯o
• LI – trình khoi d ˆ ng chính d nap d ’oc trình khoi d ˆ ng phu, nhung không chay d ’oc ’ ¯u ’
nó. Có the ˆ’ là loi d˙ ’a cau trúc hình hoc ˙ ’ a d˜a, hoac tap tin boot/boot.b bi di˙chuyen
ˆ˜ ¯u ´ ˆ
˙ cu ¯ı ˘ ˆ ˙ ˙ ˙
ˆ’
mà nguoi dùng quên không chay /sbin/lilo. ˙ ˙
’`’
˙ ˙
˙
’’ ¯o
• LIL — trình khoi d ˆ ng phu d d ’oc chay, nhung nó không the nap bang mô ta tu tap
¯ã ¯u ’ ’ ˆ’ ’ ’ `’ ˆ
tin map. Nguyên nhân ’`’ ˙ thuong do ˙
˙ ˙t tat cua o d a hoac không d a d
khuye ˆ ’ ˆ’ ¯ı
´ ˙ ´ ˙
ˆ ˜ ˘ ¯u ¯úng cau trúc
’ ˆ
’ ¯ı
hình hoc cua d˜a. ˙ ˙
˙
’’ ¯o
• LIL? – trình khoi d ˆ ng phu d d ’oc nap vào d a chı không d
¯ã ¯u ’ ¯i ’ ¯úng. Thông thuong do loi
’`’ ˆ˜
d ’a ra ca
¯u ´ u trúc hình hoc cua d˜a hoac˙ tap tin /boot/boot.b bi di chuyen mà nguoi
ˆ
˙ ˙’
¯ı
˙ ˘
ˆ
˙ ’
ˆ ’`’
dùng quên không chay˙/sbin/lilo. ˙ ˙ ˙
˙
’ ’ ’
• LIL- – bang mô ta trong tap tin map bi phá huy. Thông thuong do loi d ’a ra cau trúc
ˆ ’`’ ˜
ˆ ¯u ´
ˆ
˙ /boot/boot.b bi di chuyen mà nguoi dùng quên không
˙
’ ¯ı
hình hoc cua d˜a hoac tap tin
˘ ˆ ˆ’ ’`’
chay /sbin/lilo.˙ ˙
˙ ˙
˙
´ ’ `
ˆ ’
• LILO – tat ca các phan cua LILO d ’oc nap thành công.
ˆ ¯u ’
˙ ˙
2.7.2 ˆ ¯ˆ`
Cài dat các he dieu hành khác sau Linux
¯˘
˙ ˙
’’ ¯o ’
Khi cài d ˘ t MS-DOS và Windows 95/98, trình khoi d ˆ ng cua chúng (không phu thuoc vào ý
¯a ˆ
´ ’˙ ˙ ´
muon cua ban d c) d ’oc ghi vào Master Boot Record (MBR), và dau kích hoat trong bang
ˆ ¯o ¯u ’ ˆ
˙ ˙ ’
˙ d oc chuyen sang phân vùng MS-DOS (Windows 95/98). Mà trình khoi d ng
phân vùng se ¯u ’ ˙ ˙ ’ ˙ ’’ ¯o
˜ ’ ˆ ˆ
˙
MS-DOS và Windows 95/98 chı ’ "biet" chuyen quyen d ˆ u khien cho sector d ˆ u tiên ˙ ’ a
´ ’ ` ¯ie` ’ ` cu
ˆ ˆ ˆ ˆ ¯a
’ ´ ´
ˆ ˆ ’ `
phân vùng kích hoat. Nhu the, neu nhu ban d c d ˆ u tiên cài d ˘ t Linux, và sau d moi cài d ˘ t
¯o ¯a ¯a ¯ó ´’ ¯a
Windows 95/98 hay ˙ MS-DOS, thì Linux˙se không the khoi d ˙ ng. Có the phuc hoi lai LILO
˙ ’ ’’ ¯o ’ ` ˙
˜ ˆ ˆ ˆ ˆ
`
˘ ˆ ´ˆ ¯u ’
˙
bang cách chay lenh /sbin/lilo (neu LILO d ’oc cài vào MBR), hoac kích ˙ t phân vùng
˘ hoa ˙
chua LILO (neu ˙
´’ ˙´ LILO d oc cài vào phân vùng chính).
ˆ ¯u ’
’
˙ ˙ ˙
˙
´ ¯e
ˆ ` ` ˆ’ ’
Khi có van d ˆ sau khi cài d ˘ t mot he d ˆ u hành khác sau Linux, thuong có the giai quyet
¯a ˆ ˆ ¯ie ’`’ ´
ˆ
` ’’ ¯o ˙bang d a mem khoi d ng, sua lai tap tin cau hình LILO (thêm
bang cách khoi d ˆ ng vào Linux ˘ ¯ı ˆ
˘ ` ˙ ˙ ` ’’ ¯o ’’ ´
˜ ˆ ˆ ˆ
phan nho cho HDH moi), roi chay /sbin/lilo. ˙
ˆ` ’ ¯
˙ ´’ ˆ ` ˙ ˙
˙
2.7.3 ˆ’
Chuyen thu muc /boot lên phân vùng DOS
’
˙
˜’ ’ ˆ ˜
´’ ´ ˆ ’ ’ ˘ ¯a ˆ `
ˆ ´
Nhung phiên ban nhân Linux moi nhat ho tro kha nang d ˘ t các tap tin can thiet trên giai d n
ˆ ¯oa
’’ ¯o ´
khoi d ˆ ng vào he thong tap tin MS-DOS (hay ˙ UMSDOS). Vì trong phan lon các truong hop
˙ ˙ ` ´’ `’ ˙
ˆ ˆ ˆ ˆ ’ ’
phân vùng DOS ˙chiem các vùng d˜a o d ˆ u (không có han che cua BIOS), nên cho phép giai
˙ ´
ˆ
˙ `
¯ı ’’ ¯a ´ ’
ˆ
˙’
˙
´ ˆ ´ ¯e ’ ˆ’ ¯ı ´’
` ˆ ` ˆ’ `
quyet nhieu van d ˆ cua o d˜a lon, khi mà thu muc /boot không the nam trên phân vùng dành
ˆ ’ ˘
cho Linux. ˙
24 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
D ˆ’ ’ ˆ ’’ ¯o ` ’’ ´ ¯o ¯o
¯ e thuc hien phuong án khoi d ˆ ng này, can phân vùng DOS o che d ˆ d ˙ c/ghi, tao trong
’’ ˆ ˆ
˙ muc (ví du, /dos/linux), và chuyen tat ca các tap tin tu thu muc /boot vào
˙ ˙ `’ ˙ ’ ˙
d mot thu
¯ó ˆ ’ ˆ’ ´ ’
ˆ ˆ
˙ muc /boot d ˙oc chuyen thành liên ket tuong trung d´ n˙ thu muc /dos/linux; vi trí
˙ ˙
d thu
¯ó; ’ ¯u ’
’ ˆ’ ´ ’’
ˆ ’ ¯eˆ ’
moi cu
´’ ’ a thu ’ ˙ ˙
˙ muc /boot can chı ra trong tap tin /etc/lilo.conf, và cuoi cùng chay lenh
˙ ` ´ ˙
’ ˆ ˆ ˆ ˆ
/sbin/lilo.
˙ ˙ ˙ ˙
2.8 ’’ ¯ ˆ `
Khoi dong Linux tu MS-DOS bang loadlin.exe
`’ ˘
˙
’ ˆ ’’ ¯o ˆ’ ˘ `
Không chı các tap tin khoi d ˆ ng và nhân có the nam trong phân vùng DOS, mà ca tien trình ’ ´ ˆ
’’i d ˆ ng Linux
kho ¯o ˙ nói chung có the d oc to chuc tu DOS. Kha nang này thuc hien nho chuong
˙ ’ ’ ´’ `’ ’ ˘ `’ ’ ’
ˆ ¯u ’ ˆ
’ ’ ˆ
trình d˙˘ c biet loadlin.exe, do Hans Lermen (lermen@elserv.ffm.fgan.de)˙viet.˙ Chuong trình
¯a ˆ
˙ ´
ˆ ’’
này thuong ˙ trên các d˜a cua ban phân phoi.4
˙` có
’’ ¯ı ’ ’ ´
ˆ
´ˆ ’’ ¯o `’ ˆ’ ´’
Loadlin.exe cung cap cách khoi d ˆ ng Linux tu o cung an toàn nhat, khi có phân vùng ´
ˆ
kích hoat là DOS hay Windows. Phuong ˙ án khoi d ng này d oc khuyên su dung cho nguoi
’’ ¯o ’’
’’ ˆ ¯u ’
’ ’`’
˙
dùng Linux moi. Pha ´’ ´’ ˙
`n lon nguoi dùng moi (và không chı ho) không d ’ kiên nhan d ˆ’ d c tài
’ ˙ ˙˜
ˆ ’`’ ´’ ¯u ˆ ¯e ¯o
lieu rat hay nhung rat dài (và lai viet trên tieng Anh nua) cua˙ LILO. Vì the ho thuong su ˙ ng
ˆ ´ ˆ ’ ´ˆ ´
ˆ ´
ˆ ˜’ ’ ´
ˆ ’`’ ’’ du
˙ ´ ˙ qua là không the khoi d ng d oc bat ky he d ˙`u hành nào (tác
’ ’’ ¯o ¯u ’ ´ ` ˆ ¯ie ˙
LILO không d ¯úng cách, và ket ’ ˆ ˆ ˆ ’ ˆ ˆ
gia cung d roi vào truong hop nhu vay). ¯ oi voi nhung nguoi˙dùng moi thì se thuan tien hon
’ ˜ ¯ã ’ ’`’ ’ ’ ˆ D´ ´’ ˜’ ˆ
˙
’`’ ´’ ˙ ˜ ˆ ˆ ’
khi su dung loadlin.exe d ˆ’ khoi d ˆ ng˙và bat d ˆ u tìm hieu Linux. Tuy nhiên, "không vào hang
’’ ˙
¯e ’’ ¯o ´ `
˘ ¯a ˆ’
˙ ˙
cop sao ˙ ˘ t d ’oc cop".
´
ba ¯u ’ ˙
˙ ˙ ˙ ` ’ `
’ ˆ ¯a
Chuong trình loadlin.exe không yêu cau phai cài d ˘ t, chı can d ˘ t chuong trình – tap tin
’’ ˆ ¯a ’’ ˆ
˙ d a mà DOS nhan ra. Có the ˙dùng
˙
’ ’
loadlin.exe và nhân (anh cua nhân) lên mot trong các ¯ı ˆ ˜ ˆ ˆ’
chuong trình này d ˆ’ khoi d ˆ ng Linux tu CD˙ hoac tu o d˜a trong mang mà˙không can su dung
’’ ¯e ’’ ¯o `’ ˘ `’ ˆ’ ¯ı `
ˆ ’’
` ’’ ¯o ’ ˘ ˙ng này bien loadlin.exe thành mot công cu tuyet voi d ’ khoi d ˙ ng
´ ˙ ˙
d˜a mem khoi d ˆ ng. Kha na
¯ı ˆ ˆ ˆ ˆ `’ ¯e ’’ ¯o
ˆ ˆ
Linux khi có van ¯e ´ ˙ d ˆ voi LILO.
ˆ ` ´’ ˙ ˙ ˙ ˙
’ ’ ´
Phiên ban 1.6 cua loadlin.exe làm viec voi moi cau hình DOS và có rat ít han che. Phiên
ˆ ´’ ˆ ´
ˆ ´ˆ
’
ban này có the ’’ ˙ ’˙
’ su dung bo nho mo rong; có the nap các nhân lon (các bzImage) và các anh ˙
ˆ ˆ ´’ ’’ ˆ ˆ ´’ ’
d˜a a
¯ı ’ ˆ
˙´ ˙
’ o (initrd) truc tiep vào vùng bo nho nam trên.˙ ˆ
˙ ´ `
’ ˘
˙ ˙
ˆ ’’
Viec su dung loadlin.exe không có nghıa là Linux làm viec duoi DOS, vì chuong trình
˜ ˆ ’´’ ’’
này ho ’ ˙ ˙’
˜ tro "khoi d ˆ ng lôgíc" cua máy tính, và sau d DOS d ’oc thay the hoàn toàn bang
’ ˙ ´ `
˘
ˆ ’ ¯o ¯ó ¯u ’ ˆ
Linux. Ne ´˙u nhu ban d c muon quay tro lai DOS, thì phai khoi d ˙ng lai máy tính, ví du, bang
˙ ´ ’’ ’ ’’ ¯o `
˘
ˆ ’ ¯o ˆ ˆ
câu lenh reboot. ˙ ˙ ˙ ˙ ˙ ˙
ˆ
˙
Nhu vay, can làm gì d ˆ’ có the su dung chuong trình loadlin.exe.
’ ˆ ˆ ` ¯e ˆ’ ’’ ’’
˙ ˙
’ ´ ´’ ˆ ’’
• Trên máy tính cua ban (tat nhiên voi bo xu lý 386 hoac cao hon) can cài d ˘ t DOS hay
ˆ ˘ ’ ˆ ` ¯a
WINDOWS 95. ˙ ˙ ˙ ˙
`
• Can có anh nén cua nhân Linux (zImage, bzImage)5 .
ˆ ’ ’
’’ ˆ’ ´
ˆ ¯ı ´ ’’
• Chuong trình loadlin.exe. Có the tìm thay trên d˜a phân phoi o dang không nén hay trong
ˆ
gói LOADLIN16.TGZ. Gói nén này còn chua huong da
´’ ’´’ ’’ ˙
˜n su dung DOCMANUAL.TXT,
ˆ
´ ˜ ˙ ´
tap tin tham so ví du DOCTEST.PAR, và huong dan cách d ’a các tham so DOCPARAMS.DOC
ˆ ˆ ’´’ ˆ ¯u ˆ
˙ ` ng quên rang chúng là nhung tap tin DOS).
(d ’ `
˘ ˙
¯u ˜’ ˆ
˙
4
ˆ ´ ’
ˆ ´
mot so ban phân phoi còn có gói cài d ˘ t cho chuong trình này, thông thuong ghi tap tin loadlin.exe vào thu
ˆ ¯a ’’ ’`’ ˆ ’
’˙
muc cua nguoi dùng root
’`’ ˙ ˙
˙ 5 Ghi chú. zImage là d nh dang nhi phân cu cua nhân, bzImage là d nh dang moi hon (so phiên ban nhân lon
´’ ’ ´
¯i ˜ ’ ¯i ˆ ’ ´’
hon 1.3.73) có kích thuoc lên ˙ ´’i 1 Mbyte, do d nhân khi giai nén có kích thuoc lên toi 2 Mbyte. Tiep theo
’ ’´’˙ to ˙
¯ó, ’ ˙ ˙
’´’ ´’ ´
ˆ
˜ ’ `
ˆ ˆ ˘ ¯o ˆ’ ´
chúng ta se chı nói ve các tap tin zImage, mac dù ban d c có the thay the zImage thành bzImage
ˆ
˙ ˙ ˙ ˙
’’ ¯ ˆ `’ `
2.8 Khoi dong Linux tu MS-DOS bang loadlin.exe
˘ 25
˙
´ ´
Neu ban chay loadlin.exe không có tham so
ˆ ˆ
˙ ˙
C:LOADLIN> loadlin
thì se nhan d ’oc huong dan su dung ngan gon. Thuan tien hon d ˆ’ d c huong dan này, khi
˜ ˆ ¯u ’ ’´’ ˜
ˆ ’’ ´
˘ ˆ ˆ ’ ¯e ¯o ’´’ ˜
ˆ
chay chuong ˙ trình˙ voi tham so more (giong trong Linux) ˙
´’ ´ ˙ ´ ˙ ˙ ˙
’’ ˆ ˆ
˙ C:LOADLIN> loadlin | more
Bây gio chúng ta có the xem xét các buoc cài d ˘ t Linux khi su dung loadlin.exe d ˆ’ khoi
`’ ˆ’ ’´’ ¯a ’’ ¯e ’’
d ˆ ng. ˙ ˙
¯o
˙
1. Chia các phân vùng cho Linux (cách làm xem phan 2.5) `
ˆ
¯a ¯ã `
ˆ ¯a ¯a` ’
2. Cài d ˘ t Linux vào phân vùng d chia. LILO can cài d ˘ t vào sector d ˆ u tiên cua phân
vùng ˙Linux d ’ không ghi d lên MBR và không bi ˙ mat kha nang khoi d ng vào
´ ’ ˘ ’’ ¯o
¯e
ˆ ¯è ˆ ˆ
Windows. ˙ ˙
´ ` ’’ ¯o ´
3. Sau khi ket thúc phan cài d ˘ t hãy khoi d ˆ ng Linux (neu không có cách nào khác, hãy
ˆ ˆ ¯a ˆ
’’ ` ’’ ¯o ˙ Gan phân vùng DOS (gia thiet là /dev/hda1, còn phân
su dung d˜a mem khoi d ˆ ng). ˘ ´ ˙ ’ ´
¯ı ˆ ˆ
vùng˙ Linux là /dev/hda3):
˙
kênh giao tác
[root]# mount -t vfat /dev/hda1 /mnt/C
’ ’
Tao thu muc /mnt/C/loadlin và giai nén tap tin LOADLIN16.TGZ vào d Ngoài
ˆ ¯ó.
˙ sao chép tu thu muc /boot vào thu muc d ˙ ca tap tin chua anh cua nhân Linux. Có
˙ `
ra ’ ’ ’ ¯ó ’ ˆ ´’ ’ ’
the tìm tap tin chua ˙ nh cua nhân can thiet nho ta˙ tin /etc/lilo.conf: tìm trong
ˆ’ ˆ ’
´’ a ’ `
ˆ
˙´
ˆ `’ ˆ p
´˙ ¯o ˜ ´
˙ ` ´ ’’ ’ ´
tap tin cau hình dòng "image=..." và ban d c se thay tên can thiet o phía bên phai dau
ˆ ˆ ˆ ˆ ˆ ˆ
˙` ng. Ví du tên cua tap tin này là vmlinuz-2.4.22. Sao chép tap tin vmlinuz-2.4.22 tu
ba˘ ’ ˆ ˙ ˙ `’
ˆ
˙ ˙ ˙
/boot vào /mnt/C/loadlin và d ˆ’i tên thành vmlinuz (viec d ˆ’i tên là không nhat ´
¯o ˆ ¯o ˆ
´ ’ ’’
thiet, và chı có ý nghıa thuan tien cho su dung): ˙
ˆ ˜ ˆ ˆ
˙ ˙ ˙
kênh giao tác
[root]# cp /boot/vmlinuz-2.4.22 /mnt/C/loadlin/vmlinuz
`’ ’’ ¯o ’ ´ ´
4. Bây gioi khoi d ˆ ng lai máy tính vào DOS truc tiep (neu ban d c có Windows 95/98 thì
ˆ ˆ ¯o
ca ˙
`n nhan phím <F8>
´ ˙ khi khoi d ng d ’ hien thi trình d n cho phép chon DOS), hoac
’’ ¯o ’ ˙ ˙ ˙ ˘
ˆ ˆ ˆ ¯e ˆ
ˆ ¯o’
qua hop thoai lua chon khi nhan ˙ ˆ nh tat máy (shutdown) Windows 95/98.
ˆ ’ ´ le
ˆ ´
˘ ˙ ˙ ˙
˙ ˙ ˙ ˙ ˙
ˆ’
Sau khi vào DOS hãy chuyen sang thu muc C:LOADLIN (lenh CD LOADLIN) và
’ ˆ
thuc hien lenh ˙ ˙
’ ˆ ˆ
˙ ˙ ˙
C:LOADLIN> LOADLIN vmlinuz /dev/hda3 ro vga=ask
˘ ´ ´ ´’ ˆ’ ¯ı
hoac, neu ban d c muon nap nhân cùng voi o d˜a RAM:
ˆ ¯o ˆ
˙ ˙ ˙ ˙
C:LOADLIN> LOADLIN vmlinuz /dev/ram rw initrd=diskimage
ˆ’ ´ ’
ˆ ´ ’ ˆ
Còn có the ghi tat ca các tham so cua lenh loadlin.exe vào tap tin (ví du voi tên params)
ˆ ˆ ´’
˙ ˙ ˙
¯ó ’’
và goi câu lenh d o dang sau:
ˆ
˙ ˙ ˙
C:LOADLIN> LOADLIN @params
’ ˘ ˆ ¯u `
ˆ ´
Kha nang này d ˘ c biet có ích khi d ’a nhieu tham so dòng lenh và khi d ˆ dài
¯a ˆ ˆ ¯o
’
cua dòng lenh lon ’
´’˙ hon 127 ký tu. Mô ta d `y d ’ tat ca các tham so cua câu˙ lenh
˙ ’ ¯a ¯u ´ ’ ˙ ´ ’
ˆ ’ ˆ ˆ ˆ ˆ
loadlin.exe ˙có the tìm thay trong tap tin PARAMS.DOC hoac Internet trên trang
ˆ’ ´
ˆ
˙
ˆ ˘ ˙
˙
http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html ˙ và http://rsphy1.anu.edu/ gpg109/Bo
HOWTO.html
26 Cài dat HDH Linux trên cùng máy tính voi Windows
¯˘ ¯ ´’
˙
Bây gio ban d c có the su dung cách này d ˆ’ khoi d ˆ ng Linux. Công viec duy nhat còn
`’ ¯o ˆ’ ’’ ¯e ’’ ¯o ˆ ´ˆ
˙d ’ không phai gõ ˙lenh loadlin voi tat ca ˙ tham so sau mo˙i lan khoi d ng
lai là làm sao ¯e ˙ ’ ´’ ´ ’ các ´ ˜ ` ’’ ¯o
ˆ ˆ ˆ ˆ ˆ ˆ ˆ
˙ i. Có the viet thêm lenh goi loadlin vào tap tin autoexec.bat hoac tao mot tap tin lenh˙(ví
la ’ ´ ˙ ˘
ˆ ˆ ˆ ˆ ˆ ˆ ˆ
˙ , linux.bat), và khi chay tap tin này, máy ˙
du ˙ ˙ tính se chuye’n vào che d ˆ˙DOS truoc, sau d thì
´˙ ¯o ˙ ˙´ ˙
ˆ ˜ ˆ ˆ ’’ ¯ó
chay Linux. Tác gia cho˙rang nhung thông tin d d ’a ra o trên d ’ d ˆ’ ˙ o tap tin bat can thiet.
˙ ’ ˘ ˙
` ˜’ ¯ã ¯u ’’ ¯u ¯e ta ˆ `
ˆ ´
ˆ
Can`˙ nói thêm rang, không d ’oc khoi d ˆ ng Linux tu giao dien d ˆ hoa ˙DOS/Windows và can
ˆ `
˘ ¯u ’ ’’ ¯o `’ ˆ ¯o ` ˙
ˆ`
˙tin an C:MSDOS.SYS (d ˙ tap tin van ban thông thuong),
˙ ˙ ˘ ’
´
tat mot vài tùy chon trong tap
˘ ˆ ˆ ˆ’ ¯ây là ˆ ’`’
` ˙
bang cách thêm vào
˘ ˙ hai dòng sau (neu chua có):
˙ ´ ˙
ˆ ’
BootGUI=0
Logo=0
` ´ ` ’’ ¯o
Dòng d ˆ u tiên tat giao dien d ˆ hoa, và DOS se d ’oc khoi d ˆ ng thay cho Windows 95/98.
¯a ˘ ˆ ¯o ˜ ¯u ’
’ `
(De chay giao dien d ˆ hoa, ca ˙ ˙
˙`n nhap câu lenh C:> win). ˙
¯ ˆ ˙ ˆ ¯o ˆ ˆ ˆ
Logo=0 tat viec hien˙ thi bieu tuong Windows (cua so). Van d ˆ o cho, d´ i voi mot so cac
˘ ˙ˆ
´ ˆ’
˙
ˆ’ ’ ’
˙ ’’ ˆ’ ´ ¯e ’’ ˆ ¯o ´’ ˆ ´
ˆ ` ˜ ˆ ˆ
màn hình Linux se ¯u˙ d a ra mot màn˙hình trong rong sau khi khoi d ng, neu nhu có˙ hien thi
˙ ´ ˜ ’’ ¯o ´ ’ ˙
˜ ’ ˆ ˆ ˆ ˆ ˆ ’ ˆ
˙ ˙ ˙
ˆ’ ’ ’
bieu tuong Windows.
˙
Chuong 3
’’
Bash
ˆ ˜
´ ˆ ’ ´ ’´’ ’
Tot go hon tot nuoc son
ˆ
– ca dao tuc ngu Viet Nam
˜’ ˆ
˙ ˙
Trong phan này chúng ta se d ˆ cap d´ n van d ˆ làm viec voi Linux o che d ˆ text, hay còn
`
ˆ ˜ ¯e ˆ ¯e ´ ¯e
` ˆ ˆ ` ˆ ´’ ’’ ´ ¯o
ˆ
d ’oc goi là console hoac terminal. Nhu
˘ ˙ ng nguoi dùng Linux moi (newbie) thuong nghı se
`’ ˙ ´’ ˙ `
¯u ’ ˜’ ’ ’’ ˜ ˜
chang bao gio làm viec ˙o che d ˆ này, vì d có giao dien d ˆ hoa. Tuy nhiên d là mot ý kien
’
˘˙ ˙ `’ ˆ ’’ ´ ¯oˆ ¯ã ˆ ¯o ` ¯ây ˆ ´
ˆ
sai la `m, boi vì rat nhieu công viec có the thuc hien nhanh và thuan tien trong che d ˆ ˙này hon
ˆ ’’ ´
ˆ
˙`
ˆ
˙
ˆ ˆ’ ’ ˆ ˙ ˙
ˆ ˆ ´ ¯o
ˆ ’
là su dung giao dien d ˆ hoa. Và ˙dù sao thì che d˙ text cua HDH˙Linux không phai ˙là che d ˆ
’’ ˆ ¯o ` ˙´
ˆ ¯oˆ ’ ¯ ˙ ’ ´ ¯o
ˆ
text mot tien trình˙cua MS-DOS. Vì Linux là HDH d tien trình, nên ngay trong che d ˆ text
˙
ˆ ´ ˆ ’ ˙
¯
˙
¯a ´ ˆ ´ ¯o ˙
ˆ
d có kha ˘˙ ’ nang làm viec trong vài cua so. Và d ’ soan thao mot tap tin van ban không˙ nhat
’’ ˆ’ ’ ˘ ’ ´
¯ã ˆ ¯eˆ ˆ ˆ ˆ
´ ’
thiet phai chay các trình ˙ soan thao lon và cham chap ˙(d ˘ c biet trên˙các máy có cau hình phan
’ ´’ ˙ ´ `
ˆ ˆ ¯a ˆ ˆ ˆ
cung thap) cua môi truong ˙¯o hoa.
´’ ´
ˆ
˙
’ ’`’ d ˆ` ˙ ˙ ˙ ˙
˙
3.1 ˆ ’
He vo là gì?
˙
Chúng ta thuong nói "nguoi dùng làm viec voi he d ˆ u hành". ¯ ieu này không hoàn toàn
’`’ ’`’ ˆ ´’ ˆ ¯ie ` Dˆ `
˙ ˙
´ "liên he" voi nguoi dùng d ’oc thuc hien boi mot chuong trình d ˘ c biet.
d¯úng, vì trên thuc te ’ ˆ ˆ ´’ ’`’ ¯u ’ ’ ˆ ’’ ˆ ’’ ¯a ˆ
Có hai dang cu˙ chuong trình d d ˆ cap - he vo, hay shell, d ˆ’ làm viec trong che ˙¯o text
’a ’’
˙
¯ã ¯e ` ˆ ˆ ’˙ ˙ ˙
¯e
˙
ˆ ´ dˆ ˙
ˆ
(giao dien dòng lenh) và giao dien d ˆ ˙ a GUI (Graphical User Interface), thuc hien˙"liên
ˆ
˙
ˆ ˆ ¯o ho ` ˙ ˙
’ ˆ
he" voi ˙ ’oi dùng trong môi truong d ˆ˙ hoa. Can nói ngay rang, bat ky chuo˙ trình nào
ˆ ´’ ngu `’
˙ ˙`
’ ’ ¯o ` `
ˆ `
˘ ´ `
ˆ ’ ’ng
˙
trong Linux có the khoi d ˆ ng tu dòng lenh˙ cua he vo (neu máy chu X d chay), cung nhu
˙
ˆ’ ’’ ¯o `’ ˆ ’ ˆ ’ ´ ˆ ’ ¯ã ˜ ’
qua giao dien d ˆˆ ¯o ` hoa. Chay chuong trình tu dòng lenh cua he vo tuong d ’ong ˙voi viec nháy
˙
’’
˙ `
’
˙
ˆ ’ ˆ ’ ’ ’ ¯u ’ ´’ ˆ
˙ ˙ ˙ ’ ˙ D ’˙ ˙
(d ˆ ˆ’ ’ ’
¯úp) chuot lên bieu tuong cua chuong trình trong GUI. ¯ ua các tham so cho chuong trình
’’ ´
ˆ ’’
trên dòng lenh tuong d ’˙’ng voi viec chúng ta kéo và tha cái gì d lên bieu tuong chuong trình
˙
ˆ ’ ’ ¯uo ´’ ˆ ’ ¯ó ˆ’ ’ ’ ’’
˙ ong d ` hoa. Nhung mat khác, mot so chuong trình không the chay o GUI và chı
trong môi tru `’ ¯o ˙˘ ´ ’ ˙ ’’ ’
’ ˆ ’ ˆ ˆ ’’ ˆ
có the thuc hien tu dòng lenh. Nói ˙ngoài le mot chút, tên goi "he vo" bi pha˙ d´ i rat nhieu.
ˆ’ ’ ˆ `’
˙
ˆ ` ˙
ˆ ˆ ˆ ’ ’ n ¯o ´
ˆ ˆ ˆ`
˙´ ’ ˙ ˙ ˙ ˙ ˙ ˙
ˆ ˆ ´
Theo ý kien cua mot so chuyên gia ngôn ngu cung nhu chuyên gia Linux thì nên goi chuong
ˆ ˜’ ˜ ’ ’’
˙d
trình này mot cách ¯úng hon là "trình xu ’’ lý lenh" hay "trình biên dich lenh". Tuy nhiên, tên ˙
ˆ ’ ˆ ˆ
goi "he vo" ˙ ¯u ’ ’’
˙
ˆ ’ (shell) d ’oc dùng cho các chuong trình dùng d ˆ’ biên dich lenh trong che d ˆ text
¯e
˙
ˆ
˙ ´ ¯o
ˆ
˙ moi he thong UNIX. Trên các he thong UNIX d `u tiên có mo˙ chuong trình, goi là sh,
trên ˙ ´ ˙ ´ ˙ ˙
ˆ ˆ ˆ ˆ ¯a
ˆ ˆt ’’
viet tat˙ cua shell. Sau d vài bien˙ the cua sh d ’oc phát trien và làm tot hon, trong d có
´ ˘ ’˙
ˆ ´ ¯ó, ´ˆ ˆ’ ’ ¯u ’ ˆ’
˙ ´ˆ ’
˙
¯ó
’ ’’ ˆ ’
Bourne shell - phiên ban mo rong cua sh, viet boi Steve Bourne. Du án GNU (du án ´˙ ’’
ˆ ’ ’
phát trie ’n chuong trình ung dung cua Stollman, xem http://www.gnu.org/) ˙sau d cho ra˙ d `’i
ˆ ’’ ´’ ’˙ ¯ó ¯o
he vo bash, tên goi cua nó d ˙oc giai mã ra là Bourne-again shell, tuc là "lai là he vo
ˆ ’ ’ ¯u ’ ’
’ ´’ ˆ ’
˙ ˙ ˙ ˙ ˙
28 Bash
’ ´
cua Bourne". Trên tieng Anh d là mot cách choi chu, vì tu Bourne d c giong voi tu borne
ˆ ¯ây ˆ ’ ˜’ `’ ¯o ´ ˆ ´’ `’
(sinh ra, d ’ ra), và nhu the bash còn có ˆ’ ’
´ ˙ the giai mã là "shell d oc sinh ˙ lan hai". Tiep theo
ra ˆ ` ´
¯e ’ ˆ ¯u ’
’ ˆ
chúng ta se chı xem xét bash, vì the o duoi khi nói d´ n he vo
´ ’’ ’´’ ˙, xin ngam hieu d là bash
` ’ ¯ó
˜ ’ ˆ ¯e ˆ ’
ˆ ˆ ˆ
Tu mot mình bash không thuc hien mot công viec ung dung ˙ nào. Nhung nó ho tro viec thuc ˜
’ ˆ ’ ˆ ˆ ˆ ´’ ’ ˆ ’ ˆ ’
thi˙ moi chuong trình khác, tu viec tìm ˙kiem chuong trình d oc goi, chay chúng d´ n ˙ c ˙ ’
˙ ˙
`’ ˆ ˙ ´ ˙ ˙ ˙ vie to
’’ ˆ ’’ ¯u ’
’ ¯e
ˆ ˆ ˆ
chuc du lieu d ˆ u vào/d ˆ u ra. Ngoài ra, he vo chiu trách nhiem˙ ve công viec voi các bien˙môi
´’ ˙ ˜’ ˆ ¯a ` ¯a` ˙
ˆ ’ ˆ `˙
ˆ
˙
ˆ ´’ ´
ˆ
truong và thu
`’ ˙ c hien mot vài bien d ’i (the, hoán˙d ’i vi trí) các tham so lenh. Nhung tính chat
´ ¯o ´˙ ˙ ´ ˆ ˙ ´
’ ’ ˆ ˆ ˆ ˆ ˆ ¯oˆ ˆ ’ ˆ
chính cua he ’
’ ˆ `’ d ¯u ˆ ’ ’’ ˙
˙ vo, ˙nho ˙ d a he vo tro thành mot công cu manh cua nguoi dùng, d là nó ’ ˙ `
¯ó ’ ˆ ’’ ¯ó
` ˙ ˙ ’ ˙
bao gom mot ngôn ngu lap trình d ’n gian. Trong toán hoc tu lâu d d ’oc chung minh rang, ˙ `˙ ´’ `
˘
ˆ ˆ ˜’ ˆ ¯o ’ ¯ã ¯u ’
˙ t toán nào cung có the d oc xây dung tu hai (ba) thao tác co ban và mot toán
˙ ˙ ˙
´ ` ˆ
bat ky mot thua
ˆ ˆ ˜ ˆ’ ¯u ’
’ ’ `’ ’ ’ ˆ
tu d ˆ u kien. He vo cung cap các toán tu ˙d ˆ u kien và toán tu vòng lap. Nó su dung các tien
’’ ¯ie ˙ˆ
` ˙ ’
ˆ ´
ˆ ’’ ¯ie ` ˆ
˙ ’’ ˘ ’’ ˙
ˆ
˙ ˙ ` ˙ ¯ie
ích và chuong trình khác (có trong thành phan he d ˆ u hành, hay d ’oc cài d ˘ t riêng) d ˆ’ làm
` ˙ ˙ ˙
’’ ˆ ˆ ¯u ’ ¯a ¯e
các thao tác co ban cho ngôn ngu lap trình mà nó ho tro. ¯ ong thoi ˙cho phép d ’a các tham
’ ’ ˜’ ˆ
˙ ˜
ˆ ’ Dˆ ` `’ ˙
¯u
´ cung nhu ket qua làm viec cua mo
so ˜ ´ ’ ’ ˙ t chuong trình toi ˙ chuong trình khác hay toi nguoi
´’ các ´’
ˆ ’ ˆ ˆ ˆ ’’ ’’ ’`’
´ ’ ˙ ˙
dùng. Ket qua thu d ’oc là mot ngôn ngu lap trình manh. ¯ ây cung là suc manh và là mot D ´’
ˆ ¯u ’ ˆ ˜’ ˆ ˜ ˆ
trong các chuc nang chính cua ˆ ’ ˙ ’ ˙ he vo. Truoc ˙ bat d `u phan này, ban d c nên biet các to ho˙p
´ ¯a ˙ ˆ ` ˙´ ’ ’
´’ ˘ ’´’ khi ˘ ˆ ¯o ˆ ˆ
phím chính, su ’’ dung d ˆ’ d ˆ u khien viec nhap du lieu trên dòng lenh. Nên nho ít nhat cách ˙ ’’
¯e ¯ie` ˙’
ˆ ˆ ˆ ˜’ ˆ ˆ
˙ ˙ ´’ ´
ˆ su
’ ˆ’ ho
˙ ˙ ˙
dung cua các (to ˙ ’p) phím <Ctrl>+<C>, <Ctrl>+<D>, <Tab> và các phím có mui tên. ˙
˜
˙ ˙
3.2 ˆ
Các ký tu dac biet
’ ¯˘
˙ ˙ ˙
ˆ ’ ’’
He vo bash su dung mot vài ký tu tu bo 256 ký tu ASCII cho các muc d
ˆ ’ `’ ˆ ’ ¯ính riêng, hoac d ˆ’
˘ ¯e
˙’u thi các thao ˙tác nào d hoac ˙d ’ bien d ’i bieu˙thuc. Các ký tu này bao gom:
bie ˙ ´˙ ¯o ˆ’ ´’ ˙ ` ˙
ˆ ¯ó, ˘ ¯e ˆ ˆ
ˆ ’ ˆ
˙ ˙ ˙
‘ ~ ! @ # $ % ^ & * ( ) _ -- [ ] { } : ; ’ " / > <
’ ´’ ´
và ký tu voi mã 0, ký tu hàng moi (tao ra khi nhan phím <Enter>) và ký tu khoang trang. Phu
’ ´’ ˆ ’ ’ ´
˘
˙ tình huong các ký tu d ˘ c˙biet này có the su dung voi ý nghıa ˙ ˘ c biet cua nó hay
´ ˙ ’ ’’ ˙
thuoc vào
ˆ ˆ ’ ¯a ˆ ˆ ´’ ˜ d ¯a ˆ ’
˙ ng nhu mot ký tu thông thuo˙ng. Nhung trong d so˙các truong hop không ˙khuyên dùng
˙ ` ˙ ˙
’’
su du ’ ˆ ’ ’’ ’ ¯a ´ ˆ ’`’ ’
˙ tu voi giá tri thu hai. Truoc het d là viec su dung chúng trong ˙tên tap tin và thu muc.
˙ ˙´ ´’ ´ ¯ó
các ký ’ ´’ ’ ’ ˆ ˆ ’’ ˆ ’
˙ các ký tu _, - và . (dau gach duoi, gach ngang và dau cham) thu˙ ng d oc su du˙
˙ ´ ˙ ˙ ´ ´
Tuy nhiên ’ ˆ ’´’ ˆ ˆ ’o ¯u ’ ’’ ng
`’ ’
trong tên tap tin, và d là mot ví du cho thay ˙không phai lúc nào chúng cung có ˙giá tri ˙¯ac
ˆ
˙
¯ây ˆ
˙ ´ˆ ’ ˜ d˘
biet. Trong ˙ tên tap tin chı dau˙cham ˙ và gach chéo (/) có giá tri d ˘ c biet. Ký hieu gach ˙ ˙
’ ´ ´ (.) chéo
ˆ ˆ ˆ ˆ ¯a ˆ ˆ
˙ d ’ phân chia tên các thu muc trong d ˙ong dan, còn dau cham có giá tri d ˘˙c biet khi nó
dùng ¯e ˙ ˜ ´ ˙´ ˙ ˙ ˙
ˆ ’ ¯u `’
’ ˆ ˆ ˆ ¯a ˆ
là ký tu d ˆ u tiên trong tên tap tin˙ (cho biet tap tin là "an"). Viec d ’a ngay ta˙t ca ý nghıa d ˘ c
’ ¯a` ˆ ´ ˆ
ˆ ˆ’ ˆ ¯u ´ ˙
ˆ ’
˙
˜ ¯a
˙ nhung ký tu này và˙ các tình huong ˙ ’ dung chúng tam thoi không có ích. Chúng ˙
´ su ˙ `
ˆ ’
biet cua ˜’ ’ ˆ ’ ’ ta
se ˙xem xét chúng dan dan trong các phan sau, khi can su dung d´ n. Tuy nhiên, 3 ký hieu có
˙ `
` ˆ ` ˙ ` ’ ˙
˜ ˆ ˆ ˆ ’ ¯e
ˆ ˆ
˜ ´’ ` `
ˆ ¯e ˆ ¯e ¯a ˆ ` ˆ
˙
ý nghıa lon và can d ˆ cap d´ n d ˆ u tiên. Ký hieu (gach chéo nguoc) có the goi là "ký˙ hieu ’’ ˆ’ ˆ
’
xóa bo ý nghıa d ˘ c biet" ˙ cho bat ky ký tu d ˘ c biet nào, d ´ ng ngay sau . Ví du, neu muon
´ ` ˙ ˙ ˙ ˙ ´ ˙
´
˜ ¯a ˆ ˆ ’ ¯a ˆ ¯u’ ˆ ˆ
su dung khoang trang ˙
’’ ’ ˙˘ trong tên tap tin, thì chúng ˙ can d ˘ t truoc ký tu khoang trang d mot
´ ˆ
˙ ˙ `
ta ˆ ¯a ’´’ ’ ’ ˙˘ ´ ¯ó ˆ
´
dau Ví ˙˙ du, câu lenh sau: ˙ ˙ ˙ ˙
ˆ ˆ
˙ ˙
kênh giao tác
teppi82@teppi:~$ cp lennon_imagine lennon imagine
’ ˘ ˆ’ ’ ˜
ˆ ˜
Các ký tu ’ và " (ngoac d ’n và ngoac kép) có the goi là "các ký tu trích dan". Moi ký tu
˘ ¯o ˆ ’
˙ d oc su dung trong mot cap voi ban sao cua chính nó d˙’ d
này luôn luôn ¯u ’ ’’ ˙ ˙˘ ´ ’ ˙’ ’u˙
’ ˆ ’ ¯e ¯óng khung mot bie
ˆ ˆ ˆ
thuc nào d giong nhu ˙
´’ ¯ó, ´ ˆ
˙
’ trong các van ban, sách báo, . . . thông thuong. Neu nhu mo˙ d n
˘˙ ˙’ ’`’ ´
ˆ ’ ˆ t ¯oa
˙ ˙
’ ˆ
3.3 Thuc thi các câu lenh 29
˙ ˙
˘ ’ ¯ó ¯a ˘ ¯o ´ ’
ˆ ’ `
van ban nào d d ˘ t trong ngoac d ’n, thì tat ca các ký tu nam trong ngoac d ’n này có giá
˘ ˘ ¯o
˙
tri nhu các ký tu thông thuong,
`’ ˙ khôn mot ký tu nào có ý ˙nghıa d ˘ c biet. Tro lai voi ví du su
˙’ ´’ ’’
’ ’ ’ ˆ ’ ˜ ¯a ˆ ’
du˙ ng khoang trang trong tên tap tin o trên, có˙the nói, neu muon˙ d ˘ t tap tin cái tên "lennon
’ ˙
´
˘ ’’ ˙ ’ ´ ´ ¯a ˆ ˙ ˙ ˙
ˆ ˆ ˆ ˆ
˙ ˙
`n d ’a tên d vào dau ngoac:
imagine" ca ¯u ´ ˘ ˙ ˙
ˆ ¯ó ˆ
˙
kênh giao tác
teppi82@teppi:~$ cp lennon_imagine ’lennon imagine’
’ ’’ ’ ¯ó ˘ ¯o ´
Su khác nhau trong cách su dung ký tu ’ và " d là, trong ngoac d ’n mat ý nghıa d ˘ c biet
ˆ ˜ ¯a ˆ
´ ’
ˆ
tat ca˙ các ký tu, còn trong ngoac˙kép - ta˙ ca chúng ngoai tru $, ’ và (dau d la, ˙ngoac
˘ ´t ’ `’ ˙ ´ ¯ô ˘˙
’ ˆ ˆ
´ ˙
d ’n và dau gach nguoc). ˙ ˙ ˙
¯o ˆ ’’
˙ ˙
3.3 ˆ
Thuc thi các câu lenh
’
˙ ˙
’ ¯ã ’’ ˆ ´’ ˘ ’ ˆ ’ ˆ’ ´’ ˆ
Nhu d nói o trên, mot trong các chuc nang chính cua he vo là to chuc viec thuc hien các câu
’ ˆ
˙ a vào trên dòng lenh. He vo, nói riêng, cung cap ˙cho nguo˙ dùng hai
˙ ´ ˙ `i
lenh mà nguoi dùng d ’
ˆ ’`’ ¯u ˆ ˆ ’ ˆ ’’
thao tác d ˘ c biet d ˆ’ to chuc viec d ’a các ˙câu lenh trên dòng lenh: ; và &.
˙
¯a ˆ ¯e ˆ’ ´’ ˆ ¯u ˆ
˙
ˆ
˙ ˙ ˙ ˙ ˙
3.3.1 Thao tác ;
’`’ ’ ˆ
Mac dù nguoi dùng thuong chı nhap trên dòng lenh tung câu lenh mot, nhung còn có the d ’a
˘ ’`’ ˆ `’ ˆ ˆ ’ ˆ’ ¯u
vào ˙ dòng lenh d ngay lap tuc vài câu lenh, và ˙chúng se thuc hien ˙ `n luot tu câu lenh này
˙ ˙
ˆ ¯ó ˆ ´’ ˆ ˜ ’ ˆ la ’ ’ `’ ˆ ˆ
dˆ ˙ Dˆ ’ ˙ ¯u ’ ¯ie ˙ ` ’ ˙ ˙ ˙
´ ˙
´ n câu lenh khác. ¯ e làm d ’oc d ˆ u này can su dung ký tu d ˘ c biet - ;. Neu dùng ký tu này
`
¯e ˆ ˆ ’ ’ ¯a ˆ ˆ ’
¯e
˙
d ˆ’ phân chia các câu lenh, thì ˙ lenh tiep theo se˙d ’oc coi nhu tham so cua lenh phía truoc.
ˆ câu ˆ ´
ˆ ˜ ¯u ’
˙ ˙
’
˙ ´ ’ ˆ
ˆ
˙ ´
’’
Nhu vay, neu nhap vào dòng lenh cái gì d giong nhu˙sau:
’ ˆ ´ ˆ ˆ
˙
ˆ
˙
¯ó ´ ˆ ’
˙
˙ ˙ ˙
kênh giao tác
teppi82@teppi:~$ command1 ; command2
ˆ ’ ¯a `
thì he vo d ˆ u tiên se thuc hien câu lenh command1, cho cho lenh d hoàn thành, sau d
˜ ’ ˆ ˆ `’ ˆ ¯ó ¯ó
˙ ˙ ˙
chay command2, cho lenh hoàn thành, sau ¯ó ˙ d lai d a ra dòng nhap ˙ nh và cho các hành d ng
`’ ˆ ¯u’ ˆ le ˆ `’ ¯o
ˆ
tie˙ theo cua nguoi dùng.
´p
ˆ ’ ’`’
˙ ˙ ˙ ˙ ˙
3.3.2 Thao tác &
Thao tác & d ’oc dùng d ˆ’ to chuc viec thuc hien các câu lenh trong che d ˆ nen sau. Neu d ˘ t
¯u ’ ¯e ˆ’ ´’ ˆ ’ ˆ ˆ ´ ¯o ˆ
ˆ ` ´ ¯a
ˆ
´
dau & ngay sau˙ câu lenh, thì he vo se tra˙lai quyen d `u khien cho nguoi ˙
˙ ’
’ ˜ ˙ ` ˙ ’ ˙
`’ dùng ngay sau khi
ˆ ˆ ˆ ˆ ¯ie
ˆ ˆ ’
˙ ˙ ˙ ´
chay câu lenh, mà không d ’i cho câu lenh d hoàn thành. Ví du, neu nhap vào dòng lenh
ˆ ¯o ˆ ¯ó ˆ ˆ ˆ
˙
"command1 ˙ & command2 &", thì he˙vo chay câu lenh command1, ngay˙lap tuc chay lenh
˙ ’ ˙ ˙
ˆ ˆ ˆ ´’ ˆ
˜ ˙
ˆ ’
˙ ˙
command2, và sau d không cham tre tra lai dòng nhap lenh cho nguoi dùng.
¯ó ˆ ˆ ˆ ’`’ ˙ ˙ ˙
˙ ˙ ˙ ˙
3.3.3 Thao tác && và ||
˜’ `
¯ie ˆ’ ´
Các thao tác && và || lá nhung thao tác d ˆ u khien. Neu trên dòng lenh là command1 && command2,
ˆ ˆ
thì command2 se thuc hien và chı thuc hien trong truong hop ˙trang thái thoát ra cua lenh
˜ ’ ˆ ’ ’ ˆ ’`’ ’ ’ ˆ
` ˙ (0), tuc là lenh˙d thuc hien thành công. Mot cách tuong tu, neu dòng
˙ ´ ˙ ˙ ˙ ˙
command1 bang không
˘ ’ ˆ ¯ó ’ ˆ ˆ ’’ ’ ´
ˆ
lenh có dang command1 || command2, ˙ ˙thì command2 se thuc hien và chı thuc hien khi
˙ ˙ ˙
’ ’ ˆ
ˆ ˜ ’ ˆ
˙ ng thái˙thoát cua lenh command1 khác không. Chúng ta se không xem xét mat ky thuat cua
tra ’ ˆ ˙ ˙ ˘ ˙˜ ˙ˆ ’
˜
˙ ˙ ˙ ˙
30 Bash
ˆ ’ ˆ ˆ ˆ ¯ó. ’ ˆ’ ´
viec thuc hien mot câu lenh nào d Chı có the nói ngan gon rang, he vo phai tìm mã (code)
˘ `
˘ ˆ ’ ’
˙ ong˙ trình, nap mã d ˙vào bo nho, chuyen các tham so d˙ nhap trên dòng lenh vào cho câu
˙ ˙ ˙
chu ’’ ¯ó ˆ ´’ ˆ’ ´ ¯ã ˆ
ˆ ˆ
˙ thuc hien xong thì theo mot cách nào d tra lai ket qua thu˙ hien lenh này
˙ ˙ ´
lenh, và sau khi ’ ˆ
ˆ ˆ ¯ó ’ ˆ ’ ’c ˆ ˆ
˙ nguoi dùng hay tien trình khác. Chúng˙ta se xem xét qua các buoc này.˙ Buo˙ d `u tiên -
cho ˙ ´˙ ˙ ˙
’`’ ˆ ˜ ’´’ ’´’c ¯a ˆ
´
tìm kiem câu lenh. Các câu lenh chia thành hai loai: noi trú (mã cua chúng có trong mã cua
ˆ ˆ ˆ ˆ ’ ’
˙ ngoai trú (mã˙ cua chúng nam trong mo˙t tap tin riêng le trên d a). He vo luôn
` ˙
ˆ ’
chính he vo) và ’ ˘ ˆ ˆ ’ ˜
¯ı ˆ ’
luôn tìm thay lenh noi trú, còn d ˆ’ tìm các lenh ngoai ˙ ˙nguoi dùng, theo nguyên ˙tac, phai
˙ ´
ˆ ˆ
˙
ˆ ¯e ˆ trú ’`’ ´
˘ ’
’ ˙ ong dan d `y d ’ toi tap tin tu˙ ng ung. Tuy nhiên d ’ go "gánh nang" cho nguoi
˙˜ ˙
ˆ ’ ¯u
chı cho he vo d ’`’ ˆ ¯a ¯u ´’ ˆ
ˆ ’o ´’
’ ¯e ˜’
ˆ ˘ ’`’
˙ ’ biet cách tìm lenh ngoai˙trú trong các thu muc, mà d oc liet kê trong d ong dan
´ ˙ ˜
dùng he vo ˆˆ ˆ ’ ¯u ’ ˆ
’ ¯u `
’’ ˆ
´
tìm kiem. ’ ˙ Chı khi (he vo) không the tìm thay tap tin can˙ thiet trong các thu muc d nó moi
˙ ˙’ ´ ˆ ` ´ ˙ ˙
ˆ ˆ ’ ˆ ˆ ˆ ˆ ’ ¯ó, ´’
quye ¯i
ˆ `
˘ ’o ¯ã ˆ ` ˆ
˙
´ t d nh rang ngu˙`’i dùng d nham khi nhap tên lenh. Ve cách thêm thu muc vào d ’ong
ˆ `
ˆ ’
˙
¯u `’
dan tìm˙kiem chúng ta se nói d´ n o duoi, còn ˙ gio ˙chúng ta se xem xét cách ˙ ˆ vo to chuc
˜
ˆ ´
ˆ ˜ ¯e
ˆ ’’ ’´’ bây `’ ˜ he ’ ˆ’ ´’
˙
viec d ’a du lieu vào cho câu lenh d
ˆ ¯u ˜’ ˆ ˆ ’ ˆ ˆ ¯u ´ ˆ ’ ´’
¯ang thuc hien và viec d ’a ket qua toi cho nguoi dùng. ’`’
˙ ˙ ˙ ˙ ˙ ˙
Dˆ` `
¯ˆ ˆ’
3.4 ¯ au vào/dau ra tiêu chuan
3.4.1 ˜’ ˆ
Dòng du lieu vào-ra
˙
ˆ ’’ ¯u ’ ’ ˆ ¯u ’ ´
Khi mot chuong trình d ’oc thuc hien, nó d ’oc cung cap ba dòng du lieu (hay còn goi là
ˆ ˜’ ˆ
kênh): ˙ ˙ ˙ ˙ ˙ ˙ ˙
` ˆ’
• d ˆ u vào tiêu chuan (standard input hay stdin). Qua kênh này du lieu d ’oc d ’a vào cho
¯a ˜’ ˆ ¯u ’ ¯u
chuong trình; ˙ ˙
’’
¯a` ˆ’
• d ˆ u ra tiêu chuan (standard output hay stdout). Qua kênh này chuong trình d ’a ra ket
’’ ¯u ´
ˆ
’ ˆ ’
qua làm viec cua mình;
˙
˜ ˆ’
• kênh thông báo loi tiêu chuan (standard error hay stderr). Qua kênh này chuong trình
ˆ ’’
d ’a ra thông tin ve loi.
¯u ` ˜
ˆ ˆ
` ˆ’ ’’ ’ ˆ’ ¯o `
Tu d ˆ u vào tiêu chuan chuong trình chı có the d c, còn hai d ˆ u ra và kênh thông báo loi
`’ ¯a ¯a ˜
ˆ
’’
d ’oc chuong trình su dung chı d ˆ ’ ¯e ˘ ¯i ¯a ˙ `
’ ghi. Theo mac d nh d ˆ u vào có liên ket1 voi bàn phím, còn
´
¯u ’ ’’ ˆ ´’
d ˆ u ra và kênh báo loi huong d´ n terminal cua˙nguoi dùng. Nói cách khác, toàn bo thông tin
`˙
¯a ˜ ˙
ˆ ’´’ ¯e ˆ ’ ˙`
’’ ˆ
cua lenh hay chuong trình mà nguoi dùng d chay, và tat ca nhung thông báo lo ˙ ¯u ’ ¯u
’ ˆ ’’ ’`’ ¯ã ´ ’ ˜’
ˆ ˜i, d ’oc d ’a
ˆ
˙ ’ ˙
´ ’’ ’´’ ’ ’ ’´’
’’a so terminal. Tuy nhiên, chúng ta se thay o duoi, có the chuyen huong thông báo d ˆ u
ra cu ˆ ˙ `
˜ ˆ ˆ ˆ ¯a
ˆ D ˆ’ ´
ˆ ˜
ˆ ˆ’
ra (ví du, vào tap tin). ¯ e cho thay kênh thông báo loi tiêu chuan làm viec nhu the nào, hãy ˆ ’ ´ˆ
˙ ˙
thuc hien câu lenh ls voi mot tham so không d ´ ˙
´
’ ˆ ˆ ´’ ˆ ˆ ¯úng, ví du dùng tham so là mot tên tap tin
ˆ ˆ ˆ
không ton tai. Trong truong hop này, ls d ’a mot tin nhan˙báo loi ra kênh thông báo loi tiêu
˙ ˙`
ˆ
˙
’ `’ ˙
’ ¯u ˆ ´
˘ ˆ˜ ˙
ˆ˜˙
chuan. Tuy ˙
ˆ’
˙ ˙ `
nhiên, d´ i voi nguoi dùng thì trong truong hop này kênh thông báo loi tiêu chuan
¯o ´’
ˆ ’`’ ’’ ’ ˆ˜ ˆ’
˙ thay thông báo loi d trên cua so
´’ ¯a ˆ’
không khác gì voi d ˆ u ra tiêu chuan, boi vì chúng ta cung ´
` ’’ ˜ ˆ ˜
ˆ ¯ó ’’ ˆ’
` ` ˆ’ ¯u ’ ´
terminal. Làm viec voi d ˆ u vào và d ˆ u ra tiêu chuan d ’oc minh hoa tot nhat qua ví du các
ˆ ´’ ¯a ¯a ˆ ´ˆ
lenh echo và cat. ˙ ˙ ˙ ˙
ˆ
˙
3.4.2 ˆ
Lenh echo
˙
Câu lenh echo dùng d ˆ’ chuyen toi d ˆ u ra tiêu chuan dòng ký tu, mà d ’oc d ’a vào làm tham
ˆ ¯e ˆ’ ´’ ¯a` ˆ’ ’ ¯u ’ ¯u
´ cho
so ’ ˙ ´ ˙
˙ nó. Sau d lenh này d a ra tín hieu chuyen dòng và hoàn tat công viec. Hãy thu thuc
’’ ’
ˆ ¯ó ˆ ¯u’ ˆ ˆ ˆ ˆ
hien câu lenh sau: ˙
ˆ ˆ
˙ ˙ ˙
˙ ˙
1 ´ ´
giong liên ket hóa hoc
ˆ ˆ
˙
ˆ’
3.5 Chuyen huong dau vào/dau ra, duong ´ ng và dau loc
`
’´’ ¯ ˆ `
¯ˆ ˆ
¯ ’`’ o `
¯ˆ 31
˙
kênh giao tác
[user]$ echo ’xin chao cac ban!’
˜ ` `’ ’ ’ ’’ ´ ˘ ¯o ´
Tôi nghı rang loi giai thích se là thua thãi (chı xin hãy su dung dau ngoac d ’n, neu không
˘ ˜ `’ ˆ ˆ
ke ’ ’ ˜ ´ ’ ’
´ t qua có the se khác. Neu ban d c chú ý thì có the giai thích ˙
˙tai sao lai khác).
ˆ ˆ ˆ ¯o ˆ
˙ ˙ ˙ ˙
3.4.3 ˆ
Lenh cat
˙
˜ ˆ ’’ ¯ây
Chúng ta se xem xét lenh cat o d vì lenh này thuong làm viec voi d ˆ u vào và d ˆ u ra tiêu
ˆ ’`’ ˆ ´’ ¯a ` `
¯a
chua ’n. Theo mac d nh˙ket qua làm viec cua lenh cat huong toi˙d ˆ u ra tiêu chuan. ¯ e chung
ˆ ˘ ¯i ´
ˆ ’ ˆ
˙
’ ˆ ’´’ ´’ ¯a ` ˆ’ D ˆ’ ´’
˙ ˙ ´ ˙ ˆ ˙
minh là lenh này theo mac d nh tiep nhan dòng du lieu nhap vào, hãy chay lenh cat không
˘ ¯i
ˆ ˆ ˜’ ˆ ˆ ˆ
˙´ ´ ˙ ˙’ ˙ ˙ ´ ˙ ˙’ ˙
ˆ ˆ ’ ˆ’ ´’ ˆ
có tham so. Ket qua là con tro chuyen toi mot dòng moi, và hon nua có ve nhu không có gì
’ ’ ˜’ ’
xay ra. Lúc này câu lenh cho các ký tu d´ n tu˙ d ˆ u vào tiêu chuan. Hãy nhap bat ky ký tu nào,
’ ˆ `’ ’ ˆ¯e `’ ¯a ` ’
ˆ ˆ ˆ ´ ` ’
và nó se xuat hien ngay lap tuc trên màn hình, tuc là chuong trình ngay la˙ tuc d ’a chúng toi
˜ ´ ˆ ˆ
˙
ˆ ´’
˙ ´’ ’’ ˆ p ´’ ¯u
˙ ´
’
dˆ`u ra tiêu chua˙ Có the˙ tiep tuc nhap các ký tu, và chúng cung se xuat ˙hien trên màn hình.
¯a ’n.
ˆ ’ ´
ˆ ˆ ˆ ’ ˜ ´
˜ ˆ ˆ
˙ ˙ ˙
Thông thuong bàn phím d ’oc cau hình d ˆ’ nhap vào theo tung dòng, vì the neu ban nhan phím ˙
’`’ ¯u ’ ´ ˆ ¯e ˆ `’ ´ ´
ˆ ˆ ´
ˆ
˙ nhap se d oc d ˙a toi lenh cat, và lenh này se lai d a du lieu ra
<Enter>, dòng ký tu ban vua ˆ ˜ ¯u ’ ¯u ´’ ˆ
`’ ˙
’ ’ ’ ˆ ˜ ¯u ˜’ ˆ
’
¯a ˆ’ ’ ˆ
˙ ˜
màn hình thông qua d ˆ u ra tiêu chuan.˙Nhu vay, moi dòng ký tu nhap vào ˙se d ’oc hien ra
˙ ˙` ˙
ˆ
˙
’ ˆ ˜ ¯u ’ ˆ
˙
` ` ` ’’ ˙
hay lan: mot lan khi gõ và lan thu hai boi câu lenh cat. Neu nhan to hop phím <Ctrl>+<D>,
´’ ´ ´ ˙ ˆ’ ˙ ’ ˙ ˙
ˆ ˆ ˆ ˆ ˆ ˆ ˆ
˙’ ngung viec nhap du lieu, chúng ta se qua lai dòng nhap˙lenh. Cung có the su
˙
mà dùng d ˆ `’ ¯e ˆ ˆ ˜’ ˆ ˜ ˆ ˆ ˜ ˆ’ ’’
˙ ˙ ˙là câu lenh trong he vo d ’ dung ˙ ˙ ng trình d
˙’
ˆ’ ’
dung to hop phím <Ctrl>+<C>, mà ˆ ˆ ¯e `’ chuo
ˆ ’’ ¯ang chay.
Ne˙ u d a tên mot tap tin vào làm tham so cho lenh cat, thì noi dung cua lenh này se d ˙ c
´ ¯u ˙ ´ ˙ ˆ ˙ ’ ˆ
ˆ ’ ˆ ˆ ˆ ˆ ˜ ¯uo ’’
d ’a toi d ˆ
¯u ´’ ¯a `u vào˙tiêu chuan, tu d lenh cat se d˙ c noi dung này và d ’a toi d˙ˆ u ra tiêu chuan
˙
ˆ’ `’ ¯ó ˆ ˜ ¯o ˆ
˙
¯u ´’ ¯a ` ˙
ˆ’
(xem so d ˆ ). ` ˙ ˙ ˙
’ ¯o
ˆ ˆ Dˆ` ’
ˆ `
Noi dung tap tin -> ¯ au vào tiêu chuan (stdin) --cat--> dˆu ra
¯a
˙ ˙
’n (stdout)
ˆ
tiêu chua
D ’ ˆ ’`’ ’ ’ ˆ ˆ’ ’´’ ˜’ ˆ ¯a ` ˆ ’ ´ ´
¯ ây chı là mot truong hop riêng cua viec chuyen huong du lieu d ˆ u vào, mot co che rat
ˆ ˆ
’ ˆ ’
có ích cua he vo. ˙Và tat nhiên chúng ta can ˙
´ ˙ ` xem xét ky hon co che˙ này.
´ ˙
ˆ ˆ ˜ ’ ’ ˆ
˙
3.5 ˆ’ `
’´’ ¯ ˆ `
Chuyen huong dau vào/dau ra, duong ´ ng và dau loc
¯ˆ ˆ
¯ ’`’ o `
¯ˆ
˙
˘ ’ ¯ã ’’ ’`’ ¯a ` `
¯a ’ ˆ ’’ ´ ´’
Mac dù, nhu d nói o trên, thông thuong d ˆ u vào/d ˆ u ra cua mot chuong trình liên ket voi
ˆ
˙ d `u vào/d `u ra tiêu chuan, trong he vo còn có các môi truong d ˘ c biet cho phép chuyen
˙
các ¯aˆ ¯a
ˆ ˆ’ ˆ ’ ’`’ ¯a ˆ ˆ’
huong d ˆ `u vào/d ˆ u ra.
` ˙ ˙ ˙
’´’ ¯a ¯a
3.5.1 ’’
Su dung >, < và >>
˙
D ˆ’ ˆ’ ` ’’ ’’
¯ e chuyen huong d ˆ u vào/ra, su dung các ký hieu ">", "<" và ">>". Thuong su dung viec
’´’ ¯a ˆ ’`’ ˆ
chuye’n huong d ˜’ lieu ra cua câu lenh vào tap tin.˙Duoi d là mot ví du tuong ung: ˙
ˆ ’´’ ¯u ˆ ’ ˆ
˙
ˆ ’´’ ¯ây ˆ ’ ’ ´’
˙
˙ ˙ kênh ˙ giao tác ˙ ˙
maikhai@fpt:/some/where$ ls -l > /home/maikhai/ls.txt
ˆ ˆ ’ ’
Theo lenh này danh sách tap tin và thu muc con cua thu muc, mà tu d nguoi dùng
’ `’ ¯ó ’`’
˙ nh ls2 se d oc ghi vào tap tin /home/maikhai/ls.txt; khi này neu tap tin
thuc hien le ˙ ˙ ˙ ´ ˆ
’ ˆ ˆ ˜ ¯u ’
’ ˆ ˆ
˙ ˙ ˙ ˙ ˙ ˙
2
thu muc hien thoi
’ ˆ `’
˙ ˙
32 Bash
`
ˆ ´ ˆ
ls.txt không ton tai, thì nó se d ’oc tao ra; neu tap tin d có, thì noi dung cua nó se bi
˜ ¯u ’ ˆ ¯ã ˆ ’ ˜
˙ sách nói trên. Neu ban không muon xóa noi dung cu mà ghi thêm
˙ ´˙ ˙ ´ ˙ ˙
¯è ’’
xóa và ghi d boi danh ˆ ˆ ˆ ˜
` ´ ˆ ` ˙ ng ký hieu >> thay ˙
˜’ ˆ ¯a ˆ ˆ ’’
du lieu d ˆ u ra vào cuoi tap tin, thì can su du ˆ cho >. Khi này khoang ’
´ ng˙ truoc và sau các ký ˙ ˆ u > hay >> không có ý nghıa và chı dùng voi muc d
tra
˘ ’´’ hie ˙ ˙
˜ ’ ´’ ¯ích thuan
ˆ
tien, de nhìn. Ban có the chuyen huong không chı vào tap tin, mà còn toi d ˆ u˙ vào cua mot
ˆ ˜
ˆ ˆ’
˙ ’
ˆ ’´’ ’ ˆ ´’ ¯a` ’ ˙ˆ
˙ ˙ ´ ˙
câu lenh khác hay toi mot thiet bi nào d (ví du, máy in). Ví du, d ˆ’ d ’a noi dung tap tin
´ ˙
ˆ ’ ˆ ˆ ¯ó ¯e ¯u ˆ ˆ
/home/maikhai/ls.txt vua˙tao o trên toi cua so terminal thu hai3 có the su dung lenh
˙ ˙ `’ ’’ ´’ ˙’’ ˆ’ ˙´
’
˙’ ’
ˆ ’
˙
ˆ
sau: ˙ ˙ ˙
kênh giao tác
maikhai@fpt:/sw$ cat /home/maikhai/ls.txt > /dev/tty2
Nhu ban thay, > dùng d ˆ’ chuyen huong du lieu cua d ˆ u ra. Chuc nang tuong tu d´ i voi
’ ´
ˆ ¯e ˆ’ ’´’ ˜’ ˆ ’ ¯a ` ´’ ˘ ’’ ’ ¯o ´’
ˆ
`
d ˆ u vào d ’ ’ ’’ ’ ¯e ˙´ ` ˙
˙oc thuc hien boi <. Ví du, có the d´ m so tu trong tap tin ls.txt nhu sau (chú ý,
¯a ¯u ’ ˆ ˆ ˆ ˆ ’ ˆ ’
d chı là mot ví du minh hoa, trên˙thuc te thuong su dung câu lenh d ’n gian hon):
¯ây ’
˙
ˆ
˙ ˙
’ ´ ’`’
ˆ ’’ ˙
ˆ ¯o ’ ’
˙ ˙ ˙ ˙ ˙ ˙
kênh giao tác
maikhai@fpt:/sw$ wc -w < /home/maikhai/ls.txt
ˆ’ ’´’ ’`’ ¯u ’ ’’
Cách chuyen huong này thuong d ’oc su dung trong các script, cho các câu lenh mà thuong
ˆ ’`’
tiep nhan (hay cho) du lieu vào tu bàn˙ phím.˙Trong script dùng d ˆ’ tu d ˆ ng hóa mot thao tác
´
ˆ ˆ `’ ˜’ ˆ `’ ¯e ’ ¯o
˙
ˆ
nào d ˙ có the d ’a các thông tin can thiet cho câu lenh tu tap tin: trong tap tin này ghi san
¯ó, ˆ’ ¯u
˙ `
ˆ ´
ˆ ˆ `’ ˆ ˙ ˙
ˆ
˙ ˜
˘
nhung gì can d ˆ’ thuc hien lenh d Boi vì các ký hieu
` ¯e ’ ˆ ˆ ’’ ˙<, > và >> làm viec voi các kênh tiêu
˙ ˙ ´
˜’ ˆ ¯ó. ˆ ˆ ’
chuan (d ˆ u vào hoac d ˆ˙u ra), chúng không chı d ’oc dùng theo các cách ˙
ˆ’ ¯a ` ˙ ` ˙
˘ ¯a ’ ¯u ˙
’ quen thuoc, thuong
ˆ ’`’
dùng, mà còn có the ˙ ’ theo cách khác, "la mat" hon.˙ Ví du, các câu lenh sau là tuong d ong:
´
˘ ˙
ˆ ’ ˆ ’ ’ ¯u ’
’
˙ ˙ ˙
kênh giao tác
[user]$ cat > file
[user]$ cat>file
[user]$ >file cat
[user]$ > file cat
’ ˆ ˆ ´’ ˆ’
Tuy nhiên, tu chúng (không có mot lenh nào, tuc là không có kênh tiêu chuan nào cho
˙ ’n huong này không˙the d ’oc su dung, nhu the không the, ví du, nhap
lenh) các ký tu chuye ˙ ’ ¯u ’ ’’ ´ ’
ˆ ’ ˆ ’´’ ˆ ’ ˆ ˆ ˆ
vào dòng lenh˙sau:
˙
ˆ
˙ ˙ ˙ ˙
˙
kênh giao tác
[user]$ file1 > file2
¯u ’ ’ ’ ` ’
mà thu d ’oc ban sao cua mot tap tin nào d Nhung d ˆ u này không làm giam giá tri cua
ˆ ˆ ¯ó. ’ ¯ie ’
co che
’ ˆ ’˙
’
˙ ˙ ’
ˆ ˆ ˆ’
´ này, boi vì các kênh tiêu chuan có cho moi câu lenh. Khi này, có the chuyen huong’ ˙’´’
ˆ
˙
không chı d ˆ u vào và d ˆ u ra tiêu chuan, mà còn ˙ kênh khác. ¯ e làm d ’oc d ˆ u này, can
’ ¯a` ¯a` ˆ’ các D ˆ’ ¯u ’ ¯ie ` ˆ`
d ˘ t truoc ký hieu chuye ´ ’
ˆ ´ ’ Dˆ ` ˙’
’n huong so cua kênh muon chuyen. ¯ au vào tiêu chuan stdin có so 0, ´
¯a ’´’ ˆ ˆ ’´’ ˆ ˆ ˆ ˆ
d ˙ u ra tiêu chuan stdout - so 1, kênh thông báo loi stderr - so 2. Tuc là lenh chuyen huong có
`
¯a
ˆ
˙’
ˆ ´
ˆ ˜
ˆ ´ˆ ´’ ˆ ’ ’´’
ˆ
dang d ˆ y d ’ nhu sau (xin d ’oc nhac lai, khoang trang canh > là không ˙ ´ t thiet):
`
¯a ¯u ’ ¯u ’ ´
˘ ’ ´
˘ nha
ˆ ´
ˆ
˙ ˙ ˙ ˙
command N > M
3
ban can dùng to hop phím <Ctrl>+<Alt>+<F2> d ˆ’ chuyen toi cua so terminal này và d ˘ ng nhap truoc
`
ˆ ˆ’ ’ ¯e ˆ’ ´’ ’’ ˆ’ ¯a ˆ ’´’
˙ ˙ ˙
ˆ’
3.5 Chuyen huong dau vào/dau ra, duong ´ ng và dau loc
`
’´’ ¯ ˆ `
¯ˆ ˆ
¯ ’`’ o `
¯ˆ 33
˙
¯ó, ´ ’
ˆ ˆ’
Trong d N và M - so cua kênh tiêu chuan (0, 1, và 2) hoac tên tap tin. Trong mot vài
˘ ˆ ˆ
truong hop có su dung các ký hieu <, > và >> mà không chı ˙ so kênh hay tên tap tin, vì
’ `’ ’ ’’ ˆ ’ ra ´ ˙
ˆ ˆ
˙
˙ thieu se d ˘ t, theo mac d nh, 1 neu dùng >, tuc là d `u ra tiêu chuan, hoac 0 neu
˙ ˙ ˙˘
˜
vào cho còn ´ ˜ ¯a
ˆ ˆ ˘ ¯i ´ˆ ´’ ¯a
ˆ ˆ’ ´ˆ
dùng <, tuc là d ˆ
´’ `u vào ˙tiêu chuan. Nhu the, khi không có so nào chı ra, > se d oc biên dich
’ ˙ ˙ ´ ´ ’ ˙
¯a ˆ ’ ˆ ˆ ˜ ¯u ’
’
˙ ˙
ˆ’ ’´’
là 1 >, còn < se d ’oc biên dich là 0 <. Ngoài viec chuyen huong các kênh tiêu chuan d ’n
˜ ¯u ’ ˆ ˆ’ ¯o
gian nhu vay, còn có ’ ˘
’ ˙ kha nang không nhung chuyen huong du lieu vào kênh này hay kênh
˙ ˙’
’ ˆ ˜’ ˆ ’´’ ˜’ ˆ
khác, mà còn sao chép noi dung cua các kênh tiêu chuan d Ký ˙hieu & dùng d ˆ’ thuc hien
˙
ˆ ’ ˆ’ ¯ó. ˆ ¯e ’ ˆ
d ˆ u này, khi d ˘ t nó (&) truoc so cua kênh se chuyen du lieu d´ n: ˙
`
¯ie ¯a
˙ ´ ´ ’
’’ ˆ ˜ ˆ’ ˜’ ˆ ¯e ˆ ˙ ˙
˙ ˙
command N > &M
ˆ ˜ ¯a ’ ´’ ´ˆ ¯u ’ ’’ ¯e ’ ¯a
ˆ ` ˆ’
Lenh này có nghıa là, d ˆ u ra cua kênh voi so N d ’oc gui d´ n ca d ˆ u ra tiêu chuan, và sao
`
˙´ i kênh có so M. Ví du, d ’ sao chép thông báo loi vào d `u ra tiêu chuan, can dùng lenh
chép to ´ ˙
˜ ’ ˆ `
’ ˆ ¯e
ˆ ˆ ¯a
ˆ ˆ ˆ
˙ ’ ˘ ´
2>&1, còn 1>&2 sao chép stdout vào stderr. Kha nang này d ˘ c biet có ích khi muon ghi d ˆ u ˙`
¯a ˆ ˆ ¯a
ra vào tap tin, vì khi d chúng ta vua có the
`’ ´ ˙ trên màn hình, vua ghi chúng
’ nhìn thay thông báo ˙ `’
ˆ ¯ó ˆ ˆ
vào tap ˙tin. Ví du, truong hop sau thuong d oc ung dung trong các script chay khi khoi d ng ’’ ¯o
ˆ ’`’ ’ ’`’ ¯u ’ ´’
’ ˆ
˙
Linux: ˙ ˙ ˙ ˙ ˙ ˙
kênh giao tác
teppi82@teppi:~$ cat hiho > /dev/null
cat: hiho: No such file or directory
teppi82@teppi:~$ cat hiho > /dev/null 2>&1
3.5.2 ’’
Su dung |
˙
ˆ ’ ˆ’ ’´’ ¯a ` ’ ˆ’ ´’ ¯u `’ ´
Mot truong hop d ˘ c biet cua chuyen huong d ˆ u ra là su to chuc các d ’ong ong (ha y còn có
ˆ ’`’ ’ ¯a ˆ
the ˙ goi là kênh giua các chuong trình, hoac bang chuyen). Hai hay vài câu lenh, mà d `u ra
’ ˙ ˙ ˙ ˘ ˘ ˙`
ˆ ˜’ ’’ ˆ ˆ ¯a
ˆ
cua lenh truoc dùng làm d ˆ u vào cho lenh˙sau, liên ket voi nhau (có the nói phân cách nhau,
’ ˆ ˙
’´’ `
¯a ˆ ´ ´’
ˆ ˆ’ ˙
´ ˙ ´
ˆ ˆ ’’ ˆ ’
˘ ¯u
˙ `
¯a ˆ’ ’ ˆ
neu muon) boi ký hieu gach thang d ´’ng - "|". Khi này d ˆ u ra tiêu chuan cua lenh d ´’ng bên
¯u
˙ ’n d´ n d `u vào tiêu chuan cua chuong trình, dung bên phai so voi |.
trái so voi | duoc chuye ¯e ¯a
´’ ˙ ’ ’ ´’ ˙ ’ ´’
’’ ˆ ˆ ˆ ˆ ’’
Ví du: ˙
˙
kênh giao tác
maikhai@fpt:/sw$ cat ls.txt | grep knoppix | wc -l
˜ ´
ˆ ’ ’ ˆ
Dòng này có nghıa là ket qua cua lenh cat, tuc là noi dung tap tin ls.txt, se d ’oc chuyen
´’ ˆ ˆ ˜ ¯u ’ ˆ’
´ n d ˆ u vào cua lenh grep, lenh này se phân chia no˙ dung nói trên và chı lay˙ ra nhung
d ˆ ¯a
¯e ` ’ ˆ ˆ
˙
˜ ˆi
˙ ’ ˆ ´ ˜’
dòng nào có chua tu ˙ ` knoppix. ˙ ´ n luot mình, ket qua ˙cua lenh grep d oc chuyen toi d `u
´ ’ ’ ˆ ’ ´’ ¯a
´’ ’ ¯ e ’˙’
Dˆ ˆ ¯u ’
’ ˆ ˆ
vào cua lenh wc -l, mà tính so nhung dòng thu d ’oc. ¯ uong ong su du˙ d ˆ’ ket hop vài
’ ˆ ´
ˆ ˜’
˙
¯u ’ D ’`’ ´ ˆ ’’ ng ¯e ´ ’ ˆ
chuong trình nho lai voi nhau (moi chuong trình thuc ˙ ˆ n mot bien d ˆ’i xác d nh nào d˙ trên
’’
˙ ’ ´’ ˜
ˆ ’’ ’ hie ˆ ´ ¯o ˆ
˙
¯i ¯ó
d ˆ u vào) tao thành˙ mot lenh tong quát, mà ket qua˙ cua ˙ se là mot bien d ˆ’i˙ phuc tap. Can
`
¯a ˆ ˆ ˆ’ ´
ˆ ’ ’ nó ˜˙ ˆ ´ ¯o ˆ ´’ ˆ`
` ˙ he vo goi và thuc hien tat ca các câu lenh có trong d ong ong cùng mot lúc, chay
˙ ˙ ˙ ´ ˙
chú ý rang, ˆ ’
˘ ’ ˆ ´ ’ ˆ ˆ ¯u `’ ˆ
’ ˆ
mo ˆ˜i lenh d trong mot ban ˙ he vo riêng. Vì the˙ngay khi chuong trình thu nhat bat d ˆ u d ˙’a
ˆ ¯ó
˙ ˙
ˆ ’ sao ˙ˆ ’ ´
ˆ ’’ ´ ˙ ´ ¯a ¯u
´’ ˆ ˘ `
´ ˙ ’ o d `u ra, chuong trình tiep theo bat d `u xu lý ket qua này. Cung y nhu vay, các lenh
ket qua ’’ ¯a ˙ ˙
´ ´ ˆ
˘ ¯a ’’ ´ ’
ˆ ˆ ’’ ˆ ˆ ˜ ’ ˆ ˆ
´ p theo thuc hien các công viec cua mình: cho du lieu tu lenh truoc và d ’a ket qua cho lenh
tie
ˆ ’ ˆ ˆ ’ `’ ˜’ ˆ `’ ˆ ’´’ ¯u ˆ ´ ˙’ ˙
ˆ
´ ˙´ ˙ ˙ ` ’ ´ ´ ˙’ ´
tiep theo, giong nhu mot dây chuyen san xuat. Neu nhu muon mot lenh nào d ket thúc hoàn˙ ´ ˙
ˆ ˆ ’ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ¯ó ˆ
˙ ˙ ˙
’´’ ’ ˆ ˆ ´
ˆ ˆ’ ’’
toàn, truoc khi thuc hien lenh tiep theo, ban có the sue dung trên mot dòng ca ký hieu dây ˆ ’ ˆ
chuye `n |, cung nhu ´ u ˆ ˙ da˙ chap phay ;. Tru˙´ c moi dau cha˙m phay, he vo se dung lai và cho
˙´ ’ ˜ ´ ´ ’ ˆ˙ ’ ˜ `’ ˙
ˆ ˜ ’ ˆ ˆ ’o’ ˆ ˆ ˆ ˆ `’
cho d´ n khi thuc hien xong tat ca các câu lenh truoc cua d ’ong ong. ˙Trang thái thoát ra (giá
¯eˆ ’ ˆ ´ ’
ˆ ˆ ’´’ ’ ¯u `’ ´ ˆ
˙
˙ ˙ ˙ ˙
34 Bash
¯u ’ ’ ’ ˆ ’’ ’ ˆ ¯u `’ ´
tri lôgíc, mà d ’oc tra lai sau khi thuc hien xong chuong trình) cua mot d ’ong ong se trùng ˆ ˜
˙ i trang thái thoát ra cua câu lenh sau cùng trong d ong ong. O truoc˙câu lenh d `u tiên cua
˙ ˙’ ˙ ˙ ’’ ’´’
vo´’ ˆ ¯u `’ ´
’ ˆ ˆ ¯a
ˆ ’
d ’ong ´˙ ong có the d ˘ t ký hieu "!", khi d trang thái thoát ra cua d ong ong se là phu d nh
’ ¯a ˙ ’ ¯u `’ ´ ˙ ’ ¯i
¯u `’ ˆ ˆ ˆ ¯ó ’ ˆ ˜
lôgíc cu ’ a trang thát ˙thoát ra ˙cua lenh cuoi cùng trong d ong ong. Tuc là neu trang thái thoát
’ ˆ ´
ˆ
˙
¯u `’ ˆ
’ ´ ´’ ´
ˆ
˙
ra cua lenh ˙ ´ i cùng bang 0 thì trang thái thoát ra cua d ’ong ong se bang 1 và ˙ ’oc lai. He
’ ˆ cuo ˆ `
˘ ˙ ’ ¯u `’ ´ ˆ ˜ ˘` ngu ’ ˆ
’ `’ ˙ tat ca các câu lenh ket ˙
vo cho cho ˆ ´ ’ ´ thúc roi moi xác d nh và d ’a ra giá tri này.
` ´’ ˙ ˙ ˙
ˆ ˆ ˆ ¯i ¯u
˙ ˙ ˙
Dˆ`
3.5.3 ¯ au loc
˙
Ví du cuoi cùng o trên (ví du voi câu lenh grep) có the dùng d ˆ’ minh hoa cho mot khái niem
´
ˆ ’’ ´’ ˆ ˆ’ ¯e ˆ ˆ
˙ ng khác, d là, dau loc chuong trình. Dau loc - d là lenh (hay chuong trình), mà tiep
` ˙ ˙ ` ˙ ˙ ˙´
qua tro ¯ó ¯ˆ ’’ ˆ ¯ó ˆ ’’ ˆ
˙ lieu vào, thuc hien ˙mot vài bien d ’i ¯
nhan du ˆ ˙ lieu này ˙và d a ra ket qua o d `u ra tiêu
´ ¯o trên du ˆ ´ ’ ’’ ¯a
ˆ ˜’ ’ ˆ ˆ ˆ ˆ ˜’ ¯u’ ˆ ˆ
ˆ ’ ¯ây
˙ ’ chuyen d´ n noi nào d theo ý˙muon cua nguoi dùng). Các câu lenh
chuan (tu d còn có the ˙
˙’ ` ˙
ˆ
˙’
ˆ ¯e ˆ ’ ¯ó ´ ’
ˆ ’`’ ˆ
`u loc bao gom các lenh d nói d´ n o trên cat, more, less, wc, cmp, diff,
` ˙
- dˆ
¯a ˆ ˆ ¯ã ¯e ’’
ˆ
và ca nhung câu lenh có˙trong bang 3.1
’ ˙ ˜’ ˆ ’
˙
’
Bang 3.1: Các câu lenh d ˆ u loc
ˆ ¯a`
Lenh ’ ˘ ´
Mô ta ngan gon ˙ ˙
ˆ
˙ ˙ ` ˜
grep, fgrep, egrep Tìm trong tap tin hay du lieu d ˆ u vào các dòng có chua mau van ban
ˆ ˜’ ˆ ¯a ´’ ˆ ˘ ’
˙ d a các dòng˙này toi d `u ra tiêu chuan
¯u ’ ’
d ’oc chı ra và ¯u ’ ´’ ¯aˆ ˆ’
˙ ` ´
tr ˜’ ˆ ¯a ˆ ’ ’’ ´’ ´ ’’
Trong du lieu d ˆ u vào thay the các ký tu o ô thu nhat boi các ký tu tuong
ˆ ’ ’’
´’ ’’
ung o ô thu ˙ hai. Hãy thu gõ lenh tr ˙
´’ ’’ `
abc ABC roi gõ vài dòng chua ˙ ´’
ˆ ˆ
các ký tu abc! ˙
’
˙
comm So sánh hai tap tin theo tung dòng mot và d ’a vào d ˆ u ra tiêu chuan 3
ˆ `’ ˆ ¯u `
¯a ˆ’
cot : mot - nhu ˙ ng dòng chı gap o tap tin thu nhat, hai - nhung dòng chı
’ ˘ ’’ ˆ ˙ ´’ ˆ ´ ’
ˆ ˆ ˜’ ˜’
gap o tap tin thu hai, và ba - nhung˙dòng có trong ca hai tap tin.
˙ ’ ˙
˘ ’ ˆ ´’ ˙
˜’ ’ ˆ
˙ ˙ ˙
pr Dinh dang tap tin hay noi dung cua d ˆ u tiêu chuan d ˆ’ in ´ n.
¯ ˙ ˆ ˆ ’ ¯a ` ˆ’ ¯e a ˆ
˙ ˙’ ˙
sed Trình soan thao tap tin theo dòng, su dung d ˆ’ thuc hien mot vài bien d ˆ’i
ˆ ’’ ¯e ’ ˆ ˆ ´ ¯o
ˆ
˙ u d `u vào (lay tu tap tin hay ˙d `u vào tiêu chuan)
trên du lie ¯a ˙ ´ `’ ˆ ˙ ˙ ’˙
˜’ ˆ ˆ ˆ ¯aˆ ˆ
˙ ˙
ˆ ¯a ` ¯a ˆ ˆ ¯ôi ˜’ ˆ ¯a ` ˆ ˘ ’’ ˜’ ˆ
Mot d ˆ u loc d ˘ c biet, câu lenh tee, nhân d du lieu d ˆ u vào, mot mat gui du lieu này
d´ n d ˆ˙u ra tiêu chuan, mat khác˙ghi nó (du lieu) vào tap ˙ (nguoi dùng can d ˘ t tên). De thay
˙ ˙’ ˙ ˘ ˙ `˙ ˙˜ ´
ˆ `
¯e ¯a ˆ ˜’ ˆ ˆ tin ’`’ ˆ ¯a ˆ ˆ
ra` ng theo chuc nang cua
˘ ´’ ˘ ’ ˙ mình lenh tee tuong tu nhu nhóm ký tu chuyen huong 1>&file.
˙ ˙ ’ ˙ ´
ˆ ’’ ’ ’ ’ ˆ ’’
Kha nang cua d ˆ u loc có the mo ˙ ˆ ng voi viec su dung các bieu thu˙c chính quy (d ˆ u khien),
’ ˘ ’ ¯a ` ˆ’ ’’ ro ´’ ˆ ’’ ˙ ˆ’ ´’ ¯ie` ˆ’
cho phép, ví du, to ´’ ˆ’˙chuc tìm kiem theo các˙ mau tìm kiem tu d ’n gian d´ n phuc tap và rat
´ ˙
ˆ ˜ ˙
ˆ ´
ˆ `’ ¯o ’ ¯e ˆ ´’ ´
ˆ
phuc tap. Ne
´’ ˙ ´ n, chúng ta có the nói rat nhieu ve chuyen huong và d `u loc. Nhung noi
´ u muo ’ ´ ` ˆ ` ’ ’´’ ˙
ˆ ˆ ˆ ˆ ˆ ˆ ¯a
ˆ ’ ˆ
˙
dung này có trong phan lon các cuon sách ve UNIX và Linux (xem phan lo˙ ket). Vì va˙
`
ˆ ´’ ´
ˆ `
ˆ ˆ `’i ´
` ˆ ˆ y,
˙
˜ `’ ’’ ¯ây ˆ’ ˆ ˆ`
chúng ta se dung o d và chuyen sang mot phan khác, d ’oc goi là "môi truong và các bien
¯u ’ ’`’ ´
ˆ
’’ ˆ ’
môi truong" tao boi he vo.
`’ ˙ ˙ ˙
’
˙ ˙
3.6 ´
ˆ ´ ´
ˆ ˆ ’ ˆ ’
Tham bien và các bien so. Môi truong cua he vo
’`’
˙
ˆ ´
ˆ ˆ ’ ´’ ˆ ´ ´
Khái niem tham bien trong he vo bash tuong ung voi khái niem bien so trong các ngôn ngu
’ ’ ´’ ˆ ˆ ˜’
lap trình˙ thông thuong. Tên goi (hay ID) cua tham bien có the là mot tu bao gom các ký tu
˙ ’ ´ ˙’ `
ˆ ’`’ ˆ ˆ ˆ `’ ˆ ’
˙’ ng chu cái, chu so, dau gach duoi (chı ký tu d `u tiên cua tu này không d oc là chu so), và
ba ´ ´ ˙ ´ ’ ’ `’ ˙ ´ ˙
˜’ ˜’ ˆ ˆ ’’ ’ ¯a
ˆ ¯u ’
’ ˜’ ˆ
ca nhung ký tu sau: , , #, , - ˙(gach ngang), $,,˙0, _ (gach duoi). Chúng ta nói ˙rang, tham bien
’ ˜’ ’ ’´’ `
˘ ´
ˆ
˙ ˙ ˙
´
ˆ ´ ´
ˆ ˆ ’ ˆ ’
3.6 Tham bien và các bien so. Môi truong cua he vo
’`’ 35
˙
¯u ’ ¯i ¯u ’ ¯a ´
ˆ ´ ˆ ˆ’
d ’oc xác d nh hay d ’oc d ˘ t ra, neu nguoi dùng gan cho nó mot giá tri. Giá tri có the là mot
’`’ ˘ ˆ
˙ trong˙rong. De nhìn thay giá tri cua tham bien, nguoi ta su dung ˙ tu $ o truoc tên cua
dòng ´ ˜ ¯ ˆ’ ˙ ˙´ ’ ´ `’ ˙’ ˙
ký ’ ’’ ’´’ ’˙
ˆ ˆ ˆ ˆ ’ ’
nó. Nhu vay, lenh: ˙ ˙ ˙
’ ˆ ˆ
˙ ˙
kênh giao tác
maikhai@fpt:/sm$ echo parameter
ˆ’
hien thi tu parameter, còn lenh
`’ ˆ
˙ ˙
kênh giao tác
maikhai@fpt:/sm$ echo $parameter
ˆ’ ’ ´ ´ ´ ´ ¯ó ’ ’
hien thi giá tri cua tham bien parameter (tat nhiên neu nhu tham bien d duoc xác d nh).
ˆ ˆ ˆ ’ ˆ ¯i
˙ ˙ ˙ ˙
3.6.1 ´
ˆ
Các dang tham bien khác nhau
˙
´
ˆ ´
ˆ ´ ¯a
Tham bien chia thành ba dang: tham bien vi trí, tham bien d ˘ c biet (các ký tu d ˘ c biet d nói
ˆ ˆ ’ ¯a ˆ ¯ã
˙ ´ ˙ ´ ˙ ’˙ ˆ ’
´
’’ trên chính là tên cua nhung tham bien này) và các bien so cua he vo. Tên (ID) cua tham
o ’ ˙ ˙ ˙’
˜’ ˆ ˆ ˆ
bien vi trí gom mot hay vài chu so (nhung không có tham bien vi trí ˙ Giá tri cua tham bien
´
ˆ `
ˆ ˆ ˜’ ´ ˆ ’ ´
ˆ 0). ’ ´
ˆ
˙ các tham so cho lenh, d oc d a ra khi chay he vo (tham so d `u tiên là giá tri cua tham
˙´ ˙´ ˙
vi trí là ˆ ˆ ¯u ’ ¯u
’ ’ ˆ ’ ˆ ¯a
ˆ ’
˙´ n 1, tham so thu hai - ˙
bie ´ ´’ tham bie ˙´ n 2, v.v. . . ). Có the dùng câu lenh set d ’ thay ˙d ’i giá tri
˙ ˙’
ˆ ˆ ˆ ˆ ˆ ¯eˆ ¯oˆ
cua tham bien vi trí. Giá tri cua các tham bien này cung thay d ˆ’˙ trong khi he vo thuc hien
’ ´
ˆ ’ ´ˆ ˜ ¯oi ˆ ’ ’ ˆ
˙
mot trong các hàm ´ ˙ so (chúng ta se xem xét van d ` này o duoi). Các tham bien d ˘ c biet˙ không
˙ ´ ¯e ’’ ’´’ ´ ¯a ˙ ˙
ˆ ˆ ˜ ˆ ˆ ˆ ˆ
gì ˙khác hon là các mau, mà su thay the (phép the, phép hoán d ’i) chúng d oc thuc hien nhu
˜ ´ ´ ˙ ˙
’ ˆ ’ ˆ ˆ ¯o
ˆ ¯u ’
’ ’ ˆ ’
’
trong bang 3.2: ˙ ˙ ˙ ˙
Các tham bien d ˘ c biet, d ’oc liet kê o bang trên, có mot d ˆ’m khác biet d là chı có the
´ ¯a
ˆ ˆ ¯u ’ ˆ ’’ ’ ˆ ¯ie ˆ ¯ó ’ ˆ’
"nhac" d´ n chúng, không ˆ’
´
˘ ¯e ˙ ˙ the gán các giá tri cho các tham ˙bien này. Bien ˙
˙ ˙ ´ ´ môi truong, nhìn
ˆ
ˆ ˆ ’`’
`’ ˆ ’ ¯ó
tu phía he vo, d là các tham bie ¯u ’ ¯at ´ n d ’oc d ˘˙ tên. Giá tri cua bien môi truong d ’oc gán nho
ˆ ’ ´ˆ ’`’ ¯u ’ `’
thao tác có ˙ dang sau: ˙ ˙ ˙ ˙
˙
kênh giao tác
[user]$ name=value
’ ´ ´
Trong d name - tên cua bien, còn value - giá tri muon gán cho bien (có the là mot
¯ó, ˆ ˆ ´ˆ ˆ’ ˆ
dòng tro ˆ ’ ´
ˆ ’`’ ’ ’
ˆ `˙
´ ng). Tên cua bien môi truong chı có the bao gom các chu so, chu cái và không d ’oc
ˆ ˜’ ˆ ´ ˜’ ¯u ’
˙
˙
´ `
˘ ¯a ’’ ˆ ˜’ ´ˆ `
˘ ¯o ¯oa ´ ˆ ˆ ` ´
bat d ˆ u boi mot chu so. (Tin rang sau khi d c d n viet ve tham bien vi trí thì các ban d hieu
ˆ ¯ã ˆ’
ˆ ´
˙
tai sao mot bien môi truong không the bat˙d ˆ u boi mot chu so.) Giá tri có the là bat ky mot
ˆ ’`’ ´ ` ˙
ˆ’ ˘ ¯a ’’ ˆ ˜’ ´ˆ
˙
ˆ’
˙´ `
ˆ ˆ
˙
dòng van ˘ ˙ban nào. Neu giá tri có chua nhung ký tu d ˘ c biet, thì can d ˘ t nó (giá tri) vào da˙u
’ ´ ´’ ˙ ` ¯a ˙ ´
ˆ ˜’ ’ ¯a ˆ ˆ ˆ
´ ˙ ´ ˘ ˙
˙ ˙´ ˙ ˙
ngoac. Giá tri tat nhiên se không chua các dau ngoac này. Neu mot bien môi truòng d ’oc xác
˘ ˆ ˜ ´’ ˆ ˆ ˆ ´ ˆ ’ ¯u ’
d nh, thì cung có the bi xóa bo bang lenh noi trú unset. Tap hop˙tat ca các bien này cùng voi
¯i
˙
˜
˙
ˆ’ ’ ` ˘ ˆ ˆ
˙ ˆ ’ ´ ’ˆ ´
ˆ
˙ ´
’
˙ giá tri d gán cho ˙chúng goi là môi truong (enviroment) cua he vo. Có the xem nó (môi
các ˙ ˙` ˙ ˙ ˆ ’’ ’
¯ã ’’ ˆ
truong) nho lenh set khi không có tham so (có the can dùng d ’o˙ng ong ’set | less",
’`’
˙`
’ ˆ
˙ ´
ˆ ˆ’ ˆ ` ¯u `’ ´ ˆ
˙ ´
´ ` ˆ D ˆ’
´ ’ ˆ ´
neu môi truong lon, có nhieu bien). ¯ e xem giá tri cua mot bien môi truong cu the, thay vì
ˆ ’`’ ’ ˆ ˆ ’`’ ˆ’
˙nó bien muon xem), có the ˙ ’ dung lenh
˙ ´
ˆ `
dùng lenh set (khi này can tìm trong ket qua cua
ˆ ´
ˆ ’ ’ ´
ˆ ˆ ˆ’ su’ ˆ
echo: ˙ ˙ ˙
kênh giao tác
[user]$ echo $name
36 Bash
’ ´
Bang 3.2: Thay the các tham bien d ˘ c biet
ˆ ´ ¯a
ˆ ˆ
´
Tham bien Quy luat thay the ´ ˙ ˙
ˆ ˆ ˆ
˙´ ’ ´ ´ ¯a `’
* ˘ `
Thay the boi các tham bien vi trí, bat d ˆ u tu tham bien thu nhat. Neu su
ˆ ’ ˆ ´ˆ ´’ ´ ˆ ´
ˆ ’
´ thuc hien trong dau ngoa
thay the ’ ˆ ´ ˙ ˘ c kép, thì tham bien này se d oc thay
´ ˙
ˆ ˆ ˆ ˜ ¯u ’’
’’ ˆ `’ nha ˆ ˙ ˆ
boi mot tu ˙duy ˙ ´ t, mà tao ra tu tat ca các tham bien vi trí, phân cách
`’ ´ ’ ´ˆ
˙
nhau bo ˙ ’ i ký tu d ˆ u tiên cu˙ bien so IFS (se nói d´ n o sau). Tuc là "$"
` ’a ´ ´ ˜ ¯e ’’
˙ ´’
’ ’ ¯a ˆ ˆ ˆ
tuong d ’ong vo ˙ ´ i "$1c$2c. . . ", trong d c - ký tu d `u tiên trong giá tri
’’ ¯u ’ ’ ¯ó ’ ¯aˆ
’ ´ ´
ˆ ˆ ´
ˆ ’ ´
cua bien so IFS. Neu giá tri cua IFS trong, hoac không d ’oc xác d nh
ˆ ˘˙ ¯u ’ ¯i
˙
giá tri, thì tham bien phân cách nhau boi các khoang trang. ˙
´ˆ
˙ ’’ ˙ ’ ´
˘ ˙
˙ ´ ’ ´ ´ ` ´
@ Thay the boi tham bien vi trí, bat d ˆ u tu tham bien thu nhat. Neu thay the
ˆ ’ ˆ ˘ ¯a `’ ˆ ´’ ´ ˆ ´ ˆ ´
ˆ
thuc hien trong ngoac kép, ˘ ˙ thì moi tham bien se d oc thay the boi mot
˜ ´ ˜ ¯u ’ ´ ’’ ˆ
’ ˆ ˆ ˆ ’ ˆ
tu
`’ ˙riêng biet. Tuc là,˙"$@" tuong d ong voi "$1" "$2" . . . Neu không có
˙ ˙ ´ ˙
ˆ ´’ ’ ’ ¯u ’ ’ ´’ ˆ
tham bien ˙ trí, thì giá tri se không d ’oc thiet lap (tham bien se bi x
´ vi
ˆ ˜ ¯u ’ ´ ˆ
ˆ ´ˆ ˜
# Thay the ’’i´ bo˙ giá tri thap phân cua các tham bien vi trí.
ˆ ˆ
˙ ’ ˙ ´˙
ˆ
˙
´ ’’ ˙ ˙ ´ ˙
? ˆ ’
Thay the boi trang thái thoát ra cua câu lenh cuoi cùng trong d ’ong ong,
ˆ ˆ ¯u `’ ´ ˆ
˙ n trong che d nen truoc.
´ ¯o ˆ ˙
mà d ’oc thuc hie
¯u ’ ’ ˆ ˆ ˆ ` ’´’
˙ ´ ’˙ ˙ ˙
- (gach ngang) ˆ ’ `’ ¯u ’ ¯a ’’ ˆ
Thay the boi giá tri các co, flag, d ’oc d ˘ t boi lenh noi trú set hay trong ˆ
˙ khi chay he vo. ˙ ’ ˙ ˙ ˙ ˙
ˆ
˙ ´ ˙’ ´ ’ ´
$ Thay the boi so cua tien trình (PID - process identificator)
ˆ ’ ˆ ˆ
´ boi so cua tien trình (PID) cuoi cùng trong so các câu lenh thuc
Thay the ’’ ˆ
ˆ ´ ’ ´ ˆ ´ˆ ´
ˆ ˆ ’
hien trong ne `n sau. ˙ ˙
ˆ ˆ
˙ ´ ’’ ´
0 ˆ ’
Thay the boi tên he vo hay tên cua script d
ˆ ’ ¯ang chay. Neu bash chay
ˆ
mot tap tin lenh nào ¯ó, ˙ d thì $0 có giá tri bang tên cua tap tin này. Trong
`
˘ ’ ˆ˙ ˙
ˆ ˆ ˆ
truong hop nguoc lai giá tri này bang d ’ong dan d ˆ u ˙¯u d´ n he vo (ví
˙` ˙
’’ ’
˙
’’ ˘ ˙¯u `’
` ˜ `
ˆ ¯a d ’ ¯e ˆ ’ ˆ
du, /bin/bash ˙ ˙ ˙ ˙ ˙
˙ ´ ’’ ´ ´ ’ ´
_ (gach duoi)
’´’ Thay the boi tham so cuoi cùng cua câu lenh truoc trong so các câu lenh
ˆ ˆ ˆ ˆ ’´’ ˆ ˆ
˙ d d ’oc thuc hien (neu d lai là mot tham ´
´ ¯ó ˙ bien hay bien so, thì se˙ su
´ ´
¯ã ¯u ’ ’ ˆ ˆ ˆ ˆ ˆ ˆ ˜ ’’
dung giá tri cua ˙
˙ ˙ ’ n ˙ ˙
˙ ˙
¯ó, ˆ` ’’ ´ˆ ’ ˆ ’`’ ’ `
Trong d can thay name boi tên bien (nhu vay, trong truong hop này, ban lai can phai
ˆ ’
bie´ t tên cua bien muon xem). Trong so các bien, mà ban se thay trong ket qua˙cua˙ lenh set,
ˆ ’ ´
ˆ ´
ˆ ´
ˆ ´ ˙
ˆ ´
˜ ˆ
˙ ´
ˆ ’ ’ ˆ
˜’ ´ ´
ˆ ˆ ¯e
ˆ ´˙
ˆ ´ˆ ’’ ˙ `
có nhung bien rat thú vi. Xin hãy chú ý d´ n, ví du, bien RANDOM. Neu thu chay vài lan liên
ˆ
´
tiep câu lenh sau: ˙ ˙ ˙
ˆ ˆ
˙
kênh giao tác
maikhai@fpt:/sw$ echo $RANDOM
˜ `
ˆ ˆ ˜ ˆ ¯u ’ ˆ ´’ ´
ˆ ’
thì moi lan ban se nhan d ’oc mot giá tri moi. Nguyên nhân là vì bien này tra lai mot giá
ˆ
˜ 4 ˙ ˙’ ng 0˙- 32 ˙768. ˙ ˙ ˙
tri ngau nhiên trong khoa
ˆ
˙
3.6.2 ´
ˆ ´ ’ ˆ ’
Dau nhac cua he vo
˘
˙
ˆ ´ ´
ˆ ˆ ´
ˆ ´
ˆ ’ ´ ˆ ´
Mot trong các bien rat quan trong có tên PS1. Bien này cho biet dang cua dau nhac, mà bash
˘
˙ ra trong khi cho nguoi dùng nhap câu lenh tiep theo. Theo mac d nh thì bien này d oc
d ’a `’ ’`’ ˙ ´ ˙ ˘ ´
¯u ˆ ˆ ˆ ¯i ˆ ¯u ’
’
˙
gán giá tri "s-v$ , tuy nhiên trên các ˙ban phân phoi khác nhau˙ thuong có các script
’ ´ ˙ ˙
ˆ ’`’
˙
4
`’ ´ ˜
random là tu tieng Anh có nghıa ngau nhiên
ˆ ˜ ˆ
´
ˆ ´ ´
ˆ ˆ ’ ˆ ’
3.6 Tham bien và các bien so. Môi truong cua he vo
’`’ 37
˙
’’ ¯o ¯a ˆ ¯i ´
khoi d ˆ ng (hay script d ˘ ng nhap) xác d nh lai bien này. Nói chung thì trong bash có tat ca
ˆ ´ ’
ˆ
´ ´ ˙ nhac, d oc su dung trong các truong hop khác nhau. Bien PS1 d a ra dang cua dau
´
bon dau ˘ ¯u ’ ’’ ˙ ˙ ` ˙ ´ ’ ´
ˆ ˆ ’ ’’ ’ ˆ ¯u ’ ˆ
´ ˙` nhap˙lenh. Dau nhac thu hai, xác d nh boi bien PS2, xuat hien khi he vo
´ ´ ˙ ’’ ´ ´ ˙
ˆ ’
nhac khi he vo cho ˆ ˆ
˘ ’ ˆ ˘ ´’ ¯i ˆ ˆ ˆ ˆ ’
˙
cho nguoi dùng nhap thêm ˆ
`’ ’`’ ˙ ˙ mot vài du lieu can thiet nào d d ’ có the tiep tuc chay câu lenh
` ´ ˙ ¯ó ¯e ’ ´ ˙ ˙
ˆ ˜’ ˆ ˆ ˆ ˆ ˆ ˆ ˆ
(chuong trình) d goi. Theo mac d nh bien PS2 có giá tri ">". Rat có the ban d˙ nhìn thay
’’ ¯ã
˙ ˙˘
¯i
˙´
ˆ ´
ˆ ˆ’
˙
¯ã
˙´
ˆ
da´ u nhac này, khi cha ˆ
´
˘ ˙ y lenh cat d ˙ d a du lieu vào tu bàn phím vào tap tin. ˙Mot ví du khác
˙ ’ `’ ˙
ˆ ¯e ¯u ˜’ ˆ
ˆ ’ ˆ ˆ
- lenh ftp, sau khi chay lenh này dau nhac se có dang nhu d nói. Dau nhac, ˙ d nh boi
ˆ
˙ ˙
ˆ ´
ˆ ˘ ˙˜
´ ’ ¯ã
˙
´ˆ ˘ xác ¯i˙
´ ’’
bie´˙n PS3, su dung trong lenh select. Dau nhac, xác d nh boi bien PS4, d oc d a ra truoc
’’ ˙ ˙ ´ ´
˘ ˙ ’’ ´ ˙
ˆ ˆ ˆ ¯i ˆ ¯u ’ ¯u
’ ’ ’´’
mo ˙ ˙ ˙
˜i câu lenh, trong lúc bash theo dõi quá trình thuc hien. Giá tri theo mac d nh - "+". Neu ˘ ¯i ˙ ´
ˆ ˆ ’ ˆ ˆ
˙ ´ n, ban có the thay d ’i các bien PS1 và PS2. Khi này có the ˙ ’ dung bat ky ký
˙ ˙ ˙ ˙
có mong muo ˆ ˆ’ ¯o
ˆ ´
ˆ ˆ’ su ’ ´ `
ˆ
˙
tu nào nhap tu bàn phím, cung nhu mot vài ký tu chuyên dùng d ˆ’ xác d nh dang dau nhac ˙ ´ ´
’ ˆ `’ ˜ ’ ˆ ’ ¯e ¯i ˆ ˘
˙ trong ˙bang 3.3 (chı d a ra mot vài trong so chúng làm ví du, danh sách d `y ˙ ’ xem trong
nhu ’ ’ ¯u ˙ ´ ˙ ˙ d
’ ’ ˆ ˆ ¯a ¯u
ˆ
’
trang man cua bash - gõ lenh "man bash"). ˙ ˙
ˆ
˙
’
Bang 3.3: Ký tu xác d nh dang dau nhac
’ ¯i ´
ˆ ´
˘
Cum ký tu Giá tri (ke
’ ´ t qua thu d ’oc) ˙
ˆ ’ ¯u ’
˙ ˙
˙ ˙ ˙ ˙
a Tín hieu âm thanh (mã ASCII 07)
ˆ
˙ ’
d Thoi gian o dang "Thu, tháng, ngày", ví du, Sun, Dec, 26.
`’ ’ ´’
˙ ˙
h Tên máy (hostname) d´ n dau cham d ˆ u tiên.
¯e ´
ˆ ˆ ´ ¯a
ˆ `
H `
Tên máy d ˆ y d ’ , ví du teppi.phanthinh.com
¯a ¯u
˙
t `’ ˆ `’ ’’
Thoi gian hien thoi o dang 24 gio: HH:MM:SS (gio:phút:giây) `’ `’
˙ ˙
T `’ ˆ `’ ’’
Thoi gian hien thoi o dang 12 gio: HH:MM:SS `’
˙ ˙ `
@ `’ ˆ `’ ’’
Thoi gian hien thoi o dang 12 gio am/pm (sáng/chieu) `’ ˆ
˙ ˙
u Tên nguoi dùng d chay he vo, ví du teppi
’`’ ¯ã ˆ ’
` ˙ ˙ ˙
w Tên d ˆ y d ’ cua thu muc làm viec hien thoi (bat d ˆ u tu goc), ví du
¯a ¯u ’ ’ ˆ ˆ `’ ˘ ¯a `’ ´
´ ` ˆ
/home/teppi82/project/l4u ˙ ˙ ˙ ˙
W Thu muc hien thoi (không có d ’ong dan)
’ ˆ `’ ¯u `’ ˆ˜
˙ ´ ˙ ´ ˆ ’
$ ’ ˆ ˆ ’ ¯u ’ ’’
Ký tu #, neu he vo d ’oc chay boi nguoi dùng root, và ký tu $, neu he vo
’`’ ’ ˆ
d ’oc ˙ chay boi ˙nguoi dùng thuong.
’’ ˙ ˙ ` ˙ ˙
¯u ’ ’`’ ’’
˙ ˙
nnn Ký tu có mã he tám nnn
’ ˆ
˙ ˙ ’
n Dòng moi (chuyen dòng)
´’ ˆ
s Tên he vo ˆ ’
# ´ ˆ˙ `’ ’
So hien thoi cua câu lenh
ˆ ˆ
˙
´ u gach nguoc (backslash) ˙
Da ˆ ’’
[ Sau ký tu này ˙´ t ca các ký tu se không d ’oc in ra.
˙
’ ta ’
ˆ ’ ˜ ¯u ’
] Ke ´ t thúc˙chuoi các ký tu không d ’oc in ra.˙
ˆ ˜
ˆ ’
˙
¯u ’
! So thu tu cua lenh hien ˙thoi trong lich su các câu lenh d dùng.
´ ´’ ’ ’ ˆ
ˆ ˆ `’ ˙ ’’ ˆ ¯ã
˙ ˙ ˙ ˙ ˙
´ ’ ˆ
ˆ ´ ´’ ’ ’ ˆ
So cua lenh (so thu tu cua lenh d
ˆ ’ ˆ ˆ’
¯ang thuc hien trong buoi làm viec hien thoi) có the khác
ˆ ˆ `’ ˆ’
voi so ’
´’ ˆ ´ cua chính nó trong danh sách "lich˙ su các câu lenh", boi vì˙ danh sách còn chua ca
˙ ˙ ˙ ’’ ˙
ˆ ’’ ˙ ´’ ’
nhung câu lenh d d ’oc ghi lai trong tap tin lich su. Sau˙ khi giá tri cua bien d ’oc he vo d c
˜’ ˆ ¯ã ¯u ’ ˆ
˙ ’’ ’ ´ ¯u ’ ˆ ’ ¯o
ˆ
xong, se xay ra su thay the theo các quy luat ˙ ’’ rong trong bang trên, d ˆ ng thoi còn xay ˙
˜ ’
˙
’
˙ ´ ˙
ˆ
˙
ˆ mo ˆ ’ ˙ ¯o` `’ ˙ ’ ra
˙
´
su thay the trong tên ˙ các câu lenh, trong các bieu thuc so hoc, và su chia tu (word splitting).
˙ ’ ˙´ ´ `’
’ ˆ ˆ ˆ ’ ˆ ’
Chúng ta se nói d´ n nhung su thay the này o duoi.Ví du, sau˙khi thuc hien lenh (vì trong dòng
˙
˜ ¯eˆ ˜’ ’
˙ ´
ˆ ’’ ’´’ ’
˙
ˆ ˆ
˘ ’ ’ ´ ˙ ´
van ban có khoang trong, nên nhat thiet phai có dau ngoac): ´ ’ ´ ˙ ˘ ˙ ˙ ˙
ˆ ˆ ˆ ˆ
kênh giao tác ˙
[user/root]$ PS1="[u@h W]$"
38 Bash
´
ˆ ´ ˜
˘ ´
ˆ ’’ ˘ ’`’ ˆ ’
thì trong dau nhac se có dau mo ngoac vuông, tên nguoi dùng, ký hieu , tên máy, khoang
trang, tên cua thu muc hien thoi (không˙ có d ’ong dan), dau d
´
˘ ’ ’ ˆ `’ ¯u `’ ˜
ˆ ´ ¯óng ngoa˙c vuông, và ký hieu
ˆ ˘ ˆ
´ ˙ làm viec nguoi dùng bình thuong) hay #(neu he vo chay duoi ngu˙` i
˙ ´ ˆ ˙ ’
ˆ ˆ ’ ¯ang
$ (neu trên he vo d ˆ ’`’ ’`’ ˆ ’´’ ’o’
dùng root). ˙ ˙ ˙ ˙
3.6.3 ´
ˆ
Bien môi truong PATH
’`’
ˆ ´ ˆ ˜ ˜’ ´
Còn mot bien cung quan trong nua có tên PATH. Bien này d ’a ra danh sách d ’ong dan
ˆ ¯u ¯u `’ ˜
ˆ
dˆ ˙ ˙
´ n các thu muc, mà bash se tìm kiem tap tin (truong hop riêng là các tap tin lenh)
´
¯e ’ ˜ ˆ ˆ ’`’ ’ ˆ ˆ
trong truong hop, d ’ong dan d ˆ y d ’ d´ n ta˙ tin không d ’o˙ d ’a ra. Các thu muc trong
’`’ ˙
’ ¯u `’ ˜ `
ˆ ¯a ¯u ¯e ˆ p ˆ ¯u ’c ¯u
˙
’
˙
danh sách này ˙ phân cách nhau boi dau hai cham (:). Theo mac d nh bien PATH chua
’’ ´ ˙ ´ ˙ ˘ ¯i ´ ˙ ´’
ˆ ˆ ˆ
˙ ˙
các thu muc /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin, tuc là có ´’
’
˙
dang: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin: ¯ e thêm thu muc D ˆ’ ’
˙ danh sách này, can thuc hien câu lenh sau:
vào ` ˙
ˆ ’ ˆ ˆ
˙ ˙ ˙
kênh giao tác
[user]$ PATH=$PATH:new_path
´
ˆ ˆ ’
Khi tìm kiem, he vo "luc loi" các thu muc theo d
’ ´
¯úng thu tu d liet kê trong bien PATH.
´’ ’ ¯ã ˆ ˆ
’
Mot chú ý nho, có the ¯u ˙ ’ d a˙ vào danh sách này thu muc hien thoi, khi thêm vào bien PATH
˙ ˙ ˙` ˙ ´
ˆ ˆ ’ ’ ˆ ’ ˆ
˙t dau cham (.). Tuy nhiên, d là d `u không khuyên làm voi lý do bao mat: nguoi có ác
mo ˆ ´ ´ ˙ ˙ ´ ’
ˆ ˆ ¯ây ¯ieˆ ’ ˆ ’`’
˙ ´˙ ˆ
ˆ’ ¯a
ý có the d ˘ t vào thu muc dùng chung mot chuong trình nào d có cùng tên voi mot trong so
’ ˆ ’’ ¯ó, ’ ´
ˆ
nhung câu ˆ ˙ lenh thuong˙dùng boi root, nhung thuc hien nhung chuc nang khác hoàn toàn (d ˘ c
’’ ˙ ˙
˜’ ’`’ ’ ’ ˆ ˜’ ´’ ˘ ¯a
biet nguy hiem neu thu muc hien thoi d ´’ng o d˙ u danh sách tìm kiem).
ˆ
˙’ ´
ˆ ˆ ’ ˆ `’ ¯u ’’ ¯a ˙
`
ˆ ´
ˆ
˙
˙ ˙ ˙
3.6.4 ´
ˆ
Bien môi truong IFS
’`’
´ˆ ¯i ’ ’ ’’
Bien này xác d nh ký tu (cum ký tu) phân cách (Internal Field Separator), su dung trong thao
tác phân chia tu˙ngu khi bie˙ d ˆ’i dòng lenh, mà he vo thuc hien truoc khi chay mot câu lenh nào
`’ ˜’ ˙ ´ n ¯o ˙ ˆ
ˆ ˆ ’ ’ ˆ ’´’ ˙
ˆ ˆ
d (xem duoi). Giá tri theo mac d nh cua bien này˙- "<Khoang_trang><Tab><Ký_tu_hàng_moi>".
¯ó ’´’ ˘ ¯i ’˙ ´ˆ
˙ ’ ˙ ˘ ´ ˙ ˙
’
˙ ´’
Ne ˙
´ u thu gõ lenh "echo $IFS",
’’ ˙ ˙ ban se nhan d oc mot ngac nhiên nho. ’ ˙
ˆ ˆ ˜ ˆ ¯u ’ ˆ
’
˙ ˙ ˙ ˙ ˙ ˙
3.6.5 ’ ˆ
Thu muc hien thoi và thu muc cá nhân
`’ ’
˙ ˙ ˙
’ ’ ˆ ´
ˆ ’`’ ´’ ’ ´
Tên cua thu muc hien thoi ghi trong bien môi truong voi tên PWD, và giá tri cua bien này thay
`’ ˆ
dˆ
¯o’i sau moi lan cha˙y chuong trình cd (cung nhu moi lan thay d ˆ’i thu muc hien thoi theo bat
˜ ˆ˙
ˆ ` ’’ ˜ ’ ˆ ˜ ˆ` ¯o ’
˙
ˆ `’ ´
ˆ
ky cách nào, ví du, ˙ qua Midnight Commander). Tuong tu nhu vay tên d `˙ d ’ ˙(gom ca d ong
` ’ ¯u `’
` ’’ ’ ’ ˆ ¯ay ¯u ˆ
ˆ ’
dan) cua thu muc˙cá nhân cua nguoi dùng, chay tien trình d cho, ghi trong bien HOME.
˜
ˆ ’ ’ ’ ’`’ ´
ˆ
˙
¯ã
˙ ´
ˆ
˙ ˙
3.6.6 ˆ
Câu lenh export
˙
ˆ ’ ˆ ’’ ˆ ˆ ’ ´
Khi he vo chay mot chuong trình hay câu lenh nào d nó (he vo) cung cap cho chúng mot
¯ó, ˆ ˆ
` ˙ ´ n môi truong. De có the cung cap bien môi truong cho tien trình chay tu he vo, ca˙n
phan bie ˙ ˙ ’ ’ ´ ˙´ ˙ ´ `’ ˆ ’ ˆ `
ˆ ˆ ’`’ ¯ ˆ ˆ ˆ ˆ ’`’ ˆ
´
gán giá tri cho bien này voi lenh export, tuc là thay vì
´’ ˆ ´’ ˙ ˙
ˆ
˙ ˙
kênh giao tác
[user]$ name=value
`
can gõ:
ˆ
ˆ’ ˆ’
3.7 Khai trien bieu thuc
´’ 39
kênh giao tác
[user]$ export name=value
’`’ ’ ´ ’
ˆ ’’ `’ ˆ ’ ˆ’ ’ ’ ´’ ’
Trong truong hop này, tat ca các chuong trình chay tu he vo (ke ca ban sao thu hai cua
˙ `n truy cap toi các bien d oc gán nhu vay, tuc là su dung giá tri cua
´ ¯u ’ ˙ ˙
ˆ ’ ˜
chính he vo) se có quye
ˆ ˆ ´’ ˆ ’ ’ ˆ ´’ ’’ ’
˙ tên.
chúng qua ˙ ˙ ˙ ˙ ˙
3.7 ˆ’ ˆ’
Khai trien bieu thuc
´’
ˆ ’ ¯o ’ ´
Hay he vo d c các câu lenh nhu the nào? Khi he vo nhan d ’oc mot dòng
ˆ ˆ ˆ ’ ˆ ¯u ’ ˆ
ˆ
˙
¯ó ˆ`n ˙ ’c hien, nó (he vo) truoc khi chay câu lenh thu˙ hien viec "phân tích ngu
lenh này d ca thu ˆ ˆ
˙’
’´’ ˆ ’c ˆ
˙
ˆ
˙ ˙
˜’
pháp" dòng lenh này (giong trong ngôn ngu, phân tích chu ngu˙ vi ngu). ˙ ˆ t trong nhung
˙
ˆ
˙ ˙´
ˆ
˙
˜’
˙ ˙’
˜’,
˙
˜’ Mo ˜’
˙ ˙ ˙
’´’ ’ ’ ’’ ˆ’ ˆ’ ´’
buoc cua su phân tích này là phép mo hay khai trien bieu thuc (expansion). Trong bash có
˙
’ ˆ’ ˆ’ ´’
bay loai khai trien bieu thuc:
˙
ˆ’ ´
• Khai trien dau ngoac (brace expansion);
ˆ ˘
˙
´ ´
• Thay the dau ngã (tilde expansion);
ˆ ˆ
´ ´ ´ ´
• Phép the các tham bien và bien so;
ˆ ˆ ˆ ˆ
´
• Phép the các câu lenh;
ˆ ˆ
˙
´ ´ ’
• Phép the so hoc (thuc hien tu trái sang phai);
ˆ ˆ ’ ˆ `’
˙ ˙ ˙
• Phép chia tu (word splitting);
`’
ˆ’ ˜
• Khai trien các mau tên tap tin và thu muc (pathname expansion).
ˆ ˆ ’
˙ ˙
Các thao tác này d ’oc thuc hien theo d
¯u ’ ’ ˆ ¯úng thu tu liet kê trên. Chúng ta se xem xét chúng
´’ ’ ˆ ˜
theo tu tu này.
´’ ’ ˙ ˙ ˙ ˙ ˙
˙
3.7.1 ˆ’ ´ˆ
Khai trien dau ngoac
˘
˙
ˆ’ ´ ˆ ˘ ´ˆ ´
ˆ ’ ´ ˆ `
Khai trien dau ngoac tot nhat minh hoa trên ví du. Gia thiet, chúng ta can tao thu muc con
ˆ ’
˙ d hoac thay d ’i nguoi dùng so huu cua vài tap tin cùng mot lúc. Có
trong mot thu muc nào ¯ó, ˘ ˙ ˙ ’ ’ ˙ ˆ ˙
ˆ ’ ¯o
ˆ ’`’ ’ ˜’ ˆ
the thuc˙hien d ˆ˙u này nho các câu lenh sau:
ˆ’ ’ ˆ ¯ie ` `’ ˙ ˆ
˙ ˙
˙ ˙ ˙
kênh giao tác
[user]$ mkdir /usr/src/unikey/{old,new,dist,bugs}
[root]# chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}
`
Trong truong hop d ˆ u, trong thu muc /usr/src/unikey/ se tao ra các thu muc con
’`’ ’ ¯a ’ ˜ ’
old,new,dist, và ˙ bugs. Trong truong hop thu hai, nguoi dùng so huu cua các tap tin sau
˙
`’ ´’ `’ ’’ ˙ ˜’ ’ ˙
’ ’ ’ ˆ
se thay d ˆ’i (thành root): ˙ ˙
˜ ¯o
• /usr/ucb/ex
• /usr/lib/ex?.?
40 Bash
• /usr/ucb/edit
• /usr/lib/ex?.?
• /usr/ucb/ex
• /usr/lib/how_ex
• /usr/ucb/edit
• /usr/lib/how_ex
´’ ˜
´’ ˆ ˘ ´ ˆ ˘ ˜ ˜ ´ ˜’
ˆ `
Tuc là voi moi cap dau ngoac se tao ra vài dòng riêng re (so nhung dòng này bang so tu
˘ ´ `’
ˆ
na˘ ´ ˘ c) ˘` ˙ ˙
` ng trong dau ngoa˙ bang cách ghi thêm vào truoc moi tu trong ngoac nhung gì d ´’ng truoc
˜ `’
ˆ ’´’ ˆ ˘ ˜’ ¯u ’´’
´ ˙ ˜ `’ ´ ˙ ˘
dau ngoac, và ghi thêm vào sau moi tu này nhung gì d ´’ng sau dau ngoac. Mot ví du khác:
˘
ˆ ˆ ˜’ ¯u ˆ ˆ
˙ ˙ ˙’ ´ ˙
ˆ’ ˜
dòng a{d,c,b}e khi khai trien se thu d ’oc ba tu "ade ace abe". Khai trien dau ngoac
¯u ’ `’ ˆ ˆ ˘
d ’oc thuc hien truoc các dang khai trie ’n khác ´ ’ ˙
˙ trong dòng lenh, hon nua tat ca các ký tu d ˘ c
¯u ’ ’ ˆ ’´’ ˆ ˆ ’ ˜’ ˆ ’ ¯a
bie˙t có trong˙dòng lenh, ke˙ca nhung ký tu nam trong dau ngoac, se d ’oc giu không thay d˙ˆ’i
ˆ
˙
ˆ ˆ’ ’ ˜’ ’ ˘` ´ ˙ ˘ ˜ ¯u ’ ˜’
ˆ
˙
¯o
˙
(chúng se d ’oc biên ˙ dich o các buoc phía˙sau).
’’ ˙ ˙
˜ ¯u ’ ’´’
˙ ˙
3.7.2 ´ ´
ˆ ˆ
Thay the dau ngã (Tilde Expansion)
´
ˆ ´ `
’ `’ ˘ ¯a ´’ ’ ´ ˆ ´ ’
ˆ ’ ¯u ’´’ ´
Neu nhu tu bat d ˆ u voi ký tu dau ngã (’∼’), tat ca các ký tu d ´’ng truoc dau gach chéo d ˆ u tiên ˆ ¯a`
(hay ta ’ ´ t ca các ký tu neu nhu không có dau gach chéo) se˙d ’oc hieu là tên nguoi dùng (login
ˆ ’ ˆ´ ˙
’ ´
ˆ ˜ ¯u ’ ˆ ’ ˙ `
’’
´ ˙ ˜ ´’˙ ´ ˙
name). Neu nhu tên này là mot dòng rong (tuc là dau gach chéo d ´’ng ngay phía sau dau ngã), ´
ˆ ’ ˆ ˆ ˆ ¯u ˆ
´
thì dau ngã se d ’oc thay the bo ´ ’˙ ’ i giá tri cua bien HOME. Và neu giá tri cua bien HOME không
’ ´ ˙ ´ ’ ´
ˆ ˜ ¯u ’ ˆ ˆ ˆ ˆ
d ’oc gán thì da
¯u ’ ´ u ngã se d ’oc thay the ˙boi d ’ong dan d ˆ u d ’ d´ n thu ˙muc cá nhân cua nguoi
ˆ
˙
˜ ¯u ’ ´ ’’ ¯u `’
ˆ ˜ ¯a ¯u ¯e
ˆ ` ˆ ’ ’ ’`’
˙ mà d chay he vo. Neu nhu ngay sau dau ngã (và truoc dau gach ˙
˙
dùng, ¯ã ˆ ’ ´ ˆ ’ ´ˆ ’´’ ´ ˆ chéo) là mot tu trùng
ˆ `’
voi tên cua mot˙ngu˙’i dùng hop pháp, thì dau ngã cong voi tên nguoi dùng d ’oc thay the boi
´’ ’ ˆ ’o` ’ ´
ˆ ˆ ´’ ˙
’`’ ¯u ’
˙ ´ ’’
ˆ
˜ ¯a
d ’ong dan d ˆ y ¯u ¯e
`’ `˙ d ’ d´ n thu muc cá nhân cua nguoi ˙
˙ ’ ´
`’ dùng này. Neu nhu tu d ´’ng `’ ¯u ˙ sau dau ngã
´
¯u ˆ ˆ ’ ’ ˆ ’ ˆ
˙`
không phai là tên cua mot nguoi dùng (và không rong), thì tu không bi thay d ˆ’i. Neu nhu sau
˜
’ ’ ˆ ’’ ˆ `’ ¯o ´ ˆ ’
da ˙ ´ ’’ ` ¯u ’ ˙ ’
´ u ngã là ’+’, hay ký hieu này se d ’oc thay the boi tên d ˆ u d ’ cua thu muc hien thoi (tuc là `’ ´’
ˆ ˆ ˜ ¯u ’ ˆ ¯a ˆ
giá tri cua bien PWD). Ne˙u dung sau dau ngã là ’-’, thì thay the giá tri cua bien ˙
’ ´
ˆ ´ ´’
ˆ
˙´
ˆ ´
ˆ ’ ˙ ´ OLDPWD (thu
ˆ ’
˙
muc "cu"). ˙
˜
˙
3.7.3 ´
ˆ ´
ˆ ´ ´
ˆ ˆ
Phép the các tham bien và bien so
’ ¯u ’ ’’ ´ ´ ´
Ký tu $ d ’oc su dung cho các thao tác the tham bien, the các câu lenh và the các bieu thuc
ˆ ˆ ˆ ˆ ´
ˆ ˆ’ ´’
´ hoc. Bie˙u thuc ˙hay tên d ´’ng sau $ có the d ’oc d ’a vào ngoac, ˙
so
ˆ
˙
ˆ’ ´’ ¯u ˆ’ ¯u ’ ¯u ˘ không nha ´ t thiet, nhung
ˆ ´
ˆ ’
rat tien, vì dau ngoac phân cách bieu thuc voi các tu hay ký tu˙ d ´’ng sau. Nhu vay, d ˆ’ goi
´ ˙ˆ
ˆ ´
ˆ ˘ ˆ’ ´’ ´’ ˙ `’ ’ ¯u ’ ˆ ¯e
giá tri cua tham bien nói chung cung nhu bien môi truong nói riêng trong dòng lenh, can d˙ t
˙ ’ ´˙
ˆ ˜ ’ ´ ˆ ’`’
˙
ˆ
˙ ` ˘
ˆ ¯a
bie ˙ ´
’u thuc dang $parameter. Dau ngoac chı can thiet, neu tên cua tham bien có chua vài chu
´ ˘ ’ ˆ ` ´ ´ ’ ´ ˙´ ˙
ˆ ’ ˆ ˆ ˆ ˆ ’ ˜’
so, hoac khi theo sau tên còn có các ˙ tu khác, mà chúng ta không muon he vo "hieu lam"
´
ˆ ˘ ˙ ký ’ ´ ˆ ’
ˆ ˆ’ ˆ `
chúng˙là mot phan cua tên tham bien. Trong tat ca các giá tri cua bien so xay ˙ phép the dau
ˆ `
ˆ ’ ´
ˆ
˙ ´ ’
ˆ ’ ´ ´ ’ ra
ˆ ˆ ´ ´
ˆ ˆ
ngã (∼), su ˙khai trien tham bien và bien so, phép the các câu lenh, phép the các bieu thuc so
’ ´ ´ ´ ´ ˙ ´ ’ ´’ ´
’ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ
˜ nhu ’ ˜
ˆ ’´’ ’
˙ `
hoc, cung ˙ ’ xóa các ký tu trích dan (xem duoi). Su phân chia tu không xay ra, tru truong
’ ’ `’ ’`’
hop "$" (loi giai thích xem ˙o bang so 3). Su khai trien các mau tên tap tin và thu muc cung
˙
’ `’ ’ ’’ ’ ´
ˆ ’
˙
ˆ’ ˜
ˆ ˆ ’ ˜
˙
không d ’oc thuc hien. ˙ ˙ ˙
¯u ’ ’ ˆ
˙ ˙ ˙
ˆ’ ˆ’
3.7 Khai trien bieu thuc
´’ 41
3.7.4 ´
ˆ ˆ
Phép the các câu lenh
˙
´ ´ ’ ˜ ’ ` ’’ ˆ
Phép the các câu lenh là mot công cu rat mang cua bash. Ý nghıa cua nó nam o cho thay the
ˆ ˆ ˆ ˆ ˘ ˜ ´
ˆ
tên các câu lenh bo ´ ˙ i ket qua thuc hien cua chúng. Có hai dang phép the lenh: $(command)
’’ ˆ ˙
’ ’ ˆ ˙ ’ ˙ ´ ˆ
ˆ ˆ
và ‘command‘ Neu ung dung dang thu hai (chú ý o d ˙su dung dau "ngoac d ’n nguoc",
˙ ´ ´’
ˆ
˙ ˙ ´’ ’’ ¯ây ’’ ´ ˙
ˆ ˘ ¯o ’’
phím cho nó thuong nam trên phím Tab), thì dau gach nguoc () ˙’ trong dau ngoac se có chuc
’`’ `
˘ ˙ ˙ ´
ˆ ’’ ’
o ´
ˆ
˙ ˘
˜
˙´
’
nang nhu mot ký tu thông thuong, tru truong hop,˙ khi d ´’ng sau nó (dau gach nguoc) là mot
˘ ’ ˆ ’ ’`’ `’ ’`’ ’ ¯u
˙ ´ˆ
˙
’’ ˆ
$, ‘, hay mot˙ . Neu nhu su dung dang $(command), thì tat ca các ký tu d ´’ng trong ˙ngoac ta˙o
ˆ ´˙
ˆ ’ ’’
˙ ´ ’
ˆ ’ ¯u
˙ ˘
thành mot ˙ lenh, không có ký tu nào có ý nghıa d ˘ c biet. Neu phép the câu lenh xay ˙
ˆ câu ˆ
˙ ˙
’ ˜ ¯a ˆ ´
ˆ
˙ ´
ˆ ˆ
˙’ ra
phía trong˙ ngoac kép, thì trong ket qua cua phép the se˙không thuc hien phép phân˙ chia tu và
˘ ˙ ´ ˙ ’ ’ ´ ˜ ˙ `’
ˆ ˆ ’ ˆ
su khai trie’n ma˙˜u tên tap tin và thu muc. ˙ ˙
’ ˆ ˆ ˆ ’
˙ ˙ ˙
3.7.5 ´ ´
ˆ ˆ
Phép the so hoc (Arithmetic Expansion)
˙
´ ´ ’ ˆ’ ´’ ´ ´
Phép the so hoc cho phép tính giá tri cua mot bieu thuc so hoc và thay the nó (bieu thuc)
ˆ ˆ ˆ ˆ ˆ ˆ’ ´’
bo ˆ ´ ˙ d oc. Có hai dang phép the so˙hoc: $[expression] ((expression))
’’i ket qua thu ¯u ’
’ ˙ ´ ´ ˙
’ ˆ ˆ
Trong d expression d ’oc˙ hieu (d ’oc bash d c) nhu khi d ´’ng trong ngoac kép, nhung
¯ó
˙
¯u ’ ˆ’ ¯u ’
˙
¯o ’ ¯u ˘ ’
nhung da ´ u ngoac kép o trong
˘ ’’ ˙ expression lai d ˙oc d c nhu mot ký tu thuong. Phía trong
˙ ˙
˜’ ˆ ¯u ’ ¯o
’ ’ ˆ ’ ’`’
expression ˙có thuc hien các phép the tham bien và the câu le˙ Cú pháp cua bieu thuc
’ ˆ ´
ˆ
˙ ´˙ ˙ ´
ˆ ˆ ˆ nh. ˙ ’ ˆ’ ´’
expression tuong ’ ’ ˙ tu nhu cú pháp cua bieu thuc so hoc cua ngôn ngu C, cu the hon ve van
˙ ’ ’ ´’ ´ ’ ˙ ’ ’ ˆ ´ ` ˆ
’’ ˆ ˆ ˜’ ˆ
’ ¯o ˙ ˙
` này có the d c trong phan ARITHMETIC EVALUATION cua trang man cua bash. Ví
dˆ ` ’ ˙ ’
¯e ˆ ˆ
du, câu lenh ˙
ˆ
˙ ˙ kênh giao tác
[user]$ echo $((2 + 3 * 5))
´ ’ ` ´ ˆ’ ´’ ˜
cho ket qua bang "17". Neu bieu thuc không chính xác, bash se d ’a ra thông báo loi.
ˆ ˘ ˆ ˜ ¯u ˆ
3.7.6 Phân chia tu (word splitting)
`’
´ ´ ´ ˆ ´ ˆ’ ´’ ´
Sau khi thuc hien xong các phép the tham bien, the lenh, và the các bieu thuc so hoc, he vo lai
’ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ’
˙ ˙lenh mot lan nua (nhung o dang thu˙ d oc sau các phép the nói trên) và thuc
` ˜’ ´ ˙ ˙ ˙
phân tích dòng ˆ ˆ ˆ ’ ’’ ¯u ’
’ ˆ ’
˙ tu ˙
hien viec phân chia `’ (word splitting). Thao ˙ tác này nam o cho, he vo tìm trong dòng lenh
˙
˘ ˜
` ’’ ˆ ˆ ’ ˙
ˆ ˆ ˆ
tat˙ ca các ký tu phân chia, xác d nh boi bien IFS (xem trên), và nho d chia nho dòng lenh
´ ’ ˙
ˆ ’ ¯i ’’ ´
ˆ
˙`
’ ¯ó ’ ˙
ˆ
˙ re trong các cho tuong ung. Neu giá tri cua IFS bang mot dòng trong,˙thì
thành các tu riêng ˜
`’ ˙˜ ´ ’ ` ´
ˆ ’ ’ ´’ ˆ ˘ ˆ ˆ
’ ´ ˙ ˙
viec phân chia tu se không xay ra. Neu trong dòng lenh không thuc hien phép the nào trong
`’ ˜ ´
ˆ ˆ ˆ ’ ˆ ˆ
˙ ´ ˆ’
các phép the ke trên, thì phân chia tu cung không xay ra.
`’ ˜ ’˙ ˙ ˙
ˆ
3.7.7 ˆ’ ˜
ˆ ˆ
Khai trien các mau tên tap tin và thu muc (Pathname Expansion)
’
˙ ˙
Phép the tên d ’ong dan và tap tin (Pathname expansion) su dung d ˆ’ chı nho mot mau nho
´ˆ ¯u `’ ˜
ˆ ˆ ’’ ¯e ’ `’ ˆ ˜
ˆ ’
gon mà có the ’ ˙ ˙˜
’ chı ra vài tap tin (hay thu muc), tuong ung voi mau này. Sau khi phân chia tu, ˙
ˆ ˆ ’ ’ ’ ´’ ´’ ˆ `’
˙ neu nhu không d a ra tùy chon -f, thì bash se tìm kiem trong tung tu cua dòng lenh các
và ˆ ´ ˙ ˙ ´ `’ `’ ’
’ ¯u’ ˜ ˆ ˆ
’ ´
ˆ ´˙ `’ ´’ ˆ
ký tu *, ?, và [. Neu tìm thay tu voi mot hay vài ký tu nhu vay, thì tu này se d ’˙’c xem
ˆ ’ ’ ˆ `’ ˜ ¯uo
nhu ˙ ˆ t mau, và can thay the boi các tu trong danh sách d˙ ’ong dan, tuong ung voi mau này.
’ mo ˆ ˜ `
ˆ ´ ’’
ˆ `’ ˙ ¯u `’
˙
˜
ˆ ’ ’ ´’ ´’ ˙˜ ˆ
´ ˙ ´ ´’ ´’ ˆ ˜ ´
Neu nhu không tìm thay tên tuong ung voi mau, và bien nullglob không d ’oc d ’a ra, thì tu `’
ˆ ’ ˆ ’’ ˆ ¯u ’ ¯u
se không thay d ˆ ´’
˜ ¯o’i, tuc là các ký tu d ˘ c biet bi mat giá tri và hieu nhu các ký˙tu thuong. Neu
’ ¯a ˆ ´
ˆ ˆ’ ’ ’ ’`’ ´
ˆ
nhu bie ˙ `˙ ˙˜ ˙ ˙´ ˜
´ n này d ’oc xác d nh, mà d ’ong dan tuong ung voi mau không tìm thay, thì tu se bi ˙
´
’ ˆ ¯u ’ ¯i ¯u ’ ˆ ’ ’ ´’ ’ ˆ ˆ `’ ˜
xóa khoi dòng le˙ Các ˙ tu dùng d ˆ’ tao mau có các giá tri trong bang 3.4
’ ˆ nh. ký ’ ¯e ˜
ˆ ’ ˙
˙ ˙ ˙ ˙
42 Bash
’ ˜
Bang 3.4: Các ký tu tao mau
’ ˆ
Ký tu Quy luat thay the ´ ˙ ˙
’ ˆ ˆ
˙ ˙
* ´’ ´ ` ˆ’ ’
Tuong ung voi bat ky dòng ký tu nào, ke ca dòng rong. Ví du, v*.txt
’ ’ ´’ ˆ ’ ˜
ˆ
se d ’oc thay the ˙
´ boi vnoss.txt, vnlinux.txt và vntex.txt
’’ ˙
˜ ¯u ’ ˆ
´ ˙ ˆ
ˆ `
ˆ ˜ ’ ’ ´’ ´ ’
(neu các tap tin này ton tai), và *.png se tuong ung tat ca các tap tin có
ˆ ˆ
pha ˙ ˙ `
`n mo rong png (tap tin d ˆ hoa hai chieu).
’’ ˆ ` ˙
ˆ ˆ ¯o ˆ
˙ ´ ˙ ˙ ˜
? Tuong ung bat ký mot ký tu d ’n nào. Ví du, mau
’’ ´’ ˆ ˆ ’ ¯o ˆ
file?.txt se d ’oc ˙ thaythe ˙ boi các tên tep sau
´ ’’ ˙
˜ ¯u ’ ˆ ˆ
file1.txt, file2.txt, file3.txt, ˙ và ˙
filea.txt
´
ˆ `
(neu chúng ton tai), nhung file23.txt thì không.
ˆ ’
´ ˙`
ˆ ’ ´
[...] Tuong ung bat ky ký tu nào trong so các ký tu nam trong dau ngoac
’ ’ ´’ ˆ ’ ˘ ` ´
ˆ ˘
˙ ´ u ˙ `’ (-), ví du c-f, bieu ˙
vuông này. Cap ký tu, phân cách nhau boi da tru
˘ ’ ’’ ˆ ˆ’
˙ ˙
thi mot dãy; bat ký ký tu nào, theo tu d ˆ’n, nam giua hai ký tu này, ke ca ˙
ˆ ´
ˆ ’ `’ ¯ie `
˘ ˜’ ’ ˆ’ ’
˙ ký tu tao ra dãy (c ˙ f trong ví du) cung tuong ung vo˙ mau. Neu
hai ˙ và ´’i ˆ ˜ ´
’ ˜ ’ ’ ´’ ˆ
`˙ tiên trong ngoac vuông là hay ˆ thì mau (o vi trí này) se tuong
ký tu d ˆ u
’ ¯a
˙ ˘ ˙, ˜ ’’
ˆ ˜ ’’
´’ ´ ’ˆ ’
˙
ung ˙tat ca các ký tu, không d ’oc chı ra trong ngo
¯u ’ ’
˙
˙ ˙
ˆ˜ ˆ ´
ˆ ’’
Mau tên tap tin rat thuong xuyên su dung trong dòng lenh có chua ls. Hãy tuong tuong
’`’ ˆ ´’ ’’’ ’’
là ban muo ´ n xem thông tin cua mot thu muc, trong d có ˙ ´’a mot so luong lon các tap˙tin
ˆ
˙ ’ ˆ ’
˙
¯ó chu ˆ ˆ ´ ’ ’ ´’ ˆ
˙ ’ ˙ ˙´ ˙ ˙
D ˆ’ ˙
d ’ các dang, ví du, tap tin hình anh, phim voi dang gif, jpeg, avi, v.v. . . . ¯ e thu d ’oc thông
¯u ˆ ’ ¯u ’
tin chı cua tap tin˙dang jpeg, có the dùng câu lenh
˙
’ ’ ˆ ˙
ˆ’ ˆ
˙ ˙
˙ ˙ ˙
kênh giao tác
[user]$ ls *.jpg
´ ` ’ ´ ˆ
ˆ ` ´ ˜’ ´
Neu trong thu muc có nhieu tap tin, mà tên cua chúng là các so gom bon chu so (thu muc
ˆ ’ ˆ ˆ ˆ ˆ ’
˙ thì lenh sau chı d a ra danh sách các tap tin có so tu 0500 d´ n 0999:
/proc là mot ví du+), ˙ ’ ¯u ´ `’ ˙
ˆ ˆ ’ ˆ ˆ ¯e
ˆ
˙ ˙ ˙ ˙
kênh giao tác
[user]$ ls -l 0[5-9]??
3.7.8 ˆ
Xóa các ký tu dac biet
’ ¯˘
˙ ˙ ˙
´ ’
ˆ ´
Sau khi làm xong tat ca các phép the, các ký tu , ‘ và " còn lai trong dòng lenh (chúng
ˆ ’ ˆ
d ’oc su dung d ˆ’ huy bo giá tri d ˘ c biet cua các˙ký tu khác) se bi xóa het.
¯u ’ ’’ ¯e ’ ’ ¯a ˆ ’ ’ ˜
˙ ´
ˆ
˙
˙ ˙ ˙ ˙ ˙ ˙ ˙
3.8 ˆ ˜’ ˆ
Shell - mot ngôn ngu lap trình
˙ ˙
Nhu d nói o trên, d ˆ’ có the xây dung bat ky giai thuat nào, cung can có các toán tu kiem tra
’ ¯ã ’’ ¯e ˆ’ ’ ´ ` ’
ˆ ˆ ˜ `
ˆ ’’ ˆ’
` ˆ ’
d ˆ u kien. He vo bash ho ’
¯ie ˆ ˜ tro các˙ toán tu lua chon if...then...else và case, cung
ˆ ’’ ’ ˙
˜
nhu các ˙ toán˙ tu vòng lap for, while, ˙until, nho d nó (bash) tro thành mot ngôn
’’ ˘ ˙ ˙ `’ ¯ó ’’
’ ˆ
ngu lap trình manh. ˙
˜’ ˆ
˙
˙ ˙
3.8.1 ’’
Toàn tu if và test (hoac [ ])
˘
˙
´ ’ `
’’ ¯ie
Cau trúc cua toán tu d ˆ u kien có dang thu gon nhu sau: if list1 then list2 else list3
ˆ ˆ ’
˙ ˙
fi trong d list1, list2, và list3 là ˙ chuoi câu lenh, phân cách nhau boi dau
các ˜ ’’ ´
¯ó, ˆ ˆ ˆ
˙
ˆ ˜’ ˆ
3.8 Shell - mot ngôn ngu lap trình 43
˙ ˙
’ ´ ’’ ˆ ´ ´ ˆ’
phay và ket thúc boi mot dau cham phay hay ký tu dòng moi. Ngoài ra, các chuoi này có the
ˆ ˆ ˆ ’ ´’ ˆ˜ ˆ’
˙
˙c nhon: list. Toán tu if kiem tra giá tri d oc tra lai boi các câu lenh
d ’oc d ’a vào dau ngoa
¯u ’ ¯u ´
ˆ ˘ ’’ ˆ’ ¯u ’ ’
’ ’’ ˆ
˙ ´ ˙ ˙ có vài câu lenh, thì kiem tra giá tri d oc ˙tra lai boi câu lenh
’ ˙ ˙ ˙
tu list1. Neu trong danh sách
`’ ˆ ˆ ˆ ¯u ’ ’
’ ’’ ˆ
cuo ´ i cùng cua danh sách. Neu giá tri này bang 0, thì se thuc hien˙ các˙ lenh tu list2; còn
ˆ ’ ´
ˆ
˙
`
˘ ˜ ’ ˆ ˆ
˙
`’ ˙
neu giá tri này khác không, thì se thuc hien nhung lenh tu ˙list3. Giá˙ tri d ’oc tra lai boi
´
ˆ
˙
˜ ’ ˆ ˜’ ˆ `’ ˙
¯u ’ ’ ’’
toán tu if ’’ ˙ nhu vay, trùng voi giá tri mà chuoi lenh thuc hien (list2 hoac list3) d˙ a ra.
´’ ˙ ˙ ˜ ˙ ˘ ˙ ˙
’ ˆ ˆ ˆ ’ ˆ ¯u’
Dang day du cua˙ lenh if nhu sau: ˙
¯ `
ˆ ¯’ ’ ˆ ’
˙ ˙ ˙ ˙
˙ if list then list [ elif list then list ] ... [ else list ] fi
˙
’’ ¯ây ´ ˆ ’ ˜ ˜’ `
(o d dau ngoac vuông chı có nghıa là, nhung gì nam trong nó, ngoac vuông, không nhat
˘ ˘ ˘ ´
ˆ
˙ thuc d ´ ng sau if hay elif thuong là câu lenh test, mà có the d oc ˙
´
ˆ ’
thiet phai có). Bieu ´’ ¯u ˆ’ ’ ’`’ ˆ ˆ’ ¯u ’
’
˙ ˙
ˆ’ ’’ ´
bieu thi boi dau ngoac vuông [ ]. Lenh test thuc hien phép tính mot bieu thuc nào d và
ˆ ˘ ˆ ’ ˆ ˆ ˆ’ ´’ ¯ó,
tra lai giá tri 0, neu bieu thuc là d ˙ và 1 trong truo˙ hop nguoc lai. Bieu thuc d ’oc d ’a
’ ˙ ´ ˙ ˆ’
ˆ ´’ ¯úng,
˙ ` ng
’’ ’ ’’
˙
ˆ’ ´’ ¯u ’ ¯u
˙ ong trình test nhu mot tham so cua chuong trình. ˙
toi chu ’
´’ ˙ ´ ’ Thay vì ˙ gõ˙ ˙
’ ’ ˆ ˆ ’’
test expression ˙
ˆ’ ¯u ˆ’ ´’
có the d ’a bieu thuc expression vào ngoac vuông: ˘
[ expression ] ˙
ˆ` `
˘ ¯ó ’ ’
Can chú ý rang, test và [ d là hai tên cua cua cùng mot chuong trình, chu không phai ˆ ’’ ´’ ’
´ ` ˙ cú pháp cua [ d hoi phai có
¯ó ’ ˆ ’
là mot phép bien hóa than thông nào d cua he vo bash (chı là
ˆ ˆ ˆ ’ ’ ¯òi ’ ’
´u d ˙
da ¯óng ngoac). Và cung ca
˘ ` ’’ ˙ ˆ ’˜
`n chú ý rang o cho cua test trong cau trúc if có the su dung
˘ ´ ’ ’’
ˆ ˜ ˆ ˆ ˆ
bat ky chuong˙ trình nào. ¯ e ket thúc muc này, chúng ta d ’a ra ví du su dung if:
´ `
ˆ ’’ D ˆ’ ´ ˆ ¯u ’’ ˙
˙ ˙ ˙
kênh giao tác
if [ -x /usr/bin/unicode_start ] ; then
unicode_start
else
echo "hello world"
fi
` ’’ `
Ve toán tu test (hay [...]) can d sâu hon.
ˆ ˆ ¯i ’
3.8.2 ’’ ¯ˆ` ˆ ’ ˆ’
Toán tu test và dieu kien cua bieu thuc
´’
˙
ˆ’
Bieu thuc d ˆ u kien, su dung trong toán tu test, d ’oc xây dung trên co so kie’m tra thuoc
`
´’ ¯ie ˆ ’’ ’’ ¯u ’ ’ ’ ’’ ˆ ˆ
˙ các dòng và các so sánh so hoc thông thuong. Bieu thuc phuc tap hon
˙ ´ ˙ ˙` ’ ˙
tính tap tin, so sánh
ˆ ˆ ’’ ˆ ´’ ´’ ’
˙ ˙ ˙
¯u ’ ¯o ˜’ ’ ’’
d ’oc tao ra tu các thao tác d ’n và kép sau ("nhung viên gach co so"):
`’
˙ ˙ ˙
• -a file
D ´ ˆ
ˆ `
¯ úng neu tap tin có tên file ton tai.
ˆ
˙ ˙
• -b file
´
ˆ `
ˆ ˆ ˆ ´
ˆ ´
¯ úng neu file ton tai, và là mot tap tin thiet bi khoi (block device) d ˘ c biet.
D ˆ ¯a ˆ
˙ ˙ ˙ ˙ ˙ ˙
• -c file
´
ˆ `
ˆ ˆ ˆ ´
¯ úng neu file ton tai, và là mot tap tin thiet bi ký tu (charater device) d ˘ c biet.
D ˆ ’ ¯a ˆ
˙ ˙ ˙ ˙ ˙ ˙ ˙
• -d file
´
ˆ `
¯ úng neu file ton tai và là mot thu muc.
D ˆ ˆ ’
˙ ˙ ˙
• -e file
D ´ ˆ
ˆ `
¯ úng neu tap tin có tên file ton tai.
ˆ
˙ ˙
44 Bash
• -f file
´ ˆ
ˆ `
¯ úng neu tap tin có tên file ton tai và là mot tap tin thông thuong.
D ˆ ˆ ˆ ’`’
˙ ˙ ˙ ˙
• -g file
¯ úng neu tap tin có tên file ton tai và d ’oc d ˘ t bit thay d ˆ’i nhóm.
D ´ ˆ
ˆ
˙
`
ˆ
˙
¯u ’ ¯a
˙ ˙
¯o
• -h file hay -L file
´ ˆ ` ´ ˆ
ˆ ` ´ ’’
¯ úng neu tap tin có tên file ton tai và là liên ket mem (liên ket tuong trung).
D ˆ ˆ ˆ ’
˙ ˙ ˙
• -k file
D ´ ˆ
ˆ `
¯ úng neu tap tin có tên file ton tai và d ’oc d ˘ t bit sticky.
ˆ ¯u ’ ¯a
˙ ˙ ˙ ˙
• -p file
´ ˆ ` ’ ˆ ´
¯ úng neu tap tin có tên file ton tai và là tên cua mot ong (kênh FIFO).
D ˆ ˆ ˆ
˙ ˙ ˙
• -p file
´ ˆ ` ’ ˆ ´
¯ úng neu tap tin có tên file ton tai và là tên cua mot ong (kênh FIFO).
D ˆ ˆ ˆ
˙ ˙ ˙
• -r file
D ´ ˆ
ˆ `
ˆ `
¯ úng neu tap tin có tên file ton tai và có quyen d ˙ c.
ˆ ¯o
˙ ˙
• -s file
D ´ ˆ
ˆ `
¯ úng neu tap tin có tên file ton tai và kích thuoc lon hon không.
ˆ ’´’ ´’ ’
˙ ˙
• -t fd
D ´ ˆ
ˆ ’ ’ ˆ ’’ ’
¯ úng neu bo mô ta cua tap tin (fd) mo và chı lên terminal.
˙ ˙
• -u file
¯ úng neu tap tin có tên file ton tai và d ’oc d ˘ t bit thay d ˆ’i nguoi dùng.
D ´ ˆ
ˆ
˙
`
ˆ
˙
¯u ’ ¯a
˙ ˙
¯o ’`
’
• -w file
D ´ ˆ
ˆ `
ˆ `
¯ úng neu tap tin có tên file ton tai và có quyen ghi.
ˆ
˙ ˙
• -x file
D ´ ˆ
ˆ `
ˆ `
¯ úng neu tap tin có tên file ton tai và có quyen thuc thi.
ˆ ’
˙ ˙ ˙
• -0 file
D ´ ˆ
ˆ ’ ’’ ˜’ ’
¯ úng, neu tap tin có tên file và chu so huu cua nó là nguoi dùng mà ID có hieu luc
’`’ ˆ ’
chı d´ n.
’ ¯e ˙ ˙ ˙
ˆ
• -G file
D ´ ˆ
ˆ `
ˆ ˆ ˆ ` ¯i ’’
¯ úng, neu tap tin có tên file ton tai và thuoc ve nhóm, xác d˙nh boi ID nhóm có hieu
ˆ
luc. ˙ ˙ ˙ ˙
’
˙
• -S file
D ´ ˆ
ˆ `
¯ úng, neu tap tin có tên file ton tai và là socket.
ˆ
˙ ˙
• -N file
¯ úng, neu tap tin có tên file ton tai và thay d ˆ’i tu lan d ’oc d ˙ c cuoi cùng.
D ´ ˆ
ˆ
˙
`
ˆ
˙
`
¯o `’ ˆ ¯u ’ ¯o
˙
´
ˆ
• file1 -nt file2
¯ úng, neu tap tin file1 có thoi gian sua d ˆ’i muon hon file2.
D ´ ˆ
ˆ
˙
`
’ ’’ ¯o ˆ
˙
’
ˆ ˜’ ˆ
3.8 Shell - mot ngôn ngu lap trình 45
˙ ˙
• file1 -ot file2
´ ˆ
ˆ ’ ’ ’’ ’
¯ úng, neu tap tin file1 "già" hon file1 (truong hop nguoc lai cua truong hop trên).
D ’`’ ’`’ ’
˙ ˙ ˙ ˙ ˙
• file1 -ef file2
´ ˆ ˆ ´ ´ ’ ´ ’
¯ úng, neu tap tin file1 và file2 có cùng mot so thiet bi và chı so mô ta inode.
D ˆ ˆ ˆ ˆ
˙ ˙ ˙
• -o optname
´ ’ ˆ ’ ¯u ’ ´
¯ úng, neu tùy chon optname cua he vo d ’oc kích hoat. Chi tiet xin xem trên trang
D ˆ ˆ
man bash. ˙ ˙ ˙ ˙
• -z string
´ ¯o ’ ˜ `
¯ úng, neu d ˆ dài cua chuoi string bang không.
D ˆ ˆ ˘
˙
• -n string
´ ¯o ’ ˜
¯ úng, neu d ˆ dài cua chuoi khác không.
D ˆ ˆ
˙
• string1 == string2
D ´
ˆ ˜
ˆ ˆ’ `
¯ úng, neu hai chuoi trùng nhau. Có the thay hai == bang mot =.
˘ ˆ
˙
• string1 !== string2
D ´
ˆ ˜
¯ úng, neu hai chuoi không trùng nhau.
ˆ
• string1 < string2
¯ úng, neu chuoi string1, theo tu d ˆ’n, d ´’ng truoc chuoi string2 (d´ i voi ngôn
D ´
ˆ ˜
ˆ `’ ¯ie ¯u ’´’ ˜
ˆ ¯o ´’
ˆ
ngu hien thoi).
˜’ ˆ `’
˙
• string1 > string2
¯ úng, neu chuoi string1, theo tu d ˆ’n, d ´’ng sau chuoi string2 (d´ i voi ngôn ngu
D ´ˆ ˜
ˆ `’ ¯ie ¯u ˜
ˆ ¯o ´’
ˆ ˜’
hien thoi).
ˆ `’
˙
• arg1 OP arg2
’’ ¯ây ´ ` `
O d OP là mot trong các phép so sánh so hoc: -eq (bang), -ne (khác, không bang),
ˆ ˆ ˘ ˘
’ ’
-lt (nho hon),˙ -le (nho hon hoac bang), -gt (lon hon), -ge (lon hon hoac bang).
’ ’ ˘ ˘ ` ˙ ´’ ’ ´’ ’ ˘ ˘`
O cho các tham so arg1 và arg2 có˙ the su dung các so nguyên (âm hoac duong).
’’ ˆ ˜ ´
ˆ ˆ’ ’’ ´
ˆ ˘ ’’
˙
˙ ˙
`’ ˆ’ `
´’ ¯ie ˆ ’ ’ ˆ’ ’ ˆ’
Tu các bieu thuc d ˆ u kien co ban này có the xây dung các bieu thuc phuc tap theo ý
´’ ´’
´ ˙ thuong PHU DINH, VÀ (cong) và HOAC:
muon nho các phép lôgíc thông ’`’
`’ ’ ˙ ˘ ˙
ˆ ¯ ˙ ˆ
˙ ˙
• !(expression)
’ ¯i D ´ ˆ’ ´’
Phép phu d nh. ¯ úng, neu bieu thuc sai.
ˆ
˙
• expression1 -a expression2
´ ’ ˆ’ ´’ ¯e ¯úng.
`
Phép cong lôgic AND. ¯ úng neu ca hai bieu thuc d ˆ u d
ˆ D ˆ
˙
• expression1 -o expression2
´ ˆ ˆ’ ´’ ¯úng.
Phép lôgíc hoac OR. ¯ úng neu mot trong hai bieu thuc d
˘ D ˆ
˙ ˙
46 Bash
3.8.3 ’’
Toán tu case
’ ’’
Dang cua toán tu case nhu sau: ’
˙
case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ...+ esac
` ˆ’ `’ ˜
Câu lenh case d ˆ u tiên khai trien tu word, và so sánh nó (word) voi moi tu trong mau
ˆ ¯a ´’ ˆ `’ ˜
ˆ
˙ theo thu tu. Sau khi tìm thay su trùng nhau d `u tiên thì dung viec so sánh lai, và
´’ ’ ´ `’
pattern ˆ ’ ¯a
ˆ ˆ
˙ ˙ ˜ ´ ˙’ ’’ ˙ ’’
thuc hien danh sách list các câu lenh d ´’ng sau mau d tìm thay. Giá tri tra lai boi toán tu
’ ˆ ˆ ¯u ˆ ¯ã ˆ
này, bang 0, neu không tìm thay su trùng nhau nào. Trong truong hop nguoc lai,˙ tra lai giá tri
˙ ˘˙ ` ´
ˆ ´
ˆ ’
˙
’`’ ’
˙
’’ ’
mà câu lenh cuo ´ i cùng trong danh˙ sách list d a ra. Ví du su dung toán tu case sau lay tu
’’ ˙ ˙’ ˙ ˙ ´ ` ˙
ˆ ˆ ¯u’ ’ ˆ ’
˙
script /etc/rc.d/rc.sysinit (FreeBSD-style): ˙ ˙
kênh giao tác
case "$UTC" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS -u";
CLOCKDEF="$CLOCKDEF (utc)";
;;
no|false)
CLOCKFLAGS="$CLOCKFLAGS --localtime";
CLOCKDEF="$CLOCKDEF (localtime)";
;;
esac
´ˆ ´ ´
ˆ ˆ ˆ ˜ ’ ˆ ˘ ˆ ´’ ´
Neu bien so (UTC) nhan giá tri yes hoac true, thì se thuc hien cap lenh thu nhat, nhan
˘ ˆ ˆ
˙˘ p thu hai.
giá tri no hoac false - ca
˘ ´’ ˙ ˙ ˙ ˙ ˙ ˙ ˙
˙ ˙ ˙
3.8.4 ’’
Toán tu select
’’ ˆ’ ´’ ˆ
Toán tu select cho phép to chuc hoi thoai voi nguoi dùng. Nó có dang sau:
´’ ’`’
˙ ˙ ˙
select name [ in word; ] do list; done
` ˜
Lúc d ˆ u tu mau word hình thành mot danh sách nhung tu tuong ung voi mau này. Tap
¯a `’ ˆ ˆ ˜’ `’ ’ ’ ´’ ´’ ˆ ˜ ˆ
˙ báo loi tiêu chuan, hon nua moi tu d oc d kèm ˙
hop nhung tu này d ’oc d ’a vào kênh thông
’ ˜’ `’ ¯u ’ ¯u ˜
ˆ ˆ’ ˜
’ ˜’ ˆ `’ ¯u ’ ¯i ’
˙ i mot so thu tu. Neu mau word bi bo qua (không có trong toán tu select), thì se d a vào
vo ˆ ´ ´’ ’ ´
´’ ˙ ˜ ’ ’’ ˙
ˆ ˆ ˆ ˜ ¯u’
˙ ´ ˙ ˙
các tham bien vi trí (xem trên) theo mot cách tuong tu. Sau d dau nhac PS3 d ’oc d ’a ra,
ˆ ˆ ’’ ’ ¯ó, ´ ˆ ´
˘ ¯u ’ ¯u
và he vo cho chuoi nhap vào trên d ˆ u vào tiêu chuan. Neu chuoi nhap vào có chua˙so, tuong
ˆ ’ `’
˙˜
ˆ ˆ ¯a` ˙ ˆ’
˙´
ˆ ˜
ˆ ˆ ´’ ´ ’ ’
ˆ
˙ ´ i mot trong các ˙so d hien ra, thì bien name se d oc gán giá ˙ bang tu d kèm voi so
ung vo ˆ
´’ ´ ¯ã ˆ ´ tri ˘ ` `’ ¯i ´’ ´
’ ˆ ˆ ˜ ¯u ’
’ ˆ
´ ˙ p vào mot dòng rong, thì so và tu se d oc hien ra them ˙ t lan nua. Neu nhap
˙˜ ´ ˙
này. Neu nha
ˆ ˆ ˆ ˆ ˆ `’ ˜ ¯u ’ ˆ’ ˆ `
mo ˆ ˜’ ´ˆ ˆ
vào bat ky mot giá tri˙nào khác, thì bien name se nhan giá tri bang không. Chuoi mà ngu˙`’i
´ ` ˙ˆ
ˆ ´
ˆ ˜ ˆ
˙ ˙ `
˘ ˙ ˜
ˆ ’o
˙ d oc ˙ lai trong bien REPLY. Danh ˙sách lenh list d oc thuc hien voi giá
dùng nhap vào, ¯u ’ ghi ´ ˙ ´’
ˆ ’ ˆ ˆ ¯u ’
’ ’ ˆ
´ ˙
ˆ
˙ ˙
¯ây ˆ ’
tri bien name d chon. Sau d là mot script nho (xin hãy gõ không dau neu console cua ban
¯ã
˙ ´ ˙´ ˙
ˆ ˆ
˙ ’
˙ a ho tro viec hien thi Tieng Viet):
˙ ˙ ˙
’ ˜
chu ˆ ’ ˆ ˆ’ ´
ˆ ˆ
˙ ˙ ˙ ˙
kênh giao tác
#!/bin/sh
echo "Ban thích dùng OS nào?"
˙
select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris" "QNX" "Other";
break
done
echo "Ban d chon $var"
¯ã
˙ ˙
ˆ ˜’ ˆ
3.8 Shell - mot ngôn ngu lap trình 47
˙ ˙
Ghi d n trên vào mot tap tin (ví du, select.sh), thay d ˆ’i d ˆ’ tap tin thành kha thi (ví
¯oa ˆ ˆ ¯o ¯e ˆ ’
˙ ˙ ˙ ˙ ˙
du, chmod 755 select.sh), và chay (./select.sh). Trên màn hình se hien ra câu ˜ ˆ
˙
’
hoi sau: ˙ ˙
kênh giao tác
Ban thích dùng OS nào?
˙
1) Linux 3) Free BSD 5) Solaris 7) Other
2) Gnu Hurd 4) MacOSX 6) QNX
#?
Hãy nhan mot trong 7 so d ’a ra (tu 1 d´ n 7). Neu ban nhap 4 (nhan ca <Enter>), thì se
´
ˆ ˆ ´ ¯u
ˆ `’ ¯eˆ ´
ˆ ˆ ´ ’
ˆ ˜
´ ˙
thay thông báo sau: ˙ ˙
ˆ
kênh giao tác
Ban d chon MacOSX
¯ã
˙ ˙
3.8.5 ’’
Toán tu for
’’
Toán tu for làm viec có khác mot chút so voi for trong các ngôn ngu lap trình thông thuong.
ˆ ˆ ´’ ˜’ ˆ ’`’
˙ ’ m giá tri cua mot bien so nào d (lên hoac xuong) mot d n vi sau moi
Thay vì tang hoac gia
˘ ˘ ˙’ ´ ´ ˘ ´ ˙ ˆ ¯o ˜
ˆ ˆ ˆ ¯ó ˆ ’ ˆ
vòng lap, thì nó
˘ ˙gán giá tri tiep theo ˙
´˙ trong danh sách tu ¯u ˙d a san cho bien˙d trong
˜ ˙ ´ ¯ó
ˆ ` ’
’ ˘ ˆ
˜ ˙ lap. Nói chung cau trúc có dang sau:
moi vòng ˘ ˙
´
ˆ ˆ
˙ ˙
for name in words do list done
ˆ ’ ˆ ´
ˆ ’’
Quy luat xây dung danh sách lenh (list) giong trong toán tu if. Ví du. Script sau tao
˙ ˙
các tap tin fu1, fu2, và fu3: ˙ ˙ ˙
ˆ
˙
kênh giao tác
for a in 1 2 3 ; do
touch fu$a
done
ˆ’ ˆ ˆ ´
ˆ ’
Có the gõ ba dòng này trên mot dòng lenh, ket qua thu d ’oc tuong tu voi script. Dang
¯u ’ ’ ’ ’ ´’
’ng quát cua toán tu for nhu sau:
to ’ ’’ ˙ ˙ ˙ ˙ ˙
ˆ ’
for name [ in word; ] do list ; done
` ’ ˆ’ `’ ˆ’ ˆ’ ´’
¯ au tiên cung xay ra su khai trien tu word theo quy luat khai trien bieu thuc (xem trên).
Dˆ ˜ ’ ˆ
˙t d oc gán các giá tri thu d oc tu su khai trien này, và thuc hien
˙`
¯ó ´
Sau d bien name lan luo ¯u ’
ˆ `
ˆ ’’ ’ ¯u ’ ’ ’
’ `
ˆ ’ ˆ
danh sách lenh list trong ˆ ˆ ˙ mo˙i lan nhu vay. Neu không có "in word", thì danh sách lenh
˜ ` ˙
´ ˙ ˙ ˙ ˙
ˆ ’ ˆ ˆ ˆ
list d ’oc ’ ˙ thuc hien mot lan cho moi tham bien vi trí d d a ra. Trên Linux˙ có
` ˜ ˙ ´
ˆ
¯u ’ ˆ ˆ ˆ ˆ ¯ã ¯u’
˙ seq, tiep nhan hai so nguyên làm tham so, ˙ d a ra chuoi tat ca các so nam
˙ ˙´ ˙ ´ ´ và ¯u ˜ ˆ
chuong trình
’’ ˆ ˆ ˆ ˆ ’ ˆ ´ ’ ´ ˘
ˆ `
´
giua hai so này (cong thêm ’ ˙ ca chúng). Nho câu lenh này có the su dung for cua bash làm
`’ ’ ’’ ’
˜’ ˆ ˆ ˆ ˆ
viec nhu toán tu ˙ ˙ ˙
’
’’ for trong các ngôn ngu lap trình thông thuong. ¯ e làm d ’oc d ˆ u này chı` ’
ˆ ’ ˜’ ˆ ’`’ D ˆ ¯u ’ ¯ie
`˙ viet vòng lap for nhu sau:
can ´ ˘ ˙ ˙
ˆ ˆ ’
˙
kênh giao tác
for a in $( seq 1 6 ) ; do
cat fu$a
done
ˆ ˆ ’ ˆ ´
Câu lenh (script) này d ’a ra màn hình noi dung cua 10 tap tin (neu có): "fu1", ..., "fu10".
¯u ˆ
˙ ˙ ˙
48 Bash
3.8.6 ’’
Toán tu while và until
’’
Toán tu while làm viec tuong tu nhu if, nhung vòng lap các câu lenh trong list2 chı
ˆ ’’ ’ ’ ’ ˘ ˆ ’
`
thuc hien khi d ˆ u kien˙ còn d ˙ và se ngung khi d `u kien không thoa mãn. Cau trúc có
˙ ˙’ ´
’ ˆ ¯ie ˆ ¯úng, ˜ `’ ¯ie
ˆ ˆ ˆ
˙ nhu sau:
dang ˙ ˙ ˙
’
˙
while list1 do list2 done
Ví du:
˙
kênh giao tác
while [ -d directory ] ; do
ls -l directory >> logfile
echo -- SEPARATOR -- >> logfile
sleep 60
done
’’ ˆ ’
Chuong trình (script) trên se theo dõi và ghi lai noi dung cua thu muc directory theo
˜ ’
´ ` ’’
tung phút neu thu muc còn ton tai. Toán tu until ’ ’
`’ ˙ tu˙ong tu nhu toán tu while:
’˙
ˆ ’ ˆ ’ ’ ’
˙ ˙ ˙
until list1 do list2 done
¯ ˆ’ `
ˆ ˘ ’’ ˆ ’’ ˜
˙ lenh cuoi cùng ˙
’ ¯i ’ ¯ie`
Diem khác biet nam o cho, su dung giá tri phu d nh cua d ˆ u kien list1, tuc là list2
ˆ ´’
˙ sách˙ list1 tra lai˙ trang thái thoát ra khác
’ ˆ ´
thuc hien, neu câu ˆ
ˆ ´
ˆ trong danh ’
˙
không. ˙ ˙ ˙ ˙
3.8.7 ´
ˆ
Các hàm so
` ´
ˆ ´
Cú pháp He vo bash cho phép ngu’o’i dùng tao các hàm so cho mình. Hàm so làm viec và
ˆ ’ ˆ ˆ
d ’oc su dung˙ giong nhu các câu lenh thông thuong cua he vo, tuc là chúng ta có the tu tao
¯u ’ ’’ ´
ˆ ’ ˆ
˙`
’’ ’ ˆ ’ ´’ ˙
ˆ’ ’
˙ ˙ ´ ´ ˙
các câu lenh moi. Hàm so có cau trúc nhu sau:
´’ ˙ ˙ ˙
ˆ ˆ ˆ ’
˙
function name () { list }
Hon nua tu function không nhat thiet phai có, name xác d nh tên cua hàm (dùng d ˆ’
’ ˜’ `’ ´
ˆ ´
ˆ ’ ¯i ’ ¯e
` ’ ´ ’’
goi hàm), còn phan thâm cua hàm so tao boi danh sách các câu lenh ˙ list, nam giua { và }.
`
˘
ˆ ˆ ˆ ˜’
Các câu lenh này se d ’oc thuc hien moi khi tên name d ’oc goi˙ (giong nhu mot lenh thông
˙
ˆ ˜ ¯u ’ ’ ˆ
˙˜
ˆ ¯u ’ ´
ˆ ’ ˆ ˆ
thuong). Ca
`’ ˙ `n chú ý rang hàm có the là d qui, tuc là goi hàm so o ngay trong phan thân cua
`
˘ ˙ ˙ ˙’ ´’ ˙ ´˙ ’ ˙ `˙ ’
’ ˆ ˆ ¯e
ˆ ˆ ’ ˆ
´ thuc hien trong pham vi he vo ˆ
nó. Hàm so ’ ˆ ˙’ hien thoi: không có tien trình moi nào d oc chay
`’ ˙ ´ ´’
ˆ ˆ ˆ ¯u ’
’
khi biên dich hàm so (khác voi˙viec chay script).
˙ ˙´
ˆ ´’ ˆ ˙ ˙ ˙ ˙
˙ ˙ ˙
3.8.8 ´
ˆ
Tham so
Khi hàm so d ’oc goi d ˆ’ thuc hien, các tham so cua hàm se tro thành các tham bien vi trí
´ ¯u ’
ˆ ¯e ’ ˆ ´ ’
ˆ ˜ ’’ ´
ˆ
˙ ˙ xem ˙trên)˙trong thoi gian thuc hien hàm này. Chúng d oc d ˘ t các˙tên
(positional parameters, `’ ’ ˆ ¯u ’ ¯a
’
nhu $n, trong d n là so cua tham so mà chúng ta ˙ ´ n su dung. Viec d
’ ¯ó ´ ’
ˆ ´
ˆ muo˙ ’’
ˆ
˙ ´ ˙´ ` `
ˆ ¯ánh so bat d ˆ u tu
ˆ ˘ ¯a ’
’ ˆ ´ ¯a
ˆ ` ˜ ’ ’’
ˆ ´ ’˙
ˆ
˙ ´
1, nhu vay $1 là tham so d ˆ u tiên. Cung có the su dung tat ca các tham so mot lúc nho $*,
ˆ ˆ `’
˙ so thu tu cua tham so nho $# Tham so vi ˙ so 0 không thay d ’i. Trong khi thuc
và d ’a ra ´ ´’ ’ ’ ´ ´ ˙
¯u ˆ ˆ `’ ˆ trí ´ ˆ ¯o
ˆ ’
´ u gap câu lenh noi trú return (trong phan ˙
hien ne ˘
ˆ ˆ
˙
ˆ ˆ ` thâm cua hàm), thì hàm so se bi dung lai
ˆ ’ ´ ˜
ˆ `’ ˙
và˙quyen d˙ ˆ u khien d ’oc trao cho câu lenh d ´’ng sau hàm. Khi thuc hien xong hàm so, các
`
ˆ ¯ie ` ˙ ˙
ˆ’ ¯u ’ ˆ ¯u ’ ˆ
˙ ´ ˙
ˆ
tham bie ´ n vi trí và tham˙bien d ˆ c biet # se d ’oc tra lai các giá tri mà chúng có truoc khi chay
ˆ ´ ¯a
ˆ ˆ
˙
˜ ¯u ’ ˙ ˙
’´’
hàm. Bie ´ n˙ noi bo (local) ˙ ˙
ˆ ˆ ˆ
˙ ˙ ˙ ˙
Neu muon tao ˙ ˆ t ˙
´
ˆ ´
ˆ ´ ¯i
ˆ ’’ ˆ’ ’’
mo tham bien d a phuong, có the su dung tu khóa local. Cú pháp d ’a ra
`’ ¯u
´ ¯i ˙ong giong het các tham bien khác, chı có˙ d `u can d ´ ng sau tu khóa local:
˙ ´ ˙ ´
bien d a phu ’
ˆ ’ ˆ ˆ ˆ ’ ˆ `
¯ie ˆ ¯u ’ `’
˙ ˙
’ ˆ ’ ˆ
3.9 Script cua he vo và lenh source 49
˙ ˙
ˆ ´
ˆ ’ ˆ ˆ ’ ˆ
local name=value. Duoi d là mot ví du hàm so, thuc hien công viec cua lenh seq d
’´’ ¯ây ¯ã
nhac d´ n o trên:
´ ˆ
˘ ¯e ’’ ˙ ˙ ˙ ˙ ˙ ˙
kênh giao tác
seq()
{
local I=$1;
while [ $2 != $I ]; do
{
echo -n "$I ";
I=$(( $I + 1 ))
};
done;
echo $2
}
Can chú ý d´ n tùy chon -n cua echo, nó (tùy chon) huy bo viec tao dòng moi. Mac dù
ˆ` ¯e
ˆ ’ ’ ’ ˆ ´’ ˘
˙ `u ý nghıa voi muc d chúng ta muon o d ˙ nhung se rat có ích
˙ ˙
´ ’’ ¯ây, ˙
tùy chon này không có nhie ˆ ˜ ´’ ¯ích ˆ ’ ˜ ´ˆ
˙ hàm so voi muc d khác. Hàm so tính giai thua fact Mot ví du khác:
trong các ´ ´’ ˙´
ˆ `’
ˆ ¯ích ˆ
˙ ˙ ˙
kênh giao tác
fact()
{
if [ $1 = 0 ]; then
echo 1;
else
{
echo $(( $1 * $( fact $(( $1 -- 1 )) ) ))
};
fi
}
D ´
ˆ `’ ˆ ’ ¯e ¯e ’
ˆ ˆ’ ´
¯ ây là hàm so giai thua, mot ví du cua hàm d ˆ qui. Hãy chú ý d´ n su khai trien so hoc,
ˆ
´
và phép the các câu lenh. ˙ ˙ ˙ ˙ ˙
ˆ ˆ
˙
3.9 ’ ˆ ’ ˆ
Script cua he vo và lenh source
˙ ˙
’ ˆ ’ ’ ˆ ´’ ˜
Script cua he vo chı là các tap tin có chua chuoi lenh. Tuong tu hàm so script có the d ’oc
ˆ ˆ ’’ ’ ´
ˆ ˆ’ ¯u ’
thuc hien nhu ˆ ˙ mot câu lenh. Cú pháp truy cap d´ n các tham so cung nhu hàm so. Trong các
˙ ˙ ´ ˜˙ ´ ˙
’ ˆ ’ ˆ ˆ ¯eˆ ˆ ’ ˆ
truong ˙ ’p thông thuong khi chay script se ˙ mot tien trình moi d ’oc chay. ¯ e có the thuc
˙` ho
’’
˙
’`’
˙
˜ có ˆ ´ ˆ ´’ ¯u ’ D ˆ’ ˆ’ ’
˙ o trong ban bash hie˙n thoi, can su dung câu lenh source, hay˙mot dau cham "."
hien script ’’ ’ `’ ˆ ` ’’ ˙ ˙ ´ ´ ˙
ˆ ˆ ˆ ˆ ˆ ˆ
(d˙`ng nghıa cua source). Trong˙ truong hop này˙script chı d ’n gian là mot tham so cua lenh
¯o
ˆ ˜ ’ ’`’ ’
˙’
¯o ’ ˆ
˙ ´ ’ ˆ
ˆ
nói trên. Câu lenh se có dang: ˙ ˙ ˙
ˆ ˜
˙
source filename [arguments] ˙
Câu lenh này d c và thuc hien các câu lenh có trong tap tin filename trong môi truong
ˆ ¯o ’ ˆ ˆ ˆ ’`
’
hien thoi,`’ ˙và tra lai ˙ tri, xác d˙nh boi câu lenh cuoi cùng cua filename. Neu filename
’ giá ˙ ’’ ˙ ´ ˙ ’ ´
ˆ ¯i ˆ ˆ ˆ
không chua dau ˙ ch chéo, thì ˙d ’ong dan, ˙ ˆ t kê trong bien so PATH, se d ’oc su dung d ˆ’
˙ ´’ ´ ga
ˆ
˙
¯u `’ ˜
ˆ lie ´ ´
ˆ ˆ ˜ ¯u ’ ’’ ¯e
˙ ˙ ´ ´
tìm tap tin có tên filename. Tap tin này không nhat thiet phai kha thi (không nhat thiet ’ ’ ˙ ´˙ ´
ˆ ˆ ˆ ˆ ˆ ˆ
pha ˙ ´ ˙ ´ ˆ
’ i có bit x). Neu trong thu muc, liet kê trong PATH, không tìm thay tap tin can, thì se tìm `
ˆ ’ ˆ ˆ ˆ ˜
nó (tap tin) trong thu muc hien ˙thoi. ˙Neu có các tham so (d ’a ra arguments, xem d nh dang
ˆ ’ ˆ `’ ´ ˆ ´ ¯u
ˆ
˙
¯i
˙ ˙ ˙ ˙ ˙
50 Bash
ˆ ’’ `’ ’ ˆ ˜ ´
ˆ ´
câu lenh o trên), thì trong thoi gian thuc hien script chúng se thành các tham bien vi trí. Neu
ˆ
không ˙ có tham so, thì tham bien vi trí˙không thay d ’i. Giá tri (trang thái), mà lenh ˙
´ ´ ˙
ˆ ˆ ¯o
ˆ ˆ source
tra lai, trùng voi giá tri, tra lai boi ˙câu lenh cuoi cùng trong ˙ ˙ Neu không ˙câu lenh nào
’ ´’ ’ ’’ ˆ ´
ˆ script. ´
ˆ ˆ
˙ thuc hien, hoac không tìm thay tap˙ tin filename, thì trang thái thoát bang 0. ˙
d ’oc ’ ˆ ˘ ˙ ˙ ´ ˆ `
˘
¯u ’ ˆ
˙ ˙ ˙ ˙ ˙ ˙
3.10 ˆ
Câu lenh sh
˙
ˆ’ ˆ ’ ’ ˆ ’
Ban luôn luôn có the chay mot ban sao cua he vo bash nho câu lenh bash hay sh. Khi này `’ ˆ
˙ the bat ban sao này chay ˙ t script nào d neu d a tên cua script nhu mot tham so cho
có ˆ ´ ’ ˘ ’ ˙ mo ˙ ´ ’ ˙ ´
ˆ ¯ó, ˆ ¯u ’ ’ ˆ ˆ
lenh bash. Nhu vay, d ˆ ’ ˆ
ˆ ’ ˆ ¯e ’ thuc hien script myscript can d ’a câu lenh "sh ˙ myscript".
˙ ˙ ` ¯u
ˆ ˆ
Neu xem noi dung˙ cua mot tap ˙ script nào d (nhung tap tin nhu vay có rat nhieu trên
˙´
ˆ ˆ ’ ˙
ˆ ˆ tin ¯ó ˜’ ˆ
˙
’ ˆ ´
ˆ `
ˆ
he tho ˙ n se thay dòng d˙`u tiên có dang sau: #!/bin/sh. Dieu này có nghıa là, khi
´ ng), ba ˜ ´ ˙ ˙ ` ˙
ˆ ˆ ˆ ¯a
ˆ ¯ ˆ ˜
˙
chúng ta goi ˙script d ’ thuc hien nhu mot lenh thông thuong, thì /bin/sh se giúp chúng ta
˙
¯e ’ ˆ
ˆ ’ ˆ ˆ ’`’ ˜
´ ˙ ´’ ˙’ ˙ ´ ˙ ˙
"thu xep" moi thu. Có the thay the dòng này boi liên ket d´ n bat ky mot chuong trình nào,
’’ ´ ¯e ´ ` ˆ
ˆ ˆ ˆ ˆ ˆ ˆ ’’
mà se d c tap ˙ tin và thuc hien các câu lenh tuong ung. Ví du, script trên ngôn ngu Perl bat ˙ ´
˜ ¯o ˆ ’ ˆ ˆ ’ ’ ´’ ˜’ ˘
` ˙ ˙ có dang !/bin/perl. Mot chú ý khác là ký ˙tu # dùng d ’ viet loi chú thích
˙ ˙ ˙
¯a ’’
d ˆ u boi dòng ˆ ’ ¯e ´ `’
ˆ ˆ
trong script. Tat ca˙nhung gì d ´’ng sau ký ˙ ’ này d´ n cuoi dòng˙se d ’oc coi là chú thích và bi
´ ’ ˜’
ˆ ¯u tu ¯e
ˆ ´ˆ ˜ ¯u ’
˙ ´ ˙ ´’ ˙
bash bo ’ qua (tuc là he vo se không xem dòng này là câu lenh). Neu ban muon kiem chung
´’ ˆ ’ ˜ ˆ ˆ ´
ˆ ˆ’
lai tác dung cua ký tu ˙
’ ˆ ˆ ˆ
˙
’ này, thì hãy nhap vào dòng lenh mot câu lenh bat ky, và d ˘ t truoc nó
ˆ ´˙ `
ˆ ¯a ’´’
˙ lenh) ký tu #, ví˙du "# ls", ban˙se thay rang he vo bo qua câu lenh này. ˙
(câu ˆ ˙ ´ ` ˙ ’ ˙’ ˙
’ ˜ ˆ ˘ ˆ ’ ˆ
Chúng ta se dung bài hoc ngan gon ve bash tai d˙ Tat nhiên, còn rat nhieu van d ˆ quan
˙ ˙ `
˜ ’
˙ ˘ ˙
´ `
ˆ ¯ây. ˆ ´ ˙ ´
ˆ ˆ ´ ¯e
` ˆ `
`
trong can xem xét nhung na ˙m ngoài pham vi cua bài hoc, ví du, quan lý tien trình, lich su câu
`
˘ ˙ ’ ˙ ’ ´ ’’
ˆ ’ ˆ
˙ mô ta ve thu vien readline, tín hie˙ v.v. . . Các ban se tìm thay thông tin can thiet trong
lenh, `
’ ˆ ’ ˆ ˙ ˙ ´ ` ˙ ´
ˆ ˆ u, ˜ ˆ ˆ ˆ
các cuon huong dan ˙
˙ ´
ˆ ’ ´’ ˜ ˙
ˆ khác hoac trên trang man bash.
˘ ˙
˙
0 comments
Post a comment