GNU FDL License Agreement
nbhung@cit.ctu.edu.vn 1
LINUX
H THNG TP TIN
1 Chun phân cp h thng tp tin (FHS-Filesystem Hierarchy Standard)................... 2
1.1 Hai kiu FHS độc lp.......................................................................................... 2
1.2 Cu trúc phân cp th cp trên thư mc /usr ...................................................... 2
2 Tìm kiếm tp tin.......................................................................................................... 3
2.1 Biến môi trường PATH....................................................................................... 3
2.2 Thay đổi PATH................................................................................................... 3
2.3 Lnh "which" ...................................................................................................... 3
2.4 S dng "which -a"............................................................................................. 3
2.5 Lnh whereis....................................................................................................... 3
2.6 Lnh find............................................................................................................. 4
2.6.1 S dng các ký t đại din vi lnh find .................................................... 4
2.6.2 Tìm không phân bit ch hoa và ch thường vi find................................ 4
2.6.3 Lnh find và các biu thc quan h............................................................ 4
2.6.4 Tùy chn type ca find ............................................................................... 4
2.6.5 find và tùy chn mtimes.............................................................................. 5
2.6.6 The -daystart option .................................................................................... 5
2.6.7 Tùy chn -size............................................................................................. 5
2.6.8 X lý các tp tin được tìm thy................................................................... 5
2.7 Lnh locate.......................................................................................................... 6
3 Biu thc quan h....................................................................................................... 7
3.1 Biu thc quan h là gì ?..................................................................................... 7
3.2 So sánh vi các ký t đại din ............................................................................ 7
3.3 Tìm chui con đơn gin ...................................................................................... 7
3.4 Metacharacters .................................................................................................... 7
3.5 S dng [] ........................................................................................................... 8
3.6 S dng [^].......................................................................................................... 8
3.7 Đim lưu ý .......................................................................................................... 8
3.8 Ký t đa năng "*"................................................................................................ 8
3.9 Mô t bt đầu và kết thc chui.......................................................................... 8
GNU FDL License Agreement
nbhung@cit.ctu.edu.vn 2
1 Chun phân cp h thng tp tin (FHS-Filesystem Hierarchy
Standard)
Chun phân cp h thng tp tin là mt tài liu mô t cách sp xếp các thư mc trên h thng
Linux. FHS được phát trin để cp mt khuôn mu chung nhm giúp cho vic phát trin các
ng dng mà không ph thuc vào bn phân phi Linux. FHS mô t các thư mc sau:
* / : Thư mc gc
* /boot: Các tp tin tĩnh cn thiết cho tiến trình khi động
* /dev : Các tp tin thiết b
* /etc : Các tp tinh cu hình h thng và các ng dng
* /lib : Các thư vin chia s và các môdule ca ht nhân
* /mnt : Đim gn ni các h thng tp tin mt cách tm thi
* /opt : Nơi tích hp các gói chương trình ng dng
* /sbin: Các tp tin thc thi cn thiết cho h thng
* /tmp : Nơi cha các tp tin tm
* /usr : H phân cp th cp
* /var : D liu biến đổi
1.1 Hai kiu FHS độc lp
FHS mô t v khuôn mu các thư mc ca nó da trên ý tưởng v các tp tin : có th chia s
(shareable) hay không th chia s (unshareable), và biến đổi (variable) hay tĩnh (static). Các
d liu có th chia s có th được chia s gia các máy tính vi nhau; d liu không th chia
s ch s dng cho tng máy riêng bit (ví d như các tp tin cu hình). D liu biến đổi có
th được thay đổi, điu chnh; d liu tĩnh thì không cho phép thay đổi. Bng sau mô t vic
phân loi các thư mc trong FHS
shareable unshareable
static /usr
/opt /etc
/boot
variable /var/mail
/var/spool/news /var/run
/var/lock
1.2 Cu trúc phân cp th cp trên thư mc /usr
Dưới thư mc /usr bn s tìm thy mt cu trúc phân cp th hai ging như h thng tp
tin gc. Không bt buc thư mc /usr tn ti khi máy tính được khi động mà nó có th
được chia s t mng ("shareable") hay ni kết vào t CD-ROM ("static") . Hu hết các
chương trình cài đặt Linux không ng dng hình thc chia s thư mc /usr, nhưng nó cũng
rt đáng để hiu s hu ích ca vic phân bit gia cu trúc phân cp chính ti thư mc gc
và cu trúc phân cp ph ti thư mc /usr.
GNU FDL License Agreement
nbhung@cit.ctu.edu.vn 3
2 Tìm kiếm tp tin
H thng Linux thường cha hàng trăm ngàn tp tin. Linux h tr nhiu công c khác nhau
để giúp bn tìm ra mt tp tin nào đó.
2.1 Biến môi trường PATH
Khi bn thc thi mt chương trình ti dòng lnh, chương trình thông dch lnh bash s tìm
kiếm chương trình trong danh sách các thư mc đã được mô t trong biến môi trường PATH.
Ví d, khi bn đánh lnh ls, bash không hiu ngay là chương trình ls nm trong thư mc
/usr/bin. Thay vào đó, bash tham kho đến biến môi trường có tên là PATH, nó là mt
danh sách các thư mc được phân cách bi du hai chm ‘:’. Chúng ta có th kho sát giá tr
ca PATH:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin
Vi giá tr ca PATH như trên, để tìm chương trình ls, bash trước tiên s kim tra thư mc
/usr/local/bin, kế đến là thư mc /usr/bin. Thông thường , ls được đặt trong thư
mc /usr/bin, vì thế bash s dng li ti đim này.
2.2 Thay đổi PATH
Bn có th m rng thêm biến PATH bng cách gán thêm các phn t vào nó vi lnh sau:
$ PATH=$PATH:~/bin
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/home/agriffis/b
in
Bn cũng có th xóa b mt phn t ra khi PATH, mc dù đó không phi là mt công vic
đơn gin bi vì bn không th tham kho đến giá tr đang tn ti ca $PATH. Cách tt nht là
đánh li ni dung mi hoàn toàn cho biến PATH:
$ PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:~/bin
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/agriffis/bin
2.3 Lnh "which"
Bn có th kim tra mt chương trình nào đó có nm trong các thư mc được ch ra bi
PATH hay không bng cách dùng lnh which. Ví d, đây ta s thy rng trong h thng
Linux hin tai không có chương trình tên sense:
$ which sense
which: no sense in
(/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin)
Trường hp khác ta li thành công khi tìm lnh ls:
$ which ls
/usr/bin/ls
2.4 S dng "which -a"
Dùng c -a để yêu cu which hin th tt c các chương trình được yêu cu có trong các
thư mc được mô t bi PATH:
$ which -a ls
/usr/bin/ls
/bin/ls
2.5 Lnh whereis
Nếu bn mun tìm nhiu thông tin hơn ngòai v trí ca mt chương trình bn có th dùng
chương trình whereis :
$ whereis ls
GNU FDL License Agreement
nbhung@cit.ctu.edu.vn 4
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz
Ta thy rng that ls có mt trong hai nơi là /bin /usr/bin. Hơn thế chúng ta còn
được thông báo rng có tài liu hướng dn s dng nm trong thư mc /usr/share/man.
2.6 Lnh find
Lnh find là mt tin ích khác cho phép bn tìm kiếm các tp tin. Vi find bn không b
gii hn trong phm vi tìm kiếm chương trình, bn có th tìm kiếm mt tp tin bt k mà bn
mun bng cách s dng mt tiêu chun tìm kiếm nào đó. Ví d, để tìm mt tp tin có tên
README, bt đầu t thư mc /usr/share/doc ta thc hin lnh 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
2.6.1 S dng các ký t đại din vi lnh find
Bn có th s dng các ký t đại din trong tham s -name, mà bn bao bc nó bng cp
nháy đơn hay đặt ký t \ phía trước ký t đại din đó. Ví d , chúng ta mun tìm tp tin
README vi các phn m rng 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]
2.6.2 Tìm không phân bit ch hoa và ch thường vi find
Ta có th dùng lnh sau:
$ find /usr/share/doc -name '[Rr][Ee][Aa][Dd][Mm][Ee]*'
Hay dùng tham s -iname:
$ find /usr/share/doc -iname readme\*
2.6.3 Lnh find và các biu thc quan h
Nếu bn đã quen vi biu thc quan h, bn có th dùng tùy chn –regex để ch in ra tên
các tp tin mà nó trùng khp vi mu. Nếu không phân bit ch hoa ch thường trong mu
thì dùng tùy chn -iregex.
2.6.4 Tùy chn type ca find
Tùy chn -type cho phép bn tìm kiếm các đối tượng trong h thng tp tin theo nhng
kiu khác nhau. Các tham s có th ca tùy chn -type b (cho thiết b dng khi), c
(thiết b dng ký t), d (thư mc), p (ng dn có tên), f (tp tin thường), l (liên kết mm),
s (socket). Ví d, để tìm kiếm các liên kết mm trong thư mc /usr/bin mà nó có cha
chui vim ta thc hin lnh sau:
$ find /usr/bin -name '*vim*' -type l
/usr/bin/rvim
/usr/bin/vimdiff
/usr/bin/gvimdiff
GNU FDL License Agreement
nbhung@cit.ctu.edu.vn 5
2.6.5 find và tùy chn mtimes
Tùy chn -mtime cho phép bn chn các tp tin da trên thi gian cp nht sau cùng ca
nó. Tham s ca mtime là nhng khong 24 gi, và có th thêm du cng (có nghĩa là sau)
hoc du tr (có nghĩa là trước). Ví d , Xem xét trường hp sau:
$ ls -l ?
-rw------- 1 root root 0 Jan 7 18:00 a
-rw------- 1 root root 0 Jan 6 18:00 b
-rw------- 1 root root 0 Jan 5 18:00 c
-rw------- 1 root root 0 Jan 4 18:00 d
$ date
Mon Jan 7 18:14:52 EST 2002
Bn có th tìm các tp tin mà nó được to ra trong vòng 24 gi va qua bng lnh sau:
$ find . -name \? -mtime -1
./a
Hoc bn có th tìm các tp tin mà chúng được to ra trước cách đây đã hơn 24 gi:
$ find . -name \? -mtime +0
./b
./c
./d
2.6.6 The -daystart option
Nếu bn mô t tùy chn -daystart, khi đó khong thi gian s được tính t gi bt đầu
ca ngày hin ti ch không là 24 gi trước đây. Ví d, tìm các tp tin được to ngày hôm
qua và ngày hôm kia:
$ find . -name \? -daystart -mtime +0 -mtime -3
./b
./c
$ ls -l b c
-rw------- 1 root root 0 Jan 6 18:00 b
-rw------- 1 root root 0 Jan 5 18:00 c
2.6.7 Tùy chn -size
Tùy chn -size cho phép bn tìm các tp tin da trên kích thước ca chúng. Mc định, đối
s ca -size là các khi 512-byte, tuy nhiên vic thêm vào các hu t làm mi vic d dàng
hơn. Các hu t được chp nhn là b (khi 512-byte), c (bytes), k (kilobytes), and w (2-
byte). Bên cnh đó, bn có th thêm vào du cng để nói rng ln hơn hoc du tr đề nói
là nh hơn.
Ví d, để tìm các tp tin bình thường mà nó nh hơn 50 bytes ta dùng lnh sau:
$ find /usr/bin -type f -size -50c
/usr/bin/krdb
/usr/bin/run-nautilus
/usr/bin/sgmlwhich
/usr/bin/muttbug
2.6.8 X lý các tp tin được tìm thy
Bn có th t hi rng bn có th làm gì vi các tp tin tìm ra được. Lnh find có kh năng
tác động trên các tp tin tmf được vi tùy chn -exec. Tùy chn này nhn mt dòng lnh để
thc thi như là tham s ca nó và kết thc bng ký t ; và s thay thế bt k mt th hin nào
ca cp {} vi tên tp tin tìm được. Xem ví d sau:
$ find /usr/bin -type f -size -50c -exec ls -l '{}' ';'
-rwxr-xr-x 1 root root 27 Oct 28 07:13 /usr/bin/krdb
-rwxr-xr-x 1 root root 35 Nov 28 18:26 /usr/bin/run-nautilus
-rwxr-xr-x 1 root root 25 Oct 21 17:51 /usr/bin/sgmlwhich
-rwxr-xr-x 1 root root 26 Sep 26 08:00 /usr/bin/muttbug