Two cents about Linux CLI

Table of contents

𝐋𝐢𝐧𝐮𝐱 𝐂𝐋𝐈 ဘာလဲ ဘယ်လဲ??
ဒီနေ့မှာတော့ကျွန်တော်က Linux CLI ( Command line Interface ) ဆိုတာဘာလဲ ဆိုတာရယ်၊ GUI (Graphical User Interface ) ဆိုတာဘာလဲရယ်၊ CLI ကိုအသုံးပြုပြီး ဘာတွေပြုလုပ်လို့ရသလဲဆိုတာကို အတိုချုပ်ပြောပြသွားပါမယ်။
✅ 𝐖𝐡𝐚𝐭 𝐢𝐬 𝐋𝐢𝐧𝐮𝐱 𝐊𝐞𝐫𝐧𝐞𝐥?
ကျွန်တော် Linux ဆိုတာဘာလဲဆိုတာကို မိတ်ဆက်ပို့စ်မှာတုန်းက Operating system (OS) လို့ပြောခဲ့ပါတယ်။ ဒါက အလွယ်ပြောလိုက်တာပါ။ တစ်ကယ်တမ်းတော့ Linux ဆိုတာ kernel ပါ။ အိုကေ..အဲ့တော့ kernel ဆိုတာကကောဘာလဲ?? Kernel ကိုအလွယ်ဆုံးပြောရရင် kernel က OS မှာရှိတဲ့ User space နဲ့ hardware ကြားက ကြားခံ layer လို့ပြောလို့ရပါတယ်။ e.g. User တစ်ယောက် run ထားတဲ့ program တစ်ခုက memory ယူသုံးချင်တာမျိုး၊ file and directory access လုပ်ချင်တာမျိုးဆို OS နဲ့ interact လုပ်ဖို့ အတွက်ကို System call ကနေတစ်ဆင့်သွားရပါတယ်။ အဲ့လို user program က OS ရဲ့ Kernel ကို resources သုံးဖို့လှမ်း request လိုက်တာကို system call တစ်ခုခေါ်လိုက်တယ်လို့ သတ်မှတ်ပြီး အဲ့ system call success ဖြစ်မှ (exit code 0) နဲ့ပြန်လာမှ အဲ့ program က resources သုံးဖို့ခွင့်ပြုချက် ရမှာဖြစ်ပါတယ်။ စစချင်းမှာတော့ဒါတွေက ရှုပ်သလိုရှိပါတယ်။ ဒါပေမဲ့ OS ကိုသုံးဖို့တော့ ဒါတွေသိဖို့မလိုပါဘူး။ ဒါက underlying မှာဘယ်လိုအလုပ်လုပ်လဲဆိုတာကို အတိုချုပ်ပြောတာပါ။ အဲ့ Linux Kernel ပေါ်မှာမှ GNU project က software တွေ libraries တွေနဲ့ပေါင်းပြီး GNU/Linux Distributions တွေထွက်ပေါ် လာတာပါ။ ဒါကိုအများစုက Linux OS ဆိုပြီးပဲ အလွယ်ခေါ်လိုက်ကြတာ ဖြစ်ပါတယ်။
✅ 𝐖𝐡𝐚𝐭 𝐢𝐬 𝐚 𝐆𝐔𝐈?
နောက်တစ်ပိုင်းမှာတော့ GUI ( Graphical User Interface ) ဆိုတာဘာလဲ လေ့လာကြည့်ရအောင်.. တစ်ကယ်တော့ သူ့နာမည်မှာထဲကိုက ကျွန်တော်တို့လိုချင်တဲ့ အဖြေကပါပြီးနေပါပြီ၊ GUI ဆိုတာ ကျွန်တော်တို့ ( Users ) တွေကို ဒီ Computer Operating systems တွေနဲ့ လွယ်လွယ်ကူကူ ဆက်သွယ်ဖို့အတွက် visual indicators လေးတွေနဲ့ထည့်ပေးထားပြီး အဲ့ icons လေးတွေကိုနှိပ်ပြီး interact လုပ်လို့ရတာကို ဆိုလိုပါတယ်။ ဥပမာအားဖြင့် file အသစ်လေးတစ်ခု create ချင်တယ်ဆို right click နှိပ်ပြီး new folder လေးတစ်ခု ဆောက်လိုက်တာမျိုးပေါ့။ ဒါကို CLI ကနေပြီးလည်း command ရိုက်ပြီးလုပ်လို့ရပါတယ်။ အဲ့တော့မေးစရာရှိပါတယ်။ ဘာလို့ဒီလောက်လွယ်လွယ်ကူကူ လုပ်လို့ရနေတာကို အလုပ်ရှုပ်ခံပြီး terminal ကလုပ်မှာလဲပေါ့၊ ဒါကတော့သူ့အားသာချက်နဲ့သူ ရှိပါတယ်။ အောက်မှာ CLI ကိုရှင်းပြီးရင် CLI ကိုသုံးရတဲ့ benefits တွေလည်းထည့်သွင်းပြောသွားပါမယ်။ များသောအားဖြင့်တော့ personal desktop အဖြစ်သုံးကြတဲ့ Linux distros တွေမှာ GUI ပါပါတယ်။ နောက်တစ်ချက်အနေနဲ့ Linux မှာအသုံးများတဲ့ GUI desktop environment တွေကတော့ GNOME နဲ့ KDE Plasma တို့ရှိပါတယ်။ မတူညီတဲ့ environments တွေပေါ်လိုက်ပြီး ပုံစံလေးတွေနည်းနည်းပြောင်းပါတယ်။ ကိုယ်ကြိုက်တဲ့ favorite ဖြစ်တဲ့ Desktop environment ကိုပြောင်း install လုပ်ပြီးသုံးလို့လည်း ရပါတယ်။
✅ 𝐖𝐡𝐚𝐭 𝐢𝐬 𝐚 𝐂𝐋𝐈?
အိုကေ..ကျွန်တော်တို့အဓိကပြောချင်တဲ့ CLI ဆိုတာဘာလဲလာပြီ။ CLI ( Command Line Interface ) ဆိုတာကတော့ GUI လိုပဲ users တွေကို OS နဲ့ interact လုပ်နိုင်အောင်လုပ်ဆောင်ပေးတဲ့ interface တစ်ခုပဲ၊ ဒါပေမဲ့ သူ့မှာက graphical icons တွေမပါပဲ text only ပဲရိုက်လို့ရမှာ ဖြစ်တယ်။ အဲ့အတွက်ကြောင့် ကျွန်တော်တို့က CLI ကနေ ကျွန်တော်တို့ desktop ကြီးကို တစ်ခုခုခိုင်းချင်တယ်ဆိုရင် သုံးရမယ့် command ကိုသေချာသိဖို့လိုတယ်၊ command မမှန်ရင်ဘာအလုပ်မှ လုပ်မှာမဟုတ်တဲ့ အတွက်ပဲဖြစ်တယ်။
✅ 𝐖𝐡𝐚𝐭 𝐢𝐬 𝐚 𝐓𝐞𝐫𝐦𝐢𝐧𝐚𝐥?
ဟုတ်ပြီ အဲ့တော့ကျွန်တော်တို့ Linux စသုံးရင်ကြားဖူးနေတာ ရှိမယ်၊ Terminal ဆိုတဲ့စာလုံးပေါ့၊ အဲ့တော့ Terminal နဲ့ CLI ကတူတူပဲလား ဘယ်လိုလဲပေါ့၊ တစ်ကယ်တော့ Terminal ဆိုတာ User တစ်ယောက်က CLI environment သုံးပြီး OS နဲ့ interact လုပ်လို့ရအောင် ပြုလုပ်ပေးတဲ့ IDE တစ်ခုလို့ပြောလို့ရပါတယ်။ ကျွန်တော်တို့က GUI ပါတဲ့ Linux distro သုံးနေရင်းနဲ့လည်း terminal window လေးတစ်ခုဖွင့်ပြီး command ရိုက်လို့ရသလိုပေါ့။ အဲ့လို terminal ကနေကျွန်တော်တို့ ရိုက်ထည့်လိုက်တဲ့ commands တွေကိုနောက်ကနေ တစ်ကယ် execute လုပ်ပေးတာကတော့ shell ပါ။ အဲ့တော့ shell အကြောင်းဆက်သွားလိုက်ရအောင်..
✅ 𝐖𝐡𝐚𝐭 𝐢𝐬 𝐚 𝐒𝐡𝐞𝐥𝐥?
Shell ဆိုတာဘာလဲ ဆိုတာကိုအတိုကောက် ပြောရရင်တော့ command line interpreter တစ်ခုလို့ပြောရပါမယ်။ Shell ကဘယ်မှာရှိလဲဆိုတော့ Kernel နဲ့ users တွေရဲ့ကြားမှာရှိပါတယ်။ ဆိုလိုချင်တာသည် ကျွန်တော်တို့ terminal ကရိုက်လိုက်တဲ့ command တစ်ခု (e.g. ls ) ဆိုပါတော့၊ အဲ့ text လေးဝင်လာတဲ့အခါမှာ shell ကဒီ command ဟာတစ်ကယ် system ထဲမှာ binary file ရှိလားဆိုတာကို သူ့ရဲ့သတ်မှတ်ထားတဲ့ directories တွေမှာစစ်မယ်၊ အကယ်၍ ရှိတယ်ဆိုရင် သူက အဲ့ executable file ကို execute လုပ်လိုက်မယ်၊ ထွက်လာတဲ့ output ကိုမှ ကျွန်တော်တို့ (users) တွေကို terminal မှာပြန်လာပြပေးတာဖြစ်တယ်။ အဲ့မှာမှ users က command မှာ typo ပါတာတို့ဘာတို့ဆို shell ကသိပြီး user ဆီကို error message ပြန်ပြပေးလိမ့်မယ်။ Shell မှာလည်း အမျိုးအစား ကွဲတာတွေ အများကြီးရှိပြီး အစပိုင်းမှာ sh ( Bourne shell ) ကိုအသုံးပြုခဲ့ကြပြီး နောက်ပိုင်းမှာသူ့ကို modified လုပ်ထားတဲ့ Bash ( Bourne Again Shell ) ကိုအသုံးများလာခဲ့ကြပါတယ်။ တစ်ခြား Windows မှာ နာမည်ကြီးတဲ့ PowerShell လိုမျိုးတွေလည်း ရှိပါသေးတယ်။ ဒီ shell တွေကိုသုံးပြီး ကျွန်တော်တို့က administrative purposes တွေအတွက် shell scripts တွေလည်းဖန်တီးလို့ရပါသေးတယ်။
✅ 𝐁𝐞𝐧𝐞𝐟𝐢𝐭𝐬 𝐚𝐧𝐝 𝐝𝐫𝐚𝐰𝐛𝐚𝐜𝐤𝐬 𝐨𝐟 𝐂𝐋𝐈
အဲ့တော့ CLI မှာကောင်းကျိုးတွေကြီးပဲလား၊ သူ့ကိုသုံးရင် ဘာ drawbacks တွေရှိလဲဆိုတာ ကြည့်ကြည့်ရအောင်..
🔶🔶 ပထမဆုံး အနေနဲ့တော့ GUI ကိုမသုံးပဲ CLI ကိုသုံးရင် ကျွန်တော်တို့ စက်မှာရှိတဲ့ memory (RAM) စားတာသက်သာပါတယ်။ GUI မှာ graphical components တွေအများကြီးသုံးထားတာကြောင့်ပါ။
🔶🔶 နောက်တစ်ချက်ကတော့ CLI ကိုသုံးပြီး command run လိုက်တာဟာ GUI သုံးတာထက် သိသိသာသာ ပိုမြန်ပါတယ်။
🔶🔶 ဒါပေမဲ့ စစချင်းသုံးမယ့် user တစ်ယောက်အတွက်ဆိုရင်တော့ CLI သုံးဖို့က သိပ်လွယ်ကူမှာမဟုတ်ပါဘူး။ commands တွေသိဖို့လိုအပ်တာကြောင့် ဖြစ်ပါတယ်။
🔶🔶 နောက်ဆုံးတစ်ချက်ကတော့ GUI ကိုသုံးမယ်ဆို ကိုယ်ကြိုက်သလို appearance ကို customize လုပ်လို့ရပြီး CLI မှာတော့အဲ့လိုမရပါဘူး။
ဒီတော့ကိုယ့်ရဲ့လိုအပ်ချက်ပေါ်မူတည်ပြီး CLI နဲ့ သုံးမှာလား၊ GUI နဲ့သုံးမှာလား ဆိုတာကိုရွေးချယ်ရမှာပဲ ဖြစ်ပါတယ်။ Resource Management အရေးကြီးတဲ့ server ထိုင်မှာမျိုးတို့လို့နေရာမှာဆို CLI ကပိုသင့်တော်ပြီး ကိုယ့် laptop လေးထဲမှာပဲ ထည့်သုံးချင်တာဆိုရင်တော့ GUI နဲ့လည်းအဆင်ပြေပါတယ်။ ကိုယ်က commands တွေလည်းသိတယ်၊ VM ကိုလည်း resource အများကြီး မပေးချင်ဘူးဆိုရင်တော့ CLI သုံးလည်း ရပါတယ်။
ဒီနေ့မှာတော့ ကျွန်တော်က Linux မှာ ရှိတဲ့ CLI နဲ့ GUI အကြောင်းကို အကျဥ်းချုပ် ပြောခဲ့ပြီးတော့ knowledge လည်းရမယ်လို့မျှော်လင့်ပါတယ်။ နောက်ရက်တွေမှာတော့ ဒီ Linux CLI ကိုသုံးတဲ့နေရာမှာ အသုံးဝင်တဲ့ commands လေးတွေအကြောင်းနဲ့ useful options တွေနဲ့ ဘယ်လိုတွဲသုံးရမလဲ ပြောပြပေးသွားပါမယ်။ ဖတ်ပေးတဲ့အတွက် ကျေးဇူးတင်ပါတယ်။
Subscribe to my newsletter
Read articles from Hein Htet Win directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Hein Htet Win
Hein Htet Win
I am a DevOps Engineer from Yangon, Myanmar. I fell in love with automation and CI/CD. I also enjoy using open-source software and regularly contribute to and participate on webinars. In my spare time, I enjoy playing games with my friends in addition to my job.