উত্তর:
sh
প্রোগ্রামটিকে sh
দোভাষী হিসাবে ডাকা হয় এবং -c
পতাকাটির অর্থ এই প্রোগ্রাম দ্বারা ব্যাখ্যা করা হিসাবে নিম্নলিখিত কমান্ডটি কার্যকর করা হয়।
উবুন্টুতে sh
সাধারণত এটির সাথে মিল থাকে /bin/dash
, অর্থাত আপনি sh -c
ড্যাশ শেল দিয়ে একটি কমান্ড প্রয়োগ করলে ব্যাশের পরিবর্তে কমান্ডটি কার্যকর করতে ব্যবহৃত হবে। সাথে পরিচিত শেলটি sh
সিমলিংকের উপর নির্ভর করে - আপনি এটি খুঁজে পেতে পারেন readlink -e $(which sh)
। আপনি sh -c
যখন ব্যাশের পরিবর্তে শেলটি দিয়ে একটি কমান্ড বিশেষভাবে কার্যকর করতে চান তখন আপনার ব্যবহার করা উচিত ।
আপনি -c
অন্য বাক্যাংশকারীর সাথেও এই সিনট্যাক্সটি ( পতাকা) ব্যবহার করতে পারেন । এর একটি ক্লাসিক ব্যবহার (@ এডউইনকসেল দ্বারা নির্দেশিত হ'ল সুডোর সাথে কাজ না করা পুনর্নির্দেশের সমস্যাটি ঘুরে আসা (এখানে আপনি ব্যবহার করতে পারেন bash -c
বা sh -c
))
sudo sh -c 'echo "foo" > /home/bar'
ফাইলটি লিখতে হবে bar
টেক্সট ধারণকারী foo
করার /home/
সময়, sudo echo "foo" > /home/bar
ব্যর্থ হিসাবে খুব ভাল এখানে ব্যাখ্যা
কমান্ড স্ট্রিংয়ের চারপাশে 'একক উদ্ধৃতি' ব্যবহার করা জরুরী, অন্যথায় বর্তমান শেল আপনার ডাকাডাকীর কাছে যাওয়ার আগে এটি প্রসারিত করার চেষ্টা করবে
উদাহরণস্বরূপ (অজগর সহ আমি যতক্ষণ না কমান্ডের কথা চিন্তা করি যা ড্যাশগুলিতে বিভিন্ন ফলাফল দেয় ...)
$ python3 -c print (35/7)
bash: syntax error near unexpected token `('
$ python3 -c 'print (35/7)'
5.0
-c
যুক্তি হল:
স্ট্যান্ডার্ড ইনপুটের পরিবর্তে কমান্ড_স্ট্রিং অপারেন্ড থেকে কমান্ডগুলি পড়ুন। কমান্ড_নাম অপারেন্ড থেকে বিশিষ্ট প্যারামিটার 0 সেট করা হবে এবং বাকী আর্গুমেন্ট অপারেন্ডগুলি থেকে অবস্থানগত পরামিতি ($ 1, $ 2 ইত্যাদি) সেট করা হবে।
sh
যুক্তিগুলির অন্যান্য বিবরণগুলি চালিয়ে পাওয়া যাবে:
$ man sh
আর্গুমেন্ট হিসাবে স্ট্রিং ব্যবহার করার একটি উদাহরণ:
$ sh -c "echo This is a test string"
এটি আরও বিশদ sh -c
উদাহরণ। এটি গুগল ড্রাইভ থেকে একটি দস্তাবেজ ডাউনলোড করবে এবং ডেস্কটপে সম্পাদনার জন্য এটি খুলবে:
$ sh -c "wget 'https://docs.google.com/document/u/0/d/1jcBtdlMx0f4BhCmAmnIViIy4WN4oRevWFRzse-P00j0/export?format=docx' -O test.docx && xdg-open test.docx 2>/dev/null"
sh -c
( উবুন্টুতে) একটি অ-লগইন , অ-ইন্টারেক্টিভ অধিবেশন তৈরি করে ।sh
dash
কমান্ড অনুসরণ যে শেল সেশনে চলবে, এটা যুক্তি (অবস্থানগত প্যারামিটার) নামে 0 (চিকিত্সা করা হবে ARGV0
), এবং যে কমান্ড যুক্তি (যেমন অবশিষ্ট অংশ ARGV0
), 1 থেকে শুরু ( ARGV1
, ARGV2
, ...)।
আপনি এই ধরণের সেশনে চালুর জন্য অনুমোদিত শেল বৈশিষ্ট্যগুলিও ব্যবহার ;
করতে পারেন যেমন একাধিক কমান্ড ব্যবহার করে কমান্ড বিভাজন, কমান্ড গোষ্ঠীকরণ ব্যবহার করে {}
, অন্য একটি সাব- শেল স্প্যান করা ()
ইত্যাদি। এগুলির ব্যবহার পূর্বে উল্লিখিত যুক্তির সংজ্ঞা / উদাহরণগুলিকে সামান্য পরিবর্তন করতে পারে।
শুধু নোটটিতে, বৈশিষ্ট্য যে নির্দিষ্ট ইন্টারেক্টিভ শেল শুধুমাত্র (ডিফল্ট অনুসারে), যেমন ইতিহাস সম্প্রসারণ, source
এর -ing ~/.bashrc
এবং /etc/bash.bashrc
ইত্যাদি এই সেশনের উপলব্ধ নাও হতে হবে এটা নন-ইন্টারেক্টিভ । -i
বিকল্পটি ব্যবহার করে আপনি একটি ইন্টারেক্টিভ সেশনস আচরণ (প্রায়) অনুকরণ করতে পারেন :
sh -ic ...
একইভাবে, বৈশিষ্ট্যগুলি যেগুলি লগইন শেলগুলির জন্য নির্দিষ্ট (ডিফল্টরূপে) যেমন- source
উইংয়ের ~/.profile
(প্রদত্ত ~/.bash_profile
এবং ~/.bash_login
অস্তিত্ব নেই) সুনির্দিষ্ট এবং /etc/profile
শেলটি একটি লগ-ইন শেল হওয়ায় এটি সম্পন্ন হবে না । আপনি -l
বিকল্পটি ব্যবহার করে লগইন-শেল আচরণ অনুকরণ করতে পারেন :
sh -lc ...
লগইন এবং ইন্টারেক্টিভ উভয় সেশনের অনুকরণ করতে:
sh -lic ...
sh -c
করবেন তার একটি উদাহরণ সরবরাহ করতে পারেন ? এটি-c
অংশে উল্লিখিত অবস্থানগত পরামিতিগুলির অ্যাসাইনমেন্ট প্রদর্শন করলে অতিরিক্ত দুর্দান্ত হবেman sh
।