•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
26 trang |
Chia sẻ: Mr Hưng | Lượt xem: 1067 | Lượt tải: 0
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:
- sv_bai_5_2906.pdf