কি হচ্ছে
শেল (বাশ) আর্গুমেন্টটি দেখে [a-z]
। এটা একটা ওয়াইল্ডকার্ড প্যাটার্ন (ক এর উল্লিখিত glob ), যা যে কোন ছোট হাতের letter¹ সাথে মেলে। সুতরাং শেলটি এই প্যাটার্নটির সাথে মেলে এমন কোনও ফাইলের নাম সন্ধান করে। তিনটি মামলা রয়েছে:
- বর্তমান ডিরেক্টরিতে কোনও ফাইলের একটিই নাম নেই যা একটি একক ছোট হাতের অক্ষর। তারপরে শেলটি ওয়াইল্ডকার্ডের প্যাটার্নটি অপরিবর্তিত রেখে দেয় এবং
tr
আর্গুমেন্টগুলি -d
এবং দেখে [a-z]
। আপনার বেশিরভাগ মেশিনে এটিই ঘটে।
- বর্তমান ডিরেক্টরিতে একটি একক ফাইলের একটি নাম রয়েছে যা একটি একক ছোট হাতের অক্ষর। তারপরে শেলটি এই ফাইলটির নামের সাথে প্যাটার্নটি প্রসারিত করে এবং
tr
আর্গুমেন্ট -d
এবং ফাইলের নামটি দেখে। এটি সার্ভারে ঘটে এবং ম্যাচিং ফাইলটি কল করা হয় o
কারণ আমরা দেখতে পাচ্ছি যে tr
চিঠিটি মুছে ফেলা হয়েছে o
।
- বর্তমান ডিরেক্টরিতে দুটি বা আরও বেশি ফাইলের একটি নাম রয়েছে যা একটি একক ছোট হাতের অক্ষর। তারপরে শেলটি মিলে যাওয়া ফাইলের নামের তালিকায় প্যাটার্নটি প্রসারিত করে এবং
tr
তিন বা ততোধিক যুক্তি দেখায়: -d
এবং ফাইলের নাম। যেহেতু tr
পরে একটি একক যুক্তি প্রত্যাশা করে -d
, এটি অভিযোগ করবে।
আপনার কি করা উচিত ছিল
কোনও কমান্ডের যুক্তিতে যদি বিশেষ অক্ষর থাকে তবে আপনাকে অবশ্যই সেগুলি থেকে পালাতে হবে। যুক্তিটি একক উদ্ধৃতিতে রাখুন '…'
(এটি সহজতম উপায়, অন্যগুলি রয়েছে)) একক উদ্ধৃতিগুলির ভিতরে, সমস্ত অক্ষর একক উদ্ধৃতি নিজেই বাদ দিয়ে নিজের পক্ষে দাঁড়ায়। আর্গুমেন্টের ভিতরে যদি একটি একক উক্তি থাকে তবে এটি দ্বারা প্রতিস্থাপন করুন'\''
।
tr -d '[a-z]'
তবে মনে রাখবেন যে এটি সম্ভবত আপনি বোঝাতে চেয়েছিলেন না! এটি tr
ছোট হাতের অক্ষর এবং স্কোয়ার বন্ধনীগুলি মুছতে বলে । এটা তোলে সমতুল্য tr -d ']a-z['
, tr '[]a-z'
ছোট হাতের অক্ষর মুছে ফেলার জন্য, ইত্যাদি, ব্যবহার
tr -d a-z
যুক্তি tr
একটি চরিত্র সেট। আপনি নিয়মিত অভিব্যক্তি বা ওয়াইল্ডকার্ড প্যাটার্নে অক্ষর সেট করে এটি চিহ্নিত করতে এটি একটি অক্ষর সেট হিসাবে চারপাশে বন্ধনী রেখেছিলেন। তবে tr
একসাথে একক চরিত্রে কাজ করে। এর কমান্ড লাইন আর্গুমেন্টগুলি হ'ল আপনি বন্ধনীর ভিতরে রাখবেন ।
চরিত্রের ক্লাসগুলি নির্দেশ করতে আপনার ব্র্যাকেটগুলির দরকার নেই । একটি নিয়মিত অভিব্যক্তি হিসাবে, আপনি একটি অক্ষর শ্রেণি নির্দেশ করতে বন্ধনীগুলির মধ্যে বন্ধনী ব্যবহার করেন, উদাহরণস্বরূপ যে [[:lower:]]*
কোনও সংখ্যার ছোট অক্ষরের সাথে [[:lower:]_]*
মেলে, কোনও সংখ্যার ছোট অক্ষর এবং আন্ডারস্কোরের সাথে মেলে। যুক্তি অনুসারে tr
আপনার আশেপাশের বন্ধনীগুলি ছাড়াই সেটটি প্রয়োজন, সুতরাং tr -d '[:lower:]'
ছোট হাতের অক্ষর tr -d '[:lower:]_'
মুছে ফেলা, ছোট হাতের অক্ষর এবং আন্ডারস্কোরগুলি মুছে ফেলা ইত্যাদি
Some কিছু লোকেলে এটি অন্য অক্ষরের সাথে মেলে ।
tr
রেঞ্জ এনক্লোজিং ছাড়া লেখা হয়[...]
। সুতরাংtr -d '[a-z]'
মেরে ফেলবেa-z
, এবং চরিত্র[
এবং]
।tr -d a-z
কেবলমাত্র অক্ষরগুলি মারতে ব্যবহার করুনa-z
।