আমি আজ একটি ছোট স্ক্রিপ্ট লিখেছিলাম যা এতে রয়েছে
grep -q ^local0 /etc/syslog.conf
পর্যালোচনা চলাকালীন, একজন সহকর্মী পরামর্শ দিয়েছিলেন যে ^local0
উদ্ধৃত করা হবে কারণ ^
বোর্ন শেলটির অর্থ "পাইপ"। এই দাবির দ্বারা অবাক হয়ে, আমি যে উল্লেখটি উল্লেখ করেছি তা ট্র্যাক করার চেষ্টা করেছি। ইন্টারনেটে আমার যে কিছুই পাওয়া যায় নি প্রস্তাবিত এটি একটি সমস্যা।
তবে, দেখা যাচ্ছে যে bsh
এআইএক্স 7 এ বাস্তবায়ন (যা বোর্ন শেল হিসাবে দাবি করেছে) বাস্তবায়নের এই আচরণটি রয়েছে:
> bsh
$ ls ^ wc
23 23 183
$ ls | wc
23 23 183
অন্যান্য "বোর্ন শেল" বাস্তবায়ন করার চেষ্টা করে আমি এর সাথে আচরণ করার চেষ্টা করি নি (এটি ^
মোটেই শেল মেটাচার্যাক্টর হিসাবে বিবেচিত হয় না)। আমি sh
সেন্টোস (যা সত্যই বাশ) এবং sh
ফ্রিবিএসডি (যা বাশ নয়) এ চেষ্টা করেছি। আমার কাছে চেষ্টা করার মতো আরও অনেক সিস্টেম নেই।
এই আচরণ কি প্রত্যাশিত? কোন শেলগুলি ^
পাইপ মেটাচার্যাক্টর হিসাবে বিবেচনা করে?
[ x"$foo" = x"bar" ]
।
bsh
এটা বোর্ন শেল নয়। নামটি শুধুমাত্র এআইএক্সে বোর্ন শেলের জন্য আপত্তিজনক। bsh
বরং 1984 সালে এইচ.বার্গোল্ড এজি-তে ইউএনওএসের (প্রথম ইউএনআইএক্স ক্লোন) আমার দ্বারা প্রবর্তিত শেল। দ্রষ্টব্য যে
^
এটি zsh এ এবং রেগেক্স স্পেসেও একটি উপেক্ষার চরিত্র। একটি পৃথক মন্তব্য হিসাবে, সাধারণত শেলগুলি জুড়ে বহনযোগ্যতার জন্য গ্রেপ এক্সপ্রেশনটিতে একক উদ্ধৃতি ব্যবহার করার পরামর্শ দেওয়া হয়।