'এবং' দিয়ে কেন লিনাক্স শেল কমান্ড চালাবেন?


30

আমি রেড হ্যাট লিনাক্স এন্টারপ্রাইজ সংস্করণ 5 ব্যবহার করছি I've আমি লক্ষ্য করেছি লোকেরা মাঝে মধ্যে বেশ কয়েকটি &বিকল্পের সাথে কমান্ড চালাচ্ছে । উদাহরণস্বরূপ, নীচের কমান্ডে দুটি &চিহ্ন রয়েছে are তাদের উদ্দেশ্য কী? এগুলি সর্বদা নোহুপের সাথে একসাথে ব্যবহৃত হয়?

nohup foo.sh <script parameters> >& <log_file_name> &

উত্তর:


15

মার্টিন, অ্যাশ এবং কেভিনের উত্তরগুলি ছাড়াও কখনও কখনও আপনি অ্যাম্পারস্যান্ডটি গাণিতিকভাবে কিছুটা জন্য ব্যবহার করতে পারেন এবং * :

$ echo $(( 11 & 7 ))
3

আপনি যদি বিট অপারেটরগুলির সাথে পরিচিত না হন:

11: 1011
 7: 0111
-------- AND
 3: 0011

প্রতিটি অবস্থানে প্রথম সংখ্যায় একটি বিট থাকে এবং দ্বিতীয় নম্বর থাকে, সেই বিটটি উত্তরে সেট করে।

* কেভিনের উত্তরের বৈশিষ্ট্যটি একটি যৌক্তিক AND হিসাবে উল্লেখ করা হয় ।

অ্যাশের উত্তরটি বিশদভাবে জানাতে, যখন পুনর্নির্দেশে ব্যবহৃত হয় তখন এম্পারস্যান্ড শেলটিকে একটি ফাইল বর্ণনাকারী অনুলিপি করতে বলতে পারে। এই কমান্ডে echo "hello" > outputfile 2>&1অ্যাম্পারস্যান্ড স্ট্যান্ডার্ড আউটপুট (stdout, ফাইল বর্ণনাকারী 1, বাম পাশের জন্য ডিফল্ট >) হিসাবে একই জায়গায় যেতে স্ট্যান্ডার্ড ত্রুটি (stderr, ফাইল বর্ণনাকারী 2) যেতে পারে যে কোনও আউটপুট সৃষ্টি করে । >& outputfileঅপারেটর জন্য সাধারণভাবে সংক্ষেপে হয় > outputfile 2>&1

এছাড়াও, ব্যাশ 4 নতুন, সেখানে ক্লজ জন্য দুটি নতুন terminators হয় caseকমান্ড ;&এবং ;;&যা প্রভাবিত করছে কিনা একটি মামলা যদি তাই হয়, "মধ্য দিয়ে পড়ে" এবং কিনা পরবর্তী পরীক্ষা সঞ্চালিত হয়।


কুল, ডেনিস! ধরুন আমি কোনও মেশিনে ssh টার্মিনাল লগ ব্যবহার করেছি, তারপরে ssh এর টার্মিনালটি কমান্ডটি চালানোর জন্য ব্যবহার করুন (ধরুন একটি দীর্ঘ-রান প্রক্রিয়া), তাহলে আমি যদি টার্মিনাল সেশনটি ছেড়ে দিই, তবে কমান্ডটির দীর্ঘকালীন প্রক্রিয়াটি সঠিকভাবে সমাপ্ত হবে? এবং যদি আমি শেলটি ছেড়ে দেয় এমনকি কমান্ডটি চালিয়ে যেতে চাই, আমি কি নোহপ ব্যবহার করব, বা & (কমান্ডের শেষে) অথবা নোহপ এবং & উভয়ই ব্যবহার করব?
জর্জ 2

1
@ জর্জ 2: না, স্টডআউট এবং স্ট্ডার >& filenameউভয়ই একই ফাইলে আউটপুট করে। আপনি যদি কেবল স্টাডারকে পুনঃনির্দেশ করতে চান (এবং একা একা ছেড়ে যান) তবে আপনি চাইবেন 2> filename। আপনার অন্যান্য প্রশ্নের হিসাবে, সম্ভবত আপনি উভয় nohupএবং ব্যবহার করতে চাই &
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

1
@ জর্জ 2: আপনি যদি কমান্ডটি ব্যাকগ্রাউন্ড না করেন তবে শেল প্রম্পট ফিরে পাবেন না যাতে আপনি কোনও আদেশ logoutবা exitআদেশ জারি করতে পারেন ।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

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

1
@ জর্জ 2: হ্যাঁ "হ্যাঙ্গআপগুলিতে অনাক্রম্যতা" == "প্রক্রিয়া চালিয়ে যান" এবং "নন-টিটি" == "টার্মিনাল কনসোল সেশনটি ছেড়ে দিন"
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছিল।

32

বাশ শেল স্ক্রিপ্টে, অ্যাম্পারস্যান্ড "&" কাঁটাচামচ প্রক্রিয়াগুলির জন্য ব্যবহৃত হয়:

find -name hello &

এটি ফাইন্ড কমান্ডটি কাঁটাচামচ করে পটভূমিতে চালিত করবে (আপনি সর্বদা এটির পিআইডি দ্বারা হত্যা করতে পারবেন)।


ধন্যবাদ মার্টিন, ধরুন আমি কোনও মেশিনে ssh টার্মিনাল লগ ব্যবহার করেছি, তারপর ssh এর টার্মিনালটি কমান্ডটি চালানোর জন্য ব্যবহার করুন (ধরুন একটি দীর্ঘ-রান প্রক্রিয়া), যদি আমি টার্মিনাল অধিবেশনটি ছেড়ে দিই, তবে কমান্ডটির দীর্ঘকালীন প্রক্রিয়াটি সঠিকভাবে সমাপ্ত হবে? ? এবং যদি আমি ssh টার্মিনালটি ব্যবহার করে & ssh টার্মিনাল ব্যবহার করে কমান্ডটি চালিত করি, এমনকি যদি আমি টার্মিনালটি ত্যাগ করি, কমান্ডটির দীর্ঘ-চালিত প্রক্রিয়া এখনও চলছে, তাই না?
জর্জ 2

1
এটা সঠিক জর্জ। পটভূমি প্রক্রিয়াগুলি প্রস্থান করা অবধি চালিত হওয়া উচিত বা আপনি তাদের হত্যা না করা পর্যন্ত। যাইহোক, এটি ইতিমধ্যে চিহ্নিত করা হয়েছে, ব্যবহারকারী লগ অফ করার পরে আপনার প্রক্রিয়াটি মরে যাওয়ার জন্য এড়ানোর জন্য নোহুপ প্রয়োজন।
মার্টিন মার্কনকিনি

ধন্যবাদ মার্টিন! আমি জানতে চাই যে কেন আমাদের & এবং nohup উভয়ই ব্যবহার করতে হবে এবং টার্মিনাল কনসোলটি ছেড়ে দিলেও আমাদের কমান্ডটি চালিয়ে যাওয়ার লক্ষ্য অর্জনে তাদের স্বতন্ত্র ফাংশনগুলি কী কী? আমি নোহাপের জন্য ম্যান পেজটি পড়েছি এবং এটিতে "হ্যাঙ্গআপগুলিতে একটি কমান্ড ইমিউন চালানো উচিত, একটি নন-টিটি আউটপুট সহ" হ্যাংআপগুলির প্রতিরোধ ক্ষমতা হ'ল আপনি কী বোঝাতে চেয়েছেন তা ছাড়ার দ্বারা প্রভাবিত না করে কমান্ড চালিয়ে যেতে হবে কিনা তা নিয়ে আমি বিভ্রান্ত টার্মিনাল কনসোল? যদি তা হয় তবে আমি মনে করি নোহুপ ব্যবহার করা যথেষ্ট, এবং ব্যবহার করার প্রয়োজন নেই। কোন মন্তব্য?
জর্জ 2

1
আপনাকে উভয়ই ব্যবহার করতে হবে, যদি আপনি & ব্যবহার না করেন তবে টার্মিনাল আপনাকে অন্য কোনও কমান্ড প্রবেশ করতে দেয় না। এটি দেখার জন্য আপনার পক্ষে সর্বোত্তম উপায়, কেবল এটি চেষ্টা করা। একটি ভাল উদাহরণ একটি কমান্ড যা কিছু সময় নেয় যেমন একটি সন্ধান: সন্ধানের নাম কিছু নাম /> somefile.txt নোহুপ দিয়ে চেষ্টা করুন এবং & এবং পার্থক্যগুলি দেখুন।
মার্টিন মার্কনকিনি


26

'এবং' দিয়ে কেন লিনাক্স শেল কমান্ড চালাবেন?

আপনার প্রম্পটটি তাত্ক্ষণিকভাবে ফিরে পেতে এবং পটভূমিতে প্রক্রিয়াটি চালাতে।

তাদের কাজ কি?

নোহপ ব্যাকগ্রাউন্ড প্রক্রিয়াটি ব্যবহারকারী লগ আউট করার পরেও (বা প্রারম্ভিক শেলটি প্রস্থান করে) চালিয়ে যেতে দেয়।

> & লগ ফাইলে স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি উভয়ই পুনর্নির্দেশ করে।

& আপনাকে তত্ক্ষণাত আপনার প্রম্পট ফিরিয়ে দিয়ে পটভূমিতে পুরো জিনিসটি চালায়।

ব্যাখ্যা:

প্রতিটি লিনাক্স প্রক্রিয়া তিনটি আই / ও চ্যানেল খোলে, একটি ইনপুট "স্টিডিন", একটি স্ট্যান্ডার্ড আউটপুট "স্ট্ডআউট" এবং একটি স্ট্যান্ডার্ড ত্রুটি আউটপুট "স্টার্ডার"। এগুলি বাইনারি হিসাবে ব্যবহার করা যেতে পারে তবে এগুলি traditionতিহ্যগতভাবে পাঠ্য। যখন বেশিরভাগ প্রোগ্রাম স্ট্যান্ডিনটি বন্ধ দেখতে পায় তখন তারা প্রস্থান করে (এটি প্রোগ্রামার দ্বারা পরিবর্তন করা যেতে পারে)।

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

সুতরাং, নোহুপ যা করে তা হ'ল সন্তানের প্রক্রিয়াটিকে পৃথক আই / ও পরিবেশ দেওয়া হয়, পিতামাতার শেলের সাথে বাঁধা না থাকা কোনও কিছুর জন্য ইনগুলি এবং আউটসগুলি বেঁধে রাখা এবং সিআইপিএইচপি সংকেত থেকে শিশুটিকে রক্ষা করা। ব্যবহারকারীর সংযোগ বিচ্ছিন্ন হয়ে গেলে, আপনি আর (প্রসেস 1) এর মালিকানাধীন নোহপ ব্যাকগ্রাউন্ড প্রক্রিয়াটি দেখতে পাবেন, ব্যবহারকারীর শেল নয়।

তবে nohupপ্রক্রিয়াটি অগ্রভাগে চালিত হলে পুরোপুরি কাজটি করতে পারে না, সুতরাং &পটভূমিতে প্রোগ্রামটি চালাতে ব্যবহৃত হয়, যেখানে এটি কোনও ব্যবহারকারীকে লগ ইন করা বা না করে আনন্দের সাথে চালিয়ে যেতে পারে।


ধরুন আমি কোনও মেশিনে ssh টার্মিনাল লগ ব্যবহার করেছি, তারপরে ssh এর টার্মিনালটি কমান্ডটি চালানোর জন্য ব্যবহার করুন (ধরুন একটি দীর্ঘ-রান প্রক্রিয়া), তাহলে আমি যদি টার্মিনাল সেশনটি ছেড়ে দিই, তবে কমান্ডটির দীর্ঘকালীন প্রক্রিয়াটি সঠিকভাবে সমাপ্ত হবে? এবং যদি আমি শেলটি ছেড়ে দেয় এমনকি কমান্ডটি চালিয়ে যেতে চাই, আমি কি নোহপ ব্যবহার করব, বা & (কমান্ডের শেষে) অথবা নোহপ এবং & উভয়ই ব্যবহার করব?
জর্জ 2

1
সংশোধন করুন, এসএসএইচ সংযোগ বিচ্ছিন্ন হওয়ার পরে প্রক্রিয়াটি চালিয়ে যাওয়ার জন্য নোহপ এবং & এ উভয়ই ব্যবহার করুন।
কুমারশ

ধন্যবাদ কুমারশ! আমি জানতে চাই যে কেন আমাদের & এবং nohup উভয়ই ব্যবহার করতে হবে এবং টার্মিনাল কনসোলটি ছেড়ে দিলেও আমাদের কমান্ডটি চালিয়ে যাওয়ার লক্ষ্য অর্জনে তাদের স্বতন্ত্র ফাংশনগুলি কী কী? আমি নোহাপের জন্য ম্যান পেজটি পড়েছি এবং এটিতে "হ্যাঙ্গআপগুলিতে একটি কমান্ড ইমিউন চালানো উচিত, একটি নন-টিটি আউটপুট সহ" হ্যাংআপগুলির প্রতিরোধ ক্ষমতা হ'ল আপনি কী বোঝাতে চেয়েছেন তা ছাড়ার দ্বারা প্রভাবিত না করে কমান্ড চালিয়ে যেতে হবে কিনা তা নিয়ে আমি বিভ্রান্ত টার্মিনাল কনসোল? যদি তা হয় তবে আমি মনে করি নোহুপ ব্যবহার করা যথেষ্ট, এবং ব্যবহার করার প্রয়োজন নেই। কোন মন্তব্য?
জর্জ 2

1
আমি আমার উত্তর সম্পাদনা করব।
কুমারশ

13

@ মার্টিনের উত্তর ছাড়াও: অ্যাম্পারস্যান্ডের অন্য ব্যবহার ( >&উপরে হিসাবে) উভয়ই stdoutএবং ক্যাপচার করা stderr। সাধারণত, আপনি যদি কেবল '>' দিয়ে কোনও ফাইলে আউটপুট পুনর্নির্দেশ করেন তবে আপনি কেবলমাত্র stdoutকোনও ত্রুটি মিস করে আউটপুট পাবেন would


1. ধন্যবাদ অ্যাশ, আমি আপনার সাথে এটি নিশ্চিত করতে চাই যে "> & <লগ ফাইলের নাম>", সমস্ত স্টাডার এবং স্টাডআউট লগ ফাইলটিতে ফেলে দেবে, সঠিক? ২. এবং "> <লগ ফাইলের নাম>" ব্যবহার করে সমস্ত স্টডআউট লগ ফাইলে ডাম্প হবে, তাই না?
জর্জ 2

1
@ জর্জ: হ্যাঁ, এটা ঠিক।
অ্যাশ

থ্যাঙ্কস অ্যাশ! আমি জানতে চাই যে কেন আমাদের & এবং nohup উভয়ই ব্যবহার করতে হবে এবং টার্মিনাল কনসোলটি ছেড়ে দিলেও আমাদের কমান্ডটি চালিয়ে যাওয়ার লক্ষ্য অর্জনে তাদের স্বতন্ত্র ফাংশনগুলি কী কী? আমি নোহাপের জন্য ম্যান পেজটি পড়েছি এবং এটিতে "হ্যাঙ্গআপগুলিতে একটি কমান্ড ইমিউন চালানো উচিত, একটি নন-টিটি আউটপুট সহ" হ্যাংআপগুলির প্রতিরোধ ক্ষমতা হ'ল আপনি কী বোঝাতে চেয়েছেন তা ছাড়ার দ্বারা প্রভাবিত না করে কমান্ড চালিয়ে যেতে হবে কিনা তা নিয়ে আমি বিভ্রান্ত টার্মিনাল কনসোল? যদি তা হয় তবে আমি মনে করি নোহুপ ব্যবহার করা যথেষ্ট, এবং ব্যবহার করার প্রয়োজন নেই। কোন মন্তব্য?
জর্জ 2

4

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

[kevin@box ~]$ ls file && echo removing file && rm file
ls: file: No such file or directory
[kevin@box ~]$ touch file
[kevin@box ~]$ ls file && echo removing file && rm file
file
removing file
[kevin@box ~]$

কুল, কেভিন! ধরুন আমি কোনও মেশিনে ssh টার্মিনাল লগ ব্যবহার করেছি, তারপরে ssh এর টার্মিনালটি কমান্ডটি চালানোর জন্য ব্যবহার করুন (ধরুন একটি দীর্ঘ-রান প্রক্রিয়া), তাহলে আমি যদি টার্মিনাল সেশনটি ছেড়ে দিই, তবে কমান্ডটির দীর্ঘকালীন প্রক্রিয়াটি সঠিকভাবে সমাপ্ত হবে? এবং যদি আমি শেলটি ছেড়ে দেয় এমনকি কমান্ডটি চালিয়ে যেতে চাই, আমি কি নোহপ ব্যবহার করব, বা & (কমান্ডের শেষে) অথবা নোহপ এবং & উভয়ই ব্যবহার করব?
জর্জ 2

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

2

মার্টিনের উত্তর ভাল তবে কিছুটা অস্পষ্ট। কমান্ডটি সর্বদা কাঁটাচামচ এবং কার্যকর করা হয়, তবে স্বাভাবিক শেল আচরণটি কমান্ডটি না বের হওয়া অবধি অপেক্ষা করা উচিত। এম্পারস্যান্ড এটিকে ব্যাকগ্রাউন্ডে রাখে যাতে আপনি আপনার টার্মিনাল প্রম্পটটি ফিরে পান এবং আপনি অন্যান্য জিনিস করতে পারেন। যদি প্রক্রিয়াটি স্টাডআউট বা স্ট্ডারগুলিতে ডেটা ছড়িয়ে দেয়, আপনি প্রম্পটে যা করছেন তার সাথে এটি মিলিত হবে এবং আপনাকে বিভ্রান্ত করতে পারে। এজন্য আপনি &> /path/to/logfile.txt এর সাথে পুনঃনির্দেশ করুন।

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


ধন্যবাদ ধনী! ধরুন আমি কোনও মেশিনে ssh টার্মিনাল লগ ব্যবহার করেছি, তারপরে ssh এর টার্মিনালটি কমান্ডটি চালানোর জন্য ব্যবহার করুন (ধরুন একটি দীর্ঘ-রান প্রক্রিয়া), তাহলে আমি যদি টার্মিনাল সেশনটি ছেড়ে দিই, তবে কমান্ডটির দীর্ঘকালীন প্রক্রিয়াটি সঠিকভাবে সমাপ্ত হবে? এবং যদি আমি শেলটি ছেড়ে দেয় এমনকি কমান্ডটি চালিয়ে যেতে চাই, আমি কি নোহপ ব্যবহার করব, বা & (কমান্ডের শেষে) অথবা নোহপ এবং & উভয়ই ব্যবহার করব? এবং কেন?
জর্জ 2

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

দুর্দান্ত উত্তর, ব্যাকগ্রাউন্ডে চলমান শেল-শুরু প্রক্রিয়াগুলির জন্য সেরা অনুশীলনগুলি ব্যাখ্যা করে।
মার্সেল ভালদেজ ওরোজকো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.