Giáo trình Unix

Mục l ục:

PHẦN 1: UNIX CƠ SỞ

Bà i 1. Kh ởi đo ng UNIX

1.1 Bắ t đầu p hiên làm việc

1.2 Ke t th úc p hie n là m việc

1.3 Cá ch dùng lện h của UNIX

Bà i 2. Là m vi ệc v ới f ile.

2.1 To chư c fi le

2.2 Di chu yển giư a cá c th ưmục

2.3 Cá c th ao tá c cơ sở vơ i cá c th ưmục

2.4 Cá c th ao tá c cơ sở vơ i fil e th ườn g

Bà i 3. Bả o ve cá c file cu a ng ười sử d ụng

3.1 Mô tả ngư ời sử du ng

3.2 Mô tả nho m n gươ i sư dụn g

3.3 Bảo v ệ cá c fil e và cá c th ưmục

Bà i 4. Sao , ch uye n, li ên k ết v à tìm k iếm file

4.1 Sao ch ép file

4.2 Ch uye n v à đo i tên fil e

4.3 Tạo li ên k ết v ới f ile

4.4 Tìm k iếm file

Bà i 5. Tho ng tin g iữa như ng n gươ i sư du ng

5.1 Th ông tin bằ n g le nh mail

5.2 Th ông tin bằ n g le nh write

Bà i 6. Sử dụn g ch ươn g trì nh soạ n thảo vi

6.1 Kh ởi đ ộng vi

6.2 So ạn t hả o vă n bản

Bà i 7. She ll scrip t

7.1 Qu ản lý ti ến t rình

7.2 Lập cá ch thức cho sh ell scrip t

7.3 Cá c sh ell UNIX

Bà i 8. Đo i hươ ng (red irection )

8.1 Vào /ra ch uan

8.2 Ch uye n đ ổi dư lie u gi ữa cá c tiến trìn h

8.3 Đo i hư ớng ke p đầu ra chu ẩn

Bà i 9. Cơ che thay th ế cu a Sh ell

9.1 Tr uye n th am số

9.2 Cá c b iến Shel l

9.3 Cá c k í tự đặ c biệt

9.4 Lấy k ết q uả củamột lệnh

9.5 Cá c q ui tắ c th ay t hế của She ll

Bà i 10 . Môi t rườn g cu a S hell

10 .1 Môi tr ườn g

10 .2 Cá c b iến định ngh ĩa t rước

10 .3 Cá c b iến chun g

Bà i 11 .Lập tr ình mức cơ sở d ươ i UNIX

11 .1 Cá c p hép thử tron g Sh ell

11 .2 Lập tr ình một cấ u tru c co đie u ki ện

11 .3 Lập tr ình một chu trìn h

Bà i 12 .Tí n hi ệu v à đ ồng bộ

12 .1 Qu ản lý cá c tí n hi ệu

12 .2 Qu ản lý cá c ti ến t rình

12 .3 Đe qu i

PHẦN 2 LẬP TRÌNH C DƯỚI UNIX

Bà i 1. Giơ i th iệu ch ung

1.1 Cá c lơ i go i he tho ng

1.2 Ch ủ th ực và chủ t hực quy ền của tiến trìn h

1.3 Đị nh n ghĩ a cá c th am biến ch ươn g trì nh

1.4 Một số đị nh n ghĩa kh á c

Bà i 2. Qu ản ly tie n tr ình

2.1 Nh ận biết tiến trì nh

2.2 Nh ận biết chu tie n trì nh

2.3 Th ay đổi chủ và n hóm ch ủ

2.4 Tạo một t iến trình

2.5 Cá c h à m gọi một tiến trìn h th ay thế

2.6 Đo ng bộ t iến trình

2.7 Mức ư u ti ên của t iến trìn h

2.8 Nh óm cá c tie n trì nh

Bà i 3. Qu ản ly fil e

3.1 Mởmột f ile

3.2 Tạo một f ile

3.3 Đo ng file

3.4 Đặ tmặ t n ạ cá c q uyền thâ m n hậ p file

3.5 Đọc f ile

3.6 Gh i fi le

3.7 Di chu yển con tro file

3.8 Cấu tr úcmột inod e

3.9 Tạo một i nod e

3.10 Th ay đổi quye n th â m nhập

3.11 Th ay đổi chủ sở h ữu h oặ c nh óm

3.12 Th ay đổi thưmục là m vi ệc

pdf64 trang | Chia sẻ: netpro | Lượt xem: 2206 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Giáo trình Unix, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
å laøm tieáp caùc phaàn sau, caàn toå chöùc caùc file nhö sau: - file1 vaø file2 ôû trong thö muïc bin - file1.old vaø file2.old ôû trong thö muïc src vaø - khoâng coù file naøo ôû trong thö muïc tieáp nhaän. Taïo moät lieân keát teân laø file3 trong thö muïc tieáp nhaän vôùi file1 trong thö muïc bin cd ln /users/userX/bin/file1 /users/userX/file3 8. Lieät keâ 2 file file1 vaø file3 ll -i /users/userX/bin/file1 /users/userX/file3 Ta coù nhaän xeùt gì veà nhöõng thoâng tin ñöôïc ñöa ra maøn hình ? 9. Haõy xoaù file3 vaø kieåm tra xem noù ñaõ bò xoaù chöa, xem ñieàu gì xaûy ra vôùi file1? Haõy giaûi thích. 10. Leänh chuyeån file (mv) cho pheùp ñoåi teân moät file. Haõy sao file file2.old trong thö muïc src vaøo file file4/ 11. Haõy tìm file vi find / -name vi -print 2> /dev/null 12. Xem giaù trò i-num cuûa file vi (duøng ll vôùi tuyø choïn –l) 13. Tìm taát caû caùc file coù cuøng giaù trò i-num vôùi vi. w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 24 Baøi 5: Thoâng tin giöõa nhöõng ngöôøi söû duïng Noäi dung: giôùi thieäu caùc leänh duøng ñeå truyeàn vaø nhaän tin mail, write 5.1 Thoâng tin baèng leänh mail 5.1.1 Gôûi thö Leänh mail cho pheùp gôûi thö cho ngöôøi khaùc. Vieäc gôûi khoâng phuï thuoäc vaøo ngöôøi nhaän ñang trong phieân laøm vieäc hay khoâng. $mail user1 message written-out Ctrl-D $ 5.1.2 Nhaän thö: Khi baét ñaàu phieân laøm vieäc, neáu ta coù thö, treân maøn hình seõ hieän doøng thoâng baùo “you have mail”. Trong quaù trình laøm vieäc, SHELL seõ laøm coâng vieäc kieåm tra thö ñeán theo moät chu kyø thôøi gian ñònh tröôùc. Ñeå xem hoäp thö, ta duøng leänh mail khoâng coù ñoái. Thí duï: - gôûi thö cho ngöôøi khaùc: $whoami user2 $mail user3 you can read my files CTRL-D $ - nhaän thö bmw Welcom on DPX/2 login : user3 B.O.S you have mail $mail From user2 Fri Mar 7 12:07 EET 1992 you can read my files ?h usage q quit x exit without changing mail w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 25 p print s [file] save (default mailbox) w [file] same without header - print previous d delete + [user] mail to user !cmd execute cmd ?q $ Chuù yù: Ñaàu thö (header) coù theå bò thay ñoåi khi laøm vieäc treân maïng. 5.3 Thoâng tin baèng leänh write Leänh write cho pheùp gôûi thoâng baùo töùc thôøi tôùi nhöõng ngöôøi khaùc ñang trong phieân laøm vieäc. $write user2 hello my friend how are you CTRL – D $ Leänh wall cho pheùp gôûi thoâng baùo tôùi taát caû nhöõng ngöôøi ñang laøm vieäc trong heä. Leänh write ghi thoâng tin tröïc tieáp leân maøn hình neân coù theå gaây nhieãu cho coâng vieäc maø ngöôøi nhaän ñang laøm. Ñeå traùnh laøm vieäc ñoù coù theå duøng leänh mesg vôùi tuyø choïn n. $mesg … w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 26 Baøi 6: Söû duïng chöông trình soaïn thaûo vi möùc cô sôû Noäi dung: giôùi thieäu chöông trình soaïn thaûo vi, cung caáp moät soá kieán thöùc cô sôû ñeå coù theå soaïn thaûo ñöôïc vaên baûn hay chöông trình. 6.1 Khôûi ñoäng vi 6.1.1 Giôùi thieäu chung: vi (vieát taét cuûa Video Interactif) laø chöông trình soaïn thaûo vaên baûn theo trang maøn hình: - Maøn hình ñöôïc xem nhö moät cöûa soå môû treân file. - Coù khaû naêng di chuyeån cursor tôùi baát kyø nôi naøo treân maøn hình. - Cöûa soå coù theå di chuyeån töï do treân file. Ñeå hieån thò ñuùng, vi caàn bieát kieåu terminal ñang duøng. Ta coù theå ñònh nghóa ñöôïc kieåu terminal baèng caùch gaùn gía trò cho bieán moâi tröôøng TERM: Thí duï: $TERM=tws2103;export TERM Phaàn lôùn caùc phím ñöôïc duøng ñoäc laäp hoaëc keát hôïp vôùi phím SHIFT vaø CTRL ñeå taïo caùc leänh cuûa vi. Khi moät leänh bò goõ sai, vi baùo hieäu baèng nhaùy maøn hình, keâu beep hoaëc thoâng baùo loãi. Chöông trình vi ñöôïc xaây döïng töø chöông trình soaïn thaûo doøng ex. Caùc leänh cuûa ex coù theå ñöôïc goïi khi coù daáu “:” ôû doøng cuoái maøn hình. 6.1.2 Baét ñaàu duøng vi Ta coù theå goïi vi vôùi teân file vaên baûn: $vi teân_file Cöûa soå soaïn thaûo seõ ñöôïc môû taïi ñaàu file. Neáu file chöa toàn taïi, noù seõ ñöôïc taïo bôûi leänh ghi. Doøng cuoái cuøng treân maøn hình ñöôïc duøng cho nhöõng vieäc sau: - vaøo caùc leänh, - thoáng keâ, - baùo loãi. Ñoái vôùi nhöõng ngöôøi môùi duøng vi, coù theå duøng version khaùc cuûa vi: $vedit teân_file version naøy cuûa vi seõ hieän thoâng baùo INPUT MODE khi ta ñang trong cheá ñoä nhaäp vaên baûn. Khi ta chæ muoán xem noäi dung cuûa moät file, duøng: $view teân_file. version naøy cuûa vi môû file chæ ñeå ñoïc, cho pheùp ta xem ñöôïc noäi dung maø traùnh ñöôïc nguy cô file bò thay ñoåi. w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 27 6.1.2 Ra khoûi vi: Muoán ra khoûi vi vaø ghi file coù theå duøng moät trong caùc caùch sau: ZZ hoaëc :w sau ñoù :q hoaëc :wq hoaëc :x Ra khoûi vi vaø khoâng ghi file: :q (neáu khoâng coù söûa ñoåi) hoaëc :q! Khi ñang trong vi, muoán laøm vieäc vôùi SHELL, ta coù theå laøm nhö sau: - chaïy moät leänh cuûa SHELL :!leänh - hoaëc goïi SHELL, sau ñoù chaïy caùc leänh ta muoán, khi keát thuùc aán CTRL-D ñeå trôû laïi vi: :!sh $leänh $CTRL-D 6.2 Soaïn thaûo vaên baûn: 6.2.1 Xen vaên baûn: - xen kyù töï treân moät doøng: a Xen kyù töï vaøo sau cursor. Leänh khoâng ñöôïc hieån thò treân maøn hình. ESC: Keát thuùc cheá ñoä xem. i Xen kyù töï vaøo tröôùc cursor. A Xen kyù töï vaøo cuoái doøng. I Xen kyù töï vaøo ñaàu doøng. - xen doøng: o Xen moät doøng vaøo tröôùc doøng chöùa cursor. O Xen moät doøng vaøo sau doøng chöùa cursor. Ghi chuù: muoán xen caùc kyù töï khoâng in ñöôïc (non printable) ta phaûi goõ: CTRL – V tröôùc chuùng. 6.2.2 Di chuyeån cursor trong file: - theo kyù töï: sang traùi: duøng phím muõi teân traùi hoaëc h hoaëc backspace. xuoáng doøng: duøng phím muõi teân xuoáng hoaëc j hoaëc linefeed sang phaûi : duøng phím muõi teân phaûi hoaëc i hoaëc escape. leân doøng : duøng phím muõi teân leân hoaëc k. - theo doøng: ^ veà ñaàu doøng $ cuoái doøng w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 28 Enter ñaàu doøng tieáp - ñaàu doøng treân 0(null) veà ñaàu doøng vaät lyù (doøng baét ñaàu baèng daáu caùch hoaëc tab) - theo maøn hình: H veà ñaàu maøn hình (Home) M veà giöõa maøn hình (Middle) L veà cuoái maøn hình (Last) - theo töø (word): w W veà ñaàu töø tieáp b B ñaàu töø hieän taïi e E cuoái töø hieän taïi - theo caâu (sentence): ( veà ñaàu caâu ) veà cuoái caâu daáu keát thuùc moät caâu laø caùc daáu ., ! hoaëc ? - theo ñoaïn vaên (paragraph): { veà ñaàu ñoaïn vaên } cuoái ñoaïn vaên ñoaïn vaên keát thuùc baèng moät doøng troáng. - theo cöûa soå (window): z doøng hieän taïi ôû giöõa cöûa soå. z doøng hieän taïi ôû ñaàu cöûa soå. z- doøng hieän taïi ôû cuoái cöûa soå. ^D xuoáng nöûa cöûa soå ^U leân nöûa cöûa soå ^F xuoáng moät cöûa soå (-2 doøng) ^B leân moät cöûa soå (2 doøng) Ghi chuù: ^laø kyù hieäu cuûa phím CTRL - theo soá thöù töï doøng: Ñeå hieån thò soá thöù töï cuûa caùc doøng soaïn thaûo: :set nu Xoaù boû hieån thò treân: :set nonu :n hoaëc nG chuyeån cursor ñeán doøng thöù n :$ hoaëc G ñeán doøng cuoái vaên baûn :se list hieån thò caùc kyù töï aån (hidden) w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 29 - tìm daõy kyù töï: / kyù hieäu chieàu tìm xuoâi. ? kyù hieäu chieàu tìm ngöôïc. /string chuyeån cursor tôùi doøng chöùa daõy kyù töï theo chieàu xuoâi. ?string chuyeån cursor tôùi doøng chöùa daõy kyù töï theo chieàu ngöôïc. // laëp laïi tìm xuoâi. ?? laëp laïi tìm ngöôïc. 6.2.3 Xoùa vaên baûn: - xoùa kyù töï: x xoùa kyù töï taïi vò trí cursor 3x xoùa 3 kyù töï X xoùa kyù töï tröôùc vò trí cursor - xoùa doøng vaên baûn: dd hoaëc :d xoùa doøng chöùa cursor 3dd xoùa 3 doøng baét ñaàu töø doøng chöùa cursor d$ hoaëc D xoùa ñeán cuoái doøng dw xoaù töø chöùa cursor 3dw hoaëc d3w xoaù 3 töø d/string xoùa khi heát daõy string 6.2.4 Thay theá vaên baûn: - thay theá kyù töï: rc thay theá kyù töï hieän taïi baèng kyù töï c (???) R thay theá soá kyù töï baèng daõy “text” - thay theá doøng: S xoùa doøng hieän taïi vaø thay noù baèng “text” - thay theá töø: cw thay moät töø baèng “text”. Töø ñöôïc thay theá tính töø cursor ñeán kyù töï $. c2w thay 2 töø. C hoaëc c$ thay theá cuoái doøng c/string thay theá ñeán heát ”string” 6.2.5 Xoùa hoaëc laëp laïi leänh: - Xoaù leänh u xoùa taùc duïng cuûa leänh cuoái cuøng w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 30 U xoaù taát caû thay ñoåi ñaõ laøm treân doøng hieän taïi. - Laëp laïi leänh: . laëp laïi leänh söûa ñoåi vaên baûn cuoái cuøng (???) 6.2.6 Xem traïng thaùi vaên baûn ñang soaïn thaûo: ^G Hieån thò teân, traïng thaùi, soá doøng, vò trí ,cursor vaø phaàn traêm vaên baûn tính töø vò trí cursor ñeán cuoái vaên baûn. 6.2.7 Sao cheùp, chuyeån vaên baûn: - di chuyeån vaên baûn: Moãi laàn thöïc hieän moät leänh xoùa (x hoaëc d), vi ñeàu ghi laïi phaàn vaên baûn bò xoùa vaøo vuøng ñeäm rieâng cho ñeán laàn xoùa sau. Leänh p vaø P cho pheùp laáy laïi vaên baûn töø vuøng ñeäm ñoù. Tröôùc khi thöïc hieän leänh naøy, cursor phaûi ñöôïc ñaët vaøo vò trí cuøng kieåu vôùi phaàn vaên baûn coù trong vuøng ñeäm: -kyù töï -töø -doøng -cuoái doøng (end of line) p sao phaàn vaên baûn xoaù laàn cuoái cuøng vaøo sau ñoái töôïng trong cuøng kieåu. P sao phaàn vaên baûn xoaù laàn cuoái vaøo tröôùc ñoái töôïng cuøng kieåu. Moät caùch khaùc ñeå chuyeån doøng: :5,10m20 chuyeån caùc doøng töø 5 ñeán 10 tôùi sau doøng 20 - Sao cheùp vaên baûn: Leänh y(yank) cho pheùp sao phaàn vaên baûn ta muoán vaøo vuøng ñeäm. Muoán sao phaàn vaên baûn töø vuøng ñeäm ra, ta phaûi chuyeån cursor vaøo nôi caàn sao, sau ñoù duøng p hoaëc P. Y3w sao 3 töø vaøo vuøng ñeäm Y hoaëc yy sao doøng hieän taïi vaøo vuøng ñeäm. 5yy sao 5 doøng vaøo vuøng ñeäm Moät caùch khaùc ñeå sao cheùp doøng: :5,8t25 sao caùc doøng töø 5 ñeán 8 tôùi sau doøng 25 6.3 Duøng vi vôùi danh saùch caùc leänh ñaõ chaïy cuûa Shell (history of commands) Leänh fc (fix command) cho pheùp ta soaïn thaûo baèng vi vaø chaïy laïi caùc leänh ñaõ chaïy cuûa Shell, caùch duøng nhö sau: - soaïn thaûo vaø cho chaïy leänh cuoái cuøng: $fc - soaïn thaûo moät nhoùm leänh vaø cho chaïy: $fc m n - xem danh saùch 16 leänh cuoái cuøng: $fc -l hoaëc history w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 31 $fc -lr (danh saùch theo thöù töï ngöôïc laïi) - taïo moät file chöùa moät soá leänh ñaõ chaïy (cuûa history): $fc -nl n1 n2 > cmd cmd laø moät file chöùa caùc leänh cuûa history töø leänh n1 ñeán leänh n2 Baøi taäp: 1. Sao file vaên baûn coù saün vaøo thö muïc tieáp nhaän: cp /users/EXERCISES/editsave edition 2. Duøng chöông trình vi ñeå soaïn thaûo file treân: vi edition 3. Chuyeån cursor xuoáng cuoái doøng vaên baûn, xong laïi chuyeån veà ñaàu vaên baûn. Duøng: CTRL – D vaø CTRL – U hoaëc CTRL – F vaø CTRL – B hoaëc G vaø :1 4. Haõy söûa: - Teân “Dupont Jean” ñaàu tieân thaønh “Jean-Jacques” - Teân “Dupont Pierre” ñaàu tieân thaønh “Jean-Pierre” Laøm nhö sau: /Dupont Jean/ chuyeån cursor tôùi kyù töï “n” cuûa “Jean” a-Jacques /Dupont Pierre/ chuyeån cursor tôùi kyù töï “p” cuûa “Pierre” iJean- 5. Haõy vaøo teân mình vaøo doøng tröôùc doøng “Dupont” ñaàu tieân: :1 /Dupont/ Oname 6. Haõy vaøo bieät hieäu hoaëc moät teân baát kyø vaøo sau doøng “Dupont” cuoái cuøng: G ?Dupont? oname 7. Ghi file vaø ra khoûi vi: :wq hoaëc ZZ 8. Vaøo laïi vi vaø soaïn thaûo file edition. Ñaët vaø boû cheá ñoä hieån thò soá doøng. vi edition :set nu :set nonu 9. Haõy söûa “Dupont Jean” thaønh “Martin Jean”: w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 32 Chuyeån cursor tôùi kyù töï “D” cuûa “Dupont”: hoaëc: XxxxxxiMartin (duøng x ñeå xoùa kyù töï) (neáu laøm sai hoaëc muoán laøm laïi goõ U ñeå xoaù boû toaøn boä thay ñoåi treân doøng) hoaëc: dwiMartin (duøng dw ñeå xoùa töø) hoaëc: cwMartin (duøng cw ñeå thay töø) 10. Xoaù doøng chöùa “Coteau Jean”: /Couteau Jean/ dd 11. Thay taát caû “Dupont” thaønh “Durand” /Dupont/ cwDurand // . 12. Chuyeån caùc doøng chöùa “Durand” xuoáng cuoái vaên baûn: Chuyeån cursor tôùi doøng “Durand” ñaàu tieân: 4dd (xoùa 4 doøng vaø ñöa vaøo vuøng ñeäm) G (chuyeån ñeán cuoái vaên baûn) P (sao töø trong vuøng ñeäm) 13. Nhaân ñoâi doøng chöùa “Martin Jean” yy p 14. Hieän ta ñang trong vi, haõy gôûi thoâng baùo tôùi cho ngöôøi khaùc ñang trong phieân laøm vieäc: :!who :!mail userX message ^D 15. Ta ñang ôû taïi thö muïc tieáp nhaän, söûa ñoåi vaø chaïy laïi moät leänh: $cd $write userX message ^D $fc ->söûa X thaønh Y :wq $ w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 33 Baøi 7 Shell_script Noäi dung: giôùi thieäu shell, tieán trình (process) vaø caùc caùch thöùc thöïc hieän tieán trình. Shell coù theå ñoïc vaø thöïc hieän moät file goàm danh saùch caùc leänh caàn thöïc hieän. File ôû daïng naøy ñöôïc goïi laø shell_sript hoaëc procedure Shell_script ñöôïc thöïc hieän nhôø shell, vaø chính shell seõ phaùt sinh vaø quaûn lyù taát caû caùc tieán trình caàn thieát ñeå thöïc hieän coâng vieäc ñöôïc moâ taû trong shell_script 7.1 Quaûn lyù tieán trình: 7.1.1 Muïc ñích cuûa shell Shell laø chöông trình thoâng dòch leänh 7.1.2 Taïo tieán trình: Khaùi nieäm chung veà tieán trình: Tieán trình ñöôïc hieåu laø vieäc thöïc hieän moät coâng vieäc hay moät chöông trình trong moâi tröôøng cuï theå trong heä thoùng. Ta coù theå phaân bieät hai loaïi tieán trình: - Tieán trình heä thoáng: laø tieán trình khoâng gaén vôùi baát kyø moät terminal naøo, noù ñöôïc taïo ra vaøo thôøi ñieåm khôûi ñoäng heä thoáng hoaëc vaøo caùc thôøi ñieåm coá ñònh do ngöôøi duøng quaûn trò heä thoáng ñaët. Hieån thò $ Ñoïc leänh Taïo tieán trình Ñôïi tieán trình keát thuùc Hieån thò $ w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 34 - Tieán trình do ngöôøi söû duïng taïo ra. Caùc tieán trình ñöôïc toå chöùc theo daïng caây: Tieán trình cha tieán trình con (parent) (child) Ñoái vôùi ngöôøi söû duïng, tieán trình cha laø Shell ñöôïc taïo taïi thôøi ñieåm baét ñaàu phieân laøm vieäc. 7.1.3 Lieät keâ caùc tieán trình: Leänh ps cho pheùp lieät keâ danh saùch caùc tieán trình ñang dieãn ra: $ps -f UID PID PPID C STIME TTY TIME COMMAND user5 4582 1 0 11:04:45 tty23 0:01 -sh user5 4792 4582 36 11:10:04 tty23 0:04 ps -f trong ñoù: UID soá UID cuûa ngöôøi chuû tieán trình PID soá cuûa tieán trình (process identity) PPID soá cuûa tieán trình cha (parent process identity) C chæ soá söû duïng boä xöû lyù (processor utilization for scheduling). STIME thôøi ñieåm baét ñaàu tieán trình TTY terminal ñieàu khieån tieán trình TIME thôøi gian tích luyõ thöïc hieän tieán trình (cumulative time) COMMAND teân leänh sinh ra tieán trình Tieán trình soá 1 laø tieán trình init, trong ñoù coù chöùcc naêng giaùm saùt caùc terminal, laø tieán trình cha cuûa taát caû caùc tieán trình Shell khi login. Caùch thöïc hieän moät shell_script: $chmod +x proc $proc hoaëc $sh proc 7.2 Laäp caùch thöùc (setup) cho shell_script: Leänh set cho pheùp laäp caùch thöùc chaïy shell_script. set -x hieån thò doøng leänh sau khi trieån khai leänh set -v hieån thò doøng leänh tröôùc khi trieån khai set -e ra khoûi shell_script sau khi gaëp moät loãi set -t ra khoûi shell_script sau leänh tieáp set - xoaù taùc duïng cuûa x vaø v Vieäc laäp caùch thöùc chæ lieân quan tôùi shell_script ñang chaïy. Caùc tuyø choïn -x vaø –v coù theå ñöa vaøo doøng leänh goïi shell_script: $sh -v proc w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 35 $sh -x proc Thí duï: - duøng “-x”: $cat exam1 set -x echo “The current directory is :” pwd echo “List of files :“ echo file1 file2 file3 $exam1 + echo The current directory is : The current directory is: + pwd /users/user8 + echo List of files: List of files: + echo file1 file2 file3 file1 file2 file3 - duøng “-v”: $cat exam2 set -v echo “The current directory is :” pwd echo “List of files :“ echo file1 file2 file3 $exam2 echo The current directory is : The current directory is: pwd /users/user8 echo List of files: List of files: echo file1 file2 file3 file1 file2 file3 Coù theå duøng kyù töï ‘#’ ñeå vieát chuù thích cho doøng leänh trong shell_script, neáu chuù thích vieát ngay sau leänh treân cuøng moät doøng, ta phaûi cho ít nhaát moät daáu caùch (space) vaøo tröôùc kyù töï ‘#’. w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 36 7.2 Caùc loaïi Shell UNIX Coù 3 loaïi shell UNIX: csh cuûa Berkeley BSD sh cuûa AT&T, Bourne-shell ksh cuûa AT&T,Korn-shell Shell ksh duøng trong taøi lieäu naøy laø toaøn boä sh keát hôïp vôùi phaàn phaùt trieån cuûa csh. Shell csh coù cuù phaùp gioáng ngoân ngöõ C, nhöng caùc shell_script cuûa csh khoâng chaïy ñöôïc döôùi sh vaø ksh. Döôùi ñaây laø lieät keâ nhöõng khaùc nhau cô baûn khaùc: - csh vaø ksh coù nhaät kyù (history). - ksh coù trình soaïn thaûo doøng (line editor) - cuù phaùp voøng laëp csh: while end ksh, sh: while do done - chæ csh coù leänh goto - cô cheá thay theá bieán cuûa ksh laø hoaøn thieän nhaát - csh vaø ksh coù caùc pheùp tính soá hoïc. w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 37 Baøi 8: Ñoåi höôùng (Redirection) Noäi dung: caùc luoàng döõ lieäu vaøo/ra chuan vaø caùc thao taùc ñoåi höôùng chuùng. 8.1 Vaøo/ra chuaån: 8.1.1 Caùc file vaøo/ra chuaån: Khi cho moït file chaïy, Shell töï ñoäng môû 3 file vaøo/ra chuan: Vaøo chuaån (stdin) fd = 0 Ra chuaån (stdout) fd = 1 Loãi chuaån (stderror) fd = 2 Kyù hieäu fd laø moâ taû file (file descriptor). Thoâng thöôøng ñaàu vaøo chuaån laø baøn phím, ñaàu ra chuaån vaø loãi chuaån laø maøn hình. 8.1.2 Ñoåi höôùng ñaàu ra chuaån : Ta coù theå ñoåi höôùng caùc soá lieäu, thay vì ra maøn hình, vaøo moät file theo caùc caùch sau: $leänh > teân_file Neáu file chöa toàn taïi, noù seõ ñöôïc töï ñoäng taïo ra. Neáu ñaõ toàn taïi, noäi dung cuõ seõ bò xoùa. $leänh >> teân_file Vôùi caùch naøy, döõ lieäu seõ ñöôïc ghi theâm vaøo cuoái file. Thí duï: $ls /bin > file1 $ls /bin >> file1 8.1.3 Ñoåi höôùng ñaàu ra loãi chuaån: - Ñoåi höôùng vaøo moät file: $leänh 2 > file1 hoaëc: $leänh 2 >> file1 - Ñoåi höôùng vaøo file soá lieäu (vaøo ñaàu ra chuaån): $leänh > file1 2 > &1 - Ñoåi höôùng vaøo file khoâng: $leänh 2 > /dev/null 8.1.4 Ñoåi höôùng ñaàu vaøo chuaån: - Soá lieäu vaøo chuaån töø moät file: $leänh < file2 Thí duï: $mail user1 < file2 - Ñoåi höôùng caùc leänh töø ñaàu vaøo chuaån: Caùch ñoåi höôùng naøy cho pheùp ta ñöa caùc khai baùo cho moät leänh ttrong shell_script: $command << STRING soá lieäu vaø/hoaëc leänh w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 38 maø leänh naøy caàn ñoïc STRING $ Thí duï: duøng leänh cat taïo moät file: $cat > file1 <<OK aa bb OK $cat file1 aa bb $ 8.2 Chuyeån döõ lieäu giöõa caùc tieán trình: Hai doøng leänh sau ñaây: leänh1 > temp leänh2 < temp coù theå ñöôïc thay theá baèng moät doøng leänh nhö sau: leänh1 | leänh 2 Khi ñoù ñaàu ra chuaån cuûa leänh leänh1 seõ laø ñaàu vaøo chuaån cuûa leänh leänh2, vaø file trung gian temp khoâng caàn thieát nöõa. Kyù hieäu | goïi laø oáng (pipe). Thí duï: $ls -l | pg 8.3 Ñoåi höôùng keùp (double) ñaàu ra chuaån: Leänh tee cho pheùp ñoåi höôùng keùp ñaàu ra chuaån: vöøa höôùng döõ lieäu ñaàu ra veà höôùng khaùc, vöøa hieån thò ra maøn hình. $leänh | tee teân_file. stdout stdout teân_file leänh tee w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 39 Thí duï: $ps -ef | tee file_ps | grep $LOGNAME Coù theå duøng tee vôùi tuyø choïn –a (tee –a), khi ñoù döõ lieäu ñaàu ra seõ ñöôïc ghi tieáp vaøo cuoái file file_ps Baøi taäp: 1. Haõy vieát leänh coù teân WHO vôùi caùc chöùc naêng sau:: - tính vaø hieån thò soá ngöôøi söû duïng ñang trong phieân laøm vieäc. - hieån thò danh saùch vaø caùc thuoäc tính cuûa hoï. - xoùa file ñeäm (neáu coù duøng) ñöôïc taïo khi chaïy leänh WHO. Gôïi yù: duøng caùc leänh who, tee, wc. 2. Vieát leänh LLD lieät keâ caùc thö muïc con trong moät thö muïc. Gôïi yù: duøng caùc leänh ll vaø grep. w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 40 Baøi 9: Cô cheá thay theá cuûa Shell Noäi dung: caùch thao taùc vôùi caùc tham soá cuûa shell_script, caùc bieán trong Shell, caùc kyù töï ñaëc bieät ñöôïc thoâng dòch khi vieát trong caâu leänh shell. 9.1 Truyeàn tham soá: 9.1.1 Truyeàn tham soá cho moät Shell_script Moät Shell_script coù theå laøm vieäc vôùi caùc thoâng soá ñöôïc truyeàn qua doøng leänh. $proc par1 par2 par3 | | | | $0 $1 $2 $3 Trong Shell_script ñöôïc goïi (trong tröôøng hôïp naøy laø proc), caùc tham soá ñöôïc theå hieän baèng: $0 teân Shell_script $1 tham soá thöù nhaát $2 tham soá thöù hai $n tham soá thöù n $# soá caùc tham soá $* taát caû caùc tham soá $$ PID cuûa shell_script Thí duï: $cat param echo Name of shell_script: $0 echo First parameter : $1 echo Third parameter : $3 echo Number of parameters: $# echo List of all the param: $* $ $param London Paris New-York Brussels Name of shell_script: param First parameter: London Third parameter: New-York Number of parameters: 4 List of all the param: London Paris New-York Brussels 9.1.2 Dòch chuyeån caùc tham soá: w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 41 Vôùi caùch theå hieän tham soá cuûa shell_script baèng $n, ta chæ coù theå laøm vieäc ñöôïc vôùi töø 1 ñeán 9 tham soá. Baèng caùch dòch chuyeån, ta coù theå laøm vieäc vôùi soá tham soá nhieàu hôn 9. Vieäc dòch chuyeån ñöôïc thöïc hieän bôûi leänh: shift Sau khi shift: - $0 vaãn giöõ nguyeân - $1 maát ñi - $2 thaønh $1 - $3 thaønh $2 - $n thaønh $n-1 - $*, S# ñöôïc caäp nhaät laïi. Coù theå dòch chuyeån n vò trí baèng caùch: shift n Thí duï: $cat shifting echo First parameter: $1 echo Nineth parameter: $9 echo Number of parameters: $# echo “SHIFTING” shift echo First parameter: $1 echo Nineth parameter: $9 echo Number of parameters: $# $ $shifting A B C D E F G H I J K First parameter: A Nineth parameter: I Number of parameters: 11 “SHIFTING” shift First parameter: B Nineth parameter: J Number of parameters: 10 $ 9.2 Caùc bieán Shell 9.2.1 Caùc kieåu bieán: Ksh coù theå xöû lyù 4 kieåu bieán sau: - soá nguyeân - xaâu kyù töï w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 42 - baûng caùc xaâu kyù töï - baûng caùc soá nguyeân Thí duï: - bieán xaâu kyù töï: $string = “character string” $print $string character string Ghi chuù: o noäi dung bieán ñöôïc bieåu dieãn baèng teân bieán vaø daáu $ ñaèng tröôùc. o tröôùc vaø sau daáu ‘””’ khoâng coù kyù töï troáng. - bieán soá nguyeân: $integer var = 2 $itypeset -i var1 = 23 $print $var $var1 2 23 - baûng caùc xaâu kyù töï: $string[1] = “more characters” $print ${string[1]} more characters $print ${string[0]} character string Ghi chuù: khi khai baùo moät bieán, ta cuõng coù theå coi bieán ñoù laø bieán ñaàu tieân cuûa moät baûng cuøng teân vôùi noù. - baûng caùc soá nguyeân: $integer tabint $typeset -i i $tabint[0] = 13 $tabint[13] = “toto” ksh:toto:bad member $i=1 $tabint[i] = 45 $print tabint[1] 45 Chæ soá (index) cuûa baûng laø moät soá nguyeân töø 0 ñeán 511. - xoùa moät bieán: $unset i 9.2.2 Caùch thay theá caùc bieán shell: w w w .c hi as et ho ng tin .o rg Copyright(c) by Galaxy CD – 43 $print ${var-val1} hieån thò giaù trò cuûa var, neáu bieán var chöa ñònh nghóa thì hieån thò val1 thay cho giaù trò cuûa var $print ${var=val2} neáu var chöa ñònh nghóa, taïo bieán var vôùi giaù trò laø val2 $print ${var:-val3} gioáng tröôøng hôïp ñaàu $print ${var:=val4} gioáng tröôøng hôïp thöù hai nhöng var coù theå chöa ñ

Các file đính kèm theo tài liệu này:

  • pdfGiáo trình Unix(Secured).pdf
Tài liệu liên quan