Hệ điều hành - Bài 5: Linux Shell

•Giới thiệu vềShells

• Môi trường làm việc với Shell

•Lập trình Shell (Bash)

• Debugging Shell Scripts

• Built-in Shell commands

• Các tiện ích (tools) trong Shell

pdf26 trang | Chia sẻ: Mr Hưng | Lượt xem: 925 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Hệ điều hành - Bài 5: Linux Shell, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
iệt viết hoa viết thường :set ic, :set noic Tìm từ đầu dòng, tìm từ cuối dòng hiện tạiftext, Ftext Tiếp tục tìm theo cùng ,ngược hướng đang thực hiện n, N Tìm text từ đầu , từ cuối file./text, ?text Ý nghĩaCú pháp Biểu thức chính quy • Là một mẫu các ký tự (pattern of characters) được dùng để so sánh với các cụm từ khác trong quá trình tìm kiếm. • Biểu diễn pattern phụ thuộc vào tools xử lý nó: – Trong sed,awk, vi: /pattern/ – Trong grep : ‘pattern’ • Sức mạnh của pattern là dùng các ký tự đặc biệt (metacharacters). UNIX Tools rocks. match UNIX Tools sucks. match UNIX Tools is okay. no match regular expression c k s Store pattern for later replay. •••\( \) Match one from a set.••••[ ] Escape following character.••••\ Match end of line/string.••••$ Match beginning of line/string.••••^ Match zero or more preceding characters.••••* Match any character.••••. ActiongrepawksedviSymbol Bảng các ký tự đặc biệt Group expressions to match•( ) Separate choices to match.•| Match zero or one preceding characters.•? Match one or more preceding characters.•+ Match word's beginning or end.•\ Match a range of instances.••\{ \} Match a range of instances.•{ } Replay subpattern in match.•••\n ActiongrepawksedviSymbol Bảng các ký tự đặc biệt ngo duy hoa - khmt - cntt - dhbk - hn ngo duy hoa - khmt - cntt - dhbk - hn bai giang Linux Shell 18 Thực hiện ví dụ với VI /^[A–Z]..$/Æ trả lại dòng số 5 /^[A–Z][a–z ]*3[0–5]/ Æ trả lại dòng số 2 /[a–z]*\./ Æ trả lại dòng số 1,2,7,8 /^ *[A–Z][a–z][a–z]$/Æ 4: Tom 5:Dan /^[A–Za–z]*[^,][A–Za–z]*$/Æ dòng số 5 ngo duy hoa - khmt - cntt - dhbk - hn ngo duy hoa - khmt - cntt - dhbk - hn bai giang Linux Shell 19 Kết quả sau thay thế :1,$s/\([0o]ccur\)ence/\1rence/ Chú ý cách lưu trữ và thay thế tags ngo duy hoa - khmt - cntt - dhbk - hn ngo duy hoa - khmt - cntt - dhbk - hn bai giang Linux Shell 20 Chú ý cách lưu trữ và thay thế tags Công cụ GREP • GREP - General Regular Expression Parser: là công cụ xử lý các biểu thức chính quy với mục đích: tìm và in các dòng text trong file thỏa mãn biểu thức chính quy. • Cùng họ với grep còn có: – egrep – extended grep: hỗ trợ nhiều metacharacters hơn. – fgrep – fixed or fast grep: coi tất cả mọi ký tự đều là các ký tự văn bản thường. Sử dụng grep • Cú pháp : grep ‘pattern’ fname1 fname2 • Một số chú ý: – pattern trong grep nên để trong nháy đơn để loại bỏ các ý nghĩa đặc biệt khác của ký tự. – Tham số thứ hai có thể là tên file text hoặc có thể là output của 1 câu lệnh khác thông qua cơ chế pipe. – Nếu tìm thấy thì trả lại $? = 0, ngược lại thì giá trị $? ≠ 0. grep Family • Syntax grep [-hilnv] [-e expression] [filename] egrep [-hilnv] [-e expression] [-f filename] [expression] [filename] fgrep [-hilnxv] [-e string] [-f filename] [string] [filename] – -h Do not display filenames – -i Ignore case – -l List only filenames containing matching lines – -n Precede each matching line with its line number – -v Negate matches – -x Match whole line only (fgrep only) – -e expression Specify expression as option – -f filename Take the regular expression (egrep) or a list of strings (fgrep) from filename Ví dụ với grep: datafile Một số câu lệnh cơ bản •Tìm trên nhiều file $grep NW datafile northwest NW Charles Main 3.0 .98 3 34 $ grep NW d* datafile: northwest NW Charles Main 3.0 .98 3 34 db: northwest NW Joel Craig 30 40 5 123 ngo duy hoa - khmt - cntt - dhbk - hn ngo duy hoa - khmt - cntt - dhbk - hn bai giang Linux Shell 21 Làm việc với biêu thức chính quy $grep '4$' datafile northwest NW Charles Main 3.0 .98 3 34 $ grep '^n' datafile northwest NW Charles Main 3.0 .98 3 34 northeast NE AM Main Jr. 5.1 .94 3 13 north NO Margot Weber 4.5 .89 5 9 Chú ý khoảng trắng $ grep TB Savage datafile grep: Savage: No such file or directory datafile: eastern EA TB Savage 4.4 .84 5 20 $ grep 'TB Savage' datafile eastern EA TB Savage 4.4 .84 5 20 Chú ý cách sử dụng dấu \ $ grep '5\..' datafile western WE Sharon Gray 5.3 .97 5 23 southern SO Suan Chin 5.1 .95 4 15 northeast NE AM Main Jr. 5.1 .94 3 13 central CT Ann Stephens 5.7 .94 5 13 $ grep '\.5' datafile north NO Margot Weber 4.5 .89 5 9 Một số ví dụ khác $ grep '\<north' datafile northwest NW Charles Main 3.0 .98 3 34 northeast NE AM Main Jr. 5.1 .94 3 13 north NO Margot Weber 4.5 .89 5 9 $ grep '[a-z]\{9\}' datafile northwest NW Charles Main 3.0 .98 3 34 southwest SW Lewis Dalsass 2.7 .8 2 18 southeast SE Patricia Hemenway 4.0 .7 4 17 northeast NE AM Main Jr. 5.1 .94 3 13 Streamlined editor - SED • SED: non-interactive editor: – Hỗ trợ các chức năng giống như vi – Người dùng thực hiện các lệnh thay vì trực tiếp chỉnh sửa nội dung trên màn hình. – Không thay đổi nội dung của file, trừ khi lưu trữ output thông qua shell redirection. – Hỗ trợ SED-script: là 1 tập các câu lệnh được sed hỗ trợ. Nhiệm vụ của SED • Nhận dữ liệu đầu vào là file text • Đưa từng dòng (line) của file vào buffer và xử lý bởi các lệnh yêu cầu của người dùng. • In kết quả sau xử lý ra màn hình. • Xóa dòng vừa xử lý trong buffer và thực hiện tương tự với dòng kế tiếp. ngo duy hoa - khmt - cntt - dhbk - hn ngo duy hoa - khmt - cntt - dhbk - hn bai giang Linux Shell 22 sed Syntax • Syntax: sed [-n] [-e] [‘request’] [file] sed [-n] [-f scriptfile] [file] – -n - only print lines specified with the print command (or the ‘p’ flag of the substitute (‘s’) command) – -f scriptfile - next argument is a filename containing editing commands – -e command - the next argument is an editing command rather than a filename, useful if multiple commands are specified – If the first line of a scriptfile is “#n”, sed acts as though -n had been specified Sử dụng SED • Cú pháp một yêu cầu: – [address[, address]][!]command [arguments] • Một số chú ý: – Địa chỉ (address) có thể là • Chỉ số dòng văn bản trong file text • Dòng văn bản hỏa mãn điều kiện của 1 biểu thức chính quy /pattern/. – Câu lệnh (command) là các ký tự – Thông thường yêu cầu thực hiện được đặt trong dấu nháy đơn: sed ‘user_request’ Sử dụng SED • Một số chú ý (tiếp): – Một yêu cầu có tối đa là 2 địa chỉ: • Nếu chỉ có 1 địa chỉ thì câu lệnh sẽ thực hiện với 1 dòng văn bản tương ứng địa chỉ đó. • Nếu có 2 địa chỉ thì câu lệnh thực hiện với tất cả các dòng văn bản từ địa chỉ thứ nhất đến địa chỉ thứ hai. – Dấu ! có nghĩa là phủ định. Ví dụ: addr!cmd nghĩa là thực hiện câu lệnh cmd với các dòng mà không có địa chỉ là addr. Sed Commands • Một số lệnh cơ bản trong SED (được sử dụng thường xuyên): •d - delete •p - print • y - transform • q - quit •s - substitute • a - append • i - insert • c - change Address and Command Examples • d deletes the all lines • 6d deletes line 6 • /^$/d deletes all blank lines • 1,10d deletes lines 1 through 10 • 1,/^$/d deletes from line 1 through the first blank line • /^$/,$d deletes from the first blank line through the last line of the file • /^$/,10d deletes from the first blank line through line 10 • /^ya*y/,/[0-9]$/d deletes from the first line that begins with yay, yaay, yaaay, etc. through the first line that ends with a digit Một số ví dụ minh họa ngo duy hoa - khmt - cntt - dhbk - hn ngo duy hoa - khmt - cntt - dhbk - hn bai giang Linux Shell 23 Substitute • Syntax: [address(es)]s/pattern/replacement/[flags] – pattern - search pattern – replacement - replacement string for pattern – flags - optionally any of the following • n a number from 1 to 512 indicating which occurrence of pattern should be replaced • g global, replace all occurrences of pattern in pattern space • p print contents of pattern space ngo duy hoa - khmt - cntt - dhbk - hn ngo duy hoa - khmt - cntt - dhbk - hn bai giang Linux Shell 24 Giới thiệu về AWK • Là công cụ xử lý văn bản rất mạnh: – Hỗ trợ bộ lọc (filter) với biểu thức chính quy (pattern matching) – Hỗ trợ làm việc với số (numerical) – Hỗ trợ khả năng phân chia các trường (field) trên các dòng văn bản. – Hỗ trợ cú pháp lập trình như ngôn ngữ C. – Lấy input từ : file, redirect, pipe,stdin,... • Mạnh hơn nhiều so với SED. Một số ví dụ minh họa Mặc định dấu phân cách là: • Một hoặc nhiều khoảng trắng • Tab ngo duy hoa - khmt - cntt - dhbk - hn ngo duy hoa - khmt - cntt - dhbk - hn bai giang Linux Shell 25 Thực hiện chương trình AWK • Các cách chạy 1 chương trình AWK: – awk 'program' input_file(s) • program và input_files được lấy từ các tham số truyền vào awk – awk 'program' • program được truyền vào dưới dạng tham số, dữ liệu lấy từ stdin (bàn phím) – awk -f program_file input_files • Chương trình program được đọc từ file BEGIN {action} pattern {action} pattern {action} . . . pattern { action} END {action} Cấu trúc chương trình AWK • Chương trình awk chứa các thành phần sau: – Khối BEGIN: • Thực hiện trước khi đọc dữ liệu input – pattern - action pairs • Lấy dữ liệu đầu vào • Thực hiện các lệnh với các dữ liệu thỏa mãn biểu thức chính quy – Khối END • Thực hiện sau khi đã đọc hết dữ liệu input. Cấu trúc Pattern-Action • Mỗi 1 chương trình đều có ít nhất một pattern hoặc một action hoặc cả hai • pattern mặc định sẽ tương thích với mọi dòng • action là in kết quả hiện tại ra màn hình • patterns được viết trong cú pháp biểu thức chính quy; • actions được đặt trong ngoặc { } Actions • action có thể thực hiện các các câu lệnh kiểu ngôn ngữ C như: – Các biểu thức với xâu ký tự hoặc với số. – Các hàm in/out dữ liệu. • action thực hiện trên các dòng được đọc trong buffer thỏa mãn điều kiện pattern. – Nếu pattern không thiết lập, action sẽ thực hiện với mọi dòng. – Nếu action không thiết lập, tất cả các dòng sẽ được hiển thị.. Các biến builtin trong awk Subscript separatorSUBSEP The record terminator; gawk sets it to the input text that matched the character or regex specified by RS RT Offset of string matched by match functionRSTART Input record separatorRS Length of string matched by match functionRLENGTH Output record separatorORS Output field separatorOFS Output format for numbersOFMT Number of records so farNR Number of fields in current recordNF ngo duy hoa - khmt - cntt - dhbk - hn ngo duy hoa - khmt - cntt - dhbk - hn bai giang Linux Shell 26 Subscript separatorSUBSEP The record terminator; gawk sets it to the input text that matched the character or regex specified by RS RT Offset of string matched by match functionRSTART Input record separatorRS Length of string matched by match functionRLENGTH Output record separatorORS Output field separatorOFS Output format for numbersOFMT Number of records so farNR Number of fields in current recordNF Các biến builtin trong awk Thank you! ngo duy hoa - khmt - cntt - dhbk - hn ngo duy hoa - khmt - cntt - dhbk - hn bai giang Linux Shell

Các file đính kèm theo tài liệu này:

  • pdfsv_bai_5_2906.pdf
Tài liệu liên quan