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

Bài giảng hệ điều hành unix linux bài 6 đặng ngọc cường

62 382 0
Tài liệu được quét OCR, nội dung có thể không chính xác
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

Thông tin cơ bản

Định dạng
Số trang 62
Dung lượng 244,82 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

„ Shell có thê diễn dịch lệnh và cho phép người dùng lập trình script như một ngôn ngữ lập trình... s Đặt biên môi trường đôi với mỗi người sử dụng = Lập trình a Shell cung cấp tập hợp

Trang 2

Nội dung trình bày

Giới thiệu vê shell

Các thành phân của ngôn ngữ shell

Shell scripts - Lap trinh shell

Lap trinh C/C++ trén Linux

Trang 3

Giới thiệu Linux Shell

20/01/2011 Hé Diéu Hanh Unix/Linux

Trang 4

CHỚI thiệu Linux Shell

=» Shell (he vo) la mot môi trường tương tác mà người

dùng có thê giao tiêp với hệ điêu hành

= Linux cung cap mot so shell như: C shell (csh),

Korn shell (ksh), va Bourne shell (sh), BASH shell (bash) ,

=» BASH (Bourn Again Shell) la shell mac dinh trong

Linux

„ Shell có thê diễn dịch lệnh và cho phép người dùng

lập trình script như một ngôn ngữ lập trình

Trang 5

CHỚI thiệu Linux Shell

Linux cho phép chuyền đồi giữa nhiễu shell hoặc là

các console ảo (Virtual console) sử dụng lệnh chsh

Cu phap: chsh [-s <shell>] [-l] [username]

Trong do:

a -| : liét kKé cac loai shell hién co (théng tin cac shell

chứa trong tập tin /etc/shells)

Ví dụ: chuyền sang c shell

na $ chsh csh 1

Trang 6

Mục dich cua shell

= Twong tac, diễn dịch lệnh: shell đợi người sử dụng

gõ các lệnh tại dâu nhắc, sau đó gửi tới hệ thông yêu câu từ lệnh nhận được

s Đặt biên môi trường đôi với mỗi người sử dụng

= Lập trình

a Shell cung cấp tập hợp các lệnh từ đó có thê việt

chương trình (được gọi là shell script)

¬ Ngoài những lệnh đơn giản của hệ thông, shell còn được bồ sung thêm các câu trúc phức tạp như điều

khiên rẽ nhánh (í/case), vòng lặp (for/while)

Trang 7

Điêu khiên shell

= Shell co thê được sử dụng như một ngôn ngữ lập

trình gọi là ngôn ngữ shell Các chương trình được

viêt và thông dịch bởi shell goi la shell script

„ Có hai cách đề viêt chương trình điêu khién shell:

a Viét chương trình ngay từ dòng lệnh

¬ Có thê gộp các lệnh vào một tập tin và yéu cau shell thực thực thi tập tin này như một chương trình

Trang 8

Điều khiến shell từ dòng lệnh

s_ Ví dụ tìm và hiễn thị tập tin mà nội dung có chứa

chuỗi 'main()' Thay vì dùng lệnh grep đề tìm ra

từng file sau đó sử dụng lệnh more để hién thi Ta

có thê điêu khién shell tự động như sau:

Trang 9

Dieu khién shell tu script

= Nhuoc diém cua viéc diéu khién shell từ dòng lệnh là

khó lây lại khôi lệnh trước đó đề sửa đỗi và thực thi một

lần nữa

= Dé dé bảo trì ta có thê đưa các lệnh vào một tập tin và

yéu cau shell doc nội dung tập tin để thực thi

Trang 10

Môi trường Shell

s Môi trường shell là tât cả các thiết lập giúp cho việc chạy chương trình được chính xác

Trang 11

Các tập tin khởi tạo shell

s Khi shell được khởi động, nó đọc các files cầu hình Sau:

a /etc/profile : cac thiét lap hé th6ng chung

¬ ~/.bash_ profile: các thiết lập của người dùng

¬a ~/.bashrc: tập tin khởi động trong một phiên làm việc

riêng biệt

1 ~/.bash_ login: các thiết lập đăng nhập

¬a ~/.bash_ history: các lịch sử các câu lệnh đã thực hiện

20/01/2011 Hé Diéu Hanh Unix/Linux 11

Trang 12

/etc/profile

= Chwa tat ca cac thiét [4p 4p dung dén tat cả môi

trường người dùng

= Khi được triệu gọi tương tác, shell đọc các chỉ thị

(câu lệnh) trong /etc/profile Đây thường là các thiết

lập các biên shell như PATH, USER, MAIL,

HOSTNAME và HISTSIZE

s Trên một số hệ thông, giá trị umask cũng được câu

hình trong /etc/profile

Trang 13

Vi du /etc/profile

# System wide environment and startup

# programs, for login setup

PATH=SPATH: /usr/X11R6/bin

USER="`i1d -un) "

LOGNAME=SUSER

HOSTNAME= ` /bin/hostname `

export PATH USER LOGNAME HOSTNAME PS1

# Source initialization files for specific

# programs (ls, vim, less, .)

Trang 14

/etc/bashrc

„ Trên hệ thông /etc/profile chỉ lưu giữ môi trường

shell và các thiệt lập khởi động chương trình, trong

khi đó /etc/bashrc chứa các định nghĩa hệ thông

chung cho các hàm và bí danh shell

= Tập tin /etc/bashrc cũng có thê đê cập đên trong

/etc/profile hoặc trong các tập tin khởi tạo shell

riêng biệt của người dùng

Trang 15

pid=$(ps -ax | grep $1)

echo -n "killing $1 (process S$pid) "

Trang 17

Ngôn ngữ lập trình shell

= Dé soạn thảo một chương trình shell có thê sử

dung bât kỷ trình soạn thao văn bản nào (chăng

hạn: vi, emasc, )

s Các thành phân cơ bản của ngôn ngữ shell:

a Cau truc shell scripts

4 Bién shell: kiéu s6, chudi, tham sé va bién méi

trường

a Điều kiện: kiểm tra biểu thức lôgic bang shell

¬ Câu trúc điều khiển chương trình : if, case, while,

Trang 18

Câu trúc shelÏ script

= Mot shell scripts co’ ban gém:

a Dong dau tiên thường cho biết shell được sử dụng và

gọi trình thông dịch shell script tương ứng (ví dụ:

#I/bin/bash )

¬ Các chú thích bắt đầu với dấu thăng (#)

¬ Các dòng còn lại là các lệnh của Linux hoặc các câu

trúc điêu khiên,

a Thwc thi shell script:

a C1:

= Dat quyén execute: $ chmod a+x <shellscript>

=» Chay shell script: $./<shellscript>

ag C2:$ <shellscript>

Trang 19

Lệnh ghi ra màn hình

Cú pháp: echo [-nle] [biêu thức]

Dung dé hién thị giá trị các biên, biểu thức hoặc

chuôi ra màn hình

Trong đó:

a Tùy chon —n : không xuống dòng sau khi in ra

¬ -e: Nêu biêu thức là chuỗi đặt trong cặp nháy kép có

thê sử dụng các ký tự đặc biệt như \n, `b, \t, \On (ký

tự có mã ASCGI là n).,

Vi du:

¬a echo “How are you?”

a echo “Current user: $USER”

20/01/2011 Hé Diéu Hanh Unix/Linux 19

Trang 20

#Vi du sw dung lenh read va echo

echo “Nhap mot so: ”

read num

echo “So vua nhap la: Snum’”

Trang 21

V1 du Shell Script hello

=» $vi hello.sh

#!/bin/bash

#Day la chu thich: chuong trinh hello.sh

echo “Nhap vao ten ban:"

read hoten

echo “Xin chao Shoten, chuc mot ngay vui ve!"

exit 0

=» Cach goi thuc hién hello.sh:

a $chmod a+x hello.sh

a $./hello.sh

20/01/2011 Hé Diéu Hanh Unix/Linux 21

Trang 22

Ví dụ: showsys.sh

#!/bin/bash

clear

echo “Day la thong tin ve he thong:"

echo “Xin chao, SUSER"

echo “Hom nay la ngay ‘date’, tuan ‘date

Trang 23

Vi du Shell Script tao thu muc

Trang 24

Đặc điềm bién shell

Biên dùng lưu trữ giá khi chạy chương trình Shell

cho phép sử dụng biên nhưng không cân khai báo

và định nghĩa kiểu

Mặc định, tất cả các biên đều được khởi tạo và

chứa trị kiểu chuỗi (ngay cả khi gán giá trị là một sô

thì shell cũng xem là chuôi)

Shell và một vài lệnh tiện ích sẽ tự động chuyền

biên chuỗi thành sô đề thực hiện phép tính khi có

yêu câu

Biên shell có thể dùng đề lập trình hoặc đề điều

khiên môi trường Biên phân biệt chữ hoa thường

Trang 25

Sử dụng biên

= Cũng tương tự như ngôn ngữ lập trình, Shell cùng

cập phép gán và lây giá trị của biên như sau:

4 <tén bién> = <gia tri > : ở đây giá trị có thê là một số,

chuôi hay từ một biên khác

a <tén bién> = ‘command’: Gan gia tri cho bién la két

quả thực hiện của một lệnh

¬ $<iên biên> : dùng để lây giá trị trị của biên

Trang 26

Biên môi trường

„Khi trình shell khởi động nó cung cấp sẵn một số

biên được khai báo và gán giá trị mặc định, chúng được gọi là biên môi trường

s Các biên môi trường thường được viễt hoa để phân biệt với các biên do người dùng định nghĩa

s Mỗi môi trường đăng nhập chứa các biên môi

trường riêng biệt dùng cho mục đích riêng

s Đề hiễn thị các biên môi trường dùng lệnh env Đề tạo một biên môi trường mới dùng lệnh export

Trang 27

Một sô biên môi trường

HOSTNAME: Tên máy Linux

HOME: Thư mục chủ của người dùng

SHELL: Shell hién hanh

PWD: Thư mục hiện hành

PATH: Danh sách các thư mục đề tìm kiêm các

lệnh, phân cách bởi dâu hai châm (:)

USEH: Tên người dùng hiện hành

TERM: Kiểu của terminal hiện hành

PS1: Dâu nhắc shell

Trang 28

Cách dùng các dâu bọc

s Trong shell script có ba loại dâu đặc biệt dùng trong

các lệnh in ra màn hình hay lệnh gán, nhưng ý

nghĩa và cách thực hiện có khác biệt

=» Cac dau la:

a Dau huyén (~ )

a Dau nhay don (‘)

a Dau nhay kép ( “ )

Trang 29

Dâu huyền (`)

s Dùng đề gọi thực hiện một lệnh hệ thông trong shell

Script

= Vi du, trong shell script co cac dong:

na Currentdir = `pwd` (hoặc currentdir = $(pwdl) )

a linecount = `wc -Ì $filename'

= Trong do:

¬ Dòng 1 sẽ thực hiện lệnh pwd và gán đường dẫn

hiện hành vào biên currentdir

a Dong 2 thực hiện lệnh wc đêm sô dòng trong tap tin

$filename và gán cho biên linecount

20/01/2011 Hé Diéu Hanh Unix/Linux 29

Trang 30

Dâu nháy đơn (9 và nháy kép ()

Dung dé hién thi ra màn hình bởi lênh echo hoặc

gán giá trị cho biên dạng chuôi

Dâu nháy kép (°) khi in ra sẽ thực hiện với giá trị

của biên sau dâu §

Dầu nháy đơn (') khi in ra sẽ in nguyên dòng văn

ban trong cau lệnh

Vi du:

a myname = “John Terry"

ag echo "$myname*“ # In ra: John Terry

ag echo ‘$myname’ # In ra: $myname

Trang 31

Các ký tự đặc biệt của Bash

Thư mục home của người dùng hiện tại

Ky tự đại diện cho chuỗi

Ký tự đại diện cho mot ky tự

20/01/2011 Hé Diéu Hanh Unix/Linux 31

Trang 32

Biên tự động

s Còn gọi là biên chỉ đọc, hay tham số vị trí

= Các biên này được hỗ trợ sẵn

s Tên biên được cho trước

= Có 10 biên tự động: $0 > $9

¬ $0: Chứa tên của lệnh

¬ Các tham biên thực bắt đâu từ $1

z Nếu tham biên có vị trí lớn hơn 9 thì sử dụng

cú pháp ${} đê thu được các giá trị của chúng

¬ Ví dụ: ${10}

Trang 33

Tham biên vị trí đặc biệt

= Shell bash cé 3 tham bién vị trí đặc biệt:

a $#: Số lwong tham bién vị trí (không tính $0)

a $@:Tra về tât cả các tham biên vị trí được đưa ra

dưới dạng N xâu (ngoai tru $0)

a $*: Danh sách tât cả các tham biên, ngoại trừ $0

Trang 34

Biêu thức toán học

Cac toan tu: +, -, *, /, %

5 Sử dụng let, $(()), expr hoặc $[ ] để thực hiện tính

giá trị Diêu thức toán học

Vi du:

o let "sum = 4 + 3°

count = expr $count + 1°

area = $(($length * $width))

Trang 35

Biêu thức điều kiện

s Là biêu thức kiểm tra lôgic, trả vê kết quả là đúng

(1) hay sai (0) Nó thường được dùng trong các câu trúc điêu khiên chương trình (như if, while, }

s Trong shell script sử dụng lệnh [ ] hoặc test đề

kiểm tra biêu thức lôgïc

Trang 36

Ví dụ biêu thức điêu kiện

= Kiém tra a lon hon b

Trang 37

Biêu thức điều kiện

s Các biêu thức điêu kiện có thể là:

Trang 38

So sánh kiêu chuÔi

S1=S2 : chuỗi S1 bằng chuỗi S2 không?

S1 l=S2 : chuỗi S1 khác chuỗi S2 không?

Sĩ >S2: S1 đứng trước S2 theo thứ tự ab không ? Sĩ<S2: S1 đứng sau S2 theo thu tu ab khong?

-n S1 : chuỗi S1 có độ dài lớn hơn 0 không ?

-z S1 : chuỗi S1 có độ dài bằng 0 không 2

Trang 40

Kiêm tra tập tin, thư mục

-[ file: file có phải là tập tin không

-d dir: dir có phải là thư mục không

-c name: name có phải là tập tin ký tự không

-s name: name có kích thước lớn hơn 0 không

Trang 41

Các cầu trúc điều khiên

Trang 42

Cau trúc ré nhanh if-else

<nhóm lệnh> If [ Snum —It 9 ]

[elif <diéu kién>; then then

[else echo “$num lon hon 9”

Trang 43

echo “So $a nho hon so $b.”

elif [ Sa -eq $b ]; then

echo “So Sa bang so $b.”

Trang 44

Bài 3: Viết chương trình nhập password, hãy kiểm

tra password do dung hay sai? In thong bao ra man hình

Bài 2: Viết shell script giải phương trình bậc hai:

ax? +bx+c=0

Trang 45

Cầu trúc lựa chọn case

Trang 47

Bài tập

= Bai 1: Viết shell script thực nhập vào hai số và một

phép toán (+,-,x,/) sau đó hiên thị kêt quả

s Bài 2: Viết shell script tính điễm trung bình và xếp

loại của một thí sinh thi tuyên sinh (có ba cột điểm)

= Bai 3: Viét shell script thuwc hiện nhập vào môi giá trị

là thứ trong tuân Hiên thị chữ tiêng anh của thứ đó

Trang 49

Cau tric while

Trang 51

Bài tập

Bài 1: Tính tổng s = 1 +3 + 5+ +n

Bài 2: Tính giai thừa của một số nl

Bài 3: Việt shell script kiêm tra một số có phải là số

nguyên tô không 2

Bài 4: Viết shell script đêm số dòng và số từ trong

mot tap tin

Bai 5: Tinh tong s = 1 + 1/32 + 1/52 + .41/(2n4+1)?

Bai 6: Kiém tra một sô có phải là số hoàn thiện hay không? (nla Số hoàn thiện nêu tổng các ước - <n - của n bằng n)

172.16.32.222;

20/01/2011 Hé Diéu Hanh Unix/Linux 51

Trang 53

Các lệnh nội tại shell

s Ngoài các câu trúc trên, shell còn cho phép sử

dụng các lệnh nhảy và thoát sau:

¬ Lệnh BREAK ~ thoát khỏi vòng lặp

na Lénh CONTINUE — bo quả các câu lệnh còn lại của

vòng lặp và trở lại đầu vòng lặp

¬ Lệnh EXIT — kết thúc shell script

¬ Lệnh RETURN - trả vê từ hàm hoặc shell script

„ Chú ý: Trong phân điêu kiện của các câu trúc, sau

dâu “{” và trước dâu “]” phải có một ký tự trăng

Trang 54

Các chương trình tham khảo

Tính tông các số từ 1 đến n (n được nhập từ bàn

phim hoặc lây từ đôi sô dòng lệnh)

Tính giai thừa của một số n

Đêm số dòng trong một tập tin

Đêm sô từ của một tập tin

Trang 55

Tinh tong cac so tu 1 dén n

Trang 56

Tính øiat thừa của n (nÌ

Trang 57

Đêm sỐ dòng của một tập tin

Trang 58

Đêm sỐ tử trong một tập tin

done

echo “Tong so tu cua tap tin $1 la: $n”

}<$1

Trang 61

Tóm lại fedoro”

s Giới thiệu shell

a Lap trinh shell

20/01/2011 Hé Diéu Hanh Unix/Linux 61

Ngày đăng: 03/12/2015, 16:01

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm