প্রথম কমান্ডে && এবং sudo ব্যবহার করার সময়, দ্বিতীয় কমান্ডটিও সুডো হিসাবে চালিত হয়?


64

আমি যদি কমান্ড চালাই।

sudo some-command && some-other-command

দ্বিতীয় কমান্ডটিও sudoপ্রবলতার সাথে চালানো হচ্ছে ?

উত্তর:


110

টিএল; ডিআর: না


প্রথম কমান্ডটি হ'ল

sudo some-command

দ্বিতীয় আদেশটি হল

some-other-command

কমান্ডটি sudoনিম্নলিখিত কমান্ডটি গ্রহণ করে এবং এটি উন্নত সুবিধাগুলি সহ কার্যকর করে। &&যাইহোক, কমান্ড অন্তর্গত নয় এবং প্রথম কমান্ডটি নির্বাহ করার আগে, শেল দ্বারা ব্যাখ্যা করা হয়। এটি বাশকে প্রথমে প্রথম কমান্ড কার্যকর করতে এবং দ্বিতীয়টি সাফল্যের সাথে বলে।

সুতরাং এই sudoসম্পর্কে জানেন না && some-other command। যখন এলিভেটেড প্রক্রিয়াটি সমাপ্ত হয়, বাশ তার রিটার্ন মান গ্রহণ করে এবং তারপরে অন্য কমান্ডটি কার্যকর করে, যা আবার প্রথমটির সাথে জানে না।

এটি সহজেই প্রদর্শিত হতে পারে:

$ sudo whoami && whoami
root
username

আপনি যা চান তা পৌঁছানোর জন্য, আপনি একটি উন্নত বাশ শুরু করতে পারেন এবং এটি উভয় আদেশকে কার্যকর করতে দিন:

$ sudo bash -c 'whoami && whoami'
root
root

সুতরাং এখন, দুটি কমান্ডই মূল হিসাবে কার্যকর করা হবে, যেমন উপরে বর্ণিত পুরো প্রক্রিয়াটি একটি উন্নত প্রক্রিয়াতে কার্যকর করা হয়, অর্থাৎ বাশ সেশনটি এই কমান্ড দিয়ে শুরু হয়েছিল, যা অবিলম্বে সমাপ্তির পরে উপস্থিত হয়। তবুও, উভয়ই whoamiএকে অপরের অস্তিত্ব সম্পর্কে জানেন না।

এটি কোনও উদ্দেশ্য অনুসারে নয় তবে এই প্রদর্শনের জন্য সহজ উপায়টি সহজভাবে করা

sudo some-command && sudo some-other-command

29
whoamiউদাহরণস্বরূপ +1 ।
কার্ল এইচ


এই বিক্ষোভ সত্যিই দুর্দান্ত! পরের বার অন্যকে sudo শেখানোর চেষ্টা করার সময় এটির কথা ভেবে দেখতে পেয়েছি!
খণ্ডিতকরণ

20

না। কিছু উদাহরণ যা এগুলি করে তা হল:

sudo some-command && sudo some-other-command 
sudo sh -c "some-command && some-other-command"

বা আপনি যদি নীড়ের আদেশ চান তবে আপনি এটি করতে পারেন:

sudo bash <<"EOF"
some-command
some-other-command
sudo bash <<"EOF2"
    some-command2
    some-other-command2
EOF2
EOF
  • ২ য় একটি শেল ব্যবহার করে।
  • মনে রাখবেন যে আপনি 'বা' ২ য় সংস্করণে যখন ব্যবহার করেন তখন আপনাকে সেই আদেশের কমান্ড বা প্যারামিটারগুলিতে (যেমন। \ 'বা \ ") পালাতে হবে যাতে এটি খুব দ্রুত জটিল হয়ে উঠতে পারে।

তৃতীয় পদ্ধতিটি কাজ করে না: $ sudo -s -- whoami && whoamiদেয়root username
বারটেকচম

@ বারটেকচোম দুঃখিত, আমি তার উপরের উদ্ধৃতিগুলি মিস করেছি
রিনজউইন্ড

sudo -s -- "whoami && whoami"কমান্ডটি পাওয়া যায়নি বলে মনে হচ্ছে কম্যান্ড কম্যান্ডের মতোই "whoami && whoami"। কীভাবে এই নির্মাণটি && এর সাথে ব্যবহার করবেন? আমি দেখতে পাচ্ছি যে এর sudo -s cd ..বিপরীতে কোনও ত্রুটি দেয় না sudo cd ..
বারটেকচম

আমি কিছু শিখেছি করেছি নতুন আজ: sudo bash <<"EOF"! ধন্যবাদ! :-)
ফ্যাবি

4

না, হয় আপনি দুবার sudo লিখতে হবে, বা এর মতো কিছু

sudo bash -c 'foo && bar'

2

&&এর অর্থ হ'ল ডান পার্শ্বযুক্ত (দ্বিতীয়) কমান্ড কেবল তখনই চলবে যদি ন্যস্ত সাইড (প্রথম) কমান্ড সফল হয় অর্থাৎ প্রস্থান কোড $?হয় 0

দুটি কমান্ড একে অপরের থেকে পৃথক এবং তাদের নিজস্ব পরিবেশে চালিত হবে যাতে দ্বিতীয় কমান্ডটি sudoসুবিধাপ্রাপ্ত হয়ে চলবে না ।

এটি আপনাকে পরিষ্কার করে দেবে:

$ sudo whoami && whoami 
root
foobar

1

না, এবং নিম্নলিখিতগুলি একবারে খুব সাধারণভাবে ম্যাক্রোড হয়।

sudo reboot && exit

প্রত্যেকের সম্পর্কে কমপক্ষে একবার এটি করা উচিত ছিল

sudo apt-get update && sudo apt-get upgrade

সুতরাং এটি একটি দুর্দান্ত "মিকি মাউস" সাক্ষাত্কারের প্রশ্ন।

এটি এত সহজে পরীক্ষিত হয় যে স্ট্যাট প্যাডিং অনুশীলনের জন্য প্রশ্নটি সন্দেহ হতে পারে।


0

কমান্ড লাইনে আপনি যখন দেখবেন

$ command one && command two

সাধারণ অভিপ্রায়টি হ'ল কমান্ডটি কার্যকর করা হয় যা কেবল প্রথম কমান্ড সফল হলেই && অনুসরণ করে।

অন্য কমান্ডটি কি সুডোর মতো চলে?

একেবারে না, এটি ঠিক পরপর দু'টি কমান্ড লেখার মতোই, এটি && কোনও আদেশকে কোনও অতিরিক্ত সুযোগ দেয় না। এটি কেবল একটি পৃথক

এটি প্রমাণ করার জন্য আসুন আমরা একটি উদাহরণ নিই।

touch fileA fileB 

আমি দুটি ফাইল ফাইলএ এবং ফাইলবি তৈরি করেছি। এখন আমি কমান্ড চালাব

sudo chown test:test fileA && chown test:test fileB

আমি এই ফাইলগুলির ব্যবহারকারী এবং গোষ্ঠী মালিককে ব্যবহারকারী এবং গোষ্ঠীর নাম পরীক্ষায় পরিবর্তন করছি। এখন প্রথম কমান্ড চালানো উচিত অন্য কি সম্পর্কে?

আউটপুটটি হ'ল:

chown: changing ownership of `fileB': Operation not permitted

সুতরাং কমান্ডটি যেহেতু এটি প্রয়োজনের পরে চালিত হয়নি sudoএবং যদিও আমরা এই সিদ্ধান্তে পৌঁছাতে পারি যে && দ্বিতীয়টি প্রতিস্থাপন নয়sudo

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