Professional Documents
Culture Documents
Ìlaboratory Exercises With Linuxî: Moscow Institute of Electronic Technology Capt - Zayyarwin
Ìlaboratory Exercises With Linuxî: Moscow Institute of Electronic Technology Capt - Zayyarwin
Capt.ZayYarWin
Capt.ZayYarWin
jzpfygw,f/
Capt.ZayYarWin
/root
/home
/bin
/usr/bin
/sbin
/proc
/usr
/boot
/lib
/dev
/etc
awGtjzpf wnf&Sdygw,f/
System &JU configuration file awG[m 'D directory xJrSm text file
awGtaeeJU wnf&Sdygw,f/ system boot vkyfwJhtcsdefrSm toHk;jyKwJh
scripts zdkif? password file awG wnf&Sdygw,f/
/var
/mnt
/tmp
Note:
To login the system:
login:<username>
Password:
Capt.ZayYarWin
Ctrl+Alt+F1,
Ctrl+Alt+F2,
Ctrl+Alt+,
w,f/
Ctrl+c
Ctrl+d
shutdown h now
halt
Capt.ZayYarWin
twkdif;jzpfygw,f1
man
help
mount/umount
who
pwd
cd
ls
ln
cat
10
less
11
file
12
cp
13
mv
14
rm
Remove files
15
mkdir
16
rmdir
17
chmod
18
chown
command man/help
rdrdtoHk;jyKr,fh command eJUygwfoufwJh tcsuftvufawG? yg0ifwJh option awGeJU
b,fvdk toHk;jyK &r,fqdkwmudk odvdkwJhtcgrSm toHk;jyKygw,f/
Syntax:
$ man [-k] command
Capt.ZayYarWin
$ command --help
command mount/umount
Unix system rSmtoHk;jyKwJh file system [m / root &JUatmufrSm tree yHkpHeJU
tqifhqifhwnf&Sdaewmjzpfygw,f/ 'DzdkifawGxJrS tcsdKU[m device file awGvnf;jzpfEdkifyg
w,f/ (Oyrm- cdrom, floppy device,) 'D device awGudk uRefawmfwdkUtoHk;jyKvdkwJh
tcg file system (/ tree)rSmoGm;NyD;csdwfquf(wyfqif)&ygw,f/ mount vkyfw,fvdkUac:yg
w,f/ tJ'DhtcgrSom system uaeNyD; uRefawmfwdkUtoHk;jyKvdkwJh device udkod&SdNyD;awmh 'D
device awGudktoHk;jyKEdkifrSmjzpfygw,f/ toHk;jyK&r,fh command uawmh mount
jzpfygw,f/ command mount udk toHk;jyKwJhtcgrSm argument (2)ckeJU toHk;jyK&ygw,f/
tJ'guawmh mount vkyfcsifwJh device (devices name) eJU file system rSm mount
vkyfr,fhae&m mount point jzpfygw,f/ 'D mount command udk superuser(root)
account eJUomjyKvkyfEdkifygw,f/
mount vkyfxm;wJh device ukd file system rSjyefNyD; jzKwf (disable) vdkwJhtcgrSm
command umount udktoHk;jyK&ygw,f/ atmufrSmazmfjyxm;wJh OyrmawGudk avhvmMunfh
&if ydkNyD;oabmaygufrSmjzpfygw,f/
Syntax:
# mount device mount_point(directory)
# umount device umount_point(directory)
Options:
# mount o,f,w,v
Capt.ZayYarWin
/mnt ae&mrSm
mount
vkyfvdkufwmjzpfygw,f/
[root@panda root]# mount /mnt/floppy
[root@panda root]# umount /mnt/floppy
command who
vuf&Sd system xJudk login vkyfxm;wJh user awGeJUygwfoufwJh tcsuftvufawGudk
azmfjyay;ygw,f/
Syntax:
$ who [options] [am i]
$ whoami
Example:
Capt.ZayYarWin
Example:
[myanmar@panda myanmar]$ pwd
/home/myanmar
command cd
vuf&Sda&mufaewJh (tvkyfvkyfaewJh) directory rS tjcm; directory wpfckudk
ajymif;wJhtcgrSm toHk;jyKygw,f/
Syntax:
$ cd pathname
Example:
[myn@panda myn]$ cd /etc/sysconfig
[myn@panda sysconfig]$
Example:
Capt.ZayYarWin
Capt.ZayYarWin
(-l) option uawmh yg0ifwJhzdkifawG&JU list ukd tcsuftvuf twdtus long format
command ln
File awG wpfckeJUwpfckMum; link jyKvkyf&mrSm toHk;jyKygw,f/ hard link eJU soft
link (symbolic link) qdkNyD; (2)rsdK;&Sdygw,f/ bmawGuGm;jcm;w,fqdkwm atmufrSmjyxm;wJh
Option:
[-s] symbolic link
Example:
10
Capt.ZayYarWin
MunfhygOD;-
oGm;atmif OyrmukdavhvmMunfhyg/
11
Capt.ZayYarWin
Example:
[myn@panda myn]$ cat file1
My name is Mg Mg.
I live in Myanmar.
[myn@panda myn]$
Text file jzpfwJh file2 xJudk file1 xJu text awGaygif;xnfhNyD; file3 tjzpf file
topfxyfNyD; create vkyfvdkufwmjzpfygw,f/
cat command eJUygwfoufNyD; aemufvmr,fh lab: No.10 rSmxyfNyD; awGU&OD;rSm
jzpfygw,f? tu,f uRefawmfwdkU zwfvdkwJh text file [m size BuD;rm;NyD;wJh zdkifrsdK;qdk&if
awmh text awGudk screen rSm vQyfwjyufyJjrifvdkuf&NyD; file &JU atmufqHk;udk csufcsif;
Capt.ZayYarWin
jzpfygw,f/
Example:
[myn@panda myn]$ less file1
Example:
command cp
File eJU directory awG copy vkyf&mrSm toHk;jyKygw,f/
Syntax:
$ cp [options] Source Dest
$ cp [options] Source Directory
13
Capt.ZayYarWin
Example:
[myn@panda myn]$ cp file1 file2
Example:
[myn@panda myn]$ mv file1 file2
Capt.ZayYarWin
command rm
'D command udkawmh file awGeJU directory awG delete vkyf&mrSm toHk;jyKygw,f/
Syntax:
$ rm filename
$ rm r directory
Example:
[myn@panda myn]$ mkdir yangon
yangonqdkwJh
folder wpfck
create
15
Capt.ZayYarWin
command rmdir
Directory(folder) udk delete vkyf&mrSmoHk;ygw,f? 'D command udk toHk;jyKwJh
tcgrSm owdjyK&r,fhtcsufuawmh rdrdzsufvdkwJh directory (folder) [m txJrSm rnfonfh
data rQr&SdwJh empty folder jzpfaerSom 'D command ukd oHk;vdkU&rSmjzpfygw,f/
Syntax:
$ rmdir dir_name
Example:
[root@panda myn]# rmdir /home/myanmar/yangon
owner
Group
others
all(u, g and o)
Permission trsdK;tpm;awGuawmhr
read access
write access
Execute(run)
16
Capt.ZayYarWin
1 zyw
zyw
&vmwJh result t& 'Dzdkif&JU owner uawmh zyw jzpfNyD;awmh owner u 'Dzdkifudk
read, write, execute vkyfEdkifygw,f? group zyw xJrSmyg0ifwJh member user
awGtm;vHk;u 'Dzdkifudk read, write, execute vkyfEdkifygw,f? owner eJU group xJrSm
ryg0ifwJh tjcm;aom user awGtm;vHk;u 'Dzdkifudk read vkyfEdkifygw,f? 'Dzdkif[m program
wpfyk'fjzpfcJhr,fqdk&if run (execute) vdkU&ygw,f? write vkyfvdkUawmhr&ygbl;/ 'D
permission setting udk chmod command udktoHk;jyKNyD; owner u usefwJh user
awGtwGuf access permission udk change vdkU&ygw,f/ command udktoHk;jyKyHkuawmh
atmufygtwdkif;jzpfygw,fSyntax:
$ chmod [mode] file
Example:
[myn@panda myn]$ chmod g+w file
17
Capt.ZayYarWin
Capt.ZayYarWin
command chown
change owner jzpfygw,f/ file &JU ownership udk ajymif;zdkU vdktyfwJhtcgrSm
toHk;jyKygw,f/
Syntax:
# chown new_owner file
Example:
19
Capt.ZayYarWin
vufawG>av>usifhcef;rsm;
1/
Dir/dir1/dir11
Dir/dir1/dir12
Dir/dir2
Dir/dir2/dir22/dir23
3/
20
Capt.ZayYarWin
jzpfygw,f1
cat
tee
wc
spell
sort
cut
diff
grep
> oauFwu ls command &JU output ukd screen odkUrjyyJ list.txt file xJodkU
direction ajymif;ay;vdkufwmjzpfygw,f/ tu,f uRefawmfwdkU redirection vkyfay;vdkufwJh
list.txt zdkif[m rlvuwnf;u &SdNyD;om; jzpfaecJh&if overwrite vkyfoGm;rSmjzpfygw,f/ tJ'Dh
jyemtwGuf >> oauFwudk tokH;jyKEdkifygw,f/
[myn@panda myn]$ ls >> list.txt
ulnDay;ygw,f/
21
Capt.ZayYarWin
etc]$ ls | less
22
Capt.ZayYarWin
22
yxrqHk; cat command eJU zkdifxJrSmyg0ifwJh text awGudk standard output rSm
display vkyfvdkufygw,f/ 'kwd, command line rSmawmh cat &JU output udk stout rSm
rjyawmhyJ |uaeNyD; wc command qDudkydkUay;vdkufygw,f (wc word count)/ |
uydkUay;vdkufwJh input udktoHk;jyKNyD; wc command u zdkifxJrSmyg0ifwJh line ta&twGuf?
word ta&twGufeJU character ta&twGufudk count vkyfNyD; stout rSm azmfjyay;wm jzpfyg
w,f/ vufawGUjyKvkyfavhvmMunfhyg/
Using a Filter()
Filter qkdwmuawmh Unix command awGygyJ/ Pipe u uRefawmfwdkU avhvmcJhwJh
twdkif; command wpfck&JU standard output udk tjcm; command wpfck&JU toHk;jyK&r,fh
input (argument) tjzpf ydkUay;ygw,f/ Filter awG tvkyfvkyfyHkuawmh stdin rS data udk
&,lNyD;awmh result udk stout odkUxkwfay;ygw,f/ text file awGukd Filter toHk;jyKNyD;
modify vkyfay;Ekdifygw,f/ Linux rSm toHk;rsm;wJh filter awGuawmh cat, cut, grep, sort,
spell, wc, ponfjzifh jzpfygw,f/
command cat
Filter cat u standard input rS uRefawmfwdkU &dkufxnfhvdkufwJh data udk copy
vkyfNyD; screen rSmazmfjyay;ygw,f/ > oauFweJUwGJzufNyD; input ukd file odkUydkUay;edkifyg
w,f/
Syntax:
$ cat > file
Example:
[myn@panda myn]$ cat
Russian Federation
Russian Federation
[myn@panda myn]$
Capt.ZayYarWin
command tee
Filter tee uawmh standard input udk read vkyfNyD;awmh standard output rSm
xkwfay;ygw,f/ wpfcsdefwnf;rSmyJ output udk file xJrSmvnf; save ay;ygw,f/
Syntax:
$ tee file
Example:
[myn@panda myn]$ tee test.txt
Input from keyboard.
Input from keyboard.
[myn@panda myn]$ cat test.txt
Input from keyboard.
yxrOD;pGm command line rSm tee test.txt udk &dkufvdkufwJhtcgrSm user input
awmif;ygw,f/ Keyboard rS Input from keyboard. qdkwJh text udk &dkufxnfhvdkufyg
w,f/ tJ'DhtcgrSm standard output jzpfwJh screen rSm uRefawmfwdkU&dkufvdkufwJh text udk
output taeeJU jyef display vkyfay;NyD;awmh wpfcsdefwnf;rSmyJ test.txt zdkifxJrSmvnf;
uRefawmfwdkU &kdufvdkufwJh text udk oGm;NyD; save ay;ygw,f/ aocsmatmif cat command
eJU zdkifudk display vkyfjyxm;ygw,f/ atmufrSmjyxm;wJhOyrmudk qufNyD;avhvmMunfhygOD;-
Capt.ZayYarWin
command wc
Filter wc uawmh word count command jzpfygw,f/ uRefawmfwdkU odvdkwJh
zdkifxJrSm&SdwJh line ta&twGuf? word ta&twGufeJU character ta&twGufwdkUudk output
rSm jyay;ygw,f/
Syntax:
$ wc [option] file
Option:
-c
-L
Example:
[myn@panda myn]$ cal
February 2006
Su Mo Tu We Th Fr
1 2 3
5 6 7 8 9 10
12 13 14 15 16 17
19 20 21 22 23 24
26 27 28
Sa
4
11
18
25
37
134
yxr command line rSm cal command u calendar udk print vkyfay;ygw,f/
'kwd, command line rSmawmh wc command u calendar rSm&SdwJh line ta&twGuf?
word ta&twGufeJU character ta&twGufawGudk azmfjyay;oGm;wmjzpfygw,f/
command spell
Filter spell uawmh file xJrSm&SdwJh words awGudk system rSm&SdwJh spelling list eJU
checking vkyfNyD; spelling list rSmrygwJh rSm;aewJh spelling awGudk standard output rSm
xkwfay;ygw,f/
Syntax:
$ spell file
25
Capt.ZayYarWin
Example:
[myn@panda myn]$ spell foodlist
soop
vegetebels
[myn@panda myn]$
command sort
Filter sort ukdawmh text file xJrSm&SdwJh pmaMumif;awGudk sorting vkyf&mrSm toHk;jyK
ygw,f/ rdrd sorting jyKvkyfvdkwJh tay:rSmrlwnfNyD;awmh options awGeJU wGJzuftoHk;jyKEdkif
ygw,f/
Syntax:
$ sort [-bdfimMnru] [-k fields] filename [-o output_file]
Option:
-b
-d
-f
Ignores caps.
-i
-m
-M
-n
-r
-u
-k fields
filename
-o output_file
Example:
[myn@panda myn]$ cat myanmar.txt
yangon
mandalay
bagan
26
Capt.ZayYarWin
command cut
File odkU input data wpfckckrS uRefawmfwkdU vdktyfwJh text awGudk column (odkU)
field tvdkuf cut vkyfNyD; screen rSm output xkyfay;vdkwJhae&mrSm cut udk toHk;jyKygw,f/
Syntax:
$ cut -c list file
$ cut -f list [-d delim] [-s] file
rSpNyD; pmaMumif;tqHk;txdjzpfw,fqdkwmudk
OyrmawGrSm avhvmMunfhyg/
qdkvdkygw,f/
ydkrdk&Sif;vif;oGm;atmif
Option:
-c list
-f list
Field position
-d delim
-s list
For f, do not print lines that do not contain the field separator
character
Example:
[myn@panda myn]$ uname
Linux
[myn@panda myn]$ uname | cut -c1-3
Lin
[myn@panda myn]$ uname | cut c4ux
[myn@panda myn]$
27
Capt.ZayYarWin
1 2 3 4 5
(pdwfrSef;eJU
command diff
Command diff uawmh file ESpfckudk ESdKif;,SOfNyD; rwlnDwJh line awGudk print vkyf
Option:
-b
-c
-i
28
Capt.ZayYarWin
Example:
[myn@panda myn]$ cat myanmar.old
Rangoon
Mandalay
Ayeyarwaddy
[myn@panda myn]$ cat myanmar
Yangon
Mandalay
Ayeyarwaddy
[myn@panda myn]$ diff myanmar.old myanmar
1c1
< Rangoon
--> Yangon
[myn@panda myn]$
29
Capt.ZayYarWin
command grep
Filter grep uawmh file xJrSm&SdwJh uRefawmfwdkU &SmvdkwJh text awGudk &SmazGNyD; tJ'Dh
text awGyg0ifwJh pmaMumif;wpfaMumif;vHk;udk screen rSmjyay;ygw,f/ grep udk argument
ESpfckeJU wGJzuftokH;jyKygw,f/ tJ'gawGuawmh uRefawmfwdkU &SmvdkwJh text eJU tJ'Dh text udk
&SmvdkwJh file name yJjzpfygw,f/
Syntax:
$ grep [word_to_lookup] [filename]
Option:
-i
-c
-n
Prefix each lines of output with the line number within its input file.
-v
Example:
grep stream preface
consist of a stream of
[myn@panda myn]$ grep data preface intro
preface: data in the file
intro: new data
[myn@panda myn]$ fgrep editor\
create" preface
characters. An editor can
be used to create such
[myn@panda myn]$
Regular Expression ( )
uRefawmfwdkU &SmvdkwJh text awG file awGtwGuf grep command u tqifajyap
wmudk awGU&rSmjzpfygw,f/ 'D grep command udk ydkNyD; powerful jzpfapwJh special
character awGvnf; &Sdygw,f/ tJ'Dh special character av;awGudkawmh regular
expression vdkU ac:ygw,f/ Oyrm- uRefawmfwkdU&SmazGvdkwJh (word) pmvHk;wpfvHk;twGuf
pmvHk;aygif;tjynfhtpHk uRefawmfwdkUrodwJh tajctaersdK;awGrSm 'D special character awGu
uRefawmfwdkUudk trsm;BuD;ulnDay;Edkifygw,f/ tJ'Dh special character awGuawmh ^, $, *,
., [] awGyJjzpfygw,f/ uRefawmfwkdU b,fvdk toHk;jyKEdkifw,fqkdwm OyrmawGeJUavhvmMunfh
yg/
30
Capt.ZayYarWin
^ (Caret)
$ (Question)
\ (Back Slash)
[ ] (Brackets)
[^ ]
. (Period)
* (Asterisk)
pmaMumif;wpfaMumif;&JU
oauFwudk toHk;jyKygw,f/
aemufqHk;rSm&SdaewJh
pmvHk;awGukd
&SmzdkUtwGufawmh
31
Capt.ZayYarWin
bag
bigger
jzpfygw,f/
[] uawmh bracket xJrSmyg0ifwJh character wpfvHk;vHk;eJU match jzpfapygw,f/
[myn@panda myn]$ grep ca[a-z] somefile
cat
cad
[myn@panda myn]$ grep week[245] somefile
week2 weather
reports on week4
[myn@panda myn]$
32
Capt.ZayYarWin
vufawG>av>usifhcef;rsm;
1/
2/
pmaMumif;rsm;tm; &SmazGyg/
33
Capt.ZayYarWin
jzpfygw,f1
echo
read
test
let
exit
return
if-then
case
while
10
for-in
puts
conditions
for
Programming in BASH
BASH [m command line interpreter jzpf&Hkomru high-level programming
language vnf; jzpfygw,f/ NyD;cJhwJh avhusifhcef;awGrSm command line interpreter tjzpf
uRefawmfwdkU avhvmcJhMuNyD; jzpfygw,f/ 'Dtcef;rSmawmh programming language
wpfcktjzpf shell scripts awGudk avhvmxdawGUMu&rSm jzpfygw,f/ yxrqHk;taeeJU shell
script qdkwm bmvJqdkwmudk &Sif;vif;pGm oabmaygufzdkUvkdygw,f/ Script qdkwmuawmh
uRefawmfwdkU command line rSm toHk;jyKcJhwJh command awGudk pkpnf;NyD; store
vkyfxm;wJh text file jzpfygw,f/ tJ'gaMumifh script qdkwm command awGpkNyD;a&;xm;wJh
file vdkU ajymr,fqdk&ifvnf; &ygw,f/ MS-DOS rSm oHk;wJh .batch file trsdK;tpm;
oabmrsdK;ygyJ/ 'gayr,fh .batch file awGxuf ydkNyD; pGrf;aqmifEdkifygw,f/
Shell script wpfcka&;zdkUtwGuf text editor wpfckckudk toHk;jyKNyD; a&;&ygw,f/
Text editor qdkwmuawmh Word Processor uJUodkU program ygyJ/ Linux System rSm
uRefawmfwdkU toHk;jyKEdkifwJh text editor program awG trsm;tjym;&Sdygw,f/ tJ'gawG
uawmh vi, emacs, pico, gedit, ponfjzifh&Sdygw,f/ uRefawmfwdkU tck vi udk toHk;jyK
34
Capt.ZayYarWin
azmfjyxm;ygw,fPurpose
To write text
To save file
To save file with file name
To quit the vi editor
To quit without saving
To save and quit vi editor
vi command syntax
Esc + i
Esc + : + w
Esc + : + w filename
Esc + : + q
Esc + : + q + !
Esc + : + w + q
Capt.ZayYarWin
yxrqHk; /bin qdkwJh directory wpfckudk user &JU home directory xJrSm create
vkyfvdkufygw,f/ ( ~/ oauFwu users home directory udk qdkvdkw,fqdkwm
rSwfrdvdrfhr,fvdkU ,lqygw,f/) tJ'Dhaemuf export command eJU vuf&Sd PATH xJudk
uRefawmfwdkUxyfNyD;xnfhvdkwJh /bin ukd xyfxnfhNyD; define vkyfvdkufwmjzpfygw,f/
tay:rSm uRefawmf&Sif;jycJhwmawGudk oabmaygufNyDqdk&if script udk pNyD;a&;MunfhvdkU
&ygNyD/ yxrqHk;taeeJU &dk;&dk;&Sif;&Sif; script wpfckprf;NyD; a&;Munfhygr,f/ avhvmMunfhyg#!/bin/bash
#My first script.
echo We love LINUX.
36
Capt.ZayYarWin
oauFw rvdkyJeJUvnf;&ygw,f/
[myn@panda myn]$ my_script
We love LINUX.
Variables ()
rnfonfh programming language rSmrqdk variables qdkwm rygvQifrNyD;wJh
t&mwpfckyg/ Information (odkU) data wpfckckukd udk,fpm;jyKNyD; memory
ay:rSmae&m,lxm;wJh trnfemrav; wpfckygyJ/ shell rSm toHk;jyKwJh variable
trsdK;tpm;(3)ck &Sdygw,f/ tJ'gawGuawmh User Variable, Shell Variable eJU Readonly Shell Variable awGyJ jzpfygw,f/
Variable wpfck create vkyfwmuawmh tjcm; programming language awGrSmvdk
ygyJ/ name eJU store vkyfr,fh data ukd = oauFwcHNyD; ay;vdkuf&HkygyJ/
[myn@panda myn]$ country=Myanmar
Capt.ZayYarWin
awGudk awGU&ygvdrfhr,f/)
[myn@panda myn]$ echo My host name is $HOSTNAME.
My host name is panda.
Meaning
$#
$*
$@
$0
38
Capt.ZayYarWin
'D script(var_test) udk Redhat, Debian, SUSE qdkwJh argument (3)ckeJU run
MunfhvkdufwJhtcg atmufygtwkdif; awGU&rSmyg-
Arguments
Options:
-n
-e
Example:
[myn@panda myn]$ echo We love LINUX.
We love LINUX.
Capt.ZayYarWin
Name
\a
\b
\n
\r
\t
Alert(bell)
Backspace
New line
Carriage return
Horizontal tab
\\
backslash
command read
Keyboard uaeNyD; input data awGvufcHzdkU read command udk toHk;jyKygw,f/
uRefawmfwdkU &dkufoGif;vkdufwJh data udk vufcHNyD;awmh variable tjzpf assign vkyfay;yg
w,f/ Oyrmjyxm;wJh script(read_example) udk avhvmMunfhyg#!/bin/bash
40
Capt.ZayYarWin
Option
yg#!/bin/bash
echo n Hurry up and type something! >
if read t 3 text; then
echo Great, you made it in time.
else
echo Sorry, you are too slow.
fi
echo FINISHED
41
Capt.ZayYarWin
vufawGUa&;NyD; avhvmMunfhyg/
Exit Status
Linux rSm uRefawmfwdkU command (odkU) script wpfckckukd execute vkyfvdkufwJh
tcg shell uaeNyD;awmh default tm;jzifh return value wpfckck tjrJxkwfay;ygw,f/
tqdkyg value udkMunfhNyD;awmh uRefawmfwdkU&JU command (odkU) script [m execute
vkyfcsdefrSm successful jzpfovm;? error jzpfoGm;vm;qkdwm odEdkifygw,f/ type (2)rsdK;tjzpf
rSwfom; Edkifygw,f/ tJ'guawmh zero eJU nonzero yg/ (0)rS (255) txd&Sdygw,f/ tJ'Dh
value udk exit status vdkUac:ygw,f/ successful jzpfw,fqdk&if exit status (0) udk
jyygw,f/ error wpfrsdK;rsdK;eJU exit jzpfoGm;w,fqdk&ifawmh error trsdK;tpm;tay:rlwnfNyD;
(1)rS(255)twGif; value wpfckckudk jyygw,f/
exit status udk stout rSm tvkdvdk razmfjyay;ygbl;/ uRefawmfwdkU MunfhvdkwJhtcgrSm
special variable jzpfwJh ? udk toHk;jyKNyD; MunfhEdkifygw,f/ OyrmudkMunfhyg[myn@panda myn]$ rm something
rm: cannot remove something: No such file or directory
[myn@panda myn]$ echo $?
1
[myn@panda myn]$
oabmaygufr,fvkdU ,lqygw,f/
42
Capt.ZayYarWin
command test
Command test udk rsm;aomtm;jzifh if command eJU wGJzufNyD;awmh true, false
decision awGtwGuf toHk;jyKygw,f/ yHkpH(2)rsdK;eJU toHk;jyKEdkifygw,f/
Syntax:
#First form
test expression
#Second form
[ expression ]
'DOyrmrSm
avhvmzdkU
Expression
[ expression ]
vG,ful&eftwGuf
Description
Expression is true
43
OyrmyHkpHav;eJU
[ ! expression ]
expression1 a expression2
expression1 o expression2
[ file1 nt file2 ]
[ file1 ot file2 ]
[ d file ]
[ e file ]
[ f file ]
[ L file ]
[ r file ]
[ s file ]
[ w file ]
[ x file ]
[ integer1 eq integer2 ]
[ integer1 ge integer2 ]
[ integer1 gt integer2 ]
[ integer1 le integer2 ]
[ integer1 lt integer2 ]
[ integer1 ne integer2 ]
[ -n string ]
[ -z string ]
[ string1 = string2 ]
[ string1 != string2 ]
Capt.ZayYarWin
Expression is false
Both expression 1 and 2 are true (a=logical AND)
Either expression 1 or 2 is true (o=logical OR)
File1 is newer(modification data) than file2
File1 is older than file2
File exists and is a directory
File exists
File exists and is a regular file
File exists and is a symbolic link
File exists and is readable by you
File exists and has a size greater than zero
File exists and is writeable by you
File exists and is executable
Integer1 is equal to integer2
Integer1 is greater than or equal to integer2
Integer1 is greater than integer2
Integer1 is less than or equal to integer2
Integer1 is less than integer2
Integer1 is not equal to integer2
The length of string is nonzero.
The length of string is zero.
The strings are equal.
The strings are not equal.
44
Capt.ZayYarWin
Example:
[myn@panda myn]$ cat exit_test
#!/bin/bash
if [ $(id u) != 0 ]; then
echo You must be the superuser to run this script >&2
exit 100
fi
[myn@panda myn]$ exit_test
You must be the superuser to run this script
[myn@panda myn]$ echo $?
100
[myn@panda myn]$
45
Capt.ZayYarWin
command let
Command let udkawmh shell rSm arithmetic operator awG tvkyfvkyfzdkUtwGuf
toHk;jyKygw,f/ arithmetic operation (odkU) tjcm;wGufcsuf&rSmawGudk wGufcsufay;NyD;awmh
variable value tjzpf assign vkyfay;ygw,f/ yHkpH(2)rsdK;eJU toHk;jyKEdkifygw,f/
Syntax:
$ let expression
(or)
$ ((expression))
Example:
[myn@panda myn]$ x=10
[myn@panda myn]$ y=3
[myn@panda myn]$ let ans=x+y
[myn@panda myn]$ echo $ans
13
[myn@panda myn]$
Capt.ZayYarWin
command if-then
tjcm; programming language awGrSmoHk;wJh if &JUoabmw&m;eJU twlwlygyJ/
command toHk;jyKyHk format tenf;i,fyJ uGm;jcm;ygw,f/
Syntax:
if expression
then
commands
else
commands
fi
47
Capt.ZayYarWin
#!/bin/bash
if [ $# -eq 0 ]
then
echo You have no argument.
else
echo You have $# argument(s).
echo Your arguments are
echo $*
fi
oabmaygufr,fvdkU ,lqygw,f/
command case
case uawmh
uawmh atmufygtwdkif;jzpfygw,fSyntax:
case $variable in
pattern1 ) commands ;;
pattern2 ) commands ;;
patternN ) commands ;;
* ) commands ;;
esac
48
Capt.ZayYarWin
Main menu
echo ----------------------------------------------------
echo [1] Show today date and time
echo [2] Show files in current directory
echo [3] Show the calendar for 1980
echo [4] Show my network information
echo [5] Exit/stop
echo ==========================================
echo n Please enter your choice [1-5]:
read choice
case $choice in
1)
echo Today is $(date)
;;
2)
echo Files in $(pwd) is $(ls -al)
;;
3)
cal 1980
;;
4)
ifconfig
;;
5)
exit 0
;;
49
Capt.ZayYarWin
*)
echo You did not enter a number between 1 and 5.
esac
command while
while [mvnf; looping command wpfckygyJ/ expression uaeNyD; exit status
0 (true) &aeoa&GU do eJU done statement Mum;rSm&SdaewJh command awGudk execute
vkyfaerSmyJ jzpfygw,f/
Syntax:
while expression
do
commands
done
Capt.ZayYarWin
#!/bin/bash
Number=1
while [ $number le 5 ]
do
echo $number
number=$((number+1))
done
[myn@panda myn]$ chmod +x while_example1
[myn@panda myn]$ while_example1
1
2
3
4
5
[myn@panda myn]$
51
Capt.ZayYarWin
command for-in
for uawmh tjcm; programming language awGrSmuJhodkU looping vkyf&mrSm
toHk;jyKwJh flow control statement wpfckyg/ toHk;jyKwJh yHkpHuawmhSyntax:
for loop-index in argument-list
do
commands
done
argument list rSm&SdwJh yxrqHk; item udk for &JU loop-index rSm pNyD; assign
vkyfygw,f/ tJ'Dhaemuf do eJU done statement Mum;rSm&SdwJh command awGudk execute
vkyfygw,f/ do eJU done statement awGu for looping &JU tpeJU tqHk;ukd azmfjyyg
w,f/ program tvkyfvkyfvmNyD; done statement ukd pass jzpfoGm;wJhtcgrSm
aemufwpfBudrf argument list rSm&SdwJh 'kwd, item udk assign vkyfNyD; a&SUrSmvkyfoGm;wJh
twdkif;yJ tvkyfqufvkyfoGm;ygw,f/ argument list rSm&SdwJh item ukefwJhtxd tJ'Dhtwdkif;
looping ywfaerSmyJ jzpfygw,f/ Oyrmjyxm;wJh script(for_example1) udk avhvm
Munfhyg#!/bin/bash
for country in Myanmar Thailand Singapore
do
echo $country is in South-East Asia.
done
52
Capt.ZayYarWin
do
echo $i
done
1/
a&;om;yg/
9 tu,f user rS source file ESifh receive file name udk wpfckwnf; input
vkyfcJhygu error message jyNyD; exit vkyfyg/
9 source file onf directory xJwGif &Sdr&SdESifh regular file [kwfr[kwf ppfaq;yg/
r&Sdvsif error message jyNyD; exit vkyfyg/
9 user input vkyfvdkufaom receive file ESifhtrnfwl trnfwl file &Sdr&Sdppfaq;yg/
r&Sdvsif copy vkyfNyD;? user odkUNyD;qHk;aMumif; message jyyg/ tu,f&SdcJhygu
overwrite vkyfrvkyf user okdU confirm vkyfyg/
2/
3/ User tm; input number wpfvHk;awmif; xdk number tm; (2) jzifhajrSmufyg/
&&dSonfh result udk screen wGifjyyg/ program udk double trnfjzifh save yg/
53
Capt.ZayYarWin
LITERATURE
1. Norman Matloff. UNIX Shell Scripts, 2002.
2. Ken Steube. UNIX Borune Shell Scripting
3. Machtelt Garrels. Bash Guide for Beginners, 2005.
4. Mendel Cooper. Advaned Bash-Scripting guide, 18 June 2006.
5. http://www.linuxcommand.org/learning_the_shell.php
54