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

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

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

Thông tin tài liệu

3.7 Khai trie ˆ ’ n bie ˆ ’ u thu ´ ’ c 39 kênh giao tác [user]$ export name=value Trong tru ’ o ` ’ ng ho ˙ ’ p này, ta ˆ ´ t ca ’ các chu ’ o ’ ng trình cha ˙ y tu ` ’ he ˆ ˙ vo ’ (ke ˆ ’ ca ’ ba ’ n sao thu ´ ’ hai cu ’ a chính he ˆ ˙ vo ’ ) se ˜ có quye ˆ ` n truy ca ˆ ˙ p to ´ ’ i các bie ˆ ´ n d ¯ u ’ o ˙ ’ c gán nhu ’ va ˆ ˙ y, tu ´ ’ c là su ’ ’ du ˙ ng giá tri ˙ cu ’ a chúng qua tên. 3.7 Khai trie ˆ ’ n bie ˆ ’ u thu ´ ’ c Hay he ˆ ˙ vo ’ d ¯ o ˙ c các câu le ˆ ˙ nh nhu ’ the ˆ ´ nào? Khi he ˆ ˙ vo ’ nha ˆ ˙ n d ¯ u ’ o ˙ ’ c mo ˆ ˙ t dòng le ˆ ˙ nh này d ¯ ó ca ˆ ` n thu ˙ ’ c hie ˆ ˙ n, nó (he ˆ ˙ vo ’ ) tru ’ o ´ ’ c khi cha ˙ y câu le ˆ ˙ nh thu ˙ ’ c hie ˆ ˙ n vie ˆ ˙ c "phân tích ngu ˜ ’ pháp" dòng le ˆ ˙ nh này (gio ˆ ´ ng trong ngôn ngu ˜ ’ , phân tích chu ’ ngu ˜ ’ , vi ˙ ngu ˜ ’ ). Mo ˆ ˙ t trong nhu ˜ ’ ng bu ’ o ´ ’ c cu ’ a su ˙ ’ phân tích này là phép mo ’ ’ hay khai trie ˆ ’ n bie ˆ ’ u thu ´ ’ c (expansion). Trong bash có ba ’ y loa ˙ i khai trie ˆ ’ n bie ˆ ’ u thu ´ ’ c: • Khai trie ˆ ’ n da ˆ ´ u ngoa ˘ ˙ c (brace expansion); • Thay the ˆ ´ da ˆ ´ u ngã (tilde expansion); • Phép the ˆ ´ các tham bie ˆ ´ n và bie ˆ ´ n so ˆ ´ ; • Phép the ˆ ´ các câu le ˆ ˙ nh; • Phép the ˆ ´ so ˆ ´ ho ˙ c (thu ˙ ’ c hie ˆ ˙ n tu ` ’ trái sang pha ’ i); • Phép chia tu ` ’ (word splitting); • Khai trie ˆ ’ n các ma ˆ ˜ u tên ta ˆ ˙ p tin và thu ’ mu ˙ c (pathname expansion). Các thao tác này d ¯ u ’ o ˙ ’ c thu ˙ ’ c hie ˆ ˙ n theo d ¯ úng thu ´ ’ tu ˙ ’ lie ˆ ˙ t kê trên. Chúng ta se ˜ xem xét chúng theo tu ´ ’ tu ˙ ’ này. 3.7.1 Khai trie ˆ ’ n da ˆ ´ u ngoa ˘ ˙ c Khai trie ˆ ’ n da ˆ ´ u ngoa ˘ ˙ c to ˆ ´ t nha ˆ ´ t minh ho ˙ a trên ví du ˙ . Gia ’ thie ˆ ´ t, chúng ta ca ˆ ` n ta ˙ o thu ’ mu ˙ c con trong mo ˆ ˙ t thu ’ mu ˙ c nào d ¯ ó, hoa ˘ ˙ c thay d ¯ o ˆ ’ i ngu ’ o ` ’ i dùng so ’ ’ hu ˜ ’ u cu ’ a vài ta ˆ ˙ p tin cùng mo ˆ ˙ t lúc. Có the ˆ ’ thu ˙ ’ c hie ˆ ˙ n d ¯ ie ˆ ` u này nho ` ’ các câu le ˆ ˙ nh sau: kênh giao tác [user]$ mkdir /usr/src/unikey/{old,new,dist,bugs} [root]# chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex} Trong tru ’ o ` ’ ng ho ˙ ’ p d ¯ a ˆ ` u, trong thu ’ mu ˙ c /usr/src/unikey/ se ˜ ta ˙ o ra các thu ’ mu ˙ c con old,new,dist, và bugs. Trong tru ’ o ` ’ ng ho ˙ ’ p thu ´ ’ hai, ngu ’ o ` ’ i dùng so ’ ’ hu ˜ ’ u cu ’ a các ta ˆ ˙ p tin sau se ˜ thay d ¯ o ˆ ’ i (thành root): • /usr/ucb/ex • /usr/lib/ex?.? 40 Bash • /usr/ucb/edit • /usr/lib/ex?.? • /usr/ucb/ex • /usr/lib/how_ex • /usr/ucb/edit • /usr/lib/how_ex Tu ´ ’ c là vo ´ ’ i mo ˆ ˜ i ca ˘ ˙ p da ˆ ´ u ngoa ˘ ˙ c se ˜ ta ˙ o ra vài dòng riêng re ˜ (so ˆ ´ nhu ˜ ’ ng dòng này ba ˘ ` ng so ˆ ´ tu ` ’ na ˘ ` ng trong da ˆ ´ u ngoa ˘ ˙ c) ba ˘ ` ng cách ghi thêm vào tru ’ o ´ ’ c mo ˆ ˜ i tu ` ’ trong ngoa ˘ ˙ c nhu ˜ ’ ng gì d ¯ u ´ ’ ng tru ’ o ´ ’ c da ˆ ´ u ngoa ˘ ˙ c, và ghi thêm vào sau mo ˆ ˜ i tu ` ’ này nhu ˜ ’ ng gì d ¯ u ´ ’ ng sau da ˆ ´ u ngoa ˘ ˙ c. Mo ˆ ˙ t ví du ˙ khác: dòng a{d,c,b}e khi khai trie ˆ ’ n se ˜ thu d ¯ u ’ o ˙ ’ c ba tu ` ’ "ade ace abe". Khai trie ˆ ’ n da ˆ ´ u ngoa ˘ ˙ c d ¯ u ’ o ˙ ’ c thu ˙ ’ c hie ˆ ˙ n tru ’ o ´ ’ c các da ˙ ng khai trie ˆ ’ n khác trong dòng le ˆ ˙ nh, ho ’ n nu ˜ ’ a ta ˆ ´ t ca ’ các ký tu ˙ ’ d ¯ a ˘ ˙ c bie ˆ ˙ t có trong dòng le ˆ ˙ nh, ke ˆ ’ ca ’ nhu ˜ ’ ng ký tu ˙ ’ na ˘ ` m trong da ˆ ´ u ngoa ˘ ˙ c, se ˜ d ¯ u ’ o ˙ ’ c giu ˜ ’ không thay d ¯ o ˆ ’ i (chúng se ˜ d ¯ u ’ o ˙ ’ c biên di ˙ ch o ’ ’ các bu ’ o ´ ’ c phía sau). 3.7.2 Thay the ˆ ´ da ˆ ´ u ngã (Tilde Expansion) Ne ˆ ´ u nhu ’ tu ` ’ ba ˘ ´ t d ¯ a ˆ ` u vo ´ ’ i ký tu ˙ ’ da ˆ ´ u ngã (’∼’), ta ˆ ´ t ca ’ các ký tu ˙ ’ d ¯ u ´ ’ ng tru ’ o ´ ’ c da ˆ ´ u ga ˙ ch chéo d ¯ a ˆ ` u tiên (hay ta ˆ ´ t ca ’ các ký tu ˙ ’ ne ˆ ´ u nhu ’ không có da ˆ ´ u ga ˙ ch chéo) se ˜ d ¯ u ’ o ˙ ’ c hie ˆ ’ u là tên ngu ’ o ` ’ i dùng (login name). Ne ˆ ´ u nhu ’ tên này là mo ˆ ˙ t dòng ro ˆ ˜ ng (tu ´ ’ c là da ˆ ´ u ga ˙ ch chéo d ¯ u ´ ’ ng ngay phía sau da ˆ ´ u ngã), thì da ˆ ´ u ngã se ˜ d ¯ u ’ o ˙ ’ c thay the ˆ ´ bo ’ ’ i giá tri ˙ cu ’ a bie ˆ ´ n HOME. Và ne ˆ ´ u giá tri ˙ cu ’ a bie ˆ ´ n HOME không d ¯ u ’ o ˙ ’ c gán thì da ˆ ´ u ngã se ˜ d ¯ u ’ o ˙ ’ c thay the ˆ ´ bo ’ ’ i d ¯ u ’ o ` ’ ng da ˆ ˜ n d ¯ a ˆ ` u d ¯ u ’ d ¯ e ˆ ´ n thu ’ mu ˙ c cá nhân cu ’ a ngu ’ o ` ’ i dùng, mà d ¯ ã cha ˙ y he ˆ ˙ vo ’ . Ne ˆ ´ u nhu ’ ngay sau da ˆ ´ u ngã (và tru ’ o ´ ’ c da ˆ ´ u ga ˙ ch chéo) là mo ˆ ˙ t tu ` ’ trùng vo ´ ’ i tên cu ’ a mo ˆ ˙ t ngu ’ o ` ’ i dùng ho ˙ ’ p pháp, thì da ˆ ´ u ngã co ˆ ˙ ng vo ´ ’ i tên ngu ’ o ` ’ i dùng d ¯ u ’ o ˙ ’ c thay the ˆ ´ bo ’ ’ i d ¯ u ’ o ` ’ ng da ˆ ˜ n d ¯ a ˆ ` y d ¯ u ’ d ¯ e ˆ ´ n thu ’ mu ˙ c cá nhân cu ’ a ngu ’ o ` ’ i dùng này. Ne ˆ ´ u nhu ’ tu ` ’ d ¯ u ´ ’ ng sau da ˆ ´ u ngã không pha ’ i là tên cu ’ a mo ˆ ˙ t ngu ’ o ` ’ i dùng (và không ro ˆ ˜ ng), thì tu ` ’ không bi ˙ thay d ¯ o ˆ ’ i. Ne ˆ ´ u nhu ’ sau da ˆ ´ u ngã là ’+’, hay ký hie ˆ ˙ u này se ˜ d ¯ u ’ o ˙ ’ c thay the ˆ ´ bo ’ ’ i tên d ¯ a ˆ ` u d ¯ u ’ cu ’ a thu ’ mu ˙ c hie ˆ ˙ n tho ` ’ i (tu ´ ’ c là giá tri ˙ cu ’ a bie ˆ ´ n PWD). Ne ˆ ´ u du ´ ’ ng sau da ˆ ´ u ngã là ’-’, thì thay the ˆ ´ giá tri ˙ cu ’ a bie ˆ ´ n OLDPWD (thu ’ mu ˙ c "cu ˜ "). 3.7.3 Phép the ˆ ´ các tham bie ˆ ´ n và bie ˆ ´ n so ˆ ´ Ký tu ˙ ’ $ d ¯ u ’ o ˙ ’ c su ’ ’ du ˙ ng cho các thao tác the ˆ ´ tham bie ˆ ´ n, the ˆ ´ các câu le ˆ ˙ nh và the ˆ ´ các bie ˆ ’ u thu ´ ’ c so ˆ ´ ho ˙ c. Bie ˆ ’ u thu ´ ’ c hay tên d ¯ u ´ ’ ng sau $ có the ˆ ’ d ¯ u ’ o ˙ ’ c d ¯ u ’ a vào ngoa ˘ ˙ c, không nha ˆ ´ t thie ˆ ´ t, nhu ’ ng ra ˆ ´ t tie ˆ ˙ n, vì da ˆ ´ u ngoa ˘ ˙ c phân cách bie ˆ ’ u thu ´ ’ c vo ´ ’ i các tu ` ’ hay ký tu ˙ ’ d ¯ u ´ ’ ng sau. Nhu ’ va ˆ ˙ y, d ¯ e ˆ ’ go ˙ i giá tri ˙ cu ’ a tham bie ˆ ´ n nói chung cu ˜ ng nhu ’ bie ˆ ´ n môi tru ’ o ` ’ ng nói riêng trong dòng le ˆ ˙ nh, ca ˆ ` n d ¯ a ˘ ˙ t bie ˆ ’ u thu ´ ’ c da ˙ ng $parameter. Da ˆ ´ u ngoa ˘ ˙ c chı ’ ca ˆ ` n thie ˆ ´ t, ne ˆ ´ u tên cu ’ a tham bie ˆ ´ n có chu ´ ’ a vài chu ˜ ’ so ˆ ´ , hoa ˘ ˙ c khi theo sau tên còn có các ký tu ˙ ’ khác, mà chúng ta không muo ˆ ´ n he ˆ ˙ vo ’ "hie ˆ ’ u la ˆ ` m" chúng là mo ˆ ˙ t pha ˆ ` n cu ’ a tên tham bie ˆ ´ n. Trong ta ˆ ´ t ca ’ các giá tri ˙ cu ’ a bie ˆ ´ n so ˆ ´ xa ’ y ra phép the ˆ ´ da ˆ ´ u ngã (∼), su ˙ ’ khai trie ˆ ’ n tham bie ˆ ´ n và bie ˆ ´ n so ˆ ´ , phép the ˆ ´ các câu le ˆ ˙ nh, phép the ˆ ´ các bie ˆ ’ u thu ´ ’ c so ˆ ´ ho ˙ c, cu ˜ ng nhu ’ xóa các ký tu ˙ ’ trích da ˆ ˜ n (xem du ’ o ´ ’ i). Su ˙ ’ phân chia tu ` ’ không xa ’ y ra, tru ` ’ tru ’ o ` ’ ng ho ˙ ’ p "$" (lo ` ’ i gia ’ i thích xem o ’ ’ ba ’ ng so ˆ ´ 3). Su ˙ ’ khai trie ˆ ’ n các ma ˆ ˜ u tên ta ˆ ˙ p tin và thu ’ mu ˙ c cu ˜ ng không d ¯ u ’ o ˙ ’ c thu ˙ ’ c hie ˆ ˙ n. 3.7 Khai trie ˆ ’ n bie ˆ ’ u thu ´ ’ c 41 3.7.4 Phép the ˆ ´ các câu le ˆ ˙ nh Phép the ˆ ´ các câu le ˆ ˙ nh là mo ˆ ˙ t công cu ˙ ra ˆ ´ t ma ˙ ng cu ’ a bash. Ý nghı ˜ a cu ’ a nó na ˘ ` m o ’ ’ cho ˆ ˜ thay the ˆ ´ tên các câu le ˆ ˙ nh bo ’ ’ i ke ˆ ´ t qua ’ thu ˙ ’ c hie ˆ ˙ n cu ’ a chúng. Có hai da ˙ ng phép the ˆ ´ le ˆ ˙ nh: $(command) và ‘command‘ Ne ˆ ´ u u ´ ’ ng du ˙ ng da ˙ ng thu ´ ’ hai (chú ý o ’ ’ d ¯ ây su ’ ’ du ˙ ng da ˆ ´ u "ngoa ˘ ˙ c d ¯ o ’ n ngu ’ o ˙ ’ c", phím cho nó thu ’ o ` ’ ng na ˘ ` m trên phím Tab), thì da ˆ ´ u ga ˙ ch ngu ’ o ˙ ’ c (\) o ’ ’ trong da ˆ ´ u ngoa ˘ ˙ c se ˜ có chu ´ ’ c na ˘ ng nhu ’ mo ˆ ˙ t ký tu ˙ ’ thông thu ’ o ` ’ ng, tru ` ’ tru ’ o ` ’ ng ho ˙ ’ p, khi d ¯ u ´ ’ ng sau nó (da ˆ ´ u ga ˙ ch ngu ’ o ˙ ’ c) là mo ˆ ˙ t $, ‘, hay mo ˆ ˙ t \. Ne ˆ ´ u nhu ’ su ’ ’ du ˙ ng da ˙ ng $(command), thì ta ˆ ´ t ca ’ các ký tu ˙ ’ d ¯ u ´ ’ ng trong ngoa ˘ ˙ c ta ˙ o thành mo ˆ ˙ t câu le ˆ ˙ nh, không có ký tu ˙ ’ nào có ý nghı ˜ a d ¯ a ˘ ˙ c bie ˆ ˙ t. Ne ˆ ´ u phép the ˆ ´ câu le ˆ ˙ nh xa ’ y ra phía trong ngoa ˘ ˙ c kép, thì trong ke ˆ ´ t qua ’ cu ’ a phép the ˆ ´ se ˜ không thu ˙ ’ c hie ˆ ˙ n phép phân chia tu ` ’ và su ˙ ’ khai trie ˆ ’ n ma ˆ ˜ u tên ta ˆ ˙ p tin và thu ’ mu ˙ c. 3.7.5 Phép the ˆ ´ so ˆ ´ ho ˙ c (Arithmetic Expansion) Phép the ˆ ´ so ˆ ´ ho ˙ c cho phép tính giá tri ˙ cu ’ a mo ˆ ˙ t bie ˆ ’ u thu ´ ’ c so ˆ ´ ho ˙ c và thay the ˆ ´ nó (bie ˆ ’ u thu ´ ’ c) bo ’ ’ i ke ˆ ´ t qua ’ thu d ¯ u ’ o ˙ ’ c. Có hai da ˙ ng phép the ˆ ´ so ˆ ´ ho ˙ c: $[expression] ((expression)) Trong d ¯ ó expression d ¯ u ’ o ˙ ’ c hie ˆ ’ u (d ¯ u ’ o ˙ ’ c bash d ¯ o ˙ c) nhu ’ khi d ¯ u ´ ’ ng trong ngoa ˘ ˙ c kép, nhu ’ ng nhu ˜ ’ ng da ˆ ´ u ngoa ˘ ˙ c kép o ’ ’ trong expression la ˙ i d ¯ u ’ o ˙ ’ c d ¯ o ˙ c nhu ’ mo ˆ ˙ t ký tu ˙ ’ thu ’ o ` ’ ng. Phía trong expression có thu ˙ ’ c hie ˆ ˙ n các phép the ˆ ´ tham bie ˆ ´ n và the ˆ ´ câu le ˆ ˙ nh. Cú pháp cu ’ a bie ˆ ’ u thu ´ ’ c expression tu ’ o ’ ng tu ˙ ’ nhu ’ cú pháp cu ’ a bie ˆ ’ u thu ´ ’ c so ˆ ´ ho ˙ c cu ’ a ngôn ngu ˜ ’ C, cu ˙ the ˆ ’ ho ’ n ve ˆ ` va ˆ ´ n d ¯ e ˆ ` này có the ˆ ’ d ¯ o ˙ c trong pha ˆ ` n ARITHMETIC EVALUATION cu ’ a trang man cu ’ a bash. Ví du ˙ , câu le ˆ ˙ nh kênh giao tác [user]$ echo $((2 + 3 * 5)) cho ke ˆ ´ t qua ’ ba ˘ ` ng "17". Ne ˆ ´ u bie ˆ ’ u thu ´ ’ c không chính xác, bash se ˜ d ¯ u ’ a ra thông báo lo ˆ ˜ i. 3.7.6 Phân chia tu ` ’ (word splitting) Sau khi thu ˙ ’ c hie ˆ ˙ n xong các phép the ˆ ´ tham bie ˆ ´ n, the ˆ ´ le ˆ ˙ nh, và the ˆ ´ các bie ˆ ’ u thu ´ ’ c so ˆ ´ ho ˙ c, he ˆ ˙ vo ’ la ˙ i phân tích dòng le ˆ ˙ nh mo ˆ ˙ t la ˆ ` n nu ˜ ’ a (nhu ’ ng o ’ ’ da ˙ ng thu d ¯ u ’ o ˙ ’ c sau các phép the ˆ ´ nói trên) và thu ˙ ’ c hie ˆ ˙ n vie ˆ ˙ c phân chia tu ` ’ (word splitting). Thao tác này na ˘ ` m o ’ ’ cho ˆ ˜ , he ˆ ˙ vo ’ tìm trong dòng le ˆ ˙ nh ta ˆ ´ t ca ’ các ký tu ˙ ’ phân chia, xác d ¯ i ˙ nh bo ’ ’ i bie ˆ ´ n IFS (xem trên), và nho ` ’ d ¯ ó chia nho ’ dòng le ˆ ˙ nh thành các tu ` ’ riêng re ˜ trong các cho ˆ ˜ tu ’ o ’ ng u ´ ’ ng. Ne ˆ ´ u giá tri ˙ cu ’ a IFS ba ˘ ` ng mo ˆ ˙ t dòng tro ˆ ´ ng, thì vie ˆ ˙ c phân chia tu ` ’ se ˜ không xa ’ y ra. Ne ˆ ´ u trong dòng le ˆ ˙ nh không thu ˙ ’ c hie ˆ ˙ n phép the ˆ ´ nào trong các phép the ˆ ´ ke ˆ ’ trên, thì phân chia tu ` ’ cu ˜ ng không xa ’ y ra. 3.7.7 Khai trie ˆ ’ n các ma ˆ ˜ u tên ta ˆ ˙ p tin và thu ’ mu ˙ c (Pathname Expansion) Phép the ˆ ´ tên d ¯ u ’ o ` ’ ng da ˆ ˜ n và ta ˆ ˙ p tin (Pathname expansion) su ’ ’ du ˙ ng d ¯ e ˆ ’ chı ’ nho ` ’ mo ˆ ˙ t ma ˆ ˜ u nho ’ go ˙ n mà có the ˆ ’ chı ’ ra vài ta ˆ ˙ p tin (hay thu ’ mu ˙ c), tu ’ o ’ ng u ´ ’ ng vo ´ ’ i ma ˆ ˜ u này. Sau khi phân chia tu ` ’ , và ne ˆ ´ u nhu ’ không d ¯ u ’ a ra tùy cho ˙ n -f, thì bash se ˜ tìm kie ˆ ´ m trong tu ` ’ ng tu ` ’ cu ’ a dòng le ˆ ˙ nh các ký tu ˙ ’ *, ?, và [. Ne ˆ ´ u tìm tha ˆ ´ y tu ` ’ vo ´ ’ i mo ˆ ˙ t hay vài ký tu ˙ ’ nhu ’ va ˆ ˙ y, thì tu ` ’ này se ˜ d ¯ u ’ o ˙ ’ c xem nhu ’ mo ˆ ˙ t ma ˆ ˜ u, và ca ˆ ` n thay the ˆ ´ bo ’ ’ i các tu ` ’ trong danh sách d ¯ u ’ o ` ’ ng da ˆ ˜ n, tu ’ o ’ ng u ´ ’ ng vo ´ ’ i ma ˆ ˜ u này. Ne ˆ ´ u nhu ’ không tìm tha ˆ ´ y tên tu ’ o ’ ng u ´ ’ ng vo ´ ’ i ma ˆ ˜ u, và bie ˆ ´ n nullglob không d ¯ u ’ o ˙ ’ c d ¯ u ’ a ra, thì tu ` ’ se ˜ không thay d ¯ o ˆ ’ i, tu ´ ’ c là các ký tu ˙ ’ d ¯ a ˘ ˙ c bie ˆ ˙ t bi ˙ ma ˆ ´ t giá tri ˙ và hie ˆ ’ u nhu ’ các ký tu ˙ ’ thu ’ o ` ’ ng. Ne ˆ ´ u nhu ’ bie ˆ ´ n này d ¯ u ’ o ˙ ’ c xác d ¯ i ˙ nh, mà d ¯ u ’ o ` ’ ng da ˆ ˜ n tu ’ o ’ ng u ´ ’ ng vo ´ ’ i ma ˆ ˜ u không tìm tha ˆ ´ y, thì tu ` ’ se ˜ bi ˙ xóa kho ’ i dòng le ˆ ˙ nh. Các ký tu ˙ ’ dùng d ¯ e ˆ ’ ta ˙ o ma ˆ ˜ u có các giá tri ˙ trong ba ’ ng 3.4 42 Bash Ba ’ ng 3.4: Các ký tu ˙ ’ ta ˙ o ma ˆ ˜ u Ký tu ˙ ’ Quy lua ˆ ˙ t thay the ˆ ´ * Tu ’ o ’ ng u ´ ’ ng vo ´ ’ i ba ˆ ´ t ky ` dòng ký tu ˙ ’ nào, ke ˆ ’ ca ’ dòng ro ˆ ˜ ng. Ví du ˙ , v*.txt se ˜ d ¯ u ’ o ˙ ’ c thay the ˆ ´ bo ’ ’ i vnoss.txt, vnlinux.txt và vntex.txt (ne ˆ ´ u các ta ˆ ˙ p tin này to ˆ ` n ta ˙ i), và *.png se ˜ tu ’ o ’ ng u ´ ’ ng ta ˆ ´ t ca ’ các ta ˆ ˙ p tin có pha ˆ ` n mo ’ ’ ro ˆ ˙ ng png (ta ˆ ˙ p tin d ¯ o ˆ ` ho ˙ a hai chie ˆ ` u). ? Tu ’ o ’ ng u ´ ’ ng ba ˆ ´ t ký mo ˆ ˙ t ký tu ˙ ’ d ¯ o ’ n nào. Ví du ˙ , ma ˆ ˜ u file?.txt se ˜ d ¯ u ’ o ˙ ’ c thaythe ˆ ´ bo ’ ’ i các tên te ˆ ˙ p sau file1.txt, file2.txt, file3.txt, và filea.txt (ne ˆ ´ u chúng to ˆ ` n ta ˙ i), nhu ’ ng file23.txt thì không. [ ] Tu ’ o ’ ng u ´ ’ ng ba ˆ ´ t ky ` ký tu ˙ ’ nào trong so ˆ ´ các ký tu ˙ ’ na ˘ ` m trong da ˆ ´ u ngoa ˘ ˙ c vuông này. Ca ˘ ˙ p ký tu ˙ ’ , phân cách nhau bo ’ ’ i da ˆ ´ u tru ` ’ (-), ví du ˙ c-f, bie ˆ ’ u thi ˙ mo ˆ ˙ t dãy; ba ˆ ´ t ký ký tu ˙ ’ nào, theo tu ` ’ d ¯ ie ˆ ’ n, na ˘ ` m giu ˜ ’ a hai ký tu ˙ ’ này, ke ˆ ’ ca ’ hai ký tu ˙ ’ ta ˙ o ra dãy (c và f trong ví du ˙ ) cu ˜ ng tu ’ o ’ ng u ´ ’ ng vo ´ ’ i ma ˆ ˜ u. Ne ˆ ´ u ký tu ˙ ’ d ¯ a ˆ ` u tiên trong ngoa ˘ ˙ c vuông là hay ˆ , thì ma ˆ ˜ u (o ’ ’ vi ˙ trí này) se ˜ tu ’ o ’ ng u ´ ’ ng ta ˆ ´ t ca ’ các ký tu ˙ ’ , không d ¯ u ’ o ˙ ’ c chı ’ ra trong ngo Ma ˆ ˜ u tên ta ˆ ˙ p tin ra ˆ ´ t thu ’ o ` ’ ng xuyên su ’ ’ du ˙ ng trong dòng le ˆ ˙ nh có chu ´ ’ a ls. Hãy tu ’ o ’ ’ ng tu ’ o ˙ ’ ng là ba ˙ n muo ˆ ´ n xem thông tin cu ’ a mo ˆ ˙ t thu ’ mu ˙ c, trong d ¯ ó có chu ´ ’ a mo ˆ ˙ t so ˆ ´ lu ’ o ˙ ’ ng lo ´ ’ n các ta ˆ ˙ p tin d ¯ u ’ các da ˙ ng, ví du ˙ , ta ˆ ˙ p tin hình a ’ nh, phim vo ´ ’ i da ˙ ng gif, jpeg, avi, v.v. . . . D ¯ e ˆ ’ thu d ¯ u ’ o ˙ ’ c thông tin chı ’ cu ’ a ta ˆ ˙ p tin da ˙ ng jpeg, có the ˆ ’ dùng câu le ˆ ˙ nh kênh giao tác [user]$ ls *.jpg Ne ˆ ´ u trong thu ’ mu ˙ c có nhie ˆ ` u ta ˆ ˙ p tin, mà tên cu ’ a chúng là các so ˆ ´ go ˆ ` m bo ˆ ´ n chu ˜ ’ so ˆ ´ (thu ’ mu ˙ c /proc là mo ˆ ˙ t ví du ˙ +), thì le ˆ ˙ nh sau chı ’ d ¯ u ’ a ra danh sách các ta ˆ ˙ p tin có so ˆ ´ tu ` ’ 0500 d ¯ e ˆ ´ n 0999: kênh giao tác [user]$ ls -l 0[5-9]?? 3.7.8 Xóa các ký tu ˙ ’ d ¯ a ˘ ˙ c bie ˆ ˙ t Sau khi làm xong ta ˆ ´ t ca ’ các phép the ˆ ´ , các ký tu ˙ ’ \, ‘ và " còn la ˙ i trong dòng le ˆ ˙ nh (chúng d ¯ u ’ o ˙ ’ c su ’ ’ du ˙ ng d ¯ e ˆ ’ huy ’ bo ’ giá tri ˙ d ¯ a ˘ ˙ c bie ˆ ˙ t cu ’ a các ký tu ˙ ’ khác) se ˜ bi ˙ xóa he ˆ ´ t. 3.8 Shell - mo ˆ ˙ t ngôn ngu ˜ ’ la ˆ ˙ p trình Nhu ’ d ¯ ã nói o ’ ’ trên, d ¯ e ˆ ’ có the ˆ ’ xây du ˙ ’ ng ba ˆ ´ t ky ` gia ’ i thua ˆ ˙ t nào, cu ˜ ng ca ˆ ` n có các toán tu ’ ’ kie ˆ ’ m tra d ¯ ie ˆ ` u kie ˆ ˙ n. He ˆ ˙ vo ’ bash ho ˆ ˜ tro ˙ ’ các toán tu ’ ’ lu ˙ ’ a cho ˙ n if then else và case, cu ˜ ng nhu ’ các toán tu ’ ’ vòng la ˘ ˙ p for, while, until, nho ` ’ d ¯ ó nó (bash) tro ’ ’ thành mo ˆ ˙ t ngôn ngu ˜ ’ la ˆ ˙ p trình ma ˙ nh. 3.8.1 Toàn tu ’ ’ if và test (hoa ˘ ˙ c [ ]) Ca ˆ ´ u trúc cu ’ a toán tu ’ ’ d ¯ ie ˆ ` u kie ˆ ˙ n có da ˙ ng thu go ˙ n nhu ’ sau: if list1 then list2 else list3 fi trong d ¯ ó, list1, list2, và list3 là các chuo ˆ ˜ i câu le ˆ ˙ nh, phân cách nhau bo ’ ’ i da ˆ ´ u 3.8 Shell - mo ˆ ˙ t ngôn ngu ˜ ’ la ˆ ˙ p trình 43 pha ’ y và ke ˆ ´ t thúc bo ’ ’ i mo ˆ ˙ t da ˆ ´ u cha ˆ ´ m pha ˆ ’ y hay ký tu ˙ ’ dòng mo ´ ’ i. Ngoài ra, các chuo ˆ ˜ i này có the ˆ ’ d ¯ u ’ o ˙ ’ c d ¯ u ’ a vào da ˆ ´ u ngoa ˘ ˙ c nho ˙ n: list. Toán tu ’ ’ if kie ˆ ’ m tra giá tri ˙ d ¯ u ’ o ˙ ’ c tra ’ la ˙ i bo ’ ’ i các câu le ˆ ˙ nh tu ` ’ list1. Ne ˆ ´ u trong danh sách có vài câu le ˆ ˙ nh, thì kie ˆ ’ m tra giá tri ˙ d ¯ u ’ o ˙ ’ c tra ’ la ˙ i bo ’ ’ i câu le ˆ ˙ nh cuo ˆ ´ i cùng cu ’ a danh sách. Ne ˆ ´ u giá tri ˙ này ba ˘ ` ng 0, thì se ˜ thu ˙ ’ c hie ˆ ˙ n các le ˆ ˙ nh tu ` ’ list2; còn ne ˆ ´ u giá tri ˙ này khác không, thì se ˜ thu ˙ ’ c hie ˆ ˙ n nhu ˜ ’ ng le ˆ ˙ nh tu ` ’ list3. Giá tri ˙ d ¯ u ’ o ˙ ’ c tra ’ la ˙ i bo ’ ’ i toán tu ’ ’ if nhu ’ va ˆ ˙ y, trùng vo ´ ’ i giá tri ˙ mà chuo ˆ ˜ i le ˆ ˙ nh thu ˙ ’ c hie ˆ ˙ n (list2 hoa ˘ ˙ c list3) d ¯ u ’ a ra. Da ˙ ng d ¯ a ˆ ` y d ¯ u ’ cu ’ a le ˆ ˙ nh if nhu ’ sau: if list then list [ elif list then list ] [ else list ] fi (o ’ ’ d ¯ ây da ˆ ´ u ngoa ˘ ˙ c vuông chı ’ có nghı ˜ a là, nhu ˜ ’ ng gì na ˘ ` m trong nó, ngoa ˘ ˙ c vuông, không nha ˆ ´ t thie ˆ ´ t pha ’ i có). Bie ˆ ’ u thu ´ ’ c d ¯ u ´ ’ ng sau if hay elif thu ’ o ` ’ ng là câu le ˆ ˙ nh test, mà có the ˆ ’ d ¯ u ’ o ˙ ’ c bie ˆ ’ u thi ˙ bo ’ ’ i da ˆ ´ u ngoa ˘ ˙ c vuông [ ]. Le ˆ ˙ nh test thu ˙ ’ c hie ˆ ˙ n phép tính mo ˆ ˙ t bie ˆ ’ u thu ´ ’ c nào d ¯ ó, và tra ’ la ˙ i giá tri ˙ 0, ne ˆ ´ u bie ˆ ’ u thu ´ ’ c là d ¯ úng, và 1 trong tru ’ o ` ’ ng ho ˙ ’ p ngu ’ o ˙ ’ c la ˙ i. Bie ˆ ’ u thu ´ ’ c d ¯ u ’ o ˙ ’ c d ¯ u ’ a to ´ ’ i chu ’ o ’ ng trình test nhu ’ mo ˆ ˙ t tham so ˆ ´ cu ’ a chu ’ o ’ ng trình. Thay vì gõ test expression có the ˆ ’ d ¯ u ’ a bie ˆ ’ u thu ´ ’ c expression vào ngoa ˘ ˙ c vuông: [ expression ] Ca ˆ ` n chú ý ra ˘ ` ng, test và [ d ¯ ó là hai tên cu ’ a cu ’ a cùng mo ˆ ˙ t chu ’ o ’ ng trình, chu ´ ’ không pha ’ i là mo ˆ ˙ t phép bie ˆ ´ n hóa tha ˆ ` n thông nào d ¯ ó cu ’ a he ˆ ˙ vo ’ bash (chı ’ là cú pháp cu ’ a [ d ¯ òi ho ’ i pha ’ i có da ˆ ´ u d ¯ óng ngoa ˘ ˙ c). Và cu ˜ ng ca ˆ ` n chú ý ra ˘ ` ng o ’ ’ cho ˆ ˜ cu ’ a test trong ca ˆ ´ u trúc if có the ˆ ’ su ’ ’ du ˙ ng ba ˆ ´ t ky ` chu ’ o ’ ng trình nào. D ¯ e ˆ ’ ke ˆ ´ t thúc mu ˙ c này, chúng ta d ¯ u ’ a ra ví du ˙ su ’ ’ du ˙ ng if: kênh giao tác if [ -x /usr/bin/unicode_start ] ; then unicode_start else echo "hello world" fi Ve ˆ ` toán tu ’ ’ test (hay [ ]) ca ˆ ` n d ¯ i sâu ho ’ n. 3.8.2 Toán tu ’ ’ test và d ¯ ie ˆ ` u kie ˆ ˙ n cu ’ a bie ˆ ’ u thu ´ ’ c Bie ˆ ’ u thu ´ ’ c d ¯ ie ˆ ` u kie ˆ ˙ n, su ’ ’ du ˙ ng trong toán tu ’ ’ test, d ¯ u ’ o ˙ ’ c xây du ˙ ’ ng trên co ’ so ’ ’ kie ˆ ’ m tra thuo ˆ ˙ c tính ta ˆ ˙ p tin, so sánh các dòng và các so sánh so ˆ ´ ho ˙ c thông thu ’ o ` ’ ng. Bie ˆ ’ u thu ´ ’ c phu ´ ’ c ta ˙ p ho ’ n d ¯ u ’ o ˙ ’ c ta ˙ o ra tu ` ’ các thao tác d ¯ o ’ n và kép sau ("nhu ˜ ’ ng viên ga ˙ ch co ’ so ’ ’ "): • -a file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i. • -b file D ¯ úng ne ˆ ´ u file to ˆ ` n ta ˙ i, và là mo ˆ ˙ t ta ˆ ˙ p tin thie ˆ ´ t bi ˙ kho ˆ ´ i (block device) d ¯ a ˘ ˙ c bie ˆ ˙ t. • -c file D ¯ úng ne ˆ ´ u file to ˆ ` n ta ˙ i, và là mo ˆ ˙ t ta ˆ ˙ p tin thie ˆ ´ t bi ˙ ký tu ˙ ’ (charater device) d ¯ a ˘ ˙ c bie ˆ ˙ t. • -d file D ¯ úng ne ˆ ´ u file to ˆ ` n ta ˙ i và là mo ˆ ˙ t thu ’ mu ˙ c. • -e file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i. 44 Bash • -f file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và là mo ˆ ˙ t ta ˆ ˙ p tin thông thu ’ o ` ’ ng. • -g file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và d ¯ u ’ o ˙ ’ c d ¯ a ˘ ˙ t bit thay d ¯ o ˆ ’ i nhóm. • -h file hay -L file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và là liên ke ˆ ´ t me ˆ ` m (liên ke ˆ ´ t tu ’ o ˙ ’ ng tru ’ ng). • -k file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và d ¯ u ’ o ˙ ’ c d ¯ a ˘ ˙ t bit sticky. • -p file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và là tên cu ’ a mo ˆ ˙ t o ˆ ´ ng (kênh FIFO). • -p file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và là tên cu ’ a mo ˆ ˙ t o ˆ ´ ng (kênh FIFO). • -r file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và có quye ˆ ` n d ¯ o ˙ c. • -s file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và kích thu ’ o ´ ’ c lo ´ ’ n ho ’ n không. • -t fd D ¯ úng ne ˆ ´ u bo ˆ ˙ mô ta ’ cu ’ a ta ˆ ˙ p tin (fd) mo ’ ’ và chı ’ lên terminal. • -u file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và d ¯ u ’ o ˙ ’ c d ¯ a ˘ ˙ t bit thay d ¯ o ˆ ’ i ngu ’ o ` ’ i dùng. • -w file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và có quye ˆ ` n ghi. • -x file D ¯ úng ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và có quye ˆ ` n thu ˙ ’ c thi. • -0 file D ¯ úng, ne ˆ ´ u ta ˆ ˙ p tin có tên file và chu ’ so ’ ’ hu ˜ ’ u cu ’ a nó là ngu ’ o ` ’ i dùng mà ID có hie ˆ ˙ u lu ˙ ’ c chı ’ d ¯ e ˆ ´ n. • -G file D ¯ úng, ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và thuo ˆ ˙ c ve ˆ ` nhóm, xác d ¯ i ˙ nh bo ’ ’ i ID nhóm có hie ˆ ˙ u lu ˙ ’ c. • -S file D ¯ úng, ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và là socket. • -N file D ¯ úng, ne ˆ ´ u ta ˆ ˙ p tin có tên file to ˆ ` n ta ˙ i và thay d ¯ o ˆ ’ i tu ` ’ la ˆ ` n d ¯ u ’ o ˙ ’ c d ¯ o ˙ c cuo ˆ ´ i cùng. • file1 -nt file2 D ¯ úng, ne ˆ ´ u ta ˆ ˙ p tin file1 có tho ` ’ i gian su ’ ’ a d ¯ o ˆ ’ i muo ˆ ˙ n ho ’ n file2. . "cu ˜ "). 3 .7. 3 Phép the ˆ ´ các tham bie ˆ ´ n và bie ˆ ´ n so ˆ ´ Ký tu ˙ ’ $ d ¯ u ’ o ˙ ’ c su ’ ’ du ˙ ng cho các thao tác the ˆ ´ tham bie ˆ ´ n, the ˆ ´ các câu le ˆ ˙ nh và the ˆ ´ các bie ˆ ’ u. các ma ˆ ˜ u tên ta ˆ ˙ p tin và thu ’ mu ˙ c cu ˜ ng không d ¯ u ’ o ˙ ’ c thu ˙ ’ c hie ˆ ˙ n. 3 .7 Khai trie ˆ ’ n bie ˆ ’ u thu ´ ’ c 41 3 .7. 4 Phép the ˆ ´ các câu le ˆ ˙ nh Phép the ˆ ´ các. tu ` ’ cu ˜ ng không xa ’ y ra. 3 .7. 7 Khai trie ˆ ’ n các ma ˆ ˜ u tên ta ˆ ˙ p tin và thu ’ mu ˙ c (Pathname Expansion) Phép the ˆ ´ tên d ¯ u ’ o ` ’ ng da ˆ ˜ n và ta ˆ ˙ p tin (Pathname expansion)

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