আপনি যখন Bash দিয়ে স্ক্রিপ্ট করছেন, কখনও কখনও আপনাকে একটি ফাইল থেকে ডেটা পড়তে বা ডেটা লিখতে হবে। কখনও কখনও একটি ফাইলে কনফিগারেশন বিকল্প থাকতে পারে, এবং অন্য সময় ফাইলটি আপনার ব্যবহারকারী আপনার অ্যাপ্লিকেশন দিয়ে তৈরি করা ডেটা। প্রতিটি ভাষা এই কাজটি একটু ভিন্নভাবে পরিচালনা করে, এবং এই নিবন্ধটি দেখায় কিভাবে Bash এবং অন্যান্য POSIX শেলগুলির সাথে ডেটা ফাইলগুলি পরিচালনা করতে হয়৷
ব্যাশ ইনস্টল করুন
৷
আপনি যদি লিনাক্সে থাকেন তবে সম্ভবত আপনার ইতিমধ্যেই ব্যাশ রয়েছে। যদি না হয়, আপনি এটি আপনার সফ্টওয়্যার সংগ্রহস্থলে খুঁজে পেতে পারেন৷
৷macOS-এ, আপনি যে macOS সংস্করণটি চালাচ্ছেন তার উপর নির্ভর করে আপনি ডিফল্ট টার্মিনাল, Bash বা Zsh ব্যবহার করতে পারেন৷
Windows-এ, Bash-এর অভিজ্ঞতা নেওয়ার বিভিন্ন উপায় রয়েছে, যার মধ্যে Microsoft-এর আনুষ্ঠানিকভাবে সমর্থিত Windows Subsystem for Linux (WSL)।
ব্যাশ ইনস্টল হয়ে গেলে, আপনার প্রিয় পাঠ্য সম্পাদক খুলুন এবং কোড করার জন্য প্রস্তুত হন৷
ব্যাশ দিয়ে একটি ফাইল পড়া
একটি শেল হওয়ার পাশাপাশি, ব্যাশ একটি স্ক্রিপ্টিং ভাষা। ব্যাশ থেকে ডেটা পড়ার বিভিন্ন উপায় রয়েছে:আপনি এক ধরণের ডেটা স্ট্রিম তৈরি করতে পারেন এবং আউটপুট পার্স করতে পারেন, অথবা আপনি মেমরিতে ডেটা লোড করতে পারেন। উভয়ই তথ্য গ্রহণের বৈধ পদ্ধতি, তবে প্রতিটিরই বেশ নির্দিষ্ট ব্যবহারের ক্ষেত্রে রয়েছে৷
ব্যাশে একটি ফাইল উৎস করুন
আপনি যখন Bash-এ একটি ফাইলকে "উৎস" করেন, তখন আপনি Bash-কে একটি ফাইলের বিষয়বস্তু পড়ার জন্য এই প্রত্যাশায় বাধ্য করেন যে এতে বৈধ ডেটা রয়েছে যা Bash তার প্রতিষ্ঠিত ডেটা মডেলের সাথে মানানসই হতে পারে। আপনি কোনও পুরানো ফাইল থেকে ডেটা উত্স করবেন না, তবে আপনি কনফিগারেশন ফাইল এবং ফাংশনগুলি পড়তে এই পদ্ধতিটি ব্যবহার করতে পারেন৷
উদাহরণস্বরূপ, example.sh
নামে একটি ফাইল তৈরি করুন এবং এটিতে এটি লিখুন:
#!/bin/sh
greet opensource.com
echo "The meaning of life is $var"
এটি ব্যর্থ দেখতে কোডটি চালান:
$ bash ./example.sh
./example.sh: line 3: greet: command not found
The meaning of life is
Bash-এর greet
নামে কোনো কমান্ড নেই , তাই এটি সেই লাইনটি কার্যকর করতে পারেনি, এবং এটিতে var
নামে একটি ভেরিয়েবলের কোনো রেকর্ড নেই তাই জীবনের কোন অর্থ জানা নেই। এই সমস্যার সমাধান করতে, include.sh
নামে একটি ফাইল তৈরি করুন৷ :
greet() {
echo "Hello ${1}"
}
var=42
আপনার example.sh
সংশোধন করুন একটি source
অন্তর্ভুক্ত করার জন্য স্ক্রিপ্ট কমান্ড:
#!/bin/sh
source include.sh
greet opensource.com
echo "The meaning of life is $var"
এটি কাজ করে দেখতে স্ক্রিপ্টটি চালান:
$ bash ./example.sh
Hello opensource.com
The meaning of life is 42
greet
কমান্ডটি আপনার শেল পরিবেশে আনা হয়েছে কারণ এটি include.sh
-এ সংজ্ঞায়িত করা হয়েছে ফাইল, এবং এটি আর্গুমেন্টকেও স্বীকৃতি দেয় (opensource.com
এই উদাহরণে)। পরিবর্তনশীল var
সেট করা এবং আমদানি করা হয়।
ব্যাশে একটি ফাইল পার্স করুন
Bash "এ" ডেটা পাওয়ার অন্য উপায় হল এটিকে ডেটা স্ট্রিম হিসাবে পার্স করা। এটি করার অনেক উপায় আছে। আপনি grep
ব্যবহার করতে পারেন অথবা cat
অথবা কোনো কমান্ড যা ডেটা নেয় এবং এটিকে stdout এ পাইপ করে। বিকল্পভাবে, আপনি ব্যাশ-এ যা তৈরি করা আছে তা ব্যবহার করতে পারেন:রিডাইরেক্ট। নিজে থেকে পুনঃনির্দেশ খুব দরকারী নয়, তাই এই উদাহরণে, আমি বিল্ট-ইন echo
ব্যবহার করি পুনঃনির্দেশের ফলাফল প্রিন্ট করার জন্য কমান্ড:
#!/bin/sh
echo $( < include.sh )
এটিকে stream.sh
হিসাবে সংরক্ষণ করুন এবং ফলাফল দেখতে এটি চালান:
$ bash ./stream.sh
greet() { echo "Hello ${1}" } var=42
$
include.sh
-এর প্রতিটি লাইনের জন্য ফাইল, ব্যাশ আপনার টার্মিনালে লাইনটি মুদ্রণ করে (বা প্রতিধ্বনি)। এটিকে প্রথমে একটি উপযুক্ত পার্সারে পাইপ করা ব্যাশের সাথে ডেটা পড়ার একটি সাধারণ উপায়। উদাহরণস্বরূপ, একটি মুহুর্তের জন্য ধরে নিন যে include.sh
সমান (=
) দ্বারা পৃথক করা কী এবং মান জোড়া সহ একটি কনফিগারেশন ফাইল ) চিহ্ন. আপনি awk
দিয়ে মান পেতে পারেন অথবা এমনকি cut
:
#!/bin/sh
myVar=`grep var include.sh | cut -d'=' -f2`
echo $myVar
স্ক্রিপ্ট চালানোর চেষ্টা করুন:
$ bash ./stream.sh
42
ব্যাশ দিয়ে একটি ফাইলে ডেটা লেখা
আপনি আপনার অ্যাপ্লিকেশনের সাথে আপনার ব্যবহারকারীর তৈরি করা ডেটা সংরক্ষণ করছেন বা ব্যবহারকারী একটি অ্যাপ্লিকেশনে কী করেছে সে সম্পর্কে মেটাডেটা (উদাহরণস্বরূপ, গেম সংরক্ষণ করা বা সাম্প্রতিক গানগুলি) সংরক্ষণ করা হোক না কেন, পরবর্তী ব্যবহারের জন্য ডেটা সংরক্ষণ করার অনেকগুলি ভাল কারণ রয়েছে৷ ব্যাশে, আপনি সাধারণ শেল পুনর্নির্দেশ ব্যবহার করে ফাইলগুলিতে ডেটা সংরক্ষণ করতে পারেন।
উদাহরণস্বরূপ, আউটপুট ধারণকারী একটি নতুন ফাইল তৈরি করতে, একটি একক পুনঃনির্দেশ টোকেন ব্যবহার করুন:
#!/bin/sh
TZ=UTC
date > date.txt
স্ক্রিপ্টটি কয়েকবার চালান:
$ bash ./date.sh
$ cat date.txt
Tue Feb 23 22:25:06 UTC 2021
$ bash ./date.sh
$ cat date.txt
Tue Feb 23 22:25:12 UTC 2021
ডেটা যুক্ত করতে, ডাবল রিডাইরেক্ট টোকেন ব্যবহার করুন:
#!/bin/sh
TZ=UTC
date >> date.txt
স্ক্রিপ্টটি কয়েকবার চালান:
$ bash ./date.sh
$ bash ./date.sh
$ bash ./date.sh
$ cat date.txt
Tue Feb 23 22:25:12 UTC 2021
Tue Feb 23 22:25:17 UTC 2021
Tue Feb 23 22:25:19 UTC 2021
Tue Feb 23 22:25:22 UTC 2021
সহজ প্রোগ্রামিংয়ের জন্য ব্যাশ
ব্যাশ সহজে শিখতে পারছে কারণ, মাত্র কয়েকটি মৌলিক ধারণার সাহায্যে আপনি জটিল প্রোগ্রাম তৈরি করতে পারেন। সম্পূর্ণ ডকুমেন্টেশনের জন্য, GNU.org এ চমৎকার ব্যাশ ডকুমেন্টেশন দেখুন।