Lịch sử và các bản phân phối HĐH Linux từ trước đến nay phần 6 pdf

6 346 0
Lịch sử và các bản phân phối HĐH Linux từ trước đến nay phần 6 pdf

Đang tải... (xem toàn văn)

Thông tin tài liệu

3.5 Chuye ˆ ’ n hu ’ o ´ ’ ng d ¯ a ˆ ` u vào/d ¯ a ˆ ` u ra, d ¯ u ’ o ` ’ ng o ˆ ´ ng và d ¯ a ˆ ` u lo ˙ c 33 Trong d ¯ ó, N và M - so ˆ ´ cu ’ a kênh tiêu chua ˆ ’ n (0, 1, và 2) hoa ˘ ˙ c tên ta ˆ ˙ p tin. Trong mo ˆ ˙ t vài tru ’ o ` ’ ng ho ˙ ’ p có su ’ ’ du ˙ ng các ký hie ˆ ˙ u <, > và >> mà không chı ’ ra so ˆ ´ kênh hay tên ta ˆ ˙ p tin, vì vào cho ˆ ˜ còn thie ˆ ´ u se ˜ d ¯ a ˘ ˙ t, theo ma ˘ ˙ c d ¯ i ˙ nh, 1 ne ˆ ´ u dùng >, tu ´ ’ c là d ¯ a ˆ ` u ra tiêu chua ˆ ’ n, hoa ˘ ˙ c 0 ne ˆ ´ u dùng <, tu ´ ’ c là d ¯ a ˆ ` u vào tiêu chua ˆ ’ n. Nhu ’ the ˆ ´ , khi không có so ˆ ´ nào chı ’ ra, > se ˜ d ¯ u ’ o ˙ ’ c biên di ˙ ch là 1 >, còn < se ˜ d ¯ u ’ o ˙ ’ c biên di ˙ ch là 0 <. Ngoài vie ˆ ˙ c chuye ˆ ’ n hu ’ o ´ ’ ng các kênh tiêu chua ˆ ’ n d ¯ o ’ n gia ’ n nhu ’ va ˆ ˙ y, còn có kha ’ na ˘ ng không nhu ˜ ’ ng chuye ˆ ’ n hu ’ o ´ ’ ng du ˜ ’ lie ˆ ˙ u vào kênh này hay kênh khác, mà còn sao chép no ˆ ˙ i dung cu ’ a các kênh tiêu chua ˆ ’ n d ¯ ó. Ký hie ˆ ˙ u & dùng d ¯ e ˆ ’ thu ˙ ’ c hie ˆ ˙ n d ¯ ie ˆ ` u này, khi d ¯ a ˘ ˙ t nó (&) tru ’ o ´ ’ c so ˆ ´ cu ’ a kênh se ˜ chuye ˆ ’ n du ˜ ’ lie ˆ ˙ u d ¯ e ˆ ´ n: command N > &M Le ˆ ˙ nh này có nghı ˜ a là, d ¯ a ˆ ` u ra cu ’ a kênh vo ´ ’ i so ˆ ´ N d ¯ u ’ o ˙ ’ c gu ’ ’ i d ¯ e ˆ ´ n ca ’ d ¯ a ˆ ` u ra tiêu chua ˆ ’ n, và sao chép to ´ ’ i kênh có so ˆ ´ M. Ví du ˙ , d ¯ e ˆ ’ sao chép thông báo lo ˆ ˜ i vào d ¯ a ˆ ` u ra tiêu chua ˆ ’ n, ca ˆ ` n dùng le ˆ ˙ nh 2>&1, còn 1>&2 sao chép stdout vào stderr. Kha ’ na ˘ ng này d ¯ a ˘ ˙ c bie ˆ ˙ t có ích khi muo ˆ ´ n ghi d ¯ a ˆ ` u ra vào ta ˆ ˙ p tin, vì khi d ¯ ó chúng ta vu ` ’ a có the ˆ ’ nhìn tha ˆ ´ y thông báo trên màn hình, vu ` ’ a ghi chúng vào ta ˆ ˙ p tin. Ví du ˙ , tru ’ o ` ’ ng ho ˙ ’ p sau thu ’ o ` ’ ng d ¯ u ’ o ˙ ’ c u ´ ’ ng du ˙ ng trong các script cha ˙ y khi kho ’ ’ i d ¯ o ˆ ˙ ng Linux: kênh giao tác teppi82@teppi:~$ cat hiho > /dev/null cat: hiho: No such file or directory teppi82@teppi:~$ cat hiho > /dev/null 2>&1 3.5.2 Su ’ ’ du ˙ ng | Mo ˆ ˙ t tru ’ o ` ’ ng ho ˙ ’ p d ¯ a ˘ ˙ c bie ˆ ˙ t cu ’ a chuye ˆ ’ n hu ’ o ´ ’ ng d ¯ a ˆ ` u ra là su ˙ ’ to ˆ ’ chu ´ ’ c các d ¯ u ’ o ` ’ ng o ˆ ´ ng (ha y còn có the ˆ ’ go ˙ i là kênh giu ˜ ’ a các chu ’ o ’ ng trình, hoa ˘ ˙ c ba ˘ ng chuye ˆ ` n). Hai hay vài câu le ˆ ˙ nh, mà d ¯ a ˆ ` u ra cu ’ a le ˆ ˙ nh tru ’ o ´ ’ c dùng làm d ¯ a ˆ ` u vào cho le ˆ ˙ nh sau, liên ke ˆ ´ t vo ´ ’ i nhau (có the ˆ ’ nói phân cách nhau, ne ˆ ´ u muo ˆ ´ n) bo ’ ’ i ký hie ˆ ˙ u ga ˙ ch tha ˘ ’ ng d ¯ u ´ ’ ng - "|". Khi này d ¯ a ˆ ` u ra tiêu chua ˆ ’ n cu ’ a le ˆ ˙ nh d ¯ u ´ ’ ng bên trái so vo ´ ’ i | du ’ o ˙ ’ c chuye ˆ ’ n d ¯ e ˆ ´ n d ¯ a ˆ ` u vào tiêu chua ˆ ’ n cu ’ a chu ’ o ’ ng trình, du ´ ’ ng bên pha ’ i so vo ´ ’ i |. Ví du ˙ : kênh giao tác maikhai@fpt:/sw$ cat ls.txt | grep knoppix | wc -l Dòng này có nghı ˜ a là ke ˆ ´ t qua ’ cu ’ a le ˆ ˙ nh cat, tu ´ ’ c là no ˆ ˙ i dung ta ˆ ˙ p tin ls.txt, se ˜ d ¯ u ’ o ˙ ’ c chuye ˆ ’ n d ¯ e ˆ ´ n d ¯ a ˆ ` u vào cu ’ a le ˆ ˙ nh grep, le ˆ ˙ nh này se ˜ phân chia no ˆ ˙ i dung nói trên và chı ’ la ˆ ´ y ra nhu ˜ ’ ng dòng nào có chu ´ ’ a tu ` ’ knoppix. D ¯ e ˆ ´ n lu ’ o ˙ ’ t mình, ke ˆ ´ t qu ’ a cu ’ a le ˆ ˙ nh grep d ¯ u ’ o ˙ ’ c chuye ˆ ’ n to ´ ’ i d ¯ a ˆ ` u vào cu ’ a le ˆ ˙ nh wc -l, mà tính so ˆ ´ nhu ˜ ’ ng dòng thu d ¯ u ’ o ˙ ’ c. D ¯ u ’ o ` ’ ng o ˆ ´ ng su ’ ’ du ˙ ng d ¯ e ˆ ’ ke ˆ ´ t ho ˙ ’ p vài chu ’ o ’ ng trình nho ’ la ˙ i vo ´ ’ i nhau (mo ˆ ˜ i chu ’ o ’ ng trình thu ˙ ’ c hie ˆ ˙ n mo ˆ ˙ t bie ˆ ´ n d ¯ o ˆ ’ i xác d ¯ i ˙ nh nào d ¯ ó trên d ¯ a ˆ ` u vào) ta ˙ o thành mo ˆ ˙ t le ˆ ˙ nh to ˆ ’ ng quát, mà ke ˆ ´ t qua ’ cu ’ a nó se ˜ là mo ˆ ˙ t bie ˆ ´ n d ¯ o ˆ ’ i phu ´ ’ c ta ˙ p. Ca ˆ ` n chú ý ra ˘ ` ng, he ˆ ˙ vo ’ go ˙ i và thu ˙ ’ c hie ˆ ˙ n ta ˆ ´ t ca ’ các câu le ˆ ˙ nh có trong d ¯ u ’ o ` ’ ng o ˆ ´ ng cùng mo ˆ ˙ t lúc, cha ˙ y mo ˆ ˜ i le ˆ ˙ nh d ¯ ó trong mo ˆ ˙ t ba ’ n sao he ˆ ˙ vo ’ riêng. Vì the ˆ ´ ngay khi chu ’ o ’ ng trình thu ´ ’ nha ˆ ´ t ba ˘ ´ t d ¯ a ˆ ` u d ¯ u ’ a ke ˆ ´ t qua ’ o ’ ’ d ¯ a ˆ ` u ra, chu ’ o ’ ng trình tie ˆ ´ p theo ba ˘ ´ t d ¯ a ˆ ` u xu ’ ’ lý ke ˆ ´ t qua ’ này. Cu ˜ ng y nhu ’ va ˆ ˙ y, các le ˆ ˙ nh tie ˆ ´ p theo thu ˙ ’ c hie ˆ ˙ n các công vie ˆ ˙ c cu ’ a mình: cho ` ’ du ˜ ’ lie ˆ ˙ u tu ` ’ le ˆ ˙ nh tru ’ o ´ ’ c và d ¯ u ’ a ke ˆ ´ t qua ’ cho le ˆ ˙ nh tie ˆ ´ p theo, gio ˆ ´ ng nhu ’ mo ˆ ˙ t dây chuye ˆ ` n sa ’ n xua ˆ ´ t. Ne ˆ ´ u nhu ’ muo ˆ ´ n mo ˆ ˙ t le ˆ ˙ nh nào d ¯ ó ke ˆ ´ t thúc hoàn toàn, tru ’ o ´ ’ c khi thu ˙ ’ c hie ˆ ˙ n le ˆ ˙ nh tie ˆ ´ p theo, ba ˙ n có the ˆ ’ su ’ e ’ du ˙ ng trên mo ˆ ˙ t dòng ca ’ ký hie ˆ ˙ u dây chuye ˆ ` n |, cu ˜ ng nhu ’ da ˆ ´ u cha ˆ ´ p pha ˆ ’ y ;. Tru ’ o ´ ’ c mo ˆ ˜ i da ˆ ´ u cha ˆ ´ m pha ˆ ’ y, he ˆ ˙ vo ’ se ˜ du ` ’ ng la ˙ i và cho ` ’ cho d ¯ e ˆ ´ n khi thu ˙ ’ c hie ˆ ˙ n xong ta ˆ ´ t ca ’ các câu le ˆ ˙ nh tru ’ o ´ ’ c cu ’ a d ¯ u ’ o ` ’ ng o ˆ ´ ng. Tra ˙ ng thái thoát ra (giá 34 Bash tri ˙ lôgíc, mà d ¯ u ’ o ˙ ’ c tra ’ la ˙ i sau khi thu ˙ ’ c hie ˆ ˙ n xong chu ’ o ’ ng trình) cu ’ a mo ˆ ˙ t d ¯ u ’ o ` ’ ng o ˆ ´ ng se ˜ trùng vo ´ ’ i tra ˙ ng thái thoát ra cu ’ a câu le ˆ ˙ nh sau cùng trong d ¯ u ’ o ` ’ ng o ˆ ´ ng. O ’ ’ tru ’ o ´ ’ c câu le ˆ ˙ nh d ¯ a ˆ ` u tiên cu ’ a d ¯ u ’ o ` ’ ng o ˆ ´ ng có the ˆ ’ d ¯ a ˘ ˙ t ký hie ˆ ˙ u "!", khi d ¯ ó tra ˙ ng thái thoát ra cu ’ a d ¯ u ’ o ` ’ ng o ˆ ´ ng se ˜ là phu ’ d ¯ i ˙ nh lôgíc cu ’ a tra ˙ ng thát thoát ra cu ’ a le ˆ ˙ nh cuo ˆ ´ i cùng trong d ¯ u ’ o ` ’ ng o ˆ ´ ng. Tu ´ ’ c là ne ˆ ´ u tra ˙ ng thái thoát ra cu ’ a le ˆ ˙ nh cuo ˆ ´ i cùng ba ˘ ` ng 0 thì tra ˙ ng thái thoát ra cu ’ a d ¯ u ’ o ` ’ ng o ˆ ´ ng se ˜ ba ˘ ` ng 1 và ngu ’ o ˙ ’ c la ˙ i. He ˆ ˙ vo ’ cho ` ’ cho ta ˆ ´ t ca ’ các câu le ˆ ˙ nh ke ˆ ´ t thúc ro ˆ ` i mo ´ ’ i xác d ¯ i ˙ nh và d ¯ u ’ a ra giá tri ˙ này. 3.5.3 D ¯ a ˆ ` u lo ˙ c Ví du ˙ cuo ˆ ´ i cùng o ’ ’ trên (ví du ˙ vo ´ ’ i câu le ˆ ˙ nh grep) có the ˆ ’ dùng d ¯ e ˆ ’ minh ho ˙ a cho mo ˆ ˙ t khái nie ˆ ˙ m qua tro ˙ ng khác, d ¯ ó là, d ¯ a ˆ ` u lo ˙ c chu ’ o ’ ng trình. D ¯ a ˆ ` u lo ˙ c - d ¯ ó là le ˆ ˙ nh (hay chu ’ o ’ ng trình), mà tie ˆ ´ p nha ˆ ˙ n du ˜ ’ lie ˆ ˙ u vào, thu ˙ ’ c hie ˆ ˙ n mo ˆ ˙ t vài bie ˆ ´ n d ¯ o ˆ ’ i trên du ˜ ’ lie ˆ ˙ u này và d ¯ u ’ a ra ke ˆ ´ t qua ’ o ’ ’ d ¯ a ˆ ` u ra tiêu chua ˆ ’ n (tu ` ’ d ¯ ây còn có the ˆ ’ chuye ˆ ’ n d ¯ e ˆ ´ n no ’ i nào d ¯ ó theo ý muo ˆ ´ n cu ’ a ngu ’ o ` ’ i dùng). Các câu le ˆ ˙ nh - d ¯ a ˆ ` u lo ˙ c bao go ˆ ` m các le ˆ ˙ nh d ¯ ã nói d ¯ e ˆ ´ n o ’ ’ trên cat, more, less, wc, cmp, diff, và ca ’ nhu ˜ ’ ng câu le ˆ ˙ nh có trong ba ’ ng 3.1 Ba ’ ng 3.1: Các câu le ˆ ˙ nh d ¯ a ˆ ` u lo ˙ c Le ˆ ˙ nh Mô ta ’ nga ˘ ´ n go ˙ n grep, fgrep, egrep Tìm trong ta ˆ ˙ p tin hay du ˜ ’ lie ˆ ˙ u d ¯ a ˆ ` u vào các dòng có chu ´ ’ a ma ˆ ˜ u va ˘ n ba ’ n d ¯ u ’ o ˙ ’ c chı ’ ra và d ¯ u ’ a các dòng này to ´ ’ i d ¯ a ˆ ` u ra tiêu chua ˆ ’ n tr Trong du ˜ ’ lie ˆ ˙ u d ¯ a ˆ ` u vào thay the ˆ ´ các ký tu ˙ ’ o ’ ’ ô thu ´ ’ nha ˆ ´ t bo ’ ’ i các ký tu ˙ ’ tu ’ o ’ ng u ´ ’ ng o ’ ’ ô thu ´ ’ hai. Hãy thu ’ ’ gõ le ˆ ˙ nh tr abc ABC ro ˆ ` i gõ vài dòng chu ´ ’ a các ký tu ˙ ’ abc! comm So sánh hai ta ˆ ˙ p tin theo tu ` ’ ng dòng mo ˆ ˙ t và d ¯ u ’ a vào d ¯ a ˆ ` u ra tiêu chua ˆ ’ n 3 co ˆ ˙ t : mo ˆ ˙ t - nhu ˜ ’ ng dòng chı ’ ga ˘ ˙ p o ’ ’ ta ˆ ˙ p tin thu ´ ’ nha ˆ ´ t, hai - nhu ˜ ’ ng dòng chı ’ ga ˘ ˙ p o ’ ’ ta ˆ ˙ p tin thu ´ ’ hai, và ba - nhu ˜ ’ ng dòng có trong ca ’ hai ta ˆ ˙ p tin. pr D ¯ i ˙ nh da ˙ ng ta ˆ ˙ p tin hay no ˆ ˙ i dung cu ’ a d ¯ a ˆ ` u tiêu chua ˆ ’ n d ¯ e ˆ ’ in a ˆ ´ n. sed Trình soa ˙ n tha ’ o ta ˆ ˙ p tin theo dòng, su ’ ’ du ˙ ng d ¯ e ˆ ’ thu ˙ ’ c hie ˆ ˙ n mo ˆ ˙ t vài bie ˆ ´ n d ¯ o ˆ ’ i trên du ˜ ’ lie ˆ ˙ u d ¯ a ˆ ` u vào (la ˆ ´ y tu ` ’ ta ˆ ˙ p tin hay d ¯ a ˆ ` u vào tiêu chua ˆ ’ n) Mo ˆ ˙ t d ¯ a ˆ ` u lo ˙ c d ¯ a ˘ ˙ c bie ˆ ˙ t, câu le ˆ ˙ nh tee, nhân d ¯ ôi du ˜ ’ lie ˆ ˙ u d ¯ a ˆ ` u vào, mo ˆ ˙ t ma ˘ ˙ t gu ’ ’ i du ˜ ’ lie ˆ ˙ u này d ¯ e ˆ ´ n d ¯ a ˆ ` u ra tiêu chua ˆ ’ n, ma ˘ ˙ t khác ghi nó (du ˜ ’ lie ˆ ˙ u) vào ta ˆ ˙ p tin (ngu ’ o ` ’ i dùng ca ˆ ` n d ¯ a ˘ ˙ t tên). De ˆ ˜ tha ˆ ´ y ra ˘ ` ng theo chu ´ ’ c na ˘ ng cu ’ a mình le ˆ ˙ nh tee tu ’ o ’ ng tu ˙ ’ nhu ’ nhóm ký tu ˙ ’ chuye ˆ ’ n hu ’ o ´ ’ ng 1>&file. Kha ’ na ˘ ng cu ’ a d ¯ a ˆ ` u lo ˙ c có the ˆ ’ mo ’ ’ ro ˆ ˙ ng vo ´ ’ i vie ˆ ˙ c su ’ ’ du ˙ ng các bie ˆ ’ u thu ´ ’ c chính quy (d ¯ ie ˆ ` u khie ˆ ’ n), cho phép, ví du ˙ , to ˆ ’ chu ´ ’ c tìm kie ˆ ´ m theo các ma ˆ ˜ u tìm kie ˆ ´ m tu ` ’ d ¯ o ’ n gia ’ n d ¯ e ˆ ´ n phu ´ ’ c ta ˙ p và ra ˆ ´ t phu ´ ’ c ta ˙ p. Ne ˆ ´ u muo ˆ ´ n, chúng ta có the ˆ ’ nói ra ˆ ´ t nhie ˆ ` u ve ˆ ` chuye ˆ ’ n hu ’ o ´ ’ ng và d ¯ a ˆ ` u lo ˙ c. Nhu ’ ng no ˆ ˙ i dung này có trong pha ˆ ` n lo ´ ’ n các cuo ˆ ´ n sách ve ˆ ` UNIX và Linux (xem pha ˆ ` n lo ` ’ i ke ˆ ´ t). Vì va ˆ ˙ y, chúng ta se ˜ du ` ’ ng o ’ ’ d ¯ ây và chuye ˆ ’ n sang mo ˆ ˙ t pha ˆ ` n khác, d ¯ u ’ o ˙ ’ c go ˙ i là "môi tru ’ o ` ’ ng và các bie ˆ ´ n môi tru ’ o ` ’ ng" ta ˙ o bo ’ ’ i he ˆ ˙ vo ’ . 3.6 Tham bie ˆ ´ n và các bie ˆ ´ n so ˆ ´ . Môi tru ’ o ` ’ ng cu ’ a he ˆ ˙ vo ’ Khái nie ˆ ˙ m tham bie ˆ ´ n trong he ˆ ˙ vo ’ bash tu ’ o ’ ng u ´ ’ ng vo ´ ’ i khái nie ˆ ˙ m bie ˆ ´ n so ˆ ´ trong các ngôn ngu ˜ ’ la ˆ ˙ p trình thông thu ’ o ` ’ ng. Tên go ˙ i (hay ID) cu ’ a tham bie ˆ ´ n có the ˆ ’ là mo ˆ ˙ t tu ` ’ bao go ˆ ` m các ký tu ˙ ’ ba ’ ng chu ˜ ’ cái, chu ˜ ’ so ˆ ´ , da ˆ ´ u ga ˙ ch du ’ o ´ ’ i (chı ’ ký tu ˙ ’ d ¯ a ˆ ` u tiên cu ’ a tu ` ’ này không d ¯ u ’ o ˙ ’ c là chu ˜ ’ so ˆ ´ ), và ca ’ nhu ˜ ’ ng ký tu ˙ ’ sau: , , #, , - (ga ˙ ch ngang), $,, 0, _ (ga ˙ ch du ’ o ´ ’ i). Chúng ta nói ra ˘ ` ng, tham bie ˆ ´ n 3.6 Tham bie ˆ ´ n và các bie ˆ ´ n so ˆ ´ . Môi tru ’ o ` ’ ng cu ’ a he ˆ ˙ vo ’ 35 d ¯ u ’ o ˙ ’ c xác d ¯ i ˙ nh hay d ¯ u ’ o ˙ ’ c d ¯ a ˘ ˙ t ra, ne ˆ ´ u ngu ’ o ` ’ i dùng ga ˘ ´ n cho nó mo ˆ ˙ t giá tri ˙ . Giá tri ˙ có the ˆ ’ là mo ˆ ˙ t dòng tro ˆ ´ ng ro ˆ ˜ ng. D ¯ e ˆ ’ nhìn tha ˆ ´ y giá tri ˙ cu ’ a tham bie ˆ ´ n, ngu ’ o ` ’ i ta su ’ ’ du ˙ ng ký tu ˙ ’ $ o ’ ’ tru ’ o ´ ’ c tên cu ’ a nó. Nhu ’ va ˆ ˙ y, le ˆ ˙ nh: kênh giao tác maikhai@fpt:/sm$ echo parameter hie ˆ ’ n thi ˙ tu ` ’ parameter, còn le ˆ ˙ nh kênh giao tác maikhai@fpt:/sm$ echo $parameter hie ˆ ’ n thi ˙ giá tri ˙ cu ’ a tham bie ˆ ´ n parameter (ta ˆ ´ t nhiên ne ˆ ´ u nhu ’ tham bie ˆ ´ n d ¯ ó du ’ o ˙ ’ c xác d ¯ i ˙ nh). 3.6.1 Các da ˙ ng tham bie ˆ ´ n khác nhau Tham bie ˆ ´ n chia thành ba da ˙ ng: tham bie ˆ ´ n vi ˙ trí, tham bie ˆ ´ n d ¯ a ˘ ˙ c bie ˆ ˙ t (các ký tu ˙ ’ d ¯ a ˘ ˙ c bie ˆ ˙ t d ¯ ã nói o ’ ’ trên chính là tên cu ’ a nhu ˜ ’ ng tham bie ˆ ´ n này) và các bie ˆ ´ n so ˆ ´ cu ’ a he ˆ ˙ vo ’ . Tên (ID) cu ’ a tham bie ˆ ´ n vi ˙ trí go ˆ ` m mo ˆ ˙ t hay vài chu ˜ ’ so ˆ ´ (nhu ’ ng không có tham bie ˆ ´ n vi ˙ trí 0). Giá tri ˙ cu ’ a tham bie ˆ ´ n vi ˙ trí là các tham so ˆ ´ cho le ˆ ˙ nh, d ¯ u ’ o ˙ ’ c d ¯ u ’ a ra khi cha ˙ y he ˆ ˙ vo ’ (tham so ˆ ´ d ¯ a ˆ ` u tiên là giá tri ˙ cu ’ a tham bie ˆ ´ n 1, tham so ˆ ´ thu ´ ’ hai - tham bie ˆ ´ n 2, v.v. . .). Có the ˆ ’ dùng câu le ˆ ˙ nh set d ¯ e ˆ ’ thay d ¯ o ˆ ’ i giá tri ˙ cu ’ a tham bie ˆ ´ n vi ˙ trí. Giá tri ˙ cu ’ a các tham bie ˆ ´ n này cu ˜ ng thay d ¯ o ˆ ’ i trong khi he ˆ ˙ vo ’ thu ˙ ’ c hie ˆ ˙ n mo ˆ ˙ t trong các hàm so ˆ ´ (chúng ta se ˜ xem xét va ˆ ´ n d ¯ e ˆ ` này o ’ ’ du ’ o ´ ’ i). Các tham bie ˆ ´ n d ¯ a ˘ ˙ c bie ˆ ˙ t không gì khác ho ’ n là các ma ˆ ˜ u, mà su ˙ ’ thay the ˆ ´ (phép the ˆ ´ , phép hoán d ¯ o ˆ ’ i) chúng d ¯ u ’ o ˙ ’ c thu ˙ ’ c hie ˆ ˙ n nhu ’ trong ba ’ ng 3.2: Các tham bie ˆ ´ n d ¯ a ˘ ˙ c bie ˆ ˙ t, d ¯ u ’ o ˙ ’ c lie ˆ ˙ t kê o ’ ’ ba ’ ng trên, có mo ˆ ˙ t d ¯ ie ˆ ’ m khác bie ˆ ˙ t d ¯ ó là chı ’ có the ˆ ’ "nha ˘ ´ c" d ¯ e ˆ ´ n chúng, không the ˆ ’ gán các giá tri ˙ cho các tham bie ˆ ´ n này. Bie ˆ ´ n môi tru ’ o ` ’ ng, nhìn tu ` ’ phía he ˆ ˙ vo ’ , d ¯ ó là các tham bie ˆ ´ n d ¯ u ’ o ˙ ’ c d ¯ a ˘ ˙ t tên. Giá tri ˙ cu ’ a bie ˆ ´ n môi tru ’ o ` ’ ng d ¯ u ’ o ˙ ’ c gán nho ` ’ thao tác có da ˙ ng sau: kênh giao tác [user]$ name=value Trong d ¯ ó, name - tên cu ’ a bie ˆ ´ n, còn value - giá tri ˙ muo ˆ ´ n gán cho bie ˆ ´ n (có the ˆ ’ là mo ˆ ˙ t dòng tro ˆ ´ ng). Tên cu ’ a bie ˆ ´ n môi tru ’ o ` ’ ng chı ’ có the ˆ ’ bao go ˆ ` m các chu ˜ ’ so ˆ ´ , chu ˜ ’ cái và không d ¯ u ’ o ˙ ’ c ba ˘ ´ t d ¯ a ˆ ` u bo ’ ’ i mo ˆ ˙ t chu ˜ ’ so ˆ ´ . (Tin ra ˘ ` ng sau khi d ¯ o ˙ c d ¯ oa ˙ n vie ˆ ´ t ve ˆ ` tham bie ˆ ´ n vi ˙ trí thì các ba ˙ n d ¯ ã hie ˆ ’ u ta ˙ i sao mo ˆ ˙ t bie ˆ ´ n môi tru ’ o ` ’ ng không the ˆ ’ ba ˘ ´ t d ¯ a ˆ ` u bo ’ ’ i mo ˆ ˙ t chu ˜ ’ so ˆ ´ .) Giá tri ˙ có the ˆ ’ là ba ˆ ´ t ky ` mo ˆ ˙ t dòng va ˘ n ba ’ n nào. Ne ˆ ´ u giá tri ˙ có chu ´ ’ a nhu ˜ ’ ng ký tu ˙ ’ d ¯ a ˘ ˙ c bie ˆ ˙ t, thì ca ˆ ` n d ¯ a ˘ ˙ t nó (giá tri ˙ ) vào da ˆ ´ u ngoa ˘ ˙ c. Giá tri ˙ ta ˆ ´ t nhiên se ˜ không chu ´ ’ a các da ˆ ´ u ngoa ˘ ˙ c này. Ne ˆ ´ u mo ˆ ˙ t bie ˆ ´ n môi tru ’ òng d ¯ u ’ o ˙ ’ c xác d ¯ i ˙ nh, thì cu ˜ ng có the ˆ ’ bi ˙ xóa bo ’ ba ˘ ` ng le ˆ ˙ nh no ˆ ˙ i trú unset. Ta ˆ ˙ p ho ˙ ’ p ta ˆ ´ t ca ’ các bie ˆ ´ n này cùngvo ´ ’ i các giá tri ˙ d ¯ ã gán cho chúng go ˙ i là môi tru ’ o ` ’ ng (enviroment) cu ’ a he ˆ ˙ vo ’ . Có the ˆ ’ xem nó (môi tru ’ o ` ’ ng) nho ` ’ le ˆ ˙ nh set khi không có tham so ˆ ´ (có the ˆ ’ ca ˆ ` n dùng d ¯ u ’ o ` ’ ng o ˆ ´ ng ’set | less", ne ˆ ´ u môi tru ’ o ` ’ ng lo ´ ’ n, có nhie ˆ ` u bie ˆ ´ n). D ¯ e ˆ ’ xem giá tri ˙ cu ’ a mo ˆ ˙ t bie ˆ ´ n môi tru ’ o ` ’ ng cu ˙ the ˆ ’ , thay vì dùng le ˆ ˙ nh set (khi này ca ˆ ` n tìm trong ke ˆ ´ t qua ’ cu ’ a nó bie ˆ ´ n muo ˆ ´ n xem), có the ˆ ’ su ’ ’ du ˙ ng le ˆ ˙ nh echo: kênh giao tác [user]$ echo $name 36 Bash Ba ’ ng 3.2: Thay the ˆ ´ các tham bie ˆ ´ n d ¯ a ˘ ˙ c bie ˆ ˙ t Tham bie ˆ ´ n Quy lua ˆ ˙ t thay the ˆ ´ * Thay the ˆ ´ bo ’ ’ i các tham bie ˆ ´ n vi ˙ trí, ba ˘ ´ t d ¯ a ˆ ` u tu ` ’ tham bie ˆ ´ n thu ´ ’ nha ˆ ´ t. Ne ˆ ´ u su ˙ ’ thay the ˆ ´ thu ˙ ’ c hie ˆ ˙ n trong da ˆ ´ u ngoa ˘ ˙ c kép, thì tham bie ˆ ´ n này se ˜ d ¯ u ’ o ˙ ’ c thay bo ’ ’ i mo ˆ ˙ t tu ` ’ duy nha ˆ ´ t, mà ta ˙ o ra tu ` ’ ta ˆ ´ t ca ’ các tham bie ˆ ´ n vi ˙ trí, phân cách nhau bo ’ ’ i ký tu ˙ ’ d ¯ a ˆ ` u tiên cu ’ a bie ˆ ´ n so ˆ ´ IFS (se ˜ nói d ¯ e ˆ ´ n o ’ ’ sau). Tu ´ ’ c là "$" tu ’ o ’ ng d ¯ u ’ o ’ ng vo ´ ’ i "$1c$2c. . . ", trong d ¯ ó c - ký tu ˙ ’ d ¯ a ˆ ` u tiên trong giá tri ˙ cu ’ a bie ˆ ´ n so ˆ ´ IFS. Ne ˆ ´ u giá tri ˙ cu ’ a IFS tro ˆ ´ ng, hoa ˘ ˙ c không d ¯ u ’ o ˙ ’ c xác d ¯ i ˙ nh giá tri ˙ , thì tham bie ˆ ´ n phân cách nhau bo ’ ’ i các khoa ’ ng tra ˘ ´ ng. @ Thay the ˆ ´ bo ’ ’ i tham bie ˆ ´ n vi ˙ trí, ba ˘ ´ t d ¯ a ˆ ` u tu ` ’ tham bie ˆ ´ n thu ´ ’ nha ˆ ´ t. Ne ˆ ´ u thay the ˆ ´ thu ˙ ’ c hie ˆ ˙ n trong ngoa ˘ ˙ c kép, thì mo ˆ ˜ i tham bie ˆ ´ n se ˜ d ¯ u ’ o ˙ ’ c thay the ˆ ´ bo ’ ’ i mo ˆ ˙ t tu ` ’ riêng bie ˆ ˙ t. Tu ´ ’ c là, "$@" tu ’ o ’ ng d ¯ u ’ o ’ ng vo ´ ’ i "$1" "$2" . . . Ne ˆ ´ u không có tham bie ˆ ´ n vi ˙ trí, thì giá tri ˙ se ˜ không d ¯ u ’ o ˙ ’ c thie ˆ ´ t la ˆ ˙ p (tham bie ˆ ´ n se ˜ bi ˙ x # Thay the ˆ ´ bo ’ ’ i giá tri ˙ tha ˆ ˙ p phân cu ’ a các tham bie ˆ ´ n vi ˙ trí. ? Thay the ˆ ´ bo ’ ’ i tra ˙ ng thái thoát ra cu ’ a câu le ˆ ˙ nh cuo ˆ ´ i cùng trong d ¯ u ’ o ` ’ ng o ˆ ´ ng, mà d ¯ u ’ o ˙ ’ c thu ˙ ’ c hie ˆ ˙ n trong che ˆ ´ d ¯ o ˆ ˙ ne ˆ ` n tru ’ o ´ ’ c. - (ga ˙ ch ngang) Thay the ˆ ´ bo ’ ’ i giá tri ˙ các co ` ’ , flag, d ¯ u ’ o ˙ ’ c d ¯ a ˘ ˙ t bo ’ ’ i le ˆ ˙ nh no ˆ ˙ i trú set hay trong khi cha ˙ y he ˆ ˙ vo ’ . $ Thay the ˆ ´ bo ’ ’ i so ˆ ´ cu ’ a tie ˆ ´ n trình (PID - process identificator) Thay the ˆ ´ bo ’ ’ i so ˆ ´ cu ’ a tie ˆ ´ n trình (PID) cuo ˆ ´ i cùng trong so ˆ ´ các câu le ˆ ˙ nh thu ˙ ’ c hie ˆ ˙ n trong ne ˆ ` n sau. 0 Thay the ˆ ´ bo ’ ’ i tên he ˆ ˙ vo ’ hay tên cu ’ a script d ¯ ang cha ˙ y. Ne ˆ ´ u bash cha ˙ y mo ˆ ˙ t ta ˆ ˙ p tin le ˆ ˙ nh nào d ¯ ó, thì $0 có giá tri ˙ ba ˘ ` ng tên cu ’ a ta ˆ ˙ p tin này. Trong tru ’ o ` ’ ng ho ˙ ’ p ngu ’ o ˙ ’ c la ˙ i giá tri ˙ này ba ˘ ` ng d ¯ u ’ o ` ’ ng da ˆ ˜ n d ¯ a ˆ ` u d ¯ u ’ d ¯ e ˆ ´ n he ˆ ˙ vo ’ (ví du ˙ , /bin/bash _ (ga ˙ ch du ’ o ´ ’ i) Thay the ˆ ´ bo ’ ’ i tham so ˆ ´ cuo ˆ ´ i cùng cu ’ a câu le ˆ ˙ nh tru ’ o ´ ’ c trong so ˆ ´ các câu le ˆ ˙ nh d ¯ ã d ¯ u ’ o ˙ ’ c thu ˙ ’ c hie ˆ ˙ n (ne ˆ ´ u d ¯ ó la ˙ i là mo ˆ ˙ t tham bie ˆ ´ n hay bie ˆ ´ n so ˆ ´ , thì se ˜ su ’ ’ du ˙ ng giá tri ˙ cu ’ a n Trong d ¯ ó, ca ˆ ` n thay name bo ’ ’ i tên bie ˆ ´ n (nhu ’ va ˆ ˙ y, trong tru ’ o ` ’ ng ho ˙ ’ p này, ba ˙ n la ˙ i ca ˆ ` n pha ’ i bie ˆ ´ t tên cu ’ a bie ˆ ´ n muo ˆ ´ n xem). Trong so ˆ ´ các bie ˆ ´ n, mà ba ˙ n se ˜ tha ˆ ´ y trong ke ˆ ´ t qua ’ cu ’ a le ˆ ˙ nh set, có nhu ˜ ’ ng bie ˆ ´ n ra ˆ ´ t thú vi ˙ . Xin hãy chú ý d ¯ e ˆ ´ n, ví du ˙ , bie ˆ ´ n RANDOM. Ne ˆ ´ u thu ’ ’ cha ˙ y vài la ˆ ` n liên tie ˆ ´ p câu le ˆ ˙ nh sau: kênh giao tác maikhai@fpt:/sw$ echo $RANDOM thì mo ˆ ˜ i la ˆ ` n ba ˙ n se ˜ nha ˆ ˙ n d ¯ u ’ o ˙ ’ c mo ˆ ˙ t giá tri ˙ mo ´ ’ i. Nguyên nhân là vì bie ˆ ´ n này tra ’ la ˙ i mo ˆ ˙ t giá tri ˙ nga ˆ ˜ u nhiên 4 trong khoa ’ ng 0 - 32 768. 3.6.2 Da ˆ ´ u nha ˘ ´ c cu ’ a he ˆ ˙ vo ’ Mo ˆ ˙ t trong các bie ˆ ´ n ra ˆ ´ t quan tro ˙ ng có tên PS1. Bie ˆ ´ n này cho bie ˆ ´ t da ˙ ng cu ’ a da ˆ ´ u nha ˘ ´ c, mà bash d ¯ u ’ a ra trong khi cho ` ’ ngu ’ o ` ’ i dùng nha ˆ ˙ p câu le ˆ ˙ nh tie ˆ ´ p theo. Theo ma ˘ ˙ c d ¯ i ˙ nh thì bie ˆ ´ n này d ¯ u ’ o ˙ ’ c gán giá tri ˙ "\s-\v\$ , tuy nhiên trên các ba ’ n phân pho ˆ ´ i khác nhau thu ’ o ` ’ ng có các script 4 random là tu ` ’ tie ˆ ´ ng Anh có nghı ˜ a nga ˆ ˜ u nhiên 3.6 Tham bie ˆ ´ n và các bie ˆ ´ n so ˆ ´ . Môi tru ’ o ` ’ ng cu ’ a he ˆ ˙ vo ’ 37 kho ’ ’ i d ¯ o ˆ ˙ ng (hay script d ¯ a ˘ ng nha ˆ ˙ p) xác d ¯ i ˙ nh la ˙ i bie ˆ ´ n này. Nói chung thì trong bash có ta ˆ ´ t ca ’ bo ˆ ´ n da ˆ ´ u nha ˘ ´ c, d ¯ u ’ o ˙ ’ c su ’ ’ du ˙ ng trong các tru ’ o ` ’ ng ho ˙ ’ p khác nhau. Bie ˆ ´ n PS1 d ¯ u ’ a ra da ˙ ng cu ’ a da ˆ ´ u nha ˘ ´ c khi he ˆ ˙ vo ’ cho ` ’ nha ˆ ˙ p le ˆ ˙ nh. Da ˆ ´ u nha ˘ ´ c thu ´ ’ hai, xác d ¯ i ˙ nh bo ’ ’ i bie ˆ ´ n PS2, xua ˆ ´ t hie ˆ ˙ n khi he ˆ ˙ vo ’ cho ` ’ ngu ’ o ` ’ i dùng nha ˆ ˙ p thêm mo ˆ ˙ t vài du ˜ ’ lie ˆ ˙ u ca ˆ ` n thie ˆ ´ t nào d ¯ ó d ¯ e ˆ ’ có the ˆ ’ tie ˆ ´ p tu ˙ c cha ˙ y câu le ˆ ˙ nh (chu ’ o ’ ng trình) d ¯ ã go ˙ i. Theo ma ˘ ˙ c d ¯ i ˙ nh bie ˆ ´ n PS2 có giá tri ˙ ">". Ra ˆ ´ t có the ˆ ’ ba ˙ n d ¯ ã nhìn tha ˆ ´ y da ˆ ´ u nha ˘ ´ c này, khi cha ˙ y le ˆ ˙ nh cat d ¯ e ˆ ’ d ¯ u ’ a du ˜ ’ lie ˆ ˙ u vào tu ` ’ bàn phím vào ta ˆ ˙ p tin. Mo ˆ ˙ t ví du ˙ khác - le ˆ ˙ nh ftp, sau khi cha ˙ y le ˆ ˙ nh này da ˆ ´ u nha ˘ ´ c se ˜ có da ˙ ng nhu ’ d ¯ ã nói. Da ˆ ´ u nha ˘ ´ c, xác d ¯ i ˙ nh bo ’ ’ i bie ˆ ´ n PS3, su ’ ’ du ˙ ng trong le ˆ ˙ nh select. Da ˆ ´ u nha ˘ ´ c, xác d ¯ i ˙ nh bo ’ ’ i bie ˆ ´ n PS4, d ¯ u ’ o ˙ ’ c d ¯ u ’ a ra tru ’ o ´ ’ c mo ˆ ˜ i câu le ˆ ˙ nh, trong lúc bash theo dõi quá trình thu ˙ ’ c hie ˆ ˙ n. Giá tri ˙ theo ma ˘ ˙ c d ¯ i ˙ nh - "+". Ne ˆ ´ u có mong muo ˆ ´ n, ba ˙ n có the ˆ ’ thay d ¯ o ˆ ’ i các bie ˆ ´ n PS1 và PS2. Khi này có the ˆ ’ su ’ ’ du ˙ ng ba ˆ ´ t ky ` ký tu ˙ ’ nào nha ˆ ˙ p tu ` ’ bàn phím, cu ˜ ng nhu ’ mo ˆ ˙ t vài ký tu ˙ ’ chuyên dùng d ¯ e ˆ ’ xác d ¯ i ˙ nh da ˙ ng da ˆ ´ u nha ˘ ´ c nhu ’ trong ba ’ ng 3.3 (chı ’ d ¯ u ’ a ra mo ˆ ˙ t vài trong so ˆ ´ chúng làm ví du ˙ , danh sách d ¯ a ˆ ` y d ¯ u ’ xem trong trang man cu ’ a bash - gõ le ˆ ˙ nh "man bash"). Ba ’ ng 3.3: Ký tu ˙ ’ xác d ¯ i ˙ nh da ˙ ng da ˆ ´ u nha ˘ ´ c Cu ˙ m ký tu ˙ ’ Giá tri ˙ (ke ˆ ´ t qua ’ thu d ¯ u ’ o ˙ ’ c) \a Tín hie ˆ ˙ u âm thanh (mã ASCII 07) \d Tho ` ’ i gian o ’ ’ da ˙ ng "Thu ´ ’ , tháng, ngày", ví du ˙ , Sun, Dec, 26. \h Tên máy (hostname) d ¯ e ˆ ´ n da ˆ ´ u cha ˆ ´ m d ¯ a ˆ ` u tiên. \H Tên máy d ¯ a ˆ ` y d ¯ u ’ , ví du ˙ teppi.phanthinh.com \t Tho ` ’ i gian hie ˆ ˙ n tho ` ’ i o ’ ’ da ˙ ng 24 gio ` ’ : HH:MM:SS (gio ` ’ :phút:giây) \T Tho ` ’ i gian hie ˆ ˙ n tho ` ’ i o ’ ’ da ˙ ng 12 gio ` ’ : HH:MM:SS \@ Tho ` ’ i gian hie ˆ ˙ n tho ` ’ i o ’ ’ da ˙ ng 12 gio ` ’ am/pm (sáng/chie ˆ ` u) \u Tên ngu ’ o ` ’ i dùng d ¯ ã cha ˙ y he ˆ ˙ vo ’ , ví du ˙ teppi \w Tên d ¯ a ˆ ` y d ¯ u ’ cu ’ a thu ’ mu ˙ c làm vie ˆ ˙ c hie ˆ ˙ n tho ` ’ i (ba ˘ ´ t d ¯ a ˆ ` u tu ` ’ go ˆ ´ c), ví du ˙ /home/teppi82/project/l4u \W Thu ’ mu ˙ c hie ˆ ˙ n tho ` ’ i (không có d ¯ u ’ o ` ’ ng da ˆ ˜ n) \$ Ký tu ˙ ’ #, ne ˆ ´ u he ˆ ˙ vo ’ d ¯ u ’ o ˙ ’ c cha ˙ y bo ’ ’ i ngu ’ o ` ’ i dùng root, và ký tu ˙ ’ $, ne ˆ ´ u he ˆ ˙ vo ’ d ¯ u ’ o ˙ ’ c cha ˙ y bo ’ ’ i ngu ’ o ` ’ i dùng thu ’ o ` ’ ng. \nnn Ký tu ˙ ’ có mã he ˆ ˙ tám nnn \n Dòng mo ´ ’ i (chuye ˆ ’ n dòng) \s Tên he ˆ ˙ vo ’ \# So ˆ ´ hie ˆ ˙ n tho ` ’ i cu ’ a câu le ˆ ˙ nh \\ Da ˆ ´ u ga ˙ ch ngu ’ o ˙ ’ c (backslash) \[ Sau ký tu ˙ ’ này ta ˆ ´ t ca ’ các ký tu ˙ ’ se ˜ không d ¯ u ’ o ˙ ’ c in ra. \] Ke ˆ ´ t thúc chuo ˆ ˜ i các ký tu ˙ ’ không d ¯ u ’ o ˙ ’ c in ra. \! So ˆ ´ thu ´ ’ tu ˙ ’ cu ’ a le ˆ ˙ nh hie ˆ ˙ n tho ` ’ i trong li ˙ ch su ’ ’ các câu le ˆ ˙ nh d ¯ ã dùng. So ˆ ´ cu ’ a le ˆ ˙ nh (so ˆ ´ thu ´ ’ tu ˙ ’ cu ’ a le ˆ ˙ nh d ¯ ang thu ˙ ’ c hie ˆ ˙ n trong buo ˆ ’ i làm vie ˆ ˙ c hie ˆ ˙ n tho ` ’ i) có the ˆ ’ khác vo ´ ’ i so ˆ ´ cu ’ a chính nó trong danh sách "li ˙ ch su ’ ’ các câu le ˆ ˙ nh", bo ’ ’ i vì danh sách còn chu ´ ’ a ca ’ nhu ˜ ’ ng câu le ˆ ˙ nh d ¯ ã d ¯ u ’ o ˙ ’ c ghi la ˙ i trong ta ˆ ˙ p tin li ˙ ch su ’ ’ . Sau khi giá tri ˙ cu ’ a bie ˆ ´ n d ¯ u ’ o ˙ ’ c he ˆ ˙ vo ’ d ¯ o ˙ c xong, se ˜ xa ’ y ra su ˙ ’ thay the ˆ ´ theo các quy lua ˆ ˙ t mo ’ ’ ro ˆ ˙ ng trong ba ’ ng trên, d ¯ o ˆ ` ng tho ` ’ i còn xa ’ y ra su ˙ ’ thay the ˆ ´ trong tên các câu le ˆ ˙ nh, trong các bie ˆ ’ u thu ´ ’ c so ˆ ´ ho ˙ c, và su ˙ ’ chia tu ` ’ (word splitting). Chúng ta se ˜ nói d ¯ e ˆ ´ n nhu ˜ ’ ng su ˙ ’ thay the ˆ ´ này o ’ ’ du ’ o ´ ’ i.Ví du ˙ , sau khi thu ˙ ’ c hie ˆ ˙ n le ˆ ˙ nh (vì trong dòng va ˘ n ba ’ n có khoa ’ ng tro ˆ ´ ng, nên nha ˆ ´ t thie ˆ ´ t pha ’ i có da ˆ ´ u ngoa ˘ ˙ c): kênh giao tác [user/root]$ PS1="[\u@\h \W]\$" 38 Bash thì trong da ˆ ´ u nha ˘ ´ c se ˜ có da ˆ ´ u mo ’ ’ ngoa ˘ ˙ c vuông, tên ngu ’ o ` ’ i dùng, ký hie ˆ ˙ u , tên máy, khoa ’ ng tra ˘ ´ ng, tên cu ’ a thu ’ mu ˙ c hie ˆ ˙ n tho ` ’ i (không có d ¯ u ’ o ` ’ ng da ˆ ˜ n), da ˆ ´ u d ¯ óng ngoa ˘ ˙ c vuông, và ký hie ˆ ˙ u $ (ne ˆ ´ u trên he ˆ ˙ vo ’ d ¯ ang làm vie ˆ ˙ c ngu ’ o ` ’ i dùng bình thu ’ o ` ’ ng) hay #(ne ˆ ´ u he ˆ ˙ vo ’ cha ˙ y du ’ o ´ ’ i ngu ’ o ` ’ i dùng root). 3.6.3 Bie ˆ ´ n môi tru ’ o ` ’ ng PATH Còn mo ˆ ˙ t bie ˆ ´ n cu ˜ ng quan tro ˙ ng nu ˜ ’ a có tên PATH. Bie ˆ ´ n này d ¯ u ’ a ra danh sách d ¯ u ’ o ` ’ ng da ˆ ˜ n d ¯ e ˆ ´ n các thu ’ mu ˙ c, mà bash se ˜ tìm kie ˆ ´ m ta ˆ ˙ p tin (tru ’ o ` ’ ng ho ˙ ’ p riêng là các ta ˆ ˙ p tin le ˆ ˙ nh) trong tru ’ o ` ’ ng ho ˙ ’ p, d ¯ u ’ o ` ’ ng da ˆ ˜ n d ¯ a ˆ ` y d ¯ u ’ d ¯ e ˆ ´ n ta ˆ ˙ p tin không d ¯ u ’ o ˙ ’ c d ¯ u ’ a ra. Các thu ’ mu ˙ c trong danh sách này phân cách nhau bo ’ ’ i da ˆ ´ u hai cha ˆ ´ m (:). Theo ma ˘ ˙ c d ¯ i ˙ nh bie ˆ ´ n PATH chu ´ ’ a các thu ’ mu ˙ c /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin, tu ´ ’ c là có da ˙ ng: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin: D ¯ e ˆ ’ thêm thu ’ mu ˙ c vào danh sách này, ca ˆ ` n thu ˙ ’ c hie ˆ ˙ n câu le ˆ ˙ nh sau: kênh giao tác [user]$ PATH=$PATH:new_path Khi tìm kie ˆ ´ m, he ˆ ˙ vo ’ "lu ˙ c lo ˙ i" các thu ’ mu ˙ c theo d ¯ úng thu ´ ’ tu ˙ ’ d ¯ ã lie ˆ ˙ t kê trong bie ˆ ´ n PATH. Mo ˆ ˙ t chú ý nho ’ , có the ˆ ’ d ¯ u ’ a vào danh sách này thu ’ mu ˙ c hie ˆ ˙ n tho ` ’ i, khi thêm vào bie ˆ ´ n PATH mo ˆ ˙ t da ˆ ´ u cha ˆ ´ m (.). Tuy nhiên, d ¯ ây là d ¯ ie ˆ ` u không khuyên làm vo ´ ’ i lý do ba ’ o ma ˆ ˙ t: ngu ’ o ` ’ i có ác ý có the ˆ ’ d ¯ a ˘ ˙ t vào thu ’ mu ˙ c dùng chung mo ˆ ˙ t chu ’ o ’ ng trình nào d ¯ ó, có cùng tên vo ´ ’ i mo ˆ ˙ t trong so ˆ ´ nhu ˜ ’ ng câu le ˆ ˙ nh thu ’ o ` ’ ng dùng bo ’ ’ i root, nhu ’ ng thu ˙ ’ c hie ˆ ˙ n nhu ˜ ’ ng chu ´ ’ c na ˘ ng khác hoàn toàn (d ¯ a ˘ ˙ c bie ˆ ˙ t nguy hie ˆ ’ m ne ˆ ´ u thu ’ mu ˙ c hie ˆ ˙ n tho ` ’ i d ¯ u ´ ’ ng o ’ ’ d ¯ a ˆ ` u danh sách tìm kie ˆ ´ m). 3.6.4 Bie ˆ ´ n môi tru ’ o ` ’ ng IFS Bie ˆ ´ n này xác d ¯ i ˙ nh ký tu ˙ ’ (cu ˙ m ký tu ˙ ’ ) phân cách (Internal Field Separator), su ’ ’ du ˙ ng trong thao tác phân chia tu ` ’ ngu ˜ ’ khi bie ˆ ´ n d ¯ o ˆ ’ i dòng le ˆ ˙ nh, mà he ˆ ˙ vo ’ thu ˙ ’ c hie ˆ ˙ n tru ’ o ´ ’ c khi cha ˙ y mo ˆ ˙ t câu le ˆ ˙ nh nào d ¯ ó(xemdu ’ o ´ ’ i).Giátri ˙ theoma ˘ ˙ cd ¯ i ˙ nhcu ’ abie ˆ ´ nnày-"<Khoa ’ ng_tra ˘ ´ ng><Tab><Ký_tu ˙ ’ _hàng_mo ´ ’ i>". Ne ˆ ´ u thu ’ ’ gõ le ˆ ˙ nh "echo $IFS", ba ˙ n se ˜ nha ˆ ˙ n d ¯ u ’ o ˙ ’ c mo ˆ ˙ t nga ˙ c nhiên nho ’ . 3.6.5 Thu ’ mu ˙ c hie ˆ ˙ n tho ` ’ i và thu ’ mu ˙ c cá nhân Tên cu ’ a thu ’ mu ˙ c hie ˆ ˙ n tho ` ’ i ghi trong bie ˆ ´ n môi tru ’ o ` ’ ng vo ´ ’ i tên PWD, và giá tri ˙ cu ’ a bie ˆ ´ n này thay d ¯ o ˆ ’ i sau mo ˆ ˜ i la ˆ ` n cha ˙ y chu ’ o ’ ng trình cd (cu ˜ ng nhu ’ mo ˆ ˜ i la ˆ ` n thay d ¯ o ˆ ’ i thu ’ mu ˙ c hie ˆ ˙ n tho ` ’ i theo ba ˆ ´ t ky ` cách nào, ví du ˙ , qua Midnight Commander). Tu ’ o ’ ng tu ˙ ’ nhu ’ va ˆ ˙ y tên d ¯ a ˆ ` y d ¯ u ’ (go ˆ ` m ca ’ d ¯ u ’ o ` ’ ng da ˆ ˜ n) cu ’ a thu ’ mu ˙ c cá nhân cu ’ a ngu ’ o ` ’ i dùng, cha ˙ y tie ˆ ´ n trình d ¯ ã cho, ghi trong bie ˆ ´ n HOME. 3.6.6 Câu le ˆ ˙ nh export Khi he ˆ ˙ vo ’ cha ˙ y mo ˆ ˙ t chu ’ o ’ ng trình hay câu le ˆ ˙ nh nào d ¯ ó, nó (he ˆ ˙ vo ’ ) cung ca ˆ ´ p cho chúng mo ˆ ˙ t pha ˆ ` n bie ˆ ´ n môi tru ’ o ` ’ ng. D ¯ e ˆ ’ có the ˆ ’ cung ca ˆ ´ p bie ˆ ´ n môi tru ’ o ` ’ ng cho tie ˆ ´ n trình cha ˙ y tu ` ’ he ˆ ˙ vo ’ , ca ˆ ` n gán giá tri ˙ cho bie ˆ ´ n này vo ´ ’ i le ˆ ˙ nh export, tu ´ ’ c là thay vì kênh giao tác [user]$ name=value ca ˆ ` n gõ: . tri ˙ "s-v$ , tuy nhiên trên các ba ’ n phân pho ˆ ´ i khác nhau thu ’ o ` ’ ng có các script 4 random là tu ` ’ tie ˆ ´ ng Anh có nghı ˜ a nga ˆ ˜ u nhiên 3 .6 Tham bie ˆ ´ n và các bie ˆ ´ n so ˆ ´ ba ’ n d ¯ u ’ o ˙ ’ c chı ’ ra và d ¯ u ’ a các dòng này to ´ ’ i d ¯ a ˆ ` u ra tiêu chua ˆ ’ n tr Trong du ˜ ’ lie ˆ ˙ u d ¯ a ˆ ` u vào thay the ˆ ´ các ký tu ˙ ’ o ’ ’ ô thu ´ ’ nha ˆ ´ t bo ’ ’ i các ký tu ˙ ’ tu ’ o ’ ng u ´ ’ ng. d ¯ u ’ o ˙ ’ c go ˙ i là "môi tru ’ o ` ’ ng và các bie ˆ ´ n môi tru ’ o ` ’ ng" ta ˙ o bo ’ ’ i he ˆ ˙ vo ’ . 3 .6 Tham bie ˆ ´ n và các bie ˆ ´ n so ˆ ´ . Môi tru ’ o ` ’ ng cu ’ a

Ngày đăng: 29/07/2014, 12:21

Mục lục

    HÐH Linux: lich su và các ban phân phoi

    Cài dat HÐH Linux trên cùng máy tính voi Windows

    Chuan bi cài dat

    Phòng xa và nhung loi khuyên

    Phân vùng trên dia và quá trình khoi dong

    The nào là cau trúc "hình hoc cua dia"

    Phân vùng và bang phân vùng cua dia

    Quá trình khoi dong HÐH công ty Microsoft

    Van de voi các dia lon

    Lua chon trình khoi dong

Tài liệu cùng người dùng

Tài liệu liên quan