You are on page 1of 12

LP TRNH SHELL LINUX

Gii thiu Shell Linux (1)

C hai cch tng tc vi h thng : Tng tc bng dng lnh (command line) Tng tc bng giao din ha (graphic interface)

Gii thiu Shell Linux (2)


My tnh hiu ngn ng di dng nh phn 0 hoc 1 c gi l ngn ng nh phn. Shell l chng trnh thng dch tip nhn cc ch th hoc cc lnh v dch ra ngn ng my di dng nh phn. Shell din dch cc tham s dng lnh sau triu gi cc hm ca h iu hnh thc hin mt yu cu c th no . Shell thc hin chuyn i cc lnh ca ngi s dng thnh cc lnh i vi h iu hnh.
3

Mc ch ca shell

Shell c 3 mc ch chnh nh sau: Tng tc (interactive use) t bin mi trng i vi mi ngi s dng Lp trnh

Qu trnh thc hin ca Shell

Cc loi Shell
sh (Bourne shell) shell nguyn thy p dng cho unix (C Shell, Z shell) shell s dng cu trc ca C lm ngn ng kch bn. (Bourne Again shell) shell ch yu ca Linux.

Your command Or Shell Script

Linux Shell

Converted to Binary language by Shell

Now Linux kernel understand your request

csh, tcsh, bash

shell script : Kch bn cho php thc hin mt dy lnh lin tip. Tng t tp tin b (batch file) trong MS-DOS.

Vit v chy chng trnh Shell

Tp tin kch bn (script file) (1)

Chng trnh shell l mt tp tin vn bn cha mt s lnh shell hoc lnh ca Linux. Chng trnh Shell cho php t ng ha mt cng vic, hoc vit cc ng dng tng tc n gin. Tp tin shell : *.sh. Dng lnh cat file.sh hoc vi file.sh son tho tp tin Shell.

Chng trnh shell remount.sh cho php t ng kt ni li a CDROM : #!/bin/sh # ghi chu umount /dev/cdrom mount /dev/cdrom /cdrom exit 0

Tp tin kch bn (script file) (2)

C PHP NGN NG SHELL

Ch thch trong shell thng bt u bng k t #. #!/bin/sh : ch th yu cu shell hin ti triu gi shell sh nm trong th mc bin. Shell sh s chu trch nhim thng dch cc lnh nm trong tp tin script. #! cn c dng triu gi mt chng trnh shell khc m NSD mun chy trc khi script tip theo c din dch.

10

S dng bin (1)


Shell khng cn phi khai bo bin trc khi s dng. Mc nh tt c cc bin u nhn gi tr kiu chui (String). Shell ch x l cc gi tr s nguyn. Shell phn bit ch hoa ch thng. Thng thng tham s dng lnh thng cch nhau bng khong trng. Nu tham s cha c khong trng (k t spacebar, tab hoc k t xung dng) th phi bc trong cp nhy n ' ' hoc nhy kp " "
11

S dng bin (2)

Khi gn ni dung cho bin varname=value Truy xut ni dung ca bin : $varname Lu sau du = khng c c khong trng. Hin th ni dung bin : echo $varname c d liu nhp vo : read varname

12

S dng bin (3)

Bin mi trng (1)

V d: xinchao=hello echo $xinchao Kt qu : hello xinchao=" I am here " echo $xinchao Kt qu : I am here

Khi khi ng shell cung cp mt s bin c khai bo v gn gi tr mc nh gi l bin mi trng.


$HOME $PATH $PS1 $PS2 $IFS cha ng dn th mc ch ca user ng nhp cha danh sch cc ng dn. du nhc hin th trn dng lnh ($) du nhc hin th trn dng lnh (>) du phn cch cc trng trong danh sch chui.

13

14

Bin mi trng (2)

Bin tham s (parameter variable)


Dng nhn tham s trn dng lnh

Mi mi trng ng nhp cha mt s danh sch bin mi trng dng cho mc ch ring. C th xem danh sch ny bng lnh evn to mt bin mi trng mi c th dng lnh export S dng lnh exit trc khi kt thc chng trnh shell. exit 0 : kt thc thnh cng

$1, $2, $3, . . . : v tr v ni dung cc tham s trn dng lnh theo th t t tri sang phi $0 $* : t u tin ca lnh c g, l tn chng trnh shell : danh sch tt c cc tham s trn dng lnh

"$@" : lu danh sch cc tham s dng lnh trn cc xu ring bit ("$1" "$2" . . .) $# $?
15

: Tng s tham s trn dng lnh. : Lu m tr v ca lnh cui cng c thc hin.
16

Bin tham s (parameter variable)

Ton t s hc
Operator
+

Operation
(Addition) Php cng (Subtraction) Php tr (Division) Php chia Modulus Operator (Remainder) Php chia ly d (Multiplication) Php nhn

$ mkdir xuan ha thu dong $0 $* => $# => 4 $1 $2 $3 $4 "xuan ha thu dong"

/ % *

17

18

nh lng gi tr biu thc


Lnh expr c dng trong vic tnh ton cc kt qu ton hc i gi tr t chui sang s. V d : x=14 x=`expr $x + 1` kt qu x = 15

So snh ton hc
Ton t so snh expr1 -eq expr2 expr1 -ne expr2 expr1 -gt expr2 expr1 -ge expr2 expr1 -lt expr2 expr1 -le expr2 ! expr
19

Gii thch true nu hai biu thc bng nhau true nu hai biu thc khng bng true nu biu thc expr1> expr2 true nu biu thc expr1>=expr2 true nu biu thc expr1<expr2 true nu biu thc expr1<=expr2 true nu expr1 l false (ton t not)
20

Trong cc lnh shell sau, c th dng $(()) thay cho lnh expr. x=$(($x + 1))

So snh chui
So snh string1 = string2 string1 != string2 -n string1 -z string1 Ch : khc vi Kt qu true nu hai chui bng nhau true nu hai chui khng bng nhau true nu string1 khng rng (null) true nu string1 rng $str1=$str2 : Php gn $str1 = $str2 : Php so snh
21

Kim tra iu kin trn tp tin


So snh -d file -e file -f file -g file -r file -s file -w file -x file Kt qu true nu file l th mc true nu file tn ti trn a true nu file l tp tin thng thng true nu set group id c thit lp trn file true nu file cho php c true nu kch thc file khc khng true nu file cho php ghi true nu file c php thc thi
22

In cc k t c bit
echo [-n] [xu k t]
\b \c \n \t \\ \0n li li mt k t (backspace). khng xung dng (nh n). xung dng. in ra k t tab. in ra k t \. in ra k t c s n (s thp phn) trong bng m ASCII.

Biu thc iu kin

Cc script s dng lnh [] hoc test kim tra iu kin boolean. Thng c s dng nh gi mt iu kin trong mt cu lnh iu kin hay ca mt cu lnh lp. C php : hay test bieuthuc [ bieuthuc ]

In ra nhng k t c bit bng cch t sau k t \ V d: \ in k t nhy kp () ra mn hnh.


23

24

Biu thc iu kin

Ton t AND
Lnh sau thc hin khi lnh trc thc thi v tr v mt li thnh cng. statements1 && statements2 && statements3 &&. . V d : #!/bin/sh
touch file_one rm -f file_two if [ -f file_one ] && echo hello && [ -f file_two ] && echo there then echo -e in if fi exit 0

C th dng cc ton t sau vi biu thc iu kin : ton t trn xu k t, ton t trn s nguyn, ton t trn tp tin, ton t logic Binh thuong Shell sh hoac : if a>b : if test $a -gt $b : if [ $a -gt $b ]

25

26

Ton t OR

Cu trc iu kin - Lnh if


#!/bin/sh echo Nhap thoi diem trong ngay : read st if [ $st = sang ] then echo Chao buoi sang ! else echo Chao buoi chieu ! fi exit 0
28

C php: if condition Ton t OR tr v gi tr true th ngng vic thc thi. C php : statements1 || statements2 || statements3. . . then <Nhomlenh1> else <Nhomlenh2> fi

27

Cu trc iu kin - Lnh elif


elif cho php kim tra iu kin ln th hai bn trong else.
#!/bin/sh echo Nhap thoi diem trong ngay : ; read st if [ $st = sang ] then echo Chao buoi sang ! elif [$st = no] then echo Chao buoi chieu ! else echo Chua xu ly ! fi exit 0
29

Lnh for

C php: for variable in values do statements done

#!/bin/sh for i in xuan ha thu dong do echo $i done exit 0

30

Lnh while (1)


V d 1:

Lnh while (2)


V d 2:
#!/bin/sh echo Nhap mat khau : read pass while [ $pass != "123abc" ] do read pass done exit 0

C php:

Check Condition True ACTION

False

while condition do statements done

S=0 i=0 while [ $i lt 5 ] do i=`expr $i + 1` S=`expr $S + $i` done echo Tong = $S exit 0

End of the loop


31

32

Lnh until (1)

Lnh until (2)

C php:

until condition do statements done

ACTION True Check Condition False

V d :
until [ $# -eq 0 ] do num=`expr $num + 1` echo The $num argument is $1 shift done

End of the loop


33 34

Lnh case (1)

Lnh case (2)


V d : #!/bin/sh echo is it morning ? yes or no read timeofday case $timeofday in yes) echo good morning;; no ) echo good afternoon;; y ) echo good morning;; n ) echo good afternoon;; * ) echo answer not recognised;; esac exit 0
35 36

C php: case var in pattern1) pattern2) pattern3) pattern4) *) esac command(s);; command(s);; command(s);; command(s);; ;;

Hm (function) (1)

Hm (function) (2)
tr v mt gi tr s ta c th dng lnh return : V d : foo() { tr v gi tr chui ta c th dng lnh echo : V d : #!/bin/sh
foo() { echo function foo is executing } echo Goi su dung ham foo foo exit 0 } return 0

Shell cung cp cho NSD t to hm hay th tc triu gi bn trong script. C php nh ngha hm : function_name() { statements }

37

38

Bin ton cc v bin cc b (1)

Bin ton cc v bin cc b (2)


#!/bin/sh sample_text=global variable foo() { local sample_text=local variable echo function foo is executing echo $sample_text } echo $sample_text foo exit 0

khai bo bin cc b c hiu lc trong hm, dng t kha local. Nu khng c t kha local, cc bin c xem l bin ton cc. Bin ton cc c nhn thy v c th thay i bi tt c cc hm trong script.

39

40

10

Hm v cch truyn tham s

Cc lnh ni ti ca shell (1)


Ngoi cc lnh ni ti, shell cung cp cc lnh ni (build - in) hu ch khc.

Truyn tham s cho hm tng t nh truyn tham s trn dng lnh. V d : foo() "param1","param2","param3". . .

break : break thot khi vng lp for, while hay until. continue : lnh continue yu cu vng lp quay li thc hin bc lp k tip m khng cn thc thi cc khi lnh cn li. : (lnh rng) lnh : i lc c dng vi ngha logic l true. V d : while : tng t nh while true. . ( thc thi) dng thc thi mt script trong shell hin hnh.
41 42

Cc lnh ni ti ca shell (2)


eval : Cho php bn c lng mt biu thc cha bin. exes : Dng gi mt lnh bn ngoi khc. Thng exes gi mt shell khc vi shell m script ang thc thi. exit n : Thot khi shell no gi n v tr v li n. set : Dng p t gi tr cho cc tham s. unset : Dng loi b bin khi mi trng shell shift : Di chuyn ni dung tt c cc tham s mi trng xung mt v tr.
43

M rng tham s
Shell khng cung cp cu trc mng. C th thay th tn bin, cn gi l m rng tham s. V d : #!/bin/sh
1_tmp=hello 2_tmp=there 3_tmp=world for i in 1 2 3 do echo $i_tmp done
44

11

Chy chng trnh shell


$vi vidu.sh
#!/bin/sh echo "Vi du shell tinh tong 2 so" a=10 b=5 tong=$(($a + $b)) echo Ket qua = $tong" exit 0 Cch 1 : Cch 2 : $chmod a+x vidu.sh $./vidu.sh $/bin/sh ./vidu.sh

Bi tp

1) Vit mt chng trnh shell vidu1.sh cho php nhp vo 2 gi tr a,b. Tnh tng ca a,b. 2) Vit mt chng trnh shell vidu2.sh cho php nhp vo 2 gi tr a,b trn dng lnh. In ra tong ca a,b. Ex : $vidu2.sh 3 4 Tong = 7 3) Vit mt chng trnh so snh 2 s a, b nhp t bn phm

45

46

Kt thc

47

12

You might also like