কম্পিউটার

ব্যাশের সাথে কনফিগার ফাইল পার্স করা হচ্ছে

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

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

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

সাধারণ উপায়

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

var1=LinuxGeek46
var2=Opensource.com

প্রোগ্রামটি সেই ফাইলটি পড়বে, প্রতিটি লাইন পার্স করবে এবং প্রতিটি ভেরিয়েবলে মান সেট করবে।

সোর্সিং

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

যথারীতি, ব্যাখ্যা করার চেয়ে প্রদর্শন করা সহজ।

প্রথমে একটি ~/bin তৈরি করুন ডিরেক্টরি (যদি এটি ইতিমধ্যে বিদ্যমান না থাকে), এবং এটিকে বর্তমান কার্যকারী ডিরেক্টরি (PWD) করুন। লিনাক্স ফাইল সিস্টেম হায়ারার্কিক্যাল স্ট্যান্ডার্ড ~/bin সংজ্ঞায়িত করে ব্যবহারকারীদের তাদের এক্সিকিউটেবল ফাইল সঞ্চয় করার জন্য উপযুক্ত স্থান হিসাবে।

এই ডিরেক্টরিতে একটি নতুন ফাইল তৈরি করুন। এটিকে main নাম দিন এবং এটি সম্পাদনযোগ্য করুন:

[dboth@david bin]$ touch main
[dboth@david bin]$ chmod +x main
[dboth@david bin]$

এই এক্সিকিউটেবল ফাইলে নিম্নলিখিত বিষয়বস্তু যোগ করুন:

#!/bin/bash
Name="LinuxGeek"
echo $Name

এবং এই ব্যাশ প্রোগ্রামটি চালান:

[dboth@david bin]$ ./main
LinuxGeek
[dboth@david bin]$

একটি নতুন ফাইল তৈরি করুন এবং এটিকে কল করুন ~/bin/data . এই ফাইলটি এক্সিকিউটেবল হওয়ার দরকার নেই। এতে নিম্নলিখিত তথ্য যোগ করুন:

# Sourced code and variables
echo "This is the sourced code from the data file."
FirstName="David"
LastName="Both"

main এ তিনটি লাইন যোগ করুন প্রোগ্রাম যাতে এটি এই মত দেখায়:

#!/bin/bash
Name="LinuxGeek"
echo $Name
source ~/bin/data
echo "First name: $FirstName"
echo "LastName: $LastName"

প্রোগ্রাম পুনরায় চালান:

[dboth@david bin]$ ./main
LinuxGeek
This is the sourced code from the data file.
First name: David
LastName: Both
[dboth@david bin]$

সোর্সিং সম্পর্কে জানার জন্য আরও একটি দুর্দান্ত জিনিস রয়েছে। আপনি একটি একক বিন্দু (.) ব্যবহার করতে পারেন ) source-এর শর্টকাট হিসাবে আদেশ main পরিবর্তন করুন . প্রতিস্থাপন করার জন্য ফাইল source এর জায়গায় :

#!/bin/bash
Name="LinuxGeek"
echo $Name
. ~/bin/data
echo "First name: $FirstName"
echo "LastName: $LastName"

এবং আবার প্রোগ্রাম চালান। ফলাফল আগের রানের মতই হওয়া উচিত।

স্টার্টিং ব্যাশ

প্রতিটি লিনাক্স হোস্ট যেগুলি ব্যাশ ব্যবহার করে—যা প্রায় সবগুলিই কারণ Bash হল সমস্ত ডিস্ট্রিবিউশনের জন্য ডিফল্ট শেল-এর মধ্যে কিছু চমৎকার, বিল্ট-ইন সোর্সিংয়ের উদাহরণ রয়েছে।

যখনই একটি ব্যাশ শেল শুরু হয়, তার পরিবেশ কনফিগার করা আবশ্যক যাতে এটি ব্যবহারযোগ্য হয়। পাঁচটি প্রধান ফাইল এবং একটি ডিরেক্টরি রয়েছে যা ব্যাশ পরিবেশ কনফিগার করতে ব্যবহৃত হয়। সেগুলি তাদের প্রধান ফাংশন সহ এখানে তালিকাভুক্ত করা হয়েছে:

  • /etc/profile :সিস্টেম-ওয়াইড এনভায়রনমেন্ট এবং স্টার্টআপ প্রোগ্রাম
  • /etc/bashrc :সিস্টেম-ওয়াইড ফাংশন এবং উপনাম
  • /etc/profile.d/ :ডিরেক্টরি যেটিতে বিভিন্ন কমান্ড-লাইন টুল যেমন vim কনফিগার করার জন্য সিস্টেম-ওয়াইড স্ক্রিপ্ট রয়েছে এবং mc এবং যে কোনো কাস্টম কনফিগারেশন স্ক্রিপ্ট একটি sysadmin তৈরি করে
  • ~/.bash_profile :ব্যবহারকারী-নির্দিষ্ট পরিবেশ এবং স্টার্টআপ প্রোগ্রাম
  • ~/.bashrc :ব্যবহারকারী-নির্দিষ্ট উপনাম এবং ফাংশন
  • ~/.bash_logout :ব্যবহারকারী লগ আউট করার সময় কার্যকর করার জন্য ব্যবহারকারী-নির্দিষ্ট কমান্ড

এই ফাইলগুলির মাধ্যমে এক্সিকিউশন সিকোয়েন্স ট্রেস করার চেষ্টা করুন এবং লগ-ইন ব্যাশ ইনিশিয়ালাইজেশন বনাম নন-লগইন ব্যাশ ইনিশিয়ালাইজেশনের জন্য এটি কোন সিকোয়েন্স ব্যবহার করে তা নির্ধারণ করুন। আমি আমার লিনাক্স প্রশিক্ষণ সিরিজের ভলিউম 1 এর 17 অধ্যায়ে এটি করেছি, লিনাক্স ব্যবহার এবং পরিচালনা করা:জিরো থেকে সিসাডমিন .

আমি আপনাকে একটি ইঙ্গিত দেব. এটা সব শুরু হয় ~/.bashrc দিয়ে স্ক্রিপ্ট।

উপসংহার

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


  1. লিনাক্স দিয়ে কিভাবে ISO ফাইল এক্সট্র্যাক্ট করবেন

  2. উইন্ডোজ 10 এ একটি প্রোগ্রামের সাথে ফাইল টাইপ সংযুক্ত করা যাবে না

  3. AirDroid ফাইল ট্রান্সফারের মাধ্যমে ফাইল স্থানান্তর করুন

  4. ওয়াইফাই ফাইল ট্রান্সফারের মাধ্যমে অ্যান্ড্রয়েড এবং পিসির মধ্যে ফাইল স্থানান্তর করুন