You are on page 1of 54

Moscow Institute of Electronic Technology Capt.

ZayYarWin

ìLaboratory Exercises with Linuxî


ed'gef;
,ck vufawGUavhusifhcef;rSpNyD; uRefawmfwkdU[m Operating System “Linux” eJU
ygwfoufwJh avhusifhcef;tcsdKUukd pwifxdawGUMu&rSmjzpfygw,f/ Linux &JU file structure
wnfaqmufyHk? command line interface rSm toHk;jyKwJh command rsm;eJU shell script
rsm;a&;om;enf;udk tajccHtm;jzifh avhvmNyD; vufawGUavhusifhcef;rsm; jyKvkyfMu&rSmjzpfyg
w,f/
Linux user awGtaeeJU GUI vdkUac:wJh Graphic User Interface udk Windows
rSmuJhodkU mouse udktoHk;jyKum icon awGudkMunfhNyD; tvG,fwultvkyfvkyfEdkifovdk
command line interface rSm command awGudk&dkufNyD; system udk instruction ay;Edkifyg
w,f? Graphic mode eJUtvkyfvkyfwm[m user twGuf ydkNyD;em;vnf&ef vG,fulayr,fh
tcsdKUaom task awGrSmawmh graphic rSm icon awGudkMunfhNyD;wpfqifhjcif; click
vkyfoGm;&wmxuf shell rSm text command udk &dkufNyD;tvkyfvkyfwm[m ydkívG,fulNyD;
process time [mvnf; graphic rSmxufydkenf;vdkU tvkyfvkyfrIU ydkrdkjrefqefwmudk awGU&rSm
jzpfygw,f? OS “Linux” rSmtoHk;jyKwJh xif&Sm;wJh Shell awGuawmh BASH (Borune-
Again SHell), CSH(C SHell) eJU KSH(Korn SHell) awGyJjzpfygw,f/ MS-DOS rSm
toHk;jyKwJh COMMAND.COM shell [mvnf; tckazmfjyyg Shell awGeJU vkyfaqmifrIU
twlwljzpfygw,f/ 'gayr,fh Linux rSm toHk;jyKwJh Shell awGavmufawmh powerful
rjzpfygbl;/
BASH shell uawmh Red Hat &JU default shell jzpfygw,f/ atmufrSm
azmfjyxm;wJhyHkawGudk Munfhr,fqkd&if shell rSm command awGeJU b,fvdktvkyfvkyfw,fqdk
wmoabmaygufvG,fulrSmjzpfygw,f/

uRefawmfwdkU user awGay;vdkufwJh instruction awGudk pufuwdkuf&dkuf em;rvnfEdkif


ygbl;? tJ'gaMumifh shell uaewqifh pufuem;vnfEdkifwJh machine language udk
ajymif;ay;ygw,f? tJ'DhtcgusrSom OS u uRefawmfwdkU&JU instruction udk em;vnfNyD;
instruction twGuf output udk jyefxkwfay;ygw,f? 'Davmufqdk&ifawmh command line
interface rSm command eJU shell b,fvdktvkyfvkyfw,fqdkwm tajccHtm;jzifh
em;vnfoGm;NyDvdkU,lqygw,f/ Laboratory No(9) eJU (10) rSmawmh shell rSmtoHk;jyKwJh

1
Moscow Institute of Electronic Technology Capt.ZayYarWin

basic command awGeJU No.11 rSmawmh shell script tenf;i,fudk pwifxdawGUMu&rSm


jzpfygw,f/

ìLinux file structureî

Linux file structure rSmyg0ifwJh directory rsm;udk uRefawmfwdkUavhvmMu&rSm jzpfyg


w,f/ uRefawmfwdkUtaeeJU directory tvdkuf rnfonfh directory xJrSm rnfodkUaom
zdkiftrsdK;tpm;awGyg0ifw,f? system eJU user twGuf command file awG? configuration
file awG? uRefawmfwdkUtwGuf avhvm&mrSm taxmuftuljzpfapr,fh documentation files
awG[m rnfonfh directory xJrSm&SdMuw,f ponfjzifh tusOf;zsOf; od&Sdxm;zdkU vdktyfyg
w,f/ directory tm;vHk;[m ‘/’ root atmufrSm tree yHkpHrsdK;eJU tqifhqifh zGJUpnf;xm;yg
w,f/ Linux file structure layout udk atmufrSmazmfjyxm;ygw,f-

2
Moscow Institute of Electronic Technology Capt.ZayYarWin

/root user ‘root’ twGuf home directory jzpfygw,f/


system xJrSmyg0ifwJh user awG&JU directory awG? data awG[m 'D
/home
directory xJrSm&Sdygw,f/
'D directory (2)ckxJrSm System twGuf vdktyfwJh program file
/bin awG&Sdygw,f? /bin xJrSmawmh system startup vkyfwJhtcsdefrSmvdktyfwJh
/usr/bin command file awG&Sdygw,f? user awGtwGuf vdktyffwJh command file
awG jzpfygw,f/
/bin directory uJhodkU command file awG&Sdygw,f? system eJU
/sbin
administrator toHk;jyKwJh zdkifawGjzpfygw,f/
'D file system uawmh virtual file system jzpfygw,f? disk ay:rSm
/proc
wu,fr&Sdygbl;?
Command file rsm;? documentation zdkifrsm;? man pages rsm;? Kernel
/usr
source code file rsm; wnf&Sdygw,f/
Boot loader toHk;jyKwJh zdkifawGwnf&Sdygw,f? linux kernel vnf; 'D
/boot
directory xJrSm wnf&dSygw,f/
/lib Shared libraries files awGwnf&Sdygw,f/
System rSm toHk;jyKwJh device awGtm;vHk;[m 'D directory xJrSm file
/dev
awGtjzpf wnf&Sdygw,f/
System &JU configuration file awG[m 'D directory xJrSm text file
/etc awGtaeeJU wnf&Sdygw,f/ system boot vkyfwJhtcsdefrSm toHk;jyKwJh
scripts zdkif? password file awG wnf&Sdygw,f/
/var Mail, news eJU log file awGwnf&Sdygw,f/
device awGudk system rSm toHk;jyK&eftwGuf mount vkyfxm;wJhae&m
/mnt
mount point jzpfygw,f/
/tmp Program eJU user awG&JU temporary zdkifawGtwGuf toHk;jyKygw,f/

Note:
To login the system:
login:<username>
Password:

# Linux rSm case sensitive jzpfw,fqdkwm owdxm;&rSmjzpfygw,f/ Oyrm- Panda ≠


panda.

3
Moscow Institute of Electronic Technology Capt.ZayYarWin

$ ordinary user login account jzpfygw,f/

# root (odkU) superuser login account jzpfygw,f/

Ctrl+Alt+F1, virtual text console wpfckeJUwpfckMum; ajymif;wJhtcgrSm oHk;yg


Ctrl+Alt+F2,
w,f/
Ctrl+Alt+…,

Ctrl+c current process udk &yfypfcsifwJhtcgrsdK;rSm oHk;ygw,f/

current terminal rS logout vkyfwJhtcgrSmoHk;ygw,f? ‘exit’


Ctrl+d
command eJUwlygw,f/

shutdown –h now Shutdown the system


halt Stop the system

Command Line Interface:

4
Moscow Institute of Electronic Technology Capt.ZayYarWin

Laboratory Exercise No(9)


Lab.9 rSm uRefawmfwkdUpwifxdawGUMu&r,fh Command awGuawmh atmufyg
twkdif;jzpfygw,f-

1 man Displays help information on a command


2 help To see help or options on a command
3 mount/umount Mounts a partitions or device
4 who To see who is using system
5 pwd Display the current working directory
6 cd Change the current working directory
Displays the content of a directory or information on a
7 ls
file
8 ln To create multiple file copied with various link
9 cat To see text files
10 less View text files
11 file Display file type
12 cp Copies one or more files/directories.
13 mv Move or rename files/directories.
14 rm Remove files
15 mkdir To create new file
16 rmdir Remove a directory. (The directory must be empty!)
17 chmod To change file access permissions.
18 chown Change ownership of a file

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

5
Moscow Institute of Electronic Technology Capt.ZayYarWin

$ command --help

# MS-DOS rSmoHk;wJh C:\>command /? (odkU) C:\>command help eJUtwllwlygyJ?

Example:
[myn@panda myn]$ date
[myn@panda myn]$ man cp

copy eJUygwfoufwJh manual page xJa&mufoGm;rSmjzpfygw,f?


<space> aemufpmrsufESmawGudk oGm;vdkwJhtcgrSm ESdyf&rSmjzpfygw,f/
<Enter> pmaMumif;a& wpfaMumif;csif;qif;oGm;zdkUtwGuf toHk;jyKygw,f/
<Ctrl+c> odkU <q> manual page rS exit vkyfcsifwJhtcgrSm oHk;ygw,f/

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 (device’s 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

wGJzuftoHk;jyKwJh options awGudkawmh ‘man’ command udk toHk;jyKNyD;awmh


avhvmMunfhyg/ man page xJrSm tao;pdwf&Sif;jyxm;ygw,f/
Example:
[root@panda root]# mount /dev/cdrom /mnt/cdrom

6
Moscow Institute of Electronic Technology Capt.ZayYarWin

Cdrom device udk mount point directory jzpfwJh /mnt ae&mrSm mount
vkyfvdkufwmjzpfygw,f/

[root@panda root]# mount /mnt/floppy


[root@panda root]# umount /mnt/floppy

Floppy udk mount eJU umount vkyfwmjzpfygw,f/

command “who”

vuf&Sd system xJudk login vkyfxm;wJh user awGeJUygwfoufwJh tcsuftvufawGudk


azmfjyay;ygw,f/
Syntex:
$ who [options] [am i]
$ whoami

Example:

‘who’ command udk option a&m arguments (am i) rygyJ oHk;wJhtcgrSm


vuf&SdtoHk;jyKaewJh user awGtm;vHk;&JU login name, terminal line, login time, remote
hostname pwJhtcsuftvufawGudk azmfjyay;wmawGU&rSmjzpfygw,f/

‘who’ command udk argument jzpfwJh ‘am i’ eJUwGJoHk;wJhtcgrSm ,ckvuf&Sdrdrd[m


b,f user name jzpfw,fqkdwmudk tcsuftvuftwdtuseJU azmfjyay;wmudk awGU&rSm

7
Moscow Institute of Electronic Technology Capt.ZayYarWin

jzpfygw,f? (-u) option u tvkyfvkyfcJhwJhMumcsdefudkyg azmfjyay;wmjzpfygw,f/ ‘.’


trSwftom;jyxm;wmuawmh rdrdjzpfw,fqkdwmudkqdkvdkygw,f/

command “pwd”
user vuf&Sda&mufaewJh (tvkyfvkyfaewJh) current directory udk azmfjyay;ygw,f/
Syntax:
$ pwd

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

vuf&Sda&mufaewJh directory uaeNyD; /etc/sysconfig directory xJudk a&mufoGm;rSm


jzpfygw,f? MS-DOS rSmtoHk;jyKwJh ‘cd’ command eJUwlygw,f/

command “ls”
Directory xJrSm yg0ifwJh file awG&JU list ukdazmfjyay;ygw,f/ rdrda&mufaewJh
directory xJrSmyg0ifwJh file awGudkodvdkwJhtcg toHk;jyKEdkifygw,f/ MS-DOS rSm
toHk;jyKwJh ‘dir’ command eJU twllwlyJjzpfygw,f/
Syntax:
$ ls
$ ls [options] directory

Example:

8
Moscow Institute of Electronic Technology Capt.ZayYarWin

‘ls’ command udk options awGa&m? arguments awGa&mrygyJ toHk;jyKwJhtcgrSm


yg0ifwJhzkdifawG&JU list udk azmfjyay;wmudk jrif&rSmjzpfygw,f? options awG arguments
awGeJUwGJoHk;wJhtcg b,fvdkuGmjcm;rIU&Sdw,fqdkwm uRefawmfwdkUqufNyD;Munfh&atmif-

(-a) option udk wGJoHk;jcif;tm;jzifh hidden file awGudkygazmfjyay;wmudk awGU&rSm


jzpfygw,f? zdkifawG&JUtprSm ‘.’eJU pxm;wJhzdkifawG[m hidden file awGjzpfygw,f/

9
Moscow Institute of Electronic Technology Capt.ZayYarWin

(-l) option uawmh yg0ifwJhzdkifawG&JU list ukd tcsuftvuf twdtus long format
eJU azmfjyay;wm awGU&rSmjzpfygw,f/ azmfjyxm;wJh tcsuftvufawGu bmawGudkqdkvdkw,f
qdkwm atmufrSm&Sif;jyxm;ygw,f-

option (l eJU d) udk wGJoHk;xm;wmjzpfygw,f? rdrdodvkdwJh directory /bin &JUtcsuf


tvufawGudk azmfjyay;rSm jzpfygw,f/ /bin u directory jzpfaewJhtwGuf ‘-d’ option udk
wGJoHk;xm;wmjzpfygw,f? 'Dae&mrSm ‘-d’ option rygyJ oHk;vdkufr,fqdk&ifawmh /bin xJrSm
&SdaewJhzdkifawG&JU list udkyJjrif&rSmjzpfygw,f/

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
OyrmawGudk wpfqifhcsif;avhvmMunhfvdkuf&if oabmaygufrSmjzpfygw,f/
Syntax:
$ln source destination
$ln [options] source destination

Option:
[-s] symbolic link

Example:

10
Moscow Institute of Electronic Technology Capt.ZayYarWin

Hard link jyKvkyfwmudk Oyrmjyxm;wmjzpfygw,f/ yxrqHk; file1 trnfeJU


zdkifwpfck create vkyfNyD; zdkifxJrSm “Union of Myanmar” qdkwJh text ukd &dkufxnfhvkdufyg
w,f/ tJ'Dhaemuf ‘ln’ command ukd toHk;jyKNyD; file2 trnfeJU file1 &JU link file wpfck
create vkyfvdkufygw,f/ ‘ls -l’ command udk toHk;jyKNyD; 'DzdkifESpfck&JU tcsuftvufawGukd
avhvmMunhfwJhtcgrSm uRefawmfwdkU jrif&wJhtwdkif; link jzpfwJhtwGuf tcsuftvufawG
tm;vHk;twlwljzpfaewmudk awGU&rSmyg/ ykdNyD;aocsmatmif ‘cat’ command eJU file2 udk
zwfBunfhvdkufwJhtcg file1rSm uRefawmfwdkU&dkufcJhwJhtwdkif; “Union of Myanmar”
jzpfaewmudkawGU&rSmyg/ ,ck uRefawmfwkdU avhvmcJhwm[m current directory xJrSmyJ
hard link file jyKvkyfwmjzpfygw,f/ rwlnDwJh directory rSm &SdaewJh file awGudkvnf;
hard link jyKvkyfvdkU&ygw,f/ tcsdKUaom directory awGtwGuf &dk;&dk; user awGuawmh
rvkyfEdkifygbl;? superuser (root) account jzifhom jyKvkyfEdkifygw,f/ Oyrmudk avhvm
MunfhygOD;-

Symbolic link jyKvkyfwmeJU ywfoufNyD; uRefawmfwdkUqufNyD;avhvmMunhfygr,f?


symbolic link uawmh Windows rSmtoHk;jyKwJh shortcut oabmrsdK;ygyJ? &Sif;vif;
oGm;atmif OyrmukdavhvmMunfhyg/

11
Moscow Institute of Electronic Technology Capt.ZayYarWin

‘file3’ [m ‘file1’ &JU symbolic link jzpfwmudk awGU&rSmyg? wenf;tm;jzifh


shortcut ygyJ? file size uvnf; rl&if; ‘file1’ xufi,faewmudkawGU&rSmyg? file3 ukd
zwfMunfhvdkufwJhtcgrSmvnf; “Union of Myanmar” udkyJ awGU&rSmjzpfygw,f/ ‘ln’
command eJUygwfoufNyD; oabmaygufr,fvkdUarQmfvifhygw,f/

command “cat, less”


Text file awGudkzwf&mrSm toHk;jyKygw,f/ ‘cat’ command ukd wjcm;oHk;vdkU&wJh
function awGvnf;&Sdygao;w,f/
Syntax:
$ cat file

Example:
[myn@panda myn]$ cat file1
My name is Mg Mg.
I live in Myanmar.
[myn@panda myn]$

file1xJrSm&SdwJh text awGudk screen rSm awGU&rSmjzpfygw,f?

[myn@panda myn]$ cat file1 file2 > file3

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;
a&mufoGm;rSmjzpfwJhtwGuf uRefawmfwdkUtwGuf tqifrajyawmhygbl;? tJ'DhtwGuf aemufxyf
toHk;jyKEdkifwJh command uawmh ‘less’ jzpfygw,f/

12
Moscow Institute of Electronic Technology Capt.ZayYarWin

command ‘less’ uawmh text file awGudk zwf&mrSm ydkNyD;tqifajywmudk awGU&rSm


jzpfygw,f/
Example:
[myn@panda myn]$ less file1

zdkifxJrSmygwJh text awGudk pmrsufESmtvdkuf wpfrsufESmcsif;pD screen rSm display


vkyfay;rSm jzpfygw,f/ <Page Up>, <Page Down> key awGudktoHk;jyKNyD;awmh
rdrdtvdk&Sdovdk txufatmuf? twuftqif;vkyfNyD; zwfoGm;vdkU&ygw,f/ jyefxGufvdkwJhtcg
rSmawmh ‘q’ odkUr[kwf keyboard uae ‘exit’ vdkU &dkufvdkuf&HkygyJ/

command “file”
'D command uawmh file type trsdK;tpm;udk azmfjyay;ygw,f/ uRefawmfwdkUrSm
&SdaewJh file awG[m b,fvdk file type trsdK;tpm;vJqdkwmudk 'D ‘file’ command u
tvG,fwul azmfjyay;ygw,f/
Syntax:
$ file somefile

Example:

command “cp”

File eJU directory awG copy vkyf&mrSm toHk;jyKygw,f/


Syntax:
$ cp [options] Source Dest
$ cp [options] Source Directory

13
Moscow Institute of Electronic Technology Capt.ZayYarWin

Example:
[myn@panda myn]$ cp file1 file2

rlv&SdwJh file1 udk copy vkyfNyD; file2 trnfeJU create vkyfvkdufwmjzpfygw,f/

[myn@panda myn]$ cp file1 file2 /home/myanmar

vuf&Sda&mufaewJh directory xJuzdkifawGjzpfwJh file1 eJU file2 udk /home/myanmar


xJodkU copy vkyfvdkufwmjzpfygw,f/

[myn@panda myn]$ cp –i file1 file2

rl&if;zdkifjzpfwJh file1 uae file2 tjzpf copy vkyf&mrSm rlvuwnf;u file2


emrnfeJU trnfwl&SdaecJh&if overwrite vkyfrvkyfqdkwmudk (-i) option u user udk
confirm vkyfcdkif;rSmjzpfygw,f/

command “mv”

‘mv’ command ukdawmh function (2)rsdK;twGuf toHk;jyKygw,f? zdkifawGudk


directory wpfckuae wpfjcm; directory wpfckudk move vkyfwJhtcgeJU aemufwpfckuawmh
file (odkU) folder awG&JU trnfudk rename vkyfwJhtcg toHk;jyKEdkifygw,f/
Syntax:
$ mv old_filename new_filename
$ mv file1 file2 directory

Example:
[myn@panda myn]$ mv file1 file2

file1 ukd file2 tjzpf rename vkyfvdkufwmjzpfygw,f? tu,fí rdrday;vdkufwJh


file2 emrnfeJU rlvuwnf;u trnfwl file &Sdaew,fqdk&if tJ'Dh file2 xJudk file1 &JU
tcsuftvufawGtm;vHk;u replace vkyfvdkufrSm jzpfygw,f?

[myn@panda myn]$ mv –i file1 file2

(-i) option udk toHk;jyKjcif;tm;jzifh txufrSm azmfjycJhwJhtwdkif; rdrdtopfay;csifwJh


new filename [m rlvuwnf;u toHk;jyKNyD;jzpfaer,fqdk&if overwrite vkyfrvkyf user
udk message jyrSmjzpfygw,f/

[myn@panda myn]$ mv file1 dir1

file1udk dir1xJodkU move vkyfvdkufwm jzpfygw,f/

14
Moscow Institute of Electronic Technology Capt.ZayYarWin

[myn@panda myn]$ mv dir1 dir2

dir1 udk dir2tjzpf rename vkyfvkdufwm jzpfygw,f/

command “rm”

'D command udkawmh file awGeJU directory awG delete vkyf&mrSm toHk;jyKygw,f/
Syntax:
$ rm filename
$ rm –r directory

Directory udk delete vkyf&mrSm (-r) option udk toHk;jyKxm;wmjzpfygw,f/

Example:
[myn@panda myn]$ rm file1 file2
[myn@panda myn]$ rm –r dir1 dir2

Command “rm” udk toHk;jyK&mrSm owdjyK&rSmuawmh Linux [m Windows


rSmuJhodkU delete vkyfrdwmudk undo jyefvkyfvdkU&wJh command r&SdwJhtwGuf 'D command
udk roHk;cifrSm owdjyKNyD;rStoHk;jyKoifhygw,f/

command “mkdir”
Directory (folder) topf create vkyf&mrSm toHk;jyKygw,f/
Syntax:
$ mkdir dir_name

Example:
[myn@panda myn]$ mkdir yangon

vuf&Sda&mufaewJh directory xJrSmyJ ‘yangon’qdkwJh folder wpfck create


vkyfvdkufwm jzpfygw,f/

[root@panda root]# mkdir /home/myanmar/yangon

vuf&Sda&mufaewJh directory(root) uaeNyD; /home/myanmar directory xJrSm


yangon qdkwJh folder udk create vkyfvkdufwmjzpfygw,f/

15
Moscow Institute of Electronic Technology 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
datar rQr&SdwJh empty folder jzpfaerSom 'D command ukd oHk;vdkU&rSmjzpfygw,f/
Syntax:
$ rmdir dir_name

Example:
[root@panda myn]# rmdir /home/myanmar/yangon

zsufcsifwJh folder u vuf&Sd directory xJrSm r&Sdbl;qdk&ifawmh folder &SdaewJh path


name jzpfwJh /home/myanmar udkyg azmfjyNyD; oHk;&rSmjzpfygw,f/

command “chmod”
'D ‘chmod’ command udkawmh file eJU directory awG&JU access permission udk
management vkyf&mrSm toHk;jyKygw,f/ Linux [m uRefawmfwdkU odxm;wJhtwdkif;
multi-task system jzpf&Hkomru system wpfckwnf;udk wpfcsdefwnf; wpfjydKifwnf;rSm
user trsm;tjym;toHk;jyKEdkifwJh multi-user system trsdK;tpm;vnf;jzpfygw,f/ tJ'gaMumifh
uRefawmfwkdU&JU computer xJrSm&SdwJh ta&;BuD; file, data awGudk uRefawmfwdkU cGifhjyKvdkwJh
user awGuvGJNyD; tjcm; rvdkvm;wJh user awG vma&mufNyD; access rvkyfEdkifzdkUtwGuf
security system vdktyfygw,f/ tJ'DhtwGuf uRefawmfwkdU ‘chmod’ command udk
toHk;jyKNyD; file access permission setting eJU user awG&JUtMum;rSm security udk
xdef;odrf;xm;Edkifygw,f/ uRefawmfwkdU qufNyD;avhvmMunhf&atmif? yxrqHk; uRefawmfwdkU
taeeJU permission setting udk em;vnfxm;zdkU vdktyfygw,f? permission setting
twGufodxm;&r,fh user trsdK;tpm;awGuawmh-

u owner
g Group
o others
a all(u, g and o)

Permission trsdK;tpm;awGuawmh-

r read access
w write access
x Execute(run)

16
Moscow Institute of Electronic Technology Capt.ZayYarWin

Permission setting rSm user trsdK;tpm;awGjzpfwJh u(owner), g(group), o(others)


twGuf read, write, execute permission access trsdK;tpm;awGukd uRefawmfwdkU b,fvdk
management vkyfEdkifr,fqdkwm atmufrSmazmfjyxm;wJhyHkxJrSm MunfhygOD;-

Permission setting udkawmh ‘ls’ command ukd toHk;jyKNyD; MunfhEdkifygw,f?


atmufygtwkdif; awGU&rSmjzpfygw,f-

[zayar@zayar-pc zayar]$ ls -l a.out


-rwxrwxr-x 1 zyw zyw 497151 Jan 2 02:05 a.out

&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,f-
Syntax:
$ chmod [mode] file

Example:
[myn@panda myn]$ chmod g+w file (add write access for the group)
[myn@panda myn]$ chmod o-rwx file (remove all permission for the other)
[myn@panda myn]$ chmod u+x file (allow the file owner to execute the file)
[myn@panda myn]$ chmod a+rw file (allow everyone to read and write to the file)
[myn@panda myn]$ chmod ug+r file (allow the owner and group to read the file)

17
Moscow Institute of Electronic Technology Capt.ZayYarWin

‘chmod’ command udk numerical value wefzdk;udk toHk;jyKNyD;awmhvnf; toHk;jyK


Edkifygw,f/ character awG&JU value ukd owfrSwfxm;yHkuawmh r=4, w=2, x=1, ‘-’=0
jzpfygw,f/ atmufrSmazmfjyxm;wJh OyrmudkavhvmMunfhygOD;?
Example:

[myn@panda myn]$ chmod 544 file

qdkvdkwmuawmh 'Dzdkifukd owner taeeJU read, execute vkyfEkdifygw,f? group


xJrSmyg0ifwJh user awGtaeeJU read only jzpfygw,f? tjcm;aom user awGtaeeJUvnf;
'Dzdkifudk read only access vkyfvdkU&ygw,f? oabmaygufNyD;jzpfr,fvdkU ,lqygw,f/
tu,fí uRefawmfwkdU[m r, w eJU x wdkU&JU owfrSwfwefzkd;awGudk arhoGm;wJhtcg
odkUr[kwf wefzdk;wpfckeJUwpfck a&maxG;NyD; rrSwfrdwJhtajctaersdK;rSm toHk;jyKEdkifzdkUtwGuf
enf;wpfck&Sdygao;w,f/ binary wefzdk;eJU wGufcsufwmjzpfygw,f/ avhvmMunfhygOD;-

tESpfcsKyftaeeJU uRefawmfwdkUjyefaqG;aEG;&&if ‘chmod’ command toHk;jyKyHkudk


(3)enf;eJU avhvmcJhwmjzpfygw,f? yxrenf;uawmh-
[myn@panda myn]$ chmod ug+rw some_file

'kwd,enf;uawmh numerical value wefzdk;eJUtoHk;jyKwm jzpfygw,f-


[myn@panda myn]$ chmod 777 some_file

wwd,enf;uawmh numerical value wefzdk;udk binary wefzdk;eJU pOf;pm;wGufcsufNyD;


toHk;jyKcJhwmjzpfygw,f/ em;vnfEdkifzdkUtwGuf enf;(3)enf;pvHk;eJU vufawGUrsm;rsm;jyKvkyf
MunfhzdkU tMuHjyKvdkygw,f/

18
Moscow Institute of Electronic Technology Capt.ZayYarWin

command “chown”
change owner jzpfygw,f/ file &JU ownership udk ajymif;zdkU vdktyfwJhtcgrSm
toHk;jyKygw,f/
Syntax:
# chown new_owner file

'D command udk toHk;jyKzdkUtwGuf superuser(root) jzpfzdkUvdkygw,f? tJ'gaMumifh


yxrqHk; uRefawmfwdkUtaeeJU normal user account($) uae superuser account(#) udk
ajymif;&rSmjzpfygw,f/ ‘su’ command udktoHk;jyK&rSm jzpfygw,f/ rlv account udk
jyefajymif;vdkwJhtcgrSmawmh ‘exit’ command udk toHk;jyK&rSmjzpfygw,f/

[zyw@zayar-pc zyw]$ su
Password:
[root@zayar-pc zyw]#
[root@zayar-pc zyw]# exit
exit
[zyw@zayar-pc zyw]$

Example:
erlemudk wpfqifhcsif; avhvmMunhfyg? oabmaygufr,fvdkU arQmfvifhygw,f/

Line No.4 rSm jrif&wJh 'Dzkdif&JU owner [m command udkoHk;tNyD; Line No.9 rSm
tjcm; owner name odkU ajymif;oGm;wmudk awGU&rSmjzpfygw,f/

19
Moscow Institute of Electronic Technology Capt.ZayYarWin

vufawG>av>usifhcef;rsm;

1/ rdrd\ home directory xJwGif “Dir” trnfjzifh directory(folder) wpfck


wnfaqmufyg/ tqdkyg “Dir” directory xJwGif subdirectory rsm;tm; atmufwGif
azmfjyxm;onfhtwdkif; wnfaqmufyg-
Dir/dir1/dir11
Dir/dir1/dir12
Dir/dir2
Dir/dir2/dir22/dir23
(&&Sdvmaom result tm; enf;jyxHjyoyg/)

2/ rdrd\ home directory xJwGif yg0ifaom zkdifrsm;tm;vHk;udk ¤if;wdkUESifhoufqdkifaom


tcsuftvuf tjynfhtpHkjzifh Munfh&IUyg/ ‘.bash_profile’ wGifyg0ifaom text rsm;udk
display vkyfjyyg/ ‘.bash_profile’tm; copy vkyfí ‘profile_new’ ESifh
‘profile_new1’ trnfrsm;jzifh zdkifrsm; wnfaqmufyg/ “Newfolder” trnfjzifh
directory wpfckwnfaqmufyg/ ‘profile_new1’tm; “Newfolder”xJodkU a&TUyg/
‘profile_new1’tm; ‘newprofile’ odkU trnfajymif;yg/ ‘newprofile’ \
symbolic link tjzpf ‘newprofile1’ESifh ‘newprofile2’ wdkUtm; wnfaqmufyg/
(&&Sdvmaom result udk enf;jyjzpfolxHjyoí enf;jyar;aom ar;cGef;rsm;tm;
ajzqdkyg/)

3/ ‘newprofile1’ \ permission setting tm;Munfh&IUyg/ xkdUaemuf tqdkygzkdiftm;


vmí access vkyfonfh owner ESifh group wGifryg0ifaom tjcm; user rsm;tm;
write vkyfEdkif&ef permission setting tm;jyifqifay;yg/
-‘newprofile2’ udk owner jzpfolwpfOD;wnf;tm; read, write, execute vkyfcGifhjyKí
group ESifh tjcm;aom user tm;vHk;udk rnfodkUrQ access rvkyfEdkif&ef permission
setting tm;jyifqifay;yg/
-‘newprofile2’ udk owner jzpfoltm; read, write, execute vkyfcGifhjyKí group
user rsm;twGuf execute vkyfcGifh? tjcm;aom user rsm;twGuf read ESifh execute
jyKvkyfEkdif&ef jyKvkyfay;yg/ (rSwfcsuf/ /numerical value toHk;jyKaom enf;jzifh
om permission setting tm;jyifqifyg/)

I enf;]y]zpfoludk]yoI ar;cGef;rsm;tm; ajzqdkyg/ J

20
Moscow Institute of Electronic Technology Capt.ZayYarWin

Laboratory Exercise No(10)

“I/O Redirection, Pipes, Filters and Regular expressions”


Lab:10 rSm uRefawmfwkdUxdawGUMu&r,fh Command awGuawmh atmufygtwkdif;
jzpfygw,f-

1 cat Allows you to look, modify or combine a file.

2 tee Read from an input and write to a standard output or file.

3 wc Print the number of lines, words and characters in file.

4 spell To check spelling from a file or user input.

5 sort Sorts the lines in a text file.

6 cut Divide a file into several parts.

7 diff Display the differences between two files.

8 grep Search file for pattern and print matching lines

Redirection of Input and Output


uRefawmfwdkU toHk;jyKcJhwJh command trsm;pk[m &&SdvmwJh result ukd standard
output jzpfwJh Screen rSm azmfjywmudkawGUcJhMu&NyD;jzpfygw,f/ tcsdKUaom oauFwrsm;udk
toHk;jyKNyD;awmh command awG&JU output ukd direction ajymif;vJay;Edkifygw,f/ Oyrm-
zdkifxJodkUydkUNyD; save Edkifygw,f/ y&ifwmuJhodkUaom device awGxHodkUydkUay;Edkifygw,f/
xkdUtjyif tjcm;aom command qDodkUydkUay;NyD; command ESpfck wpfNydKifwnf; tvkyfvkyf
Edkifygw,f/ tJ'Dh redirection vkyfay;wJh oauFwawGuawmh ‘>’ eJU ‘<’ yJjzpfygw,f/
OyrmudkavhvmMunhfyg-

[myn@panda myn]$ ls > list.txt

‘>’ 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
jyóemtwGuf ‘>>’ oauFwudk tokH;jyKEdkifygw,f/

[myn@panda myn]$ ls >> list.txt

‘>>’ oauFwu overwrite rvkyfyJ rlvzdkif&JUatmufrSmqufNyD; write vkyfoGm;atmif


ulnDay;ygw,f/

21
Moscow Institute of Electronic Technology Capt.ZayYarWin

Pipes and Filters


NyD;cJhwJh Lab-9 rSmpNyD; Unix command awG[m argument wpfck(odkU) wpfckxufydk
wJh argument awGeJU b,fvdktvkyfvkyfw,fqdkwm uRefawmfwdkU em;vnf oabmaygufcJhNyD;
jzpfygw,f/ uRefawmfwdkU[m command wpfckcsif;qDudkyJ command line rSm toHk;jyKcJhMu
wmjzpfygw,f/ ,ck 'Dtcef;rSmawmh command wpfckwnf;udkyJ r[kwfawmhygbl;? ESpfck
(odkU) ESpfckxufydkwJh command awGudk Pipes eJU Filters awG toHk;jyKcsdwfquf combine
vkyfNyD;awmh command line rSm command wpfckwnf;yHkpHrsdK;eJU toHk;jyKoGm;rSmjzpfygw,f/
tvkyfESpfckudk command wpfaMumif;wnf;eJU wpfNydKifwnf;vkyfvdkufwJh oabmygyJ/ Linux
user awGtaeeJUCommand awGodrS tvkyfvkyfvdkU&wJh Command line interface rSm
bmhaMumifh ydkNyD;tvkyfvkyfaeMuovJ? Graphic mode xuf bmawGydkNyD; tm;omcsufawG&Sdae
w,fqdkwm 'Davhusifhcef;udk NyD;oGm;wJhtcgrSm oabmaygufoGm;rSmjzpfygw,f/

Using a Pipe
Pipe &JU oauFwuawmh ‘|’ jzpfygw,f/ command awGwpfckeJUwpfckudk csdwfqufwJh
tcgrSm pipe u ulnDay;ygw,f/ yxr command &JU Standard output (stout) udk
'kwd, command &JU standard input (stdin) tjzpf ‘|’ u jyKvkyfay;ygw,f/ ‘>’
eJUoabmw&m;csif; qifwlygw,f/ 'gayr,fh ‘|’ eJU ‘>’ &JUuGmjcm;csufuawmh ‘|’ u
command wpfck&JU output udk aemuf command qDudkydkUay;wmjzpfygw,f/ ‘>’ vdk file
udk ydkUay;wm r[kwfygbl;/ Oyrmudk em;vnfatmifavhvmMunfhyg/

[myn@panda myn]$ cd /etc


[myn@panda etc]$ ls | less

'D OyrmxJrSm ‘ls’ eJU ‘less’ command ESpfckudk wGJoHk;xm;wmjzpfygw,f/ 'D /etc
directory xJrSm system &JU configuration file awG trsm;BuD;&Sdygw,f/ yxrqHk; ‘ls’
command wpfckwnf;udk toHk;jyKNyD; 'D directory xJrSmyg0ifwJh file awG&JU list udk
Munfhyg/ 'Ddirectory xJrSm zdkifawGtajrmuftrsm;&SdaewJhtwGuf one screen eJU display
vkyfzdkUrqHhygbl;/ tJ'DhtwGuf tay:ydkif;rSm&SdwJh zdkifawGudkjrif&zdkU tcuftcJawGU&rSm jzpfyg
w,f/ 'Djyomemudk ajz&Sif;EdkifzdkUtwGuf ‘less’ command udk wGJzuftoHk;jyKEdkifygw,f/
‘ls’ rS xGufvmr,fh ouput udk ‘less’ command &JU input (argument) tjzpf ‘|’
tultnDeJUydkUay;vdkuf&if less u wpfBudrfrSm one screen ESHK;eJU display vkyfay;rSmjzpfwJh
twGuf tqifajyoGm;aprSm jzpfygw,f/ Pipe u yxr command &JU output udk 'kwd,
command &JU input tjzpfydkUay;vdkufwmyJ jzpfygw,f/ aemuf Oyrmwpfckudk avhvmMunfh
ygOD;-

[myn@panda myn]$ cat myanmar.txt


Yangon
Mandalay
Bagan

22
Moscow Institute of Electronic Technology Capt.ZayYarWin

[myn@panda myn]$ cat myanmar.txt | wc


3 3 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]$

Filter ‘cat’ udk argument rygyJ wpfckwnf;toHk;jyKwJhtcgrSm standard input udk


vufcHNyD;awmh standard output rSm output jyefxkwfay;ygw,f/

[myn@panda myn]$ cat > some_file


How are you!
[myn@panda myn]$

uRefawmfwdkU&dkufxnfhvdkufwJh input ukd ‘>’ rS file xJodkUydkUay;ygw,f/

23
Moscow Institute of Electronic Technology 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;-

'Dae&mrSmawmh yxr command jzpfwJh ‘ls’ &JU output udk ‘|’ tultnDeJU input
tjzpftoHk;jyKNyD; result udk screen eJU test.txt rSm save vdkufwmjzpfygw,f/ ‘-a’ option
uawmh test.txt zkdifxJrSm rlv&SdaewJh text awGukd replace rvkyfyJ atmufrSxyfxnfhcsifwJh
twGuf toHk;jyKwmjzpfygw,f/

24
Moscow Institute of Electronic Technology 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 , Print the byte counts
-m , Print the character counts
-l , Print the newline counts
-L , Print the length of the longest line
-w , Print the word counts

Example:
[myn@panda myn]$ cal
February 2006
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28

[myn@panda myn]$ cal | wc


8 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
Moscow Institute of Electronic Technology 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 Ignores spaces at the beginning ot the line.

-d Uses dictionary sort order and ignores the punctuation.

-f Ignores caps.

-i Ignores nonprinting control characters.

-m Merges two or more input files into one sorted output.

-M Treats the first three letters in the line as a month.

-n Sorts by beginning of the number at the beginning of the line.

-r Sorts in reverse order.

-u If line is duplicated only display once.

-k fields Sorts by fields, usually by tabs.

filename The name of the file that needs to be sorted.

-o output_file Sends the sorted output to a file.

Example:
[myn@panda myn]$ cat myanmar.txt
yangon
mandalay
bagan

26
Moscow Institute of Electronic Technology Capt.ZayYarWin

[myn@panda myn]$ sort myanmar.txt


bagan
mandalay
yangon
[myn@panda myn]$

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

list- pmaMumif;wpfaMumif;rSm uRefawmfwdkU select vkyfvdkwJh field numbers odkU column


numbers awGudk azmfjyay;ygw,f/ Oyrm-(1,4,7) qdkwmuawmh field odkU column
1,4 eJU 7 wdkUudk azmfjywmyg/ (1-3,6) uawmh column 1 rS 3 txdeJU 6 wdkUudk
nTefjyygw,f/ (-5,10)uawmh 1 rS 5 txdeJU 10 jzpfygw,f/ (3- ) qdkwmuawmh 3
rSpNyD; pmaMumif;tqHk;txdjzpfw,fqdkwmudk qdkvdkygw,f/ ydkrdk&Sif;vif;oGm;atmif
OyrmawGrSm avhvmMunfhyg/
Option:
-c list Character position. (eg. –c1-3 is to print the first 3 character)

-f list Field position

-d delim Direction symbol – divider of fields


For ‘–f’, do not print lines that do not contain the field separator
-s list
character

Example:
[myn@panda myn]$ uname
Linux
[myn@panda myn]$ uname | cut -c1-3
Lin
[myn@panda myn]$ uname | cut –c4-
ux
[myn@panda myn]$

27
Moscow Institute of Electronic Technology Capt.ZayYarWin

‘uname’ command u uRefawmfwdkU toHk;jyKaewJh system &JU name udk standard


output rSm jyay;ygw,f/ 'kwd, command line rSmawmh yxrqHk; character (3)vHk;udkyJ
display vkyfcsifwJhtwGuf ‘-c’ option eJU list rSmawmh 1-3 vdkUay;vdkufwmjzpfygw,f/
yxrqHk; character (3)vHk;jzpfwJh ‘Lin’ udk uRefawmfwdkU awGU&rSmjzpfygw,f/ wwd,
command line rSmvnf; 'DvdkygyJ/ list rSm (4-) ay;NyD;awmhusefwJh character
awGtm;vHk;udk azmfjyay;vdkufwmjzpfygw,f/ aemufxyf Oyrmudk avhvmMunfhygOD;-

[myn@panda myn]$ tail -1 /etc/passwd


user1:x:501:501::/home/user1:/bin/bash
1 2 3 4 5 6 7 (pdwfrSef;eJU column number udk a&wGufMunfhwmyg)
[myn@panda myn]$ tail -1 /etc/passwd | cut –f1,6 –d:
user1:/home/user1
[myn@panda myn]$ date
Sat Feb 11 23:05:50 EST 2006
[myn@panda myn]$ date | cut -f-3,6 -d’ ‘
Sat Feb 11 2006
[myn@panda myn]$

‘-d’ option udk ‘-f’ option eJUwGJoHk;ygw,f/ ‘-d’ option eJU uyfvsufwGJoHk;wJh
character uaepNyD; column (field) cGJjcm;ay;ygw,f/

command “diff”

Command ‘diff’ uawmh file ESpfckudk ESdKif;,SOfNyD; rwlnDwJh line awGudk print vkyf
ay;ygw,f/ xdkUtjyif 'kwd,zdkifeJU wlnDoGm;zdkUtwGuf yxrzdkifxJrSm b,fae&mawGudk
xyfNyD; add zkdUvdkr,f? delete vkyfzdkUvdkr,f? change zdkUvdkr,f qdkwmawGudkyg azmfjyay;yg
w,f/ yxrzkdifxJu line awGudk ‘<’ oauFweJUazmfjyNyD; 'kwd,zdkifxJu line awGudkawmh
‘>’ oauFweJUazmfjyygw,f/
Syntax:
$ diff file1 file2
Line_number_from_file1 Action line_number_from_file2
< different line from file1.
> different line from file2.

Option:
-b , Ignore changes in amount of white space.
-c , Use the context output format
-i , Ignores the case of letters.

28
Moscow Institute of Electronic Technology 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]$

Text file ESpfckjzpfwJh myanmar.old eJU myanmar udk uRefawmfwdkU ‘diff’


command eJU ESdKif;,SOfMunfhwJhtcgrSm &vmwJh result udk jrif&rSmjzpfygw,f/ (1c1) vdkU
qdkxm;wmuawmh yxrzdkif&JU line No.1 rSm 'kwd,zkdif&JU line No.1eJU change ay;zdkUvdk
w,fvdkU ajymxm;wmyg/ tJ'Dhtcg zkdifESpfck wlnDoGm;rSmjzpfygw,f/ aemufxyf Oyrmwpfck
avhvmMunfhygOD;-

[myn@panda myn]$ cat division.txt


Mandalay
Ayeyarwaddy
Bago
[myn@panda myn]$ diff myanmar.old division.txt
1d0
< Rangoon
3a3
> Bago
[myn@panda myn]$

ESdKif;,SOfvdkU&vmwJh result t& 'DzdkifESpfck wlnDzdkUtwGuf myanmar.old file &JU line


No.1 rSm&SdwJh Rangoon udk delete vkyfzdkUajymxm;ygw,f(1d0)/ (3a3) uawmh line No.3
rSm division file &JU line No.3 rSm&SdwJh Bago udk add ay;zdkUajymxm;wmjzpfygw,f/

29
Moscow Institute of Electronic Technology 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 Ignores upper and lower case.

-c Print out a count of the lines that contain the pattern.

-n Prefix each lines of output with the line number within its input file.

-v Print all lines not matching pattern.

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
Moscow Institute of Electronic Technology Capt.ZayYarWin

^ (Caret) match expression at the start of a line, as in ^A.


$ (Question) match expression at the end of a line, as in A$.
\ (Back Slash) turn off the special meaning of the next character, as in \^.
match any one of the enclosed characters, as in [aeiou]. Use
[ ] (Brackets)
Hyphen "-" for a range, as in [0-9].
match any one character except those enclosed in [ ], as in
[^ ]
[^0-9].
. (Period) match a single character of any value, except end of line.
* (Asterisk) match zero or more of the preceding character or expression.

‘^’ oauFwuawmh pmaMumif;wpfaMumif;&JU tprSm&SdwJh character awGeJU oGm;NyD;


match jzpfapygw,f/
[myn@panda myn]$ grep ^A somefile
A cup of water.
[myn@panda myn]$ grep ^Yangon myanmar.txt
Yangon

‘^’ u pmaMumif;wpfaMumif;&JU a&SUqHk;rSm&SdwJh A eJU Yangon udkoGm;NyD; &Smapyg


w,f/ tjcm;ae&mrSm &SdaewJh 'DpmvHk;awGeJU match jzpfrSm r[kwfygbl;/

pmaMumif;wpfaMumif;&JU aemufqHk;rSm&SdaewJh pmvHk;awGukd &SmzdkUtwGufawmh ‘$’


oauFwudk toHk;jyKygw,f/
[myn@panda myn]$ grep Yangon$ somefile
I live in Yangon
The capital of myanmar is Yangon
[myn@panda myn]$

‘.’ uawmh rnfonfh character wpfvHk;eJUrqdk match jzpfygw,f/


[myn@panda myn]$ cat somefile
big
bad bug
bag
bigger
boogy
[myn@panda myn]$ grep b.g file
big
bad bug

31
Moscow Institute of Electronic Technology Capt.ZayYarWin

bag
bigger

'Dae&mrSm boogy uawmh match rjzpfygbl;/ ‘.’ u b eJU g Mum;rSm&SdwJh character


wpfvHk;pmtwGufyJ jzpfaevdkUyg/

‘*’ uawmh a&SUrSmuyfvsufwGJoHk;wJh character &JU tBudrfBudrfyg0ifwJhpmvHk;awGeJU


match jzpfygw,f/ Oyrm- c* twGuf ‘c’, ‘cc’, ‘ccc’,… pwJhpmvHk;awGeJU match jzpfrSm
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]$

atmufrSm jyxm;wJh OyrmeJU &Sif;vif;csufawGudkvnf; avhvmMunfhygOD;-


grep book files {search files for lines with 'book'}
grep '^book' files {'book' at the start of a line}

grep 'book$' files {'book' at the end of a line}

grep '^book$' files {lines containing only 'book'}

grep '\^s' files {lines starting with '^s', "\" escapes the ^}

grep '[Ss]mug' files {search for 'Smug' or 'smug'}

Grep 'B[oO][bB]' files {search for BOB, Bob, BOb or BoB }

grep '^$' files {search for blank lines}

grep '[0-9][0-9]' file {search for pairs of numeric digits}

32
Moscow Institute of Electronic Technology Capt.ZayYarWin

vufawG>av>usifhcef;rsm;

1/ Text file ESpfckjzpfonfh N1 ESifh N2 udk wnfaqmufyg/ N1 ESifh N2 wGif yg0ifonfh


text rsm;tm; standard output wpfckwnf;wGif azmfjyyg/ xdk output tm; N3 tjzpf
save yg/ N3 tm; spelling checking vkyfí output wGifjyaom error rsm;tm; zdkif
N4.error wGif save yg/

2/ N3 zdkifxJrS character ‘a’ yg0ifaom pmaMumif;rsm;tm; stout wGifazmfjyí


grepped zdkiftrnfjzifh save yg/ Filter rsm;udk toHk;jyKí grepped zdkifxJwGif
yg0ifaom pmaMumif;ta&twGuf? pmvHk;ta&twGufwdkUudk a&wGufyg/ xkdUaemuf
tqdkygzdkiftm; sorting jyKvkyfí output tm; N4 trnfjzifh odrf;yg/ N3 ESifh N4
zdkifESpfcktm; EIdif;,SOfMunfhyg/

3/ Text file wpfckudk wnfaqmufyg/ tqdkyg zdkifxJ&Sd pmaMumif;\aemufqHk;wGif week


yg0ifaom pmaMumif;rsm;tm; &SmazGyg/ pmaMumif;\ tpwGif ‘c’ jzifhpaom
pmaMumif;rsm;tm; &SmazGyg/

I enf;]y]zpfoludk]yoI ar;cGef;rsm;tm; ajzqdkyg/ J

33
Moscow Institute of Electronic Technology Capt.ZayYarWin

Laboratory Exercise No(11)


Unix Bourne Again Shell Programming
Lab.11 rSm uRefawmfwkdUxdawGUMu&r,fh Command awGuawmh atmufygtwkdif;
jzpfygw,f-

1 echo To display text or value of variable


2 read To get input from keyboard and store(data) to variable
3 test Check file type and compare values
4 let Perform arithmetic on shell variable
5 exit Exit the shell
6 return To exit the function with the return value specified by n
Control structure, which puts conditions for
7 if-then
performance of command
8 case Provides a choice of one of multiple possible variants
9 while Cycle, used for recurrence of commands
Structure for the sequence reference to the values listed
10 for-in
in the list

Programming in BASH
BASH [m command line interpreter jzpf&Hkomru high-level programming
languade 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
Moscow Institute of Electronic Technology Capt.ZayYarWin

NyD; script a&;om;avhvmMunfhMuygr,f/ Shell Script wpfck a&;zdkUtwGuf atmufygtwdkif;


tqifh(3)qifh ausmfjzwf&ygw,f-
1. Text editor wpfckckudk toHk;jyKNyD; script udk a&;om;&ygr,f/
Example:
[myn@panda myn]$ vi my_script

text editor ‘vi’ rSm toHk;jyKwJh command key tcsdKUudk atmufuZ,m;rSm


azmfjyxm;ygw,f-
Purpose ‘vi’ command syntex
To write text Esc + i
To save file Esc + : + w
To save file with file name Esc + : + w filename
To quit the vi editor Esc + : + q
To quit without saving Esc + : + q + !
To save and quit vi editor Esc + : + w + q

2. a&;NyD;oGm;wJh script ukd execute vkyfzdkUtwGuf ‘chmod’ command udk toHk;jyK


NyD; execute permission ajymif;ay;&ygr,f/
Example:
[myn@panda myn]$ chmod +x my_script
(or)
[myn@panda myn]$ chmod 755 my_script

3. tJ'DhaemufrSmawmh uRefawmfwdkU&JU script udk command line rSm execute vkyfzdkU


yJ jzpfygw,f/

Command line rSm command (odkU) script awGudk execute vkyfwJhtcg


ta&;BuD;wJh tcsufwpfcsufudk odxm;zkdUvdktyfygw,f/ tJ'guawmh PATH ygyJ/ PATH
qdkwm Shell variable wpfckyg/ tJ'Dh variable xJrSm command awG&SdwJh directory awGudk
store vkyfxm;ygw,f/ yg0ifwJh directory list udk atmufygtwdkif; MunfhEdkifygw,f-

[myn@panda myn]$ echo $PATH


/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/bin/X11

uRefawmfwdkU command line rSm command wpfckudk &dkufvdkufwJhtcg system


uaeNyD; uRefawmfwdkU &dkufvdkufwJh command udk vdkuf&Smygw,f/ 'Dae&mrSm command udk
hardisk wpfckvHk;&JU ae&mtESHUvdkuf&SmNyD; execute vkyfwmr[kwfygbl;/ tJ'Dhvdk vdkuf&Smr,f
qkd&ifvnf; uRefawmfwdkU[m command wpfcsufESdyfNyD;&if pufu vdkuf&SmaewJhtcsdefrSm
xkdifapmifhaezdkUyJ&Sdygw,f/ trSefwu,fuawmh uRefawmfwdkU command wpfck&dkufvdkufwJh
tcg system uaeNyD; vuf&Sda&mufaewJh directory xJrSm 'D command file &Sdovm;qdkwm

35
Moscow Institute of Electronic Technology Capt.ZayYarWin

yxrqHk;Munfhygw,f/ rawGUbl;qdk&if PATH xJrSm azmfjyxm;wJh directory awGxJrSm


xyfNyD;&Smygw,f/ PATH xJrSm&SdwJh directory awGxJrSmvnf; rawGUbl;qdk&ifawmh
uRefawmfwdkU jrifbl;aeusjzpfwJh “command not found” qdkwJh error message udk
xkyfay;ygvdrfhr,f/ 'DhtwGuf uRefawmfwdkU&JU script udk save xm;wJh directory [m
PATH xJrSm yg0ifaezdkUvdktyfygw,f/ (PATH [m uRefawmfwdkU user awG pdwfBudKuf
define(modified) vkyfvdkU&wJh shell variable trsdK;tpm;jzpfygw,f/) 'grSvnf; uRefawmf
wdkU&JU script/command udk tjcm; rnfonfh directory uaerqdk vSrf;NyD; toHk;jyKvdkU&rSm
jzpfygw,f/ r[kwf&ifawmh toHk;jyKcsifwJh tBudrfwdkif;rSm save xm;wJh directory xJudk
0ifae&yghvdrhfr,f/ tqifajyaprSm r[kwfygbll;/ uRefawmfwdkU directory topfwpfck
wnfaqmufNyD; tJ'Dh directory ukd PATH xJrSm add vkyfxm;r,f/ uRefawmfwdkU&JU script
awGudk tJ'Dh directory xJrSmyJ save xm;r,fqdk&if tqifajyapr,fvdkU ,lqygw,f/
Oyrmudk avhvmMunfhyg-
[myn@panda myn]$ mkdir ~/bin
[myn@panda myn]$ export PATH=$PATH:~/bin

yxrqHk; /bin qdkwJh directory wpfckudk user &JU home directory xJrSm create
vkyfvdkufygw,f/ ( ‘~/’ oauFwu user’s 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.”

yxrpmaMumif;u b,f program eJU uRefawmfwdkU&JU script ukd system em;vnf


atmif interpret vkyfay;&r,fqdkwmudk nTefjyay;ygw,f/ 'kwd,pmaMumif;rSmawmh
comment vkyfxm;ygw,f/ ‘#’ oauFw&JU aemufupmvHk;awGudk bash u ignore
vkyfygw,f/ Programmer uaeNyD; program udk &Sif;jywJhoabm toHk;jyKygw,f/
aemufqHk;pmaMumif;rSmawmh ‘echo’ command ukd toHk;jyKNyD; stout rSm “We love
LINUX.” udk display vkyfjyygvdrfhr,f/
Script a&;NyD;oGm;wJhaemufrSm execute vkyfzdkU permission setting udk change
ay;NyD; execute vkyfMunfhygr,f-

[myn@panda myn]$ chmod +x my_script


[myn@panda myn]$ ./my_script
We love LINUX.

36
Moscow Institute of Electronic Technology Capt.ZayYarWin

script execute vkyfwJhae&mrSm ‘./’ oauFwudk oHk;xm;&wJh taMumif;&if;uawmh


current directory xJrSm script &Sdw,fqdkwm system ukd azmfjyay;vdkufwmjzpfygw,f/
tu,fí script udk save xm;wJh directory [m PATH xJrSm &SdNyD;om; qdk&ifawmh ‘./’
oauFw rvdkyJeJUvnf;&ygw,f/

[myn@panda myn]$ my_script


We love LINUX.

,ckavmufqdk&if script wpfck&JU tMurf;zsOf; structure udk oabmaygufr,fvdkU


,lqygw,f/ uRefawmfwdkU&JU script udk ydkNyD; jynfhpHkaumif;rGefatmif? Intelligence av;awG
xnfhNyD; a&;EdkifzdkUtwGuf toHk;jyKvdkU&wJh command awGudk qufNyD; avhvmMuygr,f/

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 Read-
only 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

owdjyK&r,fhtcsufuawmh ‘=’ sign &JU a&SUeJUaemufrSm ‘space’ ygvdkUr&ygbl;/


variable &JU value ukd jyefNyD;xkyfjyzdkUtwGuf ‘$’ oauFwudk variable name &JUa&SUrSmcHNyD;
toHk;jyK&ygw,f/ substitution vkyfw,fvdkU ac:ygw,f/
[myn@panda myn]$ echo $country
Myanmar

tu,fí variable xJrSm space awGyg yg0ifvmr,fqdk&if(Oyrm-string) quoting


vkyfay;zdkU vdktyfygw,f/ single quote eJU double quote (2) rsdK;&Sdygw,f/
[myn@panda myn]$ town=’Yangon and Mandalay’
[myn@panda myn]$ echo $town
Yangon and Mandalay
[myn@panda myn]$ town=”Yangon and Mandalay”
[myn@panda myn]$ echo $town
Yangon and Mandalay

Single quote eJU double quote &JU uGmjcm;csufuawmh single quote u


substitution vkyfwJh ae&mrSm limit vkyfygw,f/ OyrmudkavhvmMunfhyg-

37
Moscow Institute of Electronic Technology Capt.ZayYarWin

[myn@panda myn]$ echo ‘My host name is $HOSTNAME.’


My host name is $HOSTNAME.

Single quote u limit vkyfxm;wJhtwGuf substitution rvkyfEdkifyJ rlvtwdkif;


jyefNyD; azmfjyay;wmjzpfygw,f/ 'Dae&mrSm HOSTNAME qdkwm PATH uJhodkU shell
variable trsdK;tpm;yJjzpfygw,f/ system variable vdkUvnf; oHk;ESKef;ygw,f/ (tjcm;
possible toHk;jyKEdkifwJh shell variable awGudk pdwf0ifpm;r,fqdk&ifawmh command line rSm
‘set’ vdkU&dkufMunhfyg/ shell built-in variable awGeJU olwdkU store vkyfxm;wJh data (info)
awGudk awGU&ygvdrfhr,f/)
[myn@panda myn]$ echo “My host name is $HOSTNAME.”
My host name is panda.

OyrmrSmjrif&wJhtwdkif; double quote uawmh shell udk interpret vkyf&mrSm


taESmifht,Sufray;ygbl;/
wwd,ajrmuf variable trsdK;tpm;jzpfwJh read-only shell variable eJUygwfoufNyD;
tenf;i,fodxm;zdkUvdktyfygw,f/ 'D variable awG&JU value udk shell uae udk,fwdkif
assign vkyfNyD;awmh user taeeJU modify vkyfcGifhray;ygbl;/ 'D variable trsdK;tpm;awGxJrS
uRefawmfwdkUtwGuf script awGa&;&mrSm toHk;0ifr,fh variable tcsdKUudk atmufrSmazmfjyxm;
ygw,f/

Variable name Meaning

Number of command line arguments. (Useful to test


$#
number of command line arguments in shell script.)
$* All arguments to shell

$@ All arguments to shell

$0 Program (or) script name


Name of command line arguments (called positional
$1, $2, .., $9
parameters)
Oyrmjyxm;wJh script(var_test)udk avhvmMunfhyg? &Sif;oGm;ygvdrfhr,f/
#!/bin/bash
echo “Your program name is $0.”
echo “Total of command line arguments= $#.”
echo “They are … $@ or @*”
echo “First argument is $1.”

38
Moscow Institute of Electronic Technology Capt.ZayYarWin

echo “Second argument is $2.”


echo “Third argument is $3.”

'Dscript(var_test) udk Redhat, Debian, SUSE qdkwJh argument (3)ckeJU run


MunfhvkdufwJhtcg atmufygtwkdif; awGU&rSmyg-

Arguments awGae&mrSm tjcm; argument awGeJU tpm;xkd;NyD; prf;Munfhyg/


oabmaygufr,fvdkU arQmfvifhygw,f/

command “echo”
uRefawmfwdkU screen rSm data awGudk print vkyfvdkwJhtcgrSm command ‘echo’ ukd
toHk;jyKEdkifygw,f/ 'ghtjyif variable awG&JU value udk print vkyfwJhtcgrSmvnf; toHk;jyK
ygw,f/
Syntax:
$ echo [option] [string, variable,..]

Options:
-n , Do not output the trailing new line.
-e , Enable interpretation of the following backslash escaped characters in the strings.

Example:
[myn@panda myn]$ echo “We love LINUX.”
We love LINUX.

uRefawmfwdkU &dkufvdkufwJh text udk screen rSm jyefxkwfay;wmjzpfygw,f/

[myn@panda myn]$ country=Myanmar


[myn@panda myn]$ echo “I live in $country.”
I live in Myanmar.
[myn@panda myn]$

yxrqHk; country qdkwJh variable xJudk Myanmar qdkwJh value xnfhvdkufygw,f/


tJ'Dhaemuf ‘echo’ command udk toHk;jyKNyD; variable &JUvalue ukd print vkyfjyvkdufwm

39
Moscow Institute of Electronic Technology Capt.ZayYarWin

jzpfygw,f/ variable &JUa&SUrSm ‘$’ oauFwudk cHNyD;toHk;jyK&ygw,f/ wpfenf;tm;jzifh


variable value udk reference jyefvkyfwm jzpfygw,f/
‘echo’ command udk atmufygtwdkif; ‘backslash escape character’ awGeJUvnf;
toHk;jyKEkdifygao;w,f/ toHk;rsm;wJh ‘escape character’ awGudk azmfjyxm;ygw,f/
avhvmMunfhyg-

Escape character Name

\a Alert(bell)
\b Backspace
\n New line
\r Carriage return
\t Horizontal tab
\\ backslash

Backslash escape character awGudk programming language awmfawmfrsm;rsm;rSm


toHk;jyKMuNyD;awmh toHk;jyKyHk concept csif;vnf; twlwlygyJ/ ,ck 'Dae&mrSm ‘echo’
command eJU toHk;jyKzdkUtwGuf ‘-e’ option udkwGJNyD; toHk;jyK&ygw,f/ ‘-e’ option rygyJ
oHk;r,fqdk&ifawmh shell uaeNyD; escape character awGtjzpf rodwJhtwGuf interpret
vkyfrSm r[kwfygbl;/ omrmef text awGvdkUyJ ,lqNyD; tJ'Dhtwdkif;yJ jyefNyD; print vkyfay;yg
vdrfhr,f/ Oyrmudk avhvmMunfhyg/

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
Moscow Institute of Electronic Technology Capt.ZayYarWin

echo –n “Enter some text: ”


read text
echo “You entered: $text”

line-2 rSm ‘-n’ option oHk;xm;&wJh taMumif;uawmh cursor udk atmufwpfaMumif;


qif;roGm;apcsifvdkUyg/ line-3 rSmawmh ‘read’ command udk oHk;xm;wm awGU&rSmygjzpfyg
w,f/ program [m tqifhqifh run vmNyD;wJhaemuf line-3 udka&mufwJhtcg user &JU
input udkapmifhaeygvdrfhr,f/ user input wpfckck &dkufoGif;vdkufNyD;wJhaemuf program [m
tvkyfqufvkyfoGm;ygvdrfhr,f/ 'D script udk run vdkuf&if atmufygtwdkif; awGU&rSm
jzpfygw,f-

[myn@panda myn]$ read_example


Enter some text: Myanmar
You entered: Myanmar
[myn@panda myn]$

Option awGeJUvnf; wGJzuftoHk;jyKEdkifygw,f/ Oyrmjyxm;wJh script udk avhvmMunfh


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

‘-t’ option &JUaemufrSm uyfvsufygwJh puúefUta&twGuftxdyJ user input udk


‘read’ uapmifhygvdrfhr,f/ t&ifwkef;uvdk input &dkufNyD; ENTER ESdyfwJhtxd apmifhrSm
r[kwfawmhygbl;/ 'D concept udk toHk;jyKNyD;awmh typing avhusifhcef;jyKvkyfEdkifwJh script
yHkpHrsdK;awG rdrdOmPf&Sdovdk uGefUNyD;a&;MunfhvdkU&ygw,f/
aemufxyf toHk;rsm;wJh option wpfrsdK;uawmh ‘-s’ yg/ ‘-s’ option ukd user
&dkufoGif;vdkufwJh data udk display rvkyfzdkUtwGuf toHk;jyKygw,f/ Oyrm- password vdk
data rsdK;awGjzpfygw,f/

#!/bin/bash
echo -n “Enter your password: ”
read -s pass

41
Moscow Institute of Electronic Technology 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]$

OyrmtaeeJU pufxJrSm r&SdwJh file wpfckudk remove vkyfMunfhygw,f/ File u


r&SdwJhtwGuf error message jyygw,f/ exit status ukd ‘$?’ toHk;jyKNyD; MunfhwJhtcgrSm
successful rjzpfwJhtwGuf ‘1’ udkjrif&rSm jzpfygw,f/ aemufxyf Oyrmudk avhvmMunfhyg-

[myn@panda myn]$ date


Thu Aug 3 19:15:49 RDT 2006
[myn@panda myn]$ echo $?
0
[myn@panda myn]$ true
[myn@panda myn]$ echo $?
0
[myn@panda myn]$ false
[myn@panda myn]$ echo $?
1
[myn@panda myn]$

oabmaygufr,fvkdU ,lqygw,f/

42
Moscow Institute of Electronic Technology 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 ]

Text form eJU a&m ‘[’ ‘]’ oauFweJUyg toHk;jyKEdkifygw,f/ owdjyK&r,fh


tcsufuawmh ‘[’ eJU expression Mum;rSm space jcm;zdkUvdktyfygw,f/ command tvkyf
vkyfyHkuawmh uRefawmfwdkUay;vdkufwJh expression ay:rlwnfNyD;awmh data awGudk compare
vkyfygw,f (odkU) wGufcsufNyD;awmh (TRUE) jzpfw,fqdk&if exit status (0) ay;NyD;awmh?
(FALSE) jzpfwJhtcg ‘1’ udk xkwfay;ygw,f/ Oyrmjyxm;wJh script udk avhvmMunfhyg-

#!/bin/bash
if [ -f .bash_profile ]; then
echo “You have a .bash_profile. Things are fine.”
else
echo “You have no .bash_profile.”
fi

'DOyrmrSm expression taeeJU “-f .bash_profile” udk oHk;xm;ygw,f/


“.bash_profile” &Sd^r&Sdudk ‘-f’ option tultnDeJU check vkyfygw,f/ expression
rSefw,fqdk&if exit status ‘0’ eJU script NyD;oGm;ygvdrfhr,f/ r[kwf&if exit status ‘1’ udk
xkwfay;ygvdrfhr,f/ command line rSmvnf; atmufygtwdkif; prf;MunfhEdkifygw,f-

[myn@panda myn]$ [ -f .bash_profile ]


[myn@panda myn]$ echo $?
0
[myn@panda myn]$

wGJzuftoHk;jyKwJh option awGudk avhvmzdkU vG,ful&eftwGuf OyrmyHkpHav;eJU


azmfjyxm;ygw,f/ avhvmMunfhyg-

Expression Description

[ expression ] Expression is true

43
Moscow Institute of Electronic Technology Capt.ZayYarWin

[ ! expression ] Expression is false


expression1 –a expression2 Both expression 1 and 2 are true (a=logical AND)
expression1 –o expression2 Either expression 1 or 2 is true (o=logical OR)
[ file1 –nt file2 ] File1 is newer(modification data) than file2
[ file1 –ot file2 ] File1 is older than file2
[ –d file ] File exists and is a directory
[ –e file ] File exists
[ –f file ] File exists and is a regular file
[ –L file ] File exists and is a symbolic link
[ –r file ] File exists and is readable by you
[ –s file ] File exists and has a size greater than zero
[ –w file ] File exists and is writeable by you
[ –x file ] File exists and is executable
[ integer1 –eq integer2 ] Integer1 is equal to integer2
[ integer1 –ge integer2 ] Integer1 is greater than or equal to integer2
[ integer1 –gt integer2 ] Integer1 is greater than integer2
[ integer1 –le integer2 ] Integer1 is less than or equal to integer2
[ integer1 –lt integer2 ] Integer1 is less than integer2
[ integer1 –ne integer2 ] Integer1 is not equal to integer2
[ -n string ] The length of string is nonzero.
[ -z string ] The length of string is zero.
[ string1 = string2 ] The strings are equal.
[ string1 != string2 ] The strings are not equal.
em;vnfoabmaygufzdkUtwGuf vufawGUrsm;rsm;jyKvkyfNyD; avhvmapvdkygw,f/ aemuf
OyrmwpfcktaeeJU pHkudef; rudef;cGJjcm;ay;wJh script(even_odd) udk avhvmMunfhyg-
#!/bin/bash
num=0
echo –n “Enter a number: ”
read num
if [ $((num%2)) –eq 0 ]; then
result=”even”
else
result=”odd”
fi
echo “You typed number: $num is $result number.”

44
Moscow Institute of Electronic Technology Capt.ZayYarWin

'D script udk execute vkyfMunfhygr,f-


[myn@panda myn]$ chmod +x even_odd
[myn@panda myn]$ even_odd
Enter a number: 3
You typed number: 3 is odd number.
[myn@panda myn]$

command “exit” and “return”


vG,fvG,fajym&r,fqdk&ifawmh ‘exit’ command udk exit vkyf&mrSm toHk;jyKygw,f/
shell okdU script udk user defined vkyfvdkufwJh exit status eJUtwl terminate (exit)
vkyfay;ygw,f/ tu,fí uRefawmfwdkUu exit code wpfckck ( Oyrm - exit n )udk
define vkyfray;yJ exit qdkNyD; command wpfckwnf;om toHk;jyKcJhr,fqdk&ifawmh
rlvt&ifu &SdaeNyD;cJhwJh exit status udkyJ shell u vuf&Sd exit status tjzpf assign
vkyfay;ygw,f/
‘return’ uvnf; 'Dtwkdif;ygyJ/ shell function ukd return value eJU exit vkyfay;
ygw,f/ return value wpfckckrygyJ oHk;cJhr,fqdk&if rlva&SUu &SdcJhwJh value udkyJ return
status tjzpf assign vkyfay;ygw,f/

Syntax:
$ exit n
$ return n

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
Moscow Institute of Electronic Technology Capt.ZayYarWin

oabmaygufvG,fatmif exit code udk (100) Oyrmay;xm;wmyg/ ‘id –u’ uaeNyD;


superuser [kwf^r[kwf check vkyfygw,f/ r[kwfwJhtwGuf ‘exit’ command eJU xGuf
oGm;NyD;awmh exit status ukdvnf; 100 tjzpf owfrSwfvdkufygw,f/

[myn@panda myn]$ cat return_test


function rtn {
echo return from function
return 99
}
[myn@panda myn]$ return_test
return from function
[myn@panda myn]$ echo $?
99
[myn@panda myn]$

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

yxrqHk; x eJUy variable ESpfckudk assign vkyfygw,f/ tJ'Dhaemuf ‘let’ command


udk toHk;jyKNyD; x eJUy aygif;vdkU&wJh wefzdk;udk ‘ans’ variable xJudk assign vkyfvdkufygw,f/
'Dae&mrSm ‘let’ command aMumifhom shell u ‘+’ udk operator tjzpfodNyD; tvkyf
vkyfEdkifwm jzpfygw,f/ ‘let’ ryg&if shell u operator vdkU rodEdkifygbl;/ Oyrmudk
avhvmMunfhyg-
46
Moscow Institute of Electronic Technology Capt.ZayYarWin

[myn@panda myn]$ x=10


[myn@panda myn]$ y=3
[myn@panda myn]$ ans=x+y
[myn@panda myn]$ echo $ans
x+y
[myn@panda myn]$

oabmaygufr,fvdkU ,lqygw,f/ tjcm;Oyrmav;awG avhvmMunfhygOD;-


[myn@panda myn]$ ((x=x+3))
[myn@panda myn]$ echo $x
13
[myn@panda myn]$ let “x<y”
[myn@panda myn]$ echo $?
1
[myn@panda myn]$

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

‘if’ statement uaeNyD; uRefawmfwkdUay;vdkufwJh expression udk wGufcsufNyD; exit


status udk xkyfay;ygw,f/ tJ'Dhwefzdk;tay:rlwnfNyD; tvkyfqufvkyfoGm;wmjzpfygw,f/
exit status ‘0’ (true) qdk&if then &JUatmufu command awGudk execute vkyfNyD;awmh?
exit status ‘1’ (false) jzpfwJhtcg else &JUatmufu command awGukd execute vkyfoGm;yg
w,f/ ‘if’ command tm;vHk;NyD;oGm;wJhtcgrSmawmh ‘fi’ eJUjyefNyD;ydwfay;&ygw,f/ (if udk
ajymif;jyefjyef,lxm;wmyg) Oyrmjyxm;wJh script(arg_test)udk avhvmMunfhyg-

47
Moscow Institute of Electronic Technology 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

'D script udk atmufygtwdkif; execute vkyfMunfhyg-


[myn@panda myn]$ chmod +x arg_test
[myn@panda myn]$ arg_test
You have no argument
[myn@panda myn]$ arg_test a b c
You have 3 argument(s).
Your arguments are
abc
[myn@panda myn]$

oabmaygufr,fvdkU ,lqygw,f/

command “case”
‘case’ uawmh multiple-choice branch trsdK;tpm;jzpfygw,f/ ‘if’ eJUa&;wJhtcg
tqifhawGtrsm;BuD;eJU complex jzpfwJh problem awGtwGuf ‘case’ ukd toHk;jyKwJhtcg
tqifajyapygw,f/ toHk;jyKwJhyHkpHu tenf;i,f simple jzpfygw,f/ command format
uawmh atmufygtwdkif;jzpfygw,f-
Syntax:

case $variable in
pattern1 ) commands ;;
pattern2 ) commands ;;
patternN ) commands ;;
* ) commands ;;
esac

48
Moscow Institute of Electronic Technology Capt.ZayYarWin

command tvkyfvkyfyHkuawmh user assign vkyfvkdufwJh variable ukd atmufrSm&SdwJh


pattern awGxJu wlnDwm(match jzpfwm)eJU compare vdkufvkyfNyD;awmh tJ'Dh wlnDwJh
pattern wpfckrSm&SdwJh command awGudk execute vkyfygw,f/ tu,fí variable eJU
match jzpfwJh pattern wpfckrS rawGUbl;qdk&ifawmh atmufqHk;rSm&SdwJh wildcard ‘*’ rSm&SdwJh
command ukd execute vkyfrSmjzpfygw,f/ pattern wpfckeJU wpfckukd semicolons (2)ck
‘;;’ eJU ydkif;jcm;xm;ygw,f/ tm;vHk;NyD;oGm;wJhaemufrSmawmh ‘case’ ukd ajymif;jyefjyef,lxm;
wJh esac eJU jyefNyD;ydwfay;&ygw,f/ Oyrmjyxm;wJh script ukd avhvmMunfhyg-
Example:

#!/bin/bash
echo “----------------------------------------------------”
echo “ 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
Moscow Institute of Electronic Technology Capt.ZayYarWin

*)
echo “You did not enter a number between 1 and 5. ”
esac

Oyrmudk vufawGUa&;NyD;avhvmMunfhyg/ user input jzpfwJh variable(choice) tay:


rlwnfNyD;awmh oleJU match jzpfwJh pattern(1, 2, 3, 4, 5) wpfck&JU command udk execute
vkyfoGm;rSmjzpfygw,f/ pattern awGuawmh tu©&mudef;pOfawGomru wildcard awGvnf;
jzpfEdkifygw,f/ atmufrSm Oyrmjyxm;wJh script(case_example)udk avhvmMunfhyg-
Example:

#!/bin/bash
echo –n “Type a digit of a letter: ”
read character
case $character in
[a-z] | [A-Z] )
echo “You typed the letter $character.”
;;
[0-9] )
echo “You typed the digit $character.”
;;
*)
echo “You did not type a letter or a digit. ”
esac

vufawGUa&;om;NyD; avhvmMunfhyg/ oabmaygufr,fvdkU arQmfvifhygw,f/

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

Oyrmjyxm;wJh script(while_example1) udk avhvmMunfhyg-


50
Moscow Institute of Electronic Technology 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]$

aemufxyf Oyrmudk avhvmMunfhygOD;-


#!/bin/bash
ans=y
while [ $ans = y ]
do
echo –n “Please enter a name: ”
read name
echo “The name you entered is $name.”
echo “Do you wish to continue?(y/n): ”
read ans
done
echo FINISHED

'DOyrmrSmqdk&if user uaeNyD; ‘y’ udk&dkufaeoa&GU whie loop tvkyfvkyfaerSmyJ


jzpfygw,f/ vufawGUjyKvkyfNyD; avhvmMunfhyg/

51
Moscow Institute of Electronic Technology Capt.ZayYarWin

command “for-in”
‘for’ uawmh tjcm; programming language awGrSmuJhodkU looping vkyf&mrSm
toHk;jyKwJh flow control statement wpfckyg/ toHk;jyKwJh yHkpHuawmh-
Syntax:

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 Thaniland Singapore
do
echo “$country is in South-East Asia.”
done

'D script udk execute vkyfMunfhygr,f-


[myn@panda myn]$ chmod +x for_example1
[myn@panda myn]$ for_example1
Myanmar is in South-East Asia.
Thaniland is in South-East Asia.
Singapore is in South-East Asia.
[myn@panda myn]$

aemufxyfOyrmjyxm;wJh script(for_example2) udk avhvmMunfhyg-


#!/bin/bash
echo “Your arguments are: ”
for i in $@

52
Moscow Institute of Electronic Technology Capt.ZayYarWin

do
echo $i
done

'D script(for_example2) udk atmufygtwdkif; execute vkyfNyD;avhvmMunfhyg-


[myn@panda myn]$ chmod +x for_example2
[myn@panda myn]$ for_example2 aa bb cc
Your arguments are:
aa
bb
cc
[myn@panda myn]$

shell variable jzpfwJh ‘$@’ uawmh uRefawmfwdkU command line rSm toHk;jyKwJh
argument awGukd assign vkyfay;ygw,f/ ,ckazmfjyxm;wJh OyrmxJrSm command line
argument (3)ckjzpfwJh aa, bb eJU cc wdkUudk for loop toHk;jyKNyD; wpfckcsif; display vkyfjy
xm;wmjzpfygw,f/ oabmaygufr,fvdkU ,lqygw,f/

vufawG>av>usifhcef;rsm;

1/ File wpfckrS tjcm;wpfckokdU copy vkyfaom shell script wpfyk'fa&;om;NyD;


‘myprog’ trnfjzifh save yg/ copy vkyf&mrSm toHk;jyK&r,fh source file eJU receive
file udk user input tjzpfa&;om;yg/ xdkUtjyif atmufazmfjyyg condition rsm;yg0ifatmif
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/ User input number (10)vHk;\ aygif;v'fukd&Smaom script wpfyk'fa&;om;NyD;


‘summ’ trnfjzifh save yg/ Input number rsm;&dkufoGif;&mwGif number wpfvHk;
&dkufNyD;onfESifhwpfNydKifeuf &&Sdonfhaygif;v'ftm; screen wGifvnf; azmfjyay;yg/

3/ User tm; input number wpfvHk;awmif;í xdk number tm; (2) jzifhajrSmufyg/
&&dSonfh result udk screen wGifjyyg/ program udk ‘double’ trnfjzifh save yg/
53
Moscow Institute of Electronic Technology Capt.ZayYarWin

4/ ‘menu’ trnfjzifh script wpfyk'fa&;om;yg/ screen wGifazmfjy&r,fh menu wGif


yg0if&r,fh tcsuf(4)csufrSm atmufygtwdkif;jzpf&ygrnf-
9 myprog program udk execute vkyf&ef
9 summ program udk execute vkyf&ef
9 double program udk execute vkyf&ef
9 menu program rSexit vkyf&ef
User rS exit pattern udk ra&G;rcsif; menu ukd aemufwpfBudrfazmfjyap&ef loop
jzifha&;om;yg/

I enf;]y]zpfoludk]yoI ar;cGef;rsm;tm; ajzqdkyg/ J

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

You might also like