June 12, 2012

Built In Commands

ပြီးခဲ့သော B Shell အခန်းဆက်များဖြင့် Shell Function များအကြောင်းကို ဖော်ပြခဲ့၏။ Shell Script တစ်ခု၏ ပရိုဂရမ်များကို ဖတ်ရှုရေးသားနိုင်မည် ဖြစ်သည်။ ရေးသားပုံမှာ ကုန်ပြီဖြစ်၏။ သို့ရာတွင် ကြားထိုးနည်းကို သင်ပြီးသော်လည်း လက်တွေ့နှစ်ကွက်ကျော်စားနည်း အစရှိသည့် ဗျူဟာများအား မသုံးတတ်သေးပဲ ရှိပါလိမ့်မည်။

စနစ်ကျ၍ အသုံးဝင်သော Shell ပရိုဂရမ်များအား ရေးသားနိုင်ရန် Shell ကွန်မန်းများနှင့် ရေးသားပုံများအား လေ့လာသွားရန် လိုအပ်ပါသည်။ နောက်ဆုံး မရှိမဖြစ်လိုအပ်တာကာတော့ အတွေ့အကြုံဖြစ်၏။ ဤအရာကတော့ ကိုယ်တိုင်များများဖတ်၊ များများတွေး၊ များများရေးမှဖြစ်ပါလိမ့်မည်။ ကျွှန်တော်တို့ ဒီကနေ့ အသုံးများသော Shell ကွန်မန်းများအကြောင်းကို ရေးသားဖော်ပြသွားပါမည်။


Built In Commands

Linux စက်များကို အသုံးပြုရာတွင် Terminal မှ cd, ls, pwd, echo, whoami, date အစရှိသည့် ကွန်မန်းများကို အသုံးပြု ဘူးမည်ဖြစ်သည်။ ဤကဲ့သို့သော ကွန်မန်းများသည် Shell Script ကို အသုံးပြုရာတွင် အသုံးပြုနိုင်ရန် ပြင်ဆင်ထားသော Built In ကွန်မန်းများ ဖြစ်ပါသည်။



man


ကွန်မန်းတစ်ခု၏ အသုံးပြုပုံအားသိရှိရန် man ကွန်မန်းကို အသုံးပြုနိုင်ပါသည်။ ဥပမာအားဖြင့် test ကွန်မန်း၏ အသုံးပြုပုံကို သိရှိရန် man test ဟု ရေးသားခြင်းအားဖြင့် test ကွန်မန်း၏ အသုံးပြုပုံကို သိရှိနိုင်ပါသည်။ အသုံးပြုနိုင်သော ပါရာမီတာများအားလည်း man အား အသုံးပြု၍ ကြည့်ရှုနိုင်ပါသည်။

man -L en_us.UTF-8 man ဟု locale အား အင်္ဂလိပ်စာဖြင့် သတ်မှတ်ပြီး man ၏ အသုံးပြုပုံကို ကြည့်ရှုခြင်းဖြစ်ပါသည်။




which


ကွန်မန်းတစ်ခုသည် မည်သည့်နေရာမှ ကွန်မန်းအား အသုံးပြုနေသည်ကို သိရှိရန်အတွက် which ကွန်မန်းအား အသုံးပြုနိုင်ပါသည်။


အထက်ပါအတိုင်း which test ဟု test ကွန်မန်း၏ နေရာကို ဖော်ပြစေပါသည်။ ထိုအခါ /user/bin/test ဟု ဖော်ပြပေးနိုင်ပါသည်။ အကယ်၍ which hello ဟု မရှိသောကွန်မန်းတစ်ခုအား ခေါ်ယူကြည့်သောအခါ အသုံးပြုသူ၏ PATH အတွင်းတွင် hello မရှိကြောင်းကို ဖော်ပြပေးနိုင်ပါသည်။

ဤနည်းအားဖြင့် Shell ပရိုဂရမ်တစ်ခုကို ရေးသားရင်း အသုံးပြုလိုသော ကွန်မန်းအား which ဒါမှမဟုတ် man ကွန်မန်းများ ဖြင့်စစ်ဆေးနိုင်ပါသည်။


အသုံးများသော ကွန်မန်းများ


အမည် အသုံးပြုပုံ ရှင်းလင်းချက်
. . filename [arguments] . ကွန်မန်းသည် ဖိုင်အတွင်းရှိ စာကြောင်းများကို ဖတ်ရှု၍ ကွန်မန်းအနေဖြင့် အလုပ်လုပ်စေသော ကွန်မန်းဖြစ်ပါသည်။ ပရိုဂရမ်အတွင်းတွင် ဘုံအနေဖြင့် အသုံးပြုလိုသော ဖန်ရှင်များ ကိန်းရှင်များအား လိုင်ဘရီအဖြစ်အသုံးပြုလိုပါက ဖိုင်တစ်ခုတွင် ရေးသားထားပြီး၊ ပရိုဂရမ်၏ အစတွင် . .mylib ဟု ရေးသားထားပါက ထိုပရိုဂရမ်အတွင်းတွင် .mylib အတွင်းတွင်ရေးသားထားသော ဖန်ရှင်များနှင့် ကိန်းရှင်များအား အသုံးပြုနိုင်မည် ဖြစ်သည်။
alias alias [-p] [name=[value]] အခြား အမည်ကို သတ်မှတ်ရာတွင် အသုံးပြုသော ကွန်မန်းဖြစ်ပါသည်။
alias sw='cd /home/minlwin/sh-work'
အကယ်၍ အထက်ပါအတိုင်း ရေးသားထားပါက sw ဟု ရိုက်လိုက်တိုင်း /home/minlwin/sh-work နေရာကို ရွှေ့ပေးမည် ဖြစ်ပါသည်။
break break number while နှင့် for ဝါကျများအတွင်းတွင် ထပ်ခါတလဲလဲ လုပ်ဆောင်ချက်များအတွင်းမှ နှုတ်ထွက်လိုသည့်အခါတွင် အသုံးပြုနိုင်သော ကွန်မန်းဖြစ်ပါသည်။
break ဟု ရိုးရိုးရေးသားထားပါက ထိုနေရာအရောက်တွင် နှုတ်ထွက်သွားမည်ဖြစ်ပါသည်။
loop အဆင့်ဆင့်ကို နှုတ်ထွက်လိုပါက break ၏ ပါရာမီတာအနေဖြင့် နှုတ်ထွက်လိုသည့် loop အရေအတွက်ကို ရေးသားရန် လိုအပ်ပါသည်။
continue continue number continue ကွန်မန်းသည် loop လုပ်ဆောင်ချက်များ အတွင်းတွင် လက်ရှိ လုပ်ဆောင်ကြိမ်အား ပြီးဆုံးစေ၍ နောက်အကြိမ်အား လုပ်ဆောင်စေလိုသည့်အခါ များတွင် အသုံးပြုနိုင်ပါသည်။
break ကွန်မန်းကဲ့သို့ loop အကြိမ်ကြိမ်အား ကျော်လုပ်စေလိုသည့် အခါများတွင် ကျော်လုပ်စေလိုသည့် loop အရေအတွက်ကို ပါရာမီတာအဖြစ် အသုံးပြုရန် လိုအပ်ပါသည်။
eval eval [args ...] eval ကွန်မန်းသည် ပါရာမီတာအဖြစ်ပါဝင်သော ကွန်မန်းများ၊ ကိန်းရှင်များအား ဆက်သွယ်ပြီး တစ်ခုသော ကွန်မန်းအဖြစ်လုပ်ဆောင်စေရာတွင် အသုံးပြုနိုင်ပါသည်။
exec exec [-cl] [-a name] [command[args]] အကယ်၍ ကွန်မန်းတစ်ခုအား ပရိုဆက်အသစ်တစ်ခု ဖြင့် ခေါ်ယူခြင်း မပြုလုပ်လိုပါက exec ကို အသုံးပြုနိုင်ပါသည်။ exec ကို အသုံးပြုခြင်းအားဖြင့် လက်ရှိ အသုံးပြုနေသော ပရိုဆက်ဖြင့် command ကို ခေါ်ယူမည် ဖြစ်သည်။
exit exit [n] လက်ရှိ အလုပ်လုပ်နေသော Shell အား Status n ဖြင့် ပြီးဆုံးစေသော ကွန်မန်းတစ်ခု ဖြစ်ပါသည်။ အကယ်၍ n အား မရေးသားပါက နောက်ဆုံးရလဒ်အား Status အနေဖြင့် ရရှိမည်ဖြစ်ပါသည်။
export export [-fn] [name[=value]]
export [-p]
name အား ပတ်ဝင်းကျင်ကိန်းရှင် အဖြစ်အသုံးပြုရန် ကြော်ငြာသည့်အခါတွင် အသုံးပြုပါသည်။
-f သည် ဖန်ရှင်များအား ကြော်ငြာရာတွင် အသုံးပြုနိုင်ပါသည်။
-p သည် အသုံးပြုနိုင်သော ပတ်ဝင်းကျင်ကိန်းရှင်များအား ဖော်ပြပေးနိုင်ပါသည်။
-n သည် ပတ်ဝင်းကျင်ကိန်းရှင်များအတွင်းမှ name အမည်ရသော ကိန်းရှင်အား ဖျက်ပစ်ရာတွင် အသုံးပြုနိုင်ပါသည်။
pwd pwd [-LP] လက်ရှိ ဒိုင်အတ္တရီ၏ အတိအကျနေရာကို ဖော်ပြရာတွင် အသုံးပြုပါသည်။
read read [-params] [name ...] Shell ပရိုဂရမ်များတွင် ကိန်းရှင်တစ်ခုအား Terminal ၏ ပုံမှန် Input မှခေါ်ယူ အသုံးပြုလိုလျှင် read ကွန်မန်းကို အသုံးပြုရပါသည်။ ပြင်ပမှ ရိုက်ထည့်လာသော စာလုံးများအား name အမည်ရှိ ကိန်းရှင်များတွင် အစားထိုးပါမည်။ Shell ပရိုဂရမ်အတွင်းမှ နောက်ပိုင်း လော့ဂျစ်များတွင် ထိုကိန်းရှင်များ၏ တန်ဖိုးကို အသုံးပြုနိုင်မည် ဖြစ်ပါသည်။ 
readonly readonly [-aAf] [name[=value] ...] ပြုပြင်ပြောင်းလည်း၍ မရသော ကိန်းသေများ အဖြစ်သတ်မှတ်လိုပါက readonly ကို အသုံးပြုရပါသည်။
return return [n] return ကွန်မန်းသည် အလုပ်လုပ်နေသော ဖန်ရှင်တစ်ခုအား n တန်ဖိုးဖြင့် ပြီးဆုံးစေပါမည်။ အကယ်၍ n ကို ရေးသားထားခြင်း မရှိပါက၊ အလုပ်လုပ်နေသော ဖန်ရှင်၏ နောက်ဆုံး ကွန်မန်း၏ ရလဒ်ကို n အနေဖြင့် ရရှိမည် ဖြစ်ပါသည်။
set set [-option]
set [+option]
set [param ...]
set ကွန်မန်းသည် လက်ရှိအသုံးပြုနေသော Shell အား option သတ်မှတ်ရာတွင် အသုံးပြုပါသည်။
- သင်္ကေတသည် option အား အသစ်သတ်မှတ်ရာတွင် အသုံးပြုပါသည်။
+ သင်္ကေတသည် ရှိပြီးသား option အား ဖြုတ်ပစ်ရာတွင် အသုံးပြုပါသည်။
အသုံးများသော option များမှာ
-I မှာ^Dဖြစ်သော EOF ကို အသိအမှတ်ပြုမည် မဟုတ်။
-i အပြန်အလှန် Mode ဖြင့် အလုပ်လုပ်စေမည် ဖြစ်သည်။
-n ကွန်မန်းများအား ဖတ်ရုံသာဖတ်ပြီး အလုပ်လုပ်စေမည် မဟုတ်။
-s ကွန်များအား Standard Input မှသာ ရယူမည် ဖြစ်သည်။
-v ရယူထားသော ကွန်မန်းများအား Standard Error အဖြစ်ဖော်ပြပြီး အလုပ်လုပ်စေမည်။
-x ကွန်မန်းများအား အလုပ်မလုပ်ခင် Standard Error အဖြစ်ဖော်ပြပြီးမှ ဆက်အလုပ်လုပ်စေမည် ဖြစ်သည်။
တဖန် set [param ...] ဟု အသုံးပြုခြင်းဖြင့် ပါရာမီတာများအား သတ်မှတ်နိုင်ပါသည်။
shift shift [n] ပါရာမီတာများအား n ဘယ်ဘက်သို့ နေရာရွှေ့စေရာတွင် အသုံးပြုပါသည်။
test test expression
[ expression ]
expression တစ်ခုသည် မှန်ကန်ခြင်း ရှိမရှိ ဆိုသည်ကို စမ်းသပ်ရာတွင် အသုံးပြုပါသည်။

ဖိုင်ဆိုပါက
-r file ဖိုင်သည် ဖတ်နိုင်ပါက true
-w file ဖိုင်သည် ရေးနိုင်ပါက true
-x file Runnable ဖိုင်ဖြစ်ပါက true
-f file သည် ဖိုင်ဖြစ်ပါက true
-d file ဖိုင်သည် ဒိုင်အတ္တရီဖြစ်ပါက true
-s file ဖိုင်size သည် 0 ထက်ကြီးပါက true

String ဆိုပါက
-z string စာလုံးအရည်အတွက်သည် 0 ဆိုပါက true
-n string  စာလုံးအရည်အတွက်သည် 0 ထက်ကြီးပါက true
string null မဟုတ်ပါက true
string1 = string2 စာလုံးနှစ်လုံး တူညီပါက true
string1 != string2 စာလုံးနှစ်လုံး မတူညီပါက true

ကိန်းဂဏန်းဆိုပါက
int1 -eq int2 java ၏ int1 == int2
int1 -ne int2  java ၏ int1 != int2
int1 -lt int2  java ၏ int1 < int2
int1 -le int2  java ၏ int1 <= int2
int1 -gt int2  java ၏ int1> int2
int1 -ge int2  java ၏ int1 >= int2
trap trap command-list signals ဖြစ်ပေါ်လာသော signal အပေါ်တွင်မှုတည်၍ ကွန်မန်းများအား အလုပ်လုပ်စေလိုပါက trap ကွန်မန်းကို အသုံးပြုရန်လိုအပ်ပါသည်။ နောက်အခန်းများတွင် signal နှင့်ပတ်သက်သော အကြောင်းအရာများကို အသေးစိတ် ဖော်ပြရန်ရှိပါသည်။
type type [name ...] name အမည်ရှိ ကွန်မန်း၏ အမျိုးအစားအား သိရှိလိုပါက အသုံးပြုနိုင်မည် ဖြစ်ပါသည်။
wait wait [id ...] process id များအား စောင့်ပြီး၊ ရလဒ်များကို စောင့်ယူနိုင်ရန် wait ကွန်မန်းကို အသုံးပြုပါသည်။ id သည် process id များသာမဟုတ် job  specification များကိုလည်း အသုံးပြုနိုင်ပါသည်။ job specification ဆိုပါက အဆိုပါ id ကို အသုံးပြုသော job များ အားလုံးကို စောင့်နေမည်ဖြစ်သည်။
အကယ်၍ id ကို ရေးသားထားခြင်းမရှိပါက အလုပ်လုပ်နေသော child process များအား စောင့်မည်ဖြစ်သည်။ နောက်ဆုံးတွင် 0 ကို return လုပ်မည်ဖြစ်သည်။
အကယ်၍ id ကို အသုံးပြုသော process သည် မရှိခဲ့ပါက၊ ဒါမှမဟုတ် ပြီးဆုံးနေပြီ ဖြစ်ပါက 127 ကို return လုပ်မည်ဖြစ်သည်။
အထက်ပါ အချက်အလက်များနှင့် မညီညွတ်ပါက နောက်ဆုံး လုပ်ဆောင်ချက်၏ ရလဒ်ကို ပြန်ပြီးreturn လုပ်မည်ဖြစ်ပါသည်။

အသုံးများသော Built In ကွန်မန်းများအား စုစည်း၍ ဖော်ပြထားပါသည်။ Option များမှာလည်း အသုံးများသော Option များကိုသာ ဖော်ပြထားသည်ဖြစ်ပါသ၍ လက်တွေ့ရေးသားခါနီး man ဖြင့် အသုံးပြုပုံကို လေ့လာပြီးမှ ရေးသားရန် အကြံပြုအပ်ပါသည်။


ဆက်ပါဦးမည်။ လေးစားစွာဖြင့်။
မင်းလွင်

No comments:

Post a Comment