বাশ স্ক্রিপ্ট কি?

What Is Bash Script



তুমি কি কখনো তোমার বাবাকে এক গ্লাস জল ধরতে বললে শুনেছ? আপনার না বলার একটি পছন্দ আছে, কিন্তু কম্পিউটারের সেই পছন্দ নেই। কম্পিউটার আপনি যা করতে বলবেন ঠিক সেটাই করতে যাচ্ছে। ব্যাশ একটি শেল যা আপনাকে কম্পিউটারের সাথে যোগাযোগ করতে দেয় এবং আপনাকে এটির নির্দেশনা দেওয়ার অনুমতি দেয়। একটি স্ক্রিপ্ট মূলত কম্পিউটারকে বিভিন্ন অর্থপূর্ণ কাজ সম্পাদনের জন্য দেওয়া নির্দেশাবলীর একটি সেট। একটি স্ক্রিপ্ট আপনাকে সাধারণ পদ্ধতির চেয়ে দ্রুত ফলাফল অর্জনে বিলাসিতা সহ বিভিন্ন কাজ স্বয়ংক্রিয় করতে সাহায্য করে। সাধারণত, টার্মিনালে, আপনি একটি মৌলিক বা অগ্রিম ব্যাশ কমান্ড লিখেন এবং এটি এখনই এটি কার্যকর করে। ব্যাশ স্ক্রিপ্টগুলিতে, আপনি একবারে একাধিক নির্দেশনা বা কমান্ড দিতে পারেন এবং কম্পিউটার যখনই স্ক্রিপ্টটি চালাবে তখন সেগুলি সবই চালাবে। সংক্ষেপে, টার্মিনালে একক বাশ কমান্ড কার্যকর করা যেতে পারে কিন্তু একবারে একাধিক কমান্ডের সংমিশ্রণ চালানোর জন্য, আপনাকে একটি ব্যাশ স্ক্রিপ্ট তৈরি করতে হবে।

কেন ব্যাশ দরকারী এবং এটি কার জন্য দরকারী?

আপনি যদি আপনার ওএসের উপর আরো নিয়ন্ত্রণ চান এবং ওএস সম্পর্কিত বিভিন্ন কাজ সম্পাদন করতে চান তাহলে ব্যাশ আপনার যাওয়ার উপায়। ব্যাশ দ্বারা, আমরা কেবল স্ক্রিপ্টিং ভাষা নয় বরং লিনাক্স অপারেটিং সিস্টেমের সাথে আসা সরঞ্জামগুলিও উল্লেখ করি। লিনাক্সের প্রতিটি টুল এর কাজ আছে এবং প্রতিটি পৃথকভাবে আলাদা আলাদা কাজ করে। যখনই আপনি সেই সমস্ত সরঞ্জামগুলিকে একত্রিত করতে এবং সেগুলিকে একসাথে চেইন করার প্রয়োজন হয় তখন বাশ সত্যিই দরকারী হয় যাতে তারা সবাই মিলে একটি কাজ সম্পন্ন করতে কাজ করে যা অন্যথায় করা সত্যিই কঠিন। উদাহরণস্বরূপ, লিনাক্স ওএস-এর সাথে যা কিছু আছে তা অন্যান্য প্রোগ্রামিং ভাষায় যেমন পাইথন বা পার্ল-এ করা যেতে পারে কিন্তু ওএস-সম্পর্কিত বিভিন্ন কাজ সম্পন্ন করা খুবই কঠিন। একটি সহজ, কালো এবং সাদা এবং লিনাক্স ওএস সংক্রান্ত যেকোনো কাজ করার সবচেয়ে সহজ উপায় হল ব্যাশ ব্যবহার করা। যে কেউ লিনাক্স ওএস টুলস (যেমন ls, cd, cat, touch, grep, ইত্যাদি) অন্তর্ভুক্ত করতে চায়, তার জন্য অন্য কোন প্রোগ্রামিং ল্যাঙ্গুয়েজের পরিবর্তে বাশ শেখা সত্যিই উপকারী।







কিভাবে ব্যাশ অন্যান্য প্রোগ্রামিং ভাষার সাথে তুলনা করে?

যদি আমরা ব্যাশ সম্পর্কে কথা বলি তাহলে আমরা জানি যে ব্যাশ একটি সাধারণ উদ্দেশ্য প্রোগ্রামিং ভাষা নয় বরং একটি কমান্ড-লাইন দোভাষী। বিভিন্ন সরঞ্জাম এবং প্রক্রিয়ার চারপাশে কাজগুলি সম্পাদন করার জন্য বাশ সত্যিই উপযোগী যা বিভিন্ন প্রক্রিয়াগুলিকে একসাথে একত্রিত করার এবং তাদের সবাইকে একক লক্ষ্যের দিকে কাজ করার ক্ষমতা দেয়। ইনপুট এবং আউটপুটগুলি মোকাবেলা এবং ম্যানিপুলেট করার ক্ষেত্রে বাশ সত্যিই সহজ, যা অন্যান্য সাধারণ উদ্দেশ্যমূলক প্রোগ্রামিং ভাষা যেমন পাইথন, সি ইত্যাদি করা সত্যিই কঠিন কাজ। জটিল ডেটা ম্যানিপুলেট করার জন্য, ব্যাশ এই ধরনের কাজগুলি পরিচালনা করতে পারে না এবং আমাদের প্রোগ্রামিং ল্যাঙ্গুয়েজ যেমন পাইথন, পার্ল, সি ইত্যাদির দিকে তাকাতে হবে প্রোগ্রামিং ল্যাঙ্গুয়েজে আপনি সফটওয়্যার বা একটি টুল তৈরি করতে পারেন কিন্তু আপনি বাশ এ তাদের কোনটিই তৈরি করতে পারবেন না। যাইহোক, আপনি সরঞ্জামগুলি চালানোর জন্য ব্যাশ ব্যবহার করতে পারেন বা দক্ষতার সাথে চালানোর জন্য সেই সরঞ্জামগুলিকে একত্রিত করতে পারেন। এটি একটি রকেট তৈরির মতো, যদি আমরা এই রূপকটি বিবেচনা করি, প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি আপনাকে রকেটটি তৈরি করতে সাহায্য করবে যখন ব্যাশ আপনাকে রকেটটি চালাতে সাহায্য করবে এবং আপনাকে এর দিকনির্দেশ দিতে সাহায্য করবে এবং আপনাকে এটি চাঁদে বা মঙ্গলগ্রহে অবতরণ করতে সাহায্য করবে।



কিভাবে বাশ স্ক্রিপ্ট তৈরি এবং চালানো যায়?

একটি ব্যাশ স্ক্রিপ্ট তৈরি করতে, আপনাকে প্রথমে ফাইলের নামের শেষে .sh এর এক্সটেনশন দিয়ে একটি টেক্সট ফাইল তৈরি করতে হবে। আপনি টার্মিনাল ব্যবহার করে ব্যাশ স্ক্রিপ্টিং ফাইল তৈরি করতে পারেন।



$স্পর্শscript.sh


উপরের কমান্ডটি টাইপ করার পরে, এন্টার কী টিপুন এবং আপনার বর্তমান কাজের ডিরেক্টরিতে একটি ব্যাশ স্ক্রিপ্টিং ফাইল তৈরি হবে। কিন্তু তা নয়, আমরা স্ক্রিপ্টিং ফাইল তৈরি করেছি কিন্তু স্ক্রিপ্টটি সম্পূর্ণ করতে এবং এটি চালানোর জন্য আমাদের কিছু পদক্ষেপ করতে হবে। প্রথমত, ন্যানো এডিটর বা গেডিট -এ স্ক্রিপ্টিং ফাইলটি খুলুন এবং প্রথম লাইনে টাইপ করুন:





#!/বিন/ব্যাশ


এটি প্রতিটি ব্যাশ স্ক্রিপ্টিং ফাইলের জন্য একটি স্ট্যান্ডার্ড প্রথম লাইন যা এটি একটি ব্যাশ স্ক্রিপ্ট হিসাবে স্বীকৃত হতে সাহায্য করে। প্রথম লাইনে #!/Bin/bash না থাকা যেকোনো স্ক্রিপ্টকে ব্যাশ স্ক্রিপ্ট হিসাবে বিবেচনা করা হবে না, তাই প্রতিটি স্ক্রিপ্টের শীর্ষে এই লাইনটি যুক্ত করতে ভুলবেন না। একবার আপনি এই লাইন যোগ করলে, এখন আপনি স্ক্রিপ্টে লেখা শুরু করতে পারেন। উদাহরণস্বরূপ, আমি এখানে একটি সাধারণ ইকো কমান্ড লিখব:

$বের করে দিলএটি লিনাক্সহিন্ট, সেরা শেখার প্ল্যাটফর্মজন্যবাশ


একবার আপনি এই কমান্ডটি লিখে গেলে, এখন আপনি এটি সংরক্ষণ করতে এগিয়ে যেতে পারেন এবং আপনার টার্মিনালে ফিরে যেতে পারেন। আপনার টার্মিনালে লিখুন:



$ls -কে


আপনি দেখতে পারেন 'script.sh' সাদা রঙে লেখা যা একটি চিহ্ন যে স্ক্রিপ্টটি একটি অ-এক্সিকিউটেবল ফাইল কারণ এক্সিকিউটেবল ফাইলগুলি সাধারণত সবুজ রঙের হয়। আরও, বাম দিকে একবার দেখুন যেখানে আমরা -rw -r – r– এর মতো একটি প্যাটার্ন দেখতে পাই যা প্রতিফলিত করে যে ফাইলটি কেবল পঠনযোগ্য এবং লেখার যোগ্য।
'আরডব্লিউ' ধারণকারী প্রথম অংশটি সম্ভবত মালিকের বর্তমান ব্যবহারকারীর অনুমতি।

'R' ধারণকারী দ্বিতীয় অংশটি সেই গোষ্ঠীর জন্য অনুমতি যেখানে আমাদের একাধিক ব্যবহারকারী রয়েছে।

যদিও 'r' যুক্ত তৃতীয় অংশটি জনসাধারণের জন্য অনুমতি যার অর্থ উল্লিখিত ফাইলের জন্য যে কেউ এই অনুমতি পেতে পারে।

'আর' মানে পড়ার অনুমতি, 'ডাব্লু' মানে লেখার অনুমতি, 'এক্স' মানে এক্সিকিউটেবল পারমিশন। স্পষ্টতই, আমরা 'script.sh' এর বিপরীতে x দেখি না। এক্সিকিউটেবল অনুমতি যোগ করার জন্য, এটি করার দুটি উপায় আছে।

পদ্ধতি 1

এই পদ্ধতিতে, আপনি '+x' দিয়ে একটি সাধারণ chmod কমান্ড লিখতে পারেন এবং এটি এক্সিকিউটেবল অনুমতি যোগ করবে।

$chmod+ x script.sh


যাইহোক, এটি এক্সিকিউটেবল পারমিশন দেওয়ার সবচেয়ে কার্যকরী উপায় নয় কারণ এটি এক্সিকিউটেবল পারমিশন দেয় শুধু মালিককেই নয় বরং গ্রুপ এবং জনসাধারণকেও যা আমরা নিরাপত্তার কারণে অবশ্যই চাই না। দেখা যাক:

পদ্ধতি 2

এই পদ্ধতিতে, আপনি একটি ফাইলের অনুমতি নির্দেশ করতে সংখ্যা ব্যবহার করতে পারেন। আমরা এতে ঝাঁপ দেওয়ার আগে, আমি আপনাকে সংক্ষিপ্ত ধারণা দিতে চাই যে এই সংখ্যাগুলির অর্থ কী এবং কীভাবে আপনি সেগুলি ব্যবহারের অনুমতি নিতে পারেন।
পড়ুন = 4
লিখুন = 2
চালানো = 1
Chmod কমান্ডের পর অনুমতি সংখ্যা তিনটি অঙ্কের হবে এবং প্রতিটি অঙ্ক মালিক, গোষ্ঠী এবং অন্যান্যদের (জনসাধারণের) অনুমতির প্রতিনিধিত্ব করে। উদাহরণস্বরূপ, মালিককে পড়া, লিখতে এবং কার্যকর করার অনুমতি দেওয়া এবং গোষ্ঠী এবং অন্যদের পাঠের অনুমতি দেওয়া এইরকম কিছু হবে:

$chmod 744script.sh


যদি আপনি লক্ষ্য করতে পারেন, তাহলে আপনি বুঝতে পারবেন যে আমরা প্রথম অঙ্কে মালিকের জন্য 4+2+1 = 7 হিসাবে পঠন, লেখা এবং সম্পাদন সংখ্যা যোগ করেছি, এবং গোষ্ঠী এবং অন্যদের জন্য আমরা পড়ার সংখ্যা ব্যবহার করি অর্থাৎ 4।

একটি বাশ স্ক্রিপ্ট চালান

এখন অবশেষে আমরা এমন একটি জায়গায় পৌঁছেছি যেখানে আমরা ব্যাশ স্ক্রিপ্ট চালাতে পারি। আপনার ব্যাশ স্ক্রিপ্টটি চালানোর জন্য, আপনাকে নিশ্চিত করতে হবে যে আপনি বর্তমান কাজের ডিরেক্টরিতে আছেন যেখানে আপনার স্ক্রিপ্টটি থাকে। এটি বাধ্যতামূলক নয় কিন্তু এইভাবে এটি সহজ কারণ আপনাকে পুরো পথটি লিখতে হবে না। একবার আপনি এটি সম্পন্ন করলে, এখন এগিয়ে যান এবং আপনার টার্মিনালে ./nameofscript.sh লিখুন। আমাদের ক্ষেত্রে, স্ক্রিপ্টের নাম 'script.sh', তাই আমরা লিখব:

$/script.sh

বাশ স্ক্রিপ্টের 3 টি সহজ উদাহরণ

হ্যালো লিনাক্সহিন্ট
প্রথমত, আমরা বর্তমান ওয়ার্কিং ডিরেক্টরিতে একটি ব্যাশ ফাইল তৈরি করব:

$ন্যানোF_script.sh


ফাইলের ভিতরে আপনাকে নিম্নলিখিত লিখতে হবে:

#!/বিন/ব্যাশ
বের করে দিল 'হ্যালো লিনাক্সহিন্ট'


একবার আপনি এটি লিখে ফেললে, এখন ফাইল পরিবর্তন লিখতে Ctrl+O চাপার চেষ্টা করুন তারপর যদি আপনি নামটি একই হিট এন্টার রাখতে চান, অন্যথায় নাম সম্পাদনা করুন, এবং তারপর এন্টার চাপুন। এখন ন্যানো এডিটর থেকে বেরিয়ে আসতে Ctrl+X চাপুন। এখন আপনি আপনার বর্তমান ডিরেক্টরিতে F_script.sh নামে একটি ফাইল দেখতে পাবেন।
এই ফাইলটি চালানোর জন্য আপনি এটির এক্সিকিউটেবল করার অনুমতি পরিবর্তন করতে পারেন অথবা আপনি লিখতে পারেন:

$বাশF_script.sh


ইকো কমান্ড
যখন আমরা ইকো কমান্ড সম্পর্কে কথা বলি, তখন এটি কেবলমাত্র যতটুকু উদ্ধৃতিতে লেখা থাকে ততক্ষণ আপনি মুদ্রণ করতে চান। সাধারণত যখন আপনি কোন পতাকা ছাড়াই একটি ইকো কমান্ড চালান এটি একটি লাইন ছেড়ে তারপর আউটপুট প্রিন্ট করে। উদাহরণস্বরূপ, যদি আমাদের একটি স্ক্রিপ্ট থাকে:

#!/বিন/ব্যাশ
বের করে দিল 'পরবর্তী লাইনে মুদ্রণ করুন'

এটি সংরক্ষণ করার পরে, যদি আমরা এটি চালাই:

$বাশF_script.sh


যদি আমরা প্রতিধ্বনি দিয়ে '-n' পতাকা ব্যবহার করি তাহলে এটি একই লাইনে প্রিন্ট করে।

#!/বিন/ব্যাশ
বের করে দিল -এন 'একই লাইনে মুদ্রণ করুন'

এটি সংরক্ষণ করার পরে, যদি আমরা এটি চালাই:

$বাশF_script.sh


একইভাবে, যদি আমরা দ্বিগুণ উদ্ধৃতির মধ্যে ' n' বা ' t' ব্যবহার করি, তবে এটি যেমন আছে তেমনই মুদ্রণ করবে।

#!/বিন/ব্যাশ
বের করে দিল 'nপ্রিন্ট করুন। টিএকই লাইনn'


যাইহোক, যদি আমরা '-e' পতাকাটি ব্যবহার করি, তবে এটি কেবল চলে যায় না বরং এটি applies n এবং প্রযোজ্য এবং আপনি নীচের আউটপুটে পরিবর্তন দেখতে পারেন:

#!/বিন/ব্যাশ
বের করে দিল -এবং 'nপ্রিন্ট করুন। টিএকই লাইনn'


BASH- এ মন্তব্য
একটি মন্তব্য এমন একটি লাইন যা কম্পিউটারের জন্য গুরুত্বপূর্ণ নয়। আপনি মন্তব্য হিসাবে যা লিখবেন তা কম্পিউটার দ্বারা বাতিল বা উপেক্ষা করা হবে এবং লিখিত কোডে এর কোন প্রভাব নেই। একজন প্রোগ্রামারের কোডের যুক্তি বোঝার জন্য মন্তব্যগুলি সাধারণত একটি দরকারী উপায় হিসেবে বিবেচিত হয় যাতে যখন সে কোডের টুকরোগুলোতে পুনরায় কাজ করতে ফিরে যায়, তখন সেই মন্তব্যগুলি তাকে যুক্তি এবং কেন সে একটি নির্দিষ্ট কোড লিখেছে তা মনে করিয়ে দিতে পারে উপায় মন্তব্যগুলি অন্যান্য প্রোগ্রামাররাও ব্যবহার করতে পারেন যারা কোডে পরিবর্তন করতে চান। আপনি যদি একটি কোড লিখে থাকেন এবং আপনি এটিকে সরিয়ে ফেলতে না চান তবে আপনি সেই নির্দিষ্ট কোড ছাড়া আউটপুট দেখতে চান তাহলে আপনি সেই নির্দিষ্ট কোডটিতে মন্তব্য করতে পারেন এবং এগিয়ে যান এবং চালাতে পারেন। আপনার প্রোগ্রামটি ঠিকঠাক চলবে, আপনি ভাল ফলাফল পাবেন যখন সেই অতিরিক্ত কোড এখনও আপনার স্ক্রিপ্টে উপস্থিত রয়েছে কিন্তু এটি মন্তব্যের কারণে অকার্যকর। যখনই আপনি আবার সেই টুকরা কোডটি ব্যবহার করতে চান, এগিয়ে যান এবং সেই লাইনগুলিকে অস্বস্তিকর করুন এবং আপনি যেতে ভাল।
আপনি বাশ এ মন্তব্য লিখতে পারেন দুটি উপায় আছে; একটি উপায় হল একক লাইনের মন্তব্য লিখা যখন অন্য উপায় মাল্টি লাইন মন্তব্য লিখতে ব্যবহৃত হয়।

একক লাইন মন্তব্য
একক লাইনের মন্তব্যে, আমরা একটি '#' চিহ্ন ব্যবহার করি যা সমগ্র লাইনে মন্তব্য করতে সাহায্য করে। '#' এর পরে লাইনে লেখা যেকোনো কিছু একটি মন্তব্য হিসাবে বিবেচিত হবে এবং যখন আমরা স্ক্রিপ্টটি চালাচ্ছি তখন তার কোন বাস্তব মূল্য থাকবে না। এই একক লাইনের মন্তব্যটি কোডের যুক্তি এবং বোঝার জন্য ব্যবহার করা যেতে পারে যার কাছে কোড অ্যাক্সেস আছে।

#!/বিন/ব্যাশ
বের করে দিল -এবং 'nপ্রিন্ট করুন। টিএকই লাইনn'
#এই স্ক্রিপ্ট আমাদের /n এবং /t এর /সমন্বয় প্রয়োগ করতে সাহায্য করে



মাল্টি লাইন মন্তব্য
ধরা যাক আপনি আপনার স্ক্রিপ্টে একশ লাইন মন্তব্য করতে চান। সেক্ষেত্রে আপনার জন্য একক লাইনের মন্তব্য ব্যবহার করা কঠিন হবে। আপনি প্রতিটি লাইনে # লাগিয়ে আপনার সময় নষ্ট করতে চান না। আমরা ':' এবং তারপর 'যাই হোক মন্তব্য' ব্যবহার করতে পারি। এটি আপনাকে 3 টি প্রতীক টাইপ করে একাধিক লাইনে মন্তব্য করতে সহায়তা করবে যা সহজ এবং দরকারী।

#!/বিন/ব্যাশ '
: 'এটি স্ক্রিপ্ট যা নিশ্চিত করে
যে n এবং t কাজ করে এবং প্রয়োগ করা হয়
ভিতরেএকটি উপায় যা আমাদের প্রয়োজনীয় আউটপুট আছে '
বের করে দিল -এবং 'nপ্রিন্ট করুন। টিএকই লাইনn'



Linuxhint.com এ বাশ স্ক্রিপ্টের 30 টি উদাহরণ দেখুন:

30 ব্যাশ স্ক্রিপ্ট উদাহরণ

ব্যাশ স্ক্রিপ্টিং -এর সবচেয়ে গুরুত্বপূর্ণ পাঠ

1. শর্তাধীন বিবৃতি
শর্তসাপেক্ষ বিবৃতি সিদ্ধান্ত গ্রহণের জন্য একটি খুব দরকারী হাতিয়ার। এটি ব্যাপকভাবে প্রোগ্রামিং ভাষায় ব্যবহৃত হয়। আরো প্রায়ই, আমাদের কিছু শর্তের উপর ভিত্তি করে সিদ্ধান্ত নিতে হবে। শর্তাধীন বিবৃতি প্রদত্ত অবস্থার মূল্যায়ন করে এবং সিদ্ধান্ত নেয়। ব্যাশে, আমরা অন্যান্য প্রোগ্রামিং ভাষার মতো শর্তাধীন বিবৃতিও ব্যবহার করি। ব্যাশে শর্তসাপেক্ষ বিবৃতি ব্যবহারের বাক্যগঠন অন্যান্য প্রোগ্রামিং ভাষা থেকে একটু ভিন্ন। যদি শর্তটি ব্যাশ এবং অন্যান্য সাধারণ উদ্দেশ্যমূলক প্রোগ্রামিং ভাষায় সর্বাধিক ব্যবহৃত শর্তাধীন বিবৃতি। যদি শর্তটি প্রদত্ত শর্তটি মূল্যায়ন করে এবং সিদ্ধান্ত নেয়। প্রদত্ত শর্তটিকে একটি পরীক্ষা অভিব্যক্তিও বলা হয়। ব্যাশে if কন্ডিশন ব্যবহার করার অসংখ্য উপায় রয়েছে। If শর্তটি অন্য ব্লকের সাথে ব্যবহার করা হয়। ক্ষেত্রে, যদি প্রদত্ত শর্তটি সত্য হয়, তাহলে if ব্লকের ভিতরে বিবৃতিগুলি কার্যকর করা হয়, অন্যথায় অন্য ব্লকটি কার্যকর করা হয়। ব্যাশে if কন্ডিশন স্টেটমেন্ট ব্যবহার করার একাধিক উপায় রয়েছে যা নিম্নরূপ:

  1. If স্টেটমেন্ট
  2. If else স্টেটমেন্ট
  3. নেস্টেড if স্টেটমেন্ট
  4. যদি এলিফ স্টেটমেন্ট

If স্টেটমেন্ট
যদি বিবৃতি শুধুমাত্র প্রদত্ত শর্তটি মূল্যায়ন করে, যদি প্রদত্ত শর্তটি সত্য হয়, তাহলে if ব্লকের ভিতরে বিবৃতি বা আদেশগুলি কার্যকর করা হয়, অন্যথায় প্রোগ্রামটি বন্ধ করা হয়। ব্যাশে, যদি শর্তটি if কীওয়ার্ড দিয়ে শুরু হয় এবং ফাই কীওয়ার্ড দিয়ে শেষ হয়। তৎকালীন কীওয়ার্ডটি স্টেটমেন্ট বা কমান্ডের ব্লক সংজ্ঞায়িত করতে ব্যবহৃত হয় যা একটি নির্দিষ্ট শর্ত সত্য হলে কার্যকর হয়। চলুন একটি ভেরিয়েবল ঘোষণা করি এবং ভেরিয়েবলের মান মূল্যায়নের জন্য if শর্তটি ব্যবহার করি তা 10 এর বেশি হোক বা না হোক। -Gt শর্তের চেয়ে বৃহত্তর মূল্যায়ন করতে ব্যবহৃত হয় যেখানে, -lt শর্তের চেয়ে কম মূল্যায়ন করতে ব্যবহৃত হয়।

#!/বিন/ব্যাশ
কোথায়=100
#যদি শর্ত ঘোষণা করা হয়
যদি [ $ VAR -জিটি 10 ]
তারপর
বের করে দিল 'দ্য$ VAR10 এর চেয়ে বড়
#যদি শর্ত শেষ হয়
থাকা


If else স্টেটমেন্ট
If else স্টেটমেন্টটিও কন্ডিশনাল স্টেটমেন্ট হিসেবে ব্যবহৃত হয়। প্রদত্ত শর্তটি সত্য হলে যদি শর্ত কার্যকর করা হয় তার পরে বিবৃতি বা আদেশ। অন্যথায়, প্রদত্ত শর্তটি সত্য না হলে অন্য ব্লকটি কার্যকর করা হয়। অন্য ব্লকটি if ব্লক দ্বারা অনুসরণ করা হয় এবং অন্য কীওয়ার্ড দিয়ে শুরু হয়।

#!/বিন/ব্যাশ
কোথায়=7
#যদি শর্ত ঘোষণা করা হয়
যদি [ $ VAR -জিটি 10 ]
তারপর
বের করে দিল 'দ্য$ VAR10 এর চেয়ে বড়
#অন্য ব্লক ঘোষণা
অন্য
বের করে দিল 'দ্য$ VAR10 এর কম
#যদি শর্ত শেষ হয়
থাকা


If শর্ত ব্যবহার করে একাধিক শর্ত মূল্যায়ন করা যায়। আমরা যদি এবং একক ভিতরে একাধিক অবস্থার মূল্যায়ন করতে অপারেটর (&) এবং বা অপারেটর (II) ব্যবহার করতে পারি।

#!/বিন/ব্যাশ
কোথায়=বিশ
#যদি শর্ত ঘোষণা করা হয়
যদি [[ $ VAR -জিটি 10 && $ VAR -ল্ট 100 ]]
তারপর
বের করে দিল 'দ্য$ VAR10 এর চেয়ে বড় এবং 100 এর কম '
#অন্য ব্লক ঘোষণা
অন্য
বের করে দিল 'শর্ত সন্তুষ্ট হয় না'
#যদি শর্ত শেষ হয়
থাকা


নেস্টেড if স্টেটমেন্ট
নেস্টেড if স্টেটমেন্টে, if if স্টেটমেন্টের ভিতরে আমাদের if স্টেটমেন্ট থাকে। প্রথম যদি বিবৃতি মূল্যায়ন করা হয়, যদি এটি সত্য হয় তবে অন্যটি যদি বিবৃতি মূল্যায়ন করা হয়।

#!/বিন/ব্যাশ
কোথায়=বিশ
#যদি শর্ত ঘোষণা করা হয়
যদি [[ $ VAR -জিটি 10 ]]
তারপর
#যদি অন্যের ভিতরে শর্ত থাকে
যদি [ $ VAR -ল্ট 100 ]
তারপর
বের করে দিল 'দ্য$ VAR10 এর চেয়ে বড় এবং 100 এর কম '
#অন্য ব্লক ঘোষণা
অন্য
বের করে দিল 'শর্ত সন্তুষ্ট হয় না'
#যদি শর্ত শেষ হয়
থাকা
অন্য
বের করে দিল 'দ্য$ VAR10 এর কম
থাকা


যদি এলিফ স্টেটমেন্ট
যদি এলিফ স্টেটমেন্ট একাধিক শর্ত মূল্যায়ন করতে ব্যবহৃত হয়। প্রথম শর্তটি if ব্লক দিয়ে শুরু হয় এবং অন্যান্য শর্তগুলি এলিফ কীওয়ার্ড দ্বারা অনুসরণ করা হয়। আসুন পূর্ববর্তী পরিবর্তনশীল সংখ্যার উদাহরণ বিবেচনা করি এবং আমাদের ব্যাশ স্ক্রিপ্টে যদি এলিফ স্টেটমেন্ট প্রয়োগ করি। Eq একটি সমান অপারেটর হিসাবে ব্যবহৃত হয়।

#!/বিন/ব্যাশ
কোথায়=বিশ
#যদি শর্ত ঘোষণা করা হয়
যদি [[ $ VAR -ইক ]]
তারপর
বের করে দিল 'পরিবর্তনশীল মান 1 এর সমান'
এলিফ [[ $ VAR -ইক 2 ]]
তারপর
বের করে দিল 'পরিবর্তনশীল মান 2 এর সমান'
এলিফ [[ $ VAR -ইক 3 ]]
তারপর
বের করে দিল 'পরিবর্তনশীল মান 2 এর সমান'
এলিফ [[ $ VAR -জিটি 5 ]]
তারপর
বের করে দিল 'পরিবর্তনশীল মান 5 এর চেয়ে বড়'
থাকা


2. লুপিং
লুপগুলি যে কোনও প্রোগ্রামিং ভাষার অপরিহার্য এবং মৌলিক অংশ। অন্যান্য প্রোগ্রামিং ভাষার বিপরীতে, প্রদত্ত শর্তটি সত্য না হওয়া পর্যন্ত বারবার একটি কাজ সম্পাদনের জন্য লুপগুলি ব্যাশে ব্যবহৃত হয়। লুপগুলি পুনরাবৃত্তিমূলক, এগুলি একই ধরণের কাজের অটোমেশনের জন্য একটি দুর্দান্ত সরঞ্জাম। লুপের জন্য, যখন লুপ, এবং যতক্ষণ না লুপ ব্যাশে ব্যবহৃত হয়।
আসুন এই লুপগুলি একে একে আলোচনা করি।

যখন লুপ
While লুপ বার বার একই স্টেটমেন্ট বা কমান্ড এক্সিকিউট করে। এটি শর্তটি মূল্যায়ন করে এবং শর্তটি সত্য না হওয়া পর্যন্ত বিবৃতি বা আদেশগুলি চালায়।
এটি ব্যাশে একটি সময় লুপ ব্যবহারের প্রাথমিক বাক্য গঠন।

যখন [শর্ত বা পরীক্ষার অভিব্যক্তি]
কর
বিবৃতি
সম্পন্ন

আসুন আমাদের script.sh ফাইলে while লুপ প্রয়োগ করি। আমাদের একটি পরিবর্তনশীল VAR আছে যার মান শূন্যের সমান। যখন লুপে, আমরা একটি শর্ত রেখেছি, যে লুপটি VAR এর মান 20 এর কম না হওয়া পর্যন্ত চলতে হবে। প্রতিটি পুনরাবৃত্তির পরে পরিবর্তনশীল মান 1 দ্বারা বৃদ্ধি করা হয়। সুতরাং, এই ক্ষেত্রে, পরিবর্তনশীল মান 20 এর কম না হওয়া পর্যন্ত লুপটি কার্যকর করা শুরু করবে।

#!/বিন/ব্যাশ
কোথায়=0
যখন [ $ VAR -ল্ট বিশ ]
কর
বের করে দিল 'চলকের বর্তমান মান হল$ VAR'
#ভিএআর -তে মান 1 বাড়ানো
কোথায়= $((ভিএআর +))
সম্পন্ন


লুপের জন্য
ফর লুপ প্রতিটি প্রোগ্রামিং ভাষায় সবচেয়ে বেশি ব্যবহৃত লুপ। এটি পুনরাবৃত্তিমূলক কাজ সম্পাদনের জন্য ব্যবহৃত হয়। এটি পুনরাবৃত্তিমূলক কাজ সম্পাদনের সর্বোত্তম উপায়। আসুন আমাদের script.sh ফাইলে for for loop ঘোষণা করি এবং এটি একটি পুনরাবৃত্তিমূলক কাজ সম্পাদনের জন্য ব্যবহার করি।

#!/বিন/ব্যাশ
কোথায়=0
জন্য (( আমি==0; আমি<বিশ; আমি ++))
কর
বের করে দিল 'হ্যালো এবং লিনাক্সহিন্টে স্বাগতম'
#পরিবর্তনশীল i
আমি= $((আমি+))
সম্পন্ন
বের করে দিল 'এটি লুপের শেষ'


যতক্ষণ না লুপ
অন্য ধরনের লুপ যা ব্যাশে ব্যবহৃত হয় লুপ পর্যন্ত। এটি একই সেট বারবার সম্পাদন বা সম্পাদন করে। যতক্ষণ না লুপ শর্তটি মূল্যায়ন করে এবং প্রদত্ত শর্তটি মিথ্যা না হওয়া পর্যন্ত কার্যকর করা শুরু করে। প্রদত্ত শর্তটি সত্য হলে লুপ শেষ হয়। পর্যন্ত লুপ সিনট্যাক্স নিম্নরূপ:

[শর্ত] পর্যন্ত
কর
বিবৃতি
কমান্ড
সম্পন্ন

আসুন আমাদের script.sh ফাইলে যতক্ষণ না লুপটি প্রয়োগ করি। শর্তটি মিথ্যা না হওয়া পর্যন্ত লুপ চলবে (ভেরিয়েবলের মান 20 এর চেয়ে কম)

#!/বিন/ব্যাশ
কোথায়=0
পর্যন্ত [ $ VAR -জিটি বিশ ]
কর
বের করে দিল 'হ্যালো এবং লিনাক্সহিন্টে স্বাগতম'
#পরিবর্তনশীল i
কোথায়= $((ভিএআর +))
সম্পন্ন
বের করে দিল 'এটি লুপ পর্যন্ত শেষ'


3. ব্যবহারকারীর কাছ থেকে পড়া এবং পর্দায় লেখা
ব্যাশ ব্যবহারকারীকে টার্মিনালে কিছু স্ট্রিং মান বা ডেটা প্রবেশ করার স্বাধীনতা দেয়। ব্যবহারকারী প্রবেশ করা স্ট্রিং বা ডেটা টার্মিনাল থেকে পড়া যায়, এটি ফাইলে সংরক্ষণ করা যায় এবং টার্মিনালে মুদ্রণ করা যায়। ব্যাশ ফাইলে, ব্যবহারকারীর ইনপুটটি ব্যবহার করে পড়তে পারে পড়ুন কীওয়ার্ড এবং আমরা এটি একটি ভেরিয়েবলে সংরক্ষণ করি। পরিবর্তনশীল বিষয়বস্তু echo কমান্ড ব্যবহার করে টার্মিনালে প্রদর্শিত হতে পারে।

#!/বিন/ব্যাশ
বের করে দিল 'টার্মিনালে কিছু লিখুন'
#ভিএআর -এ প্রবেশ করা মান সংরক্ষণ করা
পড়ুনকোথায়
বের করে দিল 'তুমি প্রবেশ করেছিলে:$ VAR'


রিড কমান্ড দিয়ে একাধিক অপশন ব্যবহার করা যেতে পারে। সর্বাধিক ব্যবহৃত বিকল্পগুলি হল -p এবং -s। -P প্রম্পট প্রদর্শন করে এবং ইনপুট একই লাইনে নেওয়া যেতে পারে। –S নীরব মোডে ইনপুট নেয়। ইনপুট অক্ষর টার্মিনালে প্রদর্শিত হয়। কিছু সংবেদনশীল তথ্য যেমন পাসওয়ার্ড প্রবেশ করানো দরকারী।

#!/বিন/ব্যাশ
পড়ুন -পি 'ইমেইল প্রদান করুন:'ইমেইল
বের করে দিল 'পাসওয়ার্ড লিখুন'
পড়ুন -এসপাসওয়ার্ড


4. পাঠ্য ফাইল পড়া এবং লেখা
টেক্সট ফাইলগুলি ডেটা পড়া এবং লেখার জন্য প্রয়োজনীয় উপাদান। ডেটা টেক্সট ফাইলগুলিতে সাময়িকভাবে সংরক্ষণ করা হয় এবং এটি টেক্সট ফাইল থেকে সহজেই পড়া যায়। প্রথমে, টেক্সট ফাইলে ডেটা লেখা নিয়ে আলোচনা করা যাক এবং এর পরে, আমরা টেক্সট ফাইল থেকে ডেটা পড়া নিয়ে আলোচনা করব।

টেক্সট ফাইল লেখা
তথ্য বিভিন্ন উপায়ে একটি ফাইলে লেখা যেতে পারে:

  • সমকোণ বন্ধনী বা বৃহত্তর চিহ্ন (>) ব্যবহার করে
  • ডাবল রাইট এঙ্গেল বন্ধনী ব্যবহার করে (>>)
  • টি কমান্ড ব্যবহার করে

তথ্য লেখার জন্য রাইট অ্যাঞ্জেল বন্ধনী চিহ্ন (>)
টেক্সট ফাইলে ডেটা লেখার জন্য এটি সর্বাধিক ব্যবহৃত উপায়। আমরা ডেটা লিখি এবং তারপর> চিহ্ন রাখি। > সাইন পাঠ্য ফাইলের দিকে নির্দেশ করে যেখানে আমাদের ডেটা সংরক্ষণ করতে হবে। যাইহোক, এটি ফাইলটি সংযুক্ত করে না এবং ফাইলের আগের ডেটা সম্পূর্ণরূপে নতুন ডেটা দ্বারা প্রতিস্থাপিত হয়।

#!/বিন/ব্যাশ
#ব্যবহারকারী পাঠ্য ফাইলের নাম প্রবেশ করে
পড়ুন -পি 'ফাইলের নাম লিখুন:'ফাইল
#ব্যবহারকারী পাঠ্য ফাইলে সঞ্চয় করার জন্য ডেটা প্রবেশ করে
পড়ুন -পি 'ফাইলে প্রবেশের জন্য ডেটা লিখুন:'ডেটা
#টেক্সট ফাইলে ডেটা সংরক্ষণ করা
#> ফাইলের নাম নির্দেশ করে।
বের করে দিল $ DATA > $ ফাইল


ডেটা লিখতে ডান অ্যাঞ্জেল বন্ধনী চিহ্ন (>>)
ফাইলে যে কোন কমান্ডের আউটপুট সংরক্ষণ করতে >> ব্যবহার করা হয়। উদাহরণস্বরূপ, ls -al কমান্ড একটি নির্দিষ্ট ডিরেক্টরিতে একটি ফাইলের বিষয়বস্তু এবং অনুমতি দেখায়। >> ফাইলে আউটপুট সংরক্ষণ করবে।

#!/বিন/ব্যাশ
#ব্যবহারকারী পাঠ্য ফাইলের নাম প্রবেশ করে
পড়ুন -পি 'ফাইলের নাম লিখুন:'ফাইল
#ফাইলে কমান্ড আউটপুট সংরক্ষণ করা
ls -কে >> $ ফাইল



টেক্সট ফাইলে ডেটা লেখার জন্য টি কমান্ড ব্যবহার করা
বাশের টি কমান্ডটি একটি টেক্সট ফাইলে কমান্ডের আউটপুট লেখার জন্য ব্যবহৃত হয়। এটি টার্মিনালে কমান্ডের আউটপুট প্রিন্ট করে এবং সেইসাথে টেক্সট ফাইলে সংরক্ষণ করে।

#!/বিন/ব্যাশ
#ব্যবহারকারী পাঠ্য ফাইলের নাম প্রবেশ করে
পড়ুন -পি 'ফাইলের নাম লিখুন:'ফাইল
#টি কমান্ড ব্যবহার করে ফাইলে কমান্ড আউটপুট সংরক্ষণ করা
ls -কে | টি $ ফাইল


টি কমান্ড ডিফল্টরূপে ফাইলের বিদ্যমান ডেটা ওভাররাইট করে। যাইহোক, টি কমান্ড সহ একটি বিকল্প ফাইলটি যুক্ত করার জন্য ব্যবহার করা যেতে পারে।

#!/বিন/ব্যাশ
#ব্যবহারকারী পাঠ্য ফাইলের নাম প্রবেশ করে
পড়ুন -পি 'ফাইলের নাম লিখুন:'ফাইল
#টি কমান্ড ব্যবহার করে ফাইলে কমান্ড আউটপুট সংরক্ষণ করা
ls -কে | টি -প্রতি $ ফাইল


টেক্সট ফাইল পড়া
দ্য বিড়াল কমান্ডটি ফাইল থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়। এটি এই উদ্দেশ্যে সবচেয়ে বেশি ব্যবহৃত হয়। এটি কেবল টার্মিনালে পাঠ্য ফাইলের বিষয়বস্তু মুদ্রণ করে। আসুন টার্মিনালে ফাইলের বিষয়বস্তু বা ডেটা মুদ্রণ করি বিড়াল কমান্ড

#!/বিন/ব্যাশ
#ব্যবহারকারী পাঠ্য ফাইলের নাম প্রবেশ করে
পড়ুন -পি 'ফাইলের নাম লিখুন:'ফাইল
#টেক্সট ফাইল থেকে ডেটা পড়া
বিড়াল $ ফাইল


5. ব্যাশ থেকে অন্যান্য প্রোগ্রাম চালানো
ব্যাশ বাশ স্ক্রিপ্ট থেকে অন্যান্য প্রোগ্রাম চালানোর ক্ষমতা দেয়। আমরা বাশ থেকে অন্যান্য প্রোগ্রাম চালানোর জন্য exec কমান্ড ব্যবহার করি। এক্সিকিউড কমান্ডটি পূর্ববর্তী প্রক্রিয়াটিকে বর্তমান প্রক্রিয়ার সাথে প্রতিস্থাপন করে এবং বর্তমান প্রোগ্রামটি চালু করে। উদাহরণস্বরূপ, আমরা ব্যাশ স্ক্রিপ্ট থেকে ন্যানো, গেডিট বা ভিম এডিটর খুলতে পারি।

#!/বিন/ব্যাশ
#বাশ থেকে ন্যানো সম্পাদক চলছে
এক্সিকিউট ন্যানো

#!/বিন/ব্যাশ
#বাশ থেকে gedit চালানো
এক্সিকিউটgedit

একইভাবে, আমরা ব্যাশ থেকে ব্রাউজার অ্যাপ্লিকেশনটিও চালাতে পারি। চলুন মজিলা ফায়ারফক্স ব্রাউজার চালাই।

#!/বিন/ব্যাশ
#ফায়ারফক্স চলছে
এক্সিকিউটফায়ারফক্স


তাছাড়া, আমরা exec কমান্ড ব্যবহার করে ব্যাশ থেকে যে কোন প্রোগ্রাম চালাতে পারি।

6. কমান্ড-লাইন প্রসেসিং
কমান্ড-লাইন প্রসেসিং বলতে টার্মিনালে প্রবেশ করা ডেটার প্রসেসিং বোঝায়। কমান্ড-লাইন ডেটা অনেক উদ্দেশ্যে প্রক্রিয়াকৃত হয় যেমন ব্যবহারকারীর ইনপুট পড়া, কমান্ডগুলি বোঝা এবং আর্গুমেন্টগুলি পড়া। পূর্বে, আমরা রিড কমান্ড নিয়ে আলোচনা করেছি। কমান্ড-লাইন প্রক্রিয়াকরণের জন্য রিড কমান্ডটিও ব্যবহৃত হয়। এই বিভাগে, আমরা কমান্ড-লাইন আর্গুমেন্ট প্রসেসিং নিয়ে আলোচনা করব। ব্যাশে, আমরা টার্মিনালে পাস করা বা লেখা আর্গুমেন্টগুলি প্রক্রিয়া করতে পারি। আর্গুমেন্টগুলি যেভাবে পাস করা হয় সেভাবেই প্রক্রিয়া করা হয়। অতএব, এটিকে পজিশনাল প্যারামিটার বলা হয়। অন্যান্য প্রোগ্রামিং ভাষার বিপরীতে, ব্যাশে আর্গুমেন্টের সূচী 1 দিয়ে শুরু হয়। ডলার চিহ্ন ($) যুক্তিগুলি পড়ার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, $ 1 প্রথম যুক্তি পড়ে, $ 2 দ্বিতীয় যুক্তি পড়ে, এবং তাই। ব্যবহারকারীর কাছ থেকে ইনপুট নেওয়ার মতো বিভিন্ন কারণে যুক্তিগুলি বিশ্লেষণ করা যেতে পারে।

#!/বিন/ব্যাশ
বের করে দিল 'আপনার নাম প্রবেশ করুন'
#প্রথম যুক্তির প্রসেসিং
বের করে দিল 'নামের প্রথম অংশ:' $ 1
#দ্বিতীয় যুক্তির প্রসেসিং
বের করে দিল 'মধ্য নাম:'$ 2
#তৃতীয় যুক্তির প্রসেসিং
বের করে দিল 'নামের শেষাংশ:' $ 3
বের করে দিল 'পুরো নাম:' $ 1 $ 2 $ 3


টার্মিনাল থেকে ডেটা পড়া, এবং আর্গুমেন্ট বিশ্লেষণ করা কমান্ড-লাইন প্রক্রিয়াকরণের সবচেয়ে উপযুক্ত উদাহরণ।

বাশের ইতিহাস এবং অন্যান্য শেলের সাথে তুলনা

ব্যাশ এখন ইউনিক্স এবং লিনাক্স ভিত্তিক সিস্টেমের অপরিহার্য উপাদান। দ্য বোর্ন শেল প্রাথমিকভাবে স্টিফেন বোর্ন তৈরি করেছিলেন। স্টিফেন বোর্ন শেলের উদ্দেশ্য ছিল সেই সময়ে বিদ্যমান শেলগুলির সীমাবদ্ধতা অতিক্রম করা। বোর্ন শেলের আগে, ইউনিক্স থম্পসন শেল চালু করেছিল। যাইহোক, থম্পসন শেল প্রক্রিয়াকরণ স্ক্রিপ্টে খুব সীমিত ছিল। ব্যবহারকারীরা যথেষ্ট পরিমাণে স্ক্রিপ্ট চালাতে পারছিলেন না। থম্পসন শেলের এই সমস্ত সীমাবদ্ধতা কাটিয়ে উঠতে বোর্ন শেল চালু করা হয়েছিল। এটি বেলস ল্যাবে বিকশিত হয়েছিল। 1989 সালে, ব্রায়ান ফক্স অসংখ্য অন্যান্য বৈশিষ্ট্য যোগ করে বোর্ন শেলের বিপ্লব ঘটিয়েছিল এবং এটিকে বোর্ন এগেইন শেল (BASH) নামে নামকরণ করেছিল।

শেলের নাম বছর প্ল্যাটফর্ম বর্ণনা BASH এর সাথে তুলনা
থম্পসন শেল 1971 ইউনিক্স স্ক্রিপ্টের অটোমেশন সীমিত ছিল। ব্যবহারকারী কেবল অল্প পরিমাণে স্ক্রিপ্টিং করতে পারেন। বাশ থম্পসন শেলের সীমাবদ্ধতা অতিক্রম করে এবং ব্যবহারকারী বড় স্ক্রিপ্ট লিখতে পারে।
বোর্ন শেল 1977 ইউনিক্স এটি আমাদের প্রচুর পরিমাণে স্ক্রিপ্ট লিখতে এবং চালানোর অনুমতি দেয়। বোর্ন শেল কমান্ড এডিটর এবং অধিক সংখ্যক শর্টকাট সুবিধা প্রদান করে না। BASH কমান্ড এডিটর সহ নকশায় উন্নতি প্রদান করে।
POSIX শেল 1992 পজিক্স POSIX শেল বহনযোগ্য। এটি অনেক শর্টকাট এবং কাজের নিয়ন্ত্রণ প্রদান করে। BASH সেই কাজগুলি সম্পাদনের জন্য জনপ্রিয়, যার বহনযোগ্যতা প্রয়োজন হয় না।
জেড শেল 1990 ইউনিক্স জেড শেল বৈশিষ্ট্য সমৃদ্ধ। এটি একটি খুব শক্তিশালী শেল এবং কমান্ড অটো-কমপ্লিটেশন, বানান সংশোধন এবং অটোফিলের মতো বৈশিষ্ট্য সরবরাহ করে। BASH- এ Z শেল দ্বারা প্রদত্ত কিছু বৈশিষ্ট্যের অভাব রয়েছে।

উপসংহার

BASH একটি খুব শক্তিশালী হাতিয়ার যা আমাদের কমান্ড এবং স্ক্রিপ্ট চালাতে দেয়। একটি BASH স্ক্রিপ্ট আমাদের দৈনন্দিন কাজ এবং আদেশগুলি স্বয়ংক্রিয় করতে দেয়। একটি BASH স্ক্রিপ্ট একাধিক কমান্ডের সমন্বয়। BASH ফাইলটি .sh এক্সটেনশনের সাথে শেষ হয়। BASH স্ক্রিপ্ট চালানোর আগে, আমাদের ফাইল অনুমতিগুলি আপডেট করতে হবে এবং আমাদের .sh ফাইলে এক্সিকিউটেবল অনুমতি প্রদান করতে হবে। এই নিবন্ধটি সহজ উদাহরণ এবং গুরুত্বপূর্ণ পাঠের সাহায্যে BASH এবং BASH স্ক্রিপ্টিং ব্যাখ্যা করে। তাছাড়া, এটি BASH এর ইতিহাস বর্ণনা করে এবং এর বৈশিষ্ট্যগুলিকে অন্যান্য বিভিন্ন শক্তিশালী শেলের সাথে তুলনা করে।