C ng Th c Hành Môn H i u Hành
-
M c Tiêu: Cài đ t H H Linux và s d ng shell script đ tìm hi u các thành
ph n trong H H Linux nh : h th ng file, quá trình, b nh và xu t nh p
N i dung:
Bu i 1: Các l nh c b n c a Shell
Bu i 2: C b n v l p trình Shell
Bu i 3: L p trình c u trúc và vòng l p trong Shell
Bu i 4: Qu n lý ti n trình
Bu i 5: Qu n lý vào ra và t p tin
Bu i 6: Ôn t p
Ph l c: Cài đ t Ubuntu
Trang 2CÁC L NH SHELL C B N
N i dung th c hành
̇ Tìm hi u v shell
̇ Các l nh liên quan đ n vi c kh o sát th m c và file
̇ Các l nh thao tác file
̇ Quy n truy xu t file (file permission)
1 Shell – B thông d ch l nh
1.1 Shell là gì?
Chúng ta bi t r ng máy tính ch có th th c hi n các l nh d ng nh phân (bit 0, 1),
đi u hành mà nó s d ng h đi u hành đ th c thi l nh, thao tác file…
Shell thông d ng:
BASH (
Bourne-Again SHell )
Brian Fox and Chet Ramey Free Software Foundation
Là Shell thông
d ng nh t trong
H H Linux CSH (C SHell) Bill Joy
University of California (For BSD)
Là Shell có cú pháp
r t gi ng ngôn ng
C KSH (Korn SHell) David Korn
AT & T Bell Labs
Trang 3M t vài l nh liên quan đ n shell
Li t kê t t c các lo i shell có th có trong h th ng hi n t i dùng l nh:
$cat /etc/shells
$echo $SHELL
1.2 Kh i đ ng Shell
đ h a (graphic) thì Shell s đ c kh i đ ng khi ta kh i đ ng c a s terminal
đ ng ng i dùng s đ c đón chào và b t đ u nh p l nh t d u nh c (prompt) nh sau
$
(current working directory)
1.3 Shell script là gì?
file text và yêu c u shell th c hi n file này i u này đ c g i là shell script
2 Các l nh c b n c a Linux
2.1 L nh chuy n th m c cd và đ ng d n trong linux
th m c
Cú pháp t ng quát:
$cd path
Ví d :
Trang 42.2 ng d n (Path) trong h đi u hành Linux
hành) trong cây th m c s d ng l nh: $pwd
Ví d :
Có 2 lo i đ ng d n th ng đ c s d ng là: ng d n tuy t đ i và đ ng d n t ng
đ i
2.3 ng d n tuy t đ i
v
Ví d :
/dev
/usr/bin
/usr/local/bin
chuy n vào th m c /user/local/bin dùng l nh nh sau:
$cd /user/local/bin
2.4 ng d n t ng đ i
m c /usr/local/bin chúng ta s d ng l nh:
$cd local/bin
2.5 Th m c cha “ ”
hi n hành:
Ví d : Gi s chúng ta đang th m c hi n hành là /usr/local/bin và th c hi n
l nh
$cd
Trang 5Khi đó chúng ta s đ c di chuy n v th m c /usr/local (th ki m tra l i b ng
l nh $pwd)
$cd /share
/usr/local) và chuy n ti p đ n th m c share
2.6 Th m c hi n hành “.”
đ yêu c u shell th c hi n m t ch ng trình hay shell script nào đó trong th m c
hi n hành
Ví d : $./myprog
myprog là m t shell script trong th m c hi n hành
2.7 Th m c cá nhân “~”
m c
th m c cá nhân b ng l nh sau:
$ /myprog ~/myfile.txt
2.8 Bi n môi tr ng PATH
đang l u nh ng đ ng d n nào ta dùng l nh:
$echo $PATH
Chú ý: PATH ph i là ký t hoa
Trang 6thêm đ ng d n m i vào danh sách c a bi n PATH ta có th g n đ ng d n
c n thêm vào sau biên PATH nh sau:
PATH=$PATH:<path>
Ví d : (chú ý PATH=$PATH ph i vi t li n nhau)
3 Các l nh liên quan đ n vi c kh o sát th m c và file: ls, less và file
3.1 L nh ls (list files và th m c)
$ls: li t kê file trong th m c hi n hành
Ví d :
$ls -l: li t kê files trong th m c hi n hành v i thông tin đ y đ (long format)
Ví d :
Trang 7K t qu c a l nh ls v i tham s -l đ c chia thành 7 c t:
(1) (2) (3) (4) (5) (6) (7)
C t (1): xác đ nh quy t truy xu t c a file ho c th m c Ký hi u “-” th hi n đó là
đ c chia làm 3 nhóm, m i nhóm 3 ký t Các ký t này có th là r (read), w
nhóm 3 ký t k th hi n quy n cho nhóm (group) và nhóm 3 ký t cu i th hi n
C t (2): th hi n s l ng n i k t kay liên k t (link) đ n t p tin ho c th m c (khái
C t (7): tên file ho c th m c
3.2 L nh less
L nh less cho phép xem n i dung c a file text
Cú pháp: $ less tên_file
Ví d :
K t qu th c hi n l nh trên nh sau:
Trang 8N i dung c a file đ c li t kê theo t ng trang màn hình duy t qua n i dung
c a file ta dùng các phím ch c n ng nh sau:
Page Up ho c b: cu n lên 1 trang
Page Down ho c space: cu n xu ng 1 trang
G: di chuy n đ n dòng cu i c a file
3.3 L nh file
L nh file đ c dùng đ xác đ nh file thu c lo i file gì, ch ng h n nh file: ASCII text, Bourne-Again shell script text, JPEG image data, RPM…
Cú pháp: $file tên_file
4 Các l nh thao tác file
4.1 Ký t đ i di n (wildcard)
Trang 9Ký t đ i di n Ý ngh a
* Trùng kh p v i b t k m t hay nhi u ký t nào
? Trùng kh p v i b t k ký t đ n nào [t p_h p_các_ký_t ] Trùng kh p v i b t k ký t nào n m trong
t p_h p_các_ký_t T p_h p_các_ký_t có th đ c
th hi n d i d ng 1 kho n Ví d [A-Z] th hi n t p
h p các ký t hoa
[! t p_h p_các_ký_t ] Trùng kh p v i b t k ký t nào KHÔNG n m trong
t p_h p_các_ký_t
* T t c tên file
g* T t c các file có tên b t đ u b ng ch g
b*.txt T t c các file có tên b t đ u b ng ch b và k t thúc v i txt Data??? T t c các file có tên b t đ u v i Data và ti p theo là chính
xác 3 ký t [abc]* T t c các file có tên b t đ u b ng a ho c b ho c c theo sau
là b t k ký t gì [A-Z]* T t c các file có tên b t đ u b ng ký t hoa theo sau là b t
k ký t gì
BACKUP.[0-9][0-9][0-9]
T t c các file có tên b t đ u v i BACKUP k đ n là d u
ch m và ti p theo là 3 ký s [!a-z]* T t c các file có tên b t đ u KHÔNG ph i là ký t th ng
theo sau là b t k ký t gì
4.2 L nh cp (copy)
cp
cp file1 file2 Copy n i dung c a file1 vào file2 N u file2 ch a t n t i thì
s đ c t o ra, ng c l i n i dung c a file2 s b chép
ch ng
cp -i file1 file2 Gi ng nh trên, nh ng trong tr ng h p file2 đã t n t i thì
ng i dùng s đ c nh c nh tr c khi file2 b chép ch ng
cp file1 dir1 Copy file1 vào trong th m c dir1
cp –R dir1 dir2 N u dir2 ch a t n t i thì dir2 đ c t o ra và n i dung th
m c 1 đ c chép vào Tr ng h p dir2 đã t n t i thi th
m c dir1 đ c t o ra trong dir2 và n i dung c a th m c dir1 đ c chép vào dir1 trong dir2
4.3 L nh mv (move)
Trang 10đ i tên thành dir2 Tr ng h p dir2 đã t n t i thì dir1 s đ c di chuy n vào dir2
4.4 L nh rm (remove)
Rm file1 file2 Xóa file1 và file2
Rv –r dir1 dir2 Xóa th m c dir1 và dir2 cùng v i toàn b n i dung c a nó
4.5 L nh mkdir (make directory):
c dùng đ t o th m c
Cú pháp: $mkdir tên_th _m c
4.6 L nh "which"
$ which sense
which: no sense in (/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin)
$ which ls
/usr/bin/ls
4.7 S d ng "which -a"
$ which -a ls
/usr/bin/ls
/bin/ls
4.8 L nh whereis
$ whereis ls
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz
Ta th y r ng that ls có m t trong hai n i là /bin và /usr/bin H n th chúng ta còn
đ c thông báo r ng có tài li u h ng d n s d ng n m trong th m c
/usr/share/man
4.9 L nh find
Trang 11L nh find là m t ti n ích khác cho phép b n tìm ki m các t p tin V i find b n
hi n l nh sau:
$ find /usr/share/doc -name README
/usr/share/doc/ion-20010523/README
/usr/share/doc/bind-9.1.3-r6/dhcp-dynamic-dns-examples/README
/usr/share/doc/sane-1.0.5/README
4.9.1 S d ng các ký t đ i di n v i l nh find
mu n tìm t p tin README v i các ph n m r ng khác nhau nh sau:
$ find /usr/share/doc -name README\*
/usr/share/doc/iproute2-2.4.7/README.gz
/usr/share/doc/iproute2-2.4.7/README.iproute2+tc.gz
/usr/share/doc/iproute2-2.4.7/README.decnet.gz
/usr/share/doc/iproute2-2.4.7/examples/diffserv/README.gz
/usr/share/doc/pilot-link-0.9.6-r2/README.gz
/usr/share/doc/gnome-pilot-conduits-0.8/README.gz
/usr/share/doc/gimp-1.2.2/README.i18n.gz
/usr/share/doc/gimp-1.2.2/README.win32.gz
/usr/share/doc/gimp-1.2.2/README.gz
/usr/share/doc/gimp-1.2.2/README.perl.gz
[578 additional lines snipped]
4.9.2 Tìm không phân bi t ch hoa và ch th ng v i find
Ta có th dùng l nh sau:
$ find /usr/share/doc -name '[Rr][Ee][Aa][Dd][Mm][Ee]*'
Hay dùng tham s -iname:
$ find /usr/share/doc -iname readme\*
4.9.3 Tùy ch n type c a find
nh ng ki u khác nhau Các tham s có th c a tùy ch n -type là b (cho thi t b
d ng kh i), c (thi t b d ng ký t ), d (th m c), p ( ng d n có tên), f (t p tin
th ng), l (liên k t m m), và s (socket) Ví d , đ tìm ki m các liên k t m m trong th m c /usr/bin mà nó có ch a chu i vim ta th c hi n l nh sau:
$ find /usr/bin -name '*vim*' -type l
/usr/bin/rvim
/usr/bin/vimdiff
/usr/bin/gvimdiff
4.9.4 find và tùy ch n mtimes
Trang 12-rw - 1 root root 0 Jan 4 18:00 d
$ date
Mon Jan 7 18:14:52 EST 2002
sau:
$ find -name \? -mtime -1
./a
gi :
$ find -name \? -mtime +0
./b
./c
./d
4.9.5 Tùy ch n -size
đ nh, đ i s c a -size là các kh i 512-byte, tuy nhiên vi c thêm vào các h u t làm
r ng l n h n ho c d u tr đ nói là nh h n
$ find /usr/bin -type f -size -50c
/usr/bin/krdb
/usr/bin/run-nautilus
/usr/bin/sgmlwhich
/usr/bin/muttbug
5 Quy n truy xu t file (file permission)
l nh sau:
chmod
su
chown
chgrp
Trang 13ây là các l nh c b n nh t liên quan đ n vi c thi t l p các quy n truy xu t đ n file Tuy nhiên tr c khi đ c p k đ n các l nh trên Chúng ta s tìm hi u m t chút v các quy n truy xu t trên file
đ i t ng: ng i s h u file (owner), nhóm ng i dùng (group) và nh ng
ng i dùng khác (everybody else) Các quy n có th đ c gán cho 3 đ i t ng này là: quy n đ c (read), quy n vi t (write) và quy n th c thi (execute)
kh o sát quy n truy c p c a m t file ta dung l nh ls v i tham s -l nh sau:
V i l nh ls –l install.log li t kê các thông tin c a file install.log:
- Ch s h u (owner) c a file là root
là s đ gi i thích thông tin c a c t đ u tiên này
5.1 L nh chmod
d ng l nh chmod ph i cung c p quy n c n thi t l p cho file hay th m c Quy n
rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
Quy n đ c, vi t và th c thi cho các ng i dùng khác Quy n đ c, vi t và th c thi cho nhóm ng i s h u file Quy n đ c, vi t và th c thi cho nhóm ng i s h u file
“-” là file th ng
“d” là th m c
Trang 14r = 100 = 4 (read)
hi u rõ h n v vi c thi t l p quy n truy xu t chúng ta hãy xem ví d sau Gi
truy xu t đ n file này
d ng nh sau:
d ng
777 (rwx rwx rwx) M i ng i đ u có toàn quy n, thi t l p này th ng r t ít
đ c s d ng
755 (rwx r-x r-x) Ch s h u có toàn quy n, nh ng ng i còn l i ch có
quy n đ c và th c thi Thi t l p này th ng đ c dùng cho
ch ng trình mà m i ng i có th dùng
700 (rwx - -) Ch s h u có th đ c, vi t và th c thi Nh ng ng i khác
không có quy n gì c H u d ng cho nh ng ch ng trình
ch đ c s d ng và gi riêng cho ch s h u
666 (rw- rw- rw-) T t c ng i dùng có quy n đ c và vi t
644 (rw- r r ) Ch s h u có quy n đ c vi t, nh ng ng i khác ch có
quy n đ c H u d ng cho file d li u, ch có ch s h u có
th thay đ i, nh ng ng i khác chi đ c
600 (rw- - -) Ch s h u có quy n đ c vi t, nh ng ng i khác không có
quy n gì c H u d ng cho file d li u quan tr ng mà ch
s h u mu n gi riêng cho mình
Quy n trên th m c
Trang 15Giá tr thi t l p Mô t
777 (rwx rwx rwx) M i ng i đ u có toàn quy n (li t kê, t o và xóa)
755 (rwx r-x r-x) Ch s h u có toàn quy n, nh ng ng i còn l i ch có th
li t kê n i dung th m c, không có quy n t o và xóa file trong th m c
700 (rwx - -) T t c m i ng i đ u không th truy xu t th m c này,
ngo i tr ng i s h u có toàn quy n
5.2 L nh su (superuser)
h p này
tr l i ng i dùng c ta dùng l nh exit
5.3 L nh chown
pháp nh sau:
có th th c hi n l nh chown ph i có quy n root (dùng l nh su)
Ví d :
root
Trang 16- Chuy n v th m c g c /
- Chuy n ra th m c trên m t m c (local)
Bài 3: Th c hi n t o m t script có tên hello đ n gi n trong th m c /usr nh sau:
$cat >hello
$echo “Xin chao!!!”
$^D (b m ctrl+D)
$chmod 755 hello
- Th c hi n chuy n th m c v th m c cá nhân và th c hi n shell trên v i
cú pháp: sh hello
Bài 4: S d ng đ ng d n tuy t đ i đ th c hi n shell hello
Bài 5: Xem n i dung c a bi n PATH hi n t i c a h th ng Thêm đ ng d n vào
dù đang đ ng b t k v trí nào?
Bài 6: Th c hi n l nh ls –l trong th m c /bin Xác đ nh các quy n c a ng i s
Bài 7: Th c hành l nh file b ng cách tìm các file d ng ASCII và dùng l nh less
xem n i dung c a các file đó
Bài 8: T o cây th m c nh sau trong th m c cá nhân c a mình
Myweb
|-images
| | icon
| | background
| | animation
|-databases
|-scripts
|-java
Trang 17Bài 9: Tìm m t s file có ph n m r ng html và class trong h th ng file và th c
hi n copy vài file html vào th m c Myweb và vài file class vào th m c
Myweb/scripts
Bài 10: Th c hi n l nh mv đ di chuy n các file class trong th m c
Myweb/scripts vào th m c Myweb/java
Bài 11: Th c hi n xóa các th m c: Myweb/scripts, Myweb/images/animation Bài 12: Thi t l p quy n truy xu t cho th m c Myweb/databases sao cho ch có
trên nó
Bài 13: Thi t l p quy n trên th m c Myweb/java sao cho ng i dùng có toàn
Bài 14: Ý ngh a c a l nh chmod trong bài 3 là gì?