1
Hệ điều hành Linux
Lê Đình Long
2
Chương 7
BASH shell
3
Nội dung
Linux Fundamentals
Gọi thực thi bash shell
Biến shell
Gán tắt (alias) lệnh
Tùy biến môi trường
Điều khiển tác vụ (job)
Lập trình shell
Tác vụ tự động
HCMUNS
4
Gọi thực thi bash shell
Linux Fundamentals
bash [options] [file]
-i: interactive
-l: login shell
unset – hủy biến shell
export – export biến cho môi trường thực thi
của các lệnh sau đó
HCMUNS
6
Biến môi trường
Linux Fundamentals
Điều khiển môi trường thực thi lệnh
Một số biến môi trường thông dụng:
●
HOME thư mục home
●
SHELL chương trình shell hiện tại
●
PATH đường dẫn để tìm các file thực thi
●
USER tên user login
●
TERM kiểu terminal hiện tại
●
DISPLAY khai báo hiển thị cho X-Window
●
PS1 dấu nhắc dòng lệnh
●
LANG ngôn ngữ hiện tại
HCMUNS
7
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:/usr/local/bin:$HOME/bin:.
export PATH
HCMUNS
9
Điều khiển tác vụ
Linux Fundamentals
Một tác vụ (job) là một tiến trình đang thực thi
Lệnh điều khiển tác vụ
^C thoát ngang
^Z tạm ngừng
jobs liệt kê các tác vụ đang thực thi
fg tiếp tục tác vụ ở foreground
bg,& tiếp tục tác vụ ở background
HCMUNS
1
0
Ví dụ về điều khiển tác vụ
Linux Fundamentals
$ cat
^Z
[1]+ Stopped cat
Shell script
Linux Fundamentals
File văn bản text chứa các lệnh (lệnh shell và
chương trình)
Được thông dịch bởi shell
Có thể được gọi trong chính shell script khác
Tham số được truyền trên dòng lệnh
HCMUNS
1
3
Chương trình “Hello”
Linux Fundamentals
$ cat > hello.sh
#!/bin/bash
# This is a comment: simple hello shell script
echo "Enter your name:"
read name
echo "Hello $name, have a nice day!"
^D
$ ./hello.sh
bash: ./hello.sh: Permission denied
$ chmod +x hello.sh
$ ./hello.sh
Enter your name:
Linux Fan
Hello Linux Fan, have a nice day!
●
$* tất cả các tham số
●
$n tham số thứ n
$ ./myscript source dest
$0 -> ./myscript
$1 -> source
$2 -> dest
HCMUNS
1
6
Một số biến đặc biệt
Linux Fundamentals
$0 tên của shell script/chương trình
$$ PID của shell hiện tại
$? mã trả về (exit code) của lệnh foreground
ngay trước đó
$! mã trả về (exit code) của lệnh background
ngay trước đó
HCMUNS
1
7
Thay thế lệnh
Linux Fundamentals
Thực thi lệnh và lấy kết quả xuất của lệnh đặt tại
[ expression ]
test expression
So sánh chuỗi: =, !=, -n, -z
So sánh số: -eq, -ne, -lt, -le, -gt, -ge
Kiểm tra file: -d, -f, -x, -e
Toán tử luận lý: !, -o, -a
[ string1 = string2 ]
[ $num -lt 10 ]
test ! -d mydir && mkdir mydir
[ -f myfile -a -x myfile ] && ./myfile
HCMUNS
2
0
Phát biểu điều kiện
Linux Fundamentals
Phát biểu IF
if [ exp ]; then
statements;
elif [ expr ]; then
statements;
else
statements;
fi
HCMUNS
2)
echo “Hai”;;
*)
echo “So khac”;;
esac
2
2
Phát biểu lặp
Linux Fundamentals
Phát biểu FOR
Dạng 1: for var [in list]; do
statements;
done
Dạng 2: for ((exp1; exp2; exp3)); do
statements;
done
Ví dụ
let “sum = 0”
for num in 1 3 5; do
let “sum = $sum + $num”
done
echo $sum
HCMUNS
2
3
Phát biểu lặp(tt)
Linux Fundamentals
2
5
Hàm
Linux Fundamentals
Khai báo hàm
func_name() {
statements;
}
Gọi hàm
func_name param1 param2
Truy xuất các tham số
$1, $2,
HCMUNS