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

  • Tua de

  • 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

        • Trình khoi dong LILO cua HÐH Linux

        • Các trình khoi dong khác

        • Các phuong án khoi dong

        • Chuan bi các phân vùng trên dia

          • Loi khuyên khi tao phân vùng

          • Chuong trình de phân chia o dia

          • Windows NT và Linux: khoi dong qua OS Loader cua NT

          • Su dung trình khoi dong LILO

            • Cài dat và cau hình LILO

            • Cài dat các he dieu hành khác sau Linux

            • Chuyen thu muc /boot lên phân vùng DOS

            • Khoi dong Linux tu MS-DOS bang loadlin.exe

            • Bash

              • He vo là gì?

              • Các ký tu dac biet

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

Tài liệu liên quan