Bài 6
Lập trình trên Linux
20/01/2011
Hệ Điều Hành Unix/Linux
1
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 - Lập trình shell
Lập trình C/C++ trên Linux
20/01/2011
Hệ Điều Hành Unix/Linux
2
Giới thiệu Linux Shell
GUI
xterm
csh
20/01/2011
Hệ Điều Hành Unix/Linux
4
Giớ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.
Cú pháp: chsh [-s <shell>] [-l] [username]
Trong đó:
-l : liệt kê các loại shell hiện có (thông tin các shell
chứa trong tập tin /etc/shells).
Ví dụ: chuyển sang c shell
$ chsh csh ↵
20/01/2011
Hệ Điều Hành Unix/Linux
5
Mục đích của shell
Tương tác, 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.
Điều khiển shell từ dòng lệnh
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 thị. Ta
có thể điều khiển shell tự động như sau:
$ for file in *
>do
> if [ $(grep –l ‘main()’ $file)]
> then
> more $file
> fi
>done
20/01/2011
Hệ Điều Hành Unix/Linux
8
Điều khiển shell từ script
Nhược điểm của việc điề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ễ bảo trì ta có thể đưa các lệnh vào một tập tin và
yêu cầu shell đọc nội dung tập tin để thực thi.
Ví dụ: docfile.sh
#!/bin/bash
for file in *
do
sau:
/etc/profile : các thiết lập hệ thống chung
~/.bash_profile: các thiết lập của người dùng
~/.bashrc: tập tin khởi động trong một phiên làm việc
riêng biệt.
~/.bash_login: các thiết lập đăng nhập
~/.bash_history: các lịch sử các câu lệnh đã thực hiện
20/01/2011
Hệ Điều Hành Unix/Linux
11
/etc/profile
Chứa tất cả các thiết lập áp dụng đến tất 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.
Trên một số hệ thống, giá trị umask cũng được cấu
hình trong /etc/profile .
20/01/2011
Hệ Điều Hành Unix/Linux
12
/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.
20/01/2011
Hệ Điều Hành Unix/Linux
14
/etc/bashrc
alias ll='ls −l'
alias dir='ls −ba'
alias c='clear'
alias mroe='more'
alias ls='ls −−color'
pskill(){
pid=$(ps −ax | grep $1)
echo −n "killing $1 (process $pid)..."
kill −9 $pid
echo "slaughtered."
}
20/01/2011
Hệ Điều Hành Unix/Linux
15
20/01/2011
Hệ Điều Hành Unix/Linux
17
Cấu trúc shell script
Một shell scripts cơ bản gồm:
Dòng đầu 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ụ:
#!/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,…
Thực thi shell script:
C1:
Đặt quyền execute: $ chmod a+x <shellscript>
Chạy shell script: $./<shellscript>
C2: $ . <shellscript>
20/01/2011
Hệ Điều Hành Unix/Linux
18
Lệnh ghi ra màn hình
20/01/2011
Hệ Điều Hành Unix/Linux
20
Vi dụ 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 $hoten, chuc mot ngay vui ve!“
exit 0
Cách gọi thực hiện hello.sh:
$chmod a+x hello.sh
$./hello.sh
20/01/2011
Hệ Điều Hành Unix/Linux
21
Ví dụ: showsys.sh
#!/bin/bash
chuỗi hay từ một biến khác.
<tên biến> = `command`: Gán giá trị cho biến là kết
quả thực hiện của một lệnh
$<tên biến> : dùng để lấy giá trị trị của biến.
Ví dụ:
[ … ]#x = 38
[ … ]#echo $x
38
20/01/2011
Hệ Điều Hành Unix/Linux
25