আবার একই কমান্ড চালান তবে রুট হিসাবে


116

কখনও কখনও যখন আমি কোনও কমান্ড চালাই তখন আমি লক্ষ্য করি না যে পর্যাপ্ত অনুমতি পাওয়ার জন্য আমার এটি সুপার ব্যবহারকারী হিসাবে চালানো দরকার।

সুপার কমান্ড হিসাবে আবার একই কমান্ড চালানোর কোনও উপায় আছে কি?

উত্তর:


195

সবচেয়ে সহজ উপায় চালানো:

sudo !!

এটি শেষ কমান্ড চালাবে তবে সুপার ব্যবহারকারী হিসাবে।

উত্স


5
আমি এটি বেশ কার্যকর খুঁজে পেয়েছি এবং আমি এটির আগে আগে আসিনি (যদিও এটি সাধারণ জ্ঞান হতে পারে)। আমি সাইটে এটি সন্ধান করতে পারি নি তাই আমি ভেবেছিলাম আমি নিজেই এটির উত্তর দেব।
ট্রুফা

30
অন্যদিকে, !!নিজে থেকে চালানো আপনার পূর্ববর্তী কমান্ডটি সেভ করা অনুসারে চালিত হয় history। উপরন্তু, করছেন !-1, !-2, ইত্যাদি আপনার শেষ কমান্ড দ্বিতীয় গত কমান্ড, ইত্যাদি সঞ্চালন করে। কুশলী!
ওসকামায়

6
অন্য !<command>~/.bash_history<command>
একজনকে

1
ctrl-r এছাড়াও খুব দরকারী। এটি আপনার টাইপটির সাথে মিলিয়ে কমান্ডগুলির জন্য পিছনে অনুসন্ধান করবে। এটি আপনাকে কমান্ডটি আবার চালনার আগে সম্পাদনা করার অনুমতি দেবে
কায়েস

4
এই বোকা !বাশ জিনিসটি অনুলিপি tcshকরা হয়েছে যা এটি কখনও কাজে লাগার চেয়ে আরও বেশি বার ছড়িয়ে দিয়েছে। ডাবল উক্তিগুলির ব্যাখ্যা থেকে সুরক্ষা দেয় না !$ foo "!bar"-> !bar: event not found
কাজ

70

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​এখানে চিত্র বর্ণনা লিখুন

উত্তর : আপনি sudo !!পূর্ববর্তী কমান্ডটি বর্ধিত সুবিধাসমূহের সাথে পুনরাবৃত্তি করতে সরাসরি পরে প্রবেশ করুন ।

সম্পাদনা: চিত্রটি reddit এর মাধ্যমে পাওয়া গেছে এবং এটি র্যান্ডাল মুনরোয়ের মূল xkcd কমিকের একটি প্যারডি ।


3
মন্তব্যে দয়া করে এখানে বিরোধী বা বিরোধী কথোপকথনটি নেই। আপনি যদি যোগ্যতা বা অন্যথায় আলোচনা করতে চান তবে দয়া করে মেটা ব্যবহার করুন। ধন্যবাদ।
ফসফ্রিডম

17

আপনি আপনার পুরানো কমান্ডগুলির মাধ্যমে স্ক্রোল করতে এবং এগুলি পুনর্লিখন / পরিবর্তন এবং তাদের sudoসামনে অ্যাড করার জন্য আপ-তীর কীটি চেষ্টা করতে পারেন । (তীর কীগুলির উপরে হোম বোতামটি শুরুতে অবস্থানটি সেট করবে))

আমি sudo !!ধারণাটি অপছন্দ করি , কারণ আপনি মাঝে মাঝে অন্য আদেশটি যোগ করেন এবং আর মনে রাখবেন না।


1
ভাগ্যক্রমে, আপনি যখন করবেন sudo !!, শেলটি প্রসারিত হবে !!যাতে আপনি দেখতে পাচ্ছেন এটি কোন আদেশটি চালানোর চেষ্টা করছে। সুতরাং, এটি সিটিআরএল-সিটিকে আঘাত করতে এবং সঠিক কমান্ডটি খুঁজে পেতে বিরক্ত হতে পারে, তবে এটি আপনাকে অচেতন করে তুলবে না।
রিড

4
@ রিড আপনি প্রবেশের পরে হিট না হওয়া পর্যন্ত এটি প্রসারিত হবে না এবং আপনি যদি সেই উইন্ডোর মধ্যে থাকেন যেখানে আপনাকে আবার আপনার পাসওয়ার্ড প্রবেশ করতে হবে না, এটি কোনও নিশ্চিতকরণ ছাড়াই চলবে। অন্ধভাবে ব্যবহার না করে ইতিহাস ব্যবহার করতে +1!!
ইজকাটা

5
@ ইজকাটা: আমি মনে করি এটি সত্য। আমি zsh ব্যবহার করি, তাই আমি কেবল টাইপ করি sudo !!<TAB>এবং এটি !!আমার জন্য স্বয়ংক্রিয়ভাবে পূর্ণ হয় । বাশের সাহায্যে ইতিহাস প্রসারিত করতে পারে M-^(আমার জন্য, Alt + shift + 6), তবে এটি কম সাবলীল (যদিও আপনি এটি পুনর্নির্মাণ করতে পারেন)। এছাড়াও রয়েছে shopt -s histverifyযা এটি তৈরি করে যাতে আপনি যখন ইতিহাসের প্রসার ব্যবহার করেন এবং এন্টার টিপুন তখন এটি আপনাকে পরিবর্তিত সম্প্রসারণের সাথে আরেকটি প্রম্পট লাইন দেয় যা আপনাকে এটি দেখতে / সম্পাদনা করতে দেয়।
রিড

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

@ রিড: shopt -s histverifyএকটি বিট সাহায্য করবে না। বেশিরভাগ লোক Enterদুবার আঘাত করার অভ্যাস করবে । এই মুহুর্তে তারা এখনও কি ঘটেছে তা যাচাই করতে খুব দেরি করে।
ফ্র্যাঙ্ক কুষ্টার্স

13

আমি কেবল একটি বিকল্প যুক্ত করব: টাইপিংয়ের চেয়ে ছোটsudo !! এবং আরও নমনীয়:

Up-arrow (once, or until you find the command you want to sudo/edit, if it's older)
ctrl+A   (place cursor at beginning of line)
"sudo "
Enter

এটি ঠিক একই সংখ্যক কীস্ট্রোক (আমি "সিটিআরএল + এ" এক হিসাবে গণনা করি ...), তবে "আপ তীর" যুক্ত করে আপনি আপনার ইতিহাসে যে কোনও কমান্ডই রাখতে পারেন এটি করতে পারেন।


1
সিআরটিএল + এ ইম্যাক্স বাইন্ডিংগুলি থেকে আসে, আপনি vi বাইন্ডিংগুলি ( set -o vi) ব্যবহার করতে পারেন । তারপরে আপনি পালাতে পারবেন (কমান্ড মোডে যান), এবং তারপরে 'আমি' (মূলধন 'আমি', লাইনের শুরুতে সন্নিবেশ করান)।
জেরহার্ড বার্গার

1
@GerhardBurger: আমি জানি, কিন্তু weirdly, আমি ভালবাসেন ষষ্ঠ (বিশেষ করে তেজ) বহু-লাইন নথি সম্পাদনা করার জন্য, কিন্তু আমি অনেক Emacs শেল মধ্যে বাঁধাই পছন্দ করেন (কমান্ড থেকে স্যুইচ করতে মোড সম্পাদনা করতে শেল না থাকার সত্যই অর্থবোধ, ইমো এবং ইমাক্সের শর্টকাটগুলি প্রতিদিনের ব্যবহারের জন্য যথেষ্ট, এমনকি কম পাওয়ারফুল হলেও)
অলিভিয়ার ডুলাক

সত্য, আমি এটি কেবল সম্পূর্ণতার জন্য যুক্ত করেছি, আমার জন্য এটি একই, তবে আমি '/' খুব সার্থক;) দিয়ে অনুসন্ধান করতে পারি
জেরহার্ড বার্গার

@ জারহার্ডবার্গার: প্রায় ভিআই মোডের "/", নিয়মিত (ইমাস বাইন্ডিং) ব্যাশের পূর্ববর্তী কমান্ডগুলি খুঁজে পাওয়ার জন্য খুব সহজ উপায় আছে তবে আপনি এটি না পাওয়া পর্যন্ত 'সিটিআরএল + আর' লিখে যান
অলিভিয়ার ডুলাক

7

এটি করার কয়েকটি উপায় রয়েছে

  • কমান্ডের sudoআগে যুক্ত করে কেবল কমান্ডটি সন্নিবেশ করান

  • Up arrowশেষ কমান্ড পেতে টিপুন এবং sudoএটি সামনে রাখুন।

  • প্রবেশ করান sudo !!

!!শেষ বিস্তৃতি কমান্ড প্রবেশ করে। আপনি এখানে কমান্ড লাইনের ইতিহাসের সাথে অন্য জিনিসগুলির সাথে একই জিনিস করতে পারেন


7

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

অন্য কথায়, এই কৌতুক প্রযোজ্য নয় শুধু থেকে sudo:

  • পূর্ববর্তী কমান্ডটিকে সুপারউজার হিসাবে পুনরাবৃত্তি করুন ( sudo !!)
  • পূর্ববর্তী কমান্ডটির পুনরাবৃত্তি করুন এবং এটি সময় করুন ( time !!)
  • পূর্ববর্তী কমান্ডটি একটি ভিন্ন পরিবেশের ( env A=b B=z !!) দ্বারা পুনরাবৃত্তি করুন
  • পূর্ববর্তী আদেশটি পুনরাবৃত্তি করুন ( !!)

ইতিহাসের সম্প্রসারণ (ইতিহাসের বিকল্প হিসাবেও পরিচিত) পূর্ববর্তী আদেশগুলি পুনরাবৃত্তি করা আরও সহজ করার জন্য (কম কীস্ট্রোক সহ) কেবলমাত্র একটি শেল বৈশিষ্ট্য। এর জন্য আপনার শেল ম্যান পৃষ্ঠাটি পরীক্ষা করুন history expansion। এটি ইতিহাসের সাথে আরও অনেক কৌতুক এবং শর্ট-কাটগুলি বর্ণনা করতে পারে যেমন:

আপনি সংখ্যা দ্বারা পূর্ববর্তী আদেশগুলি উল্লেখ করতে পারেন:

!55                 # repeat command number 55
!-1                 # repeat the previous command, alias for !!
!-2                 # repeat the command before the previous command

আপনি পূর্ববর্তী আদেশগুলিতে পৃথক শব্দগুলি উল্লেখ করতে পারেন:

some-command !$     # run some-command on the last arg of previous command

পুনরাবৃত্তি করার আগে আপনি অনুসন্ধান করতে পারেন:

!?awk               # repeat the last command including the string 'awk'

আপনি ইতিহাস অনুসন্ধান করতে এবং অন্য কোনও কিছু দ্বারা প্রতিস্থাপন করতে পারেন:

!?awk?:s/str1/str2/  # repeat previous command matching 'awk' replacing str1 by str2

এবং আরও অনেক কিছু, যেহেতু আপনি কমান্ড নির্বাচন, আরগ-নির্বাচন, অনুসন্ধান এবং স্বতন্ত্রভাবে প্রতিস্থাপন করতে পারেন।

আপনার শেলের ম্যান পৃষ্ঠাটি (এই ক্ষেত্রে man bash) আপনার বন্ধু।


1
briliant! যে এক গ্রহণযোগ্য উত্তর হওয়া উচিত।
এলিরান মালকা

5

আমি ব্যাশের পরিবর্তে zsh ব্যবহার করি এবং এটি আমার মধ্যে থাকে ~/.zshrc, সুতরাং কমান্ড লাইনের শুরুতে Alt+ Sসন্নিবেশগুলি টিপুন sudo:

insert_sudo () { zle beginning-of-line; zle -U "sudo " }
zle -N insert-sudo insert_sudo
bindkey "^[s" insert-sudo

দুর্ভাগ্যক্রমে, আমি একই জিনিসটি বাশ করার কোনও উপায় ট্র্যাক করতে পারি নি।


3
আপনি সহজেই গনুহ Readline ব্যবহার ব্যাশ মধ্যে একই কাজ করতে পারেন: আপনার যোগ ~/.inputrc "\es":"\C-asudo "এবং আপনি একটি দীর্ঘ লাইনের শুরু পর্যন্ত সরানো হবে এবং টিপে উপর লাইনের শুরুতে সন্নিবেশ করা হবে উবুন্টু alt-s~/.inputrcএটি কাজ করার জন্য টার্মিনাল পুনরায় আরম্ভ করুন বা পুনরায় পড়ুন ।

2

যদি আপনি এটি একটি উরফে করতে চান তবে আপনাকে alias redo='sudo $(history -p !!)'কোনও কারণে ব্যবহার করতে হবে ।


1
su -c "!!"

আপনার সাথে সুডো বা রুট হওয়ার অনুমতি না থাকলে বা সুডো প্রোগ্রাম সিস্টেমে ইনস্টল হয়নি।


1

আমি যেভাবে এটি পছন্দ করি:

  • তীর কী আপ
  • বাড়ি
  • "সুডো"
  • প্রবেশ করান

তবে কেবল "সুডো !!" করা সহজ হতে পারে, এটি আপনার উপর নির্ভর করে।

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