You are on page 1of 35

Linux Shell

Chng I : Gii thiu

1. LCH S RA I CA LINUX
Vo nm 1991 ti Phn Lan, Linus B. Torvalds lc l sinh vin trng i hc tng hp Hensinki dng mt my tnh c nhn c trang b b x l 386 nghin cu cch lm vic ca n . Do h iu hnh MS-DOS khng khai thc y cc c tnh ca b x l 386 , Linus s dng mt h iu hnh thng mi khc l Minix . H iu hnh Minix l h iu hnh Unix c nh . Do i mt vi cc hn ch ca h iu hnh ny , Linus bt u vit li mt s mt s ca phn mm thm chc nng v cc im c trng . Sau , ng thng bo kt qu ca mnh min ph bng Internet di tn gi Linux ch vit tt ca Linus v Unix . Phin bn u tin ca Linux l 0.01 c tung ra vo thng 8/1991 . Cc phin bn u tin c rt nhiu hn ch . Tuy nhin , s kin cc m ngun c truyn b rng ri gip pht trin h iu hnh rt nhanh . Nhiu nm qua , s lng cc cng ty khai thc khng ngng tng ln . Ngy nay , Linux c pht trin bi nhiu ngi ri rc khp ni trn th gii . World Wide Web ng mt vai tr quan trng do n h tr m rng nhanh h iu hnh . Thc t chng ta c th tng tng rng mt nh khai thc ci t Linux trn my ca mnh , anh ta pht hin li , sa cha n v gi file ngun n Linus . Mt vi ngy sau (i khi ch vi pht sau ) phn chnh yu c ci tin c th s c truyn trn mng . Mc d nm phin bn u tin ca Linux tng i khng n nh , nhng phin bn u tin c tuyn b l n nh (1.0 ) c cng b vo khong thng 3/1994 . S phin bn i km vi kernel c mt ngha c trng bi v n lin quan n chu k pht trin . Thc t , qu trnh pht trin Linux din ra theo mt chui hai giai on : Giai on pht trin : y kernel khng c tin cy cao v tin trnh l b sung chc nng cho n , ti u ha n v th nghim cc tng mi . Giai on ny em li s gia tng s lng cc phin bn nh s l , chng hn nh 1.1, 1.3 , vv.... y l thi im m lng cng vic ti a c thc hin trn kernel . Giai on n nh : giai on ny , mc ch l to ra mt kernel cng n nh cng tt . Trong trng hp ny , ch cho php thc hin cc hiu chnh , sa i nh . S phin bn ca cc kernel c gi l n nh l cc s chn , chng hn 1.0 , 1.2 v mi nht l 2.2. Ngy nay , Linux hon ton l mt h iu hnh Unix . N n nh v lin tc pht trin . N khng ch c kh nng pht trin trn cc thit b ngoi vi mi nht trn th trng ( b nh flash quang , a quang ... ) m hiu nng ca n cn c th so snh vi mt s h iu hnh Unix thng mi v thm ch cn c mt s im u vit hn . Sau cng, mc d Linux c mt khong thi gian b gii hn trong mi trng cc trng i hc , by gi n ang c tip nhn cc hng cng nghip . Do cng sut v linh hoat ca h iu hnh ny v tnh min ph ca n m hin nay n ang thu ht mt s lng cc cng ty ngy cng gia tng .

Trang 1

Linux Shell
2. CC CHC NNG CA LINUX
H iu hnh Linux c rt nhiu chc nng v chng khai thc kh nng ca cc h Unix hin i theo cc cch sau : v a x l , cc b a x l : c th thc hin nhiu chng trnh ng thi bt k s dng mt hay nhiu b x l . v a nn . v Cho php nhiu ngi s dng : ging nh tt c cc h Unix , Linux cho php nhiu ngi s dng cng lm vic trn mt my cng thi im . v H tr truyn thng giao x l ( Pipes , IPC , Sockets ) . v Qun l cc thng ip iu khin khc nhau . v H thng qun l thit b u cui tun th theo tiu chun POSIX . Linux cng gi cc thit b u cui cng nh iu khin qu trnh . v H tr mt di rng cc thit b ngoa vi , chng hn nh cc cc m thanh , giao din ho , mng , giao din h my tnh nh .... v Buffer cache : vng b nh c dnh lm vng m cho cc u vo v u ra t cc qu trnh khc nhau . v H thng qun l b nh trang yu cu . Mt trang s khng c np chng no n khng thc s cn thit b nh . v Cc th vin ng v dng chung : Cc th vin ng ch c ti khi chn tht s cn thit v m ca chng c dng chung nu nhiu ng dng ang dng chng v Cc h thng file c th qun l tt v ng u cc phn hoch file Linux c s dng bi filesystem lm cc phn hoch c cc nh dng khc ( MS-DOS , ISO9660, vv. .. ). v Thit b ca TCP/IP v cc giao thc mng khc . Tm li , Linux l mt h Unix y v mnh . N c th c ng dng d dng . Ngoi ra s s dng cng cng rng ri ang tr gip n pht trin mt cch nhanh chng .

3. GII THIU CHUNG V LINUX:


Linux l h iu hnh gn ging Unix , c th hot ng c lp vi phn cng , a nhim , a ngi dng , bo mt cao , t chc tp tin phn cp , tc cao , ng tin cy , c kh nng lm Server cho mng Internet . Linux c im kh ni bt l Tnh n nh .Tht kh m lm cho Linux b ngng tr v t lit ! c ni th nghim nhiu h thng chy Linux lin tc hng nm tri m khng phi khi ng li . Ngoi ra , Linux c th chy trn cc my tnh th h c vn khng th chy Windows 9x , thm ch c nhng my 486 vt trong kho .

Ta c th chia Linux thnh 2 phn :


- Linux Kernel :( H li ) Xc lp nhiu chng trnh cp thp v tng tc trc tip vi CPU . H li cung cp 2 chc nng cho h iu hnh : N cung cp mt h giao tip chung cho cc phn cng khc nhau tng cc m thanh vi cc chng trnh ngi dng . N xc lp ro chn gia 2 chng trnh khc nhau , nu mt chng trnh b hng chng trnh kia khng b n lm nh hng . y chnh l u im nht ca Linux so vi DOS v Windows .

Trang 2

Linux Shell
- Linux Shell : (H v ) Dng cung cp cho ngi dng mt h giao tip c thi hnh d dng , ging nh COMMAND.COM ca DOS . ng thi n cng c nhim v bo v ht nhn ca h iu hnh khi tc ng trc tip ca ngi s dng bi HH Linux c thit k cc Shell ny c lp vi cc thnh phn chnh ca HH . Khi bn s dng mt chng trnh Shell v g mt lnh no , Shell s thng dch v thc hin lnh ny ngay sau . N s a ra cc thng bo , bo li hoc cc thao tc tng ng . Ngoi ra , ngi s dng c th lp trnh vi Shell . Cc chng trnh ny c gi l Script ( ngn ng kch bn ) v chng c thng dch , thc hin bi cc Shell . Hin nay c nhiu loi Shell nh : sh (Bourn Shell ), bash (Bourn Again Shell ), tcsh , csh , pdksh (Public Domain Shell ) , zsh , ash v mc . Nhng ph bin l : sh (Bourn Shell ), csh (C Shell ) , ksh (Korn Shell ) . c th truy cp vo h thng , trc ht bn phi c quyn truy cp , bit c mt khu ( H iu hnh Unix lun c s phn bit ch hoa v ch thng , ch hoa ch dng vit tn ring v mt khu ) . Khi bn d truy cp c vo h thng , cc tin ch v ng dng c sn s xut hin theo mt trong hai cch sau : * S dng h thng thc n : to cho ngi dng s tin li khi s dng v ng thi cung cp cho ngi qun tr h thng mt phm vi bo mt to ln . Ngi qun tr h thng c th sp xp li h thng thc n ca bn bn c th truy cp n nhng ng dng v dch v cn thit . * Mi trng Shell : N i hi bn phi thnh tho vi cc lnh v cu trc ca Linux . Nu bn khng c h thng thc n , mi trng Linux Shell s c kch hot ngay sau khi bn ng nhp h thng . bit c bn ang u v xem ni dung th mc , bn hy g dng lnh : $pwd { print working directory } chuyn i th mc lm vic bn s dng lnh cd cng vi tn th mc m bn mun chuyn ti . Chng hn bn mun chuyn n th mc research th bn phi g : $cd research thot khi h thng (loging out ) bn g vo dng lnh : $exit hoc $logout hoc nhn t hp phm Ctrl - D Sau khi thot thot khi h thng trn mn hnh xut hin dng thng bo : Login :_ chm dt hot ng ca h thng ( phi chc chn rng bn thot khi tt c cc ng dng v ng tt c cc tp s dng ) bn g vo dng lnh : % shut down Sau khi cc qu trnh trn hon tt , trn mn hnh ca bn s xut hin dng ch sau : System is down .

Trang 3

Linux Shell

Chng II :

Tm hiu & s dng Linux shell


I- Cc lnh c bn trong Linux Shell :
1. Php kt gn :
Php kt gn cho php nh x mt phm c th theo mt hnh ng . V d , khi chng ta g phm ^A ti du nhc h v con tr s nhy n u dng. thun li , nhiu h v gn sn cho ngi dng cc phm gn sau : ^A Di con tr n u dng ^C Gi mt SIGINTR ( ngt ) ra h v ^D Hin th danh sch cc tp tin ^E Di n cui dng ^K Trit t con tr n cui dng ^N Di xung trong danh sch ^P Di ln trong danh sch ^U Trit nguyn c dng ^I Hon tt tp tin

Trang 4

Linux Shell
Trong trng hp c nhiu tp tin bt u bng cc k t ging nhau , h v s a vo nhiu k t ri pht ting ku beep thng bo cho chng ta bit c cc kh nng khc . V d : >rmdir direct (^I) >rmdir directory_I_want_to_ n y chng ta c th g lnh K hoc D , ^D c mt danh sch cc tp tin trong th mc hin hnh bt u bng cc k t . y chnh l tnh nng rt tin dng i vi cc tp tin hay th mc c tn di .

2. Chc nng ca mt s k t :
K Chc nng t * ? [ ] K t i din hay theo mu . & Chy ng dng ch nn , tr li du nhc h thng cho cc tc v khc . ; Du phn cch nhiu lnh trn mt dng lnh . \ Tt tc dng ca nhng k t c bit nh *, ?, [ , ], &, ; , >, <, | ',,,' Khi tham s l nhm t (c khong trng ) . "... " Khi tham s c khong trng v cc k t c bit ngoi tr k t $ v ' > nh hng d liu xut ra file . < nh hng d liu nhp t file . >> nh hng d liu xut ra cui file nu file tn ti . | nh hng d liu xut l d liu nhp cho lnh tip theo . '...' Du huyn d liu xut ca mt lnh lm tham s . $ S dng bin mi trng .

3. Cu trc th mc :
Linux t chc th mc v tp tin theo cu trc cy ging nh DOS v Windows . V ng dn , ta c th dng ng dn tng i hoc ng dn tuyt i nh DOS . Nhng thay v dng du " \ " phn cch cc cp th mc nh trong DOS th Linux li dng du " / " . /etc Cu hnh h thng cc b theo my /usr/bin Cha hu ht cc lnh ngi dng /dev Cc tp tin thit b /usr/man Cha cc ti liu trc tuyn /usr/include Cha cc tp tin chun ca C /var/log Cha cc tp tin lu tr thng tin lm vic hin hnh ca ngi dng /home Cha cc th mc con ca cc User /usr/local Cc chng trnh b sung khng thuc thnh phn ca mt h thng . Thng thng ./usr/local c cc th mc con nh sau : /usr/local/bin /usr/local/lib /usr/local/man /usr/local/include /usr/src V tr ca m ngun ( k c m ngun ca HH Linux ) /usr/lib Cha cc tp tin th vin ca cc chng trnh ngi dng

Trang 5

Linux Shell
Trong Linux : " . " cho bit l th mc hin hnh , " .. " ch th mc cao hn mt cp (th mc m ) . Nu ng dn bt u bng "/ " th h thng xem nh l mt tn ng dn y (tuyt i ) . ng dn bt u bng " ~ " l mt ng dn tng i. Nhng k hiu ny c th c s dng cng vi nhau . V d : " ~/.." c ngha l th mc m ca th mc ring. "../.." ch mt th mc cao hn th mc m . /home/user01# more ~/document/baocao tng ng vi /home/user01# more home/user01/document/baocao

4.C php dng lnh :


Cc lnh trong Linux thng bt u bng tn lnh (command) , sau lc (flag) v i s (argument ) : Command [ flag ] argument1 argument2 .... Cc c ( cn gi l la chn (option) ) trong DOS thng ng sau " / ", trong khi Linux li dng " - ". V d: trong DOS bn g " dir /a /o:d " th trong Linux bn g l "ls - lac " . Hu ht cc trng hp nhiu i s mt ch ci c th kt hp dng mt du " - " . V d : thay v dng lnh " ls -l -F " ta c th dng lnh tng ng " ls -lF " . Cc i s phi cch nhau bi du cch (space) hoc Tab . Nu trong i s c khong cch th phi t n trong cp ngoc kp ( xem thm mc 5.11 )

5. Mt s lnh thng dng:


5.1. To th mc : C php : mkdir <dir1> <dir2> ... <dirN> Trong <dir1> <dir2> ... <dirN> l cc th mc cn to . V d : mkdir thuchanh to th mc thuchanh mkdir thuchanh/baitap1 to th mc baitap1 l th mc con ca th mc thuchanh 5.2. Chuyn th mc : C php : cd <directory> Dng " . " chuyn n th mc hin hnh , " .." chuyn n th mc cha . V d : cd /usr/local/bin 5.3. Xem th mc hin hnh : C php : pwd 5.4. Xo th mc rng : C php : rmdir <dir1> <dir2> .... <dirN> 5.5. Xo tp tin hoc th mc : C php : rm <file1> <file2> .... <fileN> 5.6. Hin th thng tin v tp tin v th mc : C php : ls <danh sch file> | <Danh sch th mc> <tham s> <tham s> : - F : dng hin th vi thng tin v tp tin . Sau tn file , hin th du sao (*) nu l file thi hnh , du (@) nu l file lin kt , du ( / ) nu l th mc con , du chm ( . ) nu l file n .

Trang 6

Linux Shell
- l : (long) cho php lit k kch thc tp tin , ngi to ra , cc quyn ngi s dng ... lit k ni dung ca cc th mc con bn c th s dng c -R lit k cc file n bn s dng c -a v d : $ ls -lF total 75 drwxrwxr-x 2 user 12 user 12 1024 Apr 7 09:41 baitap/ drwxrwxr-x 2 user 12 user 12 1024 Apr 7 09:41 doc/ -rwxrwxr-x 1 user 12 user 12 71 Mar 31 10:39 hello* -rw-rw-r-1 user 12 user 12 126 Apr 7 09:26 baitho.txt -rw-rw-r-1 user 12 user 12 70 Apr 7 08:26 hello.c $ 5.7. Di chuyn tp tin , th mc : C php : mv <danh sch tp tin hoc th mc > <ch> <ch > : l tp tin hay th mc Lnh ny c th dng i tn tp tin hoc th mc (tng t lnh Rename ca DOS). 5.8. Sao chp tp tin , th mc : C php : cp <ngun > <ch > Lnh ny khng t ng sao chp cc th mc con tr khi bn s dng c -R 5.9. Xo cc tp tin hoc th mc : C php : rm <file> |< th mc> Nu bn dng lnh ny km vi c -i th trc khi nh xa mt file , my s hi li bn c thc s mun xo hay khng . Ch , lnh rm * s xo mi file trong th mc hin ti . 5.10. Hin th ni dung cc tp tin : Mi ln ch hin th y mn hnh (24 dng ) , mun xem trang tip theo th nhn phm spacebar . C php : more [-n] <danh sch cc tp tin > [-n] : ch nh s dng mi ln hin th l n dng . V d : $more baitho.txt //hin th ni dung tp tin baitho.txt $more mbox // xem tt c th lu trong hp th $more -4 grocery.txt \documentstyle[12pt] {article} \input{psfig} \input{/home/a_s/pehng/Teach/Mat466/std.top} --More--(0%) Dng thng bo --More-- c ngha l bn nhn phm spacebar xem phn tip theo, nhn phm q nu mun kt thc . Nu bn mun b qua n dng u tin th bn s dng c +n V d : $more +40 grocery.txt 5.11. Tm kim mt chui k t : C php : grep <chui cn tm> <tn file> Nu tm thy th tr v cc dng c cha chui cn tm . V d : grep New York // tm t " New" trong file " York" grep "New York" chun ( standard input) // tm chui "New York" trong u vo

Trang 7

Linux Shell
Chui k t hay biu thc cn tm c th kt hp vi cc k t c bit sau : K t Tc dng . Thay th cho mt k t .V d : b.d s tng xng vi bod and bad * v [ ] Xem mc 6. / Tt tc dng ca cc k t c bit .V d : /* s tm du * , // s tm du / ^ V d : ^704 s tm c m vng (bt u ) l 704 {} V d : g\{3,4} s tm bt c dng no c cha ggg hoc gggg V d : lnh grep '408.[0-9]\{3\}.[0-9]\{4\}' s tm mi s in thoi c m vng l 408; chng hn nh : 408-555-1212, 408.555.1212, 408.234.7890 .... 5.12. Tm kim mt tp tin : C php : - Tm theo tn : $find ngdn -name tntptin -print - Tm theo s i- node (i-num) ca tp tin : $find ngdn -inum number -print - Tm theo tn ngi s hu : $find ngdn -user username -print trnh cc thng bo li a ra mn hnh , ta c th i hng u ra chun (standard error ) ti mt tp tin rng ( / dev/null) : $find / -name tntptin -print 2>/dev/null V d : $pwd /home/user01 $find / -name ttyc2d1 -print 2>/dev/nul /dev/ttyc2d1 5.13. Hin th hng dn s dng lnh: C php : man <command> <command> l tn ca mt lnh hoc ca mt ti nguyn cn gi gip . V d : man ls //a ra gip ca lnh ls Bn c th dng c php sau hin th ni dung hng dn s dng lnh : Tn lnh --help 5.14. Ni cc tp tin : C php : cat <file1> <file2> ... <fileN> [ >filename] V d : $cat baitho.txt vanban.doc //hin th ni dung c 2 tp tin $cat baitho.txt vanban.doc > tonghop.doc //kt ni ni dung c 2 tp tin vo tp tin tonghop.doc 5.15.Phn hi li cc tham s a vo: C php : echo <arg1> <arg2> ... <argN> V d : $echo "hello" hello 5.16. Hin th tn my tnh ang lm vic : Linux ct thng tin v tn my trong tp tin /etc/hots C php: hostname

Trang 8

Linux Shell
$hostname Linux.edu 5.17. Nn mt tp tin : Tn tp tin nn ging nh tn ban u v km theo ui .gz C php : gzip <filename> Vi d : gzip vban.txt //tn tp tin nn l:vban.txt.gz 5.18. Gii nn mt tp tin : C php: gunzip <filename> 5.19. Gi hng dn : C php : man < command name > Lnh ny hin th ti liu Linux hoc cc trang gip ( man pages) v lnh <command name> 5.20. B danh ca lnh: (alias) C php : alias < tn lnh mi > = < tn lnh c > Lnh ny cho php bn t mt b danh cho mt lnh c , k c nhng lnh phc tp . V d : alias help=man // by gi bn c th dng lnh help cp hoc man cp hin th trang gip v lnh cp alias timedir="ls -art" Du ngoc kp l cn thit bi nu khng c n th shell s kt thc lnh khi gp du cch (space bar) v khi c -art s mt tc dng . Ch : vic t b danh t dng lnh ch c hiu qu trong phin lm vic hin hnh . c b danh c kch hot mi khi ng nhp (log on ) , hy nh ngha b danh trong file .profile nu bn s dng Born shell , trong file .login nu bn s dng C shell. 5.21. clear : Xo mn hnh . 5.22. date : Hin th ngy thng hin hnh ca h thng . 5.23. time : Hin th thi gian hin hnh ca h thng . 5.24. useradd : Thm ngi dng vo mng . 5.25. passwd : t li password ngi s dng . ( Tin ch mc trn Linux c giao din lm vic ging nh trnh NC (Norton Commander) . khi ng mc , t du nhc lnh g : $mc V d :

6. Cc k t i din dng trong cu lnh :


6.1. Du sao (*) : i din cho mt nhm k t bt k . V d : cat sales* > allsales // kt ni mi file c tn bt u l sales vo trong file c tn l allsales ls *rep* // hin th mi file m tn ca n c cha "rep" ls .*rep* // hin th mi file n m tn ca n c cha "rep" 6.2. Du chm hi (?) : i din cho mt k t bt k . V d : lp ??x // in ra cc file m tn c 3 k t , bt u bng 2 k t bt k, cn k t cui l x 6.3. Du ngoc vung ([ ]) : Ch phm vi cc k t c i din . V d : ls job[123] // ch hin th cc file :job1, job2, job3 ls [A-Z]* // ch hin th cc file c tn bt du bng ch in hoa .

Trang 9

Linux Shell
ls [A-Z,a-z] ch ci. // ch hin th cc file c tn bt du bng

7.Kt ni cc tin trnh vi cc ng dn (pipes) :


Vic kt ni lin tip cc lnh bng vic s dng ng dn ( k hiu l | ) lm cho u ra (output ) ca chng trnh hay lnh pha tri ca ng dn l u vo (input ) ca chng trnh hay lnh pha phi ca ng . V d : sort allsales | lp // sort (la chn, sp xp , phn loi ) file tn l allsales ri in n . cat sales* | sort | lp // in ra danh sch d liu sp xp (sort) trong cc file c tn bt u l sales .

8. nh hng li u vo v u ra : (Redirecting Input and Output )


S dng du nh hn (< ) nh hng li u vo vo trong mt chng trnh hay mt lnh t mt file thay v mt thit b u cui (terminal:bn phm ...) . Gi s bn mun gi mt file tn l info bng e-mail n mt ai c a ch l sarah . Thay v bn phi g li ni dung ca file cho lnh mail , bn c th s dng file info nh l u vo ca lnh mail bng cch nhp vo dng lnh sau : mail sarah < info S dng du ln hn (>) nh hng li u ra ca mt chng trnh hay mt lnh n mt file thay v n mn hnh (terminal) (u ra c t trong mt file) . Lnh date hin th thi gian v ngy thng hin ti ra mn hnh . Nu bn mun lu tr thi gian v ngy thng hin ti vo mt file tn l now th bn nhp dng lnh sau : date > now Ch : nu tn file bn pha phi ca du > tn ti th n s ghi . Hy cn thn ng mt nhng thng tin hu ch bi cch ny . Nu b mun b sung hoc kt ni thng tin vo mt file ang tn ti , hy dng hai du ln hn (>>) . V d : date >> report // b sung ngy thng hin ti vo file tn l report sort < sales >> salesreport // d liu trong file sales va c a vo lnh sort va c b sung vo file salesreport .

9. Bin mi trng ca Shell :


Mi trng ca Shell cha mt s bin c nh ngha trc . Lnh set cho php lit k danh sch cc bin ca mi trng . Di y l danh sch cc bin mi trng thng c : HOME cha tn th mc tip nhn LOGNAME tn ngi s dng PATH tn ng dn cho cc lnh PS1 du nhc 1 PS2 du nhc 2 TERM kiu ca thit b cui(terminal: bn phm hoc mn hnh) FCEDIT EDITOR chng trnh son tho nht k PRID s ca tin trnh cha ca Shell PWD th mc hin hnh SHELL tn Shell ang dng

Trang 10

Linux Shell
RANDOM SECONDS s ngu nhin thi gian lm vic tnh theo giy

10. Bin thay th :


Cc bin Shell c lu tr nh mt chui . Khi 2 bin c t cng nhau , cc chui ring ca chng c ni li ( cc bin c dng km vi du $ trc ). V d : gi s ta c 2 bin X=hello , Y=world $echo $X$Y //cho kt qu l helloworld $echo $X $Y // cng cho kt qu l helloworld $echo $XY // cho kt qu l helloY 11. S thay th kt qu ca lnh : C php : command1 parameter `command2` Lnh 2 (command2 ) c thi hnh trc v kt qu ca n c xem nh l mt tham s ca lnh 1 (command1 ). Ch : du " ` " l du nhy ngc (backquote ) , phm backquote nm trn phm Tab trn bn phm . V d : $echo Today\`s date and time are `date` cho kt qu l : Today`s date and time are Mon May 18 14:35:09 EST 1994

12. Tm hiu Nhm lnh (Command Group) v Shell di (Subshell) :


Nu bn mun t mt hay nhiu lnh trn mt dng lnh trc khi nhn Enter, bn c th s dng c php di y . Shell s thi hnh tun t cc lnh . command1; command2; command3 V d : $clear;ls // xo mn hnh v hin th th mc Nhm lnh : Nu bn mun nh hng li u vo v u ra cc lnh nh mt nhm , bn c th to mt nhm lnh . Mt nhm lnh c nh ngha nh l mt s lnh c bao bi du ngoc mc ({ }) . Lnh sau nh hng li u ra ca c 2 lnh n file tn l output-file : {command-1;command-2} > output-file u ra ca mt nhm lnh c th c "t ng "( can be piped) .V d : {command-1;command-2} | command-3 Subshell : Khi bn chy mt chui cc lnh nh mt nhm lnh , cc lnh ny chy trong Shell hin ti . Nu mt trong nhng lnh thay i mi trng hoc thay i th mc th khi nhm lnh chy xong , nhng thay i s b nh hng . trnh vn ny , nn chy nhm lnh trong subshell . Subshell l mt bt chc (clone) ca Shell hin ti , nhng bi v cc tin trnh con khng th thay i mi trng ca tin trnh cha , mi lnh chy trong mt subshell khng nh hng n mi trng khi nhm lnh kt thc . chy mt nhm lnh trong subshell ,ta thay th ngoc mc bng ngoc n .V d phn trn tr thnh : (command-1;command-2) | command-3 Ch command-3 chy trong shell hin hnh , cn u ra ca subshell c t vo ng thnh u vo chun ca command-3.

13. Son tho lnh :


Son tho lnh c ngha l sau khi bn nh vo mt lnh v trc khi nhn Enter Bn c th son hoc thay i cc phn ca lnh m khng phi nh li phn ln lnh . bin son lnh , bn nhn phm <Esc> chuyn sang ch

Trang 11

Linux Shell
son tho v sau s dng bt k lnh di chuyn dng no ca trnh son tho vi sa i lnh . Bn c th s dng phm <backspace> , s dng cc lnh khc ca vi nh x xo mt k t , r thay th mt k t .....

14. Xem li lnh v thi hnh li lnh thc hin : (Viewing Command History)
c trng ny cho php bn xem li cc lnh nhp vo trc v gi li chng . Khi bn kt hp c trng ny vi vic son tho lnh , bn c th d dng sa li trong nhng lnh phc tp v gii quyt hiu qu vi mt s cng vic lp li . Lch s lnh (the history command) hin th danh sch cc lnh c m shell lu li . Cc lnh c nh s . Chng hn , thi hnh lnh 10 , bn hy nhp vo :! 10 . Bn c th dng cc phm mi tn gi li cc lnh trc .

15. Lm vic vi kch bn Shell (Shell Script) :


Shell script l mt tp hp ca mt hoc nhiu lnh shell trong mt file . thi hnh cc lnh , bn nh vo tn ca file . Shell scipt em li nhng thn li sau: - bn khng phi nh li lin tip cc lnh . - bn xc nh cc bc hon thnh mc ch mt ln . - bn n gin ho cc thao tc cho chnh bn v cho ngi khc . Cc bc to mt Shell script : 1. S dng mt trnh son tho vn bn , chng hn vi hoc emacs , hy t cc lnh shell vo trong mt file vn bn hoc file ASCII ri dt cho file mt tn . 2. to mt file thi hnh , ta dng lnh sau : chmod +x <tn file> 3. Th lnh bng cch g tn lnh v nhn Enter . Bn c th kim tra mt shell script v thy mi bc n thc hin bng cch nhp vo dng lnh sau : sh -x script-name Trong c php trn , script-name l tn ca script m bn ang xem xt . Lnh sh -x rt hu ch khi bn ang th d tm li ca mt script .

II- Phn quyn s dng - Bo v tp tin, th mc :


1. Phn quyn s dng : Linux a ra 3 loi phn quyn s dng i vi ngi s dng : - c (ch cho php c ); Ghi (cho php thm hoc hu) ; Thc hin (thc hin cc chng trnh ng dng hoc cc tp Shell script ) Linux cho php bn kim sot 3 loi quyn c bn ny vi 3 loi ngi s dng : - Ch s hu : l ngi u tin to ra tp ny . - Nhm ngi dng : nhng ngi dng Linux c th tham gia vo mt nhm lm vic no hoc khng . Nhng ngi dng trong cng mt nhm cng tham gia vo mt d n . -Nhng loi ngi dng khc : l nhng ngi khng thuc 2 loi trn .

2. M t ngi s dng :
Mt ngi s dng c m t bng cc thng tin sau ;'

Trang 12

Linux Shell
- Username : tn ngi s dng - password : mt khu ( nu c) - uid : s nhn dng (user identify number ) - gid : s ca nhm (group identify number) - comment : ch thch . - th mc ch (Home directory) - [ Tn chng trnh cho chy lc bt u phin lm vic ] Cc thng tin trn c cha trong tp tin / etc / passwd

3. M t nhm ngi s dng :


Mt nhm ngi s dng l tp hp ca mt s ngi s dng c th dng chung cc tp tin ca nhau . Mt nhm ngi s dng c m t bng cc thng tin sau : - groupname tn ca nhm - password [mt khu] - gid s ca nhm - [danh sch nhng ngi khch ] Cc thng tin c cha trong tp tin /etc/group

4. Bo v cc tp tin v th mc : 4.1. Cc quyn thm nhp tp tin :


Khi tp tin c to lp , cc thng tin sau y ng thi c ghi li : - gid ca nhm ngi to tp tin - uid ca ngi to tp tin - cc quyn thm nhp tp tin khc ... Tp tin c bo v bi mt tp hp cc bit nh ngha quyn thm nhp : r (quyn c ) , w ( quyn ghi ), x ( quyn thc thi ) , suid( set user-id) , sgid (set group-id) i vi th mc : r : quyn c ni dung th mc w: quyn to v xo cc tp tin trong th mc x : quyn qua li (crossing) th mc

4.2. Lnh ls -l hoc ls -lF


Lnh ny lit k danh sch cc tp tin v cc thuc tnh ca chng trong mt th mc , qua ta c th pht hin loi tp tin , cch bo v , ngi s hu v kch thc ca chng . V d : $ls -l /bin - rwxrwwxr -x 1 bin bin 16336 Mar 8 1998 cat - rwxrwwxr -x 3 root bin 16124 Mar 8 1998 cp trong : ct 1: loi tp tin v quyn thm nhp . Du tr '-' u c ngha l tp tin thng . Du tr '-' trong dy bt c ngha khng c quyn truy cp tn ng bit . tit kim ch ngi ta t bit n vo cng mt ni vi bit x v k hiu : - s nu x tn ti (bit s: set uid hoc set gid khi chy tp tin )

Trang 13

Linux Shell
- S nu x khng tn ti ct 2 : s lin kt ( link number) ct 3 : tn ngi s hu (owner) ct 4 : tn nhm s hu ct 5 : kch thc tp tin ct 6,7,8 : ngy sa i gn nht ct 9 : tn tp tin

4.3. Thay i quyn thm nhp , lnh chmod:


Lnh chmod cho php thay i quyn thm nhp cc tp tin v cc danh mc . C th chy lnh theo 2 cch : - Cho thng s tuyt i : C php : chmod mode filename Trong : thng s mode l mt c s 8 (octal ) rwx r-x r-111 101 100 7 5 4 chmod 754 tn tp tin - Dng cc k hiu tng trng : chmod {a,u,g,o}{+,-,=}{r,w,x} <filename> Cu lnh chmod c dng thit lp mc c quyn ca tp tin . Ch nhng ngi s hu tp tin ny mi c th thay i c mc c quyn i vi tp tin ny . Trong : u c ngha user g c ngha group o other a all Cc ton t : + thm quyn bt quyn = gn gi tr khc Quyn : r Cho php c ghi w Cho php ghi x Quyn thc thi tp tin s Thit lp suid hoc guid V d : $chmod g -w , o +r baitho.doc Ngha l :+ Bt quyn ghi tp tin (w) baitho.doc cho nhm (g) + Thm quyn c tp tin (r ) baitho.doc cho cc ngi s dng khc $chmod a+r baocao.txt // tt c ngi s dng c th c c $chmod +r baocao.txt // lnh ny tng ng lnh trn $chmod og-x baocao.txt// khng cho thc thi $chmod u+rwx baocao.txt// cho php ngi s hu c, vit v thc thi $chmod o-rwr baocao.txt // khng cho truy nhp tp tin $chmod 777 * // t tt c cc quyn cho tt c cc i tng s dng i vi ton b tp tin trong th mc hin hnh

4.4. Thay i ngi hoc nhm s hu tp tin :


- Lnh chown cho php thay i ngi s hu . - Lnh chgrp cho php thay i nhm s hu .

Trang 14

Linux Shell
V d : $echo Hello > file1 $chmod 700 file1 $ls -l file1 - rwx - - - - - - 1 user1 file1 $cat file1 $chgrp animator file1 $ls -l file1 $cat file1

stagiar 6

Apr

14:06

Chng III :

LP TRNH VI SHELL
lp trnh vi Shell , bn phi bit v cc bin v cc cu trc iu khin . Bin l mt i tng m ti bt c thi im no bn cng c th gn li mt gi tr khc cho chng . Cu trc iu khin cho php bn iu khin s thc thi ca mt script . C 2 kiu cu trc iu khin : cu trc r nhnh ( nh cu trc if ... then ...else fi v cu trc case ) v cu trc lp ( nh vng lp for hoc while ) . S dng echo : Bn c th s dng lnh echo hin th nhng g xy ra trong mt scipt . Lnh echo hin th cc i s ca n ra mn hnh . Bn cng c th nh hng li kt qu ca echo n mt file . V d : echo "Please stand by ..." s hin th ra mn hnh dng ch sau : Please stand by ... Dng lnh sau s t Please stand by ... vo trong file c tn l messg : Echo " Please stand by ..." >messg S dng ch thch : Du "#" l bt u mt ch thch ca Shell .Shell s b qua mi k t nm sau du "#"cho n cui dng . Tnh trng thot : (Exit Status) Khi mt lnh Shell thi hnh , n c th thnh cng hoc khng . Shell lun tr v tnh trng kt thc ca mt lnh , chng trnh hoc Shell script . Gi tr tr v c gi l tnh trng thot (exit

Trang 15

Linux Shell
status) ca lnh v c i din bi bin $? . Nu $? c gi tr l 0 , lnh thnh cng, cn ngc li l khng thnh cng . Bn s thy gi tr ca $? nu nhp vo lnh sau : grep "American Terms" custemers echo $?

I. S dng bin trong chng trnh Shell :


s dng cc bin , bn phi bit cch t mt gi tr vo mt bin v cch truy cp gi tr ct trong bin . C 4 cch t mt gi tr vo
mt bin : Dng php gn trc tip S dng lnh read S dng cc tham s ca dng lnh Thay th u ra ca mt lnh

1. S dng php gn trc tip :


myemail=edsga@crty.com Biu thc trn y vo bin myemail gi tr l edsga@crty.com . Lu rng hai pha ca du bng "=" khng c khong trng . Nu gi tr ca bin c khong trng th phi t n trong du ngoc kp . V d : myoffice="Room 21 , Suit C" Shell s tm li c gi tr ca bin bt c khi no n thy du "$" trc tn bin . V d : echo "My e-mail aress is $mymail" Gi s bn cn copy file tn l current vo th mc /corporate/no/public/sales , bn nhp vo lnh sau : cp current /corporate/no/public/sales Bn c th gn tn th mc di vo mt bin nh lnh sau : corpsales=/corporate/no/public/sales ri copy file current vo th mc bng lnh sau : cp current $corpsales

2. S dng lnh read : Lnh read tm ngng script v i ngi s dng nhp vo t bn phm ri gn cho tn bin . Khi phm Enter c n th script c tip
tc . Nu nhn " ^d" trong khi lnh read ang i nhp th script c kt thc . V d sau nhc ngi s dng nhp vo tn file c copy : corpsales=/corporate/no/public/sales echo "Enter name of file to copy " read filename cp $filename $corpsales

3. S dng cc tham s dng lnh :


Cc tham s dng lnh c phn cch bi t nht mt k t trng (Nu trong i s c khong trng th phi t n trong cp ngoc kp ) . Tn lnh v cc i s c gn cho cc bin l $0, $1 ,....,$9 . Tn lnh l $0 , i s th nht ca lnh l $1 , i s th 2 ca lnh l $2 , ...., c th cho n $9 . Ngoi ra : $# ch s cc tham s , $" ch tt c cc tham s , $$ ly PID ca Shell scrpit . Ta xem xt Shell script v d sau c tn l shovars (show variables ) :

Trang 16

Linux Shell
# Name : shovars echo $0 echo $2 $4 echo $3 Gi s ta nhp vo dng lnh sau : shovars -s hello "look at me " bart

kt qu l :
shovars hello bart look at me

Shell script sau s xa mt file nhng trc file c copy vo th mc /tmp : # Name : safrm
cp $1 /tmp rm $1 Bn c th i din mi tham s trn dng lnh bng $*

4. Thay th u ra ca mt lnh :
Bn c th gn cho mt bin kt qu mt lnh c thi hnh . V d : cwd='pwd' // lu tn th mc hin hnh vo bin cwd Ch l pwd t trong cp du nhy ngc " ` " (du ny nm ngay pha trn phm Tab) ch khng phi du nhy n . Ta xem mt script i tn file sau : # Tn : stamp # Mc ch :i tn file bng cch b sung vo tn file ngy hin ti t d=`+%m%d%y` mv $1 $1.$td

Nu hm nay l ngy Sep 02 , 2001 v thc hin lnh stamp myfile th myfile b i thnh myfile.090201.

II . Cc cu trc iu khin :
1. Cu trc case :
C php : case word in pattern) statement(s);; pattern) statement(s);; .......... esac Nu i s word tng ng vi i s pattern th cc lnh statement pha sau n s c thi hnh . Lu l lnh c kt thc bng 2 du " ; " v kt thc cu trc case bng t kha esac (vit ngc li ca t case) . V d : # Name : Menu # Mc ch: cho php ngi s dng in mt file , xa mt file , hoc thot chng trnh echo "Please choose either P, D or Q to : " echo "[P]rint a file " echo "[D]elete a file "

Trang 17

Linux Shell
echo "[Q]uit" read response case $response in P|p) echo "Name of file to print :" read filename lp $filename;; D|d) echo "Name of file to delete :" read filename rm $filename;; *) echo "leaving now" esac "P|p" c ngha l "P" hoc "p" . " * " i din cho tt c cc k t khng phi l D, d , P hoc p . Ta c th ly s cc i s ca dng lnh bng cch dng "$#" .

2. Cu trc if :
C php : if command1 then command2 else command3 fi V d : # Tn : checkname # Mc ch: xc nhn nu ngi ang ng nhp h thng # Cch dng : checkname login_name if who | grep $1 > /dev/null then echo "$1 ang ng nhp h thng ." else echo "$1 khng c y ." fi

3. Cu trc lp for :
Vi vng lp for , bn c t mt tp hp cc file hoc cc gi tr s dng vi mt s lnh . copy mi file c tn tn cng l .txt n th mc textdir ,bn s dng vng lp for nh sau : for i in *.txt do cp $i textdir/$i done Khi thng dch Shell cho php bin i nhn tn ca bt c file no trong th mc hin hnh m c tn kt thc bng .txt . Bn c th s dng bin $i vi bt c cu lnh no nm gia t kha do v done . Script sau y s in mt hoc nhiu file , file no in c th b sung tn file vo file c tn l printed , cn file no khng in c th b sung tn file vo file notprinted . K t $* i din cho mi tham s ca dng lnh . for i in $* do if lp -t $i -dlasers $i > /dev/null

Trang 18

Linux Shell
then Echo $i >>printed else Echo $i >>notprinted fi done

4. Cu trc while :
Ta xem xt script sau : #Tn : checkmail #Mc ch : thng bo cho ngi dng nu hp th ca h c thay i #MAIL l bin c bit cho bit hp th ca ngi s dng # ly kch thc ca hp th so snh cp $MAIL omail while diff omail $MAIL > /dev/null # lnh diff so snh 2 file do cp $MAIL omail sleep 30 # ngng 30 giy done echo "New mail ! " | write $LOGNAME Script trn s dng vng lp khi hp th c s thay i ( tc l $MAIL khc omail) v khi s thng bo "New mail !" . thot ki cc vng lp for v while ta dng lnh break . Lnh break(n) cho php ra khi n mc ca vng lp . Lnh continue cho php b qua cc lnh cn li v bt u chu trnh mi .

III . Lnh test :


1. Cc la chn kim tra tp :
La chn -f -d -r -s -w -x V d : ngha Thnh cng nu file tn ti v l file hp l Thnh cng nu file l mt th mc Thnh cng nu file tn ti v c th c Thnh cng nu file tn ti v khng rng Thnh cng nu filetn ti v c th ghi Thnh cng nu file tn ti v c th thc thi test -r abc # Thnh cng nu file tn ti v ch c

2. Cc la chn kim tra s :


La chn ngha -eq Bng nhau (equal) -ne Khng bng nhau (Not equal ) -ge Ln hn hoc bng (Greater than or equal ) -gt Ln hn ( Greater than ) -le Nh hn hoc bng (Less than or equal ) -lt Nh hn (Less than ) V d : # Tn script: chao

Trang 19

Linux Shell
hour=`date +%H` # ly gi if test $hour -lt 12 # nu trc 12 gi ... then echo "Good Morning, $LOGNAME" else if test $hour -lt 17 # nu trc 17 gi ... then echo "Good Afternoon, $LOGNAME" else echo "Good Everning, $LOGNAME" fi fi

3. Kim tra xu k t : C php :


["str1"="str2"] test "str1" != "str2" test -z "$a" test -n "$a" : ng nu str1=str2 : ng nu str1<str2 : ng nu xu trong bin a rng : ng nu xu trong bin a khng rng

4. Kt hp cc iu kin : Cc ton t so snh c th t hp vi :


-a : v -o : hoc ! : o ( ph nh ) \( ... ... )\ : gp V d : $test \( -r file1 -o, -r file2 \) -a -w file3 Lnh trn ng nu ((file1 tn ti, ch c hoc file2 tn ti ,ch c ) v file3 tn ti , c th ghi ) .

IV . Cc php tnh s hc:


Let c dng thc hin cc php tnh s hc
Cc ton t s hc : +, -, *, /, % Cc ton t so snh : >=, >, <, <=, = = , != Cc ton t logic : ! , && , | | V d : $integer I=10 j=2 k # khai bo cc bin I , j , k $let "k=I+j" $echo $k # kt qu l : 12 $((I<j)) $echo $? # kt qu l: 1

V . Xut mt bin n mt Shell mi :


C php : export Tn bin Khi bn to cc bin Shell hoc cho gi tr cc bin ang tn ti , chng tn ti trong qu trnh Shell ang chy . Mt bin c t trong Shell
lc ng nhp h thng l c gi tr i vi mi i s ca dng lnh . Mt bin

Trang 20

Linux Shell
t trong mt Shell ch c gi tr trong Shell . Gi tr khng xut hin hoc c t li khi bn thot Shell . Gi s bn vit mt Shell script tn l whatday nh sau : echo " Today is $today ." today=Friday echo " Today is $today " By gi nhp vo 4 lnh sau t dng lnh : chmod +x whatday # lnh ny dch script trn thnh file whatday today=Thursday whatday echo $today Cc dng sau s xut hin trn mn hnh : Today is . Today is Friday . Thursday Gi tr Thursday ca bin today trong login Shell khng c tc dng trong script whatday . Khi script thi hnh th bin today vn cha c nh ngha (nn hin th Today is . ) cho n khi n nhn gi tr l Friday. Khi script kt thc , bn tr v login Shell v bin today vn gi gi tr l Thursday . Nu ta thm lnh xut bin " export today " vo : today=Thursday export today whatday echo $today Th cc dng sau s xut hin trn mn hnh : Today is Thursday . Today is Friday . Thursday Nu bn mun thay i cc bin mi trng th phi t li bin mi trng trong file .profile v theo sau n l lnh xut bin export . V d , dng mt trnh son tho vn bn t cc dng sau vo file .profile : PS1="Xin chao $" # t li du nhc $ thnh Xin cho $ export PS1 TERM=vt100 # t li kiu thit b cui l vt100 export TERM Ch : Nhng thay i do bn to ra trong file .profile hoc .login khng nhn c hiu ng cho n khi bn thot khi h thng v ng nhp tr li .

Trang 21

Linux Shell

Chng IV :

Cc loi Shell khc nhau


I. Bourne Shell :
Bourne Shell c bit vi tn sh l mt trong nhng loi Shell u tin v thng dng nht hin nay . bt u s dng Shell bn hy g lnh : $sh Khi con tr lnh s chuyn sang dng mi l mt du la ($) Khun dng chung cho cc lnh trong Bourne Shell l : $ command arg1 arg2 .... argn Trong : arg1 arg2 .... argn l cc tham s ca lnh . lit k cc bin hin c ca Bourne Shell bn hy s dng lnh : $ set BNG LIT K CC BIN Tn bin Gi tr HOME / home / a-Function /gmeghab LANG C PS1 $ PS2 > PWD / bin TZ US / Eastern ISF = PATH (lit k tt c cc th mc m ngi dng hin thi c quyn truy nhp ) SHELL / bin / csh TERM Wyse50

Trang 22

Linux Shell
OLWMMENU / home / a-s / gmeghab / .openwin OPENWINHOM / usr / openwin E USER Gmeghab Bt k bin no trong danh sch trn u c th thay i c gi tr bng c php: $ variable = value xem gi tr ca tng bin ring bit bn s dng lnh : $ echo $ <tn bin> Cng ging nhng Shell khc ,trong Bourne Shell th mt Script l mt tp cha chui cc lnh thc hin theo ng th t sp xp trong tp . Bn c th s dng bt k trnh san tho no son mt tp Script . V d : Son tho mt tp Script c tn l Morning : $cat Morning date users who To tp tin c tn File1 $cat File1 aa bb OK Vi Script , chng ta cng c th thc hin mt chui lin tip cc Script bng cch g chng trn cng mt dng lnh v m Script ngn cch vi nhau bng mt du chm phy (;) . V d : $morning ; afternoon ; evening lit k tt c cc lnh ca Bourne Shell bn hy c cc ti liu c sn bng cch g lnh sau : $ man sh

II. Korn Shell :


Korn Shell cng tng t nh Bourne Shell ,ngai n c thm bn chc v rt quan trng m Bourne Shell khng c : + Theo di hat ng ca ngi dng (history file) . + Qun l cc hot ng ca ngi dng (jod control) . + Chc nng thao tc vi cc b danh . + Trnh son tho lnh (command editor) . chy Korn Shell bn hy chy chng trnh c tn : ksh . Korn Shell cng nh ngha cc bin cc b ca ring n v mt phn ca cc bin ny c tn v chc nng ging nh trong Bourne Shell , ngoi ra cn thm mt s bin sau : Tn bin Gi tr PS3 Thng bo cho lnh SELECT PS4 Thng bo cho lnh TRACE SECOND Thi gian tnh bng giy np Shell TMOUT Thi gian s dng Shell PRID ID ca tin trnh Shell

Trang 23

Linux Shell
Cc lnh trong Korn Shell : - Thay i cc gi tr ngm nh ca cc bin cc b : $ variable = value - Xem chi tit mt lnh no : $ type command_name - Xem chi tit v thi gian thc ,thi gian do ngi dng nh ngha v thi gian ca h thng : $ time

III. S dng C Shell :


C Shell c thit k thay th Bourne Shell , tn ca chng trnh l csh n c xy dng da trn ngn ng lp trnh C . a. B danh : s dng cc lnh ca C Shell mt cch nhanh nht ,bn gn cho mi lnh ny mt b danh no . thc hin nh vy bn nh lnh : % alias newcommandname oldcommandname options V d : gn b danh cho lnh ls bn lm nh sau : % alias li ls-als T y bn c th s dng lnh ls-als bng lnh li . Ngoi vic gn b danh cho lnh , bn cng c th tin hnh gn b danh cho cc ng dng sn c . V gn b danh cho trnh ng dng matlab bn lm nh sau : % alias matlab/usr/bin/matlab b. Xem cc thng tin v cc tin trnh : Lnh whodo c s dng lit k thng tin v cc tin trnh trong h thng , ng thi cc tin trnh ny do ngi no s dng . Lnh %ps[ts] c s dng xem thng tin v trng thi ca cc tin trnh . Vi [ts] : tham s i km . Mt s tham s ty chn ca lnh ps Ty chn ngha -a Hin th tt c cc tin trnh -u process Hin th tt c cc thng tin lin quan n tin trnh id hin ang hot ng vi id cho ,cc thng tin ny bao gm :id ca ngi dng ,id ca tin trnh ,thi gian bt u hot ng , thi gian kt thc , thi gian s dng CPU , tn lnh gi tin trnh . -x terminal Ch nh thit b cui c s dng hin th thng tin . -e Hin th cc thng tin lin quan n cc tin trnh bao gm : id ca tin trnh ,thit b cui ,thi gian ,tn lnh . -f Hin th tt c cc thng tin lin quan n cc tin trnh bao gm : id ca ngi dng ,id ca tin trnh ,thit b cui . Nu khng c tham s i km , lnh ps s xut ra thng tin v tt c cc chng trnh ang chy . Tiu ngha PID ID ca tin trnh

Trang 24

Linux Shell
TT S TIME COMMAND Thit b cui iu khin tin trnh Tnh trng ca tin trnh Thi gian s dng CPU ca tin trnh Tn lnh gi tin trnh ny

c. Cc bin : Ging nh tt c cc Shell khc , C Shell cng c nhng bin ring ca bn thn n ,vi nhng bin ny bn c th tin hnh khai hoc gn gi tr . khai bo mt bin trong C Shell bn c th s dng mt trong ba lnh sau : set ,@ setenv . Khai bo bin bng lnh set : khai bo hoc gn gi tr cho mt bin cc b bng lnh set bn s dng c php : $set username $echo $username xa bin va c thm vo danh sch (username) bn lm nh sau : $unset username $ set lit k tt c cc tn trong tp th mc hin thi bn lm nh sau : $ echo* Bn cng c th gn gi tr cho bin t bn phm bng cch : $ set newname = $< Bn cng c th kim tra kch thc (s phn t ca mng ) bng lnh : $ echo $# variable Khai bo bin bng lnh @ : Lnh @ khai bo cc bin cc b , tuy nhin lnh ny yu cu ngi dng ch c khai bo v gn cc bin c gi tr s . % @ name @: syntax error % @ name = 5 % echo $name 5 Lnh @ cng cho php bn tnh tan cc biu thc s . C php tnh tan biu thc s vi lnh @ han ton tng t nh c php s dng trong ngn ng C . Cc bin ca Shell v cc bin mi trng : Cc bin trong C Shell c phn bit lm hai loi : bin ca Shell v bin mi trng . Bin mi trng c hin th bng cc ch ci hoa , bin ca Shell c hin th bng ch ci thng . Cc bin mi trng c th s dng bi cc tin trnh con ca C Shell trong khi cc bin cc b th khng . Cc bin ca C Shell c lu trong hai tp : .login v .cshrc . hin th gi tr ca cc bin lu gi trong hai tp ny bn s dng lnh cat : $cat.cshrc ... $ cat.login ...

Trang 25

Linux Shell
Lnh sentenv hin th tt c cc bin mi trng , nhng bin ny c h thng hin th bng cc ch hoa . $sentenv Cc bin ca Shell thng c s dng nht : Tn bin M t $argv Bin ny c tha k t mi trng lp trnh C , trong argv [0] cha tn chng trnh , argv [1] cha tham s u tin ca dng lnh . $cdpath Bin ny c cha trong tp .cshrc v cha tn cc th mc , bin ny tc ng n s hot ng ca lnh cd . $cwd Th mc lm vic . $history Bin ny qun l kch thc ca danh sch lu tr qu trnh s dng (history list) . $home Cha th mc gc ng vi tng ngi dng (th mc gc ny thng c tham chiu bi k hiu ~) . $ignoreoff Khi gi tr ca bin ny c t ta phi s dng ta phi s dng lnh exit chm dt vic s dng Shell thay v s dng t hp phm Ctrl+d . $mail Tp lu gi hp th ca ngi dng . $noclobbe Bin ny c t ta khng th ghi mt cch v tnh ln r mt tp c sn khi bn nh hng li u ra (output) . $path Bin ny c lu trong tp .cshrc , n cha nhng th mc m ta hay s dng nht , v khi ta g mt lnh no ta khng nht thit phi g y tn v ng dn ca th mc . $prompt Bin ny c lu trong tp .cshrc , cha du nhc m ngi dng s nhn thy trn dng lnh . $savehist S lng cc lnh bn s dng khi bn chm dt vic s dng . $status Bin ny cha trng thi kt thc ca lnh c s dng gn y nht Nu lnh ny c thc hin thnh cng th gi tr ny s l 0 v ngc li gi tr ny l -1 . $shell Cha th mc ca Shell . Vi C Shell th gi tr ca bin ny l /bin/csh .

IV. Lp trnh vi C Shell :


Ngi dng c th s dng ngn ng lp trnh ca Shell khng ch c s dng thc hin mt chui cc lnh . Gi s bn cn to mt th mc mi v sao chp tt c cc tp mt th mc sn c vo th mc mi ny . thc hin cng vic t ra bn cn phi s dng c ch lp , khi nim v cch s dng c ch ny trong lp trnh vi C Shell c trnh by trong phn sau y :

a. Cu lnh if :
C php : V d : if (express) command #!/ bin/ csh set bad = 0

Trang 26

Linux Shell
If ($bad = = 0) echo "I am bad" Chng trnh trn khai bo bin c tn bad nh mt bin cc b v gi tr u l 0 . Cu lnh if kim tra gi tr ca bin bad v a ra thng bo "I am bad" trn mn hnh .

b. Cu lnh if-else : C php : If (express)


Commands Else Commands Endif V d : #!/ bin / csh set mychoice = openwin If ($mychoice = = openwin) # unset mychoice echo-n "Starting Open Windows ..." clear # get rid of annoying cursor rectangle echo-n "Automatically logging out ..." # else # unset mychoice echo-n "Starting Sun View ..." #default Sun View ... echo-n "Automatically logging out ..." # endif ( Trong chng trnh , mychoice l mt bin cc b v t gi tr ban u ca bin l openwin . Cu lnh If-else kim tra gi tr ca bin mychoice : + Nu mychoice = openwin th xa bin mychoice v a ra thng bo : "Starting Open Windows ..." "Automaticlly logging out ..."

c. Cu lnh Switch :
C php : Switch (express) Case comparasion 1 : Commands Breaksw Case comparasion 2 : Commands Breaksw Default : Endsw V d : #!/ bin / csh set mychoice = openwin

Trang 27

Linux Shell
Switch($mychoice) Case openwin : unset mychoice echo-n "Starting Open Windows ..." clear # get rid of annoying cursor rectangle echo-n "Automatically logging out ..." breaksw # case sunview : unset mychoice echo-n "Starting Sun View ..." #default Sun View ... echo-n "Automatically logging out ..." # endsw (Trong chng trnh , mychoice l mt bin cc b v t gi tr ban u ca bin l openwin . Cu lnh switch kim tra gi tr ca bin Mychoice v cho kt qu tng t nh chng trnh v d ca cu lnh If-else : + Nu mychoice = = openwin th xa bin mychoice v a ra thng bo: "Starting Open Windows ..." "Automaticlly logging out ..." + Ngc li cng xa bin mychoice nhng a ra thng bo : "Starting Sun View ..." "Automaticlly logging out ..."

d. Vng lp foreach :
-Vng lp ny ging nh vng lp for trong cc ngn ng lp trnh khc . C php : Foreach variable (wordlist) Commands End ngha : Vng lp ny duyt tt c cc thnh phn ca mt danh sch c ch nh trong wortlist . Trong c php trn th wordlist lun phi c t gia hai du ngot n ( ) . V d : S dng vng lp foreach i tn ca nhiu tp khc nhau sang tn mi : #! /bin / csh set tencu; set tenmoi foreach tencu (*) echo $tencu echo "nhap ten moi :" set tenmoi = $< echo $tenmoi mv $tencu $tenmoi end ls-als

Trang 28

Linux Shell
+ Trong v d trn , hai bin tencu v tenmoi l hai bin cc b nhng khng c gi tr khi u . + Vng lp foreach gn ln lt tt c cc gi tr trong wordlist cho bin tencu .Trong Shell cng nh trong ngn ng C ,k t (*) biu hin cho tt c cc tp trong th mc cho trc y l th mc lm vic ,cc tn tp ny c gn cho bin tencu theo th t ch ci trong m ASCII .Tn mi ca mi tp u c nhp vo t bn phm thng qua bin tenmoi . + Dng lnh : mv $tencu $tenmoi i tn tp c ch ra trong bin tencu thnh tn mi c ch nh trong tenmoi .

e.Vng lp while :
- Vng lp while tng ng vi vng lp foreach . C php : While (expr) Commands .... End ngha : Trong cu trc trn th expr c trng cho biu thc s c tnh tan trc khi bt u mi ln lp . Nu gi tr ny l true th nhng lnh tip theo s c thc hin cho n khi gp cu lnh end , nu gi tr ny l false th vng lp s kt thc .

f. Vng lp repeat :
C php : Repeat count command ngha : Phm vi s dng vng lp ny tng i hn hp v thng thng th n c s dng thc hin nhng thao tc n gin lp i lp li . Trong : Count : l bin vi gi tr c xc nh trc . Command : l mt lnh do ngi lp trnh ch nh .

Trang 29

Linux Shell

Chng V :

Trnh son tho vi


Ni dung : Gii thiu trnh son tho vi , cung cp mt s kin thc c s c th son tho c vn bn hay chng trnh .

I. Khi ng vi :
1. Gii thiu : Vi (video interactif) l chng trnh san tho vn bn theo trang mn hnh : - Mn hnh c xem nh mt ca s m trn tp tin . - C kh nng di chuyn con tr n bt k v tr no trn mn hnh . - Ca s c th di chuyn t do trn tp tin . Phn ln cc phm dng c lp hoc kt hp vi phm Shift v Ctrl to ra cc lnh ca vi . Khi mt lnh b g sai , vi bo hiu bng cch nhy mn hnh , ku ci hay thng bo li . Chng trnh vi c xy dng t chng trnh son tho dng ex .Cc lnh ca ex c th c gi khi c du ":" dng cui mn hnh .

2. Khi ng vi :
Ta c th gi vi vi tn tp tin vn bn : $vi tn_tp tin Ca s son tho s c m ti u tp tin . Nu tp tin cha tn ti , n s c to bi lnh ghi . Dng cui cng trn mn hnh c dng cho nhng cng vic sau : - Vo cc lnh . - Thng k . - Bo li . Khi ta ch mun xem ni dung mt tp tin c trn a , dng lnh : $view tn_tp tin that trnh xem , nhn phm ESCg :q! nhn phm Enter 3.That khi vi :

Trang 30

Linux Shell
Mun ra khi vi v ghi li ni dung tp tin , bn nhn phm ESC v dng mt trong cc lnh nh sau : :ZZ hoc :wq hoc :x Thot khi vi v khng ghi li cc thay i trc :q! Khi trong ch son tho ca vi , mun lm vic vi cc lnh SHELL , ta c th lm nh sau : - Chy mt lnh SHELL :! Lnh - Hoc gi SHELL , sau chy cc lnh ca ngi dng , khi kt thc bm Ctrl-D tr li vi : :! sh $ lnh $ Ctrl-D

II. Son tho vn bn :


1. Chn vn bn :
- Chn k t trn mt dng : a <text> <ESC> - Chn k t vo sau v tr con tr . Lnh khng c hin th trn mn hnh . Nhn phm ESC kt thc ch chn vn bn . i <ESC> Xen k t vo sau con tr . A <ESC> Xen k t vo cui dng . i <ESC> Xen k t vo cui dng . - Chn dng : o <ESC> Xen mt dng vo trc dng cha con tr . o <ESC> Xen mt dng vo sau dng cha con tr .

2. Di chuyn con tr trong tp tin :


- Theo k t : Sang tri : dng phm trt tri hoc h hoc backspace Xung dng : dng phm trt xung hoc j hoc linefeed Sang tri : dng phm trt phi hoc i hoc espace Ln dng : dng phm trt ln hoc k hoc - Theo dng : ^ v u dng $ cui dng Enter u dng k tip - u dng trn 0(null) v u dng vt l (dng bt du bng du cch hoc Tab) - Theo mn hnh H v u mn hnh (Home) M v gia mn hnh (Mile) L v cui mn hnh (Last) - Theo t (word) : w W v u t tip b B u t hin ti e E cui t hin ti

Trang 31

Linux Shell
- Theo cu : ( v u cu ) v cui cu Lu kt thc mt cu l du .! hoc ? - Theo ca s (window): z dng hin ti gia ca s . z<Enter> dng hin ti u ca s ^D dng hin ti cui ca s ^U xung na ca s ^F xung mt ca s (-2 dng) ^B ln mt ca s (-2 dng) Lu :^l k hiu phm CTRL . -Theo s th t dng : hin th s th t cc dng son tho : : set nu Xa b hin th trn : : set nonu :n<Enter> hoc nG Chuyn con tr n dng th n :s hoc G n cui dng vn bn :se list hin th cc k t n - Tm theo dy k t : / k hiu chiu tn xui ? k hi chiu tm ngc /string chuyn con tr n dng cha dy k t theo chiu xui ?string ngc // ?? lp li tm xui lp li tm ngc chuyn con tr n dng cha dy k t theo chiu

3. Xa vn bn :
- Xa k t : x xa k t tao v tr con tr 3x xa 3 k t x xa k t trc v tr con tr - Xa dng vn bn : dd hoc :d<CR> xa dng cha con tr 3dd xa 3 dng bt u t v tr vn bn d$ hoc D xa n cui dng dw xa t cha con tr 3dw xa 3 t d/string xa n khi ht dy k t

4. Thay th vn bn :
-Thay th k t : rc R <ESC> - Thay th dng : S <ESC> - Thay th t : thay th k t i din bng k t c thay th s k t bng dy 'text" xa dng hin ti v thay th n bng "text"

Trang 32

Linux Shell
cw <ESC> c2w<ESC> c hoc c$ c/string - Xa lnh u U - Lp li lnh . ^G thay th mt t bng "text" . T c thay th tnh t v tr con tr n k t $ thay 2 t thay th n cui dng thay th n ht chui

5. Xa hoc lp li tp lnh :
xa tc dng ca lnh cui cng xa tt c cc thay i lm trn dng hin ti lp li lnh thay di vn bn

6. Xem trng thi vn bn ang son tho :


Hin th tn , trng thi ,s dng , v tr cursor v phn vn bn tnh t v tr con tr n cui dng vn bn .

7. Sao chp , di chuyn vn bn :


+ Di chuyn vn bn Mi ln thc hin mt lnh xa (x hoc d ) , vi u ghi li phn vn bn b xa vo vng m ringcho n ln xa sau . Lnh p hoc P cho php ly li phn vn bn t vng m . Trc khi thc hin lnh ny , du nhy phi c t vo v tr cng kiu vi phn vn bn c trong vng m : - k t - t - dng - cui dng p sao phn vn bn xa ln cui vo sau i tng cng kiu P sao phn vn bn xa ln cui vo trc i tng cng kiu * cch khc chuyn dng : :5, 10m 20 chuyn cc dng t 5 n 10 ti sau dng 20 + Sao chp vn bn Lnh y (yank) cho php sao chp phn vn bn ta mun vo vng m . Mun sao phn vn bn t vng m ra, ta phi chuyn cursor n ni cn sao , sau dng P hoc p Y3w sao 3 t vo vng m Y hoc yy sao dng hin ti vo vng m 5yy sao 5 dng vo vng m Cch khc dng sao chp dng : :5, 8 t 25 sao chp cc dng t 5 ti 8 ti sau dng 25

III . Dng vi vi danh sch cc lnh chy ca Shell :


Lnh fc (fix command ) cho php ta son tho bng vi v chy li cc lnh chy ca Shell . Cch dng nh sau : - Son tho v cho chy lnh cui cng : $fc - Son tho mt nhm lnh v cho chy : $ fc m n -Xem danh sch 16 lnh cui cng : $ fc -l hoc history $fc -lr ( danh sch theo th t ngc li )

Trang 33

Linux Shell
- To mt tp tin cha mt s lnh chy (ca history): $fc -nl n1 n2 > cmd cmd l mt tp tin cha cc lnh ca history t lnh ngy n lnh n2 .

TI LIU THAM KHO


1. Special using editor Linux ( Chng 18 - Phn IV ) 2. Nguyn Tn Khi - " H thng mng Linux " , Nng , 2000. 3. Duy Vit & Nguyn Hong Thanh Ly - "Linux Kernel "

----------- ***** -----------

Trang 34

You might also like