Tải bản đầy đủ (.pdf) (32 trang)

Chương 7: Hệ điều hành Linux - Bash shell

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (313.04 KB, 32 trang )

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


sh: POSIX mode

Các file đặc biệt liên quan

/etc/profile – file khởi động cho tất cả user, thực thi đối
với login shell

~/.bash_profile – file khởi động cho từng user, thực thi
đối với login shell

~/.bashrc – file khởi động cho từng interactive shell
không phải là login shell

~/.bash_logout – file dọn dẹp khi thoát khỏi login shell
HCMUNS
5
Biến shell
Linux Fundamentals

Dùng trong lập trình shell và điều khiển môi
trường thực thi (environment)

Gán giá trị cho biến: var_name=value

Truy xuất giá trị của biến: $var_name
$ foo=”xin chao”
$ echo $foo

set – liệt kê các biến shell đã được định nghĩa


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

Gán tắt lệnh
Linux Fundamentals

Thay thế một chuỗi dài bằng một từ ngắn

Tạo các lệnh với tuỳ chọn đơn giản, ngắn gọn,
hữu dụng

alias tạo hoặc liệt kê các gán tắt (alias)

unalias loại bỏ một gán tắt
$ alias cp='cp -i'
$ alias ll='ls -l –-color=tty'
$ alias la='ls -la -–color=tty'
$ unalias la
$ alias
HCMUNS
8
Tuỳ biến môi trường
Linux Fundamentals

Thiết lập các biến môi trường

Lưu trong file ~/.bash_profile, ~/.bashrc để sử
dụng lại sau này
$ export PATH=$PATH:/usr/local/bin:$HOME/bin:.
$ source ~/.bash_profile
$ cat ~/.bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then

. ~/.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

$ tail & (chạy ở chế độ background)
[2] 2038
$ jobs
[1]- Stopped cat
[2]+ Stopped tail
$ bg %1 (tiếp tục job [1] ở background)
$ fg
$ fg %% (tiếp tục job cuối cùng ở foreground)
$ fg %1 (tiếp tục job [1] ở foreground)
$ kill %2 (kill job [2])
HCMUNS
1
1
Lập trình shell
Linux Fundamentals

Shell script

Biến

Biểu thức số học

Biểu thức so sánh

Cấu trúc điều khiển

Hàm
HCMUNS
1
2

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!

HCMUNS
1
4
Biến
Linux Fundamentals

Biến môi trường

Biến nội (built-in) của bash

Biến do người dùng định nghĩa

Biến đơn có thể lưu giá trị số nguyên hoặc ký tự
(không khai báo kiểu)

Chuỗi ký tự phải được bao bằng dấu nháy đơn
hoặc nháy kép
HCMUNS
1
5
Tham số vị trí
Linux Fundamentals

Tham số được truy xuất thông qua vị trí của nó

Tham số vị trí có thể được gán lại bằng lệnh “set”

Các biến nội thao tác với tham số vị trí:

$#số tham số được truyền


$* 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

vị trí hiện tại

Dùng nháy ngược (back-quote “` `”) hoặc $( )
$ date
Mon Oct 14 10:48:04 ICT 2003
$ today=$(date)
$ echo $today
Mon Oct 14 10:50:04 ICT 2003
$ ls -l `which tr`
HCMUNS
1
8
Biểu thức số học
Linux Fundamentals

Dùng let, expr hoặc $(( )) để gán trị

Phép toán số học: ++, , +, -, *, /, %, ==, !=,
>, <, &&, ||,
let “a = 1 + 1” (a = 2)
a=`expr $a “*” 6` (a = 12)
a=$(($a “/” 4)) (a = 3)
let “area = $len * $width”
let “percent = $num / 100”
let “remain = $n % $d”
HCMUNS
1
9
Biểu thức điều kiện
Linux Fundamentals

[ 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


Ví dụ
if [ “$1” = “” ]; then
echo “Enter value:”
read num
else
let “num = $1”
fi
2
1
Phát biểu điều kiện(tt)
Linux Fundamentals

Phát biểu CASE
case $var in
val1)
statements
;;
val2)
statements
;;
*)
statements
;;
esac
HCMUNS

Ví dụ
case $1 in
1)
echo “Mot”;;

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


Phát biểu WHILE
while expression; do
statements;
done

Ví dụ
let “num = 1”
while [ $num -lt 10 ]; do
echo $num
let “num = $num + 2”
done
HCMUNS
2
4
Một số phát biểu đặc biệt
Linux Fundamentals

BREAK – thoát khỏi vòng lặp

CONTINUE – bỏ qua phần còn lại của vòng lặp

EXIT – thoát khỏi shell script

RETURN – trở về từ hàm hoặc shell script
if [ $# -lt 2 ]; then
echo “Usage: `basename $0` source dest”
echo
exit 1
fi
HCMUNS

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

×