Basic Linux Commands

Working with Directories

cd : ဒီကွန်မန်းကတော့ လက်ရှိ directory ကနေ တခြားတခုကို ပြောင်းချင်ရင် သုံးပါတယ်။ command name and directories တွေက case-sensitive ဖြစ်ပါတယ်။ ဆိုလိုတာက /bin and /BIN ဟာမတူပါဘူး။ နောက်တစ်ခုက Linux မှာ forward slash ကို သုံးပါတယ်။ backslash ကို မသုံးပါဘူး။ eg à cd /bin လို့သုံးပါတယ်။ cd \bin မဟုတ်ပါဘူး။
pwd : ဒါကတော့ လက်ရှိရှိနေတဲ့ directory ကို သိချင်တဲ့အခါမှာ သုံးပါတယ်။ print working directory လို့ခေါ်ပါတယ်။
mkdir : ဒါကတော့ directory (folder) အသစ်လုပ်ချင်တဲ့အခါမှာ သုံးပါတယ်။ ဒီနေရာမှာ Linux mkdir ရဲ့အားသားချက်တစ်ခုက /something/test ဆိုတဲ့ directory ကိုလုပ်ချင်တယ်။ ဒါပေမယ့် / အောက်မှာ something ဆိုတဲ့ Directory မရှိခဲ့ဘူးဆိုရင် mkdir –p /something/test လို့သုံးလိုက်တာနဲ့ / အောက်မှာ something ဆိုတဲ့ directory ကို အလိုအလျောက် ပြုလုပ်ပေးသွားမှာ ဖြစ်ပါတယ်။
rmdir : ဒါကိုတော့ directory ကို ဖျက်ချင်တဲ့အခါမှာ သုံးပါတယ်။ ဒါပေမယ့် ဒီကွန်မန်းက directory အောက်မှာ ဘာဖိုင်မ မရှိတဲ့ directory ကိုပဲ ဖျက်လို့ရပါတယ်။ တကယ်လို့ ဖိုင်တွေရှိတဲ့ directory ကို ဖျက်ချင်ရင်တော့ rmdir -r လို့သုံးရပါတယ်။

Working with files

ls : ဒါကိုတော့ လက်ရှိ directory ထဲမှာရှိတဲ့ files တွေကိုသိချင်တဲ့အခါမှာ သုံးပါတယ်။ ls လို့ပဲ သုံးလိုက်ရင်တော့ ရှိတဲ့ ဖိုင်တွေကိုပဲ ပြပေးပါမယ်။ အဲဒီဖိုင်တွေမှာ properties တွေရှိပါတယ်။ ဥပမာ owner, permission, size etc. အဲဒါတွေကိုပါ သိချင်ရင်တော့ ls –l နဲ့ကြည့်လို့ရပါတယ်။ ls ကွန်မန်းက တခြား options တွေလဲ အများကြီးရှိပါသေးတယ်။ ဥပမာ /etc/ အောက်က a. နဲ့ဖိုင်ဖိုဒါတွေကို သိချင်ရင် ls /etc/*a.* ဆိုပြီးကြည့်နိုင်ပါတယ်။ a or b or c နဲ့စတဲ့ဖိုင်ဖိုဒါတွေကိုသိချင်ရင်တော့ ls /etc/[abc]* ဆိုပြီးကြည့်နိုင်ပါတယ်။ အဲလိုကြည့်လိုက်ရင် test: ဆိုရင် အဲဒီ test က ဖိုဒါပါ။ hidden file တွေကိုပါ ကြည့်ချင်တယ်ဆိုရင်တော့ ls –a နဲ့ကြည့်နိုင်ပါတယ်။ ls command အကြောင်း အသေးစိတ်သိချင်တယ်ဆိုရင်တော့ ls –help နဲ့ကြည့်နိုင်ပါတယ်။
rm : ဖိုင်တွေဖျက်ဖို့အတွက်သုံးပါတယ်။ rm /tmp/somefile ဆိုရင် /tmp directory က somefile ဆိုတဲ့ဖိုင်ကိုဖျက်တာပါ။ root permission ရှိဖို့လိုပါတယ်။ root ဖြစ်ရင်လဲ ဖျက်မလားဆိုပြီးမေးပါသေးတယ်။ အဲလိုမဖြေချင်ဘူးဆိုရင် -f (force) switch ကို သုံးနိုင်ပါတယ်။ rm -f /tmp/somefile ဆိုရင် ဘာမမမေးတော့ဘဲ ဖျက်သွားပါမယ်။ rm command နဲ့ directory တွေကိုလဲဖျက်လို့ရပါတယ်။ အဲလိုဖျက်ချင်ရင်တော့ -r option နဲ့သုံးရပါတယ်။ -f နဲ့တွဲသွားရင်တော့ တကယ်ကို powerful ဖြစ်တဲ့ ကွန်မန်းဖြစ်သွားပါဘီ။ ဥပမာ rm -rf /somedir/* ဆိုရင် /somedir အောက်မှာရှိတာအကုန်လုံးကိုဖျက်သွားပါမယ်။ ဒီကွန်မန်းကို သုံးမယ်ဆိုရင်တော့ အထူးသတိထားဖို့လို်ပါတယ်။ သေးသေးလေးမှားရိုက်လိုက်လဲ ပြသနာအကြီးကြီးတွေတက်သွားနိုင်ပါတယ်။ ဥပမာ rm -rf / somedir (with space between / and somedir) လို့ရိုက်လိုက်ရင် / အောက်ကဖိုင်တွေဖိုဒါတွေအားလုံးကို အရင်ဖျက်သွားပါလိမ့်မယ်။  ပြီးရင် somedir ကို ဖျက်ပါလိမ့်မယ်။ တကယ်တော့ ဒုတိယကွန်မန်းက မလိုတော့ပါဘူး။ ဘာလို့လဲဆိုတော့ ပထမကွန်မန်းမှာပဲ ဖိုင်တွေအားလုံးပြောင်သွားလို့ပါပဲ။
cp : ဖိုင်တွေကူးတဲ့အခါမှာ သုံးပါတယ်။ eg: cp ~/* /tmp ဆိုရင် လက်ရှိအကောင့်ရဲ့ home directory အောက်ကဖိုင်တွေကို /tmp အောက်ကို ကူးလိုက်မှာဖြစ်ပါတယ်။ subdirectory တွေ contents တွေပါကူးချင်တယ်ဆိုရင် -r ကို သုံးပြီးကူးနိုင်ပါတယ်။ hidden files တွေကူးချင်တယ်ဆိုရင်တော့ . (dot) ကို သုံးနိုင်ပါတယ်။ cp ~/.* /tmp လို့သုံးနိုင်ပါတယ်။
mv : moving file ဖိုင်တွေနေရာပြောင်းချင်ရင် သုံးပါတယ်။ eg: mv ~/text /tmp/otherfile လို့ရိုက်လိုက်ရင် home directory အောက်မှာရှိတဲ့ text ဆိုတဲ့ဖိုင်က /tmp/ ရဲ့အောက်မှာ otherfile လို့နာမည်ပြောင်းပြီးသိမ်းသွားပါမယ်။ directory တွေကို နာမည်ပြောင်းချင်ရင်လဲ သုံးနိုင်ပါတယ်။ eg: mv /somedir /somethingelse ဆိုရင် /somedir ကနေ /somethingelse ဆိုပြီးပြောင်းသွားပါမယ်။

Viewing the Contents of text Files

cat : ဒီကွန်မန်းနဲ့ဖိုင်တွေကိုဖွင့်ကြည့်ရင် ဖွင့်လိုက်တဲ့ဖိုင်ရဲ့နောက်ဆုံးစာကြောင်းတွေကို screen နဲ့ဆန့်သလောက်ပဲပြမယ်။ ဥပမာ စာကြောင်း ၁၀၀ ရှိတယ် ဒါပေမယ့် screen က ၁၀ လောက်ပဲပြနိုင်တယ်ဆိုရင် နောက်ဆုံးစာကြောင်း ၁၀ ကြောင်းကိုပဲပြမယ်။
tac : ဒါကတော့ cat ကွန်မန်းနဲ့ပြောင်းပြန်ပဲ။ စောစောကလိုမျိုး ၁၀ ကြောင်းစာပဲပြမယ်။ ဒါပေမယ့် နောက်ဆုံးစာကြောင်းကအရင် အရင်စာကြောင်းကနောက်။
tail : ကတော့ နောက်ဆုံးစာကြောင်းကို ကြည့်ချင်ရင်သုံးတယ်။ ဘာ options မ မပါရင် default အနေနဲ့ စာကြောင်း ၁၀ ကြောင်းပြမယ်။ တကယ်လို့ tail -n 2 /etc/passwd ဆိုရင်တော့ နောက်ဆုံး ၂ ကြောင်းကိုပြမယ်။ တကယ်လို့ log file ကို tail -f /var/log/messages ဆိုပြီးကြည့်မယ်ဆိုရင် messages ဆိုတဲ့ဖိုင်မှာ စာကြောင်းအသစ်ရေးလိုက်တာနဲ့ ချက်ချင်းမြင်ရမယ်။
head : ကတော့ tail နဲ့ပြောင်းပြန် အရင်ဆုံးစာကြောင်းတွေကိုမြင်ရမယ်။
less : ကိုသုံးရင်တော့ screen ရှိသလောက်ပြမယ်။ တကယ်လို့ဖိုင်က စာတွေအများကြီးရှိတယ်ဆိုရင်တော့ up/down key နဲ့တကြောင်းချင်း အောက်ဆင်းသွားမယ်။ spacebar နဲ့ဆိုရင်တော့ တမျက်နာစီနောက်ကို ရောက်သွားမယ်။ less command ကနေထွက်ချင်ရင်တော့ q ကို နှိပ်ရပါမယ်။ အဲဒီထဲကနေ something ကို ရှာချင်ရင် /something ဆိုပြီးရှာနိုင်ပါတယ်။
more : ကလည်း less လိုမျိုးပဲ။ ဒါပေမယ့် spacebar ကိုပဲသုံးလို့ရမယ်။ less လိုမျိုး q ကို နှိပ်ပြီး end လုပ်လို့ရပါတယ်။

Creating Empty Files

touch : ဒီကွန်မန်းနဲ့ zero-byte ဖိုင်တွေကို create လုပ်လို့ရပါတယ်။ နောက်တခုက ဖိုင်တခုက read only or writable လားဆိုတာကို သိနိုင်ပါတယ်။ touch /tmp/filename လို့လုပ်လိုက်ရင် ls command နဲ့ ကြည့်ထားတဲ့ date and time က touch လုပ်လိုက်တာနဲ့ ချက်ချင်းပြောင်းသွားပါမယ်။ တကယ်လို့ ဖိုင်က read only ဆိုရင် time and date က ပြောင်းမသွားပါဘူး။

Piping and Redirection

piping and redirection options ကတော့ တကယ်ကို powerful ဖြစ်တဲ့ ကွန်မန်းတွေပါ။ ကွန်မန်းတခုရဲ့result ကို နောက်ကွန်မန်းတခုဆီကို ပို့ချင်ရင် piping ကို သုံးပါတယ်။ redirection ကိုတော့ ကွန်မန်းရဲ့ output ကို ဖိုင်ဆီကို ပို့ချင်ရင် သုံးပါတယ်။
Piping ( | )
piping ကို သုံးရတဲ့ ရည်ရွယ်ချက်ကတော့ command ကနေ execute လုပ်လိုက်တဲ့ output ကို နောက်ကွန်မန်းဆီကိုပို့တယ်။ နောက်ကွန်မန်းကနေ အဲဒီ result အပေါ်မူတည်ပြီး တခုခုဆက်လိုက်နိုင်ပါတယ်။ ဥပမာပြပါမယ်။
၁၊ shell ကို ဖွင့်လိုက်ပါ။ root မဟုတ်ရင် sh – လိုက်ရိုက်ပြီး root password ရိုက်ပြီး root access ယူလိုက်ပါမယ်။
၂၊ ပြီးရင် ps aux ရိုက်လိုက်ပါမယ်။ ဒီကွန်မန်းကတော့ လက်ရှိစက်မှာ running ဖြစ်နေတဲ့ process တွေကို ပြပါလိမ့်မယ်။ အဲဒီ process တွေက Computer Screen ပေါ်မှာ fit မဖြစ်တဲ့အတွက် အစပိုင်းက စာသားတွေကို မြင်လိုက်ရမှာ မဟုတ်ပါဘူး။
၃၊ အဲဒါတွေကို တမျက်နာချင်း အကုန်မြင်ဖို့အတွက် ps aux | less လို့ရိုက်လိုက်ရင် တမျက်နာချင်းမြင်ရပါမယ်။ ps aux ရဲ့ output က less ဆီကိုသွားပါမယ်။ ပြီးရင် အဲဒီ output ကို less ကွန်မန်းက ဆက်ပြီးအလုပ်လုပ်ပါမယ်။ အဲဒါဆိုရင် process အားလုံးကို တမျက်နာချင်း ကြည့်လို့ရပါပြီ။
နောက်ထပ်အသုံးဝင်တဲ့ pipe command နဲ့တွဲပြီးသုံးတဲ့ကွန်မန်းကတော့ grepကွန်မန်းဖြစ်ပါတယ်။ ဒီကွန်မန်းကတော့ မြင်ချင်တဲ့ information တွေကိုပဲ filter လုပ်ပေးပါတယ်။ ဥပမာ linda ဆိုတဲ့ user account ရှိသလားလို့ /etc/passwd ဆိုတဲ့ user database မှာရှာချင်တယ်ဆိုပါစို့။ solution တစ်ခုက အဲဒီဖိုင်ကို cat or less နဲ့ဖွင့်ပြီးရင် အဲဒီယူဇာပါလား ဆိုတာကို လိုက်ရှာ။ တကယ်တော့အဲဒါက တကယ်အလုပ်ရှုပ်ပါတယ်။ ပိုလွယ်တဲ့နည်းကတော့ အဲဒီဖိုင်ကိုဖွင့်ပြီး pipe လုပ်ပြီး grep နဲ့ filter လုပ်လိုက်ရင် ကွန်မန်းတစ်ကြောင်းထဲနဲ့အဆင်ပြေပါတယ်။ cat /etc/passwd | grep linda လို့ရိုက်လိုက်ရင် ရှိရင် result ပြမယ် မရှိရင် မပြဘူး။

STP Five Port States

STP Port State ၅ မျိုးရှိတယ်။
အဲဒါတွေကတော့ အောက်ကပုံမှာ ကြည့်လိုက်ပါ။

Port တစ်ခု Forwarding State ကို ရောက်ဖို့အတွက် အောက်မှာ ပြထားတဲ့အတိုင်း အဆင့်ဆင့်ပြောင်းလဲ သွားပါတယ်။
Blocking မှာ ဆိုရင် ၂၀ စက္ကန့်
Listening မှာ ၁၅ စက္ကန့်
Learning မှာ ၁၅ စက္ကန့်
အဲဒီအဆင့်တွေပြီးမပဲ Port တစ်ခုဟာ Forwarding State ကို ရောက်ပါတယ်။

state between listening, learning and forwarding.

ပုံမှန်ဆိုရင် Spanning-tree events တွေကို မမြင်ရပါဘူး။ အဲဒါကို မြင်ချင်တယ်ဆိုရင် eanble mode ထဲမှာ အောက်က ကွန်မန်းရိုက်ပေးဖို့လိုပါတယ်။ ပြီးရင် switch ကို console cable နဲ့ချိတ်ထားဖို့လိုပါမယ်။ မဟုတ်ရင် အဲဒီ messages တွေကို မြင်ရမှာ မဟုတ်ပါဘူး။ တကယ့်လက်တွေ့မှာသုံးတဲ့ switch တွေမှာ မလိုအပ်ဘဲ CPU Usage တက်တဲ့အတွက် အဲဒါကိုပိတ်ထားပါတယ်။ ပြန်ပိတ်ချင်ရင်တော့ no debug spanning-tree events လို့ ပြန်ရိုက်ပေးပါ။

C2960S-SW1#debug spanning-tree events

အထက်ကပုံမှာ Blocking State ရဲ့စက္ကန့်ကို မမြင်ရဘူး။ အဲဒါကို သိချင်တယ်ဆိုရင် 
show spanning-tree details ကွန်မန်းကို သုံးပြီးကြည့်နိုင်ပါတယ်။

show spanning-tree details