`!!` এর মানে `সুডো !!`?


64

আমি খুব বেশি অভিজ্ঞতার সাথে উবুন্টুর একজন ব্যবহারকারী এবং আমি ব্যবহার করছি sudo

কী করে sudo !!এবং কীভাবে?



6
@ ওয়ারেনহিল তিনি "কীভাবে" তবে "কী" এবং "কীভাবে" চান না। তিনি !!কমান্ডের অংশ সম্পর্কে আরও জিজ্ঞাসা করেন।
ব্রেইম

1
@ নকিলন হওয়া উচিত নয়। এই প্রশ্নটি জিজ্ঞাসা করছে কী করবে !!এবং কীভাবে। অন্যটি এটি করার জন্য একটি পদ্ধতি চায়।
ব্রায়াম

@ মাইকেলKjörling আপনি বোঝাতে চেয়েছিলেন?
ব্রায়াম

2
@ ব্রায়াম আসলে, আমার অর্থ নকল ছিল; এই দুটিতে সর্বাধিক ভোট দেওয়া উত্তরগুলি কী sudo !!করে তা সুনির্দিষ্টভাবে ব্যাখ্যা করে এবং এমন দুটি উত্তর রয়েছে যা আসলে কী !!করে তা ব্যাখ্যা করে explain
একটি সিভিএন

উত্তর:


74

!!পূর্ববর্তী কমান্ডের জন্য বাশ একটি উপনাম ( ইভেন্ট ডিজাইনার দেখুন )। সুতরাং এটি sudoঅনুমতি সহ পূর্ববর্তী কমান্ডটি পুনরায় চালায় ।


15
দ্রষ্টব্য: !কমান্ডগুলি সাধারণত ব্যাশ স্ক্রিপ্টগুলিতে পাওয়া যায় না (কেবলমাত্র ইন্টারেক্টিভ সেশনে)। তারা অক্ষম করা যেতে পারে set +o histexpand
বেনোইট

64

sudo bang bang কমান্ড লাইন ইন্টারফেসে কাজ করার সময় একটি খুব দরকারী কমান্ড।

কিছু লিনাক্স ডিস্ট্রোজে আপনি প্রশাসকের পরিবর্তে ব্যবহারকারী হিসাবে লগইন করেছেন।

সুতরাং, অ্যাডমিন-ভিত্তিক কিছু করার জন্য আপনাকে কমান্ডটি এগিয়ে যেতে হবে sudo(সুপার-ইউজার ডিও), যা সিস্টেমকে বলেছে "আপনি এটি করবেন, কারণ আমি এটি বলেছি।" দ্য !! / bang-bang (! = bang) মূলত একটি শর্টকাট যা আপনি পূর্ববর্তী আদেশটি পুনরাবৃত্তি করতে ব্যবহার করতে পারেন।

সুতরাং, সাধারণ পরিস্থিতিটি হ'ল আপনি একটি কমান্ড চেষ্টা করে দেখেন এবং এটি আপনাকে একটি প্রশাসক হতে হবে বলে একটি বার্তা ফিরে আসে। সুতরাং, আপনি sudoকমান্ডটি সুপার-ইউজার / অ্যাডমিন হিসাবে চালনার জন্য টাইপ করতে পারেন , বা আপনি sudo !!যেখানে টাইপ করতে পারেন !!সিস্টেমটি পূর্ববর্তী কমান্ডটি ব্যবহার করতে বলা হয়েছে যা চেষ্টা করা হয়েছিল। UfH

আরও অনেক ব্যাং-কমান্ড রয়েছে। তাদের তালিকা এবং তারা কী তা ব্যাখ্যা করার জন্য, লিনাক্স ব্যাং কমান্ডগুলি পরীক্ষা করে দেখুন, বাশ ইতিহাস এবং ঠ্যাং কমান্ডগুলিও দেখুন


12
এটি যদি আপনার আগের কমান্ডটি 100% নিশ্চিত না হন তবে এটি একটি অত্যন্ত বিপজ্জনক আদেশও। এটি কেবলমাত্র উপরের তীর টিপুন, তারপরে হোম কীটি চাপুন, তারপরে টাইপ sudoকরে কমান্ড লাইনটি দেখতে প্রায় সর্বদা নিরাপদ ।
শাদুর

3
@ শাদুর সাধারণত আপনার আগের কমান্ডটি প্রায় 1 সেকেন্ড আগে। সাধারণ ব্যবহারের কেস উত্তরে বর্ণিত একটি: আপনি sudoকোনও কিছু ভুলে যান এবং ত্রুটি পান, তাই আপনি তাৎক্ষণিকভাবে sudoএটি চান
মাইকেল মরোজেক

1
@ ব্রাইয়াম: সিএলআই একটি সংক্ষেপণ। সম্প্রদায় বিধি লঙ্ঘন! হামলা! পুনরায় সম্পাদনা করুন!
ভারতীয়

4
sudoতার মানে এই নয় "সুপার-ইউজার do" হিসাবে, এটা যায় না কমান্ড যেন আমি করেছে su(su কমান্ড অর্থ সুইচ ব্যবহারকারী [এবং সুপার ব্যবহারকারী]); অর্থাত্, আপনি কেবল কোনও রুট ( -uস্যুইচ) নয়, কোনও ব্যবহারকারী হিসাবে কমান্ডগুলি sudo করতে পারেন ; একই সাথে চলেsu [user] [-c command]
সিসিস

1
@ মিচ বাদে suএই জাতীয় পক্ষে দাঁড়ায় না। দেখুন linux.die.net/man/1/su , gnu.org/software/coreutils/manual/html_node/su-invocation.html , linfo.org/su.html । এর বিকল্প বিকল্প ব্যবহারকারী হওয়া উচিত ।
ssice

38

bang bang (!!)কমান্ড একটি শর্টকাট পুনরাবৃত্তি এবং পূর্ববর্তী কমান্ডটি প্রয়োগ আপনি আপনার টার্মিনালে প্রবেশ করে। এই কমান্ডটি খুব কার্যকর যখন আপনি ভুলে যান যে কোনও নির্দিষ্ট ক্রিয়া করার জন্য আপনার অ্যাডমিন অধিকারের প্রয়োজন হয় এবং আপনাকে কেবল টাইপ করে সুপার-ব্যবহারকারীর অধিকার দিয়ে পুনরাবৃত্তি করতে দেন,

sudo !!

!! শেষ রান কমান্ডটি ধরুন।

উদাহরণ স্বরূপ:

apt-get update

আউটপুট হবে,

ই: লক ফাইলটি খুলতে পারেনি / var / lib / অ্যাপ্ট / তালিকাগুলি / লক - খোলা (13: অনুমতি অস্বীকার করা হয়েছে)
E: ডিরেক্টরি / var / lib / apt / list /
E লক করতে অক্ষম : লক ফাইল / var / খুলতে পারেনি lib / dpkg / લોક - খোলা (13: অনুমতি অস্বীকার)
ই: প্রশাসনিক ডিরেক্টরি লক করতে অক্ষম (/ var / lib / dpkg /), আপনি কি মূল?

এর পরে, যদি আমরা sudo !!কমান্ড রান করি তবে আউটপুট হবে

Hit http://extras.ubuntu.com saucy/main amd64 Packages
Get:3 http://mirror.sov.uk.goscomb.net saucy-updates Release.gpg [933 B]
Hit http://ppa.launchpad.net saucy Release                                  
Hit http://extras.ubuntu.com saucy/main i386 Packages 
Hit http://mirror.sov.uk.goscomb.net saucy Release                             
99% [Waiting for headers] [Waiting for headers] [Waiting for headers]

যার অর্থ !!অংশ পূর্ববর্তী রান কমান্ড grabs apt-get updateএবং preceeding sudoঅংশ সুপার-ইউজার অধিকার চালানোর জন্য কম্যান্ড করে তোলে।

আর কিভাবেsudo !! রান সুপার-ইউজার অধিকারসহ পূর্ববর্তী কমান্ড মানে, সাধারণত সব কমান্ড আমরা টার্মিন্যালে প্রবেশ সংরক্ষিত হয় command history.Run historyটার্মিন্যালে কমান্ড, এটা সব কমান্ডগুলি আপনাকে entered.The দেখায় !!অংশগ্রহণ sudo !!দখল গত কমান্ড সঞ্চিত কমান্ডের ইতিহাসে এবং পুরো sudo !!অ্যাডমিন সুবিধা সহ শেষ কমান্ডটি চালায়।

এই ব্লগ পোস্টে আরও কিছু ব্যাং কমান্ডের ব্যাখ্যা দেওয়া হয়েছে ।


3
আমি আবার 'ব্যাং ব্যাং'-এর উল্লেখ দেখে অবাক হয়েছি। আমি ভেবেছিলাম একবার যথেষ্ট ছিল।
কিরি

1
Bang কমান্ডের আরও উদাহরণের জন্য +1।
ওয়ার্নারসিডি

1
@Rmano কমপক্ষে ব্যাশ, আর আমি ইতিহাস সমর্থনে সব বোর্ন ধাঁচের শাঁস করবে, mkdir LongDirectoryNameএবং cd !$কাজ করার জন্য আলাদাভাবে জারি করা উচিত নয় যদি না LongDirectoryNameঘটে পূর্ববর্তী কমান্ডের শেষ কথা হয়েছে। শেল ইতিহাসের উদ্দেশ্যে, mkdir LongDirectoryName; cd !$একটি কমান্ড। সঙ্গে ইতিহাস মিথষ্ক্রিয়া !!, !^এবং !$গত কমান্ড শেল আসলে সম্পূর্ণরূপে এইজন্য আগে প্রক্রিয়াভুক্ত ব্যবহার !এখানে একটি উদাহরণ। আপনি যদি চালনা করেন তবে historyদেখবেন যে যুক্ত হওয়া লাইনের কমান্ডগুলি একটি ;কমান্ড হিসাবে মনে থাকবে।
এলিয়াহ কাগন

@ এলিয়াকাগান আপনি ঠিক বলেছেন! মুছে ফেলা ভুল তথ্য ...
রোমানো

13

উত্তরের দুটি অংশ রয়েছে: !!এবংsudo

!!শেলের কার্যকারিতার অংশ (উবুন্টুর ক্ষেত্রে এটি সম্ভবত বাশ, তবে zsh বা csh এর মতো অন্যান্য শেলও এটি সমর্থন করে) "ইতিহাস সম্প্রসারণ" নামে পরিচিত। এটি অন্যান্য বিস্তারের মতো একইভাবে আচরণ করে যে শেলটি 'স্থানধারক' শব্দের সংখ্যায় প্রসারিত করে। যদিও foo*'foo বিন্যাস' দিয়ে শুরু সব ফাইল একটি তালিকা প্রসারিত হবে, !!পূর্ববর্তী কমান্ড লাইন বিষয়বস্তু প্রসারিত হয়।

$ echo foobar
foobar
$ echo !!
echo foobar
$ !!
echo foobar

অন্যান্য বিস্তারের মতো এটি পুরোপুরি শেল দ্বারা সম্পন্ন হয়, সুতরাং আপনি যদি !!অন্য কোনও কমান্ডের পরে টাইপ করেন তবে এই কমান্ডটি সচেতন নয় যে সেখানে একটি ছিল !!, তবে কেবল পূর্ববর্তী কমান্ড লাইনটিই দেখতে পাবে। (অন্যান্য সম্প্রসারণের বিপরীতে, ইতিহাসে কমান্ড সংরক্ষণের আগে ইতিহাসের সম্প্রসারণ ঘটে, !!পরিবর্তিত কমান্ড লাইনের পরিবর্তে ইতিহাসে সংরক্ষণ করা হবে))


sudoকমান্ড অন্য ব্যবহারকারী হিসাবে কমান্ড নির্বাহ অনুমতি দেয়, অনুমতি (ডিফল্ট মধ্যে কনফিগার করা নিরাপত্তা নীতি দ্বারা অনুমোদিত count = প্রদান /etc/sudoers)।

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

sudoরুট (বা অন্য কোনও ব্যবহারকারী) হিসাবে অন্যান্য কমান্ডগুলি চালিত করার কারণটি হ'ল সুডো বাইনারি ( /usr/bin/sudo) এর অনুমতিক্রমে সেটুইড বিট থাকে এবং এটি রুটের অন্তর্ভুক্ত। সেট সেটুইড বিটের সাথে নির্বাহযোগ্য যে কোনও (বাইনারি) এর মালিকের অনুমতি নিয়ে চালানো হয়। এর অর্থ সুডো ব্যবহারকারীর পক্ষে আসলে এটি বলা হোক না কেন মূল অনুমতি নিয়ে কার্যকরভাবে চলে। কেবল সুডোর অভ্যন্তরীণ সুরক্ষা নীতিগুলি পরিচালনা করে যে কোন ব্যবহারকারীকে কি অনুমতি দেওয়া হয় এবং স্বেচ্ছাসেবী ব্যবহারকারীদের যথেচ্ছ জিনিসগুলি করতে বাধা দেয়।


সুতরাং, sudo !!এই মানে ক্ষেত্রে

$ mount /dev/sdb1 /mnt
mount: only root can do that
$ sudo !!

মূলত অভিন্ন

$ mount /dev/sdb1 /mnt
mount: only root can do that
$ sudo mount /dev/sdb1 /mnt

টাইপিং কম উভয় ক্ষেত্রে সুডো কেবল mount /dev/sdb1 /mntরুট অনুমতি নিয়ে এটি দেখে এবং চালায়।


5

!!ইতিহাসের প্রসারণের জন্য এটি সিন্ট্যাক্টিক্যালি সহজতম এবং সম্ভবত সবচেয়ে সাধারণ অভিব্যক্তি ।

যেমন আপনি লক্ষ্য করেছেন, শেষ আদেশটি কার্যকর করার পরে !!বাশ দুটি কাজ করে (তার ডিফল্ট কনফিগারেশনে):

  1. বিকল্প পাঠ্য সহ সম্পূর্ণ কমান্ড আপনাকে দেখানো হবে।

    উদাহরণস্বরূপ, যদি আপনার কমান্ডটি হয় lshw -c videoএবং আপনি sudo !!পরবর্তী চালনা করেন তবে ইতিহাস বিস্তারের পরে কমান্ডটি sudo lshw -c video

  2. এই কমান্ড চালানো হয়।

সাধারণত এই দুটি পদক্ষেপ বাধা ছাড়াই ঘটে এবং ব্যবহারকারীর মিথস্ক্রিয়ার সুযোগ না থাকায় shopt histverifyডিফল্টরূপে সেট করা থাকে না ( shopt -u histverify)।

তবে, আপনি যদি সক্ষম করেন shopt histverify( shopt -s histverify) তবে ইতিহাসের সম্প্রসারণটি ভিন্নভাবে কাজ করে:

  1. এতে একটি প্রসারিত পাঠ্য স্বয়ংক্রিয়ভাবে প্রবেশের সাথে আপনি একটি নতুন প্রাথমিক প্রম্পট পান। এটি মনে হয় আপনি সেই পাঠ্যটি নিজেই টাইপ করেছিলেন, শেষে কার্সার দিয়ে, তবে এখনও কমান্ডটি চালাচ্ছেন নি।
  2. Enterকমান্ডটি চালনার জন্য আপনাকে অবশ্যই ব্যবহারকারীকে চাপতে হবে । অথবা আপনি কমান্ডটি সম্পাদনা করতে পারেন, এটি বাতিল করতে পারেন ( Ctrl+ C) ইত্যাদি নোট করুন যে এটি কোনও বিশেষ প্রম্পট নয়, তবে একটি নিয়মিত প্রাথমিক প্রম্পট। এটি সত্যই যেমন আপনি নিজেরাই লেখাটি টাইপ করেছেন।

(দ্রষ্টব্য যে histverify শেল বিকল্পটি কেবল তখনই কার্যকর হয় যদি পঠন পাঠাগারটি ব্যবহৃত হয় - তবে আপনি যখন কোনও উবুন্টু বা অন্যান্য জিএনইউ / লিনাক্স সিস্টেমে ইন্টারেক্টিভভাবে ব্যাশ ব্যবহার করেন, এটি মূলত সর্বদা ক্ষেত্রে থাকে))

থাকুক বা না থাকুক histverifyশেল অপশনটি নির্বাচন করা হল , ইতিহাস সম্প্রসারণ অন্যান্য অনেক শেল প্রসারণও থেকে বিসদৃশ হয়। অন্যান্য শেল সম্প্রসারণ চালানোর আগে আপনাকে প্রসারিত কমান্ডটি প্রদর্শন করে না। অন্যান্য বিস্তৃতি থেকে পৃথক, যা ইন্টারেক্টিভ এবং নন-ইন্টারেক্টিভ উভয়ভাবে ব্যবহার করার উদ্দেশ্যে করা হয় (উদাহরণস্বরূপ, শেল স্ক্রিপ্টে), ইতিহাসের প্রসারণ প্রায় সবসময় ইন্টারেক্টিভভাবে ব্যবহৃত হয়।


3

! ইতিহাস সম্পর্কিত শর্টকাটগুলির জন্য লিনাক্সে ব্যবহৃত হয়। তো, !! আপনি চালিত পূর্ববর্তী কমান্ডটি কেবল চালাবেন।

এটি ক্ষেত্রে খুব কার্যকর যখন আপনি হয় কোনও কমান্ডের আগে সুডো রাখতে ভুলে যান যা আপনার প্রয়োজন হয় অথবা আপনি অনুমতি অস্বীকার করেন বা এর মতো কিছু করেন

সুডো !!
এবং তুমি করে ফেলেছ.


0

!! পূর্ববর্তী কমান্ডটির পুনরাবৃত্তি ও পরিচালনা করবে এবং sudo এর সাহায্যে এটি কমান্ডটিকে মূল সুযোগ দেবে। (এটি ম্যান পেজে নেই? !! আমি ওখানে দেখতে পাচ্ছি না।)


যে কোনও ব্যক্তির জন্য পৃষ্ঠাটি সন্ধান করছেন:man --pager='less -p "Event Designators"' bash
সেবি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.