Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 7

Lp trnh shell

Lm th no vit shell script: 1. S dng bt k trnh son tho no nh: vi, mcedit... 2. Sau khi vit shell script th thit lp quyn thc thi cho n theo cu trc: chmod permission your-script-name V d: $ chmod +x your-script-name $ chmod 755 your-script-name 3. Thc thi script bng cu trc: bash your-script-name sh your-script-name ./your-script-name V d: $ bash bar $ sh bar $ ./bar Ghi ch: Cu trc ./ c ngha l th mc hin hnh, nhng . (dot) ngha l thc thi lnh trong shell vi shell hin hnh. Cu trc dot nh sau: . shell_script V d: $ . foo Shell script sau s in "Knowledge is Power" trn mn hnh: $ vi first # # My first shell script # clear echo "Knowledge is Power" Sau khi lu file, thay i quyn (chmod 755 first) => chy script ny nh sau: $ ./first Ghi ch: Shell script file c bng phn m rng l .sh d dng xc nh l shell script. Cc bin trong Shell: x l d liu/thng tin, d liu phi c gi trong b nh RAM ca my tnh. RAM c chia thnh nhiu v tr nh, v mi v tr c mt s duy nht c gi l a ch b nh - c s dng lu d liu. Bn c th gn tn cho vng nh ny => gi l bin b nh hoc bin. Trong Linux (Shell), c hai loi bin: 1. Bin h thng - c to v duy tr bi chnh Linux. Loi bin ny c nh ngha bng cc mu t hoa. 2. Bin do ngi dng nh ngha (UDV - User Defined variables) - c to v duy tr bi ngi dng.

Loi bin ny c nh ngha bng cc mu t thng. Bn c th xem danh sch cc bin h thng bng lnh set hoc env. Mt vi bin h thng quan trng: BASH=/bin/bash - tn shell. BASH_VERSION=1.14.7(1) - phin bn ca shell. COLUMNS=80 - s ct cho mn hnh. HOME=/home/vivek - th mc nh. LINES=25 - s dng ca mn hnh. LOGNAME=students - tn ng nhp ca ngi dng. OSTYPE=Linux - Loi h iu hnh. PATH=/usr/bin:/sbin:/bin:/usr/sbin - Thit lp ng dn. PS1=[\u@\h \W]\$ - thit lp prompt. PWD=/home/students/Common - th mc hin hnh. SHELL=/bin/bash - tn shell. USERNAME=vivek - user no hin ang ng nhp vo PC. Bn c th in ra bt k bin mi trng no nh sau: $ echo $USERNAME $ echo $HOME Lm th no nh ngha UDV: S dng cu trc sau: variable name=value - value c gn cho 'variable name' v value phi nm bn phi du = V d: $ no=10 $ vech=Bus Nguyn tc t tn bin (c UDV v bin h thng): 1. Bin phi bt u bng k t alphanumeric hoc underscore (_), theo sau bi mt hoc nhiu k t alphanumeric. V d: Cc bin hp l: HOME, SYSTEM_VERSION, vech, no 2. Khng c khong trng gia hai bn du bng khi gn gi tr bin. V d: Cc khai bo sau s c li: $ no =10 $ no= 10 $ no = 10 3. Phn bit ch hoa v thng. V d: Cc bin sau s khc nhau: $ no=10 $ No=11

$ NO=20 $ nO=2 4. Bn c th nh ngha bin NULL nh sau: $ vech= $ vech="" Khi in ra cc bin NULL ny, th khng c g trn mn hnh bi v chng khng c gi tr. 5. Khng s dng ?, *... t tn cho bin. In v truy cp gi tr ca UDV: $variablename hoc echo $variablename Tnh ton trong Shell: S dng cc php ton s sau theo cu trc sau: expr op1 math-operator op2 V d: $ expr 1 + 3 $ expr 2 - 1 $ expr 10 / 2 $ expr 20 % 3 $ expr 10 \* 3 $ echo `expr 6 + 3` Trch dn (quote): C 3 loi quote: 1. " (double quote): Bt k th g trong y u b hy ngha ca k t (tr \ v $) 2. ' (single quote): Duy tr khng thay i. 3. ` (back quote): thc thi lnh. V d: $ echo "Today is date" => in ra Today is date $ echo "Today is `date`". => in ra Today is Tue Jan.... Trng thi kt thc (exit status): Mc nh trong Linux nu lnh/shell script c thc thi, n s tr v hai loi gi tr - c s dng xem lnh/shell script c thc thi thnh cng hay khng. 1. Nu tr v gi tr l 0 - thnh cng. 2. Khng phi 0, lnh khng thnh cng hoc c mt vi li khi thc thi lnh/shell script. => gi tr ny gi exit status. V d: unknow1file khng tn ti trong a cng th lnh rm unknow1file s in ra li nh sau: rm: cannot remove `unkowm1file': No such file or directory. V sau nu bn g lnh $ echo $? th n s in ra gi tr nonzero ch c li.

Cu lnh read: S dng nhn d liu t bn phm v lu vo bin. Cu trc: read variable1, variable2,...variableN V d: Script sau s hi tn ngi dng v ch h nhp vo t bn phm. Sau khi ngi dng nhp tn v nhn Enter th tn s c lu trong bin fname. $ vi sayH # #Script to read your name from key-board # echo "Your first name please:" read fname echo "Hello $fname, Lets be friend!" Chy n nh sau: $ chmod 755 sayH $ ./sayH Your first name please: vivek Hello vivek, Lets be friend! Wild cards: 1. *: ph hp vi bt k chui hoc nhm k t no. V d: $ ls * - hin th tt c cc file. $ ls a* - hin th tt c cc file m tn ca n bt u bng mu t 'a'. $ ls *.c - hin th tt c cc file c bng m rng l .c 2. ?: ph hp bt k 1 k t no. V d: $ ls ? - hin th tt c cc file m tn ca n c chiu di 1 k t. $ ls fo? - hin th tt c cc file m tn ca n c 3 k t v tn file bt u bng fo. 3. [...]: ph hp bt k 1 trong cc k t trong du ngoc. V d: $ ls [abc]* - th hin tt c cc file bt u vi mu t a, b, c. Ghi ch: [..-..]: Mt cp cc k t c phn chia bi du tr ghi nhn mt dy. V d: $ ls /bin/[a-c]* - hin th tt c cc file bt u vi mu t a, b, c. Nu k t u tin theo sau [ l ! hoc ^, th bt k k t no khng ph hp s c hin th. $ ls /bin/[!a-o]

$ ls /bin/[^a-o] => s hin th tt c cc file trong th mc bin m k t u tin khng phi l a, b, c...o. Nhiu lnh trn mt dng lnh: command1;command2 V d: $ date;who - s in ra ngy hin ti theo sau l tn ngi dng ng nhp hin ti. Dng lnh: Khi thc thi lnh sau (gi s file "grate_stories_of" khng tn ti trn h thng). $ ls grate_stories_of - s in ra thng bo grate_stories_of: No such file or directory ls l tn ca lnh v shell s thc thi lnh ny. T u tin ca dng lnh l ls - tn ca lnh cn thc thi. Phn cn li l cc tham s ca lnh ny. V d: $ tail +10 myf - tn lnh l tail v tham s l +10 v myf. Ghi ch: $# nm gi cc tham s ca dng lnh. $* hoc $@ tham chiu n cc tham s c chuyn n script. Chuyn hng: Hu ht cc lnh u kt xut ra mn hnh hoc nhn tham s t bn phm. Nhng trong Linux th c th gi kt xut n hoc c d liu t tp tin. V d: $ ls cho kt xut ra mn hnh, gi kt xut ra tp tin th s dng lnh sau: $ ls > filename 1) K hiu >: command > filename - kt xut kt qu ca lnh ra file. Nu nh file tn ti, n s ghi ln, ngc li file mi s c to. 2) K hiu >>: command >> filename - kt xut kt qu n phn cui ca file. Nu nh file tn ti, n s c m v thng tin mi c ghi vo cui file, khng s mt d liu/thng tin trc. V nu file khng tn ti, th file mi c to. V d: $date >> myfiles 3) K hiu <: command < filename - nhn d liu t file thay v bn phm. V d: $ cat < myfiles $ sort < sname > sorted_names - lnh sort ly d liu t file tn l sname v kt xut kt qu ra file tn l sorted_names. Pipes:

nh ngha: Mt pipe l mt ni lu tm kt xut ca mt lnh v sau chuyn vo input ca lnh th hai. Pipe c s dng chy nhiu hn 2 lnh trn cng mt dng lnh. Filter: Nu mt lnh chp nhn input t stdin v xut n ra stdout th c gi l filter. Mt filter thc thi mt vi x l trn input v cho ra ouput. V d: Gi s bn c mt file c gi l 'hotel.txt' vi 100 dng d liu. V bn ch mun in ra dng t 20 n 30 v lu kt qa ny vo file gi l 'hlist' th s dng lnh sau: $ tail +20 < hotel.txt | head -n30 >hlist1 => y lnh head l mt filter nhn input t lnh tail (lnh tail bt u chn t dng 20 trong file 'hotel.txt'. V chuyn cc dng ny lm input cho head, cui cng chuyn ouput n file 'hlist'.) Process: Tin trnh l mt chng trnh (lnh) thc thi mt cng vic xc nh. Trong Linux khi bn khi to mt tin trnh, n s cho tin trnh mt con s gi l PIP hoc process-id, PID khi u t 0 n 65535. V d: $ls -lR - lnh ls s lit k cc file trong th mc hoc tt c th mc con trong th mc hin hnh - n l mt tin trnh. Ti sao c tin trnh: V Linux l h iu hnh a ngi dng, a nhim. Ngha l bn c th chy nhiu hn 2 tin trnh ng thi nu bn mun. V d: tm nhiu file m bn c trn h thng, bn c th thc hin lnh sau: $ ls / -R | wc -l => lnh ny s mt nhiu thi gian tm kim tt c cc file trn h thng, v th bn c th chy lnh ny background: $ ls / -R | wc -l & Do mt th hin ca lnh ang chy c gi l process v mt con s c in ra bi shell gi l process-id (PID), PID ny c th s dng xc nh tin trnh ang chy. Cc lnh lin quan n process: ps - xem tin trnh ang chy. kill - dng bt k tin trnh no bi PID ca n. killall- dng tin trnh bi tn ca n. ps -ag - ly thng tin v tt c cc tin trnh ang chy. kill 0 - dng tt c cc tin trnh tr shell ca bn. command & - chy lnh background. ps aux - hin th ch s hu ca cc tin trnh cng vi cc tin trnh . ps ax | grep process-U-want-to-see - xem tng tin trnh ang chy hoc khng chy. top - xem tin trnh ang chy v cc thng tin khc nh b nh, CPU usage cng vi thi gian thc. pstree - hin th cy cc tin trnh.

(Ngun t http://www.freeos.com/guides/lsst/)

You might also like