Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
1,8 MB
Nội dung
CHƯƠNG 4
LẬP TRÌNH TRÊN LINUX
Updated 25.08.2008
Computer Sciences Div. @ 2008
1
Nội dung
Tổng quan về Shell
Một số thao tác với Shell
Shell Script
Lập trình C và C++ trong Linux
Updated 25.08.20
Computer Sciences Div.
2
Tổng quan về Shell
Khi bắt đầu một phiên làm việc, ta bắt đầu làm việc
với shell của Linux. Điều này được bắt đầu bằng
việc mở một cửa sổ xterm trong X Windows.
Shell sẽ dịch và thực hiện mọi lệnh mà ta gõ vào từ
bàn phím. Trên Linux hiện có một vài loại shell như
sau:
Bash: Bourne Again Shell. Đây là shell mạnh nhất và
thông dụng nhất trên Linux.
Csh: C shell. Hầu như tương thích với bash.
Ksh: Korn shell. Đây là shell nguyên thủy.
Zsh: Z shell. Shell mới nhất hiện nay, tương thích với
Bourne shell.
Updated 25.08.20
Computer Sciences Div.
3
Một số thao tác với Shell
Xác định Shell hiện hành
Xem các Shell có trên máy tính
Thay đổi Shell hiện hành
Xem các giá trị của các biến môi trường
Ấn định biến môi trường
Tính năng hoàn tất lệnh
Liệt kê danh sách lệnh đã sử dụng
Tái sử dụng lệnh
Updated 25.08.20
Computer Sciences Div.
4
Xác định Shell hiện hành
Tên lệnh: echo
Chức năng: Xem shell hiện hành hoặc xuất thông
báo ra màn hình.
Cú pháp: echo $SHELL
Ví dụ:
Updated 25.08.20
Computer Sciences Div.
5
Xem các Shell có trên máy tính
Cú pháp: cat /etc/shells
Chức năng: Xem các Shell đang có trên hệ điều
hành.
Ví dụ:
Updated 25.08.20
Computer Sciences Div.
6
Thay đổi Shell hiện hành
Cú pháp: chsh
Chức năng: đổi shell hiện hành trên hệ điều hành.
Ví dụ:
Updated 25.08.20
Computer Sciences Div.
7
Xem các giá trị của các biến môi trường
Cú pháp: echo . Với các biến môi
trường được sử dụng trong Linux gồm:
$HOME: Thư mục cá nhân người dùng.
$USER: Tài khoản của người đăng nhập của người dùng.
$SHELL: Shell hiện hành.
$PATH: Đường dẫn.
$PWD: Thư mục hiện hành
Updated 25.08.20
Computer Sciences Div.
8
Ấn định biến môi trường
Từ dấu nhắc, nhập tên biến môi trường dưới dạng
=. Thực hiện xong
thì xuất biến để cho mọi chương trình và kịch bản
chạy trong phiên làm việc đều có thể sử dụng biến.
Biến gán bằng phương pháp chỉ có hiệu lực trong
phiên làm việc, để biến có giá trị trong các phiên
làm việc sau ta phải hiệu chỉnh tập tin cấu hình.
Updated 25.08.20
Computer Sciences Div.
9
Tính năng hoàn tất lệnh
Linux hỗ trợ khả năng hoàn thành lệnh (Word
completion) rất hữu dụng bằng phím Tab. Khả năng
này sẽ giúp người dùng tiết kiệm được rất nhiều
thời gian.
Ví dụ: cd /usr/inc sau đó gõ phím Tab, Shell sẽ tự
động thêm “luce” để hoàn thành tên thư mục là
/usr/include.
Trước khi nhấn Tab
Updated 25.08.20
Sau khi nhấn Tab
Computer Sciences Div.
10
Tính năng hoàn tất lệnh
Nếu có nhiều khả năng để chọn lựa thì khi thực hiện
lệnh, Bash sẽ cho phép người dùng chọn lựa bằng
cách gõ Tab 2 lần.
Ví dụ: Nếu trong thư home/viethan có chứa 2 thư
mục tmdt và ttll thì khi ta gõ lệnh cd /home/viethan/t
và nhấn tab 2 lần sẽ có kết quả như sau:
Trước khi nhấn Tab
Updated 25.08.20
Sau khi nhấn Tab 2 lần
Computer Sciences Div.
11
Liệt kê danh sách lệnh đã sử dụng
Tên lệnh: history
Chức năng: hiển thị danh sách các lệnh đã dùng.
Ví dụ:
•
Chú ý: Lệnh cuối cùng đã sử dụng là lệnh history
Updated 25.08.20
Computer Sciences Div.
12
Tái sử dụng lệnh
Cú pháp: !! hoặc ! .
Ví dụ: !!: thực hiện lại lệnh gần nhất. Nếu gõ !91 thì
thực hiện lại lệnh số 91 trong danh sách các lệnh đã
thực hiện.
Updated 25.08.20
Computer Sciences Div.
13
Shell Script
Tổng quan về Shell Script
Cấu trúc kịch bản
Cách chạy một chương trình Shell
Khai báo biến
Các cấu trúc lệnh
Các ví dụ minh họa
Updated 25.08.20
Computer Sciences Div.
14
Tổng quan về Shell Script
Kịch bản Shell là một tập tin trong đó có chứa các
lệnh và các từ khoá nhằm tự động tự động hoá
những thao tác của người sử dụng.
Kịch bản Shell là một tập các lệnh Shell để thực
hiện một công việc nào đó.
Kịch bản Shell được kích hoạt bằng dòng lệnh. Kịch
bản Shell sử dụng các biến, các cấu trúc điều kiện
và lặp cho phép người sử dụng lập trình trên Shell.
Updated 25.08.20
Computer Sciences Div.
15
Cấu trúc kịch bản
Cấu trúc cơ bản của kịch bản:
#!/bin/bash
<
Khối lệnh
>
Ví dụ: Viết kịch bản với tên là Hello dùng để thực
hiện 2 công việc sau: Xoá và in ra màn hình câu
“Hello! Have a good day!”.
#! /bin/bash
Clear
echo -e “Hello! Have a good day!”
Updated 25.08.20
Computer Sciences Div.
16
Cách chạy một chương trình Shell
Để chạy một kịch bản Shell, ta cần thực hiện 2 bước
sau:
Bước 1: Cấp quyền kích hoạt kịch bản Shell bằng cách
sử dụng lệnh chmod [user]+x [Tên tập tin kịch bản].
Bước 2: Chạy kịch bản Shell bằng cách sử dụng lệnh ./
[Kịch bản Shell].
Soạn thảo kịch bản có tên ct1
Gán quyền thực thi cho tập tin
ct1 cho user
Thực thi chương trình
Updated 25.08.20
Computer Sciences Div.
17
Khai báo biến
Khi hàm số được gọi thực hiện, các tham số của
hàm này sẽ trở thành các tham biến vị trí
(Positional Parameters) trong thời gian thực hiện
hàm này. Sau khi thực hiện xong hàm số, các tham
biến vị trí sẽ được gán trả lại các giá trị mà chúng
có trước khi thực hiện hàm.
Để khai báo biến cục bộ, ta sử dụng cú pháp sau:
=giá trị
Để gán giá trị của biến này cho một biến khác, ta sử dụng
cú pháp: =$
Để gán giá trị cho biến bằng cách nhập giá trị đó từ bàn
phím, ta sử dụng cú pháp: read .
Updated 25.08.20
Computer Sciences Div.
18
Các cấu trúc lệnh
Cấu trúc rẽ nhánh if - else
Cấu trúc rẽ nhánh nhiều trường hợp (case)
Cấu trúc vòng lặp for
Cấu trúc vòng lặp while
Cấu trúc vòng lặp Until
Updated 25.08.20
Computer Sciences Div.
19
Cấu trúc rẽ nhánh if - else
Cú pháp:
if
then
[ elif then ]…
[ else ]
fi
Updated 25.08.20
Computer Sciences Div.
20
Cấu trúc rẽ nhánh if - else
Ví dụ:
#!/bin/bash
#Cau truc re nhanh
echo “Nhap so a:”
read a
echo “Nhap so b:”
read b
if [ $a –lt $b ]
#Kiem tra a co nho hon b khong
then
echo “a nho hon b”
elif [ $a –eq $b ]
#Kiem tra a co bang b khong
then
echo “a bang b” #Truong hop con lai
else echo “a lon hon b”
fi
#Ket thuc
Updated 25.08.20
Computer Sciences Div.
21
Cấu trúc rẽ nhánh if - else
Ví dụ:
Updated 25.08.20
Computer Sciences Div.
22
Cấu trúc rẽ nhánh nhiều trường hợp (case)
Cú pháp:
case $
in
Biến-1)
Biến-2)
Biến-3)
……
Biến-n)
*)
esac
Updated 25.08.20
Computer Sciences Div.
23
Cấu trúc rẽ nhánh nhiều trường hợp (case)
Ví dụ:
echo -n "Nhap bac luong: "
read bac_luong
case ${bac_luong} in
1)
echo "He so: 2,34"
;;
2)
echo "He so: 2,98"
;;
3)
echo "He so: 3,00";;
*)
echo "Khong co bac luong nay";;
esac
Updated 25.08.20
Computer Sciences Div.
24
Cấu trúc vòng lặp for
Cú pháp:
for in
do
Done
Ví dụ:
#!/bin/bash
#Vong lap for
word= "abcde"
# Khởi tạo một xâu
count = 0
# Khởi tạo biến đếm count
for letter in $word # Vòng lặp với biến letter
do
# Lệnh bắt đầu vòng lặp
count=‘expr $count + 1‘
# Tăng biến đếm lên 1
echo "Letter $count is [$letter]" # In ra biến letter
done
# Lệnh kết thúc vòng lặp
Updated 25.08.20
Computer Sciences Div.
25
Cấu trúc vòng lặp while
Cú pháp:
while [ ]
do
Done
Ví dụ:
#!/bin/bash
#Cau truc vong lap while
word="abcde"
# Khởi tạo một xâu
dem=0
# Khởi tạo biến đếm count
while [ $count -lt 5 ] # Vòng lặp với biến letter
do
# Lệnh bắt đầu vòng lặp
count=‘expr $count + 1‘
# Tăng biến count lên 1
echo "Letter $count is [$letter]" # In ra biến letter.
done
# Lệnh kết thúc vòng lặp
Updated 25.08.20
Computer Sciences Div.
26
Cấu trúc vòng lặp Until
Cú pháp:
until [ ]
do
Done
Ví dụ:
#!/bin/bash
#Cau truc vong lap Until
word="abcde"
# Khởi tạo một xâu
dem=1
# Khởi tạo biến đếm count
until [ $count -lt 5 ]
# Vòng lặp với biến letter
do
# Lệnh bắt đầu vòng lặp
count=‘expr $count + 1‘
# Tăng biến count lên 1
echo "Letter $count is [$letter]" # In ra biến letter.
done
# Lệnh kết thúc vòng lặp
Updated 25.08.20
Computer Sciences Div.
27
Các ví dụ minh họa
Chương trình tính tổng các số từ 1 – n
Chương trình tính giai thừa của một số
Chương trình đếm số từ của một tập tin
Updated 25.08.20
Computer Sciences Div.
28
Các ví dụ minh họa
Chương trình tính tổng các số từ 1 – n
Updated 25.08.20
Computer Sciences Div.
29
Các ví dụ minh họa
Chương trình tính giai thừa của một số
Updated 25.08.20
Computer Sciences Div.
30
Các ví dụ minh họa
Chương trình đếm số từ của một tập tin
Updated 25.08.20
Computer Sciences Div.
31
Lập trình C và C++ trong Linux
Trình biên dịch GNU là công cụ phát triển sẵn có
và thông dụng nhất trong Linux, được dùng để biên
dịch các kernel của hệ điều hành.
Ngoài ra, gcc còn cung cấp các thư viện và các tập
tin header cần thiết để biên dịch và chạy các
chương trình của người dùng.
Các chương trình C thường có phần mở rộng là .c
Các chương trình C++ thường có phần mở rộng
là .cc hoặc .C
Updated 25.08.20
Computer Sciences Div.
32
Lập trình C và C++ trong Linux
Để xây dựng và thực thi một chương trình C ta làm như sau:
Soạn thảo chương trình và lưu tập tin với phần mở rộng thích hợp.
#vi example.c
Thoát khỏi chương trình vi, từ dấu nhắc của hệ thống, ta gõ lệnh:
gcc -o . Ví dụ: gcc -o hello
hello.c.
Nếu biên dịch không thành công, gcc sẽ thông báo lỗi tại dòng lệnh
phát sinh lỗi. Nếu không có lỗi thì thực thi chương trình bằng câu
lệnh sau.
./
Ví dụ: ./hello
Lưu ý: cách dùng ./ trước tên chương trình là để chỉ cho máy
tìm kiếm chương trình khả thi trong thư mục hiện hành.
Updated 25.08.20
Computer Sciences Div.
33
TỔNG KẾT
Tổng quan về Shell
Một số thao tác với Shell
Shell Script
Lập trình C và C++ trong Linux
Updated 25.08.20
Computer Sciences Div.
34
CÂU HỎI LÝ THUYẾT VÀ BÀI TẬP
SGK
Updated 25.08.20
Computer Sciences Div.
35
[...]... 25.08.20 Computer Sciences Div 31 Lập trình C và C++ trong Linux Trình biên dịch GNU là công cụ phát triển sẵn có và thông dụng nhất trong Linux, được dùng để biên dịch các kernel của hệ điều hành Ngoài ra, gcc còn cung cấp các thư viện và các tập tin header cần thiết để biên dịch và chạy các chương trình của người dùng Các chương trình C thường có phần mở rộng là c Các chương trình C++ thường có phần mở... thực thi chương trình bằng câu lệnh sau ./ Ví dụ: /hello Lưu ý: cách dùng / trước tên chương trình là để chỉ cho máy tìm kiếm chương trình khả thi trong thư mục hiện hành Updated 25.08.20 Computer Sciences Div 33 TỔNG KẾT Tổng quan về Shell Một số thao tác với Shell Shell Script Lập trình C và C++ trong Linux Updated 25.08.20 Computer Sciences Div 34 CÂU HỎI LÝ THUYẾT VÀ BÀI TẬP SGK Updated... rộng là c Các chương trình C++ thường có phần mở rộng là cc hoặc C Updated 25.08.20 Computer Sciences Div 32 Lập trình C và C++ trong Linux Để xây dựng và thực thi một chương trình C ta làm như sau: Soạn thảo chương trình và lưu tập tin với phần mở rộng thích hợp #vi example.c Thoát khỏi chương trình vi, từ dấu nhắc của hệ thống, ta gõ lệnh: gcc -o Ví dụ: gcc -o hello hello.c... họa Chương trình tính tổng các số từ 1 – n Chương trình tính giai thừa của một số Chương trình đếm số từ của một tập tin Updated 25.08.20 Computer Sciences Div 28 Các ví dụ minh họa Chương trình tính tổng các số từ 1 – n Updated 25.08.20 Computer Sciences Div 29 Các ví dụ minh họa Chương trình tính giai thừa của một số Updated 25.08.20 Computer Sciences Div 30 Các ví dụ minh họa Chương trình đếm số... người sử dụng lập trình trên Shell Updated 25.08.20 Computer Sciences Div 15 Cấu trúc kịch bản Cấu trúc cơ bản của kịch bản: #!/bin/bash < Khối lệnh > Ví dụ: Viết kịch bản với tên là Hello dùng để thực hiện 2 công việc sau: Xoá và in ra màn hình câu “Hello! Have a good day!” #! /bin/bash Clear echo -e “Hello! Have a good day!” Updated 25.08.20 Computer Sciences Div 16 Cách chạy một chương trình Shell... nhất Nếu gõ !91 thì thực hiện lại lệnh số 91 trong danh sách các lệnh đã thực hiện Updated 25.08.20 Computer Sciences Div 13 Shell Script Tổng quan về Shell Script Cấu trúc kịch bản Cách chạy một chương trình Shell Khai báo biến Các cấu trúc lệnh Các ví dụ minh họa Updated 25.08.20 Computer Sciences Div 14 Tổng quan về Shell Script Kịch bản Shell là một tập tin trong đó có chứa các lệnh và các từ khoá... lệnh chmod [user]+x [Tên tập tin kịch bản] Bước 2: Chạy kịch bản Shell bằng cách sử dụng lệnh / [Kịch bản Shell] Soạn thảo kịch bản có tên ct1 Gán quyền thực thi cho tập tin ct1 cho user Thực thi chương trình Updated 25.08.20 Computer Sciences Div 17 Khai báo biến Khi hàm số được gọi thực hiện, các tham số của hàm này sẽ trở thành các tham biến vị trí (Positional Parameters) trong thời gian thực hiện