1. Trang chủ
  2. » Công Nghệ Thông Tin

Bash

25 94 0
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Chu ’ o ’ ng 3 Bash To ˆ ´ t go ˆ ˜ ho ’ n to ˆ ´ t nu ’ o ´ ’ c so ’ n – ca dao tu ˙ c ngu ˜ ’ Vie ˆ ˙ t Nam Trong pha ˆ ` n này chúng ta se ˜ d ¯ e ˆ ` ca ˆ ˙ p d ¯ e ˆ ´ n va ˆ ´ n d ¯ e ˆ ` làm vie ˆ ˙ c vo ´ ’ i Linux o ’ ’ che ˆ ´ d ¯ o ˆ ˙ text, hay còn d ¯ u ’ o ˙ ’ c go ˙ i là console hoa ˘ ˙ c terminal. Nhu ˜ ’ ng ngu ’ o ` ’ i dùng Linux mo ´ ’ i (newbie) thu ’ o ` ’ ng nghı ˜ se ˜ cha ˘ ’ ng bao gio ` ’ làm vie ˆ ˙ c o ’ ’ che ˆ ´ d ¯ o ˆ ˙ này, vì d ¯ ã có giao die ˆ ˙ n d ¯ o ˆ ` ho ˙ a. Tuy nhiên d ¯ ây là mo ˆ ˙ t ý kie ˆ ´ n sai la ˆ ` m, bo ’ ’ i vì ra ˆ ´ t nhie ˆ ` u công vie ˆ ˙ c có the ˆ ’ thu ˙ ’ c hie ˆ ˙ n nhanh và thua ˆ ˙ n tie ˆ ˙ n trong che ˆ ´ d ¯ o ˆ ˙ này ho ’ n là su ’ ’ du ˙ ng giao die ˆ ˙ n d ¯ o ˆ ` ho ˙ a. Và dù sao thì che ˆ ´ d ¯ o ˆ ˙ text cu ’ a HD ¯ H Linux không pha ’ i là che ˆ ´ d ¯ o ˆ ˙ text mo ˆ ˙ t tie ˆ ´ n trình cu ’ a MS-DOS. Vì Linux là HD ¯ H d ¯ a tie ˆ ´ n trình, nên ngay trong che ˆ ´ d ¯ o ˆ ˙ text d ¯ ã có kha ’ na ˘ ng làm vie ˆ ˙ c trong vài cu ’ ’ a so ˆ ’ . Và d ¯ e ˆ ’ soa ˙ n tha ’ o mo ˆ ˙ t ta ˆ ˙ p tin va ˘ n ba ’ n không nha ˆ ´ t thie ˆ ´ t pha ’ i cha ˙ y các trình soa ˙ n tha ’ o lo ´ ’ n và cha ˆ ˙ m cha ˙ p (d ¯ a ˘ ˙ c bie ˆ ˙ t trên các máy có ca ˆ ´ u hình pha ˆ ` n cu ´ ’ ng tha ˆ ´ p) cu ’ a môi tru ’ o ` ’ ng d ¯ o ˆ ` ho ˙ a. 3.1 He ˆ ˙ vo ’ là gì? Chúng ta thu ’ o ` ’ ng nói "ngu ’ o ` ’ i dùng làm vie ˆ ˙ c vo ´ ’ i he ˆ ˙ d ¯ ie ˆ ` u hành". D ¯ ie ˆ ` u này không hoàn toàn d ¯ úng, vì trên thu ˙ ’ c te ˆ ´ "liên he ˆ ˙ " vo ´ ’ i ngu ’ o ` ’ i dùng d ¯ u ’ o ˙ ’ c thu ˙ ’ c hie ˆ ˙ n bo ’ ’ i mo ˆ ˙ t chu ’ o ’ ng trình d ¯ a ˘ ˙ c bie ˆ ˙ t. Có hai da ˙ ng cu ’ a chu ’ o ’ ng trình d ¯ ã d ¯ e ˆ ` ca ˆ ˙ p - he ˆ ˙ vo ’ , hay shell, d ¯ e ˆ ’ làm vie ˆ ˙ c trong che ˆ ´ d ¯ o ˆ ˙ text (giao die ˆ ˙ n dòng le ˆ ˙ nh) và giao die ˆ ˙ n d ¯ o ˆ ` ho ˙ a GUI (Graphical User Interface), thu ˙ ’ c hie ˆ ˙ n "liên he ˆ ˙ " vo ´ ’ i ngu ’ o ` ’ i dùng trong môi tru ’ o ` ’ ng d ¯ o ˆ ` ho ˙ a. Ca ˆ ` n nói ngay ra ˘ ` ng, ba ˆ ´ t ky ` chu ’ o ’ ng trình nào trong Linux có the ˆ ’ kho ’ ’ i d ¯ o ˆ ˙ ng tu ` ’ dòng le ˆ ˙ nh cu ’ a he ˆ ˙ vo ’ (ne ˆ ´ u máy chu ’ X d ¯ ã cha ˙ y), cu ˜ ng nhu ’ qua giao die ˆ ˙ n d ¯ o ˆ ` ho ˙ a. Cha ˙ y chu ’ o ’ ng trình tu ` ’ dòng le ˆ ˙ nh cu ’ a he ˆ ˙ vo ’ tu ’ o ’ ng d ¯ u ’ o ’ ng vo ´ ’ i vie ˆ ˙ c nháy (d ¯ úp) chuo ˆ ˙ t lên bie ˆ ’ u tu ’ o ˙ ’ ng cu ’ a chu ’ o ’ ng trình trong GUI. D ¯ u ’ a các tham so ˆ ´ cho chu ’ o ’ ng trình trên dòng le ˆ ˙ nh tu ’ o ’ ng d ¯ u ’ o ’ ng vo ´ ’ i vie ˆ ˙ c chúng ta kéo và tha ’ cái gì d ¯ ó lên bie ˆ ’ u tu ’ o ˙ ’ ng chu ’ o ’ ng trình trong môi tru ’ o ` ’ ng d ¯ o ˆ ` ho ˙ a. Nhu ’ ng ma ˘ ˙ t khác, mo ˆ ˙ t so ˆ ´ chu ’ o ’ ng trình không the ˆ ’ cha ˙ y o ’ ’ GUI và chı ’ có the ˆ ’ thu ˙ ’ c hie ˆ ˙ n tu ` ’ dòng le ˆ ˙ nh. Nói ngoài le ˆ ` mo ˆ ˙ t chút, tên go ˙ i "he ˆ ˙ vo ’ " bi ˙ pha ’ n d ¯ o ˆ ´ i ra ˆ ´ t nhie ˆ ` u. Theo ý kie ˆ ´ n cu ’ a mo ˆ ˙ t so ˆ ´ chuyên gia ngôn ngu ˜ ’ cu ˜ ng nhu ’ chuyên gia Linux thì nên go ˙ i chu ’ o ’ ng trình này mo ˆ ˙ t cách d ¯ úng ho ’ n là "trình xu ’ ’ lý le ˆ ˙ nh" hay "trình biên di ˙ ch le ˆ ˙ nh". Tuy nhiên, tên go ˙ i "he ˆ ˙ vo ’ " (shell) d ¯ u ’ o ˙ ’ c dùng cho các chu ’ o ’ ng trình dùng d ¯ e ˆ ’ biên di ˙ ch le ˆ ˙ nh trong che ˆ ´ d ¯ o ˆ ˙ text trên mo ˙ i he ˆ ˙ tho ˆ ´ ng UNIX. Trên các he ˆ ˙ tho ˆ ´ ng UNIX d ¯ a ˆ ` u tiên có mo ˆ ˙ t chu ’ o ’ ng trình, go ˙ i là sh, vie ˆ ´ t ta ˘ ´ t cu ’ a shell. Sau d ¯ ó, vài bie ˆ ´ n the ˆ ’ cu ’ a sh d ¯ u ’ o ˙ ’ c phát trie ˆ ’ n và làm to ˆ ´ t ho ’ n, trong d ¯ ó có Bourne shell - phiên ba ’ n mo ’ ’ ro ˆ ˙ ng cu ’ a sh, vie ˆ ´ t bo ’ ’ i Steve Bourne. Du ˙ ’ án GNU (du ˙ ’ án phát trie ˆ ’ n chu ’ o ’ ng trình u ´ ’ ng du ˙ ng cu ’ a Stollman, xem http://www.gnu.org/) sau d ¯ ó cho ra d ¯ o ` ’ i he ˆ ˙ vo ’ bash, tên go ˙ i cu ’ a nó d ¯ u ’ o ˙ ’ c gia ’ i mã ra là Bourne-again shell, tu ´ ’ c là "la ˙ i là he ˆ ˙ vo ’ 28 Bash cu ’ a Bourne". Trên tie ˆ ´ ng Anh d ¯ ây là mo ˆ ˙ t cách cho ’ i chu ˜ ’ , vì tu ` ’ Bourne d ¯ o ˙ c gio ˆ ´ ng vo ´ ’ i tu ` ’ borne (sinh ra, d ¯ e ’ ra), và nhu ’ the ˆ ´ bash còn có the ˆ ’ gia ’ i mã là "shell d ¯ u ’ o ˙ ’ c sinh ra la ˆ ` n hai". Tie ˆ ´ p theo chúng ta se ˜ chı ’ xem xét bash, vì the ˆ ´ o ’ ’ du ’ o ´ ’ i khi nói d ¯ e ˆ ´ n he ˆ ˙ vo ’ , xin nga ˆ ` m hie ˆ ’ u d ¯ ó là bash Tu ˙ ’ mo ˆ ˙ t mình bash không thu ˙ ’ c hie ˆ ˙ n mo ˆ ˙ t công vie ˆ ˙ c u ´ ’ ng du ˙ ng nào. Nhu ’ ng nó ho ˆ ˜ tro ˙ ’ vie ˆ ˙ c thu ˙ ’ c thi mo ˙ i chu ’ o ’ ng trình khác, tu ` ’ vie ˆ ˙ c tìm kie ˆ ´ m chu ’ o ’ ng trình d ¯ u ’ o ˙ ’ c go ˙ i, cha ˙ y chúng d ¯ e ˆ ´ n vie ˆ ˙ c to ˆ ’ chu ´ ’ c du ˜ ’ lie ˆ ˙ u d ¯ a ˆ ` u vào/d ¯ a ˆ ` u ra. Ngoài ra, he ˆ ˙ vo ’ chi ˙ u trách nhie ˆ ˙ m ve ˆ ` công vie ˆ ˙ c vo ´ ’ i các bie ˆ ´ n môi tru ’ o ` ’ ng và thu ˙ ’ c hie ˆ ˙ n mo ˆ ˙ t vài bie ˆ ´ n d ¯ o ˆ ’ i (the ˆ ´ , hoán d ¯ o ˆ ’ i vi ˙ trí) các tham so ˆ ´ le ˆ ˙ nh. Nhu ’ ng tính cha ˆ ´ t chính cu ’ a he ˆ ˙ vo ’ , nho ` ’ d ¯ ó d ¯ u ’ a he ˆ ˙ vo ’ tro ’ ’ thành mo ˆ ˙ t công cu ˙ ma ˙ nh cu ’ a ngu ’ o ` ’ i dùng, d ¯ ó là nó bao go ˆ ` m mo ˆ ˙ t ngôn ngu ˜ ’ la ˆ ˙ p trình d ¯ o ’ n gia ’ n. Trong toán ho ˙ c tu ` ’ lâu d ¯ ã d ¯ u ’ o ˙ ’ c chu ´ ’ ng minh ra ˘ ` ng, ba ˆ ´ t ky ` mo ˆ ˙ t thua ˆ ˙ t toán nào cu ˜ ng có the ˆ ’ d ¯ u ’ o ˙ ’ c xây du ˙ ’ ng tu ` ’ hai (ba) thao tác co ’ ba ’ n và mo ˆ ˙ t toán tu ’ ’ d ¯ ie ˆ ` u kie ˆ ˙ n. He ˆ ˙ vo ’ cung ca ˆ ´ p các toán tu ’ ’ d ¯ ie ˆ ` u kie ˆ ˙ n và toán tu ’ ’ vòng la ˘ ˙ p. Nó su ’ ’ du ˙ ng các tie ˆ ˙ n ích và chu ’ o ’ ng trình khác (có trong thành pha ˆ ` n he ˆ ˙ d ¯ ie ˆ ` u hành, hay d ¯ u ’ o ˙ ’ c cài d ¯ a ˘ ˙ t riêng) d ¯ e ˆ ’ làm các thao tác co ’ ba ’ n cho ngôn ngu ˜ ’ la ˆ ˙ p trình mà nó ho ˆ ˜ tro ˙ ’ . D ¯ o ˆ ` ng tho ` ’ i cho phép d ¯ u ’ a các tham so ˆ ´ cu ˜ ng nhu ’ ke ˆ ´ t qua ’ làm vie ˆ ˙ c cu ’ a mo ˆ ˙ t chu ’ o ’ ng trình to ´ ’ i các chu ’ o ’ ng trình khác hay to ´ ’ i ngu ’ o ` ’ i dùng. Ke ˆ ´ t qua ’ thu d ¯ u ’ o ˙ ’ c là mo ˆ ˙ t ngôn ngu ˜ ’ la ˆ ˙ p trình ma ˙ nh. D ¯ ây cu ˜ ng là su ´ ’ c ma ˙ nh và là mo ˆ ˙ t trong các chu ´ ’ c na ˘ ng chính cu ’ a he ˆ ˙ vo ’ . Tru ’ o ´ ’ c khi ba ˘ ´ t d ¯ a ˆ ` u pha ˆ ` n này, ba ˙ n d ¯ o ˙ c nên bie ˆ ´ t các to ˆ ’ ho ˙ ’ p phím chính, su ’ ’ du ˙ ng d ¯ e ˆ ’ d ¯ ie ˆ ` u khie ˆ ’ n vie ˆ ˙ c nha ˆ ˙ p du ˜ ’ lie ˆ ˙ u trên dòng le ˆ ˙ nh. Nên nho ´ ’ ít nha ˆ ´ t cách su ’ ’ du ˙ ng cu ’ a các (to ˆ ’ ho ˙ ’ p) phím <Ctrl>+<C>, <Ctrl>+<D>, <Tab> và các phím có mu ˜ i tên. 3.2 Các ký tu ˙ ’ d ¯ a ˘ ˙ c bie ˆ ˙ t He ˆ ˙ vo ’ bash su ’ ’ du ˙ ng mo ˆ ˙ t vài ký tu ˙ ’ tu ` ’ bo ˆ ˙ 256 ký tu ˙ ’ ASCII cho các mu ˙ c d ¯ ính riêng, hoa ˘ ˙ c d ¯ e ˆ ’ bie ˆ ’ u thi ˙ các thao tác nào d ¯ ó, hoa ˘ ˙ c d ¯ e ˆ ’ bie ˆ ´ n d ¯ o ˆ ’ i bie ˆ ’ u thu ´ ’ c. Các ký tu ˙ ’ này bao go ˆ ` m: ‘ ~ ! @ # $ % ^ & * ( ) _ -- [ ] { } : ; ’ " / \ > < và ký tu ˙ ’ vo ´ ’ i mã 0, ký tu ˙ ’ hàng mo ´ ’ i (ta ˙ o ra khi nha ˆ ´ n phím <Enter>) và ký tu ˙ ’ khoa ’ ng tra ˘ ´ ng. Phu ˙ thuo ˆ ˙ c vào tình huo ˆ ´ ng các ký tu ˙ ’ d ¯ a ˘ ˙ c bie ˆ ˙ t này có the ˆ ’ su ’ ’ du ˙ ng vo ´ ’ i ý nghı ˜ a d ¯ a ˘ ˙ c bie ˆ ˙ t cu ’ a nó hay su ’ ’ du ˙ ng nhu ’ mo ˆ ˙ t ký tu ˙ ’ thông thu ’ o ` ’ ng. Nhu ’ ng trong d ¯ a so ˆ ´ các tru ’ o ` ’ ng ho ˙ ’ p không khuyên dùng các ký tu ˙ ’ vo ´ ’ i giá tri ˙ thu ´ ’ hai. Tru ’ o ´ ’ c he ˆ ´ t d ¯ ó là vie ˆ ˙ c su ’ ’ du ˙ ng chúng trong tên ta ˆ ˙ p tin và thu ’ mu ˙ c. Tuy nhiên các ký tu ˙ ’ _, - và . (da ˆ ´ u ga ˙ ch du ’ o ´ ’ i, ga ˙ ch ngang và da ˆ ´ u cha ˆ ´ m) thu ’ o ` ’ ng d ¯ u ’ o ˙ ’ c su ’ ’ du ˙ ng trong tên ta ˆ ˙ p tin, và d ¯ ây là mo ˆ ˙ t ví du ˙ cho tha ˆ ´ y không pha ’ i lúc nào chúng cu ˜ ng có giá tri ˙ d ¯ a ˘ ˙ c bie ˆ ˙ t. Trong tên ta ˆ ˙ p tin chı ’ da ˆ ´ u cha ˆ ´ m (.) và ga ˙ ch chéo (/) có giá tri ˙ d ¯ a ˘ ˙ c bie ˆ ˙ t. Ký hie ˆ ˙ u ga ˙ ch chéo dùng d ¯ e ˆ ’ phân chia tên các thu ’ mu ˙ c trong d ¯ u ’ o ` ’ ng da ˆ ˜ n, còn da ˆ ´ u cha ˆ ´ m có giá tri ˙ d ¯ a ˘ ˙ c bie ˆ ˙ t khi nó là ký tu ˙ ’ d ¯ a ˆ ` u tiên trong tên ta ˆ ˙ p tin (cho bie ˆ ´ t ta ˆ ˙ p tin là "a ˆ ’ n"). Vie ˆ ˙ c d ¯ u ’ a ngay ta ˆ ´ t ca ’ ý nghı ˜ a d ¯ a ˘ ˙ c bie ˆ ˙ t cu ’ a nhu ˜ ’ ng ký tu ˙ ’ này và các tình huo ˆ ´ ng su ’ ’ du ˙ ng chúng ta ˙ m tho ` ’ i không có ích. Chúng ta se ˜ xem xét chúng da ˆ ` n da ˆ ` n trong các pha ˆ ` n sau, khi ca ˆ ` n su ’ ’ du ˙ ng d ¯ e ˆ ´ n. Tuy nhiên, 3 ký hie ˆ ˙ u có ý nghı ˜ a lo ´ ’ n và ca ˆ ` n d ¯ e ˆ ` ca ˆ ˙ p d ¯ e ˆ ´ n d ¯ a ˆ ` u tiên. Ký hie ˆ ˙ u \ (ga ˙ ch chéo ngu ’ o ˙ ’ c) có the ˆ ’ go ˙ i là "ký hie ˆ ˙ u xóa bo ’ ý nghı ˜ a d ¯ a ˘ ˙ c bie ˆ ˙ t" cho ba ˆ ´ t ky ` ký tu ˙ ’ d ¯ a ˘ ˙ c bie ˆ ˙ t nào, d ¯ u ´ ’ ng ngay sau \. Ví du ˙ , ne ˆ ´ u muo ˆ ´ n su ’ ’ du ˙ ng khoa ’ ng tra ˘ ´ ng trong tên ta ˆ ˙ p tin, thì chúng ta ca ˆ ` n d ¯ a ˘ ˙ t tru ’ o ´ ’ c ký tu ˙ ’ khoa ’ ng tra ˘ ´ ng d ¯ ó mo ˆ ˙ t da ˆ ´ u ˙ Ví du ˙ , câu le ˆ ˙ nh sau: kênh giao tác teppi82@teppi:~$ cp lennon_imagine lennon\ imagine Các ký tu ˙ ’ ’ và " (ngoa ˘ ˙ c d ¯ o ’ n và ngoa ˘ ˙ c kép) có the ˆ ’ go ˙ i là "các ký tu ˙ ’ trích da ˆ ˜ n". Mo ˆ ˜ i ký tu ˙ ’ này luôn luôn d ¯ u ’ o ˙ ’ c su ’ ’ du ˙ ng trong mo ˆ ˙ t ca ˘ ˙ p vo ´ ’ i ba ’ n sao cu ’ a chính nó d ¯ e ˆ ’ d ¯ óng khung mo ˆ ˙ t bie ˆ ’ u thu ´ ’ c nào d ¯ ó, gio ˆ ´ ng nhu ’ trong các va ˘ n ba ’ n, sách báo, . . . thông thu ’ o ` ’ ng. Ne ˆ ´ u nhu ’ mo ˆ ˙ t d ¯ oa ˙ n 3.3 Thu ˙ ’ c thi các câu le ˆ ˙ nh 29 va ˘ n ba ’ n nào d ¯ ó d ¯ a ˘ ˙ t trong ngoa ˘ ˙ c d ¯ o ’ n, thì ta ˆ ´ t ca ’ các ký tu ˙ ’ na ˘ ` m trong ngoa ˘ ˙ c d ¯ o ’ n này có giá tri ˙ nhu ’ các ký tu ˙ ’ thông thu ’ o ` ’ ng, khôn mo ˆ ˙ t ký tu ˙ ’ nào có ý nghı ˜ a d ¯ a ˘ ˙ c bie ˆ ˙ t. Tro ’ ’ la ˙ i vo ´ ’ i ví du ˙ su ’ ’ du ˙ ng khoa ’ ng tra ˘ ´ ng trong tên ta ˆ ˙ p tin o ’ ’ trên, có the ˆ ’ nói, ne ˆ ´ u muo ˆ ´ n d ¯ a ˘ ˙ t ta ˆ ˙ p tin cái tên "lennon imagine" ca ˆ ` n d ¯ u ’ a tên d ¯ ó vào da ˆ ´ u ngoa ˘ ˙ c: kênh giao tác teppi82@teppi:~$ cp lennon_imagine ’lennon imagine’ Su ˙ ’ khác nhau trong cách su ’ ’ du ˙ ng ký tu ˙ ’ ’ và " d ¯ ó là, trong ngoa ˘ ˙ c d ¯ o ’ n ma ˆ ´ t ý nghı ˜ a d ¯ a ˘ ˙ c bie ˆ ˙ t ta ˆ ´ t ca ’ các ký tu ˙ ’ , còn trong ngoa ˘ ˙ c kép - ta ˆ ´ t ca ’ chúng ngoa ˙ i tru ` ’ $, ’ và \ (da ˆ ´ u d ¯ ô la, ngoa ˘ ˙ c d ¯ o ’ n và da ˆ ´ u ga ˙ ch ngu ’ o ˙ ’ c). 3.3 Thu ˙ ’ c thi các câu le ˆ ˙ nh Nhu ’ d ¯ ã nói o ’ ’ trên, mo ˆ ˙ t trong các chu ´ ’ c na ˘ ng chính cu ’ a he ˆ ˙ vo ’ là to ˆ ’ chu ´ ’ c vie ˆ ˙ c thu ˙ ’ c hie ˆ ˙ n các câu le ˆ ˙ nh mà ngu ’ o ` ’ i dùng d ¯ u ’ a vào trên dòng le ˆ ˙ nh. He ˆ ˙ vo ’ , nói riêng, cung ca ˆ ´ p cho ngu ’ o ` ’ i dùng hai thao tác d ¯ a ˘ ˙ c bie ˆ ˙ t d ¯ e ˆ ’ to ˆ ’ chu ´ ’ c vie ˆ ˙ c d ¯ u ’ a các câu le ˆ ˙ nh trên dòng le ˆ ˙ nh: ; và &. 3.3.1 Thao tác ; Ma ˘ ˙ c dù ngu ’ o ` ’ i dùng thu ’ o ` ’ ng chı ’ nha ˆ ˙ p trên dòng le ˆ ˙ nh tu ` ’ ng câu le ˆ ˙ nh mo ˆ ˙ t, nhu ’ ng còn có the ˆ ’ d ¯ u ’ a vào dòng le ˆ ˙ nh d ¯ ó ngay la ˆ ˙ p tu ´ ’ c vài câu le ˆ ˙ nh, và chúng se ˜ thu ˙ ’ c hie ˆ ˙ n la ˆ ` n lu ’ o ˙ ’ t tu ` ’ câu le ˆ ˙ nh này d ¯ e ˆ ´ n câu le ˆ ˙ nh khác. D ¯ e ˆ ’ làm d ¯ u ’ o ˙ ’ c d ¯ ie ˆ ` u này ca ˆ ` n su ’ ’ du ˙ ng ký tu ˙ ’ d ¯ a ˘ ˙ c bie ˆ ˙ t - ;. Ne ˆ ´ u dùng ký tu ˙ ’ này d ¯ e ˆ ’ phân chia các câu le ˆ ˙ nh, thì câu le ˆ ˙ nh tie ˆ ´ p theo se ˜ d ¯ u ’ o ˙ ’ c coi nhu ’ tham so ˆ ´ cu ’ a le ˆ ˙ nh phía tru ’ o ´ ’ c. Nhu ’ va ˆ ˙ y, ne ˆ ´ u nha ˆ ˙ p vào dòng le ˆ ˙ nh cái gì d ¯ ó gio ˆ ´ ng nhu ’ sau: kênh giao tác teppi82@teppi:~$ command1 ; command2 thì he ˆ ˙ vo ’ d ¯ a ˆ ` u tiên se ˜ thu ˙ ’ c hie ˆ ˙ n câu le ˆ ˙ nh command1, cho ` ’ cho le ˆ ˙ nh d ¯ ó hoàn thành, sau d ¯ ó cha ˙ y command2, cho ` ’ le ˆ ˙ nh hoàn thành, sau d ¯ ó la ˙ i d ¯ u ’ a ra dòng nha ˆ ˙ p le ˆ ˙ nh và cho ` ’ các hành d ¯ o ˆ ˙ ng tie ˆ ´ p theo cu ’ a ngu ’ o ` ’ i dùng. 3.3.2 Thao tác & Thao tác & d ¯ u ’ o ˙ ’ c dùng d ¯ e ˆ ’ to ˆ ’ chu ´ ’ c vie ˆ ˙ c thu ˙ ’ c hie ˆ ˙ n các câu le ˆ ˙ nh trong che ˆ ´ d ¯ o ˆ ˙ ne ˆ ` n sau. Ne ˆ ´ u d ¯ a ˘ ˙ t da ˆ ´ u & ngay sau câu le ˆ ˙ nh, thì he ˆ ˙ vo ’ se ˜ tra ’ la ˙ i quye ˆ ` n d ¯ ie ˆ ` u khie ˆ ’ n cho ngu ’ o ` ’ i dùng ngay sau khi cha ˙ y câu le ˆ ˙ nh, mà không d ¯ o ˙ ’ i cho câu le ˆ ˙ nh d ¯ ó hoàn thành. Ví du ˙ , ne ˆ ´ u nha ˆ ˙ p vào dòng le ˆ ˙ nh "command1 & command2 &", thì he ˆ ˙ vo ’ cha ˙ y câu le ˆ ˙ nh command1, ngay la ˆ ˙ p tu ´ ’ c cha ˙ y le ˆ ˙ nh command2, và sau d ¯ ó không cha ˆ ˙ m tre ˆ ˜ tra ’ la ˙ i dòng nha ˆ ˙ p le ˆ ˙ nh cho ngu ’ o ` ’ i dùng. 3.3.3 Thao tác && và || Cácthaotác&&và||lánhu ˜ ’ ngthaotácd ¯ ie ˆ ` ukhie ˆ ’ n.Ne ˆ ´ utrêndòngle ˆ ˙ nhlàcommand1 && command2, thì command2 se ˜ thu ˙ ’ c hie ˆ ˙ n và chı ’ thu ˙ ’ c hie ˆ ˙ n trong tru ’ o ` ’ ng ho ˙ ’ p tra ˙ ng thái thoát ra cu ’ a le ˆ ˙ nh command1 ba ˘ ` ng không (0), tu ´ ’ c là le ˆ ˙ nh d ¯ ó thu ˙ ’ c hie ˆ ˙ n thành công. Mo ˆ ˙ t cách tu ’ o ’ ng tu ˙ ’ , ne ˆ ´ u dòng le ˆ ˙ nh có da ˙ ng command1 || command2, thì command2 se ˜ thu ˙ ’ c hie ˆ ˙ n và chı ’ thu ˙ ’ c hie ˆ ˙ n khi tra ˙ ng thái thoát cu ’ a le ˆ ˙ nh command1 khác không. Chúng ta se ˜ không xem xét ma ˘ ˙ t ky ˜ thua ˆ ˙ t cu ’ a 30 Bash vie ˆ ˙ c thu ˙ ’ c hie ˆ ˙ n mo ˆ ˙ t câu le ˆ ˙ nh nào d ¯ ó. Chı ’ có the ˆ ’ nói nga ˘ ´ n go ˙ n ra ˘ ` ng, he ˆ ˙ vo ’ pha ’ i tìm mã (code) chu ’ o ’ ng trình, na ˙ p mã d ¯ ó vào bo ˆ ˙ nho ´ ’ , chuye ˆ ’ n các tham so ˆ ´ d ¯ ã nha ˆ ˙ p trên dòng le ˆ ˙ nh vào cho câu le ˆ ˙ nh, và sau khi thu ˙ ’ c hie ˆ ˙ n xong thì theo mo ˆ ˙ t cách nào d ¯ ó tra ’ la ˙ i ke ˆ ´ t qua ’ thu ˙ ’ c hie ˆ ˙ n le ˆ ˙ nh này cho ngu ’ o ` ’ i dùng hay tie ˆ ´ n trình khác. Chúng ta se ˜ xem xét qua các bu ’ o ´ ’ c này. Bu ’ o ´ ’ c d ¯ a ˆ ` u tiên - tìm kie ˆ ´ m câu le ˆ ˙ nh. Các câu le ˆ ˙ nh chia thành hai loa ˙ i: no ˆ ˙ i trú (mã cu ’ a chúng có trong mã cu ’ a chính he ˆ ˙ vo ’ ) và ngoa ˙ i trú (mã cu ’ a chúng na ˘ ` m trong mo ˆ ˙ t ta ˆ ˙ p tin riêng le ’ trên d ¯ ı ˜ a). He ˆ ˙ vo ’ luôn luôn tìm tha ˆ ´ y le ˆ ˙ nh no ˆ ˙ i trú, còn d ¯ e ˆ ’ tìm các le ˆ ˙ nh ngoa ˙ i trú ngu ’ o ` ’ i dùng, theo nguyên ta ˘ ´ c, pha ’ i chı ’ cho he ˆ ˙ vo ’ d ¯ u ’ o ` ’ ng da ˆ ˜ n d ¯ a ˆ ` y d ¯ u ’ to ´ ’ i ta ˆ ˙ p tin tu ’ o ’ ng u ´ ’ ng. Tuy nhiên d ¯ e ˆ ’ go ˜ ’ "gánh na ˘ ˙ ng" cho ngu ’ o ` ’ i dùng he ˆ ˙ vo ’ bie ˆ ´ t cách tìm le ˆ ˙ nh ngoa ˙ i trú trong các thu ’ mu ˙ c, mà d ¯ u ’ o ˙ ’ c lie ˆ ˙ t kê trong d ¯ u ’ o ` ’ ng da ˆ ˜ n tìm kie ˆ ´ m. Chı ’ khi (he ˆ ˙ vo ’ ) không the ˆ ’ tìm tha ˆ ´ y ta ˆ ˙ p tin ca ˆ ` n thie ˆ ´ t trong các thu ’ mu ˙ c d ¯ ó, nó mo ´ ’ i quye ˆ ´ t d ¯ i ˙ nh ra ˘ ` ng ngu ’ o ` ’ i dùng d ¯ ã nha ˆ ` m khi nha ˆ ˙ p tên le ˆ ˙ nh. Ve ˆ ` cách thêm thu ’ mu ˙ c vào d ¯ u ’ o ` ’ ng da ˆ ˜ n tìm kie ˆ ´ m chúng ta se ˜ nói d ¯ e ˆ ´ n o ’ ’ du ’ o ´ ’ i, còn bây gio ` ’ chúng ta se ˜ xem xét cách he ˆ ˙ vo ’ to ˆ ’ chu ´ ’ c vie ˆ ˙ c d ¯ u ’ a du ˜ ’ lie ˆ ˙ u vào cho câu le ˆ ˙ nh d ¯ ang thu ˙ ’ c hie ˆ ˙ n và vie ˆ ˙ c d ¯ u ’ a ke ˆ ´ t qua ’ to ´ ’ i cho ngu ’ o ` ’ i dùng. 3.4 D ¯ a ˆ ` u vào/d ¯ a ˆ ` u ra tiêu chua ˆ ’ n 3.4.1 Dòng du ˜ ’ lie ˆ ˙ u vào-ra Khi mo ˆ ˙ t chu ’ o ’ ng trình d ¯ u ’ o ˙ ’ c thu ˙ ’ c hie ˆ ˙ n, nó d ¯ u ’ o ˙ ’ c cung ca ˆ ´ p ba dòng du ˜ ’ lie ˆ ˙ u (hay còn go ˙ i là kênh): • d ¯ a ˆ ` u vào tiêu chua ˆ ’ n (standard input hay stdin). Qua kênh này du ˜ ’ lie ˆ ˙ u d ¯ u ’ o ˙ ’ c d ¯ u ’ a vào cho chu ’ o ’ ng trình; • d ¯ a ˆ ` u ra tiêu chua ˆ ’ n (standard output hay stdout). Qua kênh này chu ’ o ’ ng trình d ¯ u ’ a ra ke ˆ ´ t qua ’ làm vie ˆ ˙ c cu ’ a mình; • kênh thông báo lo ˆ ˜ i tiêu chua ˆ ’ n (standard error hay stderr). Qua kênh này chu ’ o ’ ng trình d ¯ u ’ a ra thông tin ve ˆ ` lo ˆ ˜ i. Tu ` ’ d ¯ a ˆ ` u vào tiêu chua ˆ ’ n chu ’ o ’ ng trình chı ’ có the ˆ ’ d ¯ o ˙ c, còn hai d ¯ a ˆ ` u ra và kênh thông báo lo ˆ ˜ i d ¯ u ’ o ˙ ’ c chu ’ o ’ ng trình su ’ ’ du ˙ ng chı ’ d ¯ e ˆ ’ ghi. Theo ma ˘ ˙ c d ¯ i ˙ nh d ¯ a ˆ ` u vào có liên ke ˆ ´ t 1 vo ´ ’ i bàn phím, còn d ¯ a ˆ ` u ra và kênh báo lo ˆ ˜ i hu ’ o ´ ’ ng d ¯ e ˆ ´ n terminal cu ’ a ngu ’ o ` ’ i dùng. Nói cách khác, toàn bo ˆ ˙ thông tin cu ’ a le ˆ ˙ nh hay chu ’ o ’ ng trình mà ngu ’ o ` ’ i dùng d ¯ ã cha ˙ y, và ta ˆ ´ t ca ’ nhu ˜ ’ ng thông báo lo ˆ ˜ i, d ¯ u ’ o ˙ ’ c d ¯ u ’ a ra cu ’ ’ a so ˆ ’ terminal. Tuy nhiên, chúng ta se ˜ tha ˆ ´ y o ’ ’ du ’ o ´ ’ i, có the ˆ ’ chuye ˆ ’ n hu ’ o ´ ’ ng thông báo d ¯ a ˆ ` u ra (ví du ˙ , vào ta ˆ ˙ p tin). D ¯ e ˆ ’ cho tha ˆ ´ y kênh thông báo lo ˆ ˜ i tiêu chua ˆ ’ n làm vie ˆ ˙ c nhu ’ the ˆ ´ nào, hãy thu ˙ ’ c hie ˆ ˙ n câu le ˆ ˙ nh ls vo ´ ’ i mo ˆ ˙ t tham so ˆ ´ không d ¯ úng, ví du ˙ dùng tham so ˆ ´ là mo ˆ ˙ t tên ta ˆ ˙ p tin không to ˆ ` n ta ˙ i. Trong tru ’ o ` ’ ng ho ˙ ’ p này, ls d ¯ u ’ a mo ˆ ˙ t tin nha ˘ ´ n báo lo ˆ ˜ i ra kênh thông báo lo ˆ ˜ i tiêu chua ˆ ’ n. Tuy nhiên, d ¯ o ˆ ´ i vo ´ ’ i ngu ’ o ` ’ i dùng thì trong tru ’ o ` ’ ng ho ˙ ’ p này kênh thông báo lo ˆ ˜ i tiêu chua ˆ ’ n không khác gì vo ´ ’ i d ¯ a ˆ ` u ra tiêu chua ˆ ’ n, bo ’ ’ i vì chúng ta cu ˜ ng tha ˆ ´ y thông báo lo ˆ ˜ i d ¯ ó trên cu ’ ’ a so ˆ ’ terminal. Làm vie ˆ ˙ c vo ´ ’ i d ¯ a ˆ ` u vào và d ¯ a ˆ ` u ra tiêu chua ˆ ’ n d ¯ u ’ o ˙ ’ c minh ho ˙ a to ˆ ´ t nha ˆ ´ t qua ví du ˙ các le ˆ ˙ nh echo và cat. 3.4.2 Le ˆ ˙ nh echo Câu le ˆ ˙ nh echo dùng d ¯ e ˆ ’ chuye ˆ ’ n to ´ ’ i d ¯ a ˆ ` u ra tiêu chua ˆ ’ n dòng ký tu ˙ ’ , mà d ¯ u ’ o ˙ ’ c d ¯ u ’ a vào làm tham so ˆ ´ cho nó. Sau d ¯ ó le ˆ ˙ nh này d ¯ u ’ a ra tín hie ˆ ˙ u chuye ˆ ’ n dòng và hoàn ta ˆ ´ t công vie ˆ ˙ c. Hãy thu ’ ’ thu ˙ ’ c hie ˆ ˙ n câu le ˆ ˙ nh sau: 1 gio ˆ ´ ng liên ke ˆ ´ t hóa ho ˙ c 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 31 kênh giao tác [user]$ echo ’xin chao cac ban!’ Tôi nghı ˜ ra ˘ ` ng lo ` ’ i gia ’ i thích se ˜ là thu ` ’ a thãi (chı ’ xin hãy su ’ ’ du ˙ ng da ˆ ´ u ngoa ˘ ˙ c d ¯ o ’ n, ne ˆ ´ u không ke ˆ ´ t qua ’ có the ˆ ’ se ˜ khác. Ne ˆ ´ u ba ˙ n d ¯ o ˙ c chú ý thì có the ˆ ’ gia ’ i thích ta ˙ i sao la ˙ i khác). 3.4.3 Le ˆ ˙ nh cat Chúng ta se ˜ xem xét le ˆ ˙ nh cat o ’ ’ d ¯ ây vì le ˆ ˙ nh này thu ’ o ` ’ ng làm vie ˆ ˙ c vo ´ ’ i d ¯ a ˆ ` u vào và d ¯ a ˆ ` u ra tiêu chua ˆ ’ n. Theo ma ˘ ˙ c d ¯ i ˙ nh ke ˆ ´ t qua ’ làm vie ˆ ˙ c cu ’ a le ˆ ˙ nh cat hu ’ o ´ ’ ng to ´ ’ i d ¯ a ˆ ` u ra tiêu chua ˆ ’ n. D ¯ e ˆ ’ chu ´ ’ ng minh là le ˆ ˙ nh này theo ma ˘ ˙ c d ¯ i ˙ nh tie ˆ ´ p nha ˆ ˙ n dòng du ˜ ’ lie ˆ ˙ u nha ˆ ˙ p vào, hãy cha ˙ y le ˆ ˙ nh cat không có tham so ˆ ´ . Ke ˆ ´ t qua ’ là con tro ’ chuye ˆ ’ n to ´ ’ i mo ˆ ˙ t dòng mo ´ ’ i, và ho ’ n nu ˜ ’ a có ve ’ nhu ’ không có gì xa ’ y ra. Lúc này câu le ˆ ˙ nh cho ` ’ các ký tu ˙ ’ d ¯ e ˆ ´ n tu ` ’ d ¯ a ˆ ` u vào tiêu chua ˆ ’ n. Hãy nha ˆ ˙ p ba ˆ ´ t ky ` ký tu ˙ ’ nào, và nó se ˜ xua ˆ ´ t hie ˆ ˙ n ngay la ˆ ˙ p tu ´ ’ c trên màn hình, tu ´ ’ c là chu ’ o ’ ng trình ngay la ˆ ˙ p tu ´ ’ c d ¯ u ’ a chúng to ´ ’ i d ¯ a ˆ ` u ra tiêu chua ˆ ’ n. Có the ˆ ’ tie ˆ ´ p tu ˙ c nha ˆ ˙ p các ký tu ˙ ’ , và chúng cu ˜ ng se ˜ xua ˆ ´ t hie ˆ ˙ n trên màn hình. Thông thu ’ o ` ’ ng bàn phím d ¯ u ’ o ˙ ’ c ca ˆ ´ u hình d ¯ e ˆ ’ nha ˆ ˙ p vào theo tu ` ’ ng dòng, vì the ˆ ´ ne ˆ ´ u ba ˙ n nha ˆ ´ n phím <Enter>, dòng ký tu ˙ ’ ba ˙ n vu ` ’ a nha ˆ ˙ p se ˜ d ¯ u ’ o ˙ ’ c d ¯ u ’ a to ´ ’ i le ˆ ˙ nh cat, và le ˆ ˙ nh này se ˜ la ˙ i d ¯ u ’ a du ˜ ’ lie ˆ ˙ u ra màn hình thông qua d ¯ a ˆ ` u ra tiêu chua ˆ ’ n. Nhu ’ va ˆ ˙ y, mo ˆ ˜ i dòng ký tu ˙ ’ nha ˆ ˙ p vào se ˜ d ¯ u ’ o ˙ ’ c hie ˆ ˙ n ra hay la ˆ ` n: mo ˆ ˙ t la ˆ ` n khi gõ và la ˆ ` n thu ´ ’ hai bo ’ ’ i câu le ˆ ˙ nh cat. Ne ˆ ´ u nha ˆ ´ n to ˆ ’ ho ˙ ’ p phím <Ctrl>+<D>, mà dùng d ¯ e ˆ ’ ngu ` ’ ng vie ˆ ˙ c nha ˆ ˙ p du ˜ ’ lie ˆ ˙ u, chúng ta se ˜ qua la ˙ i dòng nha ˆ ˙ p le ˆ ˙ nh. Cu ˜ ng có the ˆ ’ su ’ ’ du ˙ ng to ˆ ’ ho ˙ ’ p phím <Ctrl>+<C>, mà là câu le ˆ ˙ nh trong he ˆ ˙ vo ’ d ¯ e ˆ ’ du ` ’ ng chu ’ o ’ ng trình d ¯ ang cha ˙ y. Ne ˆ ´ u d ¯ u ’ a tên mo ˆ ˙ t ta ˆ ˙ p tin vào làm tham so ˆ ´ cho le ˆ ˙ nh cat, thì no ˆ ˙ i dung cu ’ a le ˆ ˙ nh này se ˜ d ¯ u ’ o ˙ ’ c d ¯ u ’ a to ´ ’ i d ¯ a ˆ ` u vào tiêu chua ˆ ’ n, tu ` ’ d ¯ ó le ˆ ˙ nh cat se ˜ d ¯ o ˙ c no ˆ ˙ i dung này và d ¯ u ’ a to ´ ’ i d ¯ a ˆ ` u ra tiêu chua ˆ ’ n (xem so ’ d ¯ o ˆ ` ). No ˆ ˙ i dung ta ˆ ˙ p tin -> D ¯ a ˆ ` u vào tiêu chua ˆ ’ n (stdin) --cat--> d ¯ a ˆ ` u ra tiêu chua ˆ ’ n (stdout) D ¯ ây chı ’ là mo ˆ ˙ t tru ’ o ` ’ ng ho ˙ ’ p riêng cu ’ a vie ˆ ˙ c chuye ˆ ’ n hu ’ o ´ ’ ng du ˜ ’ lie ˆ ˙ u d ¯ a ˆ ` u vào, mo ˆ ˙ t co ’ che ˆ ´ ra ˆ ´ t có ích cu ’ a he ˆ ˙ vo ’ . Và ta ˆ ´ t nhiên chúng ta ca ˆ ` n xem xét ky ˜ ho ’ n co ’ che ˆ ´ này. 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 Ma ˘ ˙ c dù, nhu ’ d ¯ ã nói o ’ ’ trên, thông thu ’ o ` ’ ng d ¯ a ˆ ` u vào/d ¯ a ˆ ` u ra cu ’ a mo ˆ ˙ t chu ’ o ’ ng trình liên ke ˆ ´ t vo ´ ’ i các d ¯ a ˆ ` u vào/d ¯ a ˆ ` u ra tiêu chua ˆ ’ n, trong he ˆ ˙ vo ’ còn có các môi tru ’ o ` ’ ng d ¯ a ˘ ˙ c bie ˆ ˙ t cho phép chuye ˆ ’ n hu ’ o ´ ’ ng d ¯ a ˆ ` u vào/d ¯ a ˆ ` u ra. 3.5.1 Su ’ ’ du ˙ ng >, < và >> D ¯ e ˆ ’ chuye ˆ ’ n hu ’ o ´ ’ ng d ¯ a ˆ ` u vào/ra, su ’ ’ du ˙ ng các ký hie ˆ ˙ u ">", "<" và ">>". Thu ’ o ` ’ ng su ’ ’ du ˙ ng vie ˆ ˙ c chuye ˆ ’ n hu ’ o ´ ’ ng d ¯ u ˜ ’ lie ˆ ˙ u ra cu ’ a câu le ˆ ˙ nh vào ta ˆ ˙ p tin. Du ’ o ´ ’ i d ¯ ây là mo ˆ ˙ t ví du ˙ tu ’ o ’ ng u ´ ’ ng: kênh giao tác maikhai@fpt:/some/where$ ls -l > /home/maikhai/ls.txt Theo le ˆ ˙ nh này danh sách ta ˆ ˙ p tin và thu ’ mu ˙ c con cu ’ a thu ’ mu ˙ c, mà tu ` ’ d ¯ ó ngu ’ o ` ’ i dùng thu ˙ ’ c hie ˆ ˙ n le ˆ ˙ nh ls 2 se ˜ d ¯ u ’ o ˙ ’ c ghi vào ta ˆ ˙ p tin /home/maikhai/ls.txt; khi này ne ˆ ´ u ta ˆ ˙ p tin 2 thu ’ mu ˙ c hie ˆ ˙ n tho ` ’ i 32 Bash ls.txt không to ˆ ` n ta ˙ i, thì nó se ˜ d ¯ u ’ o ˙ ’ c ta ˙ o ra; ne ˆ ´ u ta ˆ ˙ p tin d ¯ ã có, thì no ˆ ˙ i dung cu ’ a nó se ˜ bi ˙ xóa và ghi d ¯ è bo ’ ’ i danh sách nói trên. Ne ˆ ´ u ba ˙ n không muo ˆ ´ n xóa no ˆ ˙ i dung cu ˜ mà ghi thêm du ˜ ’ lie ˆ ˙ u d ¯ a ˆ ` u ra vào cuo ˆ ´ i ta ˆ ˙ p tin, thì ca ˆ ` n su ’ ’ du ˙ ng ký hie ˆ ˙ u >> thay cho >. Khi này khoa ’ ng tra ˘ ´ ng tru ’ o ´ ’ c và sau các ký hie ˆ ˙ u > hay >> không có ý nghı ˜ a và chı ’ dùng vo ´ ’ i mu ˙ c d ¯ ích thua ˆ ˙ n tie ˆ ˙ n, de ˆ ˜ nhìn. Ba ˙ n có the ˆ ’ chuye ˆ ’ n hu ’ o ´ ’ ng không chı ’ vào ta ˆ ˙ p tin, mà còn to ´ ’ i d ¯ a ˆ ` u vào cu ’ a mo ˆ ˙ t câu le ˆ ˙ nh khác hay to ´ ’ i mo ˆ ˙ t thie ˆ ´ t bi ˙ nào d ¯ ó (ví du ˙ , máy in). Ví du ˙ , d ¯ e ˆ ’ d ¯ u ’ a no ˆ ˙ i dung ta ˆ ˙ p tin /home/maikhai/ls.txt vu ` ’ a ta ˙ o o ’ ’ trên to ´ ’ i cu ’ ’ a so ˆ ’ terminal thu ´ ’ hai 3 có the ˆ ’ su ’ ’ du ˙ ng le ˆ ˙ nh sau: kênh giao tác maikhai@fpt:/sw$ cat /home/maikhai/ls.txt > /dev/tty2 Nhu ’ ba ˙ n tha ˆ ´ y, > dùng d ¯ e ˆ ’ chuye ˆ ’ n hu ’ o ´ ’ ng du ˜ ’ lie ˆ ˙ u cu ’ a d ¯ a ˆ ` u ra. Chu ´ ’ c na ˘ ng tu ’ o ’ ng tu ˙ ’ d ¯ o ˆ ´ i vo ´ ’ i d ¯ a ˆ ` u vào d ¯ u ’ o ˙ ’ c thu ˙ ’ c hie ˆ ˙ n bo ’ ’ i <. Ví du ˙ , có the ˆ ’ d ¯ e ˆ ´ m so ˆ ´ tu ` ’ trong ta ˆ ˙ p tin ls.txt nhu ’ sau (chú ý, d ¯ ây chı ’ là mo ˆ ˙ t ví du ˙ minh ho ˙ a, trên thu ˙ ’ c te ˆ ´ thu ’ o ` ’ ng su ’ ’ du ˙ ng câu le ˆ ˙ nh d ¯ o ’ n gia ’ n ho ’ n): kênh giao tác maikhai@fpt:/sw$ wc -w < /home/maikhai/ls.txt Cách chuye ˆ ’ n hu ’ o ´ ’ ng này thu ’ o ` ’ ng d ¯ u ’ o ˙ ’ c su ’ ’ du ˙ ng trong các script, cho các câu le ˆ ˙ nh mà thu ’ o ` ’ ng tie ˆ ´ p nha ˆ ˙ n (hay cho ` ’ ) du ˜ ’ lie ˆ ˙ u vào tu ` ’ bàn phím. Trong script dùng d ¯ e ˆ ’ tu ˙ ’ d ¯ o ˆ ˙ ng hóa mo ˆ ˙ t thao tác nào d ¯ ó, có the ˆ ’ d ¯ u ’ a các thông tin ca ˆ ` n thie ˆ ´ t cho câu le ˆ ˙ nh tu ` ’ ta ˆ ˙ p tin: trong ta ˆ ˙ p tin này ghi sa ˘ ˜ n nhu ˜ ’ ng gì ca ˆ ` n d ¯ e ˆ ’ thu ˙ ’ c hie ˆ ˙ n le ˆ ˙ nh d ¯ ó. Bo ’ ’ i vì các ký hie ˆ ˙ u <, > và >> làm vie ˆ ˙ c vo ´ ’ i các kênh tiêu chua ˆ ’ n (d ¯ a ˆ ` u vào hoa ˘ ˙ c d ¯ a ˆ ` u ra), chúng không chı ’ d ¯ u ’ o ˙ ’ c dùng theo các cách quen thuo ˆ ˙ c, thu ’ o ` ’ ng dùng, mà còn có the ˆ ’ theo cách khác, "la ˙ ma ˘ ´ t" ho ’ n. Ví du ˙ , các câu le ˆ ˙ nh sau là tu ’ o ’ ng d ¯ u ’ o ’ ng: kênh giao tác [user]$ cat > file [user]$ cat>file [user]$ >file cat [user]$ > file cat Tuy nhiên, tu ˙ ’ chúng (không có mo ˆ ˙ t le ˆ ˙ nh nào, tu ´ ’ c là không có kênh tiêu chua ˆ ’ n nào cho le ˆ ˙ nh) các ký tu ˙ ’ chuye ˆ ’ n hu ’ o ´ ’ ng này không the ˆ ’ d ¯ u ’ o ˙ ’ c su ’ ’ du ˙ ng, nhu ’ the ˆ ´ không the ˆ ’ , ví du ˙ , nha ˆ ˙ p vào dòng le ˆ ˙ nh sau: kênh giao tác [user]$ file1 > file2 mà thu d ¯ u ’ o ˙ ’ c ba ’ n sao cu ’ a mo ˆ ˙ t ta ˆ ˙ p tin nào d ¯ ó. Nhu ’ ng d ¯ ie ˆ ` u này không làm gia ’ m giá tri ˙ cu ’ a co ’ che ˆ ´ này, bo ’ ’ i vì các kênh tiêu chua ˆ ’ n có cho mo ˙ i câu le ˆ ˙ nh. Khi này, có the ˆ ’ chuye ˆ ’ n hu ’ o ´ ’ ng không chı ’ d ¯ a ˆ ` u vào và d ¯ a ˆ ` u ra tiêu chua ˆ ’ n, mà còn các kênh khác. D ¯ e ˆ ’ làm d ¯ u ’ o ˙ ’ c d ¯ ie ˆ ` u này, ca ˆ ` n d ¯ a ˘ ˙ t tru ’ o ´ ’ c ký hie ˆ ˙ u chuye ˆ ’ n hu ’ o ´ ’ ng so ˆ ´ cu ’ a kênh muo ˆ ´ n chuye ˆ ’ n. D ¯ a ˆ ` u vào tiêu chua ˆ ’ n stdin có so ˆ ´ 0, d ¯ a ˆ ` u ra tiêu chua ˆ ’ n stdout - so ˆ ´ 1, kênh thông báo lo ˆ ˜ i stderr - so ˆ ´ 2. Tu ´ ’ c là le ˆ ˙ nh chuye ˆ ’ n hu ’ o ´ ’ ng có da ˙ ng d ¯ a ˆ ` y d ¯ u ’ nhu ’ sau (xin d ¯ u ’ o ˙ ’ c nha ˘ ´ c la ˙ i, khoa ’ ng tra ˘ ´ ng ca ˙ nh > là không nha ˆ ´ t thie ˆ ´ t): command N > M 3 ba ˙ n ca ˆ ` n dùng to ˆ ’ ho ˙ ’ p phím <Ctrl>+<Alt>+<F2> d ¯ e ˆ ’ chuye ˆ ’ n to ´ ’ i cu ’ ’ a so ˆ ’ terminal này và d ¯ a ˘ ng nha ˆ ˙ p tru ’ o ´ ’ c 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ùng vo ´ ’ 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 [...]... ˆ Câu lenh sh ˙ ’ ˆ ’ Ban luôn luôn có the chay mot ban sao cua he vo bash nho câu lenh bash hay sh Khi này `’ ˆ’ ˆ ’ ˆ ˙ the bat ban sao này chay ˙ t script nào d neu d a tên cua script nhu mot tham so cho ˙ ˙ ´ ’ ˘ ’ ´ ’ ˙ mo có ˆ ´ ¯ó, ˆ ¯u ˆ ˆ ’ ’ ˆ ˙ ˙ ’ thuc hien script myscript can d ’a câu lenh "sh ˙ myscript" ` ¯u lenh bash Nhu vay, d ˆ ’ ˆ ˆ ˆ ˆ ’ ˆ ¯e ˙ ˙ ˙´ ´ ` ’ Neu xem noi dung˙ cua mot... ˆ ´ ` ˆ ’ ’ expression tuong ’ ’ ˜’ ˆ ˆ ˆ ’’ ˙ ˙ ˙ ’ ’ ¯o ` này có the d c trong phan ARITHMETIC EVALUATION cua trang man cua bash Ví ` ’ dˆ ¯e ˆ ˆ du, câu lenh ˙ ˆ ˙ ˙ kênh giao tác [user]$ echo $((2 + 3 * 5)) ˜ ´ ´ ’ ` cho ket qua bang "17" Neu bieu thuc không chính xác, bash se d ’a ra thông báo loi ˘ ˜ ¯u ˆ ˆ ˆ’ ´’ ˆ 3.7.6 Phân chia tu (word splitting) `’ ´ ´ ´ ˆ ´ Sau khi thuc hien xong các phép... dung bat ky giai thuat nào, cung can có các toán tu kiem tra ˜ ¯e ˆ’ ˆ ˆ ˆ ’ ¯ã ’ ˙ ˜ tro các˙ toán tu lua chon if then else và case, cung ` ’’ ’ d ˆ u kien He vo bash ho ’ ˜ ¯ie ˆ ˆ ’ ˆ ˙ toán˙ tu vòng lap for, while, ˙until, nho d nó (bash) tro thành mot ngôn ˙ ˙ ’’ ’’ nhu các ˘ `’ ¯ó ˆ ’ ˙ ngu lap trình manh ˙ ˜’ ˆ ˙ ˙ 3.8.1 ’’ Toàn tu if và test (hoac [ ]) ˘ ˙ ´ ` ’ ’’ ¯ie Cau trúc cua toán tu... nh dang dau nhac ˘ ˜ ¯i ¯e ˆ ˆ `’ ’ ’ ˆ ’ ˙ ˙ trong ˙bang 3.3 (chı d a ra mot vài trong so chúng làm ví du, danh sách d `y ˙ ’ xem trong ˙ ˙ ´ ’ ¯u ’ d nhu ¯a ¯u ˆ ˆ ˆ ’ ’ ˙ ˙ ’ trang man cua bash - gõ lenh "man bash" ) ˆ ˙ ´ ´ ’ Bang 3.3: Ký tu xác d nh dang dau nhac ˘ ¯i ˆ ’ ˙ ˙ ´ t qua thu d ’oc) ˙ ’ Cum ký tu Giá tri (ke ¯u ’ ˆ ’ ˙ ˙ ˙ ˙ \a Tín hieu âm thanh (mã ASCII 07) ˆ ˙ ’ \d Thoi gian o dang... câu lenh) Neu ban muon kiem chung ’ ˜ bash bo ´’ ´’ ˙ ˆ ˆ ˆ ˆ ˆ’ ˙ ´˙ ` ’ lai tác dung cua ký tu ˙ ¯a ’´’ ˆ ˆ ˆ ˆ ˆ ’ này, thì hãy nhap vào dòng lenh mot câu lenh bat ky, và d ˘ t truoc nó ˙ lenh) ký tu #, ví˙du "# ls", ban˙se thay rang he vo bo qua câu lenh này ˙ ˙ ˙ ’ ˙’ ˙ ´ ` (câu ˆ ˜ ˆ ˘ ˆ ˆ ’ ’ ˙ ˙ ` ˙ ˙ ´ ´ ` ´ ` ˆ ` Chúng ta se dung bài hoc ngan gon ve bash tai d˙ Tat nhiên, còn rat nhieu van... pháp" dòng lenh này (giong trong ngôn ngu, phân tích chu ngu˙ vi ngu) ˙ ˆ t trong nhung ˜’ ˜’, ˜’ Mo ˜’ ˆ ˆ ˙ ˙ ˙ ’’ ˆ’ buoc cua su phân tích này là phép mo hay khai trien bieu thuc (expansion) Trong bash có ˆ’ ´’ ’´’ ’ ’ ˙ ’ bay loai khai trien bieu thuc: ˆ’ ˆ’ ´’ ˙ • Khai trien dau ngoac (brace expansion); ˘ ˆ’ ´ ˆ ˙ ´ ´ • Thay the dau ngã (tilde expansion); ˆ ˆ ´ ´ ´ ´ • Phép the các tham bien và... ’`’ ’ ¯a ’ ’ ˙ bugs Trong truong hop thu hai, nguoi dùng so huu cua các tap tin sau ˙ ˙ ’’ ˙ ˜’ ’ old,new,dist, và `’ ´’ `’ ˆ ’ ’ ’ ˙ ˙ se thay d ˆ’i (thành root): ˜ ¯o • /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 ˜ ´ `’ ` Tuc là voi moi cap dau ngoac se tao ra vài dòng riêng re (so nhung dòng này bang so tu ˘... ˆ ˆ’ ˆ ˆ ’ ’ ’ ˙ ˙ ˙ ˙ không d ’oc thuc hien ¯u ’ ˆ ’ ˙ ˙ ˙ ˆ’ ˆ’ 3.7 Khai trien bieu thuc ´’ 3.7.4 41 ´ ˆ ˆ Phép the các câu lenh ˙ ˜ ´ ´ ` ’’ ˆ ´ ’ Phép the các câu lenh là mot công cu rat mang cua bash Ý nghıa cua nó nam o cho thay the ˘ ˜ ’ ˆ ˆ ˆ ˆ ˆ ˙ i ket qua thuc hien cua chúng Có hai dang phép the lenh: $(command) ˙ ˙ ’ ˙ ´ ˆ ’’ ˆ ’ ’ ˆ tên các câu lenh bo ´ ˆ ˆ ˙ ˙ ˙ ´ ´’ ´ ˙ ’’ ¯ây ’’ và... và thay the nó (bieu thuc) ´’ ´’ ´ ˆ ˆ ˆ’ ˆ ˆ ˆ ˆ’ ˙ ˙ d oc Có hai dang phép the so˙hoc: $[expression] ((expression)) ˙ ´ ´ ´ ’’i ket qua thu ¯u ’ ’ bo ˆ ˆ ˆ ’ ˙ ˙ Trong d expression d ’oc˙ hieu (d ’oc bash d c) nhu khi d ´’ng trong ngoac kép, nhung ˘ ¯o ¯u ¯ó ¯u ’ ˆ’ ¯u ’ ’ ’ ˙ ˙ ˙ expression lai d ˙oc d c nhu mot ký tu thuong Phía trong ´ u ngoac kép o trong ’’ nhung da ˘ ˜’ ¯u ’ ¯o ˆ ’ ’ ˆ ’ ’`’ ˙... boi ˘ ˙˜ ˘ xác ¯i˙ ˆ ˆ ˆ ˆ ’ ¯ã ˙n PS3, su dung trong lenh select Dau nhac, xác d nh boi bien PS4, d oc d a ra truoc ˙ ˙ ˙ ˙ ´ ´ ´ ’’ ’’ ´ bie ˘ ¯i ¯u ’ ¯u ˆ ˆ ˆ ˆ ’ ’ ’´’ ˙ ˙ ˙ ˙ ˜i câu lenh, trong lúc bash theo dõi quá trình thuc hien Giá tri theo mac d nh - "+" Neu ´ mo ˘ ¯i ˆ ˆ ˆ ’ ˆ ˙ ´ n, ban có the thay d ’i các bien PS1 và PS2 Khi này có the ˙ ’ dung bat ky ký ˙ ˙ ˙ ˙ ´ ` ´ có mong muo ¯o ˆ ˆ . i he ˆ ˙ vo ’ bash, tên go ˙ i cu ’ a nó d ¯ u ’ o ˙ ’ c gia ’ i mã ra là Bourne-again shell, tu ´ ’ c là "la ˙ i là he ˆ ˙ vo ’ 28 Bash cu ’ a Bourne" ’ the ˆ ´ bash còn có the ˆ ’ gia ’ i mã là "shell d ¯ u ’ o ˙ ’ c sinh ra la ˆ ` n hai". Tie ˆ ´ p theo chúng ta se ˜ chı ’ xem xét bash, vì

Ngày đăng: 02/10/2013, 21:20

Xem thêm: Bash

HÌNH ẢNH LIÊN QUAN

˙p tin hình a’nh, phim vo´’i da - Bash
p tin hình a’nh, phim vo´’i da (Trang 16)
Lúc d¯aˆ`u tu`’ maˆ˜u word hình thành moˆ - Bash
c d¯aˆ`u tu`’ maˆ˜u word hình thành moˆ (Trang 20)

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN