ব্যবহার {html,php,htm}
শুধুমাত্র একটি যেমন কাজ করতে পারেন বক্রবন্ধনী সম্প্রসারণ , যা একটি নন-স্ট্যান্ডার্ড (না POSIX-অনুবর্তী) এর বৈশিষ্ট্য bash
, ksh
এবং zsh
।
একটি ধনুর্বন্ধনী প্রসারকে স্বীকৃতি দেওয়ার জন্য, এটি অবশ্যই কমান্ড লাইনের একটি অব্যক্ত (ক এর অংশ) টোকেন হতে হবে।
একটি ধনুর্বন্ধনী প্রসার একাধিক যুক্তিতে প্রসারিত হয় , সুতরাং ক্ষেত্রে একাধিক বিকল্প grep
দেখে শেষ হয় ঠিক যেমন আপনি পৃথকভাবে সেগুলি পাস করেছেন। --include=...
একটি বক্রবন্ধনী সম্প্রসারণের ফলাফল নেই globbing (ফাইলের নাম সম্প্রসারণ) সাপেক্ষে , যা হয়েছে ফাঁদ :
প্রতিটি ফলাফল যুক্তির সাথে মিলিয়ে ফাইলের নামগুলিতে আরও প্রসারিত করা যেতে পারে যদি এরকম উদ্বৃত্ত গ্লোব্বিং মেটাচার্যাক্ট যেমন থাকে *
।
এই যেমন টোকেন সঙ্গে অসম্ভাব্য --include=*.html
(যেমন, আপনি একটি ফাইল আছে চাই আক্ষরিক নামে ভালো কিছু --include=foo.html
ম্যাচ কিছু জন্য), এটা সাধারণভাবে মনে মূল্য পালন করা হয়।
যদি nullglob
শেল বিকল্পটি ( shopt -s nullglob
) চালু হয় এবং গ্লোববিংয়ের সাথে কোনও মিল না হয় তবে যুক্তিটি বাতিল করা হবে ।
সুতরাং, সম্পূর্ণ দৃust় সমাধানের জন্য , নিম্নলিখিতটি ব্যবহার করুন:
grep -R '--include=*.'{html,php,htm} pattern /some/path
'--include=*.'
আক্ষরিক হিসাবে বিবেচিত হয় , একক-উদ্ধৃত হওয়ার কারণে ; এটি অবিচ্ছিন্ন ব্যাখ্যাটিকে *
গ্লোববিং চরিত্র হিসাবে আটকায় ।
{html,php,htm}
- প্রয়োজনীয়তা - unquoted বক্রবন্ধনী সম্প্রসারণ [1]
, এর বিস্তৃতি 3 আর্গুমেন্ট, যা, কারণে {...}
সরাসরি নিম্নলিখিত '...'
টোকেন , অন্তর্ভুক্ত যে টোকেন।
অতএব, শেল দ্বারা উদ্ধৃতি অপসারণের পরে, নিম্নলিখিত 3 টি আক্ষরিক আর্গুমেন্ট শেষ পর্যন্ত প্রেরণ করা হবেgrep
:
--include=*.html
--include=*.php
--include=*.htm
[1] আরও সঠিকভাবে, এটি কেবল ব্রেস প্রসারণের বাক্য গঠন-প্রাসঙ্গিক অংশগুলি অবশ্যই অবতীর্ণ হতে হবে, তালিকার উপাদানগুলি এখনও স্বতন্ত্রভাবে উদ্ধৃত করা যেতে পারে এবং যদি তাদের মধ্যে গ্লোব্বিং মেটাচারার রয়েছে তবে ব্রেস প্রসারণের পরে অবাঞ্ছিত গ্লোব্বিং হতে পারে; এই ক্ষেত্রে প্রয়োজনীয় না হলেও, উপরের হিসাবে লেখা যেতে পারে
'--include=*.'{'html','php','htm'}