আমি কীভাবে `ওরফে সুডো !!` করতে পারি?


50

আমি sudo !!বাশ-এর জন্য একটি নাম রাখার চেষ্টা করছি । আমি চেষ্টা করেছি alias sbb='sudo !!', তবে এটি আক্ষরিক !!এবং মুদ্রণ হিসাবে ব্যাখ্যা করে

sudo: !!: command not found

আমি যদি ডাবল কোট ব্যবহার করি তবে এটি স্ট্রিংয়ের মধ্যে ডাবল ব্যাংকে প্রতিস্থাপন করে, যাতে এটি কার্যকর হয় না।

এই কাজ করার কোন উপায় আছে? নাকি বিকল্পের নাম? `



উত্তর:


61

!!আপনি এটি টাইপ করলে ব্যাশ দ্বারা প্রসারিত হয়। এটি ওরফে বিকল্প দ্বারা প্রসারিত হয় না।

আপনি historyবিল্ট-ইনটি প্রসারণ করতে ব্যবহার করতে পারেন :

alias sbb='sudo $(history -p !!)'

কমান্ডটি যদি কোনও সাধারণ কমান্ডের চেয়ে বেশি হয় (যেমন এটিতে পুনর্নির্দেশগুলি বা পাইপ রয়েছে), আপনাকে sudo এর অধীনে একটি শেলটি আহরণ করতে হবে:

alias sbb='sudo "$BASH" -c "$(history -p !!)"'

Tcsh এর জন্য একটি পেয়েছেন?
এমডিপিসি

1
@mdpc: আমি tcsh শেল ব্যবহার করব না, কিন্তু আমি glanced man tcshদেখতে পেল তা করে ওরফে সম্প্রসারণ সময় ইতিহাস সম্প্রসারণ do "যেন মূল কমান্ড আগের ইনপুট লাইন ছিল।" মজাদার. তবে, alias sbb 'sudo \!-2প্রত্যাশার মতো কাজ হয়নি (এটি আসলে দ্বিতীয় আগের প্রবেশের পরিবর্তে); alias sbb 'sudo \!\!'কাজ করেনি আশানুরূপ (প্রতিস্থাপিত sbbজন্য !!); এবং শেষ পর্যন্ত দেখা গেল যে আমি alias sbb 'sudo \!-1'যা চেয়েছিলাম তা হ'ল যা আমি প্রত্যাশা করতাম \!\!। (tcsh 6.17.06 (অ্যাস্ট্রোন) 2011-04-15) ওয়াইএমএমভি। শুভকামনা।
ধনী 21

ধন্যবাদ! এই উপনামটি দুর্দান্ত যখন প্রশাসক হিসাবে আপনি আপনার কমান্ডের সামনে সুডো রাখতে ভুলে যান।
এমডিপিসি 21

পরিবর্তে sbbআমি prease@ jpschorr এর পরামর্শ অনুসারে উপনাম হিসাবে পছন্দ করতে চাই
রুবু

40

চেষ্টা করুন:

alias sbb='sudo $(fc -ln -1)'

আমি আসলে এটি 'প্লিজ' নামকরণ করতে পছন্দ করি:

alias please='sudo $(fc -ln -1)'

তথ্য: fcবাশ শেলের একটি অন্তর্নির্মিত কমান্ড। যা পূর্বে একটি ইন্টারেক্টিভ শেলটিতে প্রবেশ করানো কমান্ডগুলি তালিকা, সম্পাদনা এবং পুনরায় মিশ্রণ করে।


13
pleaseঅবশ্যই যাওয়ার উপায়!
Anto

বাশের পক্ষেও কাজ করে তাই 'zsh এর' মন্তব্য মুছে ফেলা হয়েছে।
মাইকেল ডুরান্ট

1
Zsh এ ভাল কাজ করে। fc হ'ল কমান্ড। ধন্যবাদ
ফ্রেস

pleaseএটি টার্মিনালটি এমন একটি সত্তার মতো অনুভব করে যাতে জিনিস শেষ করার জন্য আমাকে সুন্দর হতে হবে। আমি এমন কিছু পছন্দ করি যা নিয়ন্ত্রণের আরও ভাল ধারণা দেয় - যেমন fuck;)
প্রেজেমেক ডি

5

গিটহাবে এখন এই উদ্দেশ্যে একটি সংগ্রহস্থল রয়েছে, এটি জাদুকরভাবে এটি পরীক্ষা করে যে এটির অতিরিক্ত ব্যবহারকারীর অধিকার প্রয়োজন কিনা তা টাইপগুলিও ঠিক করে দেয়:

https://github.com/nvbn/thefuck


আমি চেষ্টা করেছি apt-get install thefuckযা বিদ্যমান আছে, তবে এটি আমার উবুন্টু 15.10; এ কাজ করে না ; (
রুবো 77

0

এটি মূলত এই প্রশ্নটিতে পোস্ট করা হয়েছিল তবে পরে পোস্ট করার পরামর্শ দেয়।

আপনি কীভাবে ব্যবহার করতে পারেন fcএবং বিকল্পগুলির মতো বিকল্পের historyজন্য কীভাবে ব্যবহার করতে পারেন তা এখানে !-। আপনি ব্যবহার করতে চান তাহলে ধরুন !-n(যেখানে এন এন জন্য ডিজিট তম সর্বশেষ ব্যবহার করা কমান্ড), তারপর আপনি ব্যবহার করতে পারেন fcএবং historyনিম্নরূপ ওরফে সঙ্গে

  1. ব্যবহার history:

    alias xyz='echo $(history -p "!-<n>") ; sudo $(history -p "!-n")'

    দ্রষ্টব্য: এখানে বা এর !-nসাথে সংযুক্ত হওয়া উচিত ।'''

  2. ব্যবহার fc:

    alias xyz='echo $(fc -ln -n -n) ; sudo $(fc -ln -n -n)'

    দ্রষ্টব্য: এখানে ইতিহাসের তালিকাটির সীমা নির্দিষ্ট করতে 1 এবং 2 তম এনডি -n ব্যবহার করা হয়।

এখানে আমি কমে যাওয়ার আগে কমান্ড চালানোর আগে ইকো-আইং ব্যবহার করেছি !-<n>


পূর্ববর্তী উত্তর ইতিমধ্যে কভার history -pএবং fc। এখানে নতুন কিছু?
মুড়ু

ঠিক আছে, এটা কি?
মারু

আমি -ln -n -nতীব্র বিভ্রান্তিকর বলে মনে করি; এছাড়াও বিট 'বা সম্পর্কে ''(এবং বিট সম্পর্কেও -<n>)।
স্কট

অপশন 2 অবশ্যই একটি $(fc -ln -1)
টাইপোর

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