এই নিবন্ধটি আপনাকে দেখাবে কিভাবে একটি 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 O f F 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 এর সাথে একটি প্রদত্ত ডেটাবেসের সাথে সংযোগ করতে কমান্ড ব্যবহার করা হয়৷
সংযোগটি প্রস্তুত হয়ে গেলে দুটি অনুক্রমিক কমান্ড জারি করা হবে – একটি থেকে টেবিল দেখান এবং একটি নির্বাচন করুন পোস্ট থেকে সমস্ত রেকর্ড টেবিল।