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" // tm chui "New York" trong u vo


chun ( standard input)

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
V d : $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
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 hin th cc file c tn bt du bng
ch ci.
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 s ngu nhin
SECONDS 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 stagiar 6 Apr 5 14:06
file1
$cat file1
$chgrp animator file1
$ls -l file1
$cat file1

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 ngha
-f Thnh cng nu file tn ti v l file hp l
-d Thnh cng nu file l mt th mc
-r Thnh cng nu file tn ti v c th c
-s Thnh cng nu file tn ti v khng rng
-w Thnh cng nu filetn ti v c th ghi
-x Thnh cng nu file tn ti v c th thc thi
V d : 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"] : ng nu str1=str2
test "str1" != "str2" : ng nu str1<str2
test -z "$a" : ng nu xu trong bin a rng
test -n "$a" : 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 Thit b cui iu khin tin trnh
S Tnh trng ca tin trnh
TIME Thi gian s dng CPU ca tin
trnh
COMMAND 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 : if (express) command
V d :
#!/ 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 chuyn con tr n dng cha dy k t theo chiu
ngc
// lp li tm xui
?? lp li tm ngc
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 thay th k t i din bng k t c
R <ESC> thay th s k t bng dy 'text"
- Thay th dng :
S <ESC> xa dng hin ti v thay th n bng "text"
- Thay th t :

Trang 32
Linux Shell
cw <ESC> thay th mt t bng "text" .
T c thay th tnh t v tr con tr n k t $
c2w<ESC> thay 2 t
c hoc c$ thay th n cui dng
c/string thay th n ht chui
5. Xa hoc lp li tp lnh :
- Xa lnh
u xa tc dng ca lnh cui cng
U xa tt c cc thay i lm trn dng hin ti
- Lp li lnh
. lp li lnh thay di vn bn
6. Xem trng thi vn bn ang son tho :
^G 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