background image
background image

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

 

Muïc luïc: 
PHAÀN 1: 

UNIX CÔ SÔÛ 

 
Baøi 1. Khôûi ñoäng UNIX 
1.1 

Baét ñaàu phieân laøm vieäc 

1.2 

Keát thuùc phieân laøm vieäc 

1.3 

Caùch duøng leänh cuûa UNIX 

 
Baøi 2. Laøm vieäc vôùi file. 
2.1 

Toå chöùc file 

2.2 

Di chuyeån giöõa caùc thö muïc 

2.3 

Caùc thao taùc cô sôû vôùi caùc thö muïc 

2.4 

Caùc thao taùc cô sôû vôùi file thöôøng 

 
Baøi 3. Baûo veä caùc file cuûa ngöôøi söû duïng 
3.1 

Moâ taû ngöôøi söû duïng 

3.2 

Moâ taû nhoùm ngöôøi söû duïng 

3.3 

Baûo veä caùc file vaø caùc thö muïc 

 
Baøi 4. Sao, chuyeån, lieân keát vaø tìm kieám file 
4.1 

Sao cheùp file 

4.2 

Chuyeån vaø ñoåi teân file 

4.3 

Taïo lieân keát vôùi file 

4.4 

Tìm kieám file 

 
Baøi 5. Thoâng tin giöõa nhöõng ngöôøi söû duïng 
5.1 

Thoâng tin baèng leänh mail 

5.2 

Thoâng tin baèng leänh write 

 
Baøi 6. Söû duïng chöông trình soaïn thaûo vi 
6.1 

Khôûi ñoäng vi 

6.2 

Soaïn thaûo vaên baûn 

 
Baøi 7. Shell script 
7.1 

Quaûn lyù tieán trình 

7.2 

Laäp caùch thöùc cho shell script 

7.3 

Caùc shell UNIX 

 
Baøi 8. Ñoåi höôùng (redirection) 
8.1 

Vaøo/ra chuan 

8.2 

Chuyeån ñoåi döõ lieäu giöõa caùc tieán trình 

background image

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

 

8.3 

Ñoåi höôùng keùp ñaàu ra chuaån 

 
Baøi 9. Cô cheá thay theá cuûa Shell 
9.1 

Truyeàn tham soá 

9.2 

Caùc bieán Shell 

9.3 

Caùc kí töï ñaëc bieät 

9.4 

Laáy keát quaû cuûa moät leänh 

9.5 

Caùc qui taéc thay theá cuûa Shell 

 
Baøi 10. Moâi tröôøng cuûa Shell 
10.1  Moâi tröôøng 
10.2  Caùc bieán ñònh nghóa tröôùc 
10.3  Caùc bieán chung 
 
Baøi 11. Laäp trình möùc cô sôû döôùi UNIX 
11.1  Caùc pheùp thöû trong Shell 
11.2  Laäp trình moät caáu truùc coù ñieàu kieän 
11.3  Laäp trình moät chu trình 
 
Baøi 12. Tín hieäu vaø ñoàng boä 
12.1  Quaûn lyù caùc tín hieäu 
12.2  Quaûn lyù caùc tieán trình 
12.3  Ñeä qui 
 
PHAÀN 2 

LAÄP TRÌNH C DÖÔÙI UNIX 

 
Baøi 1. Giôùi thieäu chung 
1.1 

Caùc lôøi goïi heä thoáng 

1.2 

Chuû thöïc vaø chuû thöïc quyeàn cuûa tieán trình 

1.3 

Ñònh nghóa caùc tham bieán chöông trình 

1.4 

Moät soá ñònh nghóa khaùc 

 
Baøi 2. Quaûn lyù tieán trình 
2.1 

Nhaän bieát tieán trình 

2.2 

Nhaän bieát chuû tieán trình 

2.3 

Thay ñoåi chuû vaø nhoùm chuû 

2.4 

Taïo moät tieán trình 

2.5 

Caùc haøm goïi moät tieán trình thay theá 

2.6 

Ñoàng boä tieán trình 

2.7 

Möùc öu tieân cuûa tieán trình 

2.8 

Nhoùm caùc tieán trình 

background image

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

 

 
Baøi 3. Quaûn lyù file 
3.1 

Môû moät file 

3.2 

Taïo moät file 

3.3 

Ñoùng file 

3.4 

Ñaët maët naï caùc quyeàn thaâm nhaäp file 

3.5 

Ñoïc file 

3.6 

Ghi file 

3.7 

Di chuyeån con troû file 

3.8 

Caáu truùc moät inode 

3.9 

Taïo moät inode 

3.10  Thay ñoåi quyeàn thaâm nhaäp 
3.11  Thay ñoåi chuû sôû höõu hoaëc nhoùm 
3.12  Thay ñoåi thö muïc laøm vieäc 

background image

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

 

PHAÀN 1: UNIX CÔ SÔÛ 

 

Baøi 1. Khôûi ñoäng UNIX 

 

Noäi  dung:  Laøm  quen  vôùi  heä  ñieàu haønh  UNIX.  Baét  ñaàu, keát  thuùc  phieân  laøm  vieäc,  chaïy 

moät soá leänh ñaëc tröng. 

 
1.1 Baét ñaàu phieân laøm vieäc: 
Baät  coâng  taéc  nguoàn  cuûa  terminal  (trong  heä  thoáng  cuûa  NLC  laø  Xterm  sau  khi  duøng 
Exceed  keát  noái  vôùi UNIX server), khoaûng moät giaây sau treân maøn hình hieän doøng thoâng 
baùo: 
 

Login: 

Haõy  nhaäp  vaøo  teân  (user  name)  khi  keát  thuùc  baèng  phím  Enter.  Neáu  ngöôøi  söû  duïng  coù 
duøng maät khaåu (passwor), treân maøn hình seõ hieän doøng: 
 

Password: 

Haõy vaøo maät khaåu cuûa mình vaø keát thuùc baèng phím Enter. 
Neáu teân (vaø maät khaåu neáu coù) ñöôïc vaøo ñuùng, terminal ñoù seõ ñöôïc noái vôùi maùy chuû vaø 
treân maøn hình seõ hieän kyù töï: 

ñoù laø daáu nhaéc cuûa Shell. 
Maät khaåu ñaûm baûo an toaøn cho moãi phieân laøm vieäc. Ta coù theå thay ñoåi maät khaåu baèng 
leänh 

passwd

.  Maät  khaåu phaûi daøi ít nhaát 6 kyù töï,  ít nhaát phaûi coù 2 kyù töï alphabet, phaûi 

khaùc vôùi teân (user name) ít nhaát 3 kyù töï, daøi toái ña 13 kyù töï. 
 
1.2 Keát thuùc phieân laøm vieäc: 
AÁn 

CTRL + D

 (giöõ phím CTRL vaø goõ phím D) hoaëc goõ leänh 

 

$

exit 

ñeå keát thuùc phieân laøm vieäc. 
 
1.4 Caùch duøng leänh cuûa UNIX: 

Cuù phaùp cô baûn ñeå chaïy moät leänh cuûa UNIX nhö sau: 

$

teânleänh 

[-tuyø choïn

][

ñoái soá 1

]…[

ñoái soá n

Thí duï: 

wc

  laø leänh  ñeám  vaø  hieån thò soá doøng,  töø vaø kyù töï cuûa moät file. Ta coù theå chaïy leänh wc 

nhö sau 
 

$

wc

 

/etc/passwd

 

 

32 

37 

1139  etc/passwd 

 
 

$

wc

 

-l

   

/etc/passwd

 

32 

etc/passwd 

background image

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

 

 

$wc  -ld  /etc/passwd  /etc/group 

 

32 

1139  etc/passwd 

 

15 

337 

etc/group 

47 

1476  total 

 

Caùc thoâng baùo loãi khi goïi leänh: 

Neáu leänh khoâng toàn taïi hoaëc khoâng tìm thaáy: 
  $

data

 

 

data not found 

Neáu cuù phaùp cuûa leänh bò goõ sai: 
  $

wc  -m 

/etc/group 

 

usage:  wc 

[-clw][name…] 

 
Baøi taäp: 
Chuù yù: Kyù hieäu <CR> töôïng tröng cho vieäc goõ phím Enter. 

1. 

Haõy baét ñaàu phieân laøm vieäc vôùi teân (username) cuûa baïn. 

2. 

Ñôïi khi daáu nhaéc cuûa heä thoáng xuaát hieän (daáu $), goõ vaøo 

date<CR> 

3. 

Gaùn maät khaåu cho teân: 

passwd<CR> 

4. 

Lieät keâ teân nhöõng ngöôøi ñang söû duïng heä 

who<CR> 

5. 

Xem ai laø ngöôøi ñang laøm vieäc taïi terminal: 

who am I<CR> 
whoami<CR> 

6. 

Xem teân terminal maø ta ñang laøm vieäc treân ñoù: 

tty<CR> 

7. 

Hieån thò caùc thoâng baùo leân maøn hình: 

echo  “Xin chao” <CR> 
echo  “Chao” <CR> 
echo  “Dau nhac ket thuc boi $ xuat hien sau Chao” <CR> 
echo  “Hom nay la ngay:”;date<CR> 
echo  “Hai lenh tren 1 dong cach nhau boi dau ;” <CR> 

8. 

Duøng leänh cal (lòch): 

cal 

01 

1900<CR> 

cal 

01<CR> 

cal 

1900<CR> 

cal 

1900  | more<CR>

 

9. 

Moät vaøi leänh khaùc: 

logname<CR> 

background image

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

 

uname<CR> 
who  | wc<CR> 

10. 

Keát thuùc phieân laøm vieäc:   

Ctrl  D

 (giöõ phím Ctrl vaø goõ D) hoaëc 

exit<CR> 

background image

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

 

Baøi 2. Laøm vieäc vôùi file 

 
Noäi  dung:  Caùc  khaùi nieäm  cô  baûn  veà  file cuûa UNIX, toå  chöùc  cuûa  caùc  file treân  ñóa,  caùc 
thao taùc vôùi file. 
 
2.1 Toå chöùc file: 
2.1.1 Caùc kieåu file 
UNIX coù 3 kieåu file: 
-File bình thöôøng (ordinary file): laø moät taäp hôïp thoâng tin (ASCII text hoaëc binary). 
-File  thö  muïc  (directory  file):  chöùa  danh  saùch  caùc  teâncoù  theå  truy  nhaäp  tôùi  thí  duï  nhö 
caùc file bình thöôøng, caùc file ñaëc bieät hoaëc caùc thö muïc con. 
-File  ñaëc bieät  (special file): laø caùc file lieân quan tôùi caùc thieát bò ngoaïi vi cöùng vaø/hoaëc 
cô cheá truyeàn tin. 

Thí duï: 

 

Baøn phím laø moät file ñaàu vaøo(input file). 

 

Maøn hình laø moät file ñaàu ra (output file). 
Maùy in laø moät file ñaàu ra. 

 

2.1.2 Toå chöùc cuûa caùc file 
Caùc  file  cuûa  UNIX  ñöôïc  toå  chöùc  theo  daïng  caây  (tree).  Thö  muïc  goác  (root)  cuûa  caây 
ñöôïc bieåu dieãn baèng kyù töï 

/

Caáu truùc caây cô sôû cuûa heä UNIX ñöôïc boá trí nhö sau: 
Kyù hieäu file bình thöôøng 
 
Kyù hieäu file thö muïc  
 
Kyù hieäu file ñaëc bieät  

 

 
 
 
 
 
 
 
 
 
 

Hình 1: Caáu truùc caây cô sôû cuûa UNIX 

 
2.2 Di chuyeån giöõa caùc thö muïc: 

Ñeå di chuyeån giöõa caùc thö muïc trong caây cuûa UNIX, ta duøng 2 leänh sau ñaây: 

unix 

bin 

etc 

usr 

users 

dev 

user2 

user1 

background image

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

 

 

cd

 

chuyeån ñeán thö muïc caàn ñeán (change directory) 

pwd

  hieån thò teân thö muïc ñang laøm vieäc (print working directory) 

Taïi thôøi ñieåm baét ñaàu phieân laøm vieäc, ta ôû trong thö muïc tieáp nhaän (HOME  directory). 
Muoán xem teân thö muïc tieáp nhaän naøy, ta duøng leänh 

pwd

Thí du

ï: user1 coù thö muïc tieáp nhaän laø /users/user1 

 

$

pwd

 

 

/users/user1 

 
Ñeå di  chuyeån giöõa caùc thö muïc ta duøng leänh 

cd

 vôùi teân thö muïc caàn chuyeån ñeán. 

 

$

cd

 

/usr/bin 

 

$

pwd

 

 

/usr/bin 

 

$

cd .. 

 

$

pwd

 

 

/usr 

 
Ñeå veà thö muïc tieáp nhaän khi ta ñang ôû baát kyø ñaâu, goõ: 
 

$

cd

 

 

$

pwd

 

 

/users/user1 

 
2.3 Caùc thao taùc cô sôû vôùi thö muïc: 
2.3.1 Xem noäi dung thö muïc: 

Xem noäi dung thö muïc hieän ñang laøm vieäc: 

$

ls

 

Xem noäi dung thö muïc khaùc, chaúng haïn thö muïc /bin: 

$

ls 

/bin

 

Xem theâm thoâng tin cuûa caùc file trong thö muïc: 

$

ls 

-l 

 

hoaëc  $

ll

 

Xem teân caùc file trong thö muïc theo coät: 

$lc 

Khi duøng leänh ls –l ta coù theå phaân bieät caùc kieåu file baèng caùch xem kyù töï ñaàu cuûa doøng 
hieån thò, neáu laø: 
 

 

d

 

 

: file thö muïc. 

-

 

 

: file bình thöôøng 

   

c

 hoaëc 

b

  

: file ñaëc bieät 

2.3.2 Taïo thö muïc: 
Ñeå taïo moät thö muïc môùi, ta duøng leänh 

mkdir 

(make directory): 

 

$

mkdir  

index 

 

$

cd 

index 

background image

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

 

 

$

ls 

-a 

 

 

. . 

Leänh mkdir taïo moät thö muïc vôùi 2 ñaàu vaøo (entry) 

baûn thaân thö muïc coù teân ñaõ cho. 

thö muïc lieân heä vôùi thö muïc ñöôïc taïo ôû treân 

thö muïc . . lieân heä vôí thö muïc cha. 

2.3.3 Xoùa thö muïc: 
Ñeå xoaù moät thö muïc ta duøng leänh 

rmdir

 (remove directory): 

 

$

rmdir  

index 

Neáu muoán xoaù thö muïc khoâng roãng, phaûi duøng leänh 

rm

 vôùi tuyø choïn 

r

 

 

$

rm  -ri  

thumuc

 

 
2.4 Caùc thao taùc cô sôû vôùi file thöôøng: 

2.4.1 Nhaän bieát moät file thöôøng: 
Leänh 

file

 phaân tích noät dung cuûa moät file vaø hieån thò tính chaát cuûa thoâng tin chöùa trong 

file: 
 

$

file  /etc/passwd

 

 

/etc/passwd:  ascii text 

 
 

$

file  /bin/ls 

 

/bin/ls: 680x0  executable 32 bits page aligned striped 

2.4.2 Xem noäi dung moät file thöôøng ASCII: 
Coù theå duøng moät trong caùc leänh sau: 
 

cat

 

 

 

duøng ñeå xem noäi dung caùc file nhoû. 

 

pg

 hoaëc 

more

   

xem noäi dung caùc file lôùn theo trang. 

 
  $

cat  teân file

 

  $

pg 

teân file

 

  $

more  teân file

 

2.4.3 Taïo moät file thöôøng ASCII 
Taïi  Shell  cuûa  UNIX  ta coù  theå deã  daøng  taïo  moät file thöôøng ASCII text baèng caùch duøng 
leänh 

cat

 

 

$

cat

 

>text_file 

abcdef 
123456 

<Ctrl + D> 

 

 

background image

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

 

10 

Kyù  töï  ‘>’  ñoåi  höôùng,  thay  vì  ñeán  ñaàu  ra  chuaån  (standard  output)  ‘  ‘  ñeán  file 
ñöôïc  quy  ñònh  ngay  sau  ‘>’.  ÔÛ  ñaây  caùc  kyù  töï  goõ  vaøo  ñöôïc  ghi  vaøo  file 
‘text_file’. 

Leänh 

cat

, neáu khoâng coù ñoái soá (argument), seõ coi baøn phím laø ñaàu vaøo chuaån. 

Goõ <Ctrl + D> taïi doøng troáng cuoái cuøng keát thuùc vieäc vaøo soá lieäu. 

 

 

 

 

 

 

(1) > 

Stdin KEYBOARD   

 

 

 

FILE  stdout 

 

 

 

 

 

 

 

 

 
 
 

 

 

 

 

 

 

CONSOLE 

stderr 

 

 

 

 

 

 

 

 

2> 

Hình 2 : ñoåi höôùng ñaàu vaøo/ra chuaån 

 
Caùch vieát teân file khi taïo file: 

ñoä daøi 
+ teân file cuûa UNIX sys V daøi toái ña 14 kyù töï 
+ teân file  cuûa  BERKELEY,  baét  ñaàu  töø  version  BSD 4.2.  coù  theå  daøi ñeán 256 kyù 
töï. 

khoâng  coù  söï  haïn  cheá  duøng  kyù  töï  naøo  khi  vieát  teân  file,  song  ta  caàn  chuù  yù  vaøi 
ñieåm sau: 
+ khoâng duøng  caùc  kyù  töï  ñaëc  bieät  (tröø daáu    chaám  ‘.’ hoaëc  daáu  gaïch döôùi ‘_’) vì 
phaàn lôùn caùc kyù töï ñoù ñöôïc duøng trong cuù phaùp cuûa leänh Shell. 

 

+ file coù teân baét ñaàu baèng daáu chaám ‘.’ laø file aån (hidden). 

 

+ kyù töï vieát thöôøng khaùc vôùi vieát hoa. 

Vieát teân file  baèng caùch duøng caùc metacharacter (? Vaø *) 

kyù töï ‘*’ thay theá moät xaâu kyù töï 

kyù töï ‘?’ thay theá moät kyù töï 

Thí duï: 

 

$

ll 

/bin/c*

 

 

$

ll 

/bin/c? 

2.4.4 Xoaù moät file thöôøng: 
Leänh : 

rm

 

Coù theå duøng leänh rm vôùi caùc tuyø choïn sau: 
 

-i 

coù hoûi ñaùp ñeå khaúng ñònh 

 

-f 

khoâng coù hoûi ñaùp. Tuyø choïn naøy raát nguy hieåm, chæ nhöõng ngöôøi söû duïng 

coù kinh nghieäm vaø caån thaän môùi neân duøng. 
 
 

$

rm  text_file

 

 

$

rm  -i 

text_file 

cat 

background image

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

 

11 

Baøi taäp: 

1.  Xem teân thö muïc ñang laøm vieäc: 

pwd<CR> 

2.  Xem noäi dung cuûa thö muïc ñang laøm vieäc: 

ls –l<CR> 

3.  Taïo file vaên baûn tintin: 

cat  >  tintin<CR> 

blabla<CR> 
BLABLA<CR> 
end<CR> 

CTRL + D

 (giöõ phím Ctrl vaø goõ phím D) 

4.  Xem noäi dung file tintin: 

cat  tintin<CR> 

5.  Xem noäi dung caùc thö muïc /bin 

/usr/bin 

/dev 

ll  /bin<CR>

 hoaëc 

ls   -C  /bin

 hoaëc   

ll  /bin | pg

 

6.  Taïo 2 thö muïc d1 vaø d2 

mkdir   d1   d2<CR> 

7.  Chuyeån thö muïc laøm vieäc ñeán d1 
8.  Taïo moät file trong thö muïc d1 
9.  Trôû veà thö muïc tieáp nhaän (HOME directory) 

cd<CR> 

10. Xem noäi dung thö muïc ñang laøm vieäc: 

ls 

-l

 hoaëc  

ll 

ls 
ll 

-R

 (xem noäi dung caû caùc thö muïc con) 

lc 

11. Xoaù thö muïc d1: 

rm 

d1/* 

rmdir  d1 

 

Hoaëc 

 

 

rm 

-ri 

d1 

background image

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

 

12 

Baøi 3. Baûo veä caùc file cuûa ngöôøi söû duïng: 

 
Noäi dung : moâ taû cô cheá baûo veä file cuûa UNIX : ngöôøi söû duïng, nhoùm ngöôøi söû duïng, 

caùc quyeàn thaâm nhaäp file 

 
3.1 Moâ taû ngöôøi söû duïng: 

3.1.1 Khaùi nieäm: 
Moät ngöôøi söû duïng ñöôïc moâ taû baèng caùc thoâng tin sau: 

teân 

[maät khaåu (neáu coù] 

soá nhaän daïng (uid : user identify number) 

soá cuûa nhoùm (gid : group identify number) 

[chuù thích] 

thö muïc tieáp nhaän (HOME directory) 

[teân chöông trình cho chaïy luùc baét ñaàu teân laøm vieäc] 

Caùc thoâng tin treân ñöôïc chöùa trong file /etc/passwd 
3.1.2 Leänh 

defuser

Leänh naøy ôû trong danh muïc /etc, noù cho pheùp: 

hieån thò danh saùch nhöõng ngöôøi söû duïng. 

theâm ngöôøi söû duïng môùi (chæ nhöõng ngöôøi quaûn trò heä thoáng coù quyeàn) 

 

$

cat 

/etc/passwd  | pg 

root : RKgSspHwm.PB.:0:3:0000-Admin000,,,:/: 
date::18:1::/:/bin/date 
tty::19:1::/:/bin/tty 
user1::3000:300::/users/user1: 
user2::3001:300::/users/user2:

 

 
$

/etc/defuser | pg

 

USER 

 

UID   

GID   

HOMEDIR   

SHELL 

root 

 

 

 

daemon   

 

12 

 

bin  

 

 

 

/bin 

sys  

 

 

 

/usr 

adm 

 

 

 

/usr/adm 

date 

 

18 

 

 

 

 

/bin/date 

tty   

 

19 

 

 

 

 

/bin/tty 

sync 

 

20 

 

 

 

 

/bin/sync 

securadm   

11 

 

11 

 

/etc/secure/bin 

lp   

 

71 

 

 

/usr/spool/lp 

user1 

 

3000   

300 

 

/users/user1   

/bin/ksh 

background image

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

 

13 

user2 

 

3001   

300 

 

/users/user2   

/bin/ksh 

 
3.2 Moâ taû nhoùm ngöôøi söû duïng 
3.2.1 Khaùi nieäm: 
Moät  nhoùm  ngöôøi  söû duïng  laø  taäp  hôïp  cuûa moät  soá ngöôøi  söû  duïng coù theå duøng chung caùc 
file cuûa nhau. 
Moät nhoùm ngöôøi söû duïng ñöôïc moâ taû baèng caùc thoâng tin sau: 

teân cuûa nhoùm 

[maät khaåu] 

soá cuûa nhoùm (gid : group identify number) 

[danh saùch nhöõng ngöôøi khaùch (guest)] 

Caùc thoâng tin treân ñöôïc chöùa trong file /etc/group 
3.2.2 Leänh 

defgrp: 

Leänh naøy ôû trong thö muïc /etc, noù cho pheùp: 

hieån thò danh saùch caùc nhoùm ngöôøi söû duïng. 

theâm nhoùm môùi (chæ ngöôøi quaûn trò heä thoáng môùi coù quyeàn). 

 

$

cat 

/etc/group

 

public :: 100 : invite 
animator :: 200 : 
stagiaires :: 300 : 

 

$/etc/defgrp 

GRP 

 

GID   

USERS 

root 

 

 

root 

other 

 

 

date 

   

 

 

 

sync 

   

 

 

 

shut 

bin  

 

 

root 

   

 

 

 

bin 

   

 

 

 

daemon 

   

 

 

 

lp 

sys  

 

 

root 

   

 

 

 

bin 

   

 

 

 

sys 

   

 

 

 

adm 

adm 

 

 

root 

   

 

 

 

adm 

   

 

 

 

daemon 

uucp 

 

 

uucp 

   

 

 

 

daemon 

background image

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

 

14 

   

 

 

 

nuucp 

mail 

 

 

root 

   

 

 

 

… 

 
3.3 Baûo veä caùc file vaø caùc thö muïc 

3.3.1 Caùc quyeàn thaâm nhaäp file: 
Khi file ñöôïc taïo laäp, caùc thoâng tin sau ñaây ñoàng thôøi ñöôïc ghi laïi: 

uid cuûa ngöôøi taïo file 

gid cuûa ngöôøi taïo file 

caùc quyeàn thaâm nhaäp file 

… 

File ñöôïc baûo veä bôûi moät taäp hôïpc caùc bit ñònh nghóa quyeàn thaâm nhaäp: 
 

r  w  x   

r  w  x   

r  w  x 

  suid   

sgid 

  owner   

group   

other 

Trong ñoù: 
 

 

quyeàn ñoïc 

 

 

quyeàn ghi 

 

x  

 

quyeàn chaïy (executing) 

 

suid   

set user-id 

 

sgid   

set group-id 

Ñoái vôùi thö muïc: 
 

 

quyeàn ñoïc noäi dung thö muïc 

 

 

quyeàn taïo vaø xoaù file trong thö muïc 

 

 

quyeàn qua laïi (crossing) thö muïc 

Ghi chuù: caùc quyeàn vôùi thö muïc chæ coù hieäu löïc taïi moät möùc nhaát ñònh, thö muïc con coù 
theå ñöôïc baûo veä trong khi thö muïc cha thì khoâng. 
3.3.2 Leänh 

ls  -l 

Leänh  naøy  lieät  keâ  danh  saùch  caùc  file  vaø  caùc  thuoäc  tính cuûa chuùng  trong  moät  thö  muïc, 
qua  ñoù  ta  coù  theå  phaùt  hieän  loaïi  file,  caùch  baûo  veä,  ngöôøi  sôû  höõu,  vaø  kích  thöôùc  cuûa 
chuùng… 

Thí duï: 

Caùc file thöôøng (ordinary files): 
 

$

ls 

-l 

/bin 

 

-rwxrwxr-x 

bin 

bin 

16336  Mar  8 

1988  cat 

 

-rwxrwxr-x 

root  bin 

16124  Mar  8 

1988  cp 

 

-rwxrwxr-x 

bin 

bin 

18760  Mar  8 

1988  cat 

 

-rwxrwxr-x 

bin 

bin 

13320  Mar  8 

1988  echo 

 

-rwxrwxr-x 

bin 

bin 

33896  Mar  8 

1988  ed 

 

-rwxrwxr-x 

bin 

bin 

28928  Mar  8 

1988  file 

 

-rwxrwxr-x 

root  bin 

16124  Mar  8 

1988  ln 

background image

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

 

15 

 

-rwxrwxr-x 

bin 

bin 

60152  Mar  8 

1988  ls 

 

-rwxr-sr-x 

bin 

mail  63264  April  2 

1988  mail 

 

-rwxrwxr-x 

bin 

bin 

15276  Mar  8 

1988  mesg 

 

-rwxr-xr-x 

root  bin 

13180  Mar  8 

1988  mkdir 

 

… 

Trong ñoù: 
 

Coät 1 : loaïi file vaø quyeàn thaâm nhaäp (-rwxrwxr-x, rwxr-xr-x…) 

 

Daáu tröø ‘-‘ ôû ñaàu coù nghóa file laø file thöôøng (khoâng phaûi thö muïc). 

 

Daáu tröø ôû trong daõy bit coù nghóa laø khoâng coù quyeàn töông öùng bit ñoù. 

 

Ñeå tieát kieäm choã, ngöôøi ta ñaët bit s vaøo cuøng moät nôi vôùi bit x vaø kyù hieäu: 

s  neáu x toàn taïi 

S neáu X khoâng toàn taïi. 

(bit s : set uid hoaëc set gid khi chaïy file) 
Coät 2 : soá lieân keát (link number) 
Coät 3 : teân ngöôøi sôû höõu file (owner) 
Coät 4 : teân nhoùm sôû höõu file (group) 
Coät 5 : kích thöôùc file. 
Coät 6,7,8 : ngaøy söûa ñoåi gaàn nhaát 
Coät 9 : teân file. 

 

Caùc file ñaëc bieät (Special files): 
 

$

ll 

/dev

 

 

crw------- 

lp 

bin 

 

8.97  May  6 

1988  lp1 

 

crw-rw-rw- 

root  sys 

 

3,2 

Apr 

09:08  null 

 

brw-r----- 

root  sys 

 

0,96  Apr 

08:54  pd300 

 

 

 

crw-rw-rw- 

root  sys 

 

4,012  May  6 

1988  rflop 



crw--w--w- 

root  other   

1,17  Mar  2 

07:57  tty11 

Trong ñoù: 
 

Coät  1:  Kyù  töï  ñaàu  tieân  laø c hoaëc b coù nghóa laø file ñöôïc ñoïc hoaëc ghi theo töøng 

kyù töï (c) hoaëc ghi theo töøng khoái (b). 
 

Coät 5:  Bieåu dieãn majo vaø minor cuûa thieát bò (major: loaïi thieát bò, minor: ñòa chæ 

cuûa thieát bò) 
 
Caùc file thö muïc (directory files): 
 

$

ll 

/users 

 

drwxr-xr-x 

user1  stagiair 

240 

Mar  31 

10:16  user1 

background image

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

 

16 

 

drwxr-xr-x 

user2  stagiair 

32 

Mar  31 

11:16  user1 

 

drwxr-xr-x 

user3  stagiair 

24 

Mar  31 

10:16  user1 

 

drwxr-xr-x 

user4  stagiair 

32 

Mar  31 

11:16  user1 

trong ñoù: 
 

Coät 1:  Kyù töï ñaàu tieân d coù nghóa laø file thö muïc. 

 

Coät 2: Soá caùc thö muïc con 

3.3.3 Thay ñoåi quyeàn thaâm nhaäp file: 
Leänh 

chmod

 cho pheùp thay ñoåi quyeàn thaâm nhaäp caùc file vaø thö muïc. Coù theå chaïy leänh 

theo 2 caùch: 

cho thoâng soá tuyeät ñoái: 

chmod  

mode   teân_file 

 

trong ñoù thoâng soá mode laø moät soá cô soá 8 (octal) 

 

 

r  w  x   

r  -  x   

r  -  - 

 

 

1  1  1   

1  0  1   

1  0  0 

   

    7 

 

    5 

 

    4 

   

$

chmod 

754 

teân_file

 

duøng caùc kyù hieäu töôïng tröng: 

chmod  

who  [operation] 

[right]   

filename 

 

trong ñoù: 

 

 

who  : 

coù nghóa 

user 

 

 

 

 

 

 

group 

 

 

 

 

 

 

other 

 

 

 

 

 

 

all 

 

 

operation: 

 

 

 

 

theâm quyeàn 

 

 

 

 

bôùt quyeàn 

 

 

 

 

=  

gaùn giaù trò khaùc 

 

 

right: 

 

 

 

 

reading 

 

 

 

 

writing 

 

 

 

 

execution 

 

 

 

 

ñaët suid hoaëc guid 

Thí duï: 

 

$

chmod 

g-w, o = r 

toto 

3.3.4 Ñaët quyeàn thaâm nhaäp ngaàm ñònh: 
Caùc quyeàn thaâm nhaäp ñöôïc gaùn baèng maët naï quyeàn thaâm nhaäp cuûa töøng ngöôøi söû duïng. 
Leänh 

umask

 cho pheùp ta ñaët maët naï naøy. Cuù phaùp cuûa leänh nhö sau: 

 

umask  nnn 

trong ñoù: nnn laø soá buø 7 cuûa giaù trò caùc quyeàn thaâm nhaäp. 

Thí duï: 

 

$

umask 

177

 

background image

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

 

17 

 

$

titi 

$

ll 

titi 

 

-rw------- 

user1  other  0 

Mar  11 

10:11  titi 

 

$

umask 

333 

 

$

>toto

 

 

$

ll 

toto

 

 

-r--r--r-- 

1  

user1  other  0 

Mar  11 

20:11  toto 

3.3.5 Thay ñoåi ngöôøi hoaëc nhoùm sôû höõu file: 
Leänh 

chown

 cho pheùp thay ñoåi ngöôøi sôû höõu. 

Leänh 

chgrp

 cho pheùp thay ñoåi nhoùm sôû höõu. 

 

$

echo  Hello  >file1

 

 

$

chmod  700  file1

 

 

$

ls  -l  file1 

 

-rwx------ 

user1  stagiair 

Apr 

14:06  file1 

 

$

cat  file1 

 

Hello 

 
 

$

chgrp   animator   file1 

 

$

ls   -l   file1 

 

-rwx------ 

user1  animator 

Apr 

14:06  file1 

 

$

chown  user2   file1 

 

$

ls   -l  file1

 

 

-rwx------ 

user2  animator 

Apr 

14:06  file1 

 
 

$

cat  file1 

 

cat: cannot open file1 

Baøi taäp: 

1.  Haõy taïo chöông trình sau trong thö muïc tieáp nhaän: 

chöông trình “hello”: 

$

cat  >  

hello 

print  ”Hello” 
print  “How are you ?” 
^D 

chöông trình reply: 

$

cat  > 

reply 

print  “Hello” 
print  “Fine. And you ?” 
^D 

2.  Xem quyeàn thaâm nhaäp vaøo caùc file treân: 

ll 

-R 

3.  Chaïy 2 chöông trình treân. 

background image

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

 

18 

Ñaët quyeàn chaïy ñöôïc (executable) cho 2 files treân. 
Chaïy laïi 2 chöông trình treân. 
 

$

hello 

 

$

chmod    +x   hello 

 

$

hello 

4.  Boû  caùc  quyeàn thaâm nhaäp tôùi hello vaø reply cuûa nhöõng ngöôøi cuøng nhoùm (group) 

vaø cuûa nhöõng ngöôøi khaùc (other) 

chmod   go = teân file 

 

Coù  theå  duøng leänh  chmod  theo caùch  khaùc ñöôïc  khoâng  ?  Haõy  thöû  vôùi  caû  caùc  file 

khaùc (g-rwx, o-rwx, 700 …) 

5.  Thay ñoåi quyeàn thaâm nhaäp sao cho nhöõng ngöôøi cuøng nhoùm coù khaû naêng ñoïc vaø 

chaïy caùc file hello vaø reply 

6.  Haõy thöû thay ñoåi ngöôøi hoaëc nhoùm sôû höõu cuûa moät file: 

chown  userY   file 

 

Khi ñoù file seõ thuoäc sôû höõu cuûa ngöôøi khaùc. Coù theå xoaù ñöôïc khoâng ? 

7.  Haõy laøm theo höôùng daãn sau: 

cat 

rm 

echo  Hello 
^D 

ñeå taïo file rm, sau ñoù söûa quyeàn thaâm nhaäp ñeå file coù theå chaïy ñöôïc: 
 

 

chmod    +x    rm 

thöû chaïy file rm ñeå xoaù moät file naøo ñoù ñang toàn taïi: 
 

 

rm    file 

Ñieàu gì seõ  xaûy ra? 
KHOÂNG BAO GIÔØ ÑÖÔÏC ÑAËT TEÂN FILE TRUØNG VÔÙI TEÂN LEÄNH HEÄ THOÅNG.  
(CHUÙ YÙ: 

test

 cuõng laø moät leänh cuûa heä thoáng) 

background image

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

 

19 

Baøi 4: Sao cheùp, chuyeån, lieân keát vaø tìm kieám file. 
 

Noäi dung: caùc thao taùc, caùc leänh thöôøng duøng vôùi file 
 
4.1 Sao cheùp file 
Leänh 

cp

 (copy) cho pheùp ta sao cheùp moät  hoaëc nhieàu file: 

sao cheùp moät file: 

$

cp 

file_nguoàn 

file_ñích 

sao cheùp nhieàu file vaøo moät  thö muïc: 

$

cp 

file1  file2…  thö_muïc

 

sao taát caû caùc file vaøo moät thö muïc: 

$

cp 

thö_muïc

 

 

Thí duï: 

 

$

pwd 

 

/users/user2 

 
 

$

ls 

-l 

 

total  2 

 

drwxrwxr-x  2 

user2  stagiair 

32 

Apr 

16:31  copie 

drwxrwxr-x  2 

user2  stagiair 

96 

Apr 

16:31  source 

 
$

cd 

source 

 
$

ls 

-l 

total  3 

 

-rw-rw-r--  1  user2  stagiair 

16 

Apr 

16:25  original1 

-rw-rw-r--  1  user2  stagiair 

17 

Apr 

16:26  original2 

-rw-rw-r--  1  user2  stagiair 

18 

Apr 

16:27  original3 

 
$

ls 

-l 

../copie 

total  0 
 
$

cp 

original1 

../copie/original1.copie

 

 
$

ls 

-l 

../copie 

total  1 
-rw-rw-r--  1  user2  stagiair  16 

Apr 

16:25  original1.copie 

 
$

cp 

../copie 

background image

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

 

20 

$

cd 

../copie 

 
$

ls 

-l 

total  4 
-rw-rw-r--  1  user2  stagiair  16 

Apr 

16:25  original1 

-rw-rw-r--  1  user2  stagiair  16 

Apr 

16:25  original1.copie 

-rw-rw-r--  1  user2  stagiair  17 

Apr 

16:26  original2 

-rw-rw-r--  1  user2  stagiair  18 

Apr 

16:27  original3 

 

4.2 Chuyeån vaø ñoåi teân file: 
Leänh 

mv

 cho pheùp chuyeån vaø ñoåi teân file: 

chuyeån moät file: 

$

mv  file_nguoàn 

file_ñích 

chuyeån nhieàu file: 

$

mv  file1  file2  … 

thö_muïc 

$

mv  * 

thö_muïc 

chuyeån thö muïc: 

$

mv  thö_muïc1 

thö_muïc2 

(caùc thö muïc phaûi coù cuøng thö muïc con) 

 

Thí duï: 

 

$

pwd

 

 

/users/user2/source 

 
 

$

ls 

-l 

 

total  3 

 

-rw-rw-r--  1  user2  stagiair 

16 

Apr 

16:25  original1 

-rw-rw-r--  1  user2  stagiair 

17 

Apr 

16:26  original2 

-rw-rw-r--  1  user2  stagiair 

18 

Apr 

16:27  original3 

 
 
$

mv  original1 

original1.bis 

 
$

ls 

-l

 

total  3 

 

-rw-rw-r--  1  user2  stagiair 

16 

Apr 

16:25  original1.bis 

-rw-rw-r--  1  user2  stagiair 

17 

Apr 

16:26  original2 

-rw-rw-r--  1  user2  stagiair 

18 

Apr 

16:27  original3 

 
$

cd 

.. 

 

background image

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

 

21 

$

pwd 

/users/user2 
  
$

ls 

-l 

total  2 
drwxrwxr-x  2 

user2  stagiair 

96 

Apr 

10:20  copie 

drwxrwxr-x  2 

user2  stagiair 

96 

Apr 

10:21  source 

 
$

mv  source   

replace 

 
$

ls 

-l 

total  2 
drwxrwxr-x  2 

user2  stagiair  96 

Apr 

10:20  copie 

drwxrwxr-x  2 

user2  stagiair  96 

Apr 

10:21  replace 

 
$

ls 

-l 

replace 

total  3 
-rw-rw-r--  1  user2  stagiair 

16 

Apr 

16:25  original1.bis 

-rw-rw-r--  1  user2  stagiair 

17 

Apr 

16:26  original2 

-rw-rw-r--  1  user2  stagiair 

18 

Apr 

16:27  original3 

 

4.3 Taïo lieân keát vôùi file: 
Taïo lieân keát vôùi file laø taïo theâm cho file teân môùi vaø ñöôøng daãn töông öùng. Leänh 

ln

 cho 

pheùp ta laøm vieäc treân. 
 

$

ln 

file_nguoàn 

file_ñích

 

Baèng leänh ls   -l, ta coù theå xem soá lieân keát cuûa file. Leänh rm duøng ñeå xoùa moät lieân keát. 
Muoán xoaù moät file, ta phaûi xoaù taát caû caùc lieân keát cuûa noù. 

Thí duï:

 

 

$

pwd 

 

/users/user2 

 
 

$

ls 

-l 

 

total  2 

 

drwxrwxr-x  2 

user2  stagiair 

96 

Apr 

10:20  appli 

drwxrwxr-x  2 

user2  stagiair 

96 

Apr 

10:21  source 

 
 

$

ls 

-l 

appli 

 

total  1 
-rw-rw-r--  1  user2  stagiair 

71 

Apr 

17:05  file1 

 
$

ln 

appli/file1 

file.link 

background image

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

 

22 

 
$

ls 

-l 

appli 

total  1 
-rw-rw-r--  2  user2  stagiair 

71 

Apr 

17:05  file1 

 
$

ls 

-l 

file.link 

total  1 
-rw-rw-r--  2  user2  stagiair 

71 

Apr 

17:05  file.link 

 

4.4 Tìm kieám moät file 
Leänh 

find

 cho pheùp tìm moät hay nhieàu file trong caây thö muïc. Ta coù theå: 

Tìm theo teân: 

$

find  ñöôøng_daãn   -name  teân_file  -print 

Tìm theo soá i-node (i-num) cuûa file: 

$

find  ñöôøng_daãn    -inum   number     -print 

Tìm theo teân ngöôøi sôû höõu: 

$

find   pathname    -user    username     -print 

Ñeå  traùnh  caùc  thoâng  baùo  loãi  ñöa  ra  maøn  hình,  ta  coù  theå  ñoåi  höôùng  ñaàu  ra  loãi  chuaån 
(standard error) tôùi moät file khoâng (/dev/null) 
 

$

find  /     -name    filename    -print    2> /dev/null

 

Thí  duï: 

 

$

pwd

 

 

/users/user1 

 
 

$

find  /    -name     ttyc2d1    -print   2> /dev/null 

 

/dev/ttyc2d1 

 

$

ls   -i    /unix 

2810  -r-xr--r--  2 

bin 

bin 

508516   Mar  10 

1989  /unix 

 
$

find  /   -inum    2810     -print    2> /dev/null 

 

/unix 

 

/makesys/root/unix 

 
 

$

pwd 

 

/users/user1 

 
 

$

find  /users  -user  -user1  -print 

 

/users/user1 

 

/users/user1/res1 

 

/users/user1/res 

background image

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

 

23 

 

/users/user1/file1 

 
 

$

ll 

 

total  3 
-rw-rw-r--  1  user1  stagiair 

75 

Oct 

18 

11:41  res1 

-rw-rw-r--  1  user1  stagiair 

75 

Oct 

18 

11:42  res 

-rw-rw-r--  1  user1  stagiair 

75 

Oct 

18 

11:43  file1 

 
Baøi taäp: 

1.  Taïo 2 files file1 vaø file2 trong thö muïc tieáp nhaän. 
2.  Sao caùc file ñoù vaøo caùc file file?.old 

cp 

file1  file1.old 

3.  Taïo caùc thö muïc src vaø bin 

mkdir  src 

bin 

4.  Sao caùc file file1 vaø file2 vaøo thö muïc src, caùc file file?.old vaøo thö muïc bin. 
5.  Xoaù caùc file trong thö muïc tieáp nhaän. 
6.  Sao caùc files file1, file2, file1.old vaø file2.old trôû laïi thö muïc tieáp nhaän. 
7.  Ñeå laøm tieáp caùc phaàn sau, caàn toå chöùc caùc file nhö sau: 

file1 vaø file2 ôû trong thö muïc bin 

file1.old vaø file2.old ôû trong thö muïc src vaø 

khoâng coù file naøo ôû trong thö muïc tieáp nhaän. 

Taïo moät lieân keát teân laø file3 trong thö muïc tieáp nhaän vôùi file1 trong thö muïc bin 
   

cd 

   

ln 

/users/userX/bin/file1 

/users/userX/file3 

8.  Lieät keâ 2 file  file1 vaø file3 

ll  -i  /users/userX/bin/file1 

/users/userX/file3 

 

Ta coù nhaän xeùt gì veà nhöõng thoâng tin ñöôïc ñöa ra maøn hình ? 

9.  Haõy xoaù file3 vaø kieåm tra xem noù ñaõ bò xoaù chöa, xem ñieàu gì xaûy ra vôùi file1? 

Haõy giaûi thích. 

10. Leänh  chuyeån  file  (

mv

)  cho  pheùp  ñoåi  teân  moät  file.  Haõy  sao  file  file2.old  trong 

thö muïc src vaøo file file4/ 

11. Haõy tìm file vi 

find  /    -name 

vi 

-print  2>  /dev/null 

12. Xem giaù trò i-num cuûa file vi (duøng 

ll

 vôùi tuyø choïn –l) 

13. Tìm taát caû caùc file coù cuøng giaù trò i-num vôùi vi. 

background image

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

 

24 

Baøi 5: Thoâng tin giöõa nhöõng ngöôøi söû duïng 
 

Noäi dung: giôùi thieäu caùc leänh duøng ñeå truyeàn vaø nhaän tin mail, write 
 
5.1 Thoâng tin baèng leänh mail 
5.1.1 Gôûi thö 
Leänh 

mail

 cho pheùp gôûi thö cho ngöôøi khaùc. Vieäc gôûi khoâng phuï thuoäc  vaøo ngöôøi nhaän 

ñang trong phieân laøm vieäc hay khoâng. 
 

$

mail  user1 

 

message written-out 

 

Ctrl-D 

5.1.2 Nhaän thö: 
Khi baét ñaàu phieân laøm vieäc, neáu ta coù thö, treân maøn hình seõ hieän doøng thoâng baùo “you 
have mail”. Trong  quaù trình laøm vieäc, SHELL seõ laøm coâng vieäc kieåm tra thö ñeán theo 
moät chu kyø thôøi gian ñònh tröôùc. Ñeå xem hoäp thö, ta duøng leänh mail khoâng coù ñoái. 

Thí duï: 

gôûi thö cho ngöôøi khaùc: 

$

whoami

 

user2 
 
$

mail  user3 

you can read my files 
CTRL-D 

nhaän thö 

bmw 
Welcom on DPX/2 
login : user3 
B.O.S 
you have mail 
 
$

mail

 

From user2  Fri  Mar  7  12:07  EET    1992 
you can read my files 
 
?h 
usage 

 

quit 

 

exit without changing mail 

background image

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

 

25 

 

print 

s  [file] 

save (default mailbox) 

w [file] 

same without header 

 

print previous 

 

delete 

+ [user] 

mail to user 

!cmd   

execute cmd 

?q 

 

 

Chuù yù: Ñaàu thö (header) coù theå bò thay ñoåi khi laøm vieäc treân maïng. 
 
5.3 

Thoâng tin baèng leänh write 

Leänh write cho pheùp gôûi thoâng baùo töùc thôøi tôùi nhöõng ngöôøi khaùc ñang trong phieân laøm 
vieäc. 
 
 

 

$

write  user2 

 

 

hello my friend 
how are you 
CTRL – D 

Leänh wall cho pheùp gôûi thoâng baùo tôùi taát caû nhöõng ngöôøi ñang laøm vieäc trong heä. 
 
Leänh write ghi thoâng tin tröïc tieáp leân maøn hình neân coù theå gaây nhieãu cho coâng vieäc maø 
ngöôøi nhaän ñang laøm. Ñeå traùnh laøm vieäc ñoù coù theå duøng leänh mesg vôùi tuyø choïn n. 
 

 

$

mesg 

 

 

… 

 

background image

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

 

26 

Baøi 6: Söû duïng chöông trình soaïn thaûo vi möùc cô sôû 
 

Noäi  dung:  giôùi  thieäu  chöông  trình  soaïn  thaûo  vi, cung caáp moät soá kieán thöùc cô sôû ñeå coù 

theå soaïn thaûo ñöôïc vaên baûn hay chöông trình. 

 
6.1 Khôûi ñoäng vi 

6.1.1 Giôùi thieäu chung: 
vi  (vieát  taét  cuûa  Video  Interactif)  laø  chöông  trình  soaïn  thaûo  vaên  baûn  theo  trang  maøn 
hình: 

Maøn hình ñöôïc xem nhö moät cöûa soå môû treân file. 

Coù khaû naêng di chuyeån cursor tôùi baát kyø nôi naøo treân maøn hình. 

Cöûa soå coù theå di chuyeån töï do treân file. 

Ñeå hieån thò ñuùng, vi caàn bieát kieåu terminal ñang duøng. 
Ta  coù  theå  ñònh  nghóa  ñöôïc  kieåu  terminal  baèng  caùch  gaùn  gía  trò  cho  bieán  moâi  tröôøng 
TERM: 
Thí duï: 
 

 

$TERM=tws2103;export TERM 

Phaàn  lôùn  caùc  phím  ñöôïc duøng  ñoäc  laäp  hoaëc  keát  hôïp  vôùi  phím  SHIFT  vaø  CTRL  ñeå taïo 
caùc leänh cuûa vi. 
Khi moät leänh bò goõ sai, vi baùo hieäu baèng nhaùy maøn hình, keâu beep hoaëc thoâng baùo loãi. 
Chöông  trình  vi ñöôïc  xaây  döïng  töø chöông  trình soaïn thaûo doøng ex. Caùc leänh cuûa ex coù 
theå ñöôïc goïi khi coù daáu “:” ôû doøng cuoái maøn hình. 
6.1.2 Baét ñaàu duøng vi 
Ta coù theå goïi vi vôùi teân file vaên baûn: 
 

$

vi

 

teân_file 

Cöûa soå soaïn thaûo seõ ñöôïc môû taïi ñaàu file. Neáu file chöa toàn taïi, noù seõ ñöôïc taïo bôûi leänh 
ghi. Doøng cuoái cuøng treân maøn hình ñöôïc duøng cho nhöõng vieäc sau: 

vaøo caùc leänh, 

thoáng keâ, 

baùo loãi. 

Ñoái vôùi nhöõng ngöôøi môùi duøng vi, coù theå duøng version khaùc cuûa vi: 
 

$

vedit

  teân_file 

version naøy cuûa vi seõ hieän thoâng baùo INPUT MODE khi ta ñang trong cheá ñoä nhaäp vaên 
baûn. 
 
Khi ta chæ muoán xem noäi dung cuûa moät file, duøng: 
 

$view  teân_file. 

version  naøy  cuûa vi  môû file chæ  ñeå ñoïc,  cho  pheùp  ta xem ñöôïc noäi dung maø traùnh ñöôïc 
nguy cô file bò thay ñoåi. 
 

background image

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

 

27 

6.1.2 Ra khoûi vi: 
Muoán ra khoûi vi vaø ghi file coù theå duøng moät trong caùc caùch sau: 
 

ZZ

 

 

 

hoaëc 

 

:

w

 

sau ñoù :q 

hoaëc 

 

:

wq

 

 

 

hoaëc 

 

:

Ra khoûi vi vaø khoâng ghi file: 
 

:

q

 

(neáu khoâng coù söûa ñoåi) hoaëc 

 

:

q! 

Khi ñang trong vi, muoán laøm vieäc vôùi SHELL, ta coù theå laøm nhö sau: 

chaïy moät leänh cuûa SHELL 

:!leänh 

hoaëc goïi SHELL, sau ñoù chaïy caùc leänh ta muoán, khi keát thuùc aán CTRL-D ñeå trôû 
laïi vi: 

:!sh 
$leänh 
$CTRL-D 

 
6.2 Soaïn thaûo vaên baûn: 
6.2.1 Xen vaên baûn: 

xen kyù töï treân moät doøng: 

a <text>  <ESC>

 

Xen    kyù  töï  vaøo  sau  cursor.  Leänh  khoâng 
ñöôïc hieån thò treân maøn hình. ESC: Keát thuùc 
cheá ñoä xem. 

i <text>  <ESC>

 

Xen kyù töï vaøo tröôùc cursor. 

A <text>  <ESC>

 

Xen kyù töï vaøo cuoái doøng. 

I <text>  <ESC>

 

Xen kyù töï vaøo ñaàu doøng. 

xen doøng: 

o <text>  <ESC>

 

 

Xen moät doøng vaøo tröôùc doøng chöùa cursor. 

O <text>  <ESC>

 

 

Xen moät doøng vaøo sau doøng chöùa cursor. 

Ghi chuù: muoán xen caùc kyù töï khoâng in ñöôïc (non printable) ta phaûi goõ: 
 

CTRL – V

 tröôùc chuùng. 

6.2.2 Di chuyeån cursor trong file: 

theo kyù töï: 
sang traùi: duøng phím muõi teân traùi hoaëc h hoaëc backspace. 
xuoáng doøng: duøng phím muõi teân xuoáng hoaëc j hoaëc linefeed 
sang phaûi : duøng phím muõi teân phaûi hoaëc i hoaëc escape. 
leân doøng : duøng phím muõi teân leân hoaëc k. 

theo doøng: 

^

 

veà ñaàu doøng 

$

 

cuoái doøng 

background image

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

 

28 

Enter

  ñaàu doøng tieáp 

ñaàu doøng treân 

 

0

(null) veà ñaàu doøng vaät lyù (doøng baét ñaàu baèng daáu caùch hoaëc tab) 

theo maøn hình: 

H

 

veà ñaàu maøn hình (Home) 

M

 

veà giöõa maøn hình (Middle) 

L

 

veà cuoái maøn hình (Last) 

theo töø (word): 

W

 

veà ñaàu töø tieáp 

B

 

ñaàu töø hieän taïi 

E

 

cuoái töø hieän taïi 

theo caâu (sentence): 

(

 

veà ñaàu caâu 

)

 

veà cuoái caâu 

daáu keát thuùc moät caâu laø caùc daáu 

.

!

 hoaëc 

? 

theo ñoaïn vaên (paragraph): 

{

 

veà ñaàu ñoaïn vaên 

}

 

cuoái ñoaïn vaên 

ñoaïn vaên keát thuùc baèng moät doøng troáng. 

theo cöûa soå (window): 

 

doøng hieän taïi ôû giöõa cöûa soå. 

z<Enter>

 

doøng hieän taïi ôû ñaàu cöûa soå. 

z- 

 

doøng hieän taïi ôû cuoái cöûa soå. 

 

^D

 

 

xuoáng nöûa cöûa soå 

^U

 

 

leân nöûa cöûa soå 

^F

 

 

xuoáng moät cöûa soå (-2 doøng) 

^B

 

 

leân moät cöûa soå (2 doøng) 

 
Ghi chuù: ^ laø kyù hieäu cuûa phím CTRL 

theo soá thöù töï doøng: 
Ñeå hieån thò soá thöù töï cuûa caùc doøng soaïn thaûo: 
 

:

set 

nu 

Xoaù boû hieån thò treân: 
 

:

set   nonu

 

 
:

n <Enter>

 hoaëc 

nG

   

chuyeån cursor ñeán doøng thöù n 

:$ hoaëc G 

 

 

ñeán doøng cuoái vaên baûn 

 
:

se list

  

 

 

hieån thò caùc kyù töï aån (hidden) 

 

background image

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

 

29 

tìm daõy kyù töï: 

 

 

kyù hieäu chieàu tìm xuoâi. 

?

 

 

kyù hieäu chieàu tìm ngöôïc. 

 

/string

   

chuyeån cursor tôùi doøng chöùa daõy kyù töï theo chieàu xuoâi. 

 

?string

  

chuyeån cursor tôùi doøng chöùa daõy kyù töï theo chieàu ngöôïc. 

 

//

 

 

laëp laïi tìm xuoâi. 

??

 

 

laëp laïi tìm ngöôïc. 

6.2.3 Xoùa vaên baûn: 

xoùa kyù töï: 

x

 

 

xoùa kyù töï taïi vò trí cursor 

3x

 

 

xoùa 3 kyù töï 

X

 

 

xoùa kyù töï tröôùc vò trí cursor 

xoùa doøng vaên baûn: 
dd hoaëc  :

d<CR>

 

xoùa doøng chöùa cursor 

3dd

 

 

 

xoùa 3 doøng baét ñaàu töø doøng chöùa cursor 

d$

 hoaëc 

D

 

 

xoùa ñeán cuoái doøng 

 
dw 

 

 

xoaù töø chöùa cursor 

3dw 

hoaëc 

d3w

  

xoaù 3 töø 

 

d/string 

 

xoùa khi heát daõy string 

6.2.4 Thay theá vaên baûn: 

thay theá kyù töï: 
rc 

 

 

thay theá kyù töï hieän taïi baèng kyù töï c (???) 

R<text><ESC>

 

thay theá soá kyù töï baèng daõy “text” 

 

thay theá doøng: 

S<text><ESC>

 

xoùa doøng hieän taïi vaø thay noù baèng “text” 

 

thay theá töø: 

cw<text><ESC>

 

thay  moät  töø  baèng  “text”.  Töø  ñöôïc  thay  theá  tính töø  cursor 
ñeán kyù töï $. 

c2w<text><ESC>

  

thay 2 töø. 

C

 hoaëc c

$

 

thay theá cuoái doøng 

c/string

  

thay theá ñeán heát ”string” 

6.2.5 Xoùa hoaëc laëp laïi leänh: 

Xoaù leänh 

u

 

 

xoùa taùc duïng cuûa leänh cuoái cuøng 

background image

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

 

30 

U

 

 

xoaù taát caû thay ñoåi ñaõ laøm treân doøng hieän taïi. 

Laëp laïi leänh: 

 

laëp laïi leänh söûa ñoåi vaên baûn cuoái cuøng (???) 

6.2.6 Xem traïng thaùi vaên baûn ñang soaïn thaûo: 
^G 

Hieån thò teân, traïng  thaùi,  soá doøng, vò  trí ,cursor vaø phaàn traêm vaên baûn tính töø vò 
trí cursor ñeán cuoái vaên baûn. 

6.2.7 Sao cheùp, chuyeån vaên baûn: 

di chuyeån vaên baûn: 

Moãi  laàn  thöïc  hieän  moät  leänh  xoùa  (x  hoaëc  d),  vi  ñeàu  ghi  laïi  phaàn  vaên  baûn  bò  xoùa  vaøo 
vuøng  ñeäm  rieâng  cho  ñeán  laàn  xoùa  sau.  Leänh  p  vaø  P cho  pheùp  laáy laïi  vaên baûn  töø vuøng 
ñeäm  ñoù.  Tröôùc  khi  thöïc  hieän  leänh  naøy,  cursor  phaûi  ñöôïc  ñaët  vaøo  vò  trí  cuøng  kieåu  vôùi 
phaàn vaên baûn coù trong vuøng ñeäm: 
 

 

-kyù töï 

 

 

-töø 

 

 

-doøng 

 

 

-cuoái doøng (end of line) 

p sao phaàn vaên baûn xoaù laàn cuoái cuøng vaøo sau ñoái töôïng trong cuøng kieåu. 
P sao phaàn vaên baûn xoaù laàn cuoái vaøo tröôùc ñoái töôïng cuøng kieåu. 
 
Moät caùch khaùc ñeå chuyeån doøng: 
 

:

5,10m20

 

chuyeån caùc doøng töø 5 ñeán 10 tôùi sau doøng 20 

 

Sao cheùp vaên baûn: 

Leänh y(yank)  cho  pheùp sao  phaàn  vaên baûn  ta muoán  vaøo vuøng  ñeäm. Muoán sao phaàn 
vaên baûn töø vuøng ñeäm ra, ta phaûi chuyeån cursor vaøo nôi caàn sao, sau ñoù duøng p hoaëc 
P. 
 

Y3w

   

 

sao 3 töø vaøo vuøng ñeäm 

 

Y

 hoaëc 

yy

 

 

sao doøng hieän taïi vaøo vuøng ñeäm. 

 

5yy

 

 

 

sao 5 doøng vaøo vuøng ñeäm 

Moät caùch khaùc ñeå sao cheùp doøng: 
 

:

5,8t25 

 

 

sao caùc doøng töø 5 ñeán 8 tôùi sau doøng 25 

 
6.3 

Duøng vi vôùi danh saùch caùc leänh ñaõ chaïy cuûa Shell (history of commands) 

Leänh 

fc

 (fix command) cho pheùp ta soaïn thaûo baèng vi vaø chaïy laïi caùc leänh ñaõ chaïy cuûa 

Shell, caùch duøng nhö sau: 

soaïn thaûo vaø cho chaïy leänh cuoái cuøng: 

$fc 

soaïn thaûo moät nhoùm leänh vaø cho chaïy: 

$fc 

xem danh saùch 16 leänh cuoái cuøng: 

$fc 

-l 

hoaëc history 

background image

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

 

31 

$fc 

-lr 

(danh saùch theo thöù töï ngöôïc laïi) 

taïo moät file chöùa moät soá leänh ñaõ chaïy (cuûa history): 

$fc 

-nl 

n1 

n2 

>  cmd 

 

cmd laø moät file chöùa caùc leänh cuûa history töø leänh n1 ñeán leänh n2 

Baøi taäp: 

1.  Sao file vaên baûn coù saün vaøo thö muïc tieáp nhaän: 

cp  /users/EXERCISES/editsave 

edition 

2.  Duøng chöông trình vi ñeå soaïn thaûo file treân: 

vi 

edition 

3.  Chuyeån cursor xuoáng cuoái doøng vaên baûn, xong laïi chuyeån veà ñaàu vaên baûn. 
Duøng: 
   

CTRL – D vaø CTRL – U hoaëc  

   

CTRL – F vaø  CTRL – B hoaëc 
G  

      vaø  :1 

4.  Haõy söûa: 

Teân “Dupont Jean” ñaàu tieân thaønh “Jean-Jacques” 

Teân “Dupont Pierre” ñaàu tieân thaønh “Jean-Pierre” 

Laøm nhö sau: 
  /Dupont Jean/ 
  chuyeån cursor tôùi kyù töï “n” cuûa “Jean” 
  a-Jacques<ESC> 
 
  /Dupont Pierre/ 

chuyeån cursor tôùi kyù töï “p” cuûa “Pierre” 
iJean-<ESC> 

5.  Haõy vaøo teân mình vaøo doøng tröôùc doøng “Dupont” ñaàu tieân: 

:1 
/Dupont/ 
Oname<ESC> 

6.  Haõy vaøo bieät hieäu hoaëc moät teân baát kyø vaøo sau doøng  “Dupont” cuoái cuøng: 


?Dupont? 
oname<ESC> 

7.  Ghi file vaø ra khoûi vi: 

:wq hoaëc 
ZZ 

8.  Vaøo laïi vi vaø soaïn thaûo file edition. Ñaët vaø boû cheá ñoä hieån thò soá doøng. 

vi edition 
:set   nu 
:set 

nonu 

9.  Haõy söûa “Dupont Jean” thaønh “Martin Jean”: 

background image

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

 

32 

Chuyeån cursor tôùi kyù töï “D” cuûa “Dupont”: 
hoaëc: 
   

XxxxxxiMartin<ESC> 

(duøng x ñeå xoùa kyù töï) 

(neáu laøm sai hoaëc muoán laøm laïi goõ U ñeå xoaù boû toaøn boä thay ñoåi treân doøng) 
hoaëc: 
   

dwiMartin<ESC> 

 

(duøng dw ñeå xoùa töø) 

hoaëc: 
   

cwMartin<ESC> 

 

(duøng cw ñeå thay töø) 

10. Xoaù doøng chöùa “Coteau Jean”: 

/Couteau Jean/ 
dd 

11. Thay taát caû “Dupont” thaønh “Durand” 

/Dupont/ 
cwDurand<ESC> 
// 

12. Chuyeån caùc doøng chöùa “Durand” xuoáng cuoái vaên baûn: 
Chuyeån cursor tôùi doøng “Durand” ñaàu tieân: 

4dd 

(xoùa 4 doøng vaø ñöa vaøo vuøng ñeäm) 

(chuyeån ñeán cuoái vaên baûn) 

(sao töø trong vuøng ñeäm) 

13. Nhaân ñoâi doøng chöùa “Martin Jean” 

yy 

14. Hieän  ta  ñang  trong  vi,  haõy  gôûi  thoâng  baùo  tôùi  cho  ngöôøi  khaùc  ñang  trong phieân 

laøm vieäc: 

:!who 
:!mail userX 
message 
^D 

15. Ta ñang ôû taïi thö muïc tieáp nhaän, söûa ñoåi vaø chaïy laïi moät leänh: 

$cd 
$write  userX 
message 
^D 
$fc 

->söûa X thaønh Y 

:wq 

background image

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

 

33 

Baøi 7  Shell_script 
 

Noäi dung: giôùi thieäu shell, tieán trình (process) vaø caùc caùch thöùc thöïc hieän tieán trình. 
 
Shell coù theå ñoïc vaø thöïc hieän moät file goàm danh saùch caùc leänh caàn thöïc hieän. 
File ôû daïng naøy ñöôïc goïi laø shell_sript hoaëc procedure 
Shell_script  ñöôïc thöïc hieän nhôø shell, vaø chính shell seõ phaùt sinh vaø quaûn lyù taát caû caùc 
tieán trình caàn thieát ñeå thöïc hieän coâng vieäc ñöôïc moâ taû trong shell_script 
 
7.1 Quaûn lyù tieán trình: 

7.1.1 Muïc ñích cuûa shell 
Shell laø chöông trình thoâng dòch leänh 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7.1.2 Taïo tieán trình: 
Khaùi nieäm chung veà tieán trình: 
Tieán  trình  ñöôïc hieåu  laø vieäc  thöïc hieän  moät  coâng vieäc  hay  moät chöông  trình  trong  moâi 
tröôøng cuï theå trong heä thoùng. Ta coù theå phaân bieät hai loaïi tieán trình: 

Tieán  trình  heä  thoáng:  laø  tieán  trình  khoâng  gaén  vôùi  baát  kyø  moät  terminal  naøo,  noù 
ñöôïc taïo ra  vaøo thôøi  ñieåm khôûi  ñoäng heä  thoáng  hoaëc vaøo  caùc  thôøi  ñieåm  coá  ñònh 
do ngöôøi duøng quaûn trò heä thoáng ñaët. 

Hieån thò $ 

Ñoïc leänh 

Taïo tieán trình 

Ñôïi tieán trình keát thuùc 

Hieån thò $ 

background image

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

 

34 

Tieán trình do ngöôøi söû duïng taïo ra. 

 
Caùc tieán trình ñöôïc toå chöùc theo daïng caây: 
 

Tieán trình cha  

 

tieán trình con 

  

    (parent) 

 

 

  (child) 

 
Ñoái vôùi ngöôøi söû duïng, tieán trình cha laø Shell ñöôïc taïo taïi thôøi ñieåm baét ñaàu phieân laøm 
vieäc. 
7.1.3 Lieät keâ caùc tieán trình: 
Leänh ps cho pheùp lieät keâ danh saùch caùc tieán trình ñang dieãn ra: 
 

$ps 

-f 

 

UID   

PID  PPID  C 

STIME 

TTY  TIME  COMMAND 

 

user5   

4582  1 

11:04:45 

tty23  0:01  -sh 

 

user5   

4792  4582  36 

11:10:04 

tty23  0:04  ps  -f 

trong ñoù: 
 

UID   

soá UID cuûa ngöôøi chuû tieán trình 

 

PID   

soá cuûa tieán trình (process identity) 

 

PPID   

soá cuûa tieán trình cha (parent process identity) 

 

 

chæ soá söû duïng boä xöû lyù (processor utilization for scheduling). 

 

STIME 

thôøi ñieåm baét ñaàu tieán trình 

 

TTY   

terminal ñieàu khieån tieán trình 

 

TIME   

thôøi gian tích luyõ thöïc hieän tieán trình (cumulative time) 

 

COMMAND  teân leänh sinh ra tieán trình 

Tieán  trình  soá  1  laø  tieán trình init, trong ñoù coù chöùcc naêng giaùm saùt caùc terminal, laø tieán 
trình cha cuûa taát caû caùc tieán trình Shell khi login. 
Caùch thöïc hieän moät shell_script: 
 

 

$

chmod    +x    proc

 

 

 

$

proc

 

hoaëc  
 

 

$

sh 

proc

 

 
7.2 Laäp caùch thöùc (setup) cho shell_script: 

Leänh set cho pheùp laäp caùch thöùc chaïy shell_script. 
 

set 

-x

 

 

hieån thò doøng leänh sau khi trieån  khai leänh 

 

set 

-v

 

 

hieån thò doøng leänh tröôùc khi trieån khai 

 

set 

-e

 

 

ra khoûi shell_script sau khi gaëp moät loãi 

 

set 

-t

 

 

ra khoûi shell_script sau leänh tieáp 

 

set  

-

 

 

xoaù taùc duïng cuûa x vaø v 

Vieäc laäp caùch  thöùc  chæ lieân  quan  tôùi  shell_script  ñang chaïy.  Caùc tuyø choïn -x vaø  –v coù 
theå ñöa vaøo doøng leänh goïi shell_script: 
 

$

sh 

-v 

proc

 

background image

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

 

35 

 

$

sh 

-x 

proc

 

 

Thí duï: 

duøng “-x”: 

$

cat  exam1 

set 

-x 

echo  “The current directory is :” 
pwd 
echo  “List of files :“ 
echo  file1  file2  file3 

 
$

exam1 

+ echo The current directory is : 
The current directory is: 
+ pwd 
/users/user8 
+ echo List of files: 
List of files: 
+ echo file1  file2  file3 
file1  file2  file3 

duøng “-v”: 

$

cat  exam2

 

set 

-v 

echo  “The current directory is :” 
pwd 
echo  “List of files :“ 
echo  file1  file2  file3 
 
$

exam2 

echo The current directory is : 
The current directory is: 
pwd 
/users/user8 
echo List of files: 
List of files: 
echo file1  file2  file3 
file1  file2  file3 

Coù  theå  duøng kyù töï  ‘#’ ñeå vieát chuù thích cho doøng leänh trong shell_script, neáu chuù thích 
vieát  ngay  sau  leänh  treân  cuøng  moät doøng,  ta  phaûi cho ít  nhaát  moät  daáu  caùch  (space)  vaøo 
tröôùc kyù töï ‘#’. 
 

background image

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

 

36 

7.2 Caùc loaïi Shell UNIX 

Coù 3 loaïi shell UNIX: 
 

csh 

cuûa Berkeley BSD 

 

sh 

cuûa AT&T, Bourne-shell 

 

ksh 

cuûa AT&T,Korn-shell 

Shell ksh duøng trong taøi lieäu naøy laø toaøn boä sh keát hôïp vôùi phaàn phaùt trieån cuûa csh. 
Shell  csh  coù  cuù  phaùp  gioáng  ngoân  ngöõ  C,  nhöng  caùc  shell_script  cuûa  csh  khoâng  chaïy 
ñöôïc döôùi sh vaø ksh. 
Döôùi ñaây laø lieät keâ nhöõng khaùc nhau cô baûn khaùc: 

csh vaø ksh coù nhaät kyù (history). 

ksh coù trình soaïn thaûo doøng (line editor) 

cuù phaùp voøng laëp 
csh: while  end 
ksh, sh: while  do    done 

chæ csh coù leänh goto 

cô cheá thay theá bieán cuûa ksh laø hoaøn thieän nhaát 

csh vaø ksh coù caùc pheùp tính soá hoïc. 

background image

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

 

37 

 

Baøi 8: Ñoåi höôùng (Redirection) 
 

Noäi dung: caùc luoàng döõ lieäu vaøo/ra chuan vaø caùc thao taùc ñoåi höôùng chuùng. 
 
8.1 Vaøo/ra chuaån: 

8.1.1 Caùc file vaøo/ra chuaån: 
Khi cho moït file chaïy, Shell töï ñoäng môû 3 file vaøo/ra chuan: 
 

Vaøo chuaån (stdin) 

 

fd = 0 

 

Ra chuaån (stdout) 

 

fd = 1 

 

Loãi chuaån (stderror)   

fd = 2 

Kyù hieäu fd laø moâ taû file (file descriptor). 
Thoâng thöôøng ñaàu vaøo chuaån laø baøn phím, ñaàu ra chuaån vaø loãi chuaån laø maøn hình. 
8.1.2 Ñoåi höôùng ñaàu ra chuaån : 
Ta coù theå ñoåi höôùng caùc soá lieäu, thay vì ra maøn hình, vaøo moät file theo caùc caùch sau: 
 

$

leänh  >  teân_file 

Neáu file chöa toàn taïi, noù seõ ñöôïc töï ñoäng taïo ra. Neáu ñaõ toàn taïi, noäi dung cuõ seõ bò xoùa. 
 

$

leänh    >>   teân_file 

Vôùi caùch naøy, döõ lieäu seõ ñöôïc ghi theâm vaøo cuoái file. 
Thí duï: 
 

$

ls 

/bin  > 

file1 

 

$

ls 

/bin  >> 

file1 

8.1.3 Ñoåi höôùng ñaàu ra loãi chuaån: 

Ñoåi höôùng vaøo moät file: 
 

$

leänh  2  >  file1

 

 

hoaëc: 

 

 

$

leänh 2  >> file1

 

Ñoåi höôùng vaøo file soá lieäu (vaøo ñaàu ra chuaån): 

$

leänh  >  file1    2  >  &1

 

Ñoåi höôùng vaøo file khoâng: 

$

leänh  2  >  /dev/null

 

8.1.4 Ñoåi höôùng ñaàu vaøo chuaån: 

Soá lieäu vaøo chuaån töø moät file: 

$

leänh  <  file2

 

Thí duï: 

 

$

mail   user1  <    file2

 

Ñoåi höôùng caùc leänh töø ñaàu vaøo chuaån:  

Caùch ñoåi höôùng naøy cho pheùp ta ñöa caùc khai baùo cho moät leänh ttrong shell_script: 
  $

command 

<< 

STRING 

 

soá lieäu vaø/hoaëc leänh 

background image

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

 

38 

  maø leänh naøy caàn ñoïc 
  STRING 
  $ 

Thí duï

: duøng leänh cat  taïo moät file: 

 

$

cat  > 

file1  <<OK

 

aa 
bb 
OK 

 
 

$

cat  file1 

 

aa 

 

bb 

 

 
8.2 Chuyeån döõ lieäu giöõa caùc tieán trình: 
Hai doøng leänh sau ñaây: 

 

leänh1      >  temp 

 

leänh2     < 

temp 

coù theå ñöôïc thay theá baèng moät doøng leänh nhö sau: 

 

leänh1  |    leänh 2 

Khi  ñoù  ñaàu  ra  chuaån  cuûa  leänh leänh1  seõ  laø  ñaàu vaøo chuaån cuûa leänh leänh2, vaø file trung 
gian temp khoâng caàn thieát nöõa. 
Kyù hieäu 

 goïi laø oáng (pipe). 

Thí duï: 

 

$

ls 

-l   |   pg 

 
8.3 Ñoåi höôùng keùp (double) ñaàu ra chuaån: 
Leänh  tee  cho  pheùp  ñoåi  höôùng  keùp  ñaàu  ra  chuaån:  vöøa  höôùng  döõ  lieäu  ñaàu  ra  veà  höôùng 
khaùc, vöøa hieån thò ra maøn hình. 
 

$

leänh  |    tee    teân_file. 

 
 

 

 

      stdout 

 

 

 

 

 

 

 

 

 

 

stdout 

 
 
 
 
 
 

 

 

 

 

         teân_file 

 
 

leänh 

tee 

background image

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

 

39 

Thí duï: 

 

$

ps    -ef   |    tee  file_ps   |  grep   $LOGNAME 

Coù  theå  duøng tee vôùi tuyø choïn –a  (tee  –a), khi ñoù döõ lieäu ñaàu ra seõ ñöôïc ghi tieáp vaøo 
cuoái file file_ps 
 
Baøi taäp: 

1.  Haõy vieát leänh coù teân WHO vôùi caùc chöùc naêng sau:: 

tính vaø hieån thò soá ngöôøi söû duïng ñang trong phieân laøm vieäc. 

hieån thò danh saùch vaø caùc thuoäc tính cuûa hoï. 

xoùa file ñeäm (neáu coù duøng) ñöôïc taïo khi chaïy leänh WHO. 

Gôïi yù: duøng caùc leänh 

who, tee, wc

2.  Vieát leänh LLD lieät keâ caùc thö muïc con trong moät thö muïc. 
Gôïi yù: duøng caùc leänh 

ll

 vaø 

grep

 
 
 
 
 
 
 
 
 

background image

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

 

40 

Baøi 9: Cô cheá thay theá cuûa Shell 
 

Noäi  dung:  caùch  thao  taùc  vôùi  caùc  tham  soá cuûa shell_script, caùc bieán trong Shell, caùc kyù 
töï ñaëc bieät ñöôïc thoâng dòch khi vieát trong caâu leänh shell. 
 
9.1 Truyeàn tham soá: 
9.1.1 Truyeàn tham soá cho moät Shell_script 
Moät Shell_script coù theå laøm vieäc vôùi caùc thoâng soá ñöôïc truyeàn qua doøng leänh. 
 

$

proc  par1  par2  par3

 

 

    | 

  | 

   | 

  | 

 

   $0   $1       $2      $3 

Trong  Shell_script  ñöôïc  goïi  (trong  tröôøng  hôïp  naøy  laø  proc),  caùc  tham soá ñöôïc theå hieän 
baèng: 
 

$0

 

teân Shell_script 

 

$1

 

tham soá thöù nhaát 

 

$2

 

tham soá thöù hai 

 

$n

 

tham soá thöù n 

 
 

$#

 

soá caùc tham soá 

 

$*

 

taát caû caùc tham soá 

 

$$

 

PID cuûa shell_script 

 

Thí duï: 

 

$

cat  param

 

 

echo  Name of shell_script: $0 

 

echo  First parameter : $1 

 

echo  Third parameter : $3 

 

echo  Number of parameters: $# 

 

echo  List of all the param: $* 

 

 
 

$

param  London  Paris  New-York  Brussels 

 

Name of shell_script: param 

 

First parameter: London 

 

Third parameter: New-York 

 

Number of parameters: 4 

 

List of all the param: London  Paris  New-York  Brussels 

9.1.2 Dòch chuyeån caùc tham soá: 

background image

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

 

41 

Vôùi caùch theå hieän tham soá cuûa shell_script baèng $n, ta chæ coù theå laøm vieäc ñöôïc vôùi töø 
1 ñeán  9 tham soá. Baèng caùch dòch chuyeån, ta coù theå laøm vieäc vôùi soá tham soá nhieàu hôn 
9. Vieäc dòch chuyeån ñöôïc thöïc hieän bôûi leänh: 
 

shift 

Sau khi shift: 

$0

   

vaãn giöõ nguyeân 

$1

   

maát ñi 

$2

   

thaønh $1 

$3

   

thaønh $2 

$n

   

thaønh $n-1 

$*, S#

 

ñöôïc caäp nhaät laïi. 

Coù theå dòch chuyeån n vò trí baèng caùch: 
 

shift  n 

Thí duï: 

 

$

cat  shifting 

 

echo  First parameter: $1 

 

echo  Nineth parameter: $9 

 

echo   Number of parameters: $# 

 

echo   “SHIFTING” 

 

shift 

 

echo  First parameter: $1 

 

echo  Nineth parameter: $9 

 

echo   Number of parameters: $# 

 

 
 

$

shifting  A  B  C  D  E  F  G  H  I  J  K 

 

First parameter: A 

 

Nineth parameter: I 

 

Number of parameters: 11 

 

“SHIFTING” 

 

shift 

 

First parameter: B 

 

Nineth parameter: J 

 

Number of parameters: 10 

 

 
9.2 Caùc bieán Shell 

9.2.1 Caùc kieåu bieán: 
Ksh coù theå xöû lyù 4 kieåu bieán sau: 

soá nguyeân 

xaâu kyù töï 

background image

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

 

42 

baûng caùc xaâu kyù töï 

baûng caùc soá nguyeân 

Thí duï: 

bieán xaâu kyù töï: 

$string = “character string” 

$

print  $string

 

character string 

Ghi chuù: 

noäi dung bieán ñöôïc bieåu dieãn baèng teân bieán vaø daáu $ ñaèng tröôùc. 

tröôùc vaø sau daáu ‘””’ khoâng coù kyù töï troáng. 

bieán soá nguyeân: 

$integer  var = 2 
$itypeset  -i  var1 = 23 

$

print   $var   $var1 

2   23 

baûng caùc xaâu kyù töï: 

$string[1] = “more characters” 

$

print ${string[1]} 

more characters 

 

 

 

 

 

$

print   ${string[0]} 

 

 

character string 

 
Ghi  chuù:  khi  khai  baùo  moät  bieán,  ta  cuõng coù theå coi bieán  ñoù  laø  bieán  ñaàu  tieân cuûa  moät 
baûng cuøng teân vôùi noù. 

baûng caùc soá nguyeân: 

$

integer   tabint 

$

typeset  -i  i 

 
$

tabint[0] = 13 

$

tabint[13] = “toto” 

ksh:toto:bad member 

$

i=1

 

$

tabint[i] = 45 

$

print tabint[1] 

45 

Chæ soá (index) cuûa baûng laø moät soá nguyeân töø 0 ñeán 511. 

xoùa moät bieán: 

$

unset i 

9.2.2 Caùch thay theá caùc bieán shell: 

background image

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

 

43 

 

$

print  ${var-val1}

 

hieån  thò  giaù  trò  cuûa var,  neáu  bieán var chöa  ñònh nghóa  thì 

hieån thò val1 thay cho giaù trò cuûa var 
 

$

print  ${var=val2}

  neáu var chöa ñònh nghóa, taïo bieán var vôùi giaù trò laø val2 

 

$

print  ${var:-val3}

  gioáng tröôøng hôïp ñaàu 

 

$

print  ${var:=val4}

  gioáng tröôøng hôïp thöù hai nhöng var coù theå chöa ñöôïc ñònh 

nghóa hoaëc coù giaù trò null. 
 

$

print  ${var?message}

 

neáu  var  chöa  ñöôïc  ñònh  nghóa,  hieån  thò  message. 

(thí duï: print  ${var?not defined}) 
 
Chuù thích: 

bieán chöa ñöôïc ñònh nghóa laø bieán chöa toàn taïi 

bieán coù gía trò null laø bieán chæ chöùamoät kyù töï Return, hoaëc xaâu roãng. 

$

integer 

tab

 

$

tab[0]=1 

tab[1]=2 

tab[2]=7

 

lieät keâ caùc giaù trò cuûa baûng: 

$

print  ${tab[*]}

 

1  2  7 

hieån thò soá phaàn töû cuûa baûng: 

$

print  ${#tab[*]}

 

9.1.3 Duøng moät bieán ôû cheá doä hoûi ñaùp: 
Leänh read cho pheùp duøng moät bieán ôû cheá ñoä hoûi ñaùp khi ñang chaïy moät shell_script. 

Thí duï: 

 

$

cat  menu

 

 

echo  This is an example of menu 

 

echo  Choice: 1, 2 or 3 

 

read  reply 

 

echo  Your choice is $reply 

 
 

$

menu

 

 

This is an example of menu 

 

Choice: 1, 2 or 3 

 

 

Your choice is 2 

Cuù phaùp read 

var?”invite”

 cho pheùp hieån thò tröïc tieáp xaâu “invite” 

 

$

read   var?”Choice: 1, 2 or 3?” 

 

Choice :1,2 or 3?

3

 

 

$

echo  $var

 

 

9.2.4 Baûo veä moät bieán: 

background image

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

 

44 

Leänh  read-only  cho  pheùp  baûo  veä  moät bieán.  Ta  chæ  coù  theå  ñoïc  maøkhoâng  thay ñoåi ñöôïc 
giaù trò cuûa noù. 
 

$

VAR=45 

 

$

readonly 

VAR 

 
 

$

VAR=22

 

 

ksh: VAR: is readonly 

 

$

echo $VAR 

 

45 

Leänh readonly khoâng coù ñoái hieån thò danh saùch caùc bieán ñöôïc baûo veä. 
Ñeå baûo veä moät bieán, ta cuõng coù theå duøng tpeset vôùi tuyø choïn –r: 
 

$

typeset 

-r 

var1=68 

 
9.3 Caùc kyù töï ñaëc bieät 

9.3.1 Taïo moät teân vôùi caùc metacharacter 
Moät  soá  kyù  töï  coù  yù  nghóa  ñaëc  bieät trong  doøng  leänh  Shell,  ngöôøi  ta goïi  caùc  kyù  töï  ñoù  laø 
metacharacter. Chuùng cho pheùp taïo ra caùc teân  file ta quan taâm trong moät thö muïc. 
 

thay theá moät xaâu kyù töï baát kyø/ 

 

thay theá moät kyù töï baát kyø. 

 

[] 

thay theá moät trong nhöõng kyù töï trong ngoaëc vuoâng. 

 

[!] 

thay theá moät kyù töï khoâng coù trong ngoaëc vuoâng. 

Muoán  duøng  moät  kyù  töï  kieåu  metacharacter  ñeå  theå  hieän  moät  teân  maø  khoâng  bò hieäu  öùng 
ñaëc bieät cuûa noù, ta caàn cho vaøo tröôùc noù moät kyù töï “\” (backslash). 
Chuù  yù:  caùc  metacharacter  duøng trong  Shell  khoâng cuøng  yù  nghóa vôùi caùc  metacharacter  
duøng trong caùc chöông trình soaïn thaûo. 

Thí duï: 

 

$

echo  *

 

hieån thò taát caû caùc file trong thö muïc. 

 

$

echo  *.c

 

hieån thò taát caû caùc file coù teân keát thuùc baèng .c 

 

$

echo  \*

 

 

 
 

$

ls

 

 

a.out 

 

try.o 

 

file1 

 

file1.c 

 

file5 

 

fileA 

 
 

$

ls 

*.c 

 

file1.c 

background image

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

 

45 

 

$

ls 

*.* 

 

a.out 

 

try.o 

 

file1.c 

 
 

$

ls 

*.?

 

 

try.o 
file1.c 

 
$

ls 

file[0-9] 

file1 
file5 

Chuù  yù:  Caùc  kyù  töï  metacharacter  chæ  coù  taùc  duïng  trong  phaàn  cuûa  doøng  leänh,  chuùng 
khoâng coù taùc duïng trong phaàn ñoåi höôùng. 

Thí duï: 

 

$

echo  hello  >  *.c 

 

$

ls 

*.c

 

lieät keâ caùc file coù teân keát thuùc baèng .c 

 

$ls 

\*.c 

lieät keâ caùc file coù teân *.c 

9.3.2 Kyù töï ~(tilde) 
Kyù töï   

thay theá teân thö muïc tieáp nhaän 

Hai kyù töï 

~+ 

thay theá teân thö muïc ñang laøm vieäc. 

Hai kyù töï 

~_ 

thay  theá  teân  thö  muïc  ta  ñaõ  ôû  trong  ngay  tröôùc  khi  chuyeån  sang 

thö muïc hieän haønh. 

Thí duï: 

 

$

echo   

~

 

xem teân thö muïc tieáp nhaän 

 

/users/user1 

 

$

cd 

/etc

 

 

chuyeån ñeán /etc 

 

$

pwd

 

 

/etc 

 

$

cd

 

 

 

trôû veà thö muïc tieáp nhaän 

 

$

pwd

 

 

/users/user1 

$

echo              ~_

 

xem  teân thö muïc  laøm vieäc ngay tröôùc khi chuyeån ñeán thö 
muïc hieän haønh 

/etc 

$

echo              ~+

 

xem teân thö muïc laøm vieäc 

/users/user1 

 
9.4 Laáy keát quaû cuûa moät leänh: 
9.4.1 Laáy keát quaû cuûa moät leänh cho vaøo moät bieán 
Trong shell_script, keát quaû cuûa moät leänh coù theå theå hieän baèng caùch sau: 

background image

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

 

46 

 

`leänh`

  hoaëc  

$(leänh) 

Ta coù theå duøng caùch theå hieän treân ñeû gaùn noäi dung cho moät bieán. 

Thí duï: 

 

$

pwd

 

 

/users/user1 

 
 

$YY = `pwd` 

 

$

echo  $YY

 

 

/users/user1 

 
 

$

var=$(pwd)

 

 

$

echo  $var

 

 

/users/user1 

9.4.2 Laáy keát quaû cuûa moät leänh döôùi daïng caùc tham soá: 
Leänh set cho pheùp laáy keát quaû cuûa moät leänh döôùi daïng caùc thoâng soá nhö sau: 

 

$1,  $2,  $3…………$[n] 

Thí duï: 

 

$

date

 

 

Tue  Jun 

17:12:40 

EET  1991 

 

$

set   date 

 

$

echo  $2

 

 

Jun 

 

$

echo  $6

 

 

1991 

 

 

 

$

set  $(ls) 

 

$

echo  ${11}

 

 
9.6  Caùc quy taéc thay theá cuûa Shell 

9.5.1 Duøng caùc daáu nhaùy: 
 

‘………’  Shell khoâng thöïc hieän pheùp thay theá caùc kyù töï trong daáu nhaùy ñôn 

 

“………”  Shell thöïc hieän pheùp thay theá trong daáu nhaùy keùp caùc kyù töï: $ \ vaø ` 

Thí duï: 

 

$NOM=jean 

 

$

echo nom=$NOM

 

 

nom=jean

 

 

 

thoâng dòch bieán 

 

 

 

$

echo  ‘nom=$NOM’

 

 

nom=$NOM

   

 

hieån thò khoâng thay theá 

 
 

$

 echo  “nom=$NOM” 

background image

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

 

47 

 

nom=jean

 

 

 

thoâng dòch bieán 

 

 

 

 

$

echo  *

 

 

file1   file2 …

   

 

thoâng dòch kyù töï * 

 
 

$

echo  “*”

 

 

*

 

 

 

 

hieån thò khoâng thoâng dòch 

Baûng toùm taét veà thoâng dòch caùc kyù töï ñaëc bieät trong caùc daáu nhaùy: 

Caùc kyù töï ñaëc bieät duøng trong daáu nhaùy 

Daáu nhaùy ñöôïc 
duøng  

‘ 

` hoaëc ) 

“ 

‘ 

` hoaëc $( 

“ 

Trong ñoù: 
 

f = keát thuùc xaâu kyù töï 

 

o = kyù töï ñöôïc thoâng dòch (coù yù nghóa ñaëc bieät) 

 

n = kyù töï khoâng ñöôïc thoâng dòch (bình thöôøng) 

 

Thí duï caùch söû duïng baûng toùm taét: 

Kyù  töï  $  ñöôïc  thoâng dòch nhö moät metacharacter khi noù ôû trong $() hoaëc “”, khi 
bieán  ñöôïc  thay  theá  baèngh  giaù  trò  cuûa  noù.  Ngöôïc laïi,  noù khoâng ñöôïc  thoâng  dòch 
khi ôû giöõa hai daáu nhaùy ñôn. 

9.5.2 Thay theá ñuùp 
Khi  Shell  laøm  thao taùc thay theá noù queùt moät laàn doøng leänh vaø thay theá bieán coù $ ñaèng 
tröôùc. 
Ta coù theå laøm hai laàn ñoäng taùc queùt baèng duøng leänh eval cuûa Shell. Nhö vaäy leänh ñöùng 
sau eval ñöôïc thay theá 2 laàn tröôùc khi chaïy. 
 

Thí duï: 

Shell_script  last_argument hieån thò ñoái cuoái cuøng cuûa doøng leänh: 
 

$

cat  last_argument 

 

set 

-x 

 

eval  echo  $”$#” 

 

$

last_argument   1   A    Z   3    F   G 

 

+ eval  echo  $6 
+ echo  G 

Baøi  taäp: 

1.  Haõy  vieát  shell_script  copy_file  ñeå  sao  cheùp  moät  file  cuûa  moät  ngöôøi  söû  duïng  khaùc, 
sau ñoù ñoåi nhoùm vaø ngöôøi söû duïng cuûa file sao. 
Cuù phaùp: 

background image

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

 

48 

 

copy_file   file1     file2    user    group 

Gôïi yù: söû duïng caùc leänh cp, chown, chgrp 
2. Haõy  vieát  shell_script dup_file  coù  chöùc  naêng  nhö copy_file ôû treân nhöng teân caùc file, 
teân ngöôøi söû duïng vaø teân nhoùm ñöôïc vaøo baèng hoûi ñaùp. 
Gôïi yù: söû duïng leänh read vaø caùc bieán caàn thieát. 
 

 

 

 
 
 
 
 
 

 

 

background image

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

 

49 

Baøi 10: Moâi tröôøng cuûa Shell 
 

Noäi dung: caùc lôùp bieán cuûa Shell, caùch truyeàn bieán cho tieán trình. 
 
10.1 Moâi tröôøng 
Moâi  tröôøng  cuûa  Shell  chöùa  moät  soá  bieán  ñònh  nghóa  tröôùc.  Leänh 

set

  cho  pheùp  lieät  keâ 

danh saùch caùc bieán cuûa moâi tröôøng (ñònh nghóa tröôùc hoaëc khi laøm vieäc). 
 

$

set

 

 
10.2 Caùc bieán ñònh nghóa tröôùc 
Döôùi ñaây laø danh saùch caùc bieán ñònh nghóa tröôùc thöôøng coù: 
 

HOME  

 

chöùa teân thö muïc tieáp nhaän 

 

LOGNAME   

teân ngöôøi söû duïng 

 

PATH   

 

teân ñöôøng daãn cho caùc leänh 

 

PS1   

 

daáu nhaéc thöù nhaát 

 

PS2   

 

daáu nhaéc thöù hai 

 

TERM  

 

kieåu terminal 

 

IFS 

 

 

danh saùch caùc daáu phaân caùch (seperator) 

 

FCEDIT EDITOR 

chöông trình soaïn thaûo nhaät kyù (history) 

 

PPID   

 

soá cuûa tieán trình cha cuûa Shell 

 

PWD   

 

thö muïc hieän haønh 

 

SHELL 

 

teân Shell ñang duøng 

 

RANDOM 

 

soá ngaãu nhieân 

 

SECONDS 

 

thôøi gian laøm vieäc tính theo giaây 

 
10.3 Caùc bieán chung (common) 

10.3.1 Bieán xuaát 
Shell khoâng töï thöïc hieän caùc leänh ta ñöa vaøo maø taïo ra moät shell con ñeå thöïc hieän caùc 
leänh  ñoù.  Do ñoù  caùc tieán  trình  con khoâng bieát ñeán caùc bieán ta duøng trong shell. Ñeå moät 
bieán  cuûa moät  tieán  trình coù theå duøng  chung  cho  moïi tieán  trình  con cuûa noù, ta phaûi xuaát 
(export) noù thaønh bieán duøng chung baèng caùch duøng leänh 

export

 

 

$

var=18 

 

$

export var 

Chuù yù: 

khoâng coù khaùi nieäm nhaäp (import). 

Moät  bieán  xuaát  khi  bò  thay ñoåi giaù trò trong tieán trình con vaãn giöõ nguyeân giaù trò 
trong tieán trình cha. 

Caùc bieán xuaát coù theå lieät keâ baèng duøng leänh: 
 

$env 

 

background image

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

 

50 

10.3.2 Thöïc hieän moät shell_script trong shell cha: 
Thöïc  hieän  moät  shell_script  trong  shell  cha  cho  pheùp  noù  thöøa  keá  söû  duïng toaøn  boä  moâi 
tröôøng cuûa shell cha: 

Thí duï: 

 

$

cat  proc

 

 

echo  $var 

 
 

$VAR= ok 

 

ñònh nghóa bieán var trong shell 

 
 

$

proc   

 

moät shell con ñöôïc taïo ra vaø noù khoâng hieåu bieán VAR 

 

 

$.proc

 

shell töï thöïc hieän leänh maø khoâng taïo shell con, bieán VAR 
coù trong moâi tröôøng cuûa noù. 

background image

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

 

51 

Baøi 11  Laäp trình möùc cô sôû döôùi UNIX 
 

Noäi  dung:  caùc  pheùp  thöû,  so  saùnh,  caùc  pheùp  tính  soá  hoïc  trong  Shell,  laäp  trình caùc caáu 
truùc coù ñieàu kieän, laäp trình caùc voøng laëp. 
 
11.1 Caùc pheùp thöû (test) trong Shell 

11.1.1 Giaù trò traû veà cuûa moät leänh 
Sau  khi  moät leänh  thöïc  hieän xong, bao giôø cuõng coù moät giaù trò traû veà (return code). Giaù 
trò naøy chöùa trong bieán 

$?

Neáu moät leänh ñöôïc thöïc hieän toát, giaù trò traû veà laø 0 (true : ñuùng). 
Neáu moät leänh khoâng ñöôïc thöïc hieän toát, giaù trò traû veà khaùc 0 (false: sai). 

Thí duï: 

 

$

cat  fac 

 

cat: cannot open fac 

 

$

echo  $?

 

 

 
 

$

cat  file

 

 

I am a file 

 

$

echo  $?

 

 

 
Chuù thích: leänh 

exit[n]

 cho pheùp ra khoûi moät shell_script vôùi giaù trò traû laïi laø n. 

11.1.2 Söû duïng leänh 

test: 

+ Leänh 

test

 ñöôïc duøng ñeå laäp trình moät ñieàu kieän trong caáu truùc hoaëc trong voøng laëp: 

Coù 3 tröôøng hôïp duøng leänh test: 

kieåm tra tính chaùt cuûa caùc file 

so saùnh giöõa caùc soá 

kieåm tra caùc xaâu kyù töï 

+ Cuù phaùp leänh test: 

 

test   expression 

 

hoaëc  

 

[expression] 

Trong caùc thí duï sau ñaây, hai caùch duøng treân ñeàu ñöôïc söû duïng nhö nhau. 
 
+Kieåm tra tính chaát caùc file: 
Sau khi test, giaù trò traû veà laø 0 (true) hoaëc khaùc 0 (false) 
 

test 

-f 

filename 

0

 

neáu file toàn taïi vaø laø file thöôøng 

 

[-d 

filename] 

 

0

 

neáu file toàn taïi vaø laø file thö muïc 

 

[-r 

filename] 

 

0

 

neáu file toàn taïi vaø chæ ñoïc ñöôïc 

background image

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

 

52 

 

test 

-w 

filename 

0

 

neáu file toàn taïi vaø ghi ñöôïc 

 

test 

-x 

filename 

0

 

neáu file toàn taïi vaø chaïy ñöôïc 

 

test 

-s 

filename 

0

 

file toàn taïi vaø khoâng roãng (not empty) 

 

[file1  -ef 

file2]   

0

 

file1 vaø file2 lieân keát vôùi nhau 

 

[file1  -nt 

file2]   

0

 

neáu file1 môùi hôn file2 

 

[file1  -ot 

file2]   

0

 

neáu file1 cuõ hôn file2 

 

 

 

[-b 

filename] 

 

0

 

file toàn taïi vaø ñoïc ghi theo block 

 

[-c 

filename] 

 

0

 

file toàn taïi vaø ñoïc ghi theo kyù töï 

 
+So saùnh giöõa caùc soá: 
Cuù phaùp nhö sau: 

 

test 

value1   operator 

value2 

Caùc toaùn töû so saùnh (operator) coù theå duøng: 

 

-eq

 

baèng (equal to) 

 

-ne

 

khoâng baèng (not equal to) 

 

-gt

 

lôùn hôn (greater than) 

 

-ge

 

lôùn hôn hoaëc baèng (greater or equal to) 

 

-lt

 

nhoû hôn (less than) 

 

-le

 

nhoû hôn hoaëc baèng (less or equal to) 

Thí duï: 

 

$

test  “$A”  -eq 

“$B” 

true neáu giaù trò cuûa bieán A baèng giaù trò cuûa bieán B 
 
+Kieåm tra caùc xaâu kyù töï: 

 

[“str1”   = “str2”] 

 

ñuùng neáu str1 baèng str2 

 

test  “str1”  !=   “str2” 

ñuùng neáu str1 khaùc str2 

 

test 

-z 

“$A”   

ñuùng neáu xaâu $A roãng 

 

test 

-n 

“$A”

   

ñuùng neáu xaâu $A khoâng roãng 

Thí duï: 

 

$

test  “$LOGNAME” 

!= 

“user1” 

 
+Keát hôïp caùc ñieàu kieän: 
Caùc toaùn töû so saùnh coù theå keát hôïp vôùi: 

 

-a

 

 

vaø (and) 

 

-o

 

 

hoaëc (or) 

 

!

 

 

ñaûo (negation) 

 

\(…\)

   

goäp (grouping) 

Thí duï: 

 

$

test  \(-r  file1  -o  -r  file2 \)  -a  -w   file3 

 

ñuùng neáu: 

background image

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

 

53 

file1 vaø file2 toàn taïi vaø chæ ñoïc ñöôïc 

vaø  

file 3 toàn taïi vaø ghi ñöôïc. 

 
11.2 Laäp trình moät caáu truùc coù ñieàu kieän: 

11.2.1 Caáu truùc coù ñieàu kieän : 
a)

 if    then   else    f

 

if 

command1 

 

then  command2 

 

else  command3 

 

fi 

Giaûi thích: 
 

Neáu  giaù  trò  traû  veà  sau  khi  thöïc  hieän  command1  laø  0  (ñuùng)  thì  thöïc  hieän 

command2,  

neáu khoâng thì thöïc hieän command3 
keát thuùc 

Thí duï: 

 

if 

test 

-f 

file1 

 

then  echo  “file exists” 

 

else  echo  “file does not exist” 

 

fi 

Chuù thích: khoâng baét buoäc phaûi duøng else 

 

if 

[-w   file1] 

 

then  echo  “message” 

>>    file1 

 

fi 

 
b) Caáu truùc loàng (nested) 
Ta coù theå loàng caùc caáu truùc ñieàu kieän vôùi nhau. Khi ñoù: 

 

else  if     

thaønh  elif 

Thí duï: 

 

if 

test 

-f 

file1 

 

then  echo  “file exists” 

 

 

elif 

test 

-d 

file1 

 

 

then  echo  “file is a directory” 

 

fi 

trong tröôøng hôïp naøy fi laø chung. 
Chuù yù: cuù phaùp sau cuõng coù theå duøng ñöôïc: 

 

if 

 

then 

 

else  if 

 

 

then 

background image

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

 

54 

 

 

else 

 

fi 

c) Caùc toaùn töû | | vaø && 
Trong tröôøng hôïp ñieàu kieän ñôn giaûn, coù theå duøng toaùn töû hoaëc logic 

| |

, hoaëc toaùn töû vaø 

logic 

&&

 ñeå laäp trình caáu truùc. 

 

command1   &&  command2 

 

Neáu command1 ñöôïc thöïc hieän toát, thì thöïc hieän command2, neáu khoâng thì ra. 

 

 

command1   | |  command2 

 

Neáu command1 ñöôïc thöïc hieän toát, thì ra,  neáu khoâng, thì thöïc hieän command2. 

Chuù yù: coù theå duøng daáu ngoaëc ñôn ñeå goäp caùc leänh 

Thí duï: 

 

test 

-d   demo    &&  echo  “demo is a directory” 

 

test 

-d   demo     | |     echo  “demo is not a directory” 

 

(test  -d   demo  &&  ls  -l  demo) | |  echo  “demo not ok” 

11.2.2 Reõ nhaùnh trong pheùp choïn moät trong nhieàu giaù trò: 
Duøng caáu truùc: 

 

case  in 

esac 

Caáu truùc treân cho pheùp choïn moät trong nhieàu xaâu kyù töï vaø thöïc hieän caùc leänh lieân quan 
ñeán xaâu ñoù. 

 

case  $variable 

in 

 

string1) 

 

cmd1 

 

 

 

cmd2 

 

 

 

…………… 

 

 

 

;; 

string2) 

 

cmd1 

 

 

 

cmd2 

 

 

 

…………… 

 

 

 

;; 

string3 | string4)   

commands 

 

 

 

;; 

esac 

Chuù yù: coù theå duøng caùc metacharacter cuûa shell ñeå bieåu dieãn xaâu kyù töï, 
 

|

 coù nghóa laø hoaëc 

 
11.3 Laäp trình moät voøng laëp 

11.3.1 Voøng laëp for 
a) Caáu truùc:   

for    in     do   done

 

Caáu  truùc naøy  cuûa  for  cho  pheùp  thöïc  hieän moät  chuoãi leänh nhö nhau vôùi moãi moät giaù trò 
trong danh saùch ñaõ cho. Soá caùc voøng laëp baèng soá caùc giaù trò trong danh saùch. 

 

for 

variable 

in 

val1  val2  val3  … 

background image

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

 

55 

 

do 

command1 

 

 

command2 

 

 

command3 

 

 

………………… 

done 

Vôùi  variable  coù  theå  gaùn  ñöôïc  caùc  giaù  trò  val1,  val2…  thöïc  hieän  caùc  leänh  command1, 
command2, … 
Thí duï:  WRITE laø moät shell_script gôûi thoâng baùo tôùi 3 ngöôøi duøng user1, user2, user3: 
 

$

cat  WRITE 

 

for 

i      in    user1      user2     user3 

 

do   

write  $I    < message_file 

 

done 

b) Caáu truùc :  

   for     do    done 

Caáu  truùc naøy  cho  pheùp thöïc  hieän  moät chuoãi  leänh  nhö nhau vôùi caùc ñoái ($1  $2  …) cuûa 
shell_script ñöôïc goïi. 

 

for 

variable 

 

do 

command1 

 

 

command2 

 

 

command3 

 

 

………………… 

done 

Vôùi  variable  coù  theå  gaùn  ñöôïc  caùc    ñoái  cuûa shell_scipt thöïc  hieän caùc leänh  command1, 
command2, … 

Thí duï: 

Shell_script  copy  sao  cheùp caùc  file  trong danh  saùch ñoái vaøo  danh  muïc  /users/user8  vaø 
ñoåi nhoùm thaønh nhoùm student, ñoåi ngöôøi sôû höõu thaønh user8. 
 

$

cat  copy 

 

for   i 

 

do    if  [-f   $i] 

 

        then  cp   $i    /users/user8 

 

 

chgrp  student     /users/user8/$i 

 

 

chown  user8      /users/user8/$i 

 

        fi 

 

done 

 
 

$

ls 

-l 

 

total  10 

 

-rw------- 

1   phil    animator   56     May    31   14:14:22     file1 

 

 

-rw------- 

1   phil    animator   22     May    31   15:14:22     file2 

 
 

$

copy  file1  file2  toto 

background image

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

 

56 

 

toto is not a file 

 
 

$

ls 

-l 

/users/user8

 

 

total  5 

 

-rw------- 

1   phil    animator   56     May    31   14:14:22     file1 

 

 

-rw------- 

1   phil    animator   22     May    31   15:14:22     file2 

11.3.2 Voøng laëp while vaø until 
a )

 while   do   done

 

Voøng laëp while thöïc hieän moät chuoãi leänh khi ñieàu kieän vaãn coøn thoaû maõn. 

 

while  command1 

 

do 

command2 

 

 

command3 

 

 

command4 

 

 

………………… 

done 

Khi  giaù  trò  traû  veà  cuûa  vieäc  thöïc  hieän  command1 vaãn  thoaû  maõn ñieàu  kieän (true),  shell 
thöïc hieän tieáp chuoãi leänh giöõa do … done
Hai leänh thöôøng duøng trong voøng laëp while
 

true

  hoaëc 

:

 

cho giaù trò true(0) 

 

sleep[n]

 

 

ñôïi n giaây 

Thí duï: 

shell_script param hieån thò taát caû caùc ñoái cuûa leänh. 

$

cat  param 

while  test 

$# 

-ne 

do 

echo  $1 

 

shift 

done 

shell_script  disp_time  hieån  thò  soá  lieäu  ngaøy  thaùng  theo  khoaûng  thôøi  gian  30 
giaây. 

$

cat  disp_time 

while  true   

 

hoaëc  while : 

do  

date 

 

sleep  30 

done 

b)

 until   do     done 

Voøng laëp until hoaït ñoäng ngöôïc laïi vôùi voøng laëp while 

 

until  command1 

 

do 

command2 

 

 

command3 

 

 

command4 

 

 

………………… 

background image

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

 

57 

done 

Khi  giaù trò traû veà cuûa vieäc thöïc hieän command1 vaãn khoâng thoaû maõn ñieàu kieän 

(false), shell thöïc hieän chuoãi leänh giöõa do…done 
Leänh false thöôøng hay ñöôïc duøng trong voøng laëp naøy ñeå cho giaù trò false. 

Thí duï:

 voøng laëp until: 

ta vieát laïi shell_script param ôû treân: 

$

cat  param 

until  test 

$# 

-eq 

do 

echo  $1 

 

shift 

done 

c) caùc pheùp tính soá hoïc 
Leänh let ñöôïc duøng ñeû thöïc hieän caùc pheùp tính soá hoïc: 
Caùc toaùn töû coù theå duøng goàm: 

 

Thí duï: 

 

$

integer 

i=10  j=2 

 

let 

“k=i+j” 

 

$

echo  $k 

 

12 

Chuù yù: cuù phaùp let “k=i+j” töông ñöông vôùi ((k=i+j)) hoaëc k=i+j 
 

$((l=k*j)); echo $l 

 

24 

Leänh  let  coù  theå  duøng  vôùi  caùc  toaùn  töû  so  saùnh,  keát  quaû  ñöôïc  chöùa  trong  bieán  $?.  Caùc 
toaùn töû so saùnh coù theå duøng laø: 

 

<= 

>= 

== 

!= 

Thí duï: 

 

$

((i<j));echo  $? 

 

Ta cuõng coù theå duøng caùc toaùn töû logic sau ñaây vôùi let: 

 

&&  | | 

d) Laäp trình moät soá ñeám 
Leänh 

expr

 cho pheùp ta thöïc hieän moät thao taùc coù cuù phaùp nhö sau: 

 

$

expr  term1   operator    term2 

Caùc toaùn töû coù theå duøng: 
 

coäng  tröø 

nhaân  chia  laáy soá dö 

 

Thí duï:

 shell_script create_file taïo caùc file file1, …… file10 

 

$

cat  create_file 

 

count=1 

 

while test  “$count”  -le 

10 

background image

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

 

58 

 

do 

>file$count 

 

 

count=expr  $count+1 

 

done 

 
 

$

cat   create_file2 

 

integer   count=1 

 

while  let   “count <””10” 

 

do   >file$count 

 

 

count=count+1 

 

done 

11.3.3 Ra khoûi moät voøng laëp: 
Leänh 

break

 cho pheùp ra khoûi caùc voøng laëp for, while, until. 

Thí  duï:

  shell_script stock ghi caùc doøng kyù töï vaøo töø baøn phím leân file lines cho tôùi khi 

ta goõ töø “END”: 
 

$

cat  stock 

 

while   true 

 

do 

echo  “Enter your line:” 

 

 

read  answer 

 

 

if  

test   “$answer” = “END” 

 

 

then   break 

 

else  echo  $answer 

>> 

lines 

 

fi 

done 

Chuù yù:

 break[n]

 cho pheùp ra khoûi n möùc cuûa caùc voøng laëp loàng. 

11.3.4 Boû qua phaàn tieáp theo trong moät voøng laëp: 
Leänh 

continue

 cho pheùp boû qua caùc leänh coøn laïi, quay veà ñaàu voøng laëp. 

Thí duï:

 shell_script supprim xoaù taát caû caùc file coù trong danh saùch ñoái, tröø file save vaø 

source: 
 

$

cat  supprim 

 

set 

-x 

 

for 

 

do 

if 

test 

“$i” = “save”      -o      “$i” = “source” 

 

 

then  continue 

 

 

fi 

 

echo  $i 

 

rm 

$i 

 

done 

 

 

 

 

$

cd 

appli 

 

$

lc 

 

titi  

save   source  toto 

background image

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

 

59 

 
 

$

supprim 

*

 

 

+ test   titi  =  save 

-o 

titi  =  source 

 

+ echo  titi 

 

titi 

 

+ rm  titi 

 

+ test  save = save  -o 

save = source 

 

+ continue 

 

+ test  source = save  -o 

source = source 

 

+ continue 

 

+ test  toto = save 

-o 

toto = source 

 

+ echo toto 

 

toto 

 

+ rm  toto 

 
 

$

lc 

 

save  source 

Baøi taäp: 

1.  Duøng caùc caáu truùc vaø reõ nhaùnh vieát caùc shell_script sau: 

a)  writemail  message  userX 
Chöùc naêng: 

- gôûi thoâng baùo tröïc tieáp cho userX 
-  neáu  ngöôøi  ñoù  khoâng  ñang  trong  phieân laøm  vieäc, gôûi vaøo 
hoäp thö. 

Gôïi yù: duøng leänh 

write, mail, | | 

b)  fileread  filename 
Chöùc naêng: 

- kieåm tra ñoái coù phaûi laø file hay khoâng 
-  neáu  ñuùng,  kieåm  tra  coù  phaûi  laø  file  chæ  ñoïc  (readonly) 
khoâng 
- hieän caùc thoâng baùo töông öùng keát quaû 

c)  filesort  file1  file2 
Chöùc naêng: - ñoïc moät doøng töø baøn phím vaø ghi leân file theo caùch sau: 
   

 

+ vaøo cuoái file1 neáu doøng chöùa ít nhaát moät chöõ (letter) 

   

 

+  vaøo  cuoái  file2  neáu  doøng  chöùa  ít  nhaát  moät  soá  (number) 

vaø khoâng chöùa baát kyø moät chöõ. 
   

 

+ vaøo file khoâng (null) neáu khaùc hai loaïi treân 

   

   - kieåm tra soá caùc ñoái, neáu khaùc 2, hieån thò thoâng baùo: 

   

 

“command:   filesort    file1   file2” 

Gôïi yù: duøng caùc leänh 

case, read

 vaø caùc 

metacharacter 

2.  Söû duïng caùc voøng laëp ñaõ hoïc, vieát caùc shell_script sau: 

a)  testdir 
Chöùc naêng: hieån thò danh saùch caùc thö muïc con trong thö muïc laøm vieäc. 

background image

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

 

60 

Gôïi yù: duøng caùc leänh 

pwd, for, test

 

b)  mkfiles   prefix   n 
Chöùc naêng: 

-taïo  n file  roãng  (ngaàm  ñònh laø  5)  vôùi  teân  prefix.n  (thí  duï: 
file.1, file.2, file.3 vôùi prefix=file vaø n=3) 

 

-  hieän  doøng  khaúng  ñònh  taïo  file  “prefix.n”  hay  khoâng 
trong voøng laëp. 

Gôïi yù: duøng 

if, while, test, read, expr 

 

 

 
 
 
 

 

 

background image

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

 

61 

Baøi 12  Tín hieäu vaø ñoàng boä 
 

Noäi dung: Caùc tín hieäu cuûa heä thoáng, caùch duøng tín hieäu ñeå  ñieàu khieån vaø ñoàng boä caùc 

tieán trình. 

 
12.1 Quaûn lyù caùc tín hieäu: 

12.1.1 Caùc tín hieäu: 
Trong khi thöïc hieän moät shell_script, caùc tín hieäu sau coù theå phaùt sinh: 
 

signal 

0

 

ra khoûi shell (exit of the shell) 

signal 

1

 

caét lieân laïc vôùi terminal (disconnection) 

signal 

2

 

Ngaét (thí duï  phím DEL) 

signal 

3

 

Quit (Ctrl |) 

signal 

9

 

Dieät tieán trình (Kill process) 

signal 

10

 

Keát thuùc logic moät tieán trình 

Trong  moät  chöông  trình  öùng  duïng, baèng  caùch  duøng leänh trap, ta coù theå ñònh nghóa vieäc 
caàn  xöû  lyù  khi  moät  tín  hieäu phaùt  sinh. Leänh  naøy cho pheùp gaùn moät coâng vieäc xöû lyù cho 
baát cöù moät tín hieäu naøo. 
12.1.2 Laäp trình phím DEL 
Leänh trap khoâng ñoái lieät keâ danh saùch caùc tính hieäu vaø caùc vieäc xöû lyù töông öùng. 
 

$

trap

 

Cuù phaùp gaùn moät coâng vieäc xöû lyù cho phím DEL: 
 

$

trap  ‘caùc leänh’ 

Xoùa boû taùc duïng phím DEL: 
 

$

trap  ‘’ 

2

 

Gaùn chöùc naêng ngaàm ñònh (default) cho phím DEL: 
 

$

trap  2

 

Thí duï:

 shell_script uncount hieån thò 5 4  3 2  1 trong caùc khoaûng thôøi gian 5 giaây, neáu 

ta goõ phím DEL, hieån thò chöõ soá tieáp. 

 

$

/Icat/ i 

uncount 

 

trap  ‘continue’ 

 

for   i  in   5 4  3  2  1 

 

do 

echo  $i 

 

 

sleep  5 

 

done 

 
12.2 Quaûn lyù caùc tieán trình 

12.2.1 Chaïy ngaàm (background) moät tieán trình 
Moät tieán trình seõ chaïy ngaàmneáu ta theâm kyù töï & vaøo sau teân noù khi goïi. 
Soá cuûa tieán trình (PID) seõ ñöôïc hieån thò treân maøn hình. 

Thí duï:

 chaïy shell_script uncount ngaàm: 

background image

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

 

62 

 

$

uncount& 

 

[1] 

467 

Chuù yù:  

sau  khi  cho  moät  tieán  trình  chaïy  ngaàm,  ta  laïi  coù  theå  duøng  terminal  laøm  vieäc 
khaùc. 

khoâng  coù thoâng  baùo khi  tieán  trình ngaàm keát thuùc, do ñoù khi chaïy shell_script ta 
coù theå cho theâm thoâng baùo keát thuùc: 

$(command; echo “END”)& 

soá PID cuûa tieán trình ngaàm trong bieán $! 

Coù  theå  ñoåi  höôùng  vaøo/ra  (i/o)  cuûa tieán  trình  ngaàm,  traùnh  nhieãu maøn hình khi ta 
laøm vieäc khaùc. 

12.2.2 Quaûn lyù caùc tieán trình ngaàm (job control) 
Leänh: 
 

$

set  -m 

cho pheùp quaûn lyù caùc tieán trình ñang chaïy ngaàm. 

Thí duï: 

 

$

proc1 >> 

file1  & 

 

[1] 

478 

 

$

proc2 &

 

 

[2] 

481 

 

$

proc3 & 

 

[3] 

490 

Hieån thò traïng thaùi cuûa caùc tieán trình ngaàm: 
 

$

jobs  -l

 

 

[3] 

+490  running 

proc3  & 

 

[2] 

-481  done   

proc2 

 

[1] 

478 

running 

proc1  >> 

file1  & 

trong ñoù: 
 

[n]

 

 

soá thöù töï tieán trình 

 

+

 

 

tieán trình chaïy cuoái cuøng 

 

-

 

 

tieán trình tröôùc tieán trình cuoái 

 

490

 

 

soá PID cuûa tieán trình 

 

running

 

tieán trình ñang thöïc hieän 

 

done 

 

tieán trình ñaõ keát thuùc 

 

proc3  &

 

teân leänh goïi 

12.2.3 Tieáp tuïc tieán trình sau khi keát thuùc phieân laøm vieäc: 
Ta  coù  theå  cho  tieáp  tuïc thöïc  hieän  caùc  tieán trình  ngaàm  sau  khi  caét  lieân laïc vôùi terminal 
baèng caùch duøng leänh 

nohup.  

Caùc soá lieäu cuûa tieán trình ñöa ra stdout vaø stderr seõ ñöôïc ghi leân file nohup.out 

Thí duï: 

 

$

nohup 

uncount& 

background image

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

 

63 

 

[1] 

478 

 

sending output to nohup.out 

 

 

 

$

exit 

12.2.4 Ñôïi keát thuùc tieán trình 
Baèng caùch duøng leänh 

wait

 vôùi ñoái soá laø PID cuûa tieán trình: 

 

$

wait  467

 

12.2.5 Dieät moät tieán trình 
Duøng leänh 

kill

 vôùi ñoái soá laø PID cuûa tieán trình: 

 

$

kill  467

 

 

phaùt sinh tín hieäu 15 (ngaàm ñònh) 

 

$

kill  -9 

467

 

phaùt sinh tín hieäu dieät tieán trình 

Ta  cuõng coù  theå  dieät moät tieán trình theo soá thöù töï cuûa noù trong danh saùch caùc tieán trình 
ñang chaïy ngaàm: 

 

kill 

%n 

Thí duï: 

 

$

kill  %1

 

 

$

jobs

 

 

[1] 

done(143) 

proc  >> 

file1  & 

 

[3] 

running 

uncount 

 

 

 

$

kill  -9 

%+

 

 

[3] 

killed   

uncount 

 
12.3 Ñeä quy 

Taát caû caùc shell_script ñeàu coù tính ñeä quy (recursivity). 

Thí duï

: shell_script dir_tree hieån thò caây thö muïc baét ñaàu töø thö muïc laø ñoái cuûa noù. 

 

$

cat  dir_tree 

 

if  test    -d 

$1 

 

then  echo  $1 

is a directory 

 

 

for   j    in   $1/* 

 

 

do 

$0 

$j 

#$0 teân shell_script 

 

done 

fi 

 
$

dir_tree 

/usr 

/usr   is a directory 
/usr/adm   is a directory 
/usr/adm/acct   is a directory 
/usr/adm/acct/fiscal   is a directory 
/usr/adm/acct/nite    is a directory 
/usr/adm/sa   is a directory 

background image

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

 

64 

/usr/bin    is a directory 
…………

 

Baøi taäp: 

1.  Haõy vieát shell_script: 

LisFileDel 

file1  file2 

 

Chöùc naêng:  

hieån thò noäi dung caùc file coù teân trong danh saùch ñoái 

tieáp tuïc goõ phím DEL, boû qua file ñang hieån thò, baét ñaàu file tieáp 

khoâi phuïc chöùc naêng ngaàm ñònh cuûa phím DEL khi keát thuùc. 

Gôïi yù: Duøng 

trap, continue, signal 2 

2.  Haõy vieát shell_script: 

trap2 

 

Chöùc naêng: 

thöïc hieän moät voøng laëp hieån thò thoâng baùo: 

“Shutdown in n minutes”   n coù giaù trò töø 5 ñeán 1 

moãi khi goõ phím DEL, laäp töùc hieån thò thoâng baùo tieáp theo 

xoaù boû taùc duïng cuûa phím DEL trong phuùt cuoái cuøng 

khoâi phuïc chöùc naêng ngaàm ñònh cuûa phím DEL khi keát thuùc 

Gôïi yù: duøng 

trap, continue, for