
1
Bài 5. Linux Shell
Nội dung bài học
•Giới thiệu về Shells
• Môi trường làm việc với Shell
•Lập trình Shell (Bash)
• Debugging Shell Scripts
• Built-in Shell commands
• Các tiện ích (tools) trong Shell
1. Giới thiệu vềShells
Vịtrí của Shells
Vai trò của Shells
•Người dùng bịtách biệt với phần cứng bởi lớp
nhân (kernel).
•Người dùng tương tác với lớp nhân thông qua:
–Các lời gọi hệthống.
–Các chương trình tiện ích hệthống.
•Các chương trình tiện ích hệthống nằm trong
đĩa cứng, được nạp vào RAM khi người dùng
cần thực hiện công việc.
•Tập các chương trình này được gọi là lớp vỏ
hay còn gọi là Shell.
Vai trò của Shells
ngo duy hoa - khmt - cntt - dhbk - hn
ngo duy hoa - khmt - cntt - dhbk - hn
bai giang Linux Shell

2
Công việc thực hiện với Shells Công việc thực hiện với Shells
•Hỗtrợ người dùng môi trường xửlý dòng lệnh
làm các công việc sau:
–Xửlý các câu lệnh và thực hiện chúng.
–Hỗtrợngôn ngữlập trình Shell và thông dịch các
chương trình viết trên Shell.
–Điều khiển môi trường thông qua các biến và tham
số.
–Hỗtrợ pipe để trao đổi giữa các tiến trình.
–Hỗtrợ định hướng lại vào ra (I/O).
– Làm việc với File System thông qua tên file.
Các loại Shells
•shBourne Shell (Original Shell) (Steven Bourne
of AT&T)
•cshC-Shell (C-like Syntax)(Bill Joy of Univ. of
California)
•kshKorn-Shell (Bourne+some C-shell)(David
Korn of AT&T)
•tcshTurbo C-Shell (More User Friendly C-
Shell).
• bash Bourne Again Shell (GNU Improved
Bourne Shell)
Dấu nhắc đợi lệnh
•Nhận diện shell đang làm việc: lệnh echo
$echo $SHELL hoặc %echo $shell
/bin/sh /bin/csh
•Dấu nhắc lệnh
– # khi ta là root, ởbất kỳshell nào
–% dấu nhắc khi chạy C shell
–$ dấu nhắc khi chạy Bash shell hoặc K shell
•Khuyến khích dùng Bash Shell
Các loại Shells Login shell
•Truy nhập vào hệthống:
– Local system : chạy trực tiếp trên máy : login.
– Network system: kết nối với hệthống thông
qua mạng: ssh, telnet, rlogin.
•Với mỗi kết nối Æhệthống gọi chương
trình getty kích hoạt làm việc.
• Getty gọi chương trình login xử lý thông
tin đăng nhập Æbật chương trình Shell
tương ứng cho người dùng.
ngo duy hoa - khmt - cntt - dhbk - hn
ngo duy hoa - khmt - cntt - dhbk - hn
bai giang Linux Shell

3
Login Shell Xác định Shell
•Xác định Shell thông qua:
– $SHELL
– /etc/passwd
•Đổi loại Shell: chsh
2. Môi trường làm việc Shell
Nội dung cần biết
• Start up Shell,Shell options.
• Command processing, command types.
• I/O standard,Pipe.
• Shell variables,User’s variables.
• Command syntax.
• Filename substitution.
• Command substitution.
• Quotes.
• Math, string operators.
Startup Shell
•Đọc file cấu hình Æthiết lập môi trường:
•Chế độ tương tác (interactive):
– Login shell (/bin/login) đọc các file:
• /etc/profile.
• ~/.bash_profile.
– Non-login shell (/bin/bash, icon,..) đọc file:
•Kếthừa từShell cha (parent enviroment).
• ~/.bashrc.
•Chế độ không tương tác (non-interactive):
–Kếthừa môi trường từShell cha.
~/.bashrc & ~/.bash_profile
•Đọc nội dung các file, tựviết thêm các
hàm hoặc các alias hoặc export của mình
ngo duy hoa - khmt - cntt - dhbk - hn
ngo duy hoa - khmt - cntt - dhbk - hn
bai giang Linux Shell

4
Interactive Non-login Shell
•Kiểm tra kết quảcủa sự thay đổi trên bằng
cách chạy lại chương trình Shell
Basic Shell options
Save entered commands in history filehistory
Indicates an error when trying to use a variable that is undefinednounset
Doesn't expand filename wildcards like * and ? (wildcard
expansion is sometimes called globbing)
noglob
Doesn't allow output redirection (>) to overwrite an existing filenoclobber
Doesn't allow use of a single CTRL-D to log off; use the exit
command to log off immediately (this has the same effect as
setting the shell variable IGNOREEOF=10)
ignoreeof
Enters emacs editing mode (on by default)emacs
DescriptionOption
$ set +/-o Æliệt kê, đặt hoặc bỏoptions
Basic Shell options
•Tựnghĩcác ví dụthực hiện với các
options này:
–Kiểm tra quyền on/off của option
–Lấy các ví dụvới ký tự*, ?
Các ký tự đặc biệt trong Shell
Word separatorsspace tab newline
Variable substitution (or command or
arithmetic substitution)
$
Command substitution`
Used in quoting other characters“‘\
Metacharacters for filename and pattern* ? [ ] ~ + - @ !
Redirection symbols< > &
Pipe|
Command grouping( )
Background execution&
Command separator;
MeaningCharacter
Interactive Shell Xửlý các dòng lệnh
•Các bước xửlý dòng lệnh trong Shell:
1. Bật chế độ ghi nhật ký (history).
2. Phân tích cú pháp thành các cụm từ(tokens)
3. Cập nhật lại nhật ký (history updated).
4. Xửlý các dấu nháy (quotes).
5. Xác định các aliases và functions.
6. Thiết lập: redirect, background, pipe.
7. Thay thếgiá trịcho các biến (variables).
8. Thực hiện các câu lệnh đóng vai trò như tham số
truyền (command substitution)
9. Thay thếtên file bởi các ký tự đặc biệt
(metacharacters).
10. Thực hiện câu lệnh gốc.
ngo duy hoa - khmt - cntt - dhbk - hn
ngo duy hoa - khmt - cntt - dhbk - hn
bai giang Linux Shell

5
Các loại câu lệnh
•Khi người dùng gõ 1 câu lệnh, Shell sẽ
thực hiện kiểm tra theo các bước sau:
–Kiểm tra xem có phải alias không?
–Kiểm tra xem có phải functions không?
–Kiểm tra xem có phải built-in command
không?
–Kiểm tra xem có phải chương trình thực hiện
không (executable programs)?
–Nếu không thỏa mãn Æthông báo lỗi.
•Thực hiện chương trình trong Shell???
Cú pháp (Syntax)
•Cóhai loại options:
– Short options: viết tắt bởi các chữcái : -o
– Long options: viết đầy đủ tên : --option_name
$ command options arguments
Commands & Arguments
•$ mv oldfile newfile
•$ echo Smile, you are in Bridgeport City
Smile, you are in Bridgeport City
$
oldfile
newfile
mv arguments
Smile,
you
are
in
Bridgeport
City
echo arguments
Khoảng trắng là dấu phân cách giữa các tham số
Thực hiện chương trình trong Shell Input, Output, Error
INPUT
shell
OUTPUT ERROR
ngo duy hoa - khmt - cntt - dhbk - hn
ngo duy hoa - khmt - cntt - dhbk - hn
bai giang Linux Shell