Professional Documents
Culture Documents
Nhapmon Linux
Nhapmon Linux
Ph n I
Gi i thi u b i cc nh pht tri n developerWorks IBM, ngu n c a cc cu n sch h ng d n tuy t v i ibm.com/developerWorks D ch b i: Phan Vnh Th nh
M cl c
1 Tr c khi b t u 1.1 V cu n sch h ng d n ny . . . . . . . . . . . . . . . . . . . 1.2 V tc gi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Gi i thi u v bash 2.1 V (shell) . . . . . . . . . . . . . . . . 2.2 C ph i b n ang ch y bash khng? . 2.3 V bash . . . . . . . . . . . . . . . . . 2.4 S d ng cd . . . . . . . . . . . . . . . 2.5 ng d n . . . . . . . . . . . . . . . . 2.6 ng d n tuy t i . . . . . . . . . . 2.7 ng d n tng i . . . . . . . . . . 2.8 S d ng .. . . . . . . . . . . . . . . . . 2.9 S d ng .., ti p theo . . . . . . . . . . 2.10 V d ng d n tng i . . . . . . . 2.11 Hy hi u . . . . . . . . . . . . . . . . . 2.12 cd v th m c nh . . . . . . . . . . . 2.13 Th m c nh c a nh ng ng i s d ng 3 S 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . khc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 6 7 7 7 8 8 8 9 9 9 10 10 11 11 12 13 13 13 14 15 15 15 16 16
d ng cc cu l nh c a Linux Gi i thi u ls . . . . . . . . . . . . . . . . . . . . Danh sch th m c lo i di . . . . . . . . . . . Danh sch th m c lo i di, ti p theo . . . . . . Xem th m c . . . . . . . . . . . . . . . . . . . Danh sch inode v danh sch qui (recursive) Hy hi u inode, Ph n 1 . . . . . . . . . . . . . . Hy hi u inode, ph n 2 . . . . . . . . . . . . . . Hy hi u inode, Ph n 3 . . . . . . . . . . . . . . 2
M CL C 3.9 3.10 3.11 3.12 3.13 3.14 3.15 4 T o 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 mkdir . mkdir -p touch . . echo . . echo v s cat v cp mv . . . . . . . . . . . . . . . . . . . chuy n . . . . . . . . . . . . . . . . . . . . . . h . . . . . . . . . . . . ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 17 17 18 18 18 19 19 21 21 21 22 22 22 23 23 23 24 24 25 26 26 28 28 28 29 29 30 30 30 31 31 32 32
lin k t v xa t p tin Lin k t c ng . . . . . . . . . . Lin k t c ng, ti p theo . . . . Lin k t t ng trng . . . . . . Lin k t t ng trng, ti p theo Su hn v lin k t t ng trng, Su hn v lin k t t ng trng, Su hn v lin k t t ng trng, Su hn v lin k t t ng trng, Su hn v lin k t t ng trng, Su hn v lin k t t ng trng, rm . . . . . . . . . . . . . . . . rmdir . . . . . . . . . . . . . . . rm v th m c . . . . . . . . .
. . . . . . . . ph ph ph ph ph ph . . . . . .
. . . . . . . . . . . . n1 n2 n3 n4 n5 n6 . . . . . . . . . . . . . . . . . . . .
5 S d ng cc k t i di n (wildcard) 5.1 Gi i thi u v k t i di n . . . . . . 5.2 Gi i thi u v k t i di n, ti p theo . 5.3 Hi u v khng tng ng . . . . . . . . 5.4 Hi u v khng tng ng, ti p theo . . 5.5 C php i di n: * . . . . . . . . . . . 5.6 C php i di n: ? . . . . . . . . . . . 5.7 C php i di n: [] . . . . . . . . . . . 5.8 C php i di n: [!] . . . . . . . . . . 5.9 o su v i di n . . . . . . . . . . . 5.10 o su v i di n, ti p theo . . . . . 5.11 Ngo c n "g p" ngo c kp . . . . . .
M CL C 33 33 33 34 34
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Chng 1 Tr c khi b t u
1.1 V cu n sch h ng d n ny
Cho m ng n v i "Linux nh ng i u c b n," cu n th nh t trong b n cu n sch h ng d n gip b n chu n b cho bi thi 101 c a LPI (Linux Professional Institute). Trong cu n sch h ng d n ny, chng ti s gi i thi u v i b n bash (v , shell, tiu chu n c a Linux), ch cho b n cch s d ng thnh th o cc cu l nh c b n c a Linux nh ls, cp v mv, gi i thch v inode, lin k t "c ng" v lin k t "t ng trng" (hard link v symbolic links) v nhi u th khc. Khi k t thc cu n sch h ng d n ny b n s c ki n th c v ng vng v nh ng i u c b n khi s d ng Linux, v th m ch cn s n sng b t u h c c b n v nhi m v qu n tr m ng Linux. Khi k t thc chu i sch h ng d n ny (tm cu n t t c ), b n s c ki n th c c n thi t tr thnh Qu n tr vin h th ng Linux v s n sng t t i ch ng ch LPIC b c I c a Linux Professional Institute n u b n d nh nh v y. Cu n sch h ng d n ny (Ph n I) ni ring l l t ng v i nh ng "ng i m i" v i Linux, ho c v i nh ng ng i mu n xem l i ho c c i ti n s hi u bi t c a mnh v nh ng khi ni m c b n c a Linux nh sao chp (copying) v di chuy n (moving) t p tin, t o ng d n "c ng" v "t ng trng", v s d ng cc cu l nh "ch bi n" vn b n c b n song song v i "bng chuy n" (pipeline) v "chuy n h ng" (redirection). D c theo cu n h ng d n ny, chng ti s chia s v i cc b n nh ng l i g i , l i mch n c v mnh l i gi cho cu n h ng d n thm phong ph ("ngon n") v c tnh th c d ng, th m ch cho c nh ng ai c kinh nghi m s d ng Linux ng k . V i nh ng "ng i b t u", nhi u ti li u c a cu n h ng d n ny s m i, nhng v i 5
CHNG 1. TR C KHI B T U
nh ng ng i s d ng Linux kinh nghi m c th tm th y cu n h ng d n ny nh m t cch tuy t v i "lm bo thm" k nng Linux c b n. V i nh ng ai qua pht hnh (release) 1 c a cu n h ng d n ny v i m c ch khc hn l chu n b thi LPI, b n c kh nng khng c n pht hnh 2. Tuy nhin, n u b n c d tnh v t qua k thi LPI, b n nn lu c b n ch nh s a ny.
1.2
V tc gi
C tr t i Albuquerque, New Mexico, Daniel Robbins l ki n trc tr ng c a Gentoo Linux, m t b n phn ph i Linux cao c p. Tc gi cn vi t cc bi bo, sch h ng d n, nh ng l i mch n c cho IBM developerWorks v Intel Developer Services v l tc gi ng gp c a vi cu n sch, g m c Samba Unleashed v SuSE Linux Unleashed. Daniel thch th s d ng th i gian v i v , Mary, v con gi, Hadassah. B n c th lin h v i Daniel qua t i drobbins@gentoo.org. V i nh ng cu h i k thu t v n i dung c a cu n h ng d n ny, lin h v i tc gi , Daniel Robbins, t i drobbins@gentoo.org.
N u b n t ng s d ng h i u hnh Linux, b n bi t khi ng nh p, b n c n cho b i d u nh c trng nh sau: $ D u nh c b n th y ni ring c th trng khc m t cht. N c th ch a tn my, tn c a th m c hi n th i, ho c c hai. Tuy nhin, b t k l gi u nh c c a b n trng nh th no, c k hi u l ch c ch n. Chng trnh in d u nh c g i l "v " (shell), v r t c th v shell c a ring b n l chng trnh c g i bash.
2.2
B n c th ki m tra xem n u b n ang ch y bash hay khng b ng cch g: $ echo $SHELL /bin/bash N u dng trn cho ra l i ho c p l i khng gi ng v i v d , th b n c th ang ch y v shell khc bash. Trong tr ng h p , ph n l n c a cu n h ng d n ny v n c p d ng, nhng chuy n qua bash r t c l i cho b n v i m c ch chu n b cho k thi 101. (Cu n h ng d n ti p theo trong chu i ny, v qu n tr c b n, bao hm vi c thay i v shell cho ng i dng b ng cu l nh chsh.) 7
2.3
V bash
Bash, vi t t t c a "Bourne-again shell"1 , l v shell theo m c nh trn h u h t cc h i u hnh Linux. Cng vi c c a v shell l tun theo cc cu l nh c a ng i dng, v th b n c th tc ng qua l i v i h i u hnh Linux c a b n. Khi b n nh p xong cu l nh, b n c th ch th cho v shell exit, thot ra, hay logout, ng xu t, t i th i i m ny b n s c a tr l i d u nh c ng nh p. Nhn ti n, b n c th ng xu t b ng cch g control-D t i d u nh c bash.
2.4
S d ng cd
Nh b n th y, nhn ch m ch m vo d u nh c bash khng ph i l i u thch th nh t trn th gian :). V v y, hy b t u s d ng bash "i d o" vng quanh h th ng t p tin. T i d u nh c, g cu l nh sau (khng g d u $ ): $ cd / Chng ta v a ni v i bash r ng b n mu n lm vi c t i /, c bi t n nh th m c root ; t t c th m c trn h th ng t o thnh m t cy th m c, v / c xem nh th m c cao nh t c a cy ny, hay l g c r (root). cd thi t l p th m c m b n ang lm vi c, c bi t n nh "th m c hi n th i".
2.5
ng d n
th y th m c hi n th i c a bash, b n c th g: $ pwd / Trong v d pha trn, i s / cho cd g i l ng d n (path). i s thng bo cho cd bi t ni chng ta mu n i n. Trong tr ng h p ny ni
Ch thch c a ng i d ch: Bourne-again shell l m t cch chi ch ti ng Anh. "Bourne" c gi ng nh borne (sinh ra, ra).
1
2.6. NG D N TUY T I
2.6
ng d n tuy t i
D i y l m t s ng d n tuy t i khc: /dev /usr /usr/bin /usr/local/bin Nh b n c th th y, t t c ng d n tuy t i c m t i m chung l b t u v i /. V i ng d n /usr/local/bin, chng ta thng bo cho cd chuy n vo th m c /, sau th m c usr d i n, v sau local v bin. ng d n tuy t i lun lun nh n ra b i s b t u b ng /.
2.7
ng d n tng i
M t lo i ng d n khc l ng d n tng i. Bash, cd, v cc cu l nh khc lun lun bin d ch nh ng ng d n ny tng i v i th m c hi n th i. ng d n tng i khng bao gi b t u v i m t /. V th , n u chng ta ang trong th m c /usr. $ cd /usr Sau , chng ta c th dng ng d n tng i thay i t i th m c /usr/local/bin: $ cd local/bin $ pwd /usr/local/bin
2.8
S d ng ..
2.9
S d ng .., ti p theo
Thm vo , chng ta c th thm .. vo ng d n tng i c, cho php i t i m t th m c n m "k bn" th m c ang , v d : $ pwd /usr/local $ cd ../share $ pwd /usr/share
2.10
V d ng d n tng i
ng d n tng i c th kh ph c t p. Sau y l m t s v d , cc th m c k t qu khng c hi n th . Hy th hnh dung xem b n s i t i u sau khi g nh ng cu l nh sau: $ cd /bin $ cd ../usr/share/zoneinfo $ cd /usr/X11R6/bin $ cd ../lib/X11 $ cd /usr/bin $ cd ../bin/../bin By gi , hy th g chng v xem b n hnh dung ng khng :)
2.11. HY HI U .
11
2.11
Hy hi u .
Tr c khi k t thc bi gi ng c a chng ta v cd, c m t vi i u ti mu n c p n. u tin, c m t th m c c bi t khc g i l ., c ngha "th m c hi n th i". Trong khi th m c ny khng c s d ng v i cu l nh cd, n th ng c s d ng th c thi m t s chng trnh trong th m c hi n th i, gi ng nh sau: $ ./myprog v d trn t p tin c th th c thi myprog n m t i th m c hi n th i s c th c thi.
2.12
cd v th m c nh
N u chng ta mu n thay i t i th m c nh (home directory), c th g: $ cd Khng c i s , cd s thay i t i th m c nh c a b n, s l /root cho ng i dng cao c p (superuser) v i n hnh l /home/username cho ng i dng bnh th ng. Nhng n u chng ta mu n ch r m t t p tin trong th m c nh th sao? C th l chng ta mu n a t p tin nh l i s cho cu l nh myprog. N u t p tin tr ng trong th m c nh, c th g: $ ./myprog /home/teppi82/myfile.txt2 Tuy nhin, s d ng ng d n tuy t i nh v y khng ph i lc no cng ti n l i. R t may, chng ta c th s d ng k t (d u ng) lm vi c tng t : $ ./myprog /myfile.txt
2
12
2.13
Th m c nh c a nh ng ng i s khc
d ng
Bash s khai tri n k t ng m t mnh ch th m c nh c a b n, nhng b n cng c th s d ng n ch th m c nh c a nh ng ng i s d ng khc. V d , n u chng ta mu n ch n t p tin girls.txt trong th m c nh c a James, c th g: $ ./myprog james/girls.txt
Chng 3 S d ng cc cu l nh c a Linux
3.1 Gi i thi u ls
By gi , chng ta s xem qua cu l nh ls. R t c th l b n lm quen v i ls v bi t r ng ch g cu l nh ny (khng c tham s ) li t k n i dung c a th m c hi n th i: $ cd /usr $ ls bin doc games include info lib local sbin share src X11R6 1 B ng vi c ch r ty ch n -a, b n c th th y t t c t p tin c a m t th m c, bao g m cc t p tin c che gi u (hien files): nh ng ci m b t u v i .. Nh b n c th th y trong v d sau, ls -a a ra c cc th m c lin k t c bi t . v .. : $ ls -a . .. bin doc games include info lib local sbin share src X11R6
3.2
Danh sch th m c lo i di
B n cng c th ch r m t hay nhi u t p tin hay th m c trn dng l nh ls. N u b n ch r m t t p tin, ls s ch hi n th ra c t p tin m thi. N u b n
ch thch c a ng i d ch: trong v d ny v m t s pha d i, k t qu thu c l trn Debian Linux, k t qu trong nguyn b n c khc
1
13
14
CHNG 3. S
D NG CC CU L NH C A LINUX
ch r m t th m c, ls s hi n th ra n i dung c a th m c. Ty ch n -l r t thu n ti n khi b n c n xem cc thng tin nh quy n h n (permissions), s h u (ownership), th i gian s a i (modification time), v kch th c (size) trong danh sch th m c.
3.3
Trong v d d i y, chng ta s d ng ty ch n -l hi n th danh dch y c a th m c /usr. $ ls -l /usr total 122 drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x lrwxrwxrwx drwxr-xr-x drwxrwsr-x drwxr-xr-x drwxr-xr-x drwxrwsr-x drwxr-xr-x
2 root root 53104 2004-08-29 02:17 bin 2 root root 2336 2004-06-22 19:51 doc 2 root root 3088 2004-06-01 15:44 games 46 root root 5528 2004-06-13 16:33 include 1 root root 10 2004-05-31 22:29 info -> share/info 138 root root 43384 2004-08-29 00:28 lib 11 root staff 272 2004-06-05 04:06 local 2 root root 6760 2004-08-29 00:28 sbin 236 root root 6360 2004-06-22 19:31 share 5 teppi82 src 136 2004-08-28 21:58 src 6 root root 144 2004-05-31 22:53 X11R6
C t th nh t hi n th thng tin quy n h n cho t ng m c trong danh sch. M t cht n a ti s gi i thch cch d ch thng tin ny. C t ti p theo hi n th s lin k t (links) cho m i m c c a h th ng t p tin, chng ta s t m th i c t l i nhng s tr l i sau. C t th ba v c t th t, tng ng, ng i s h u (owner) v nhm (group). C t th nm li t k kch th c. C t th su l "th i gian s a i g n nh t" ("last modified" time) hay "mtime" c a cc m c. C t cu i cng l tn g i. N u t p tin l lin k t t ng trng (symbolic link), b n s th y d u -> v ng d n t i ni m lin k t ch n.2 .
2
3.4. XEM TH M C
15
3.4
Xem th m c
i khi b n ch mu n xem th m c, khng quan tm n i dung trong. Cho nh ng tr ng h p ny, b n c th ch r ty ch n -d, ni v i ls xem b t k th m c no: $ ls -dl /usr /usr/bin /usr/X11R6/bin ../share drwxr-xr-x 241 root root 6488 2004-09-02 18:21 ../share drwxr-xr-x 12 root root 312 2004-05-31 22:29 /usr drwxr-xr-x 2 root root 53208 2004-09-02 18:21 /usr/bin drwxr-xr-x 2 root root 3984 2004-06-22 19:30 /usr/X11R6/bin
3.5
Nh v y b n c th s d ng -d xem th m c, nhng ng th i b n cng c th dng -R lm i u ng c l i: khng ch xem n i dung th m c, m cn xem t t c cc t p v th m c bn trong c a th m c (Xem ton b )! Chng ti khng a ra v d no cho ty ch n ny (v n th ng to), nhng b n c th mu n th m t vi l n cu l nh ls -R v ls -Rl bi t chng lm vi c nh th no. Cu i cng, ty ch n -i c a ls c th s d ng hi n th trong danh sch s inode c a cc v t th h th ng t p tin: $ ls 685 915 916 -i /usr bin 917 include 9352 local 920 src doc 918 info 706 sbin 12522 X11R6 games 919 lib 708 share
3.6
Hy hi u inode, Ph n 1
M i v t th trn m t h th ng t p tin c xc nh m t ch s (index) duy nh t, g i l ch s inode. Ci ny c v t m th ng, nhng am hi u inode l c n thi t hi u nhi u thao tc v i h th ng t p tin. V d , xem xt cc lin k t . v .. m xu t hi n trong m i th m c. hi u y th m c .. th c s l g, u tin chng ta xem ch s inode c a /usr/local:
16
CHNG 3. S
D NG CC CU L NH C A LINUX
$ ls -id /usr/local 9352 /usr/local Th m c /usr/local c ch s inode l 9352. Cn by gi , hy xem ch s inode c a mbox/usr/local/bin/..: $ ls -id /usr/local/bin/.. 9352 /usr/local/bin/..
3.7
Hy hi u inode, ph n 2
Nh b n c th th y, /usr/local/bin/.. c cng ch s inode v i /usr/local! y l cch chng ta ti n t i s hi u th u v i khm ph gy "s c" ny. Tr c y, chng ta xem xt /usr/local t n l th m c. By gi , chng ta khm ph ra inode 9352 trn th c t l th m c, v tm th y hai m c (g i l "lin k t") ch t i inode ny. C /usr/local v /usr/local/bin/.. u lin k t t i inode 9352. M c d inode 9352 ch t n t i m t ni trn a, nhi u ci c th lin k t t i n. Inode 9352 l m c th t s trn a.
3.8
Hy hi u inode, Ph n 3
Trn th c t , chng ta c th th y t ng s l n m inode 9352 c lin k t n, dng cu l nh ls -dl : $ ls -dl /usr/local drwxrwsr-x 11 root staff 272 2004-06-05 04:06 /usr/local N u nhn vo c t th hai t bn tri, chng ta s th y r ng th m c /usr/local (inode 9352) c lin k t n m i m t l n. y l cc ng d n khc nhau, lin k t n inode ny trn h i u hnh c a ti: /usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/..
17
3.9
mkdir
Hy xem xt nhanh cu l nh mkdir, l nh c th s d ng t o th m c m i. V d d i y t o 3 th m c m i, co, ca, ro, t t c d i /tmp: $ cd /tmp $ mkdir co ca ro Theo m c nh, cu l nh mkdir khng t o th m c m cho b n; ton b ng d n t ph n t ti p theo n ph n t cu i cng ph i t n t i. V v y, n u b n mu n t o cc th m c co/gai/dep, b n c n a ra ba cu l nh mkdir ring bi t: $ mkdir co/gai/dep mkdir: cannot create directory co/gai/dep: Not a directory $ mkdir co $ mkdir co/gai $ mkdir co/gai/dep
3.10
mkdir -p
Tuy nhin, mkdir c ty ch n -p r t thu n ti n, thng bo cho mkdir t o b t k th m c m no n u cha c, nh b n c th th y y: $ mkdir -p de/nhu/an/chao/ga Ni chung, khng ph c t p p m t. h c thm v cu l nh mkdir, g man mkdir v c trang h ng d n s d ng (manual page). Cch ny cng lm vi c v i g n nh t t c cc cu l nh bao hm y (v d , man ls), tr cd, v cd g n li n (built-in) vo bash.
18
CHNG 3. S
D NG CC CU L NH C A LINUX
3.11
touch
By gi , chng ta s xem xt nhanh cc cu l nh cp v mv, s d ng sao chp, i tn, v di chuy n t p tin, th m c. b t u ci t ng quan ny, th nh t chng ta s s d ng cu l nh touch t o m t t p tin trong /tmp: $ cd /tmp $ touch saochepem Cu l nh touch c p nh t "mtime" c a m t t p tin n u t p tin c (nh c l i c t th su trong k t qu c a ls -l ). N t t p tin khng t n t i, th m t t p tin m i, r ng s c t o ra. By gi b n c t p tin /tmp/saochepem v i kch th c b ng khng.
3.12
echo
By gi khi c t p tin, hy thm vo m t s d li u. Chng ta c th lm i u ny, s d ng cu l nh echo, l nh l y i s v in chng thi t b ra tiu chu n3 (standard output). u tin, ch m t mnh l nh echo: $ echo "tepdautien" tepdautien
3.13
echo v s chuy n h ng
By gi , v n cu l nh echo v i s chuy n h ng k t qu (output redirection): $ echo "tepdautien" > saochepem D u l n hn ni v i v shell vi t k t qu c a echo vo t p tin saochepem. T p tin ny s c t o ra n u cha c, v s b vi t ln n u c. B ng cch g ls -l, chng ta c th th y t p tin saochepem "di" 11 byte, v n ch a t tepdautien v k t dng m i: $ ls -l saochepem -rw-rr 1 teppi82 thang 11 2004-09-02 18:56 saochepem
3
3.14. CAT V CP
19
3.14
cat v cp
hi n th n i dung t p tin trn thi t b u cu i (terminal), s d ng cu l nh cat : $ cat saochepem tepdautien By gi , chng ta c th s d ng "cu th n ch" c b n c a l nh cp t o t p tin embansao t t p tin g c saochepem: $ cp saochepem embansao D a trn s nghin c u, chng ta th y y l nh ng t p tin th t s ring r ; ch s inode c a chng khc nhau: $ ls -i saochepem embansao 471627 embansao 471620 saochepem
3.15
mv
By gi , hy s d ng cu l nh mv i tn "embansao" thnh "embichuyen". S inode c a chng s v n khng thay i; tuy nhin, tn t p tin ch n inode s khc. $ mv embansao embichuyen $ ls -i embichuyen 471627 embichuyen S inode c a t p tin b chuy n s v n khng thay i ng th i t p tin thu c n m trn cng h th ng t p tin nh t p tin ngu n. Chng ta s c ci nhn g n hn v h th ng t p tin t i Ph n 3 c a chu i sch h ng d n ny. Trong khi ang ni v mv, hy xem cch s d ng khc c a cu l nh ny. mv, ngoi s cho php chng ta thay i tn t p tin, cn cho php di chuy n m t hay nhi u t p tin t i v tr khc trong h ng c p cc th m c. V d , chuy n /var/tmp/teptin.txt t i /home/teppi82 (t p tin nh c a ti ;) ti g:
20
CHNG 3. S
D NG CC CU L NH C A LINUX
$ mv /var/tmp/teptin.txt /home/teppi82 Sau khi g cu l nh ny, teptin.txt s b chuy n n /home/teppi82/teptin.txt. V n u /home/teppi82 n m trn h th ng t p tin khc v i /var/tmp, th cu l nh mv s sao chp teptin.txt t i h th ng t p tin m i v xa ci trn h th ng c. Nh b n c th on c, khi teptin.txt b di chuy n gi a cc h th ng t p tin, teptin.txt t i v tr m i s c s inode m i. l v m i h th ng t p tin c b cc s inode c l p c a ring mnh. Chng ta cng c th s d ng cu l nh mv di chuy n nhi u t p tin t i m t th m c ch. V d , di chuy n teptin1.txt v baibao3.txt t i /home/teppi82, ti c n g: $ mv /var/tmp/teptin1.txt /var/tmp/baibao3.txt /home/teppi82
Chng ta c p thu t ng "lin k t" khi ni n quan h gi a hai th m c (tn chng ta g) v inode (ch s trn h th ng t p tin m ta th ng hay b qua). Th c t , c hai ki u lin k t trn Linux. Ki u m chng ta th o lu n g i l lin k t c ng. M i inode c th c s lin k t c ng b t k, v inode s v n cn trn h th ng t p tin cho n khi t t c lin k t c ng bi n m t. Khi lin k t c ng cu i cng bi n m t v khng c chng trnh no m t p , Linux s t ng xa t p tin. Lin k t c ng m i c th t o b ng cu l nh ln: $ cd /tmp $ touch lienketdau $ ln lienketdau lienkethai $ ls -i lienketdau lienkethai 10662 lienketdau 10662 lienkethai
4.2
Nh b n c th th y, lin k t c ng lm vi c trn c p inode ch t i m t t p tin ni ring. Trn h i u hnh Linux, lin k t c ng c m t vi h n ch . Th nh t, b n ch c th t o lin k t c ng t i t p tin, t i th m c th khng. i u ny ng; th m ch . v .. l cc lin k t c ng h th ng t o ra, b n (d l ng i dng "root") khng c quy n t o m t ci cho ring mnh. Gi i h n 21
22
th hai c a lin k t c ng l chng khng th n i h th ng t p tin. C ngha l b n khng th t o m t lin k t t /usr/bin/bash t i /bin/bash n u cc th m c / v /usr c a b n n m trn cc h th ng t p tin ring bi t.
4.3
Lin k t t ng trng
Trn th c ti n, lin k t t ng trng (hay symlink ) c s d ng th ng xuyn hn lin k t c ng. Lin k t t ng trng l lo i m t t p tin c bi t, m lin k t ch t i t p tin khc b ng, tn ch khng tr c ti p t i inode. Lin k t t ng trng khng ngn ng a m t t p tin tr c s xa b ; n u t p tin ch bi n m t, th lin k t t ng trng s khng c gi tr s d ng, ho c b h ng.
4.4
Lin k t t ng trng c th t o b ng cch a ty ch n -s t i ln. $ ln -s lienkethai lienketba $ ls -l lienketdau lienkethai lienketba lrwxrwxrwx 1 teppi82 thang 10 2004-09-02 23:04 lienketba -> lienkethai -rw-rr 2 teppi82 thang 0 2004-09-02 19:19 lienketdau -rw-rr 2 teppi82 thang 0 2004-09-02 19:19 lienkethai Trong k t qu c a ls -l, c th phn bi t lin k t t ng trng v i cc t p tin bnh th ng b ng 3 cch. Th nh t, c t u tin ch a k t l bo hi u lin k t t ng trng. Th hai, kch th c c a lin k t t ng trng l s k t c a ch (lienkethai, trong tr ng h p ny). Th ba, c t cu i cng hi n th tn t p tin ch c d u mi tn -> i tr c.
4.5
Su hn v lin k t t ng trng, ph n 1
Lin k t t ng trng ni chung linh ho t hn lin k t c ng. B n c th t o lin k t t ng trng t i b t k lo i v t th no c a h th ng t p tin, bao g m th m c. V b i v lin k t t ng trng th c thi trn c s ng d n (khng ph i inode), c th t o m t cch hon h o lin k t t ng trng m ch n v t th trn m t h th ng t p tin v t l khc. Tuy nhin, th c t ny lm cho vi c hi u lin k t t ng trng thm ph c t p.
23
4.6
Su hn v lin k t t ng trng, ph n 2
Xem xt tr ng h p khi chng ta mu n t o m t lin k t trong /tmp m ch n /usr/local/bin. Chng ta c n g nh sau: $ ln -s /usr/local/bin bin1 $ ls -l bin1 lrwxrwxrwx 1 teppi82 thang Hay m t cch tng ng: $ ln -s ../usr/local/bin bin2 $ ls -l bin2 lrwxrwxrwx 1 teppi82 thang 16 2004-09-02 23:05 bin2 -> ../usr/local/bin
4.7
Su hn v lin k t t ng trng, ph n 3
Nh b n c th th y, c hai lin k t t ng trng cng ch t i m t th m c. Tuy nhin, n u lin k t t ng trng th hai c a chng ta b chuy n t i th m c khc, n s b "v " v ng d n tng i: $ mkdir thumucmoi $ mv bin2 thumucmoi $ cd thumucmoi $ cd bin2 bash: cd: bin2: No such file or director V th m c /tmp/usr/local/bin khng t n t i, chng ta khng th chuy n t i th m c bin2; ni cch khc, bin2 b v .
4.8
Su hn v lin k t t ng trng, ph n 4
V l do ny, i lc trnh vi c t o lin k t t ng trng v i ng d n tng i l m t ki n hay. Tuy nhin, c nhi u tr ng h p lin k t t ng trng v i ng d n tng i l i thu n ti n. Xem xt m t v d khi b n mu n t o tn th hai tng ng cho m t chng trnh trong /usr/bin: # ls -l /usr/bin/unicode_start -rwxr-xr-x 1 root root 1061 2004-04-22 22:30 /usr/bin/unicode_start
24
4.9
Su hn v lin k t t ng trng, ph n 5
N u l ng i s d ng "root", c th b n mu n t o m t tn tng ng cho "unicode_start", v d nh "u_s". Trong v d ny, chng ta c quy n root, b ng ch ng l d u nh c bash thay i thnh "#". Chng ta c n quy n root v ng i dng bnh th ng khng th t o t p tin trong /usr/bin/. L root, chng ta c th t o m t tn tng ng cho unicode_start nh sau: # cd /usr/bin # ln -s /usr/bin/unicode_start u_s # ls -l unicode_start -rwxr-xr-x 1 root root 1061 2004-04-22 22:30 unicode_start # ls -l u_s lrwxrwxrwx 1 root root 22 2004-09-02 23:14 u_s -> /usr/bin/unicode_start Trong v d ny, chng ta t o ra lin k t t ng trng u_s ch t i t p tin /usr/bin/unicode_start.
4.10
Su hn v lin k t t ng trng, ph n 6
Trong khi gi i php ny lm vi c, n s t o ra v n n u chng ta quy t nh chuy n c hai t p /usr/bin/unicode_start v /usr/bin/u_s t i /usr/local/bin: # mv /usr/bin/unicode_start /usr/bin/u_s /usr/local/bin # ls -l /usr/local/bin/unicode_start -rwxr-xr-x 1 root root 1061 2004-04-22 22:30 /usr/local/bin/unicode_start # ls -l /usr/local/bin/u_s lrwxrwxrwx 1 root root 22 2004-09-02 23:14 /usr/local/bin/u_s -> /usr/bin/unicode_start V chng ta s d ng ng d n tuy t i trong lin k t t ng trng, u_s v n cn ch t i /usr/bin/unicode_start, ci khng cn t n t i n a v /usr/bin/unicode_start b di chuy n t i /usr/local/bin. C ngha l by gi u_s l m t lin k t b v . C ng d n tuy t i v ng d n tng i trong lin k t t ng trng u c gi tr ring c a mnh, v b n nn s d ng m t lo i ng d n thch h p v i nhu c u c a
4.11. RM
25
b n. Th ng th c ng d n tng i v ng d n tuy t i s lm vi c t t. V d sau s lm vi c th m ch sau khi c hai t p tin b di chuy n: # cd /usr/bin # ln -s unicode_start u_s # ls -l u_s lrwxrwxrwx 1 root root 13 2004-09-02 23:27 u_s -> unicode_start # mv unicode_start u_s /usr/local/bin # ls -l /usr/local/bin/unicode_start -rwxr-xr-x 1 root staff 1061 2004-09-02 23:29 /usr/local/bin/unicode_start # ls -l /usr/local/u_s lrwxrwxrwx 1 root root 13 2004-09-02 23:27 /usr/local/bin/u_s -> unicode_start By gi , chng ta c th ch y chng trnh unicode_start b ng cch g /usr/local/bin/u_s. /usr/local/bin/u_s ch t i chng trnh unicode_start trong cng th m c v i u_s.
4.11
rm
By gi , khi bi t cch s d ng cp, mv, v ln, l th i gian h c cch xa v t th kh i h th ng t p tin. Thng th ng, i u ny c th c hi n v i cu l nh rm. xa t p tin n gi n l ch r chng trn dng l nh: $ cd /tmp $ touch tep1 tep2 $ ls -l tep1 tep2 -rw-rr 1 teppi82 thang 0 2004-09-04 17:53 tep1 -rw-rr 1 teppi82 thang 0 2004-09-04 17:53 tep2 $ rm tep1 tep2 $ ls -l tep1 tep2 ls: tep1: No such file or directory ls: tep2: No such file or directory Ch r ng d i Linux, m t khi t p tin b xo (is rmd), n "ra i" mi mi. V l do ny, nhi u nh qu n tr m i vo ngh s s d ng ty ch n -i khi xa t p tin. Ty ch n -i ni rm xa t t c t p tin trong ch "h i tho i" (interactive) l, h i nh c tr c khi xa b t k t p tin no. V d :
26
$ rm -i tep1 tep2 rm: remove regular empty file tep1? y rm: remove regular empty file tep2? y Trong v d trn, cu l nh rm nh c c "th c s " xa t p tin ch r hay khng. xa chng, ti c n g "y" v Enter l n hai. N u ti g "n", t p tin s khng b xa. Ho c, n u ti thao tc sai, ti c th g Control-C h y b ton b l nh rm -i nh ng g lm c th gy thi t h i l n cho h i u hnh c a ti. N u b n v n s d ng cu l nh rm, r t c ch n u b n s d ng trnh so n th o a thch thm dng sau vo t p tin /.bashrc c a b n, v sau ng xu t v ng nh p l i. Sau , m i khi b n g rm, v bash s t ng bi n i n thnh cu l nh rm -i. Theo , rm s lun lun lm vi c trong ch h i nh c: alias rm="rm -i"
4.12
rmdir
xa th m c, b n c hai l a ch n. B n c th xa t t c cc v t th bn trong th m c v s d ng rmdir xa b n thn th m c : $ $ $ $ mkdir thumuccuatoi touch thumuccuatoi/tep1 rm thumuccuatoi/tep1 rmdir thumuccuatoi
Phng php ny th ng m ch l cch "xa th m c cho tr cn b s a". T t c nh ng ng i dng v qu n tr c nng l c dng cu l nh thu n ti n hn nhi u l rm -rf, ni n ngay sau.
4.13
rm v th m c
27
Chng 5 S d ng cc k t
5.1
i di n (wildcard)
Gi i thi u v k t i di n
Khi s d ng Linux t ngy ny qua ngy khc, c nhi u l n b n mu n th c hi n m t thao tc n (v d rm) trn nhi u v t th h th ng t p tin cng m t lc. Trong nh ng tr ng h p ny, g nhi u t p tin trn m t dng l nh thng th ng gy v ng: $ rm tep1 tep2 tep3 tep4 tep5 tep6 tep7 tep8
5.2
Gi i thi u v k t i di n, ti p theo
gi i quy t v n ny, b n c th l i d ng s h tr k t i di n g n li n v i Linux. S h tr ny, cn g i l "globbing" (v l do l ch s ), cho php b n ch r nhi u t p tin m t lc, s d ng m t m u i di n (wildcard pattern). Bash v cc cu l nh Linux khc s bin d ch m u ny, xem v tm trn a t t c cc t p tin tng ng n. V th , n u b n c cc t p tin t tep1 t i tep8 trong th m c hi n th i, b n c th xa nh ng t p ny, g: $ rm tep[1-8] Ho c n u b n ch mu n n gi n l xa t t c cc t p tin m b t u b ng tep cng nh t p tin no c tn tep, b n c th g: $ rm tep* 28
NG
29
K t i di n * tng ng b t k k t hay chu i k t no, ho c th m th "khng c k t ". T t nhin, c th s d ng i di n "ton c u" (glob wildcards) xa t p tin m t cch n gi n hn, nh chng ta s th y trong b ng ti p theo.
5.3
Hi u v khng tng ng
N u b n mu n li t k t t c v t th h th ng t p tin trong /etc b t u b ng g cng nh m i t p tin c tn l g, b n c n g: $ ls -d /etc/g* /etc/gaim /etc/gnome /etc/group- /etc/gtk /etc/gateways /etc/gnome-vfs-2.0 /etc/group.org /etc/gtk-2.0 /etc/gconf /etc/gnome-vfs-mime-magic /etc/gs-gpl /etc/gdm /etc/groff /etc/gshadow /etc/gimp /etc/group /etc/gshadowBy gi , ci g s x y ra n u b n ch r m t m u m khng tng ng b t k v t th no? Trong v d sau, chng ta th li t k t t c cc t p tin trong /usr/bin b t u b ng asdf v k t thc b ng jkl,, g m c t p tin c th c l asdfjkl : $ ls -d /usr/bin/asdf*jkl ls: /usr/bin/asdf*jkl: No such file or directory
5.4
l ci x y ra. Th ng th, khi chng ta ch r m t m u, m u tng ng m t hay nhi u t p trn h th ng t p tin, v bash thay th m u v i m t danh sch cc v t th tng ng, cch nhau b i kho ng tr ng. Tuy nhin, khi m u khng a ra m t ci no ph h p bash y nguyn i s , i di n, v t t c . V th , khi ls khng th tm th y t p tin /usr/bin/asdf*jkl th n a ra thng bo l i. Lu t l thao tc y l m u ton c u ch khai tri n ra n u chng tng ng v t th trong h th ng t p tin. N u khng th chng l i y nh th v c a nguyn vn1 t i chng trnh chng ta ang g i.
1
30
CHNG 5. S
D NG CC K T
I DI N (WILDCARD)
5.5
C php i di n: *
By gi , khi th y s ton c u (globbing) lm vi c nh th no, chng ta c n xem c php i di n. B n c th s d ng cc k t c bi t cho s m r ng: * s tng ng khng ho c nhi u k t . N c ngha "b t k th g c th vo y, g m c khng c g". V d : /etc/g* tng ng t t c t p tin trong /etc m b t u b ng g, ho c m t t p tin c tn g. /tmp/my*l tng ng t t c t p tin trong /tmp m b t u b ng my v k t thc b ng l, bao g m c t p tin myl
5.6
C php i di n: ?
? ph h p b t k k t n no. V d : myfile? tng ng b t k t p tin no m tn c a n ch a myfile theo sau l m t k t n2 . /tmp/note?txt tng ng c /tmp/notes.txt v emph/tmp/notes_txt, n u chng t n t i.
5.7
C php i di n: []
i di n ny gi ng m t ?, nhng n c trng hn. s d ng i di n ny, t b t k k t no b n mu n tm tng ng vo trong []. Bi u th c thu c s tm s tng ng v i m i k t . B n c th s d ng - ch r m t dy, v th m ch lin h p cc dy. V d : myfile[12] s tng ng myfile1 v myfile2. i di n s c khai tri n n u t nh t m t trong nh ng t p tin ny t n t i trong th m c hi n th i.
2
Nh b n c th th y, s d ng i di n d u ngo c vung h u ch cho vi c t o nh ng s tng ng khc nhau: ls /etc/[0-9]* s li t k t t c cc t p tin trong /etc b t u b ng m t ch s . ls /tmp/[A-Za-z]* s li t k t t c cc t p tin trong /tmp b t u b ng m t ch ci hoa hay ch ci th ng.
5.8
C php i di n: [!]
C u trc [!] gi ng v i c u trc [!], khng k r ng n s tng ng b t k k t no, m khng c li t k gi a [! v ]. V d : rm myfile[!9] s xa t t c cc t p tin c tn myfile c ng v i m t k t n, ngo i tr myfile9.
5.9
o su v i di n
y l m t s s o su c n khi s d ng i di n. V bash " i x " cc k t i di n (?, [, ], v * ) m t cch c bi t, b n c n c bi t c n th n khi g trong i s t i m t cu l nh nh ng k t ny. V d , n u b n mu n t o m t t p tin ch a dng [fo]*, cu l nh sau c th khng lm ci b n mu n: $ echo [fo]* > /tmp/teptinmoi.txt V m u [fo]* tng ng v i t p tin no trong th m c hi n th i, nn b n s tm th y tn c a chng trong /tmp/teptinmoi.txt hn l dng [fo]* nh b n mong i. Gi i php? M t cch b t u gi i quy t l a cc k t vo d u ngo c n, chng (d u ngo c) ni bash khng th c hi n s khai tri n i di n: $ echo [fo]* > /tmp/teptinmoi.txt
32
CHNG 5. S
D NG CC K T
I DI N (WILDCARD)
5.10
o su v i di n, ti p theo
S d ng cch ny, t p tin m i c a b n s ch a dng ch [fo]* nh mong i. M t cch tng t , b n c th s d ng k t thot (escape) g ch ng c ni bash coi [, ], v * l ch ch khng ph i k t i di n: $ echo \[fo\]\* > /tmp/teptinmoi.txt C hai cch gi i quy t (ngo c n v k t thot g ch ng c) c cng tc d ng. Nguyn chng ta ang ni v g ch ng c, gi l th i i m t t ni r ng, ch r m t \ bnh th ng, b n c th ho c a n vo ngo c n, ho c g \\ (n s khai tri n thnh \).
5.11
Ch r ng ngo c kp s lm vi c tng t nh ngo c n, nhng s v n cho php bash th c hi n m t s khai tri n gi i h n. B i v y, ngo c n l t t nh t khi b n th c s mu n a nguyn vn d ng ch t i m t cu l nh. thm thng tin v s khai tri n i di n g man 7 glob. Xem thm thng tin v trch d n (quote), b ng ngo c, g man 8 glob v c ph n QUOTING. N u b n c d nh tr k thi LPI, coi nh y l bi t p v nh :)
Chng 6 T ng k t v cc ngu n b tr
6.1 T ng k t
Xin chc m ng: b n t i i m cu i cu n n t p l i c s Linux c a chng ti! Ti hy v ng n gip b n n m ch c ki n th c Linux c b n. Nh ng ch b n h c y, bao g m c s v bash, nh ng cu l nh Linux c b n, lin k t, v i di n, t n n mng cho cu n h ng d n ti p theo, qu n tr c s , trong chng ti s a cc ch nh bi u th c chnh quy (regular expression), quy n s h u, v quy n h n, qu n l ti kho n ng i dng, v nhi u n a. Ti p t c theo h ng d n nhi u t p ny, b n s s m chu n b t t i ch ng ch LPIC b c 1 t Linux Professional Institute. c p n ch ng ch LPIC, n u y l ci b n quan tm, th chng ti khuyn b n h c cc ngu n b tr trong b ng ngay sau, c l a ch n c n th n b sung thm cho nguyn li u trong cu n h ng d n ny.
6.2
Cc ngu n b tr
Trong bi bo nhi u k "Bash qua v d " ("Bash by example") trn developerWorks, Daniel ch b n cch s d ng c u trc l p trnh bash vi t script c a mnh. Chu i ny (Ph n 1 v 2 ni ring) l s chu n b t t cho k thi LPIC b c 1: Bash qua v d , Ph n 1: L p trnh c s trong v Bourne-again shell 33
34
CHNG 6. T NG K T V CC NGU N B Bash qua v d , Ph n 2: L p trnh bash c s nng cao Bash qua v d , Ph n 3: Khm ph h th ng ebuild
TR
N u b n l ng i dng Linux m i hay trung bnh, b n th t s khng th khng xem Nh ng cu h i chuyn mn th ng t cho ng i dng Linux (Technical FAQ for Linux users), danh sch 50 trang i su v nh ng cu h i Linux th ng t, v i cc cu tr l i chi ti t. B n thn FAQ ny d ng PDF (Acrobat). N u b n khng quen thu c l m v i trnh so n th o vi, hy xem cu n h ng d n vi v lng (Intro to vi). Cu n h ng d n ny kha m u c p t c v trnh so n th o m nh ny. Coi nh y l ti li u ph i c thm n u b n khng bi t cch s d ng vi.
6.3
ki n t pha b n
Xin hy cho chng ti bi t cu n h ng d n ny c gip ch cho b n khng v chng ti c th lm n t t hn nh th no. ng th i, chng ti cng mu n nghe v nh ng ch khc m b n c th mu n xem trong h ng d n c a developerWorks h i v n i dung c a cu n h ng d n ny, lin h tc gi , Daniel Robbins, t i drobbins@gentoo.org.
6.4
L i ghi cu i sch
Cu n h ng d n ny c vi t hon ton trn XML, s d ng chng trnh t o sch h ng d n Toot-O-Matic c a developerWorks1 . Cng c m ngu n m Toot-O-Matic m t XSLT stylesheet v vi ch c nng XSLT m r ng bi n i t p XML thnh cc trang HTML, m t t p zip, nh tiu JPEG v hai t p PDF. Kh nng xu t ra c d ng vn b n v d ng nh nguyn t m t t p ngu n n cho th y kh nng v s linh ho t c a XML. (XML ng th i ti t ki m r t nhi u th i gian v s c l c c a nhm chng ti).
ch thch c a ng i d ch: b n d ch c vi t trn m TEX s d ng trnh so n th o gedit
1
35
B n c th l y m ngu n c a cng c Toot-O-Matic t i http://www6.software.ibm.com/dl/devworks/dw-tootomatic-p/ . Cu n h ng d n Xy d ng h ng d n v i Toot-O-Matic (Bulding tutorials with the TootO-Matic) cho th y cch s d ng Toot-O-Matic t o h ng d n c a chnh b n. developerWorks cn lm ch m t di n n dnh cho Toot-O-Matic, t i a ch : http://www-105.ibm.com/developerworks/xml_df.nsf/AllViewTemp late?OpenForm&RestrictToCategory=11. Chng ti r t mu n bi t b n ngh g v cng c ny.