কম্পিউটার

ব্যাশ এবং লিনাক্স শেলে HEREDOC (এখানে নথিপত্র) - টিউটোরিয়াল

এই নিবন্ধটি আপনাকে দেখাবে কিভাবে একটি Heredoc (এখানে ডকুমেন্ট ব্যবহার করতে হয় বহু-লাইন পাঠ্যের সাথে কাজ করার জন্য ব্যাশ/শেল স্ক্রিপ্টে।

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

এটি একটি ইন্টারেক্টিভ প্রোগ্রামে একাধিক কমান্ডও পাঠাতে পারে - এটি পরে উদাহরণগুলিতে দেখানো হবে।

এই নিবন্ধের উদাহরণগুলি Bash এবং Zsh শেল উভয় ক্ষেত্রেই কাজ করবে।

স্ট্যান্ডার্ড ইনপুট, পাইপিং, এবং পুনঃনির্দেশ

হেরেডক সাধারণত স্ট্যান্ডার্ড ইনপুট/আউটপুট এবং পুনঃনির্দেশ/পাইপিং-এর সাথে ব্যবহার করা হয় যাতে প্রসেসিং, ফরম্যাটিং বা প্রদর্শনের জন্য মাল্টিলাইন টেক্সট পাঠানো হয়। ধারণাটি ব্যাখ্যা করার জন্য এই বিষয়টির সত্যিই একটি নিবন্ধ প্রয়োজন, তাই এটি এখানে:

লিনাক্স/ব্যাশে stdin, stdout, stderr, উদাহরণ সহ পুনঃনির্দেশ করুন

নিচের উদাহরণগুলি উপরোক্ত নিবন্ধে কভার করা ধারণা এবং পদ্ধতিগুলিকে কয়েকটি পয়েন্টে ব্যবহার করবে৷

Bash/Zsh Heredoc সিনট্যাক্স

একটি Heredoc শুরু করতে , আপনি কেবল << ব্যবহার করেন আদেশ এটি উপরে বর্ণিত ইনপুট/আউটপুট পুনঃনির্দেশের একটি ফর্ম।

Heredoc ব্যবহার করার জন্য সিনট্যাক্স নিম্নরূপ:

COMMAND <<LIMITSTRING
text line 1
text line 2
...
LIMITSTRING

মনে রাখবেন:

  • COMMAND৷ যেকোন লিনাক্স কমান্ড বা স্ক্রিপ্ট হতে পারে – heredoc এ থাকা পাঠ্যের বিষয়বস্তু পুনঃনির্দেশ ব্যবহার করে এটিতে পাঠানো হবে
  • << Heredoc বিবৃতি
      এর শুরুতে সংজ্ঞায়িত করে
    • যদি আপনি বহু-লাইন পাঠ্য ইন্ডেন্ট করতে যাচ্ছেন, ব্যবহার করুন <<- (সংযুক্ত ড্যাশ নোট করুন) পরিবর্তে – এটি প্রতিটি লাইন থেকে লিডিং ট্যাব ছিনিয়ে নেবে
  • LIMITSTRING Heredoc
      -এর জন্য টেক্সট প্রবেশ করা শেষ করতে টাইপ করা আবশ্যক
    • যেহেতু Herdocs মাল্টি-লাইন, ব্যবহারকারী পরবর্তী লাইনে যাওয়ার জন্য ENTER কী টিপে, আপনি নতুন পাঠ্য প্রবেশ করা বন্ধ করতে এন্টার চাপতে পারবেন না।
    • LIMITSTRING , এর উপস্থিতিতে, হেরেডককে বলে যে আপনি পাঠ্য প্রবেশ করা শেষ করেছেন এবং শেষ করতে হবে
    • এটি যেকোন কিছু হতে পারে - নিশ্চিত করুন যে আপনি অক্ষরগুলির একটি সিরিজ ব্যবহার করছেন যেগুলি আপনার পাঠ্যে উপস্থিত হওয়ার প্রয়োজন হবে না যাতে এটি অকালে শেষ না হয়৷
    • একটি সাধারণ অভ্যাস হল পাঠ্য EOF ব্যবহার করা (E-এর জন্য সংক্ষিপ্ত nd OF ile) LIMITSTRING হিসেবে – যতক্ষণ না এই টেক্সটটি হেরেডোকের ভিতরে উপস্থিত হবে না।
  • আপনি যত লাইন চান পাঠ্য রাখতে পারেন

Heredoc উদাহরণ

মাল্টি-লাইন টেক্সট ইনপুট গ্রহণ করা হচ্ছে

এই উদাহরণটি পাঠ্যের একাধিক লাইন গ্রহণ করবে এবং সেগুলিকে বিড়াল-এ পাঠাবে প্রদর্শনের জন্য কমান্ড:

cat <<EOF
This is line 1
This is line 2
EOF

উপরের উদাহরণটি আপনার টার্মিনাল প্রোগ্রামে টাইপ করা উচিত।

ভেরিয়েবল ব্যবহার করা

আপনি আপনার Heredoc এ শেল ভেরিয়েবল ব্যবহার করতে পারেন:

cat <<EOF
This is line 1
This is line 2
Your current directory is $PWD
EOF

উপরে, $PWD ভেরিয়েবলটি Heredoc-এর একটি লাইনে প্রদর্শিত হয় – এই ভেরিয়েবলটি বর্তমান কাজের ডিরেক্টরির মান ধরে রাখে।

Heredoc-এর আউটপুট পুনঃনির্দেশ করা হচ্ছে

স্ট্যান্ডার্ড পুনঃনির্দেশ (প্রবন্ধে আগে দেখুন যদি আপনি এটি কী জানেন না) হেরেডোকের বিষয়বস্তু অন্য প্রোগ্রাম বা ফাইলে COMMAND-এ পাঠানোর পরে পাঠানোর জন্য ব্যবহার করা যেতে পারে:

cat <<EOF > output.txt
This is line 1
This is line 2
Your current directory is $PWD
EOF

উপরে, বিড়াল Heredoc এর বিষয়বস্তু এবং cat এর আউটপুট পড়ে output.txt ফাইলে পুনঃনির্দেশিত এবং লেখা হয় > ব্যবহার করে আদেশ৷

লিপিতে মাল্টি-লাইন টেক্সট সংজ্ঞায়িত করা

আপনি একটি স্ক্রিপ্টে একটি Heredoc ব্যবহার করতে পারেন। যেহেতু একটি শেল স্ক্রিপ্ট শেলটিতে খাওয়ানোর জন্য লাইন-বাই-লাইন কমান্ডের একটি তালিকা, এটি একইভাবে আচরণ করবে।

আপনার স্ক্রিপ্ট কোড ইন্ডেন্ট করতে পেরে ভালো লাগছে – যদি আপনি না চান যে এই ট্যাবগুলি আপনার পাঠ্যে উপস্থিত হোক, আপনি একটি যোগ করতে পারেন (ড্যাশ) প্রতিটি লাইনের শুরু থেকে যেকোনো সাদা স্থান ছিনিয়ে নিতে আপনার Heredoc ঘোষণায়:

#!/bin/bash

if $trueOrFalse; then
    cat <<-EOF > output.txt
    This is line 1
    This is line 2
    Your current directory is $PWD
    EOF
fi

#!/bin/bash

একটি ভেরিয়েবলে একটি Heredoc বরাদ্দ করা

আপনি হেরেডোকের মাল্টি-লাইন টেক্সটকে বিড়াল দিয়ে পড়ার মাধ্যমে একটি স্ক্রিপ্ট ভেরিয়েবলে বরাদ্দ করতে পারেন কমান্ড এবং আউটপুটকে একটি ভেরিয়েবলে বরাদ্দ করা যেমন:

mytext=$(cat <<-EOF 
    This is line 1
    This is line 2
    Your current directory is $PWD
    EOF
)

echo $mytext

একটি ইন্টারেক্টিভ প্রোগ্রামে একাধিক কমান্ড পাঠানো

Herdocs একটি ইন্টারেক্টিভ প্রোগ্রামে পাঠ্যের একাধিক লাইন পাঠাতে পারে। কিছু প্রোগ্রাম, একবার চালু হলে, আপনি আপনার নিজস্ব কমান্ড টাইপ করবেন বলে আশা করেন – তারা প্রক্রিয়াকরণের জন্য পাঠ্য গ্রহণ করতে পারে বা কমান্ড ইস্যু করার জন্য তাদের নিজস্ব শেল প্রদান করতে পারে।

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

mysql -uUSERNAME -pPASSWORD DATABASE <<EOF
SHOW TABLES;
SELECT * FROM posts;
EOF

উপরে, MySQL USERNAME এবং PASSWORD এর সাথে একটি প্রদত্ত ডেটাবেসের সাথে সংযোগ করতে কমান্ড ব্যবহার করা হয়৷

সংযোগটি প্রস্তুত হয়ে গেলে দুটি অনুক্রমিক কমান্ড জারি করা হবে – একটি থেকে টেবিল দেখান এবং একটি নির্বাচন করুন পোস্ট থেকে সমস্ত রেকর্ড টেবিল।


  1. উইন্ডোজ 10 এ কীভাবে লিনাক্স ব্যাশ শেল ইনস্টল করবেন

  2. ব্যাশ ভেরিয়েবল টিউটোরিয়াল – 6 ব্যবহারিক ব্যাশ গ্লোবাল এবং লোকাল ভেরিয়েবল উদাহরণ

  3. 6টি ব্যবহারিক উদাহরণ সহ ব্যাশ শেল ফাংশন টিউটোরিয়াল

  4. 5টি ব্যবহারিক উদাহরণ সহ ব্যাশ স্ক্রিপ্টিং ভূমিকা টিউটোরিয়াল