1
Bài 5. Linux Shell
Ni dung bài hc
•Gii thiu v Shells
Môi trường làm vic vi Shell
•Lp trình Shell (Bash)
Debugging Shell Scripts
Built-in Shell commands
Các tin ích (tools) trong Shell
1. Gii thiu vShells
Vtrí ca Shells
Vai trò ca Shells
•Người dùng btách bit vi phn cng bi lp
nhân (kernel).
•Người dùng tương tác vi lp nhân thông qua:
–Các li gi hthng.
–Các chương trình tin ích hthng.
•Các chương trình tin ích hthng nm trong
đĩa cng, được np vào RAM khi người dùng
cn thc hin công vic.
•Tp các chương trình này được gi là lp v
hay còn gi là Shell.
Vai trò ca Shells
ngo duy hoa - khmt - cntt - dhbk - hn
ngo duy hoa - khmt - cntt - dhbk - hn
bai giang Linux Shell
2
Công vic thc hin vi Shells Công vic thc hin vi Shells
•Htr người dùng môi trường xlý dòng lnh
làm các công vic sau:
–Xlý các câu lnh và thc hin chúng.
–Htrngôn nglp trình Shell và thông dch các
chương trình viết trên Shell.
Điu khin môi trường thông qua các biến và tham
s.
–Htr pipe để trao đổi gia các tiến trình.
–Htr định hướng li vào ra (I/O).
Làm vic vi File System thông qua tên file.
Các loi 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)
Du nhc đợi lnh
Nhn din shell đang làm vic: lnh echo
$echo $SHELL hoc %echo $shell
/bin/sh /bin/csh
Du nhc lnh
# khi ta là root, bt kshell nào
–% du nhc khi chy C shell
–$ du nhc khi chy Bash shell hoc K shell
Khuyến khích dùng Bash Shell
Các loi Shells Login shell
•Truy nhp vào hthng:
Local system : chy trc tiếp trên máy : login.
Network system: kết ni vi hthng thông
qua mng: ssh, telnet, rlogin.
•Vi mi kết ni Æhthng gi chương
trình getty kích hot làm vic.
Getty gi chương trình login x lý thông
tin đăng nhp Æbt 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 loi Shell: chsh
2. Môi trường làm vic Shell
Ni dung cn 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 cu hình Æthiết lp 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ếtha tShell cha (parent enviroment).
~/.bashrc.
•Chế độ không tương tác (non-interactive):
–Kếtha môi trường tShell cha.
~/.bashrc & ~/.bash_profile
Đọc ni dung các file, tviết thêm các
hàm hoc các alias hoc export ca 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
•Kim tra kết quca s thay đổi trên bng
cách chy li 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 Ælit kê, đặt hoc boptions
Basic Shell options
•Tnghĩcác dthc hin vi các
options này:
–Kim tra quyn on/off ca option
–Ly các ví dvi ký t*, ?
Các ký t đặc bit 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 Xlý các dòng lnh
•Các bước xlý dòng lnh trong Shell:
1. Bt chế độ ghi nht ký (history).
2. Phân tích cú pháp thành các cm t(tokens)
3. Cp nht li nht ký (history updated).
4. Xlý các du nháy (quotes).
5. Xác định các aliases functions.
6. Thiết lp: redirect, background, pipe.
7. Thay thếgiá trcho các biến (variables).
8. Thc hin các câu lnh đóng vai trò như tham s
truyn (command substitution)
9. Thay thếtên file bi các ký t đặc bit
(metacharacters).
10. Thc hin câu lnh gc.
ngo duy hoa - khmt - cntt - dhbk - hn
ngo duy hoa - khmt - cntt - dhbk - hn
bai giang Linux Shell
5
Các loi câu lnh
•Khi người dùng gõ 1 câu lnh, Shell s
thc hin kim tra theo các bước sau:
–Kim tra xem có phi alias không?
–Kim tra xem có phi functions không?
–Kim tra xem có phi built-in command
không?
–Kim tra xem có phi chương trình thc hin
không (executable programs)?
–Nếu không tha mãn Æthông báo li.
•Thc hin chương trình trong Shell???
pháp (Syntax)
•Cóhai loi options:
Short options: viết tt bi các chcá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
Khong trng là du phân cách gia các tham s
Thc hin 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