Tuesday, September 30, 2014

Input Output Redirection in Linux ​and Using "grep"

                 Input Output I/O Redirection တွေကို Linux မှာအသုံးများပါတယ် ။ ကျွန် တော် တို့ "config file" တွေ ဒါမဟုတ် files တွေမှ အ ကြောင် းရာအချို့ကို redirect လုပ် ပြီး ကြည့်ချင် တာဖြစ် ဖြစ် သိမ် းချင် တာဖြစ် ဖြစ် နောက် files တွေကို edit/append လုပ် ချင် တာဖြစ် ဖြစ် I/O Redirection တွေကိုအသုံးပြုကြပါ တယ် ။

Type Of I/O Redirection

           Input Output Redirection ၃မျိုးရှိပါတယ် ။ Standard Input, Standard Output and Standard Error တို့ဖြစ် ပါတယ် ။ Std Input ဆိုတာက ကျွန် တော် တို့ Keyboardက နေ ရိုက် လိုက် တဲ့ ဟာ တွေကို Std Input လို့ ခေါ်ပြီး Std Output ဆိုတာက တော့ Monitor မှာ Std Input က နေရိုက် တာကို ပြန် ပြ ပေးတာဖြစ် ပါတယ် ။ Std Error ဆိုတာက တော့ Std Output နဲ့မတူပဲ Error ဖြစ် သွား သော output များကိုသာ ပြ ပေးတာဖြစ် ပါ တယ် ။   
 

I/O Redirection Symbols

         " < "     =  Redirect Standard Input
         " > "     =  Redirect Standard Output
         " 2> "   =  Redirect Standard Error
         " >> "   =  Appending to a file
         " | "       =  Use when to do more specific action
         " & "    =  Mostly used in combing Std Output and Std Error in one place


Standard Input

                Std Input က keyboard မှာ typing လုပ်သမျှကို standard input လို့သတ်မှတ်ပါတယ်။ ဥပမာ အ နေနဲ့ အောက်က ပုံမှာ "read" command ဖြင့် std input လုပ်ပြထားပါတယ်။ ပြောချင်သည်မှာ Terminal ထဲတွင် #read message လို့ ရိုက်လိုက်သည့်သ ဘောသည် အောက်တွင် User မှ Std Input အ နေဖြင့် တစ်ခုခု ရိုက်ထည့် ပေးရ သည့် သ ဘောဖြစ်သည်။ ထို့ နောက် #echo $message  နဲ့ ပြန် ခေါ်ကြည့်လျှင် ကိုယ်ရိုက်ထားတဲ့ Std Input ကို Std Output အ နေဖြင့် လာပြမည် ဖြစ်ပါသည်။





Standard Output

              Std Output ရဲ့ အလုပ်လုပ်ပုံက တော့ အောက်ကပုံမှာ current directory အောက်မှာ ရှိတဲ့  files/folders တွေကို Screen ပေါ်ကို တိုက်ရိုက် မပြ စေပဲ သီခြား localtion ကို ညွှန် ပေးလိုက်တဲ့ပုံစံဖြစ် ပါတယ်။ Std Output Redirection symbol ဖြစ်တဲ့ " > " နဲ့ အသုံးပြပါတယ်။



Standard Error
 Std Error သည်လဲ Screen ပေါ်မှာ outputထုတ်ပြ ပေမယ့် သူက Error ဖြစ်တဲ့ output တွေကိုသာ ပြ ပေးခြင်း ဖြစ်ပါတယ်။ ပုံတွင် "ls" command ဖြင့် current directory အောက်တွင် မရှိတဲ့ file တစ်ခုကို list ပြလိုက် သော အခါ  Screen ပေါ်တွင် Error စာ ကြောင်း ( ထို file သည် မရှိ ကြောင်း ) ကို Std Error က ပြ ပေးမည် ဖြစ်ပါတယ်။ Std Error Redirection symbol ဖြစ်တဲ့ " 2> " နဲ့ အသုံးပြုထားပါတယ်။



Display Std Output and Error in One Location ( Using "&" )
         
            တစ်ကယ်ဆိုလျှင် Std Input ရဲ့ symbol သည် "0<" , Std Output သည် "1>" ယူဆထားတာဖြစ်ပါတယ်။ ဒါ ပေမယ့် တစ်ကယ်အသုံးပြု ရင ် တော့ ရှေ့မှာ "0,1" မခံလဲ အသုံးပြုနိုင်ပါတယ်။ အခု ပထမဆုံး ပုံမှာ ပြထားတာက "showip.sh" ဆိုတဲ့ script တစ်ခုရှိပါတယ် သူက run လိုက်လို့ ရှိရင် စက်ရဲ့ eth0 မှာ သတ်မှတ်ထားတဲ့ ip address ကို ပြ ပေးမှာဖြစ်ပါတယ်။ ဒီ နေရာမှာ အသုံးပြုထားသည့် I/O Redirection ပုံစံက script ကို runလိုက်လို့ error မရှိပဲ run တယ်ဆိုလျှင် showip.txt ထဲမှာ Result ပြရမည် ဖြစ်ပြီး အကယ်ရျ် Error ဖြစ်ခဲ့ပါက iperror.txt မှာ Script error တက်သည့် information ပြရမည်ဖြစ်ပါသည်။
           



                အခု ဒုတိယပုံမှာ ပထမတုန်းကလို std out နှင့် std error ကို တစ် နေရာဆီ မပြ တော့ပဲ ipinfo.txt ဆိုတဲ့ file တစ်ခုထဲမှာပဲ ပြခိုင်းတာဖြစ်ပါတယ်။ ထို့ ကြောင့် script သည် run correctly (or) error တက်လျှင်လဲ ထိုfile ထဲမှာပဲ information ကိုလာပြမှာ ဖြစ်ပါတယ်။ ဒီ နေရာမှာ သုံးထားတဲ့ Redirection " 2>&1" သည် အ ပေါ်မှာ ကျွန် တော် ပြောခဲ့သလိုပဲ std output ကို "1>" လို့ယူဆလို့ ရတဲ့ အတွက် ကြောင့် အခုလို့ "&1" ဆိုပြီး သုံးလို့ ရတာဖြစ်ပါတယ်။




Using Pipe symbol " | "

                 " | " symbol က တော့ ရှေ့က အသုံးပြုထားတဲ့ command ၏ result ကို နောက်က နေ ပိုပြီး specific result ရချင်တဲ့ အခါမျိုးမှာ အသုံးပြုပါတယ်။ ပုံမှာ color.txt ထဲမှာ "red,brown,etc.." ဆိုပြီး ရေးထားပါတယ်။ User က color.txt ကိုကြည့်ချင်တယ် ထိုအထဲမှ Red ကို ပဲ ကြည့်ချင် ရင် အခုလိုမျိုး "|" အသုံးပြုရမည်ဖြစ်ပါတယ်။



 Appending to a file " >> "

                      " >> " append လုပ်သည် မှာ information ရှိပြီးသား fileတစ်ခုထဲကို ဒီအတိုင်းရိုးရိုး std output ">" ဖြင့် redirect လုပ်ပါက နဂို ရှိပြီးသား  data များ ပျက်သွားပြီး update data များသာ ရောက် နေမည် ဖြစ်သည်။ ထို့ ကြောင့် " >> " append mode ဖြင့် သုံးမှသာ လျှင် ရှိပြီးသား data များ မ ပျောက်ပဲ update data လဲ ထည့်နိုင်မည် ဖြစ်သည်။


Using "grep" in Linux

                  "grep" command ၏ အလုပ်လုပ်ပုံမှာ အထက်မှာ ပြောခဲ့သလိုပဲ specific ရှာချင်တဲ့အခါ ကြားခံ အ နေနဲ့ " | " ကို အသုံးပြုပြီး လိုချင် သော specifi data/information တွေကို ရှာ ပေးခြင်းဖြစ်ပါ တယ်။ အခု ဒီပိုစ့်မှာ တော့ အသုံးများတဲ့ "grep" command တွေကိုပဲ ပြော ပြပါမယ်။
                "grep -i"  အလုပ်လုပ်ပုံမှာ အကြီး အ သေး ဂရုစိုက်စရာမလိုပဲ command မှာ ရိုက်တဲ့ အတိုင်း ရှာ ပေးမည်ဖြစ်ပါတယ်။



                    "grep ^" အလုပ်လုပ်ပုံမှာ ပုံတွင် color.txt ထဲမှ "O" နှင့်စ သော စာလုံးကိုသာ ပြ ပေးပါဆိုသည့်သ ဘောဖြစ်ပါတယ်။တစ်နည်းအားဖြင့် အစစာလုံး နဲ့ ရှာချင်လျှင် "^" ကိုအသုံးပြုရမည် ဖြစ်သည်။




            "grep $" ကို နောက်ဆုံးစာလုံးဖြင့် ရှာချင် သောအခါတွင် "$" ဖြင့် အသုံးပြုပါတယ်။ပုံထဲမှာ color.txt ထဲမှာ "Yellow" ကို ရှာပြထားပါတယ်။

              "grep -v" သည် reverse search သ ဘောဖြစ်သည်။ အောက်က ပုံတွင် ပြထားသည့်အတိုင်း color.txt file ထဲမှာမှ "Red" စာလုံးမှလွဲပြီး ကျန်တာပြ စေချင်လျှင် " -v " option ဖြင့်အသုံးပြုပါတယ်။

            "grep ." မှ " . " option သည် anything ပုံစံမျိုး ဖြစ်သည်။ ပုံထဲတွင် ruby ဆို သော စာလုံးကို ရှာရန် "r..y" ပြောချင်သည်မှာ "r နှင့် y" ဖြင့် အဆုံးသတ်ရမည် ကျန်သည့်အလယ်စာလုံးကြိုက်တာဖြစ်ခွင့် ရှိသည့်သ ဘောဖြစ်သည်။



         
             "grep" ကြီးကိုပဲ သတ်သတ်ပိုစ့် တစ်ခု လုပ်ရျ် ရ သော ကြောင့် အခု ဒီပိုစ့် မှာ တော့ အသုံးများ လေ့ ရှိတဲ့ grep options   တွေကိုပဲ ပြောပြထားပါတယ်။


Share:

0 comments:

Post a Comment