
কিছুদিন আগে, গ্নু প্রজেক্ট ব্যাশ ৫.৩-এর নতুন সংস্করণ প্রকাশের ঘোষণা দিয়েছে। এই জনপ্রিয় কমান্ড ইন্টারপ্রেটারটি অধিকাংশ লিনাক্স ডিস্ট্রিবিউশনে ডিফল্ট অপশন হিসেবে থাকে।
এই নতুন সংস্করণটি প্রায় তিন বছরের কাজের ফল , এই সময়ে শুধু শেলের ভাষা ও আচরণেরই উন্নতি করা হয়নি, বরং C23-এর মতো আধুনিক মানদণ্ডের সাথে সামঞ্জস্যপূর্ণ করার জন্য নতুন বৈশিষ্ট্যও যুক্ত করা হয়েছে। এর সাথে রিডলাইন ৮.৩ লাইব্রেরিটিও প্রকাশ করা হয়েছে।
Bash 5.3 এ নতুন কী আছে?
Bash 5.3-এর অন্যতম উল্লেখযোগ্য পরিবর্তন হলো নতুন কমান্ড সাবস্টিটিউশন মেথড `${ command; }` এবং `${|command;}`-এর প্রবর্তন । এগুলোর মাধ্যমে চাইল্ড প্রসেস তৈরি না করে বা পাইপলাইন ব্যবহার না করেই কোনো কমান্ডের আউটপুট ইন্টারসেপ্ট করা যায়, ফলে রিসোর্স খরচ কমে এবং পারফরম্যান্স উন্নত হয়। এর ফলাফল সরাসরি `REPLY` ভেরিয়েবলে সংরক্ষণ করা যায়, যা সাধারণ আউটপুট ক্যাপচারের কাজগুলোকে সহজ করে তোলে।
GNU Bash 5.3-এ প্রবর্তিত আরেকটি নতুন বৈশিষ্ট্য হলো নতুন GLOBSORT ভেরিয়েবল, যা আপনাকে ফাইল পাথ এক্সপ্যান্ড করার সময় সর্টিংয়ের মানদণ্ড নির্ধারণ করার সুযোগ দেয়। ব্যবহারকারীরা নাম, সাইজ, পরিবর্তনের তারিখ এবং আরও অনেক কিছু অনুসারে সর্ট করতে পারেন, যেখানে আরোহী এবং অবরোহী উভয় ক্রমের বিকল্প রয়েছে।
এছাড়াও, ব্যাশ ৫.৩ বেশ কিছু বিল্ট-ইন কমান্ডে উন্নতি সাধন করেছে। `compgen` কমান্ড এখন তৈরি হওয়া কমপ্লিশনগুলো একটি ভেরিয়েবলে সংরক্ষণ করতে পারে (`-V varname`), অন্যদিকে `read` কমান্ডে এখন `-E` অপশনটি যুক্ত করা হয়েছে, যা ব্যাশের অটোকমপ্লিট নিয়মের সাথে রিডলাইন লাইব্রেরি ব্যবহার করতে সাহায্য করে। `source` কমান্ডটিরও উন্নতি করা হয়েছে এবং এটি এখন সার্চ পাথ পরিবর্তন করার জন্য `-p PATH` অপশনটি সমর্থন করে।
এছাড়াও, umask কমান্ডটিকে POSIX স্পেসিফিকেশনের সাথে সম্পূর্ণরূপে সঙ্গতিপূর্ণ করার জন্য সামঞ্জস্য করা হয়েছে , এবং মাল্টিবাইট স্ট্রিং ও বিকল্প ক্যারেক্টার এবং স্ট্রিং উপস্থাপনার জন্য নতুন অপশন যুক্ত করে printf-কে উন্নত করা হয়েছে।
C23 এর সামঞ্জস্য এবং K&R C কে বিদায়
সবচেয়ে উল্লেখযোগ্য কাঠামোগত পরিবর্তনগুলোর মধ্যে একটি হলো ব্যাশ সোর্স কোডে C23 স্ট্যান্ডার্ডের গ্রহণ । এর ফলে, "K&R C" মোড কম্পাইলেশনের সমর্থন সরিয়ে দেওয়া হয়েছে , যা সি ভাষার একেবারে শুরুর দিকের একটি কৌশল ছিল।
অন্যদিকে, Bash 5.3 বেশ কিছু লোডেবল কমান্ড প্রবর্তন করে যেমন:
- কেভি: কী-মান বিন্যাসে ডেটা থেকে সহযোগী অ্যারে তৈরি করতে।
- স্ট্র্যাপটাইম: টেক্সট ফরম্যাটে তারিখগুলিকে ইউনিক্স সময়ে রূপান্তর করে।
- ফ্লটেক্সপ্রি: আপনাকে let এর আচরণ অনুকরণ করে ভাসমান বিন্দু গাণিতিক ক্রিয়াকলাপ সম্পাদন করতে দেয়।
এছাড়াও, BASH_MONOSECONDS নামক ডাইনামিক ভ্যারিয়েবলটি যোগ করা হয়েছে , যা একটি মনোটোনিক সিস্টেম টাইম কাউন্টার প্রদান করে এবং এমন সব কাজের জন্য উপযোগী যেখানে টেম্পোরাল স্ট্যাবিলিটি অত্যন্ত গুরুত্বপূর্ণ।
POSIX মোডে, Bash এখন লোকাল সেটিংস মেনে < এবং > অপারেটর ব্যবহার করে স্ট্রিং তুলনা করে। এটি test, trap, wait, এবং bind-এর মতো কমান্ডগুলোর আচরণকেও স্ট্যান্ডার্ডের প্রয়োজনীয়তাগুলোর সাথে সামঞ্জস্যপূর্ণ করে। উদাহরণস্বরূপ, `trap -P` আপনাকে প্রতিটি সিগন্যালের জন্য ট্র্যাপ অ্যাকশন প্রিন্ট করার সুযোগ দেয়, এবং `wait -n` টার্মিনেটেড প্রসেস ও সাবস্টিটিউশনের হ্যান্ডলিং উন্নত করে।
রিডলাইন ৮.৩
ব্যাশের সহযোগী রিডলাইন লাইব্রেরিও একটি বড় আপডেট পেয়েছে। এর সবচেয়ে উল্লেখযোগ্য নতুন বৈশিষ্ট্যগুলির মধ্যে রয়েছে:
- সার্চ-ইগনোর-কেস: ইতিহাসে কেস-অসংবেদনশীল অনুসন্ধানের অনুমতি দেয়।
- রপ্তানি-সমাপ্তি: বাহ্যিক প্রক্রিয়াকরণের জন্য একটি শব্দের সম্ভাব্য সমাপ্তি রপ্তানি করে।
- নামকরণ-কমান্ড চালানো: স্ক্রিপ্টিং এবং কাস্টমাইজেশনের জন্য উপযোগী, স্ট্যান্ডার্ড ইনপুট থেকে নাম পঠিত কমান্ডগুলি কার্যকর করে।
- উন্নত ম্যাক্রো সাপোর্ট, নতুন কনফিগারযোগ্য ভেরিয়েবল এবং রিজিউমের পরে স্ক্রিনের মাত্রার আরও ভাল পরিচালনা (SIGCONT)।
লিনাক্সে ব্যাশ ইনস্টল এবং/অথবা আপডেট করা
যারা লিনাক্সে ব্যাশ ইনস্টল বা আপডেট করতে আগ্রহী, তাদের জানা উচিত যে এটি আপনার ব্যবহৃত ডিস্ট্রিবিউশনের উপর নির্ভর করে। নীচে, আমি প্রধান ডিস্ট্রিবিউশনগুলিতে এটি কীভাবে করবেন তা ব্যাখ্যা করব:
ডেবিয়ান-ভিত্তিক বিতরণগুলিতে (যেমন উবুন্টু, লিনাক্স মিন্ট)
sudo apt ইনস্টল --only-আপগ্রেড ব্যাশ
এটি Bash-কে অফিসিয়াল রিপোজিটরিতে উপলব্ধ সর্বশেষ সংস্করণে আপডেট করবে।
যদি আপনি এটি স্ক্র্যাচ থেকে ইনস্টল করতে চান (উদাহরণস্বরূপ, খুব ন্যূনতম সিস্টেমে):
sudo apt bash ইনস্টল করুন
রেড হ্যাট-ভিত্তিক বিতরণগুলিতে (যেমন ফেডোরা, সেন্টোস, আরএইচইএল)
sudo dnf update bash Bash ইনস্টল করতে (যদি এটি ইতিমধ্যে না থাকে):
sudo dnf bash ইনস্টল করুন
আর্চ লিনাক্স এবং ডেরিভেটিভস (যেমন মাঞ্জারো) তে
সুডো প্যাকম্যান -সিইউ ব্যাশ
এটি সম্পূর্ণ সিস্টেমের সাথে সাথে Bash আপডেট করবে। শুধুমাত্র Bash ইনস্টল করতে:
সুডো প্যাকম্যান -এস ব্যাশ