You are on page 1of 65

Copyright(c) by Galaxy CD http://www.galaxycd.

com Muc luc: PHAN 1:

UNIX C S

Bai 1. Khi ong UNIX 1.1 Bat au phien lam viec 1.2 Ket thuc phien lam viec 1.3 Cach dung lenh cua UNIX Bai 2. Lam viec vi file. 2.1 To chc file 2.2 Di chuyen gia cac th muc 2.3 Cac thao tac c s vi cac th muc 2.4 Cac thao tac c s vi file thng Bai 3. Bao ve cac file cua ngi s dung 3.1 Mo ta ngi s dung 3.2 Mo ta nhom ngi s dung 3.3 Bao ve cac file va cac th muc Bai 4. Sao, chuyen, lien ket va tm kiem file 4.1 Sao chep file 4.2 Chuyen va oi ten file 4.3 Tao lien ket vi file 4.4 Tm kiem file Bai 5. Thong tin gia nhng ngi s dung 5.1 Thong tin bang lenh mail 5.2 Thong tin bang lenh write Bai 6. S dung chng trnh soan thao vi 6.1 Khi ong vi 6.2 Soan thao van ban Bai 7. Shell script 7.1 Quan ly tien trnh 7.2 Lap cach thc cho shell script 7.3 Cac shell UNIX Bai 8. oi hng (redirection) 8.1 Vao/ra chuan 8.2 Chuyen oi d lieu gia cac tien trnh

Copyright(c) by Galaxy CD http://www.galaxycd.com 8.3 oi hng kep au ra chuan

Bai 9. C che thay the cua Shell 9.1 Truyen tham so 9.2 Cac bien Shell 9.3 Cac k t ac biet 9.4 Lay ket qua cua mot lenh 9.5 Cac qui tac thay the cua Shell Bai 10. Moi trng cua Shell 10.1 Moi trng 10.2 Cac bien nh ngha trc 10.3 Cac bien chung Bai 11. Lap trnh mc c s di UNIX 11.1 Cac phep th trong Shell 11.2 Lap trnh mot cau truc co ieu kien 11.3 Lap trnh mot chu trnh Bai 12. Tn hieu va ong bo 12.1 Quan ly cac tn hieu 12.2 Quan ly cac tien trnh 12.3 e qui PHAN 2 LAP TRNH C DI UNIX

Bai 1. Gii thieu chung 1.1 Cac li goi he thong 1.2 Chu thc va chu thc quyen cua tien trnh 1.3 nh ngha cac tham bien chng trnh 1.4 Mot so nh ngha khac Bai 2. Quan ly tien trnh 2.1 Nhan biet tien trnh 2.2 Nhan biet chu tien trnh 2.3 Thay oi chu va nhom chu 2.4 Tao mot tien trnh 2.5 Cac ham goi mot tien trnh thay the 2.6 ong bo tien trnh 2.7 Mc u tien cua tien trnh 2.8 Nhom cac tien trnh

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 3. Quan ly file 3.1 M mot file 3.2 Tao mot file 3.3 ong file 3.4 at mat na cac quyen tham nhap file 3.5 oc file 3.6 Ghi file 3.7 Di chuyen con tro file 3.8 Cau truc mot inode 3.9 Tao mot inode 3.10 Thay oi quyen tham nhap 3.11 Thay oi chu s hu hoac nhom 3.12 Thay oi th muc lam viec

Copyright(c) by Galaxy CD http://www.galaxycd.com

PHAN 1: UNIX C S
Bai 1. Khi ong UNIX
Noi dung: Lam quen vi he ieu hanh UNIX. Bat au, ket thuc phien lam viec, chay mot so lenh ac trng. 1.1 Bat au phien lam viec: Bat cong tac nguon cua terminal (trong he thong cua NLC la Xterm sau khi dung Exceed ket noi vi UNIX server), khoang mot giay sau tren man hnh hien dong thong bao: Login: Hay nhap vao ten (user name) khi ket thuc bang phm Enter. Neu ngi s dung co dung mat khau (passwor), tren man hnh se hien dong: Password: Hay vao mat khau cua mnh va ket thuc bang phm Enter. Neu ten (va mat khau neu co) c vao ung, terminal o se c noi vi may chu va tren man hnh se hien ky t: $ o la dau nhac cua Shell. Mat khau am bao an toan cho moi phien lam viec. Ta co the thay oi mat khau bang lenh passwd. Mat khau phai dai t nhat 6 ky t, t nhat phai co 2 ky t alphabet, phai khac vi ten (user name) t nhat 3 ky t, dai toi a 13 ky t. 1.2 Ket thuc phien lam viec: An CTRL + D (gi phm CTRL va go phm D) hoac go lenh $exit e ket thuc phien lam viec. 1.4 Cach dung lenh cua UNIX: - Cu phap c ban e chay mot lenh cua UNIX nh sau: $tenlenh [-tuy chon][oi so 1][oi so n] Th du: wc la lenh em va hien th so dong, t va ky t cua mot file. Ta co the chay lenh wc nh sau $wc /etc/passwd 32 37 1139 etc/passwd $wc 32 -l /etc/passwd etc/passwd

Copyright(c) by Galaxy CD http://www.galaxycd.com

$wc 32 15 47

-ld /etc/passwd /etc/group 1139 etc/passwd 337 etc/group 1476 total

- Cac thong bao loi khi goi lenh: Neu lenh khong ton tai hoac khong tm thay: $data data not found Neu cu phap cua lenh b go sai: $wc -m /etc/group usage: wc [-clw][name] Bai tap: Chu y: Ky hieu <CR> tng trng cho viec go phm Enter. 1. Hay bat au phien lam viec vi ten (username) cua ban. 2. i khi dau nhac cua he thong xuat hien (dau $), go vao date<CR> 3. Gan mat khau cho ten: passwd<CR> 4. Liet ke ten nhng ngi ang s dung he who<CR> 5. Xem ai la ngi ang lam viec tai terminal: who am I<CR> whoami<CR> 6. Xem ten terminal ma ta ang lam viec tren o: tty<CR> 7. Hien th cac thong bao len man hnh: echo Xin chao <CR> echo Chao <CR> echo Dau nhac ket thuc boi $ xuat hien sau Chao <CR> echo Hom nay la ngay:;date<CR> echo Hai lenh tren 1 dong cach nhau boi dau ; <CR> 8. Dung lenh cal (lch): cal 01 1900<CR> cal 01<CR> cal 1900<CR> cal 1900 | more<CR> 9. Mot vai lenh khac: logname<CR>

Copyright(c) by Galaxy CD http://www.galaxycd.com uname<CR> who | wc<CR> Ket thuc phien lam viec: Ctrl D (gi phm Ctrl va go D) hoac exit<CR>

10.

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 2. Lam viec vi file


Noi dung: Cac khai niem c ban ve file cua UNIX, to chc cua cac file tren a, cac thao tac vi file. 2.1 To chc file: 2.1.1 Cac kieu file UNIX co 3 kieu file: -File bnh thng (ordinary file): la mot tap hp thong tin (ASCII text hoac binary). -File th muc (directory file): cha danh sach cac tenco the truy nhap ti th du nh cac file bnh thng, cac file ac biet hoac cac th muc con. -File ac biet (special file): la cac file lien quan ti cac thiet b ngoai vi cng va/hoac c che truyen tin. Th du: Ban phm la mot file au vao(input file). Man hnh la mot file au ra (output file). May in la mot file au ra. 2.1.2 To chc cua cac file Cac file cua UNIX c to chc theo dang cay (tree). Th muc goc (root) cua cay c bieu dien bang ky t /. Cau truc cay c s cua he UNIX c bo tr nh sau: Ky hieu file bnh thng Ky hieu file th muc Ky hieu file ac biet /

unix

bin

etc

dev

users

usr

user1

user2

Hnh 1: Cau truc cay c s cua UNIX 2.2 Di chuyen gia cac th muc: e di chuyen gia cac th muc trong cay cua UNIX, ta dung 2 lenh sau ay:

Copyright(c) by Galaxy CD http://www.galaxycd.com cd chuyen en th muc can en (change directory) pwd hien th ten th muc ang lam viec (print working directory) Tai thi iem bat au phien lam viec, ta trong th muc tiep nhan (HOME directory). Muon xem ten th muc tiep nhan nay, ta dung lenh pwd. Th du: user1 co th muc tiep nhan la /users/user1 $pwd /users/user1 e di chuyen gia cac th muc ta dung lenh cd vi ten th muc can chuyen en. $cd /usr/bin $pwd /usr/bin $cd .. $pwd /usr e ve th muc tiep nhan khi ta ang bat ky au, go: $cd $pwd /users/user1 2.3 Cac thao tac c s vi th muc: 2.3.1 Xem noi dung th muc: - Xem noi dung th muc hien ang lam viec: $ls - Xem noi dung th muc khac, chang han th muc /bin: $ls /bin - Xem them thong tin cua cac file trong th muc: $ls -l hoac $ll - Xem ten cac file trong th muc theo cot: $lc Khi dung lenh ls l ta co the phan biet cac kieu file bang cach xem ky t au cua dong hien th, neu la: d : file th muc. : file bnh thng c hoac b : file ac biet 2.3.2 Tao th muc: e tao mot th muc mi, ta dung lenh mkdir (make directory): $mkdir index $cd index

Copyright(c) by Galaxy CD http://www.galaxycd.com $ls -a . .. Lenh mkdir tao mot th muc vi 2 au vao (entry) - ban than th muc co ten a cho. - th muc . lien he vi th muc c tao tren - th muc . . lien he v th muc cha. 2.3.3 Xoa th muc: e xoa mot th muc ta dung lenh rmdir (remove directory): $rmdir index Neu muon xoa th muc khong rong, phai dung lenh rm vi tuy chon r $rm -ri thumuc 2.4 Cac thao tac c s vi file thng: 2.4.1 Nhan biet mot file thng: Lenh file phan tch not dung cua mot file va hien th tnh chat cua thong tin cha trong file: $file /etc/passwd /etc/passwd: ascii text $file /bin/ls /bin/ls: 680x0 executable 32 bits page aligned striped 2.4.2 Xem noi dung mot file thng ASCII: Co the dung mot trong cac lenh sau: cat dung e xem noi dung cac file nho. pg hoac more xem noi dung cac file ln theo trang. $cat ten file $pg ten file $more ten file 2.4.3 Tao mot file thng ASCII Tai Shell cua UNIX ta co the de dang tao mot file thng ASCII text bang cach dung lenh cat $cat >text_file abcdef 123456 <Ctrl + D> $

Copyright(c) by Galaxy CD http://www.galaxycd.com Ky t > oi hng, thay v en au ra chuan (standard output) en file c quy nh ngay sau >. ay cac ky t go vao c ghi vao file text_file. Lenh cat, neu khong co oi so (argument), se coi ban phm la au vao chuan. Go <Ctrl + D> tai dong trong cuoi cung ket thuc viec vao so lieu. (1) > FILE stdout

< Stdin KEYBOARD

cat

CONSOLE 2> Hnh 2 : oi hng au vao/ra chuan

stderr

Cach viet ten file khi tao file: - o dai + ten file cua UNIX sys V dai toi a 14 ky t + ten file cua BERKELEY, bat au t version BSD 4.2. co the dai en 256 ky t. - khong co s han che dung ky t nao khi viet ten file, song ta can chu y vai iem sau: + khong dung cac ky t ac biet (tr dau cham . hoac dau gach di _) v phan ln cac ky t o c dung trong cu phap cua lenh Shell. + file co ten bat au bang dau cham . la file an (hidden). + ky t viet thng khac vi viet hoa. Viet ten file bang cach dung cac metacharacter (? Va *) - ky t * thay the mot xau ky t - ky t ? thay the mot ky t Th du: $ll /bin/c* $ll /bin/c? 2.4.4 Xoa mot file thng: Lenh : rm Co the dung lenh rm vi cac tuy chon sau: -i co hoi ap e khang nh -f khong co hoi ap. Tuy chon nay rat nguy hiem, ch nhng ngi s dung co kinh nghiem va can than mi nen dung. $rm $rm text_file -i text_file

10

Copyright(c) by Galaxy CD http://www.galaxycd.com Bai tap: 1. Xem ten th muc ang lam viec: pwd<CR> 2. Xem noi dung cua th muc ang lam viec: ls l<CR> 3. Tao file van ban tintin: cat > tintin<CR> blabla<CR> BLABLA<CR> end<CR> CTRL + D (gi phm Ctrl va go phm D) 4. Xem noi dung file tintin: cat tintin<CR> 5. Xem noi dung cac th muc /bin /usr/bin /dev ll /bin<CR> hoac ls -C /bin hoac ll /bin | pg 6. Tao 2 th muc d1 va d2 mkdir d1 d2<CR> 7. Chuyen th muc lam viec en d1 8. Tao mot file trong th muc d1 9. Tr ve th muc tiep nhan (HOME directory) cd<CR> 10. Xem noi dung th muc ang lam viec: ls -l hoac ll ls ll -R (xem noi dung ca cac th muc con) lc 11. Xoa th muc d1: rm d1/* rmdir d1 Hoac rm -ri d1

11

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 3. Bao ve cac file cua ngi s dung:


Noi dung : mo ta c che bao ve file cua UNIX : ngi s dung, nhom ngi s dung, cac quyen tham nhap file 3.1 Mo ta ngi s dung: 3.1.1 Khai niem : Mot ngi s dung c mo ta bang cac thong tin sau: - ten - [mat khau (neu co] - so nhan dang (uid : user identify number) - so cua nhom (gid : group identify number) - [chu thch] - th muc tiep nhan (HOME directory) - [ten chng trnh cho chay luc bat au ten lam viec] Cac thong tin tren c cha trong file /etc/passwd 3.1.2 Lenh defuser: Lenh nay trong danh muc /etc, no cho phep: - hien th danh sach nhng ngi s dung. - them ngi s dung mi (ch nhng ngi quan tr he thong co quyen) $cat /etc/passwd | pg root : RKgSspHwm.PB.:0:3:0000-Admin000,,,:/: date::18:1::/:/bin/date tty::19:1::/:/bin/tty user1::3000:300::/users/user1: user2::3001:300::/users/user2: $/etc/defuser | pg USER root daemon bin sys adm date tty sync securadm lp user1

UID 0 1 2 3 4 18 19 20 11 71 3000

GID 3 12 2 3 4 1 1 1 11 2 300

HOMEDIR / / /bin /usr /usr/adm / / / /etc/secure/bin /usr/spool/lp /users/user1

SHELL

/bin/date /bin/tty /bin/sync

/bin/ksh

12

Copyright(c) by Galaxy CD http://www.galaxycd.com user2 3001 300 /users/user2 /bin/ksh

3.2 Mo ta nhom ngi s dung 3.2.1 Khai niem : Mot nhom ngi s dung la tap hp cua mot so ngi s dung co the dung chung cac file cua nhau. Mot nhom ngi s dung c mo ta bang cac thong tin sau: - ten cua nhom - [mat khau] - so cua nhom (gid : group identify number) - [danh sach nhng ngi khach (guest)] Cac thong tin tren c cha trong file /etc/group 3.2.2 Lenh defgrp: Lenh nay trong th muc /etc, no cho phep: - hien th danh sach cac nhom ngi s dung. - them nhom mi (ch ngi quan tr he thong mi co quyen). $cat /etc/group public :: 100 : invite animator :: 200 : stagiaires :: 300 : $/etc/defgrp GRP root other

GID 0 1

bin

sys

adm

uucp

USERS root date sync shut root bin daemon lp root bin sys adm root adm daemon uucp daemon

13

Copyright(c) by Galaxy CD http://www.galaxycd.com nuucp root

mail

3.3 Bao ve cac file va cac th muc 3.3.1 Cac quyen tham nhap file: Khi file c tao lap, cac thong tin sau ay ong thi c ghi lai: - uid cua ngi tao file - gid cua ngi tao file - cac quyen tham nhap file File c bao ve bi mot tap hpc cac bit nh ngha quyen tham nhap: r w x r w x r w x suid sgid owner group other Trong o: r quyen oc w quyen ghi x quyen chay (executing) suid set user-id sgid set group-id oi vi th muc: r quyen oc noi dung th muc w quyen tao va xoa file trong th muc x quyen qua lai (crossing) th muc Ghi chu: cac quyen vi th muc ch co hieu lc tai mot mc nhat nh, th muc con co the c bao ve trong khi th muc cha th khong. 3.3.2 Lenh ls -l Lenh nay liet ke danh sach cac file va cac thuoc tnh cua chung trong mot th muc, qua o ta co the phat hien loai file, cach bao ve, ngi s hu, va kch thc cua chung Th du: Cac file thng (ordinary files): $ls -l /bin -rwxrwxr-x 1 bin bin 16336 Mar 8 1988 cat -rwxrwxr-x 3 root bin 16124 Mar 8 1988 cp -rwxrwxr-x 1 bin bin 18760 Mar 8 1988 cat -rwxrwxr-x 1 bin bin 13320 Mar 8 1988 echo -rwxrwxr-x 2 bin bin 33896 Mar 8 1988 ed -rwxrwxr-x 1 bin bin 28928 Mar 8 1988 file -rwxrwxr-x 3 root bin 16124 Mar 8 1988 ln

14

Copyright(c) by Galaxy CD http://www.galaxycd.com -rwxrwxr-x 8 bin bin 60152 Mar 8 1988 ls -rwxr-sr-x 1 bin mail 63264 April 2 1988 mail -rwxrwxr-x 1 bin bin 15276 Mar 8 1988 mesg -rwxr-xr-x 1 root bin 13180 Mar 8 1988 mkdir Trong o: Cot 1 : loai file va quyen tham nhap (-rwxrwxr-x, rwxr-xr-x) Dau tr - au co ngha file la file thng (khong phai th muc). Dau tr trong day bit co ngha la khong co quyen tng ng bit o. e tiet kiem cho, ngi ta at bit s vao cung mot ni vi bit x va ky hieu: s neu x ton tai S neu X khong ton tai. (bit s : set uid hoac set gid khi chay file) Cot 2 : so lien ket (link number) Cot 3 : ten ngi s hu file (owner) Cot 4 : ten nhom s hu file (group) Cot 5 : kch thc file. Cot 6,7,8 : ngay sa oi gan nhat Cot 9 : ten file. Cac file ac biet (Special files): $ll /dev crw------1 lp bin 8.97 May 6 1988 lp1 crw-rw-rw2 root sys 3,2 Apr 3 09:08 null brw-r----3 root sys 0,96 Apr 3 08:54 pd300 . . crw-rw-rw4 root sys 4,012 May 6 1988 rflop . . crw--w--w2 root other 1,17 Mar 2 07:57 tty11 Trong o: Cot 1: Ky t au tien la c hoac b co ngha la file c oc hoac ghi theo tng ky t (c) hoac ghi theo tng khoi (b). Cot 5: Bieu dien majo va minor cua thiet b (major: loai thiet b, minor: a ch cua thiet b) Cac file th muc (directory files): $ll /users drwxr-xr-x 2 user1 stagiair

240

Mar

31

10:16 user1

15

Copyright(c) by Galaxy CD http://www.galaxycd.com drwxr-xr-x 2 user2 stagiair 32 Mar 31 11:16 user1 drwxr-xr-x 2 user3 stagiair 24 Mar 31 10:16 user1 drwxr-xr-x 2 user4 stagiair 32 Mar 31 11:16 user1 trong o: Cot 1: Ky t au tien d co ngha la file th muc. Cot 2: So cac th muc con 3.3.3 Thay oi quyen tham nhap file: Lenh chmod cho phep thay oi quyen tham nhap cac file va th muc. Co the chay lenh theo 2 cach: - cho thong so tuyet oi: chmod mode ten_file trong o thong so mode la mot so c so 8 (octal) r w x r - x r - 1 1 1 1 0 1 1 0 0 7 5 4 $chmod 754 ten_file - dung cac ky hieu tng trng: chmod who [operation] [right] filename trong o: who : u co ngha user g group o other a all operation: + them quyen bt quyen = gan gia tr khac right: r reading w writing x execution s at suid hoac guid Th du: $chmod g-w, o = r toto 3.3.4 at quyen tham nhap ngam nh: Cac quyen tham nhap c gan bang mat na quyen tham nhap cua tng ngi s dung. Lenh umask cho phep ta at mat na nay. Cu phap cua lenh nh sau: umask nnn trong o: nnn la so bu 7 cua gia tr cac quyen tham nhap. Th du: $umask 177

16

Copyright(c) by Galaxy CD http://www.galaxycd.com $> titi $ll titi -rw------1 user1 other 0 $umask 333 $>toto $ll toto -r--r--r-1 user1 other 0 3.3.5 Thay oi ngi hoac nhom s hu file: Lenh chown cho phep thay oi ngi s hu. Lenh chgrp cho phep thay oi nhom s hu. $echo Hello >file1 $chmod 700 file1 $ls -l file1 -rwx-----1 user1 stagiair $cat file1 Hello $chgrp animator file1 $ls -l file1 -rwx-----1 user1 animator $chown user2 file1 $ls -l file1 -rwx-----1 user2 animator

Mar

11

10:11 titi

Mar

11

20:11 toto

Apr

14:06 file1

Apr

14:06 file1

Apr

14:06 file1

$cat file1 cat: cannot open file1 Bai tap: 1. Hay tao chng trnh sau trong th muc tiep nhan: - chng trnh hello: $cat > hello print Hello print How are you ? ^D - chng trnh reply: $cat > reply print Hello print Fine. And you ? ^D 2. Xem quyen tham nhap vao cac file tren: ll -R 3. Chay 2 chng trnh tren.

17

Copyright(c) by Galaxy CD http://www.galaxycd.com at quyen chay c (executable) cho 2 files tren. Chay lai 2 chng trnh tren. $hello $chmod +x hello $hello 4. Bo cac quyen tham nhap ti hello va reply cua nhng ngi cung nhom (group) va cua nhng ngi khac (other) chmod go = ten file Co the dung lenh chmod theo cach khac c khong ? Hay th vi ca cac file khac (g-rwx, o-rwx, 700 ) 5. Thay oi quyen tham nhap sao cho nhng ngi cung nhom co kha nang oc va chay cac file hello va reply 6. Hay th thay oi ngi hoac nhom s hu cua mot file: chown userY file Khi o file se thuoc s hu cua ngi khac. Co the xoa c khong ? 7. Hay lam theo hng dan sau: cat > rm echo Hello ^D e tao file rm, sau o sa quyen tham nhap e file co the chay c: chmod +x rm th chay file rm e xoa mot file nao o ang ton tai: rm file ieu g se xay ra? KHONG BAO GI C AT TEN FILE TRUNG VI TEN LENH HE THONG. (CHU Y: test cung la mot lenh cua he thong)

18

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 4: Sao chep, chuyen, lien ket va tm kiem file.


Noi dung: cac thao tac, cac lenh thng dung vi file 4.1 Sao chep file Lenh cp (copy) cho phep ta sao chep mot hoac nhieu file: - sao chep mot file: $cp file_nguon file_ch - sao chep nhieu file vao mot th muc: $cp file1 file2 th_muc - sao tat ca cac file vao mot th muc: $cp * th_muc Th du: $pwd /users/user2 $ls -l total 2 drwxrwxr-x drwxrwxr-x $cd source

2 2

user2 stagiair user2 stagiair

32 96

Apr Apr

5 5

16:31 copie 16:31 source

$ls -l total 3 -rw-rw-r-- 1 -rw-rw-r-- 1 -rw-rw-r-- 1 $ls total $cp -l 0

user2 stagiair user2 stagiair user2 stagiair ../copie

16 17 18

Apr Apr Apr

5 5 5

16:25 original1 16:26 original2 16:27 original3

original1 ../copie

../copie/original1.copie

$ls -l total 1 -rw-rw-r-- 1 $cp *

user2 stagiair 16 ../copie

Apr

16:25 original1.copie

19

Copyright(c) by Galaxy CD http://www.galaxycd.com $cd ../copie

$ls -l total 4 -rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--

1 1 1 1

user2 user2 user2 user2

stagiair stagiair stagiair stagiair

16 16 17 18

Apr Apr Apr Apr

5 5 5 5

16:25 16:25 16:26 16:27

original1 original1.copie original2 original3

4.2 Chuyen va oi ten file: Lenh mv cho phep chuyen va oi ten file: - chuyen mot file: $mv file_nguon file_ch - chuyen nhieu file: $mv file1 file2 th_muc $mv * th_muc - chuyen th muc: $mv th_muc1 th_muc2 (cac th muc phai co cung th muc con) Th du: $pwd /users/user2/source $ls -l total 3 -rw-rw-r-- 1 -rw-rw-r-- 1 -rw-rw-r-- 1

user2 stagiair user2 stagiair user2 stagiair

16 17 18

Apr Apr Apr

5 5 5

16:25 original1 16:26 original2 16:27 original3

$mv

original1

original1.bis

$ls -l total 3 -rw-rw-r-- 1 -rw-rw-r-- 1 -rw-rw-r-- 1 $cd ..

user2 stagiair user2 stagiair user2 stagiair

16 17 18

Apr Apr Apr

5 5 5

16:25 original1.bis 16:26 original2 16:27 original3

20

Copyright(c) by Galaxy CD http://www.galaxycd.com $pwd /users/user2 $ls -l total 2 drwxrwxr-x drwxrwxr-x $mv source

2 2

user2 stagiair user2 stagiair replace

96 96

Apr Apr

4 4

10:20 copie 10:21 source

$ls -l total 2 drwxrwxr-x drwxrwxr-x $ls -l total 3 -rw-rw-r-- 1 -rw-rw-r-- 1 -rw-rw-r-- 1

2 2 replace

user2 stagiair 96 user2 stagiair 96

Apr Apr

4 4

10:20 copie 10:21 replace

user2 stagiair user2 stagiair user2 stagiair

16 17 18

Apr Apr Apr

5 5 5

16:25 original1.bis 16:26 original2 16:27 original3

4.3 Tao lien ket vi file: Tao lien ket vi file la tao them cho file ten mi va ng dan tng ng. Lenh ln cho phep ta lam viec tren. $ln file_nguon file_ch Bang lenh ls -l, ta co the xem so lien ket cua file. Lenh rm dung e xoa mot lien ket. Muon xoa mot file, ta phai xoa tat ca cac lien ket cua no. Th du: $pwd /users/user2 $ls -l total 2 drwxrwxr-x drwxrwxr-x $ls -l total 1 -rw-rw-r-- 1 $ln

2 2 appli

user2 stagiair user2 stagiair

96 96

Apr Apr

4 4

10:20 appli 10:21 source

user2 stagiair file.link

71

Apr

17:05 file1

appli/file1

21

Copyright(c) by Galaxy CD http://www.galaxycd.com

$ls -l total 1 -rw-rw-r-- 2 $ls -l total 1 -rw-rw-r-- 2

appli user2 stagiair file.link user2 stagiair 71 Apr 5 17:05 file.link 71 Apr 5 17:05 file1

4.4 Tm kiem mot file Lenh find cho phep tm mot hay nhieu file trong cay th muc. Ta co the: - Tm theo ten: $find ng_dan -name ten_file -print - Tm theo so i-node (i-num) cua file: $find ng_dan -inum number -print - Tm theo ten ngi s hu: $find pathname -user username -print e tranh cac thong bao loi a ra man hnh, ta co the oi hng au ra loi chuan (standard error) ti mot file khong (/dev/null) $find / -name filename -print 2> /dev/null Th du: $pwd /users/user1 $find / -name /dev/ttyc2d1 $ls -i /unix 2810 -r-xr--r-- 2 ttyc2d1 -print 2> /dev/null

bin

bin

508516 Mar 10

1989

/unix

$find / -inum 2810 /unix /makesys/root/unix $pwd /users/user1

-print 2> /dev/null

$find /users -user -user1 -print /users/user1 /users/user1/res1 /users/user1/res

22

Copyright(c) by Galaxy CD http://www.galaxycd.com /users/user1/file1 $ll total 3 -rw-rw-r-- 1 -rw-rw-r-- 1 -rw-rw-r-- 1

user1 stagiair user1 stagiair user1 stagiair

75 75 75

Oct Oct Oct

18 18 18

11:41 res1 11:42 res 11:43 file1

Bai tap: 1. Tao 2 files file1 va file2 trong th muc tiep nhan. 2. Sao cac file o vao cac file file?.old cp file1 file1.old 3. Tao cac th muc src va bin mkdir src bin 4. Sao cac file file1 va file2 vao th muc src, cac file file?.old vao th muc bin. 5. Xoa cac file trong th muc tiep nhan. 6. Sao cac files file1, file2, file1.old va file2.old tr lai th muc tiep nhan. 7. e lam tiep cac phan sau, can to chc cac file nh sau: - file1 va file2 trong th muc bin - file1.old va file2.old trong th muc src va - khong co file nao trong th muc tiep nhan. Tao mot lien ket ten la file3 trong th muc tiep nhan vi file1 trong th muc bin cd ln /users/userX/bin/file1 /users/userX/file3 8. Liet ke 2 file file1 va file3 ll -i /users/userX/bin/file1 /users/userX/file3 Ta co nhan xet g ve nhng thong tin c a ra man hnh ? 9. Hay xoa file3 va kiem tra xem no a b xoa cha, xem ieu g xay ra vi file1? Hay giai thch. 10. Lenh chuyen file (mv) cho phep oi ten mot file. Hay sao file file2.old trong th muc src vao file file4/ 11. Hay tm file vi find / -name vi -print 2> /dev/null 12. Xem gia tr i-num cua file vi (dung ll vi tuy chon l) 13. Tm tat ca cac file co cung gia tr i-num vi vi.

23

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 5: Thong tin gia nhng ngi s dung


Noi dung: gii thieu cac lenh dung e truyen va nhan tin mail, write 5.1 Thong tin bang lenh mail 5.1.1 Gi th Lenh mail cho phep gi th cho ngi khac. Viec gi khong phu thuoc vao ngi nhan ang trong phien lam viec hay khong. $mail user1 message written-out Ctrl-D $ 5.1.2 Nhan th: Khi bat au phien lam viec, neu ta co th, tren man hnh se hien dong thong bao you have mail. Trong qua trnh lam viec, SHELL se lam cong viec kiem tra th en theo mot chu ky thi gian nh trc. e xem hop th, ta dung lenh mail khong co oi. Th du: - gi th cho ngi khac: $whoami user2 $mail user3 you can read my files CTRL-D $ nhan 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 x

quit exit without changing mail

24

Copyright(c) by Galaxy CD http://www.galaxycd.com 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: au th (header) co the b thay oi khi lam viec tren mang. 5.3 Thong tin bang lenh write Lenh write cho phep gi thong bao tc thi ti nhng ngi khac ang trong phien lam viec. $write user2 hello my friend how are you CTRL D $ Lenh wall cho phep gi thong bao ti tat ca nhng ngi ang lam viec trong he. Lenh write ghi thong tin trc tiep len man hnh nen co the gay nhieu cho cong viec ma ngi nhan ang lam. e tranh lam viec o co the dung lenh mesg vi tuy chon n. $mesg

25

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 6: S dung chng trnh soan thao vi mc c s


Noi dung: gii thieu chng trnh soan thao vi, cung cap mot so kien thc c s e co the soan thao c van ban hay chng trnh. 6.1 Khi ong vi 6.1.1 Gii thieu chung: vi (viet tat cua Video Interactif) la chng trnh soan thao van ban theo trang man hnh: - Man hnh c xem nh mot ca so m tren file. - Co kha nang di chuyen cursor ti bat ky ni nao tren man hnh. - Ca so co the di chuyen t do tren file. e hien th ung, vi can biet kieu terminal ang dung. Ta co the nh ngha c kieu terminal bang cach gan ga tr cho bien moi trng TERM: Th du: $TERM=tws2103;export TERM Phan ln cac phm c dung oc lap hoac ket hp vi phm SHIFT va CTRL e tao cac lenh cua vi. Khi mot lenh b go sai, vi bao hieu bang nhay man hnh, keu beep hoac thong bao loi. Chng trnh vi c xay dng t chng trnh soan thao dong ex. Cac lenh cua ex co the c goi khi co dau : dong cuoi man hnh. 6.1.2 Bat au dung vi Ta co the goi vi vi ten file van ban: $vi ten_file Ca so soan thao se c m tai au file. Neu file cha ton tai, no se c tao bi lenh ghi. Dong cuoi cung tren man hnh c dung cho nhng viec sau: - vao cac lenh, - thong ke, - bao loi. oi vi nhng ngi mi dung vi, co the dung version khac cua vi: $vedit ten_file version nay cua vi se hien thong bao INPUT MODE khi ta ang trong che o nhap van ban. Khi ta ch muon xem noi dung cua mot file, dung: $view ten_file. version nay cua vi m file ch e oc, cho phep ta xem c noi dung ma tranh c nguy c file b thay oi.

26

Copyright(c) by Galaxy CD http://www.galaxycd.com 6.1.2 Ra khoi vi: Muon ra khoi vi va ghi file co the dung mot trong cac cach sau: ZZ hoac :w sau o :q hoac :wq hoac :x Ra khoi vi va khong ghi file: :q (neu khong co sa oi) hoac :q! Khi ang trong vi, muon lam viec vi SHELL, ta co the lam nh sau: - chay mot lenh cua SHELL :!lenh - hoac goi SHELL, sau o chay cac lenh ta muon, khi ket thuc an CTRL-D e tr lai vi: :!sh $lenh $CTRL-D 6.2 Soan thao van ban: 6.2.1 Xen van ban: - xen ky t tren mot dong: a <text> <ESC>

i <text> <ESC> A <text> <ESC> I <text> <ESC> - xen dong: o <text> <ESC> Xen mot dong vao trc dong cha cursor. O <text> <ESC> Xen mot dong vao sau dong cha cursor. Ghi chu: muon xen cac ky t khong in c (non printable) ta phai go: CTRL V trc chung. 6.2.2 Di chuyen cursor trong file: - theo ky t: sang trai: dung phm mui ten trai hoac h hoac backspace. xuong dong: dung phm mui ten xuong hoac j hoac linefeed sang phai : dung phm mui ten phai hoac i hoac escape. len dong : dung phm mui ten len hoac k. - theo dong: ^ ve au dong $ cuoi dong

Xen ky t vao sau cursor. Lenh khong c hien th tren man hnh. ESC: Ket thuc che o xem. Xen ky t vao trc cursor. Xen ky t vao cuoi dong. Xen ky t vao au dong.

27

Copyright(c) by Galaxy CD http://www.galaxycd.com Enter au dong tiep au dong tren 0(null) ve au dong vat ly (dong bat au bang dau cach hoac tab) theo man hnh: H ve au man hnh (Home) M ve gia man hnh (Middle) L ve cuoi man hnh (Last) theo t (word): w W ve au t tiep b B au t hien tai e E cuoi t hien tai theo cau (sentence): ( ve au cau ) ve cuoi cau dau ket thuc mot cau la cac dau ., ! hoac ? theo oan van (paragraph): { ve au oan van } cuoi oan van oan van ket thuc bang mot dong trong. theo ca so (window): z dong hien tai gia ca so. z<Enter> dong hien tai au ca so. zdong hien tai cuoi ca so. ^D ^U ^F ^B xuong na ca so len na ca so xuong mot ca so (-2 dong) len mot ca so (2 dong)

Ghi chu: ^ la ky hieu cua phm CTRL theo so th t dong: e hien th so th t cua cac dong soan thao: :set nu Xoa bo hien th tren: :set nonu :n <Enter> hoac nG :$ hoac G :se list chuyen cursor en dong th n en dong cuoi van ban hien th cac ky t an (hidden)

28

Copyright(c) by Galaxy CD http://www.galaxycd.com tm day ky t: / ky hieu chieu tm xuoi. ? ky hieu chieu tm ngc. /string ?string chuyen cursor ti dong cha day ky t theo chieu xuoi. chuyen cursor ti dong cha day ky t theo chieu ngc.

// lap lai tm xuoi. ?? lap lai tm ngc. 6.2.3 Xoa van ban: - xoa ky t: x xoa ky t tai v tr cursor 3x xoa 3 ky t X xoa ky t trc v tr cursor - xoa dong van ban: dd hoac :d<CR> xoa dong cha cursor 3dd xoa 3 dong bat au t dong cha cursor d$ hoac D xoa en cuoi dong dw 3dw hoac d3w d/string 6.2.4 Thay the van ban: - thay the ky t: rc R<text><ESC> thay the dong: S<text><ESC> thay the t: cw<text><ESC> xoa t cha cursor xoa 3 t xoa khi het day string

thay the ky t hien tai bang ky t c (???) thay the so ky t bang day text

xoa dong hien tai va thay no bang text

c2w<text><ESC> C hoac c$ c/string 6.2.5 Xoa hoac lap lai lenh: - Xoa lenh u xoa tac dung cua lenh cuoi cung

thay mot t bang text. T c thay the tnh t cursor en ky t $. thay 2 t. thay the cuoi dong thay the en het string

29

Copyright(c) by Galaxy CD http://www.galaxycd.com U xoa tat ca thay oi a lam tren dong hien tai. - Lap lai lenh: . lap lai lenh sa oi van ban cuoi cung (???) 6.2.6 Xem trang thai van ban ang soan thao: ^G Hien th ten, trang thai, so dong, v tr ,cursor va phan tram van ban tnh t v tr cursor en cuoi van ban. 6.2.7 Sao chep, chuyen van ban: - di chuyen van ban: Moi lan thc hien mot lenh xoa (x hoac d), vi eu ghi lai phan van ban b xoa vao vung em rieng cho en lan xoa sau. Lenh p va P cho phep lay lai van ban t vung em o. Trc khi thc hien lenh nay, cursor phai c at vao v tr cung kieu vi phan van ban co trong vung em : -ky t -t -dong -cuoi dong (end of line) p sao phan van ban xoa lan cuoi cung vao sau oi tng trong cung kieu. P sao phan van ban xoa lan cuoi vao trc oi tng cung kieu. Mot cach khac e chuyen dong: :5,10m20 chuyen cac dong t 5 en 10 ti sau dong 20 - Sao chep van ban: Lenh y(yank) cho phep sao phan van ban ta muon vao vung em . Muon sao phan van ban t vung em ra, ta phai chuyen cursor vao ni can sao, sau o dung p hoac P. Y3w sao 3 t vao vung em Y hoac yy sao dong hien tai vao vung em . 5yy sao 5 dong vao vung em Mot cach khac e sao chep dong: :5,8t25 sao cac dong t 5 en 8 ti sau dong 25 6.3 Dung vi vi danh sach cac lenh a chay cua Shell (history of commands) Lenh fc (fix command) cho phep ta soan thao bang vi va chay lai cac lenh a chay cua Shell, cach dung nh sau: - soan thao va cho chay lenh cuoi cung: $fc - soan thao mot nhom lenh va cho chay: $fc m n - xem danh sach 16 lenh cuoi cung: $fc -l hoac history

30

Copyright(c) by Galaxy CD http://www.galaxycd.com $fc -lr (danh sach theo th t ngc lai) - tao mot file cha mot so lenh a chay (cua history): $fc -nl n1 n2 > cmd cmd la mot file cha cac lenh cua history t lenh n1 en lenh n2 Bai tap: 1. Sao file van ban co san vao th muc tiep nhan: cp /users/EXERCISES/editsave edition 2. Dung chng trnh vi e soan thao file tren: vi edition 3. Chuyen cursor xuong cuoi dong van ban, xong lai chuyen ve au van ban. Dung: CTRL D va CTRL U hoac CTRL F va CTRL B hoac G va :1 4. Hay sa: - Ten Dupont Jean au tien thanh Jean-Jacques - Ten Dupont Pierre au tien thanh Jean-Pierre Lam nh sau: /Dupont Jean/ chuyen cursor ti ky t n cua Jean a-Jacques<ESC> /Dupont Pierre/ chuyen cursor ti ky t p cua Pierre iJean-<ESC> Hay vao ten mnh vao dong trc dong Dupont au tien: :1 /Dupont/ Oname<ESC> Hay vao biet hieu hoac mot ten bat ky vao sau dong Dupont cuoi cung: G ?Dupont? oname<ESC> Ghi file va ra khoi vi: :wq hoac ZZ Vao lai vi va soan thao file edition. at va bo che o hien th so dong. vi edition :set nu :set nonu Hay sa Dupont Jean thanh Martin Jean:

5.

6.

7.

8.

9.

31

Copyright(c) by Galaxy CD http://www.galaxycd.com Chuyen cursor ti ky t D cua Dupont: hoac: XxxxxxiMartin<ESC> (dung x e xoa ky t) (neu lam sai hoac muon lam lai go U e xoa bo toan bo thay oi tren dong) hoac: dwiMartin<ESC> (dung dw e xoa t) hoac: cwMartin<ESC> (dung cw e thay t) 10. Xoa dong cha Coteau Jean: /Couteau Jean/ dd 11. Thay tat ca Dupont thanh Durand /Dupont/ cwDurand<ESC> // . 12. Chuyen cac dong cha Durand xuong cuoi van ban: Chuyen cursor ti dong Durand au tien: 4dd (xoa 4 dong va a vao vung em) G (chuyen en cuoi van ban) P (sao t trong vung em ) 13. Nhan oi dong cha Martin Jean yy p 14. Hien ta ang trong vi, hay gi thong bao ti cho ngi khac ang trong phien lam viec: :!who :!mail userX message ^D 15. Ta ang tai th muc tiep nhan, sa oi va chay lai mot lenh: $cd $write userX message ^D $fc ->sa X thanh Y :wq $

32

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 7 Shell_script
Noi dung: gii thieu shell, tien trnh (process) va cac cach thc thc hien tien trnh. Shell co the oc va thc hien mot file gom danh sach cac lenh can thc hien. File dang nay c goi la shell_sript hoac procedure Shell_script c thc hien nh shell, va chnh shell se phat sinh va quan ly tat ca cac tien trnh can thiet e thc hien cong viec c mo ta trong shell_script 7.1 Quan ly tien trnh: 7.1.1 Muc ch cua shell Shell la chng trnh thong dch lenh Hien th $

oc lenh

Tao tien trnh

i tien trnh ket thuc

Hien th $ 7.1.2 Tao tien trnh: Khai niem chung ve tien trnh: Tien trnh c hieu la viec thc hien mot cong viec hay mot chng trnh trong moi trng cu the trong he thong. Ta co the phan biet hai loai tien trnh: - Tien trnh he thong: la tien trnh khong gan vi bat ky mot terminal nao, no c tao ra vao thi iem khi ong he thong hoac vao cac thi iem co nh do ngi dung quan tr he thong at.

33

Copyright(c) by Galaxy CD http://www.galaxycd.com Tien trnh do ngi s dung tao ra.

Cac tien trnh c to chc theo dang cay: Tien trnh cha tien trnh con (parent) (child) oi vi ngi s dung, tien trnh cha la Shell c tao tai thi iem bat au phien lam viec. 7.1.3 Liet ke cac tien trnh: Lenh ps cho phep liet ke danh sach cac tien trnh ang dien 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 cua ngi chu tien trnh PID so cua tien trnh (process identity) PPID so cua tien trnh cha (parent process identity) C ch so s dung bo x ly (processor utilization for scheduling). STIME thi iem bat au tien trnh TTY terminal ieu khien tien trnh TIME thi gian tch luy thc hien tien trnh (cumulative time) COMMAND ten lenh sinh ra tien trnh Tien trnh so 1 la tien trnh init, trong o co chcc nang giam sat cac terminal, la tien trnh cha cua tat ca cac tien trnh Shell khi login. Cach thc hien mot shell_script: $chmod +x proc $proc hoac $sh proc 7.2 Lap cach thc (setup) cho shell_script: Lenh set cho phep lap cach thc chay shell_script. set -x hien th dong lenh sau khi trien khai lenh set -v hien th dong lenh trc khi trien khai set -e ra khoi shell_script sau khi gap mot loi set -t ra khoi shell_script sau lenh tiep set xoa tac dung cua x va v Viec lap cach thc ch lien quan ti shell_script ang chay. Cac tuy chon -x va v co the a vao dong lenh goi shell_script: $sh -v proc

34

Copyright(c) by Galaxy CD http://www.galaxycd.com $sh -x proc

Th du: - dung -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 dung -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 dung ky t # e viet chu thch cho dong lenh trong shell_script, neu chu thch viet ngay sau lenh tren cung mot dong, ta phai cho t nhat mot dau cach (space) vao trc ky t #.

35

Copyright(c) by Galaxy CD http://www.galaxycd.com 7.2 Cac loai Shell UNIX Co 3 loai shell UNIX: csh cua Berkeley BSD sh cua AT&T, Bourne-shell ksh cua AT&T,Korn-shell Shell ksh dung trong tai lieu nay la toan bo sh ket hp vi phan phat trien cua csh. Shell csh co cu phap giong ngon ng C, nhng cac shell_script cua csh khong chay c di sh va ksh. Di ay la liet ke nhng khac nhau c ban khac: - csh va ksh co nhat ky (history). - ksh co trnh soan thao dong (line editor) - cu phap vong lap csh: while end ksh, sh: while do done - ch csh co lenh goto - c che thay the bien cua ksh la hoan thien nhat - csh va ksh co cac phep tnh so hoc.

36

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 8: oi hng (Redirection)


Noi dung: cac luong d lieu vao/ra chuan va cac thao tac oi hng chung. 8.1 Vao/ra chuan: 8.1.1 Cac file vao/ra chuan: Khi cho mot file chay, Shell t ong m 3 file vao/ra chuan: Vao chuan (stdin) fd = 0 Ra chuan (stdout) fd = 1 Loi chuan (stderror) fd = 2 Ky hieu fd la mo ta file (file descriptor). Thong thng au vao chuan la ban phm, au ra chuan va loi chuan la man hnh. 8.1.2 oi hng au ra chuan : Ta co the oi hng cac so lieu, thay v ra man hnh, vao mot file theo cac cach sau: $lenh > ten_file Neu file cha ton tai, no se c t ong tao ra. Neu a ton tai, noi dung cu se b xoa. $lenh >> ten_file Vi cach nay, d lieu se c ghi them vao cuoi file. Th du: $ls /bin > file1 $ls /bin >> file1 8.1.3 oi hng au ra loi chuan: - oi hng vao mot file: $lenh 2 > file1 hoac: $lenh 2 >> file1 - oi hng vao file so lieu (vao au ra chuan): $lenh > file1 2 > &1 - oi hng vao file khong: $lenh 2 > /dev/null 8.1.4 oi hng au vao chuan: - So lieu vao chuan t mot file: $lenh < file2 Th du: $mail user1 < file2 - oi hng cac lenh t au vao chuan: Cach oi hng nay cho phep ta a cac khai bao cho mot lenh ttrong shell_script: $command << STRING so lieu va/hoac lenh

37

Copyright(c) by Galaxy CD http://www.galaxycd.com ma lenh nay can oc STRING $ Th du: dung lenh cat tao mot file: $cat > file1 <<OK aa bb OK $cat aa bb $ file1

8.2 Chuyen d lieu gia cac tien trnh: Hai dong lenh sau ay: lenh1 > temp lenh2 < temp co the c thay the bang mot dong lenh nh sau: lenh1 | lenh 2 Khi o au ra chuan cua lenh lenh1 se la au vao chuan cua lenh lenh2, va file trung gian temp khong can thiet na. Ky hieu | goi la ong (pipe). Th du: $ls -l | pg 8.3 oi hng kep (double) au ra chuan: Lenh tee cho phep oi hng kep au ra chuan: va hng d lieu au ra ve hng khac, va hien th ra man hnh. $lenh | tee ten_file. stdout lenh tee

stdout

ten_file

38

Copyright(c) by Galaxy CD http://www.galaxycd.com Th du: $ps -ef | tee file_ps | grep $LOGNAME Co the dung tee vi tuy chon a (tee a), khi o d lieu au ra se c ghi tiep vao cuoi file file_ps Bai tap: 1. Hay viet lenh co ten WHO vi cac chc nang sau:: - tnh va hien th so ngi s dung ang trong phien lam viec. - hien th danh sach va cac thuoc tnh cua ho. - xoa file em (neu co dung) c tao khi chay lenh WHO. Gi y: dung cac lenh who, tee, wc. 2. Viet lenh LLD liet ke cac th muc con trong mot th muc. Gi y: dung cac lenh ll va grep.

39

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 9: C che thay the cua Shell


Noi dung: cach thao tac vi cac tham so cua shell_script, cac bien trong Shell, cac ky t ac biet c thong dch khi viet trong cau lenh shell. 9.1 Truyen tham so: 9.1.1 Truyen tham so cho mot Shell_script Mot Shell_script co the lam viec vi cac thong so c truyen qua dong lenh. $proc par1 par2 par3 | | | | $0 $1 $2 $3 Trong Shell_script c goi (trong trng hp nay la proc), cac tham so c the hien bang: $0 ten Shell_script $1 tham so th nhat $2 tham so th hai $n tham so th n $# $* $$ Th du: $cat echo echo echo echo echo $ param Name of shell_script: $0 First parameter : $1 Third parameter : $3 Number of parameters: $# List of all the param: $* so cac tham so tat ca cac tham so PID cua shell_script

$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 Dch chuyen cac tham so:

40

Copyright(c) by Galaxy CD http://www.galaxycd.com Vi cach the hien tham so cua shell_script bang $n, ta ch co the lam viec c vi t 1 en 9 tham so. Bang cach dch chuyen, ta co the lam viec vi so tham so nhieu hn 9. Viec dch chuyen c thc hien bi lenh: shift Sau khi shift: - $0 van gi nguyen - $1 mat i - $2 thanh $1 - $3 thanh $2 - $n thanh $n-1 - $*, S# c cap nhat lai. Co the dch chuyen n v tr bang cach: 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 Cac bien Shell 9.2.1 Cac kieu bien: Ksh co the x ly 4 kieu bien sau: - so nguyen - xau ky t

41

Copyright(c) by Galaxy CD http://www.galaxycd.com - bang cac xau ky t - bang cac so nguyen Th du: - bien xau ky t: $string = character string $print $string character string Ghi chu: o noi dung bien c bieu dien bang ten bien va dau $ ang trc. o trc va sau dau khong co ky t trong. - bien so nguyen: $integer var = 2 $itypeset -i var1 = 23 $print $var $var1 2 23 - bang cac xau ky t: $string[1] = more characters $print ${string[1]} more characters $print ${string[0]} character string Ghi chu: khi khai bao mot bien, ta cung co the coi bien o la bien au tien cua mot bang cung ten vi no. - bang cac so nguyen: $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) cua bang la mot so nguyen t 0 en 511. - xoa mot bien: $unset i 9.2.2 Cach thay the cac bien shell:

42

Copyright(c) by Galaxy CD http://www.galaxycd.com $print ${var-val1} hien th gia tr cua var, neu bien var cha nh ngha th hien th val1 thay cho gia tr cua var $print ${var=val2} neu var cha nh ngha, tao bien var vi gia tr la val2 $print ${var:-val3} giong trng hp au $print ${var:=val4} giong trng hp th hai nhng var co the cha c nh ngha hoac co gia tr null. $print ${var?message} neu var cha c nh ngha, hien th message. (th du: print ${var?not defined}) Chu thch: - bien cha c nh ngha la bien cha ton tai - bien co ga tr null la bien ch chamot ky t Return, hoac xau rong. $integer tab $tab[0]=1 tab[1]=2 tab[2]=7 - liet ke cac gia tr cua bang: $print ${tab[*]} 1 2 7 - hien th so phan t cua bang: $print ${#tab[*]} 3 9.1.3 Dung mot bien che do hoi ap: Lenh read cho phep dung mot bien che o hoi ap khi ang chay mot shell_script. Th du: $cat menu echo This is an example of menu echo Choice: 1, 2 or 3 read reply echo Your choice is $reply $menu This is an example of menu Choice: 1, 2 or 3 2 Your choice is 2 Cu phap read var?invite cho phep hien th trc tiep xau invite $read var?Choice: 1, 2 or 3? Choice :1,2 or 3?3 $echo $var 3 9.2.4 Bao ve mot bien:

43

Copyright(c) by Galaxy CD http://www.galaxycd.com Lenh read-only cho phep bao ve mot bien. Ta ch co the oc makhong thay oi c gia tr cua no. $VAR=45 $readonly VAR $VAR=22 ksh: VAR: is readonly $echo $VAR 45 Lenh readonly khong co oi hien th danh sach cac bien c bao ve. e bao ve mot bien, ta cung co the dung tpeset vi tuy chon r: $typeset -r var1=68 9.3 Cac ky t ac biet 9.3.1 Tao mot ten vi cac metacharacter Mot so ky t co y ngha ac biet trong dong lenh Shell, ngi ta goi cac ky t o la metacharacter. Chung cho phep tao ra cac ten file ta quan tam trong mot th muc. * thay the mot xau ky t bat ky/ ? thay the mot ky t bat ky. [] thay the mot trong nhng ky t trong ngoac vuong. [!] thay the mot ky t khong co trong ngoac vuong. Muon dung mot ky t kieu metacharacter e the hien mot ten ma khong b hieu ng ac biet cua no, ta can cho vao trc no mot ky t \ (backslash). Chu y: cac metacharacter dung trong Shell khong cung y ngha vi cac metacharacter dung trong cac chng trnh soan thao. Th du: $echo * hien th tat ca cac file trong th muc. $echo *.c hien th tat ca cac file co ten ket thuc bang .c $echo \* * $ls a.out try.o file1 file1.c file5 fileA $ls *.c file1.c

44

Copyright(c) by Galaxy CD http://www.galaxycd.com $ls *.* a.out try.o file1.c $ls *.? try.o file1.c $ls file[0-9] file1 file5 Chu y: Cac ky t metacharacter ch co tac dung trong phan cua dong lenh, chung khong co tac dung trong phan oi hng. Th du: $echo hello > *.c $ls *.c liet ke cac file co ten ket thuc bang .c $ls \*.c liet ke cac file co ten *.c 9.3.2 Ky t ~(tilde) Ky t ~ thay the ten th muc tiep nhan Hai ky t ~+ thay the ten th muc ang lam viec. Hai ky t ~_ thay the ten th muc ta a trong ngay trc khi chuyen sang th muc hien hanh. Th du: $echo ~ xem ten th muc tiep nhan /users/user1 $cd /etc chuyen en /etc $pwd /etc $cd tr ve th muc tiep nhan $pwd /users/user1 $echo ~_ xem ten th muc lam viec ngay trc khi chuyen en th muc hien hanh /etc $echo ~+ xem ten th muc lam viec /users/user1 9.4 Lay ket qua cua mot lenh: 9.4.1 Lay ket qua cua mot lenh cho vao mot bien Trong shell_script, ket qua cua mot lenh co the the hien bang cach sau:

45

Copyright(c) by Galaxy CD http://www.galaxycd.com `lenh` hoac $(lenh) Ta co the dung cach the hien tren e gan noi dung cho mot bien. Th du: $pwd /users/user1 $YY = `pwd` $echo $YY /users/user1 $var=$(pwd) $echo $var /users/user1 9.4.2 Lay ket qua cua mot lenh di dang cac tham so: Lenh set cho phep lay ket qua cua mot lenh di dang cac thong so nh sau: $1, $2, $3$[n] Th du: $date Tue Jun 6 17:12:40 EET 1991 $set date $echo $2 Jun $echo $6 1991 $set $(ls) $echo ${11} 9.6 Cac quy tac thay the cua Shell 9.5.1 Dung cac dau nhay: Shell khong thc hien phep thay the cac ky t trong dau nhay n Shell thc hien phep thay the trong dau nhay kep cac ky t: $ \ va ` Th du: $NOM=jean $echo nom=$NOM nom=jean thong dch bien $echo nom=$NOM nom=$NOM $ echo nom=$NOM

hien th khong thay the

46

Copyright(c) by Galaxy CD http://www.galaxycd.com nom=jean $echo * file1 file2 thong dch bien

thong dch ky t *

$echo * * hien th khong thong dch Bang tom tat ve thong dch cac ky t ac biet trong cac dau nhay: Dau nhay c Cac ky t ac biet dung trong dau nhay dung ` hoac ) \ $ f n n n n ` hoac $( n f n o o n o f o o Trong o: f = ket thuc xau ky t o = ky t c thong dch (co y ngha ac biet) n = ky t khong c thong dch (bnh thng)

* n o n

Th du cach s dung bang tom tat: - Ky t $ c thong dch nh mot metacharacter khi no trong $() hoac , khi bien c thay the bangh gia tr cua no. Ngc lai, no khong c thong dch khi gia hai dau nhay n. 9.5.2 Thay the up Khi Shell lam thao tac thay the no quet mot lan dong lenh va thay the bien co $ ang trc. Ta co the lam hai lan ong tac quet bang dung lenh eval cua Shell. Nh vay lenh ng sau eval c thay the 2 lan trc khi chay. Th du: Shell_script last_argument hien th oi cuoi cung cua dong lenh: $cat last_argument set -x eval echo $$# $last_argument 1 A Z 3 F G + eval echo $6 + echo G G Bai tap: 1. Hay viet shell_script copy_file e sao chep mot file cua mot ngi s dung khac, sau o oi nhom va ngi s dung cua file sao. Cu phap: 47

Copyright(c) by Galaxy CD http://www.galaxycd.com copy_file file1 file2 user group Gi y: s dung cac lenh cp, chown, chgrp 2. Hay viet shell_script dup_file co chc nang nh copy_file tren nhng ten cac file, ten ngi s dung va ten nhom c vao bang hoi ap. Gi y: s dung lenh read va cac bien can thiet.

48

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 10: Moi trng cua Shell


Noi dung: cac lp bien cua Shell, cach truyen bien cho tien trnh. 10.1 Moi trng Moi trng cua Shell cha mot so bien nh ngha trc. Lenh set cho phep liet ke danh sach cac bien cua moi trng (nh ngha trc hoac khi lam viec). $set 10.2 Cac bien nh ngha trc Di ay la danh sach cac bien nh ngha trc thng co: HOME cha ten th muc tiep nhan LOGNAME ten ngi s dung PATH ten ng dan cho cac lenh PS1 dau nhac th nhat PS2 dau nhac th hai TERM kieu terminal IFS danh sach cac dau phan cach (seperator) FCEDIT EDITOR chng trnh soan thao nhat ky (history) PPID so cua tien trnh cha cua Shell PWD th muc hien hanh SHELL ten Shell ang dung RANDOM so ngau nhien SECONDS thi gian lam viec tnh theo giay 10.3 Cac bien chung (common) 10.3.1 Bien xuat Shell khong t thc hien cac lenh ta a vao ma tao ra mot shell con e thc hien cac lenh o. Do o cac tien trnh con khong biet en cac bien ta dung trong shell. e mot bien cua mot tien trnh co the dung chung cho moi tien trnh con cua no, ta phai xuat (export) no thanh bien dung chung bang cach dung lenh export $var=18 $export var Chu y: - khong co khai niem nhap (import). - Mot bien xuat khi b thay oi gia tr trong tien trnh con van gi nguyen gia tr trong tien trnh cha. Cac bien xuat co the liet ke bang dung lenh: $env

49

Copyright(c) by Galaxy CD http://www.galaxycd.com 10.3.2 Thc hien mot shell_script trong shell cha: Thc hien mot shell_script trong shell cha cho phep no tha ke s dung toan bo moi trng cua shell cha: Th du: $cat proc echo $var $VAR= ok $proc $.proc nh ngha bien var trong shell mot shell con c tao ra va no khong hieu bien VAR shell t thc hien lenh ma khong tao shell con, bien VAR co trong moi trng cua no.

50

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 11 Lap trnh mc c s di UNIX


Noi dung: cac phep th, so sanh, cac phep tnh so hoc trong Shell, lap trnh cac cau truc co ieu kien, lap trnh cac vong lap. 11.1 Cac phep th (test) trong Shell 11.1.1 Gia tr tra ve cua mot lenh Sau khi mot lenh thc hien xong, bao gi cung co mot gia tr tra ve (return code). Gia tr nay cha trong bien $?. Neu mot lenh c thc hien tot, gia tr tra ve la 0 (true : ung). Neu mot lenh khong c thc hien tot, gia tr tra ve khac 0 (false: sai). Th du: $cat fac cat: cannot open fac $echo $? 2 $cat file I am a file $echo $? 0 Chu thch: lenh exit[n] cho phep ra khoi mot shell_script vi gia tr tra lai la n. 11.1.2 S dung lenh test: + Lenh test c dung e lap trnh mot ieu kien trong cau truc hoac trong vong lap: Co 3 trng hp dung lenh test: - kiem tra tnh chat cua cac file - so sanh gia cac so - kiem tra cac xau ky t + Cu phap lenh test: test expression hoac [expression] Trong cac th du sau ay, hai cach dung tren eu c s dung nh nhau. +Kiem tra tnh chat cac file: Sau khi test, gia tr tra ve la 0 (true) hoac khac 0 (false) test -f filename 0 neu file ton tai va la file thng [-d filename] 0 neu file ton tai va la file th muc [-r filename] 0 neu file ton tai va ch oc c

51

Copyright(c) by Galaxy CD http://www.galaxycd.com test test test [file1 [file1 [file1 [-b [-c -w -x -s -ef -nt -ot filename filename filename file2] file2] file2] 0 0 0 0 0 0 0 0 neu file ton tai va ghi c neu file ton tai va chay c file ton tai va khong rong (not empty) file1 va file2 lien ket vi nhau neu file1 mi hn file2 neu file1 cu hn file2 file ton tai va oc ghi theo block file ton tai va oc ghi theo ky t

filename] filename]

+So sanh gia cac so: Cu phap nh sau: test value1 operator value2 Cac toan t so sanh (operator) co the dung: -eq bang (equal to) -ne khong bang (not equal to) -gt ln hn (greater than) -ge ln hn hoac bang (greater or equal to) -lt nho hn (less than) -le nho hn hoac bang (less or equal to) Th du: $test $A -eq $B true neu gia tr cua bien A bang gia tr cua bien B +Kiem tra cac xau ky t: [str1 = str2] test str1 != str2 test -z $A test -n $A Th du: $test $LOGNAME

ung neu str1 bang str2 ung neu str1 khac str2 ung neu xau $A rong ung neu xau $A khong rong != user1

+Ket hp cac ieu kien: Cac toan t so sanh co the ket hp vi: -a va (and) -o hoac (or) ! ao (negation) \(\) gop (grouping) Th du: $test \(-r file1 -o -r file2 \) -a -w file3 ung neu:

52

Copyright(c) by Galaxy CD http://www.galaxycd.com - file1 va file2 ton tai va ch oc c va - file 3 ton tai va ghi c. 11.2 Lap trnh mot cau truc co ieu kien: 11.2.1 Cau truc co ieu kien : a) if then else fi if command1 then command2 else command3 fi Giai thch: Neu gia tr tra ve sau khi thc hien command1 la 0 (ung) th thc hien command2, neu khong th thc hien command3 ket thuc Th du: if test -f file1 then echo file exists else echo file does not exist fi Chu thch: khong bat buoc phai dung else if [-w file1] then echo message >> file1 fi b) Cau truc long (nested) Ta co the long cac cau truc ieu kien vi nhau. Khi o: else if thanh elif Th du: if test -f file1 then echo file exists elif test -d file1 then echo file is a directory fi trong trng hp nay fi la chung. Chu y: cu phap sau cung co the dung c: if then else if then

53

Copyright(c) by Galaxy CD http://www.galaxycd.com else fi c) Cac toan t | | va && Trong trng hp ieu kien n gian, co the dung toan t hoac logic | |, hoac toan t va logic && e lap trnh cau truc. command1 && command2 Neu command1 c thc hien tot, th thc hien command2, neu khong th ra. command1 | | command2 Neu command1 c thc hien tot, th ra, neu khong, th thc hien command2. Chu y: co the dung dau ngoac n e gop cac lenh Th du: test -d demo && echo demo is a directory test -d demo | | echo demo is not a directory (test -d demo && ls -l demo) | | echo demo not ok 11.2.2 Re nhanh trong phep chon mot trong nhieu gia tr: Dung cau truc: case in esac Cau truc tren cho phep chon mot trong nhieu xau ky t va thc hien cac lenh lien quan en xau o. case $variable in string1) cmd1 cmd2 ;; string2) cmd1 cmd2 ;; string3 | string4) commands ;; esac Chu y: co the dung cac metacharacter cua shell e bieu dien xau ky t, | co ngha la hoac 11.3 Lap trnh mot vong lap 11.3.1 Vong lap for a) Cau truc: for in do done Cau truc nay cua for cho phep thc hien mot chuoi lenh nh nhau vi moi mot gia tr trong danh sach a cho. So cac vong lap bang so cac gia tr trong danh sach. for variable in val1 val2 val3

54

Copyright(c) by Galaxy CD http://www.galaxycd.com do command1 command2 command3

done Vi variable co the gan c cac gia tr val1, val2 thc hien cac lenh command1, command2, Th du: WRITE la mot shell_script gi thong bao ti 3 ngi dung user1, user2, user3: $cat WRITE for i in user1 user2 user3 do write $I < message_file done b) Cau truc : for do done Cau truc nay cho phep thc hien mot chuoi lenh nh nhau vi cac oi ($1 $2 ) cua shell_script c goi. for variable do command1 command2 command3 done Vi variable co the gan c cac oi cua shell_scipt thc hien cac lenh command1, command2, Th du: Shell_script copy sao chep cac file trong danh sach oi vao danh muc /users/user8 va oi nhom thanh nhom student, oi ngi s hu thanh user8. $cat copy for i do if [-f $i] then cp $i /users/user8 chgrp student /users/user8/$i chown user8 /users/user8/$i fi done $ls -l total 10 -rw-------rw------$copy file1

1 phil 1 phil file2

animator 56 animator 22 toto

May 31 14:14:22 May 31 15:14:22

file1 file2

55

Copyright(c) by Galaxy CD http://www.galaxycd.com toto is not a file $ls -l /users/user8 total 5 -rw------1 phil animator 56 May 31 14:14:22 file1 -rw------1 phil animator 22 May 31 15:14:22 file2 11.3.2 Vong lap while va until a ) while do done Vong lap while thc hien mot chuoi lenh khi ieu kien van con thoa man. while command1 do command2 command3 command4 done Khi gia tr tra ve cua viec thc hien command1 van thoa man ieu kien (true), shell thc hien tiep chuoi lenh gia do done. Hai lenh thng dung trong vong lap while: true hoac : cho gia tr true(0) sleep[n] i n giay Th du: - shell_script param hien th tat ca cac oi cua lenh. $cat param while test $# -ne 0 do echo $1 shift done - shell_script disp_time hien th so lieu ngay thang theo khoang thi gian 30 giay. $cat disp_time while true hoac while : do date sleep 30 done b) until do done Vong lap until hoat ong ngc lai vi vong lap while until command1 do command2 command3 command4

56

Copyright(c) by Galaxy CD http://www.galaxycd.com done Khi gia tr tra ve cua viec thc hien command1 van khong thoa man ieu kien (false), shell thc hien chuoi lenh gia dodone Lenh false thng hay c dung trong vong lap nay e cho gia tr false. Th du: vong lap until: - ta viet lai shell_script param tren: $cat param until test $# -eq 0 do echo $1 shift done c) cac phep tnh so hoc Lenh let c dung e thc hien cac phep tnh so hoc: Cac toan t co the dung gom: + * / % Th du: $integer i=10 j=2 k l let k=i+j $echo $k 12 Chu y: cu phap let k=i+j tng ng vi ((k=i+j)) hoac k=i+j $((l=k*j)); echo $l 24 Lenh let co the dung vi cac toan t so sanh, ket qua c cha trong bien $?. Cac toan t so sanh co the dung la: <= >= < > == != Th du: $((i<j));echo $? 1 Ta cung co the dung cac toan t logic sau ay vi let: ! && | | d) Lap trnh mot so em Lenh expr cho phep ta thc hien mot thao tac co cu phap nh sau: $expr term1 operator term2 Cac toan t co the dung: cong tr nhan chia lay so d + * / % Th du: shell_script create_file tao cac file file1, file10 $cat create_file count=1 while test $count -le 10

57

Copyright(c) by Galaxy CD http://www.galaxycd.com do done >file$count count=expr $count+1

$cat create_file2 integer count=1 while let count <10 do >file$count count=count+1 done 11.3.3 Ra khoi mot vong lap: Lenh break cho phep ra khoi cac vong lap for, while, until. Th du: shell_script stock ghi cac dong ky t vao t ban phm len file lines cho ti khi ta go t END: $cat stock while true do echo Enter your line: read answer if test $answer = END then break else echo $answer >> lines fi done Chu y: break[n] cho phep ra khoi n mc cua cac vong lap long. 11.3.4 Bo qua phan tiep theo trong mot vong lap: Lenh continue cho phep bo qua cac lenh con lai, quay ve au vong lap. Th du: shell_script supprim xoa tat ca cac file co trong danh sach oi, tr file save va source: $cat supprim set -x for i do if test $i = save -o $i = source then continue fi echo $i rm $i done $cd $lc titi appli save source toto

58

Copyright(c) by Galaxy CD http://www.galaxycd.com

$supprim * + test titi = save + echo titi titi + rm titi + test save = save + continue + test source = save + continue + test toto = save + echo toto toto + rm toto

-o

titi = source

-o -o -o

save = source source = source toto = source

$lc save source Bai tap: 1. Dung cac cau truc va re nhanh viet cac shell_script sau: a) writemail message userX Chc nang: - gi thong bao trc tiep cho userX - neu ngi o khong ang trong phien lam viec, gi vao hop th. Gi y: dung lenh write, mail, | | b) fileread filename Chc nang: - kiem tra oi co phai la file hay khong - neu ung, kiem tra co phai la file ch oc (readonly) khong - hien cac thong bao tng ng ket qua c) filesort file1 file2 Chc nang: - oc mot dong t ban phm va ghi len file theo cach sau: + vao cuoi file1 neu dong cha t nhat mot ch (letter) + vao cuoi file2 neu dong cha t nhat mot so (number) va khong cha bat ky mot ch. + vao file khong (null) neu khac hai loai tren - kiem tra so cac oi, neu khac 2, hien th thong bao: command: filesort file1 file2 Gi y: dung cac lenh case, read va cac metacharacter 2. S dung cac vong lap a hoc, viet cac shell_script sau: a) testdir Chc nang: hien th danh sach cac th muc con trong th muc lam viec.

59

Copyright(c) by Galaxy CD http://www.galaxycd.com Gi y: dung cac lenh pwd, for, test b) mkfiles prefix n Chc nang: -tao n file rong (ngam nh la 5) vi ten prefix.n (th du: file.1, file.2, file.3 vi prefix=file va n=3) - hien dong khang nh tao file prefix.n hay khong trong vong lap. Gi y: dung if, while, test, read, expr

60

Copyright(c) by Galaxy CD http://www.galaxycd.com

Bai 12 Tn hieu va ong bo


Noi dung: Cac tn hieu cua he thong, cach dung tn hieu e ieu khien va ong bo cac tien trnh. 12.1 Quan ly cac tn hieu: 12.1.1 Cac tn hieu: Trong khi thc hien mot shell_script, cac tn hieu sau co the phat sinh: signal 0 ra khoi shell (exit of the shell) signal 1 cat lien lac vi terminal (disconnection) signal 2 Ngat (th du phm DEL) signal 3 Quit (Ctrl |) signal 9 Diet tien trnh (Kill process) signal 10 Ket thuc logic mot tien trnh Trong mot chng trnh ng dung, bang cach dung lenh trap, ta co the nh ngha viec can x ly khi mot tn hieu phat sinh. Lenh nay cho phep gan mot cong viec x ly cho bat c mot tn hieu nao. 12.1.2 Lap trnh phm DEL Lenh trap khong oi liet ke danh sach cac tnh hieu va cac viec x ly tng ng. $trap Cu phap gan mot cong viec x ly cho phm DEL: $trap cac lenh 2 Xoa bo tac dung phm DEL: $trap 2 Gan chc nang ngam nh (default) cho phm DEL: $trap 2 Th du: shell_script uncount hien th 5 4 3 2 1 trong cac khoang thi gian 5 giay, neu ta go phm DEL, hien th ch so tiep. $/Icat/ i uncount trap continue 2 for i in 5 4 3 2 1 do echo $i sleep 5 done 12.2 Quan ly cac tien trnh 12.2.1 Chay ngam (background) mot tien trnh Mot tien trnh se chay ngam neu ta them ky t & vao sau ten no khi goi. So cua tien trnh (PID) se c hien th tren man hnh. Th du: chay shell_script uncount ngam:

61

Copyright(c) by Galaxy CD http://www.galaxycd.com $uncount& [1] 467

Chu y: - sau khi cho mot tien trnh chay ngam, ta lai co the dung terminal lam viec khac. - khong co thong bao khi tien trnh ngam ket thuc, do o khi chay shell_script ta co the cho them thong bao ket thuc: $(command; echo END)& - so PID cua tien trnh ngam trong bien $! - Co the oi hng vao/ra (i/o) cua tien trnh ngam, tranh nhieu man hnh khi ta lam viec khac. 12.2.2 Quan ly cac tien trnh ngam (job control) Lenh: $set -m cho phep quan ly cac tien trnh ang chay ngam. Th du: $proc1 >> file1 & [1] 478 $proc2 & [2] 481 $proc3 & [3] 490 Hien th trang thai cua cac tien trnh ngam : $jobs -l [3] +490 running proc3 & [2] -481 done proc2 [1] 478 running proc1 >> file1 & trong o: [n] so th t tien trnh + tien trnh chay cuoi cung tien trnh trc tien trnh cuoi 490 so PID cua tien trnh running tien trnh ang thc hien done tien trnh a ket thuc proc3 & ten lenh goi 12.2.3 Tiep tuc tien trnh sau khi ket thuc phien lam viec: Ta co the cho tiep tuc thc hien cac tien trnh ngam sau khi cat lien lac vi terminal bang cach dung lenh nohup. Cac so lieu cua tien trnh a ra stdout va stderr se c ghi len file nohup.out Th du: $nohup uncount&

62

Copyright(c) by Galaxy CD http://www.galaxycd.com [1] 478 sending output to nohup.out $exit 12.2.4 i ket thuc tien trnh Bang cach dung lenh wait vi oi so la PID cua tien trnh: $wait 467 12.2.5 Diet mot tien trnh Dung lenh kill vi oi so la PID cua tien trnh: $kill 467 phat sinh tn hieu 15 (ngam nh) $kill -9 467 phat sinh tn hieu diet tien trnh Ta cung co the diet mot tien trnh theo so th t cua no trong danh sach cac tien trnh ang chay ngam : kill %n Th du: $kill %1 $jobs [1] + done(143) proc >> file1 & [3] + running uncount & $kill [3] -9 + %+ killed

uncount

&

12.3 e quy Tat ca cac shell_script eu co tnh e quy (recursivity). Th du: shell_script dir_tree hien th cay th muc bat au t th muc la oi cua no. $cat dir_tree if test -d $1 then echo $1 is a directory for j in $1/* do $0 $j #$0 ten shell_script done fi $dir_tree /usr /usr is a directory /usr/adm is a directory /usr/adm/acct is a directory /usr/adm/acct/fiscal is a directory /usr/adm/acct/nite is a directory /usr/adm/sa is a directory

63

Copyright(c) by Galaxy CD http://www.galaxycd.com /usr/bin is a directory Bai tap: 1. Hay viet shell_script: LisFileDel file1 file2 Chc nang: - hien th noi dung cac file co ten trong danh sach oi - tiep tuc go phm DEL, bo qua file ang hien th, bat au file tiep - khoi phuc chc nang ngam nh cua phm DEL khi ket thuc. Gi y: Dung trap, continue, signal 2 2. Hay viet shell_script: trap2 Chc nang: - thc hien mot vong lap hien th thong bao: Shutdown in n minutes n co gia tr t 5 en 1 - moi khi go phm DEL, lap tc hien th thong bao tiep theo - xoa bo tac dung cua phm DEL trong phut cuoi cung - khoi phuc chc nang ngam nh cua phm DEL khi ket thuc Gi y: dung trap, continue, for

64

You might also like