কম্পিউটার টিউটোরিয়াল

ব্যাশে ফাইল পড়া ও লেখা: প্রোফেশনালের মত ফাইল হ্যান্ডলিং

আপনি যখন ব্যাশ দিয়ে স্ক্রিপ্টিং করেন, কখনো কখনো আপনাকে একটি ফাইল থেকে ডেটা পড়তে হয় বা একটি ফাইলে ডেটা লিখতে হয়। কখনো একটি ফাইলে কনফিগারেশন অপশন থাকতে পারে, আর কখনো ফাইলটি হলো আপনার অ্যাপ্লিকেশন দিয়ে আপনার ব্যবহারকারী যা ডেটা তৈরি করছে। প্রতিটি ভাষা এই টাস্কটিকে কিছুটা আলাদাভাবে হ্যান্ডেল করে, এবং এই আর্টিকেলটি ব্যাশ এবং অন্যান্য POSIX শেল দিয়ে ডেটা ফাইল হ্যান্ডেল করার পদ্ধতি প্রদর্শন করে।

ব্যাশ ইনস্টল করুন

আপনি যদি লিনাক্সে হন, সম্ভবত আপনার কাছে ইতিমধ্যে ব্যাশ আছে। না হলে, আপনার সফটওয়্যার রিপোজিটরিতে পাবেন।

macOS-এ, আপনি ডিফল্ট টার্মিনাল ব্যবহার করতে পারেন, হয় ব্যাশ বা Zsh, আপনি কোন macOS ভার্সন রান করছেন সেটির উপর নির্ভর করে।

উইন্ডোজে, ব্যাশ অনুভব করার nhiều উপায় আছে, যাতে মাইক্রোসফটের অফিশিয়ালি সাপোর্টেড উইন্ডোজ সাবসিস্টেম ফর লিনাক্স (WSL)।

একবার আপনার কাছে ব্যাশ ইনস্টল হলে, আপনার প্রিয় টেক্সট এডিটর খুলুন এবং কোডিংয়ের জন্য প্রস্তুত হোন।

ব্যাশ দিয়ে একটি ফাইল পড়া

একটি শেল হওয়ার পাশাপাশি, ব্যাশ একটি স্ক্রিপ্টিং ভাষা। ব্যাশ থেকে ডেটা পড়ার অনেক উপায় আছে: আপনি একটি সর্ট অফ ডেটা স্ট্রিম তৈরি করতে পারেন এবং আউটপুট পার্স করতে পারেন, অথবা আপনি মেমরিতে ডেটা লোড করতে পারেন। দুটোই ইনফরমেশন ইনজেস্ট করার বৈধ মেথড, কিন্তু প্রতিটির প্রায় নির্দিষ্ট ইউজ কেস।

ব্যাশে একটি ফাইল সোর্স করা

আপনি যখন একটি ফাইল ব্যাশে "সোর্স" করেন, আপনি ব্যাশকে ফাইলের কন্টেন্ট পড়তে বাধ্য করেন যেন সেটিতে বৈধ ডেটা থাকে যা ব্যাশ তার প্রতিষ্ঠিত ডেটা মডেলে ফিট করতে পারে। আপনি যেকোনো পুরনো ফাইল থেকে ডেটা সোর্স করবেন না, কিন্তু আপনি এই মেথডটি কনফিগারেশন ফাইল এবং ফাংশন পড়তে ব্যবহার করতে পারেন।

উদাহরণস্বরূপ, 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

ব্যাশে 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 সেট এবং ইম্পোর্ট করা হয়েছে।

ব্যাশে একটি ফাইল পার্স করা

"ব্যাশে" ডেটা "আন্য" করার অন্য উপায় হলো এটিকে একটি ডেটা স্ট্রিম হিসেবে পার্স করা। এটা করার অনেক উপায় আছে। আপনি 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

ব্যাশ দিয়ে একটি ফাইলে ডেটা লেখা

আপনার ব্যবহারকারী আপনার অ্যাপ্লিকেশন দিয়ে যা ডেটা তৈরি করেছে সেটি সংরক্ষণ করা হোক বা শুধু মেটাডেটা আপনার অ্যাপ্লিকেশনে ব্যবহারকারী কী করেছি সেটি সম্পর্কে (উদাহরণস্বরূপ, গেম সেভ বা gầnে খেলা গান), অনেক ভালো কারণ আছে ডেটা পরবর্তী ব্যবহারের জন্য সংরক্ষণ করার। ব্যাশে, আপনি কমন শেল রিডাইরেকশন ব্যবহার করে ফাইলে ডেটা সেভ করতে পারেন।

উদাহরণস্বরূপ, আউটপুট ধারণকারী একটি নতুন ফাইল তৈরি করতে, একটি সিঙ্গল রিডাইরেক্ট টোকেন ব্যবহার করুন:

#!/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-এ আন্দোলনমূলক ব্যাশ ডকুমেন্টেশন রেফার করুন।

  1. iOS-এ ফাইল তৈরি, ডেটা লেখা এবং পড়ার পদ্ধতি

  2. Filebeat এবং Elasticsearch ইনজেস্ট পাইপলাইন দিয়ে CSV ফাইল পার্স করা

  3. রুবিতে ফাইল পড়া এবং লেখা: একটি স্টেপ-বাই-স্টেপ গাইড

  4. উইন্ডোজ ১০-এ File History দিয়ে ফাইল সेफগার্ড ও রিস্টোর: সম্পূর্ণ গাইড