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

Lịch sử và các bản phân phối HĐH Linux từ trước đến nay phần 6 pdf

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 (57.2 KB, 6 trang )

3.5 Chuye
ˆ

n hu

o
´

ng d
¯
a
ˆ
`
u vào/d
¯
a
ˆ
`
u ra, d
¯
u

o
`

ng o
ˆ
´
ng và d
¯
a


ˆ
`
u lo
˙
c 33
Trong d
¯
ó, N và M - so
ˆ
´
cu

a kênh tiêu chua
ˆ

n (0, 1, và 2) hoa
˘
˙
c tên ta
ˆ
˙
p tin. Trong mo
ˆ
˙
t vài
tru

o
`


ng ho
˙

p có su


du
˙
ng các ký hie
ˆ
˙
u <, > và >> mà không chı

ra so
ˆ
´
kênh hay tên ta
ˆ
˙
p tin, vì
vào cho
ˆ
˜
còn thie
ˆ
´
u se
˜
d
¯

a
˘
˙
t, theo ma
˘
˙
c d
¯
i
˙
nh, 1 ne
ˆ
´
u dùng >, tu
´

c là d
¯
a
ˆ
`
u ra tiêu chua
ˆ

n, hoa
˘
˙
c 0 ne
ˆ
´

u
dùng <, tu
´

c là d
¯
a
ˆ
`
u vào tiêu chua
ˆ

n. Nhu

the
ˆ
´
, khi không có so
ˆ
´
nào chı

ra, > se
˜
d
¯
u

o
˙


c biên di
˙
ch
là 1 >, còn < se
˜
d
¯
u

o
˙

c biên di
˙
ch là 0 <. Ngoài vie
ˆ
˙
c chuye
ˆ

n hu

o
´

ng các kênh tiêu chua
ˆ

n d

¯
o

n
gia

n nhu

va
ˆ
˙
y, còn có kha

na
˘
ng không nhu
˜

ng chuye
ˆ

n hu

o
´

ng du
˜

lie

ˆ
˙
u vào kênh này hay kênh
khác, mà còn sao chép no
ˆ
˙
i dung cu

a các kênh tiêu chua
ˆ

n d
¯
ó. Ký hie
ˆ
˙
u & dùng d
¯
e
ˆ

thu
˙

c hie
ˆ
˙
n
d
¯

ie
ˆ
`
u này, khi d
¯
a
˘
˙
t nó (&) tru

o
´

c so
ˆ
´
cu

a kênh se
˜
chuye
ˆ

n du
˜

lie
ˆ
˙
u d

¯
e
ˆ
´
n:
command N > &M
Le
ˆ
˙
nh này có nghı
˜
a là, d
¯
a
ˆ
`
u ra cu

a kênh vo
´

i so
ˆ
´
N d
¯
u

o
˙


c gu


i d
¯
e
ˆ
´
n ca

d
¯
a
ˆ
`
u ra tiêu chua
ˆ

n, và sao
chép to
´

i kênh có so
ˆ
´
M. Ví du
˙
, d
¯

e
ˆ

sao chép thông báo lo
ˆ
˜
i vào d
¯
a
ˆ
`
u ra tiêu chua
ˆ

n, ca
ˆ
`
n dùng le
ˆ
˙
nh
2>&1, còn 1>&2 sao chép stdout vào stderr. Kha

na
˘
ng này d
¯
a
˘
˙

c bie
ˆ
˙
t có ích khi muo
ˆ
´
n ghi d
¯
a
ˆ
`
u
ra vào ta
ˆ
˙
p tin, vì khi d
¯
ó chúng ta vu
`

a có the
ˆ

nhìn tha
ˆ
´
y thông báo trên màn hình, vu
`

a ghi chúng

vào ta
ˆ
˙
p tin. Ví du
˙
, tru

o
`

ng ho
˙

p sau thu

o
`

ng d
¯
u

o
˙

c u
´

ng du
˙

ng trong các script cha
˙
y khi kho


i d
¯
o
ˆ
˙
ng
Linux:
kênh giao tác
teppi82@teppi:~$ cat hiho > /dev/null
cat: hiho: No such file or directory
teppi82@teppi:~$ cat hiho > /dev/null 2>&1
3.5.2 Su


du
˙
ng |
Mo
ˆ
˙
t tru

o
`


ng ho
˙

p d
¯
a
˘
˙
c bie
ˆ
˙
t cu

a chuye
ˆ

n hu

o
´

ng d
¯
a
ˆ
`
u ra là su
˙

to

ˆ

chu
´

c các d
¯
u

o
`

ng o
ˆ
´
ng (ha y còn có
the
ˆ

go
˙
i là kênh giu
˜

a các chu

o

ng trình, hoa
˘

˙
c ba
˘
ng chuye
ˆ
`
n). Hai hay vài câu le
ˆ
˙
nh, mà d
¯
a
ˆ
`
u ra
cu

a le
ˆ
˙
nh tru

o
´

c dùng làm d
¯
a
ˆ
`

u vào cho le
ˆ
˙
nh sau, liên ke
ˆ
´
t vo
´

i nhau (có the
ˆ

nói phân cách nhau,
ne
ˆ
´
u muo
ˆ
´
n) bo


i ký hie
ˆ
˙
u ga
˙
ch tha
˘


ng d
¯
u
´

ng - "|". Khi này d
¯
a
ˆ
`
u ra tiêu chua
ˆ

n cu

a le
ˆ
˙
nh d
¯
u
´

ng bên
trái so vo
´

i | du

o

˙

c chuye
ˆ

n d
¯
e
ˆ
´
n d
¯
a
ˆ
`
u vào tiêu chua
ˆ

n cu

a chu

o

ng trình, du
´

ng bên pha

i so vo

´

i |.
Ví du
˙
:
kênh giao tác
maikhai@fpt:/sw$ cat ls.txt | grep knoppix | wc -l
Dòng này có nghı
˜
a là ke
ˆ
´
t qua

cu

a le
ˆ
˙
nh cat, tu
´

c là no
ˆ
˙
i dung ta
ˆ
˙
p tin ls.txt, se

˜
d
¯
u

o
˙

c chuye
ˆ

n
d
¯
e
ˆ
´
n d
¯
a
ˆ
`
u vào cu

a le
ˆ
˙
nh grep, le
ˆ
˙

nh này se
˜
phân chia no
ˆ
˙
i dung nói trên và chı

la
ˆ
´
y ra nhu
˜

ng
dòng nào có chu
´

a tu
`

knoppix. D
¯
e
ˆ
´
n lu

o
˙


t mình, ke
ˆ
´
t qu

a cu

a le
ˆ
˙
nh grep d
¯
u

o
˙

c chuye
ˆ

n to
´

i d
¯
a
ˆ
`
u
vào cu


a le
ˆ
˙
nh wc -l, mà tính so
ˆ
´
nhu
˜

ng dòng thu d
¯
u

o
˙

c. D
¯
u

o
`

ng o
ˆ
´
ng su



du
˙
ng d
¯
e
ˆ

ke
ˆ
´
t ho
˙

p vài
chu

o

ng trình nho

la
˙
i vo
´

i nhau (mo
ˆ
˜
i chu


o

ng trình thu
˙

c hie
ˆ
˙
n mo
ˆ
˙
t bie
ˆ
´
n d
¯
o
ˆ

i xác d
¯
i
˙
nh nào d
¯
ó trên
d
¯
a
ˆ

`
u vào) ta
˙
o thành mo
ˆ
˙
t le
ˆ
˙
nh to
ˆ

ng quát, mà ke
ˆ
´
t qua

cu

a nó se
˜
là mo
ˆ
˙
t bie
ˆ
´
n d
¯
o

ˆ

i phu
´

c ta
˙
p. Ca
ˆ
`
n
chú ý ra
˘
`
ng, he
ˆ
˙
vo

go
˙
i và thu
˙

c hie
ˆ
˙
n ta
ˆ
´

t ca

các câu le
ˆ
˙
nh có trong d
¯
u

o
`

ng o
ˆ
´
ng cùng mo
ˆ
˙
t lúc, cha
˙
y
mo
ˆ
˜
i le
ˆ
˙
nh d
¯
ó trong mo

ˆ
˙
t ba

n sao he
ˆ
˙
vo

riêng. Vì the
ˆ
´
ngay khi chu

o

ng trình thu
´

nha
ˆ
´
t ba
˘
´
t d
¯
a
ˆ
`

u d
¯
u

a
ke
ˆ
´
t qua

o


d
¯
a
ˆ
`
u ra, chu

o

ng trình tie
ˆ
´
p theo ba
˘
´
t d
¯

a
ˆ
`
u xu


lý ke
ˆ
´
t qua

này. Cu
˜
ng y nhu

va
ˆ
˙
y, các le
ˆ
˙
nh
tie
ˆ
´
p theo thu
˙

c hie
ˆ

˙
n các công vie
ˆ
˙
c cu

a mình: cho
`

du
˜

lie
ˆ
˙
u tu
`

le
ˆ
˙
nh tru

o
´

c và d
¯
u


a ke
ˆ
´
t qua

cho le
ˆ
˙
nh
tie
ˆ
´
p theo, gio
ˆ
´
ng nhu

mo
ˆ
˙
t dây chuye
ˆ
`
n sa

n xua
ˆ
´
t. Ne
ˆ

´
u nhu

muo
ˆ
´
n mo
ˆ
˙
t le
ˆ
˙
nh nào d
¯
ó ke
ˆ
´
t thúc hoàn
toàn, tru

o
´

c khi thu
˙

c hie
ˆ
˙
n le

ˆ
˙
nh tie
ˆ
´
p theo, ba
˙
n có the
ˆ

su

e

du
˙
ng trên mo
ˆ
˙
t dòng ca

ký hie
ˆ
˙
u dây
chuye
ˆ
`
n |, cu
˜

ng nhu

da
ˆ
´
u cha
ˆ
´
p pha
ˆ

y ;. Tru

o
´

c mo
ˆ
˜
i da
ˆ
´
u cha
ˆ
´
m pha
ˆ

y, he
ˆ

˙
vo

se
˜
du
`

ng la
˙
i và cho
`

cho d
¯
e
ˆ
´
n khi thu
˙

c hie
ˆ
˙
n xong ta
ˆ
´
t ca

các câu le

ˆ
˙
nh tru

o
´

c cu

a d
¯
u

o
`

ng o
ˆ
´
ng. Tra
˙
ng thái thoát ra (giá
34 Bash
tri
˙
lôgíc, mà d
¯
u

o

˙

c tra

la
˙
i sau khi thu
˙

c hie
ˆ
˙
n xong chu

o

ng trình) cu

a mo
ˆ
˙
t d
¯
u

o
`

ng o
ˆ

´
ng se
˜
trùng
vo
´

i tra
˙
ng thái thoát ra cu

a câu le
ˆ
˙
nh sau cùng trong d
¯
u

o
`

ng o
ˆ
´
ng. O


tru

o

´

c câu le
ˆ
˙
nh d
¯
a
ˆ
`
u tiên cu

a
d
¯
u

o
`

ng o
ˆ
´
ng có the
ˆ

d
¯
a
˘

˙
t ký hie
ˆ
˙
u "!", khi d
¯
ó tra
˙
ng thái thoát ra cu

a d
¯
u

o
`

ng o
ˆ
´
ng se
˜
là phu

d
¯
i
˙
nh
lôgíc cu


a tra
˙
ng thát thoát ra cu

a le
ˆ
˙
nh cuo
ˆ
´
i cùng trong d
¯
u

o
`

ng o
ˆ
´
ng. Tu
´

c là ne
ˆ
´
u tra
˙
ng thái thoát

ra cu

a le
ˆ
˙
nh cuo
ˆ
´
i cùng ba
˘
`
ng 0 thì tra
˙
ng thái thoát ra cu

a d
¯
u

o
`

ng o
ˆ
´
ng se
˜
ba
˘
`

ng 1 và ngu

o
˙

c la
˙
i. He
ˆ
˙
vo

cho
`

cho ta
ˆ
´
t ca

các câu le
ˆ
˙
nh ke
ˆ
´
t thúc ro
ˆ
`
i mo

´

i xác d
¯
i
˙
nh và d
¯
u

a ra giá tri
˙
này.
3.5.3 D
¯
a
ˆ
`
u lo
˙
c
Ví du
˙
cuo
ˆ
´
i cùng o


trên (ví du

˙
vo
´

i câu le
ˆ
˙
nh grep) có the
ˆ

dùng d
¯
e
ˆ

minh ho
˙
a cho mo
ˆ
˙
t khái nie
ˆ
˙
m
qua tro
˙
ng khác, d
¯
ó là, d
¯

a
ˆ
`
u lo
˙
c chu

o

ng trình. D
¯
a
ˆ
`
u lo
˙
c - d
¯
ó là le
ˆ
˙
nh (hay chu

o

ng trình), mà tie
ˆ
´
p
nha

ˆ
˙
n du
˜

lie
ˆ
˙
u vào, thu
˙

c hie
ˆ
˙
n mo
ˆ
˙
t vài bie
ˆ
´
n d
¯
o
ˆ

i trên du
˜

lie
ˆ

˙
u này và d
¯
u

a ra ke
ˆ
´
t qua

o


d
¯
a
ˆ
`
u ra tiêu
chua
ˆ

n (tu
`

d
¯
ây còn có the
ˆ


chuye
ˆ

n d
¯
e
ˆ
´
n no

i nào d
¯
ó theo ý muo
ˆ
´
n cu

a ngu

o
`

i dùng). Các câu le
ˆ
˙
nh
- d
¯
a
ˆ

`
u lo
˙
c bao go
ˆ
`
m các le
ˆ
˙
nh d
¯
ã nói d
¯
e
ˆ
´
n o


trên cat, more, less, wc, cmp, diff,
và ca

nhu
˜

ng câu le
ˆ
˙
nh có trong ba


ng
3.1
Ba

ng 3.1: Các câu le
ˆ
˙
nh d
¯
a
ˆ
`
u lo
˙
c
Le
ˆ
˙
nh Mô ta

nga
˘
´
n go
˙
n
grep, fgrep, egrep Tìm trong ta
ˆ
˙
p tin hay du

˜

lie
ˆ
˙
u d
¯
a
ˆ
`
u vào các dòng có chu
´

a ma
ˆ
˜
u va
˘
n ba

n
d
¯
u

o
˙

c chı


ra và d
¯
u

a các dòng này to
´

i d
¯
a
ˆ
`
u ra tiêu chua
ˆ

n
tr Trong du
˜

lie
ˆ
˙
u d
¯
a
ˆ
`
u vào thay the
ˆ
´

các ký tu
˙

o


ô thu
´

nha
ˆ
´
t bo


i các ký tu
˙

tu

o

ng
u
´

ng o


ô thu

´

hai. Hãy thu


gõ le
ˆ
˙
nh tr abc ABC ro
ˆ
`
i gõ vài dòng chu
´

a
các ký tu
˙

abc!
comm So sánh hai ta
ˆ
˙
p tin theo tu
`

ng dòng mo
ˆ
˙
t và d
¯

u

a vào d
¯
a
ˆ
`
u ra tiêu chua
ˆ

n 3
co
ˆ
˙
t : mo
ˆ
˙
t - nhu
˜

ng dòng chı

ga
˘
˙
p o


ta
ˆ

˙
p tin thu
´

nha
ˆ
´
t, hai - nhu
˜

ng dòng chı

ga
˘
˙
p o


ta
ˆ
˙
p tin thu
´

hai, và ba - nhu
˜

ng dòng có trong ca

hai ta

ˆ
˙
p tin.
pr D
¯
i
˙
nh da
˙
ng ta
ˆ
˙
p tin hay no
ˆ
˙
i dung cu

a d
¯
a
ˆ
`
u tiêu chua
ˆ

n d
¯
e
ˆ


in a
ˆ
´
n.
sed Trình soa
˙
n tha

o ta
ˆ
˙
p tin theo dòng, su


du
˙
ng d
¯
e
ˆ

thu
˙

c hie
ˆ
˙
n mo
ˆ
˙

t vài bie
ˆ
´
n d
¯
o
ˆ

i
trên du
˜

lie
ˆ
˙
u d
¯
a
ˆ
`
u vào (la
ˆ
´
y tu
`

ta
ˆ
˙
p tin hay d

¯
a
ˆ
`
u vào tiêu chua
ˆ

n)
Mo
ˆ
˙
t d
¯
a
ˆ
`
u lo
˙
c d
¯
a
˘
˙
c bie
ˆ
˙
t, câu le
ˆ
˙
nh tee, nhân d

¯
ôi du
˜

lie
ˆ
˙
u d
¯
a
ˆ
`
u vào, mo
ˆ
˙
t ma
˘
˙
t gu


i du
˜

lie
ˆ
˙
u này
d
¯

e
ˆ
´
n d
¯
a
ˆ
`
u ra tiêu chua
ˆ

n, ma
˘
˙
t khác ghi nó (du
˜

lie
ˆ
˙
u) vào ta
ˆ
˙
p tin (ngu

o
`

i dùng ca
ˆ

`
n d
¯
a
˘
˙
t tên). De
ˆ
˜
tha
ˆ
´
y
ra
˘
`
ng theo chu
´

c na
˘
ng cu

a mình le
ˆ
˙
nh tee tu

o


ng tu
˙

nhu

nhóm ký tu
˙

chuye
ˆ

n hu

o
´

ng 1>&file.
Kha

na
˘
ng cu

a d
¯
a
ˆ
`
u lo
˙

c có the
ˆ

mo


ro
ˆ
˙
ng vo
´

i vie
ˆ
˙
c su


du
˙
ng các bie
ˆ

u thu
´

c chính quy (d
¯
ie
ˆ

`
u khie
ˆ

n),
cho phép, ví du
˙
, to
ˆ

chu
´

c tìm kie
ˆ
´
m theo các ma
ˆ
˜
u tìm kie
ˆ
´
m tu
`

d
¯
o

n gia


n d
¯
e
ˆ
´
n phu
´

c ta
˙
p và ra
ˆ
´
t
phu
´

c ta
˙
p. Ne
ˆ
´
u muo
ˆ
´
n, chúng ta có the
ˆ

nói ra

ˆ
´
t nhie
ˆ
`
u ve
ˆ
`
chuye
ˆ

n hu

o
´

ng và d
¯
a
ˆ
`
u lo
˙
c. Nhu

ng no
ˆ
˙
i
dung này có trong pha

ˆ
`
n lo
´

n các cuo
ˆ
´
n sách ve
ˆ
`
UNIX và Linux (xem pha
ˆ
`
n lo
`

i ke
ˆ
´
t). Vì va
ˆ
˙
y,
chúng ta se
˜
du
`

ng o



d
¯
ây và chuye
ˆ

n sang mo
ˆ
˙
t pha
ˆ
`
n khác, d
¯
u

o
˙

c go
˙
i là "môi tru

o
`

ng và các bie
ˆ
´

n
môi tru

o
`

ng" ta
˙
o bo


i he
ˆ
˙
vo

.
3.6 Tham bie
ˆ
´
n và các bie
ˆ
´
n so
ˆ
´
. Môi tru

o
`


ng cu

a he
ˆ
˙
vo

Khái nie
ˆ
˙
m tham bie
ˆ
´
n trong he
ˆ
˙
vo

bash tu

o

ng u
´

ng vo
´

i khái nie

ˆ
˙
m bie
ˆ
´
n so
ˆ
´
trong các ngôn ngu
˜

la
ˆ
˙
p trình thông thu

o
`

ng. Tên go
˙
i (hay ID) cu

a tham bie
ˆ
´
n có the
ˆ

là mo

ˆ
˙
t tu
`

bao go
ˆ
`
m các ký tu
˙

ba

ng chu
˜

cái, chu
˜

so
ˆ
´
, da
ˆ
´
u ga
˙
ch du

o

´

i (chı

ký tu
˙

d
¯
a
ˆ
`
u tiên cu

a tu
`

này không d
¯
u

o
˙

c là chu
˜

so
ˆ
´

), và
ca

nhu
˜

ng ký tu
˙

sau: , , #, , - (ga
˙
ch ngang), $,, 0, _ (ga
˙
ch du

o
´

i). Chúng ta nói ra
˘
`
ng, tham bie
ˆ
´
n
3.6 Tham bie
ˆ
´
n và các bie
ˆ

´
n so
ˆ
´
. Môi tru

o
`

ng cu

a he
ˆ
˙
vo

35
d
¯
u

o
˙

c xác d
¯
i
˙
nh hay d
¯

u

o
˙

c d
¯
a
˘
˙
t ra, ne
ˆ
´
u ngu

o
`

i dùng ga
˘
´
n cho nó mo
ˆ
˙
t giá tri
˙
. Giá tri
˙
có the
ˆ


là mo
ˆ
˙
t
dòng tro
ˆ
´
ng ro
ˆ
˜
ng. D
¯
e
ˆ

nhìn tha
ˆ
´
y giá tri
˙
cu

a tham bie
ˆ
´
n, ngu

o
`


i ta su


du
˙
ng ký tu
˙

$ o


tru

o
´

c tên cu

a
nó. Nhu

va
ˆ
˙
y, le
ˆ
˙
nh:
kênh giao tác

maikhai@fpt:/sm$ echo parameter
hie
ˆ

n thi
˙
tu
`

parameter, còn le
ˆ
˙
nh
kênh giao tác
maikhai@fpt:/sm$ echo $parameter
hie
ˆ

n thi
˙
giá tri
˙
cu

a tham bie
ˆ
´
n parameter (ta
ˆ
´

t nhiên ne
ˆ
´
u nhu

tham bie
ˆ
´
n d
¯
ó du

o
˙

c xác d
¯
i
˙
nh).
3.6.1 Các da
˙
ng tham bie
ˆ
´
n khác nhau
Tham bie
ˆ
´
n chia thành ba da

˙
ng: tham bie
ˆ
´
n vi
˙
trí, tham bie
ˆ
´
n d
¯
a
˘
˙
c bie
ˆ
˙
t (các ký tu
˙

d
¯
a
˘
˙
c bie
ˆ
˙
t d
¯

ã nói
o


trên chính là tên cu

a nhu
˜

ng tham bie
ˆ
´
n này) và các bie
ˆ
´
n so
ˆ
´
cu

a he
ˆ
˙
vo

. Tên (ID) cu

a tham
bie
ˆ

´
n vi
˙
trí go
ˆ
`
m mo
ˆ
˙
t hay vài chu
˜

so
ˆ
´
(nhu

ng không có tham bie
ˆ
´
n vi
˙
trí 0). Giá tri
˙
cu

a tham bie
ˆ
´
n

vi
˙
trí là các tham so
ˆ
´
cho le
ˆ
˙
nh, d
¯
u

o
˙

c d
¯
u

a ra khi cha
˙
y he
ˆ
˙
vo

(tham so
ˆ
´
d

¯
a
ˆ
`
u tiên là giá tri
˙
cu

a tham
bie
ˆ
´
n 1, tham so
ˆ
´
thu
´

hai - tham bie
ˆ
´
n 2, v.v. . .). Có the
ˆ

dùng câu le
ˆ
˙
nh set d
¯
e

ˆ

thay d
¯
o
ˆ

i giá tri
˙
cu

a tham bie
ˆ
´
n vi
˙
trí. Giá tri
˙
cu

a các tham bie
ˆ
´
n này cu
˜
ng thay d
¯
o
ˆ


i trong khi he
ˆ
˙
vo

thu
˙

c hie
ˆ
˙
n
mo
ˆ
˙
t trong các hàm so
ˆ
´
(chúng ta se
˜
xem xét va
ˆ
´
n d
¯
e
ˆ
`
này o



du

o
´

i). Các tham bie
ˆ
´
n d
¯
a
˘
˙
c bie
ˆ
˙
t không
gì khác ho

n là các ma
ˆ
˜
u, mà su
˙

thay the
ˆ
´
(phép the

ˆ
´
, phép hoán d
¯
o
ˆ

i) chúng d
¯
u

o
˙

c thu
˙

c hie
ˆ
˙
n nhu

trong ba

ng
3.2:
Các tham bie
ˆ
´
n d

¯
a
˘
˙
c bie
ˆ
˙
t, d
¯
u

o
˙

c lie
ˆ
˙
t kê o


ba

ng trên, có mo
ˆ
˙
t d
¯
ie
ˆ


m khác bie
ˆ
˙
t d
¯
ó là chı

có the
ˆ

"nha
˘
´
c" d
¯
e
ˆ
´
n chúng, không the
ˆ

gán các giá tri
˙
cho các tham bie
ˆ
´
n này. Bie
ˆ
´
n môi tru


o
`

ng, nhìn
tu
`

phía he
ˆ
˙
vo

, d
¯
ó là các tham bie
ˆ
´
n d
¯
u

o
˙

c d
¯
a
˘
˙

t tên. Giá tri
˙
cu

a bie
ˆ
´
n môi tru

o
`

ng d
¯
u

o
˙

c gán nho
`

thao tác có da
˙
ng sau:
kênh giao tác
[user]$ name=value
Trong d
¯
ó, name - tên cu


a bie
ˆ
´
n, còn value - giá tri
˙
muo
ˆ
´
n gán cho bie
ˆ
´
n (có the
ˆ

là mo
ˆ
˙
t
dòng tro
ˆ
´
ng). Tên cu

a bie
ˆ
´
n môi tru

o

`

ng chı

có the
ˆ

bao go
ˆ
`
m các chu
˜

so
ˆ
´
, chu
˜

cái và không d
¯
u

o
˙

c
ba
˘
´

t d
¯
a
ˆ
`
u bo


i mo
ˆ
˙
t chu
˜

so
ˆ
´
. (Tin ra
˘
`
ng sau khi d
¯
o
˙
c d
¯
oa
˙
n vie
ˆ

´
t ve
ˆ
`
tham bie
ˆ
´
n vi
˙
trí thì các ba
˙
n d
¯
ã hie
ˆ

u
ta
˙
i sao mo
ˆ
˙
t bie
ˆ
´
n môi tru

o
`


ng không the
ˆ

ba
˘
´
t d
¯
a
ˆ
`
u bo


i mo
ˆ
˙
t chu
˜

so
ˆ
´
.) Giá tri
˙
có the
ˆ

là ba
ˆ

´
t ky
`
mo
ˆ
˙
t
dòng va
˘
n ba

n nào. Ne
ˆ
´
u giá tri
˙
có chu
´

a nhu
˜

ng ký tu
˙

d
¯
a
˘
˙

c bie
ˆ
˙
t, thì ca
ˆ
`
n d
¯
a
˘
˙
t nó (giá tri
˙
) vào da
ˆ
´
u
ngoa
˘
˙
c. Giá tri
˙
ta
ˆ
´
t nhiên se
˜
không chu
´


a các da
ˆ
´
u ngoa
˘
˙
c này. Ne
ˆ
´
u mo
ˆ
˙
t bie
ˆ
´
n môi tru

òng d
¯
u

o
˙

c xác
d
¯
i
˙
nh, thì cu

˜
ng có the
ˆ

bi
˙
xóa bo

ba
˘
`
ng le
ˆ
˙
nh no
ˆ
˙
i trú unset. Ta
ˆ
˙
p ho
˙

p ta
ˆ
´
t ca

các bie
ˆ

´
n này cùngvo
´

i
các giá tri
˙
d
¯
ã gán cho chúng go
˙
i là môi tru

o
`

ng (enviroment) cu

a he
ˆ
˙
vo

. Có the
ˆ

xem nó (môi
tru

o

`

ng) nho
`

le
ˆ
˙
nh set khi không có tham so
ˆ
´
(có the
ˆ

ca
ˆ
`
n dùng d
¯
u

o
`

ng o
ˆ
´
ng ’set | less",
ne
ˆ

´
u môi tru

o
`

ng lo
´

n, có nhie
ˆ
`
u bie
ˆ
´
n). D
¯
e
ˆ

xem giá tri
˙
cu

a mo
ˆ
˙
t bie
ˆ
´

n môi tru

o
`

ng cu
˙
the
ˆ

, thay vì
dùng le
ˆ
˙
nh set (khi này ca
ˆ
`
n tìm trong ke
ˆ
´
t qua

cu

a nó bie
ˆ
´
n muo
ˆ
´

n xem), có the
ˆ

su


du
˙
ng le
ˆ
˙
nh
echo:
kênh giao tác
[user]$ echo $name
36 Bash
Ba

ng 3.2: Thay the
ˆ
´
các tham bie
ˆ
´
n d
¯
a
˘
˙
c bie

ˆ
˙
t
Tham bie
ˆ
´
n Quy lua
ˆ
˙
t thay the
ˆ
´
* Thay the
ˆ
´
bo


i các tham bie
ˆ
´
n vi
˙
trí, ba
˘
´
t d
¯
a
ˆ

`
u tu
`

tham bie
ˆ
´
n thu
´

nha
ˆ
´
t. Ne
ˆ
´
u su
˙

thay the
ˆ
´
thu
˙

c hie
ˆ
˙
n trong da
ˆ

´
u ngoa
˘
˙
c kép, thì tham bie
ˆ
´
n này se
˜
d
¯
u

o
˙

c thay
bo


i mo
ˆ
˙
t tu
`

duy nha
ˆ
´
t, mà ta

˙
o ra tu
`

ta
ˆ
´
t ca

các tham bie
ˆ
´
n vi
˙
trí, phân cách
nhau bo


i ký tu
˙

d
¯
a
ˆ
`
u tiên cu

a bie
ˆ

´
n so
ˆ
´
IFS (se
˜
nói d
¯
e
ˆ
´
n o


sau). Tu
´

c là "$"
tu

o

ng d
¯
u

o

ng vo
´


i "$1c$2c. . . ", trong d
¯
ó c - ký tu
˙

d
¯
a
ˆ
`
u tiên trong giá tri
˙
cu

a bie
ˆ
´
n so
ˆ
´
IFS. Ne
ˆ
´
u giá tri
˙
cu

a IFS tro
ˆ

´
ng, hoa
˘
˙
c không d
¯
u

o
˙

c xác d
¯
i
˙
nh
giá tri
˙
, thì tham bie
ˆ
´
n phân cách nhau bo


i các khoa

ng tra
˘
´
ng.

@ Thay the
ˆ
´
bo


i tham bie
ˆ
´
n vi
˙
trí, ba
˘
´
t d
¯
a
ˆ
`
u tu
`

tham bie
ˆ
´
n thu
´

nha
ˆ

´
t. Ne
ˆ
´
u thay the
ˆ
´
thu
˙

c hie
ˆ
˙
n trong ngoa
˘
˙
c kép, thì mo
ˆ
˜
i tham bie
ˆ
´
n se
˜
d
¯
u

o
˙


c thay the
ˆ
´
bo


i mo
ˆ
˙
t
tu
`

riêng bie
ˆ
˙
t. Tu
´

c là, "$@" tu

o

ng d
¯
u

o


ng vo
´

i "$1" "$2" . . . Ne
ˆ
´
u không có
tham bie
ˆ
´
n vi
˙
trí, thì giá tri
˙
se
˜
không d
¯
u

o
˙

c thie
ˆ
´
t la
ˆ
˙
p (tham bie

ˆ
´
n se
˜
bi
˙
x
# Thay the
ˆ
´
bo


i giá tri
˙
tha
ˆ
˙
p phân cu

a các tham bie
ˆ
´
n vi
˙
trí.
? Thay the
ˆ
´
bo



i tra
˙
ng thái thoát ra cu

a câu le
ˆ
˙
nh cuo
ˆ
´
i cùng trong d
¯
u

o
`

ng o
ˆ
´
ng,
mà d
¯
u

o
˙


c thu
˙

c hie
ˆ
˙
n trong che
ˆ
´
d
¯
o
ˆ
˙
ne
ˆ
`
n tru

o
´

c.
- (ga
˙
ch ngang) Thay the
ˆ
´
bo



i giá tri
˙
các co
`

, flag, d
¯
u

o
˙

c d
¯
a
˘
˙
t bo


i le
ˆ
˙
nh no
ˆ
˙
i trú set hay trong
khi cha
˙

y he
ˆ
˙
vo

.
$ Thay the
ˆ
´
bo


i so
ˆ
´
cu

a tie
ˆ
´
n trình (PID - process identificator)
Thay the
ˆ
´
bo


i so
ˆ
´

cu

a tie
ˆ
´
n trình (PID) cuo
ˆ
´
i cùng trong so
ˆ
´
các câu le
ˆ
˙
nh thu
˙

c
hie
ˆ
˙
n trong ne
ˆ
`
n sau.
0 Thay the
ˆ
´
bo



i tên he
ˆ
˙
vo

hay tên cu

a script d
¯
ang cha
˙
y. Ne
ˆ
´
u bash cha
˙
y
mo
ˆ
˙
t ta
ˆ
˙
p tin le
ˆ
˙
nh nào d
¯
ó, thì $0 có giá tri

˙
ba
˘
`
ng tên cu

a ta
ˆ
˙
p tin này. Trong
tru

o
`

ng ho
˙

p ngu

o
˙

c la
˙
i giá tri
˙
này ba
˘
`

ng d
¯
u

o
`

ng da
ˆ
˜
n d
¯
a
ˆ
`
u d
¯
u

d
¯
e
ˆ
´
n he
ˆ
˙
vo

(ví

du
˙
, /bin/bash
_ (ga
˙
ch du

o
´

i) Thay the
ˆ
´
bo


i tham so
ˆ
´
cuo
ˆ
´
i cùng cu

a câu le
ˆ
˙
nh tru

o

´

c trong so
ˆ
´
các câu le
ˆ
˙
nh
d
¯
ã d
¯
u

o
˙

c thu
˙

c hie
ˆ
˙
n (ne
ˆ
´
u d
¯
ó la

˙
i là mo
ˆ
˙
t tham bie
ˆ
´
n hay bie
ˆ
´
n so
ˆ
´
, thì se
˜
su


du
˙
ng giá tri
˙
cu

a n
Trong d
¯
ó, ca
ˆ
`

n thay name bo


i tên bie
ˆ
´
n (nhu

va
ˆ
˙
y, trong tru

o
`

ng ho
˙

p này, ba
˙
n la
˙
i ca
ˆ
`
n pha

i
bie

ˆ
´
t tên cu

a bie
ˆ
´
n muo
ˆ
´
n xem). Trong so
ˆ
´
các bie
ˆ
´
n, mà ba
˙
n se
˜
tha
ˆ
´
y trong ke
ˆ
´
t qua

cu


a le
ˆ
˙
nh set,
có nhu
˜

ng bie
ˆ
´
n ra
ˆ
´
t thú vi
˙
. Xin hãy chú ý d
¯
e
ˆ
´
n, ví du
˙
, bie
ˆ
´
n RANDOM. Ne
ˆ
´
u thu



cha
˙
y vài la
ˆ
`
n liên
tie
ˆ
´
p câu le
ˆ
˙
nh sau:
kênh giao tác
maikhai@fpt:/sw$ echo $RANDOM
thì mo
ˆ
˜
i la
ˆ
`
n ba
˙
n se
˜
nha
ˆ
˙
n d

¯
u

o
˙

c mo
ˆ
˙
t giá tri
˙
mo
´

i. Nguyên nhân là vì bie
ˆ
´
n này tra

la
˙
i mo
ˆ
˙
t giá
tri
˙
nga
ˆ
˜

u nhiên
4
trong khoa

ng 0 - 32 768.
3.6.2 Da
ˆ
´
u nha
˘
´
c cu

a he
ˆ
˙
vo

Mo
ˆ
˙
t trong các bie
ˆ
´
n ra
ˆ
´
t quan tro
˙
ng có tên PS1. Bie

ˆ
´
n này cho bie
ˆ
´
t da
˙
ng cu

a da
ˆ
´
u nha
˘
´
c, mà bash
d
¯
u

a ra trong khi cho
`

ngu

o
`

i dùng nha
ˆ

˙
p câu le
ˆ
˙
nh tie
ˆ
´
p theo. Theo ma
˘
˙
c d
¯
i
˙
nh thì bie
ˆ
´
n này d
¯
u

o
˙

c
gán giá tri
˙
"\s-\v\$ , tuy nhiên trên các ba

n phân pho

ˆ
´
i khác nhau thu

o
`

ng có các script
4
random là tu
`

tie
ˆ
´
ng Anh có nghı
˜
a nga
ˆ
˜
u nhiên
3.6 Tham bie
ˆ
´
n và các bie
ˆ
´
n so
ˆ
´

. Môi tru

o
`

ng cu

a he
ˆ
˙
vo

37
kho


i d
¯
o
ˆ
˙
ng (hay script d
¯
a
˘
ng nha
ˆ
˙
p) xác d
¯

i
˙
nh la
˙
i bie
ˆ
´
n này. Nói chung thì trong bash có ta
ˆ
´
t ca

bo
ˆ
´
n da
ˆ
´
u nha
˘
´
c, d
¯
u

o
˙

c su



du
˙
ng trong các tru

o
`

ng ho
˙

p khác nhau. Bie
ˆ
´
n PS1 d
¯
u

a ra da
˙
ng cu

a da
ˆ
´
u
nha
˘
´
c khi he

ˆ
˙
vo

cho
`

nha
ˆ
˙
p le
ˆ
˙
nh. Da
ˆ
´
u nha
˘
´
c thu
´

hai, xác d
¯
i
˙
nh bo


i bie

ˆ
´
n PS2, xua
ˆ
´
t hie
ˆ
˙
n khi he
ˆ
˙
vo

cho
`

ngu

o
`

i dùng nha
ˆ
˙
p thêm mo
ˆ
˙
t vài du
˜


lie
ˆ
˙
u ca
ˆ
`
n thie
ˆ
´
t nào d
¯
ó d
¯
e
ˆ

có the
ˆ

tie
ˆ
´
p tu
˙
c cha
˙
y câu le
ˆ
˙
nh

(chu

o

ng trình) d
¯
ã go
˙
i. Theo ma
˘
˙
c d
¯
i
˙
nh bie
ˆ
´
n PS2 có giá tri
˙
">". Ra
ˆ
´
t có the
ˆ

ba
˙
n d
¯

ã nhìn tha
ˆ
´
y
da
ˆ
´
u nha
˘
´
c này, khi cha
˙
y le
ˆ
˙
nh cat d
¯
e
ˆ

d
¯
u

a du
˜

lie
ˆ
˙

u vào tu
`

bàn phím vào ta
ˆ
˙
p tin. Mo
ˆ
˙
t ví du
˙
khác
- le
ˆ
˙
nh ftp, sau khi cha
˙
y le
ˆ
˙
nh này da
ˆ
´
u nha
˘
´
c se
˜
có da
˙

ng nhu

d
¯
ã nói. Da
ˆ
´
u nha
˘
´
c, xác d
¯
i
˙
nh bo


i
bie
ˆ
´
n PS3, su


du
˙
ng trong le
ˆ
˙
nh select. Da

ˆ
´
u nha
˘
´
c, xác d
¯
i
˙
nh bo


i bie
ˆ
´
n PS4, d
¯
u

o
˙

c d
¯
u

a ra tru

o
´


c
mo
ˆ
˜
i câu le
ˆ
˙
nh, trong lúc bash theo dõi quá trình thu
˙

c hie
ˆ
˙
n. Giá tri
˙
theo ma
˘
˙
c d
¯
i
˙
nh - "+". Ne
ˆ
´
u
có mong muo
ˆ
´

n, ba
˙
n có the
ˆ

thay d
¯
o
ˆ

i các bie
ˆ
´
n PS1 và PS2. Khi này có the
ˆ

su


du
˙
ng ba
ˆ
´
t ky
`

tu
˙


nào nha
ˆ
˙
p tu
`

bàn phím, cu
˜
ng nhu

mo
ˆ
˙
t vài ký tu
˙

chuyên dùng d
¯
e
ˆ

xác d
¯
i
˙
nh da
˙
ng da
ˆ
´

u nha
˘
´
c
nhu

trong ba

ng
3.3 (chı

d
¯
u

a ra mo
ˆ
˙
t vài trong so
ˆ
´
chúng làm ví du
˙
, danh sách d
¯
a
ˆ
`
y d
¯

u

xem trong
trang man cu

a bash - gõ le
ˆ
˙
nh "man bash").
Ba

ng 3.3: Ký tu
˙

xác d
¯
i
˙
nh da
˙
ng da
ˆ
´
u nha
˘
´
c
Cu
˙
m ký tu

˙

Giá tri
˙
(ke
ˆ
´
t qua

thu d
¯
u

o
˙

c)
\a Tín hie
ˆ
˙
u âm thanh (mã ASCII 07)
\d Tho
`

i gian o


da
˙
ng "Thu

´

, tháng, ngày", ví du
˙
, Sun, Dec, 26.
\h Tên máy (hostname) d
¯
e
ˆ
´
n da
ˆ
´
u cha
ˆ
´
m d
¯
a
ˆ
`
u tiên.
\H Tên máy d
¯
a
ˆ
`
y d
¯
u


, ví du
˙
teppi.phanthinh.com
\t Tho
`

i gian hie
ˆ
˙
n tho
`

i o


da
˙
ng 24 gio
`

: HH:MM:SS (gio
`

:phút:giây)
\T Tho
`

i gian hie
ˆ

˙
n tho
`

i o


da
˙
ng 12 gio
`

: HH:MM:SS
\@ Tho
`

i gian hie
ˆ
˙
n tho
`

i o


da
˙
ng 12 gio
`


am/pm (sáng/chie
ˆ
`
u)
\u Tên ngu

o
`

i dùng d
¯
ã cha
˙
y he
ˆ
˙
vo

, ví du
˙
teppi
\w Tên d
¯
a
ˆ
`
y d
¯
u


cu

a thu

mu
˙
c làm vie
ˆ
˙
c hie
ˆ
˙
n tho
`

i (ba
˘
´
t d
¯
a
ˆ
`
u tu
`

go
ˆ
´
c), ví du

˙
/home/teppi82/project/l4u
\W Thu

mu
˙
c hie
ˆ
˙
n tho
`

i (không có d
¯
u

o
`

ng da
ˆ
˜
n)
\$ Ký tu
˙

#, ne
ˆ
´
u he

ˆ
˙
vo

d
¯
u

o
˙

c cha
˙
y bo


i ngu

o
`

i dùng root, và ký tu
˙

$, ne
ˆ
´
u he
ˆ
˙

vo

d
¯
u

o
˙

c cha
˙
y bo


i ngu

o
`

i dùng thu

o
`

ng.
\nnn Ký tu
˙

có mã he
ˆ

˙
tám nnn
\n Dòng mo
´

i (chuye
ˆ

n dòng)
\s Tên he
ˆ
˙
vo

\# So
ˆ
´
hie
ˆ
˙
n tho
`

i cu

a câu le
ˆ
˙
nh
\\ Da

ˆ
´
u ga
˙
ch ngu

o
˙

c (backslash)
\[ Sau ký tu
˙

này ta
ˆ
´
t ca

các ký tu
˙

se
˜
không d
¯
u

o
˙


c in ra.
\] Ke
ˆ
´
t thúc chuo
ˆ
˜
i các ký tu
˙

không d
¯
u

o
˙

c in ra.
\! So
ˆ
´
thu
´

tu
˙

cu

a le

ˆ
˙
nh hie
ˆ
˙
n tho
`

i trong li
˙
ch su


các câu le
ˆ
˙
nh d
¯
ã dùng.
So
ˆ
´
cu

a le
ˆ
˙
nh (so
ˆ
´

thu
´

tu
˙

cu

a le
ˆ
˙
nh d
¯
ang thu
˙

c hie
ˆ
˙
n trong buo
ˆ

i làm vie
ˆ
˙
c hie
ˆ
˙
n tho
`


i) có the
ˆ

khác
vo
´

i so
ˆ
´
cu

a chính nó trong danh sách "li
˙
ch su


các câu le
ˆ
˙
nh", bo


i vì danh sách còn chu
´

a ca

nhu

˜

ng câu le
ˆ
˙
nh d
¯
ã d
¯
u

o
˙

c ghi la
˙
i trong ta
ˆ
˙
p tin li
˙
ch su


. Sau khi giá tri
˙
cu

a bie
ˆ

´
n d
¯
u

o
˙

c he
ˆ
˙
vo

d
¯
o
˙
c
xong, se
˜
xa

y ra su
˙

thay the
ˆ
´
theo các quy lua
ˆ

˙
t mo


ro
ˆ
˙
ng trong ba

ng trên, d
¯
o
ˆ
`
ng tho
`

i còn xa

y ra
su
˙

thay the
ˆ
´
trong tên các câu le
ˆ
˙
nh, trong các bie

ˆ

u thu
´

c so
ˆ
´
ho
˙
c, và su
˙

chia tu
`

(word splitting).
Chúng ta se
˜
nói d
¯
e
ˆ
´
n nhu
˜

ng su
˙


thay the
ˆ
´
này o


du

o
´

i.Ví du
˙
, sau khi thu
˙

c hie
ˆ
˙
n le
ˆ
˙
nh (vì trong dòng
va
˘
n ba

n có khoa

ng tro

ˆ
´
ng, nên nha
ˆ
´
t thie
ˆ
´
t pha

i có da
ˆ
´
u ngoa
˘
˙
c):
kênh giao tác
[user/root]$ PS1="[\u@\h \W]\$"
38 Bash
thì trong da
ˆ
´
u nha
˘
´
c se
˜
có da
ˆ

´
u mo


ngoa
˘
˙
c vuông, tên ngu

o
`

i dùng, ký hie
ˆ
˙
u , tên máy, khoa

ng
tra
˘
´
ng, tên cu

a thu

mu
˙
c hie
ˆ
˙

n tho
`

i (không có d
¯
u

o
`

ng da
ˆ
˜
n), da
ˆ
´
u d
¯
óng ngoa
˘
˙
c vuông, và ký hie
ˆ
˙
u
$ (ne
ˆ
´
u trên he
ˆ

˙
vo

d
¯
ang làm vie
ˆ
˙
c ngu

o
`

i dùng bình thu

o
`

ng) hay #(ne
ˆ
´
u he
ˆ
˙
vo

cha
˙
y du


o
´

i ngu

o
`

i
dùng root).
3.6.3 Bie
ˆ
´
n môi tru

o
`

ng PATH
Còn mo
ˆ
˙
t bie
ˆ
´
n cu
˜
ng quan tro
˙
ng nu

˜

a có tên PATH. Bie
ˆ
´
n này d
¯
u

a ra danh sách d
¯
u

o
`

ng da
ˆ
˜
n
d
¯
e
ˆ
´
n các thu

mu
˙
c, mà bash se

˜
tìm kie
ˆ
´
m ta
ˆ
˙
p tin (tru

o
`

ng ho
˙

p riêng là các ta
ˆ
˙
p tin le
ˆ
˙
nh)
trong tru

o
`

ng ho
˙


p, d
¯
u

o
`

ng da
ˆ
˜
n d
¯
a
ˆ
`
y d
¯
u

d
¯
e
ˆ
´
n ta
ˆ
˙
p tin không d
¯
u


o
˙

c d
¯
u

a ra. Các thu

mu
˙
c trong
danh sách này phân cách nhau bo


i da
ˆ
´
u hai cha
ˆ
´
m (:). Theo ma
˘
˙
c d
¯
i
˙
nh bie

ˆ
´
n PATH chu
´

a
các thu

mu
˙
c /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin, tu
´

c là có
da
˙
ng: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin: D
¯
e
ˆ

thêm thu

mu
˙
c
vào danh sách này, ca
ˆ
`
n thu

˙

c hie
ˆ
˙
n câu le
ˆ
˙
nh sau:
kênh giao tác
[user]$ PATH=$PATH:new_path
Khi tìm kie
ˆ
´
m, he
ˆ
˙
vo

"lu
˙
c lo
˙
i" các thu

mu
˙
c theo d
¯
úng thu

´

tu
˙

d
¯
ã lie
ˆ
˙
t kê trong bie
ˆ
´
n PATH.
Mo
ˆ
˙
t chú ý nho

, có the
ˆ

d
¯
u

a vào danh sách này thu

mu
˙

c hie
ˆ
˙
n tho
`

i, khi thêm vào bie
ˆ
´
n PATH
mo
ˆ
˙
t da
ˆ
´
u cha
ˆ
´
m (.). Tuy nhiên, d
¯
ây là d
¯
ie
ˆ
`
u không khuyên làm vo
´

i lý do ba


o ma
ˆ
˙
t: ngu

o
`

i có ác
ý có the
ˆ

d
¯
a
˘
˙
t vào thu

mu
˙
c dùng chung mo
ˆ
˙
t chu

o

ng trình nào d

¯
ó, có cùng tên vo
´

i mo
ˆ
˙
t trong so
ˆ
´
nhu
˜

ng câu le
ˆ
˙
nh thu

o
`

ng dùng bo


i root, nhu

ng thu
˙

c hie

ˆ
˙
n nhu
˜

ng chu
´

c na
˘
ng khác hoàn toàn (d
¯
a
˘
˙
c
bie
ˆ
˙
t nguy hie
ˆ

m ne
ˆ
´
u thu

mu
˙
c hie

ˆ
˙
n tho
`

i d
¯
u
´

ng o


d
¯
a
ˆ
`
u danh sách tìm kie
ˆ
´
m).
3.6.4 Bie
ˆ
´
n môi tru

o
`


ng IFS
Bie
ˆ
´
n này xác d
¯
i
˙
nh ký tu
˙

(cu
˙
m ký tu
˙

) phân cách (Internal Field Separator), su


du
˙
ng trong thao
tác phân chia tu
`

ngu
˜

khi bie
ˆ

´
n d
¯
o
ˆ

i dòng le
ˆ
˙
nh, mà he
ˆ
˙
vo

thu
˙

c hie
ˆ
˙
n tru

o
´

c khi cha
˙
y mo
ˆ
˙

t câu le
ˆ
˙
nh nào
d
¯
ó(xemdu

o
´

i).Giátri
˙
theoma
˘
˙
cd
¯
i
˙
nhcu

abie
ˆ
´
nnày-"<Khoa

ng_tra
˘
´

ng><Tab><Ký_tu
˙

_hàng_mo
´

i>".
Ne
ˆ
´
u thu


gõ le
ˆ
˙
nh "echo $IFS", ba
˙
n se
˜
nha
ˆ
˙
n d
¯
u

o
˙


c mo
ˆ
˙
t nga
˙
c nhiên nho

.
3.6.5 Thu

mu
˙
c hie
ˆ
˙
n tho
`

i và thu

mu
˙
c cá nhân
Tên cu

a thu

mu
˙
c hie

ˆ
˙
n tho
`

i ghi trong bie
ˆ
´
n môi tru

o
`

ng vo
´

i tên PWD, và giá tri
˙
cu

a bie
ˆ
´
n này thay
d
¯
o
ˆ

i sau mo

ˆ
˜
i la
ˆ
`
n cha
˙
y chu

o

ng trình cd (cu
˜
ng nhu

mo
ˆ
˜
i la
ˆ
`
n thay d
¯
o
ˆ

i thu

mu
˙

c hie
ˆ
˙
n tho
`

i theo ba
ˆ
´
t
ky
`
cách nào, ví du
˙
, qua Midnight Commander). Tu

o

ng tu
˙

nhu

va
ˆ
˙
y tên d
¯
a
ˆ

`
y d
¯
u

(go
ˆ
`
m ca

d
¯
u

o
`

ng
da
ˆ
˜
n) cu

a thu

mu
˙
c cá nhân cu

a ngu


o
`

i dùng, cha
˙
y tie
ˆ
´
n trình d
¯
ã cho, ghi trong bie
ˆ
´
n HOME.
3.6.6 Câu le
ˆ
˙
nh export
Khi he
ˆ
˙
vo

cha
˙
y mo
ˆ
˙
t chu


o

ng trình hay câu le
ˆ
˙
nh nào d
¯
ó, nó (he
ˆ
˙
vo

) cung ca
ˆ
´
p cho chúng mo
ˆ
˙
t
pha
ˆ
`
n bie
ˆ
´
n môi tru

o
`


ng. D
¯
e
ˆ

có the
ˆ

cung ca
ˆ
´
p bie
ˆ
´
n môi tru

o
`

ng cho tie
ˆ
´
n trình cha
˙
y tu
`

he
ˆ

˙
vo

, ca
ˆ
`
n
gán giá tri
˙
cho bie
ˆ
´
n này vo
´

i le
ˆ
˙
nh export, tu
´

c là thay vì
kênh giao tác
[user]$ name=value
ca
ˆ
`
n gõ:

×