বাংলায় শেল ও শেলস্ক্রিপ্টিং শেখার কোর্স
  • শুরুর কথা
  • প্রথম খন্ড - শেল বেসিক
    • প্রথম অধ্যায় - শেল বেসিক
      • শেল ও প্রম্পট
      • কমান্ড
      • নেভিগেশন
      • আরো একটু ls
      • ফাইল
      • লিঙ্ক
      • লিনাক্স ফাইলসিস্টেম
    • দ্বিতীয় অধ্যায় - ম্যানিপুলেশন
      • ওয়াইল্ডকার্ড
      • ফাইল ও ডিরেক্টরি তৈরি করা
      • ফাইল ও ডিরেক্টরি কপি করা
      • ফাইল ও ডিরেক্টরি মুভ করা
      • ফাইল ও ডিরেক্টরি রিমুভ করা:
      • হার্ডলিঙ্ক ও সফ্টলিঙ্ক তৈরি করা
      • অনুশীলন
    • তৃতীয় অধ্যায় - রিডিরেকশন
      • স্ট্যান্ডার্ড ইনপুট, আউটপুট এবং এরর
      • স্ট্যান্ডার্ড আউটপুট রিডিরেকশন
      • স্ট্যান্ডার্ড এরর রিডিরেকশন
      • স্ট্যান্ডার্ড আউটপুট ও এরর একত্রে রিডিরেকশন
      • ফাইল সংযুক্তিকরণ
      • পাইপলাইন
    • চতুর্থ অধ্যায় - শেলের চোখে দেখা
      • এক্সপ্যানসন
      • পাথনেম এক্সপ্যানসন
      • গানিতিক এক্সপ্যানসন
      • ব্রেস এক্সপ্যানসন
      • প্যারামিটার এক্সপ্যানসন
      • কমান্ড সাবস্টিটিউশন
      • ক্যোটিং
      • স্কেইপিং ক্যারেক্টার
    • পঞ্চম অধ্যায় - কীবোর্ড ট্রিক্স
      • কমান্ডলাইন এডিটিং
      • কমপ্লিশন
      • কমান্ড হিস্ট্রি
    • ষষ্ঠ অধ্যায় - পারমিশন
      • ওনার, গ্রুপ এবং অন্যান্য
      • এক্সেস রাইট
      • ফাইল পারমিশন পরিবর্তন
      • ফাইল পারমিশন মাস্কিং
      • বিশেষ পারমিশন
      • ওনার ইউজার ও গ্রুপ পরিবর্তন
      • পরিচয় পরিবর্তন
      • পাসওয়ার্ড পরিবর্তন
    • সপ্তম অধ্যায় - প্রসেস
      • প্রসেস এর প্রাথমিক ধারণা
      • প্রসেস দেখা
      • প্রসেস নিয়ন্ত্রণ
      • সিগন্যাল
  • দ্বিতীয় খন্ড - কনফিগারেশন ও এনভায়রনমেন্ট
    • প্রথম অধ্যায় - এনভায়রনমেন্ট
      • এনভায়রনমেন্টের ভিতরে দেখা
      • যেভাবে এনভায়রনমেন্ট তৈরী হয়
      • এনভায়রনমেন্ট পরিবর্তন
    • দ্বিতীয় অধ্যায় - প্রম্পট সম্পাদনা
      • প্রম্পট কাস্টমাইজেশন
      • প্রম্পট রঙ করা
      • কার্সরের অবস্থান পরিবর্তন
  • তৃতীয় খন্ড - আটপৌরে কমান্ডলাইন
    • প্রথম অধ্যায় - প্যাকেজ ম্যানেজমেন্ট
    • দ্বিতীয় অধ্যায় - টেক্সট এডিটর
      • ন্যানো
        • ন্যানোর প্রাথমিক ব্যবহার
        • ন্যানো - এডিটিং এবং নেভিগেশন
        • ন্যানো কনফিগারেশন
      • ভিম
        • ভিম-এর এডিটিং মোড
        • ভিম-এর বেসিক এডিটিং
        • ভিম: সার্চ এ্যান্ড রিপ্লেস
        • ভিম: একাধিক ফাইল নিয়ে কাজ করা
      • ইম্যাকস্
        • ইম্যাকস্: প্রথম ধাপ
        • ইম্যাকস্: ক্যারেক্টার, কী এবং কমান্ড
        • ইম্যাকস্: বেসিক এডিটিং
        • ইম্যাকস্: সার্চ এ্যান্ড রিপ্লেস
        • ইম্যাকস্: একাধিক ফাইল এডিট করা
    • তৃতীয় অধ্যায় - স্টোরেজ মিডিয়া
      • লিনাক্সের চোখে স্টোরেজ ডিভাইস
      • মাউন্ট এবং আনমাউন্ট
      • পার্টিশন এবং ফরম্যাট করা
      • ফাইলসিস্টেম টেস্ট এবং রিপেয়ার করা
      • ডিভাইস ক্লোনিং
      • ইমেজ তৈরী
      • অপটিক্যাল মিডিয়ায় রাইট করা
    • চতুর্থ অধ্যায় - নেটওয়ার্কিং
      • নেটওয়ার্ক পরীক্ষণ এবং পর্যবেক্ষন
      • ফাইল ট্রান্সফার
      • নিরাপদ যোগাযোগ
    • পঞ্চম অধ্যায় - ফাইল সার্চ
      • Locate: নাম দিয়ে ফাইল সার্চ
      • find: শক্তিশালী সার্চ
        • find: টেস্ট
        • find: অপারেটর
        • find: একশন
        • find: অপশন
        • অনুশীলন
    • ষষ্ঠ অধ্যায় - আর্কাইভ ও ব্যাকআপ
      • ডাটা কম্প্রেশন
      • ডাটা আর্কাইভিং
      • dtrx
      • সিনক্রোনাইজেশন
    • সপ্তম অধ্যায় - আটপৌরে টুলস
      • রেঞ্জার(Ranger): ফাইল ম্যানেজার
      • মাট (Mutt): ইমেইল ক্লায়েন্ট
      • সিমিউজ(cmus): মিউজিক প্লেয়ার
      • ইলিঙ্কস (elinks): ওয়েব ব্রাউজার
      • উইচ্যাট (weechat) : আইআরসি ক্লায়েন্ট
      • ফিঞ্চ (finch) : চ্যাট ক্লায়েন্ট
    • অষ্টম অধ্যায় - প্রোগ্রাম কম্পাইলেশন
  • চতুর্থ খন্ড - টেক্সট ম্যানিপুলেশন
    • প্রথম অধ্যায় - রেগুলার এক্সপ্রেশন
      • গ্রেপ (grep)
Powered by GitBook
On this page
  1. প্রথম খন্ড - শেল বেসিক
  2. চতুর্থ অধ্যায় - শেলের চোখে দেখা

ব্রেস এক্সপ্যানসন

সকল এক্সপ্যানসন এর মধ্যে ব্রেস এক্সপ্যানসন(Brace expansion) সম্ভবত সবচেয়ে শক্তিশালী। ব্রেসকে চলতিভাষায় আমরা ব্রাকেট বলি বাঙলায়। এবং তিনধরনের ব্রাকেট বা ব্রেসের মধ্যে সেকেন্ড ব্রাকেট বা কার্লি ব্রেস('{}') ব্যবহৃত হবে এখানে। ব্রেস এক্সপ্যানসন ব্যবহার করে আমরা কোনো প্যাটার্নে অনেকগুলো স্ট্রিং তৈরি করতে পারি। একটা উদাহরণ দেখা যাক:

me@howtocode-pc:~$ echo front-{A,B,C}-back
front-A-back front-B-back front-C-back

এক্সপ্যানসনের সময় শুধু ব্রেসের মধ্যবর্তী অংশটুলু এক্সপ্যান্ডেড হবে। তাছাড়া এর সামনে বা পিছনে এমন অংশ জুড়ে দেয়া যায় যা প্রতিটিক্ষেত্রেই একই থাকবে। সামনে এমন কমন অংশ থাকলে এখানে যেমন 'front-' তাকে বলা হয় প্রিমবল্(preamble)। একইভাবে পিছনের অংশকে বলে পোস্টস্ক্রিপ্ট বলে(postscript)। আমরা এক্সপ্যানসনের জন্য ব্রেসের মধ্যে অনেককিছুই ব্যবহার করতে পারি। কয়েটা টেক্সট স্ট্রিং কমা দিয়ে আলাদা করে দিতে পারি। তবে মাথায় রাখতে হবে। ব্রেসের মধ্যে কোথাও স্পেস ব্যবহার করা যাবে না। একটা উদাহরণ দেখা যাক স্ট্রিং এর:

me@howtocode-pc:~$ echo বাঙলা{দেশ,ভাষা,সাহিত্য}
বাঙলাদেশ বাঙলাভাষা বাঙলাসাহিত্য

আমরা প্রিমবল হিসেবে দিয়েছি 'বাঙলা' শব্দটি। আর এক্সপ্যানসনের জন্য ব্রেসের মধ্যে শুধু কমা দিয়ে আলাদা করে তিনটি স্ট্রিং: দেশ, ভাষা ও সাহিত্য। শেল এটাকে এক্সপ্যান্ড করে বাঙলাদেয়, বাঙলাভাষা ও বাঙলাসাহিত্য বানিয়েছে।

তাছাড়াও আমরা নম্বর বা অক্ষরের ক্ষেত্রে রেঞ্জ বলে দিতে পারি। আমরা যদি Number_1 Number_2 এভাবে Number_7 পর্যন্ত দেখতে চাই তাহলে লিখবো:

me@howtocode-pc:~$ echo Number_{1..7}
Number_1 Number_2 Number_3 Number_4 Number_5 Number_6 Number_7

আমরা Number_1 থেকে Number_7 পর্যন্ত চেয়েছি। তাই শুরু হবে 1 দিয়ে ও শেষ হবে 7 দিয়ে। তার মাঝখানে '..'। এটা দিয়ে বোঝানো হলো শুরু(এখানে 1) থেকে শেষ(এখানে 7) পর্যন্ত। আমরা চাইলে 01, 02... এভাবে বা 001, 002 এভাবেও রেঞ্জ দিতে পারি:

me@howtocode-pc:~$ echo {01..15}
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
me@howtocode-pc:~$ echo {001..15}
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015

এভাবেই A..Z রেঞ্জ সিলেক্ট করলে অক্ষরগুলো বর্ণানুক্রমে ব্যবহার করবে। আমরা উল্টোদিক থেকেও শুরু করে শুরুতেও আসতে পারি:

me@howtocode-pc:~$ echo {Z..A}
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

গানিতিক এক্সপ্যানসনের মত ব্রেস এক্সপ্যানসন গুলো মিলিয়ে যৌগিক বা নেস্টেড ব্রেস এক্সপ্যানশনে রূপ দেয়া যায়। মনে করুন আপনার অনেক ছবি আছে সংগ্রহে। একদিন ভাবলেন এলোমেলো করে না রেখে সাল ও মাস অনুযায়ী ফোল্ডার করে রাখবেন। আপনার কাছে ২০১২-২০১৪ সালের ছবি আছে আর আপনি চান photos নামে একটি ফোল্ডার করবেন তারপর তার মধ্যে প্রত্যেক সালের প্রত্যেক মাসের জন্য একটি করে ফোল্ডার করবেন। আপনি অবশ্যই একটি একটি করে ফোল্ডার তৈরি করতে পারেন। কিন্তু তা হবে সময় নষ্ট। আমরা এই কাজটি এভাবে করতে পারি:

me@howtocode-pc:~$ mkdir photos
me@howtocode-pc:~$ cd photos/
me@howtocode-pc:~/photos$ mkdir {2012..2014}-{01..12}
me@howtocode-pc:~/photos$ ls
2012-01  2012-05  2012-09  2013-01  2013-05  2013-09  2014-01  2014-05  2014-09
2012-02  2012-06  2012-10  2013-02  2013-06  2013-10  2014-02  2014-06  2014-10
2012-03  2012-07  2012-11  2013-03  2013-07  2013-11  2014-03  2014-07  2014-11
2012-04  2012-08  2012-12  2013-04  2013-08  2013-12  2014-04  2014-08  2014-12

আমরা প্রথমে photos নামে একটি ফোল্ডার তৈরি করে তাতে ঢুকেছি। তারপর নেস্টেড ব্রেস এক্সপ্যানসন ব্যবহার করে সহজেই ফোল্ডার তৈরি করেছি।

Previousগানিতিক এক্সপ্যানসনNextপ্যারামিটার এক্সপ্যানসন

Last updated 6 years ago