Quoting
Linux အသုံးပြုသူတစ်ယောက်အနေဖြင့် Files (or) Variables တွေကို နည်းအမျိုးမျိုးနှင့် ဖန်တီးရတာ (သို့) ကိုင်တွယ်အလုပ်လုပ်ရတာတွေ ရှိပါတယ်။ Short Filenames တွေ Single Values တွေနှင့် အလုပ်လုပ်ကြတဲ့အခါ လွယ်ကူပေမယ့် Spaces, Special Characters တွေပါလာတဲ့အခါမှာတော့ ရှုပ်ထွေးလာပါတော့တယ်။ Shells တွေမှာ Quotes (“ ”, ‘ ’) အမျိုးမျိုးသုံးပြီး Data တွေကို ဝန်းရံဖော်ပြတဲ့ Quoting ခေါ် Feature လေးတစ်ခုပါပါတယ်။ Bash မှာတော့ Quotes Types ( ၃ ) မျိုးရှိပါတယ်။
- Double quotes
- Single quotes
- Escape characters
Quoting ပြုလုပ်လိုက်တာကြောင့် Commands တွေရဲ့ အလုပ်လုပ်ပုံတွေ မတူကြတော့တာကို အောက်ပါဥပမာတွေမှာ ကြည့်နိုင်ပါတယ်။
Note: TWOWORDS ဆိုတာ မိမိတို့ဘာသာ ဖန်တီးထားတဲ့ Bash Variable တစ်ခုပါ။ Variables တွေကို နောက်ပိုင်းမှာ မိတ်ဆက်ပါမယ်။ ဒီနေရာမှာတော့ Quoting တွေဟာ Variables တွေရဲ့ Output တွေပေါ် ဘယ်လိုသက်ရောက်မှုတွေရှိတယ်ဆိုတာ ပြဖို့ပါပဲ။
Double Quotes
Quote Marks (“…”) တွေ ဝန်းရံပြီးဖော်ပြထားတဲ့ စာသားကို သာမန် ပုံမှန် Regular Characters တွေအဖြစ် မှတ်ယူဖို့ Shell ကို ပြောတာပါ။ $ (dollar sign), \ (backslash) and ` (backquote) တွေလို Special Characters တွေအားလုံးဟာ သူတို့ရဲ့ မူရင်းအဓိပ္ပါယ် မူရင်းဖော်ပြချက်တွေပျောက်ပြီး Variables တွေ၊ Command အစားထိုး Substitution လုပ်တာတွေ၊ Arithmetic Functions တွေမှာ တွဲပြီး အသုံးပြုနိုင်မှာပါ။
ဥပမာ – $USER ဆိုတဲ့ Variable ရဲ့ အစားသွင်းမှုတန်ဖိုး Value ဟာ Double Quotes ကြောင့် အကျိုးသက်ရောက်မှုမရှိနိုင် မထိခိုက်နိုင်ပါဘူး။
အခြားတဘက်မှာတော့ Space Character ဟာ Argument Separator တစ်ခုအဖြစ် သူ့ရဲ့မူရင်းဆိုလိုရင်း ပျောက်သွားတာ တွေ့ရမှာပါ။
ပထမ ဥပမာမှာ Touch Command ဟာ Strings ၂ ခု (new & file) ကို သီးခြား Arguments တွေအဖြစ် ဘာသာပြန် နားလည်လိုက်ပြီး သီးခြားဖိုင် ၂ ဖိုင်အဖြစ် ဖန်တီးလိုက်တာ တွေ့ရမှာပါ။ ဒုတိယ ဥပမာမှာတော့ Argument တစ်ခုတည်းအဖြစ် မှတ်ယူလိုက်တာကြောင့် ဖိုင် တဖိုင်ပဲ ဖန်တီးပေးပါတယ်။ သို့သော် ဘယ်လိုပဲဖြစ်ဖြစ် Filenames တွေမှာ Space Character တွေ ရှောင်တာတော့ ကောင်းတဲ့အလေ့အကျင့်ပါ။ အဲ့ဒီအစား Underscore (_) (သို့) Dot (.) တွေ အသုံးပြုနိုင်ပါတယ်။
Single Quotes
Double Quotes တွေမှာလို ချွင်းချက်တွေမရှိတာ တွေ့ရမှာပါ။ Character တစ်လုံးစီရဲ့ မူရင်းအဓိပ္ပါယ် ပုံစံအတိုင်းပဲ ရှိနေမှာပါ။ ပထမ ဥပမာအတိုင်း ပြန်ကြည့်ကြပါစို့။
Single Quotes သုံးလိုက်တဲ့အခါ ကွဲပြားခြားနားတာကို တွေ့ပါလိမ့်မယ်။
Variable ထဲက တန်ဖိုးကို အစားမသွင်းဘဲ မူရင်းအတိုင်းပဲ အတိအကျ ပြပေးပါတယ်။
Escape Characters
Special Characters တွေရဲ့ အထူးပြု အဓိပ္ပါယ်တွေကို ဖယ်ရှားလိုတဲ့အခါ Escape Characters တွေကို သုံးနိုင်ပါတယ်။ $USER ဆိုတဲ့ Environment Variable ကို ပြန်ကြည့်ကြပါစို့။
$ သင်္ကေတရဲ့ မူရင်းအဓိပ္ပါယ်အရ Variable ထဲမှာရှိတဲ့ Contents တန်ဖိုးတွေကို Terminal မှာ ပြပေးတာကို မြင်နိုင်ပါတယ်။ သို့သော် Backslash Character (\) ကို Variable မှာသုံးတဲ့ $ Sign ရှေ့မှာ တွဲသုံးလိုက်တဲ့အခါ အဲ့ဒီမူရင်းအဓိပ္ပါယ်ပျောက်သွားမှာပါ။ Variable ထဲက တန်ဖိုးဖြစ်တဲ့ Command အသုံးပြု Run နေတဲ့ Username အစား Variable Name သက်သက်ပဲ အစားထိုးဖော်ပြပေးမှာပါ။
ဒီဥပမာလေးကိုမြင်တော့ Single Quotes တွေထဲမှာ ဘာပဲထားထား ဘာပဲရေးရေး အဲ့ဒီအတိုင်းပဲ ပြန်ပြတတ်တဲ့ Single Quotes နဲ့ အတူတူပဲဆိုတာ ပြန်မှတ်မိမှာပါ။ သို့သော် Escape Character ကတော့ Special Characters တွေရဲ့ ရှေ့မှာထားပြီး အသုံးပြုလိုက်တာနှင့် မူရင်းအဓိပ္ပါယ်တွေပျောက်စေပြီး ကွဲပြားခြားနားစွာ အလုပ်လုပ်ပေးမှာပါ။