Rm -i ব্যবহার করে 'সকলকে হ্যাঁ' বলছেন


10

বলুন আমি নিশ্চিত করতে চেয়েছিলাম যে আমি প্রথমে সঠিক ফাইলগুলি অপসারণ করছি, তাই আমি এরকম কিছু করেছি:

rm -i *

আমি যে ফাইলগুলি সরিয়ে দিচ্ছি তার সাথে আমি ঠিক আছি তা নিশ্চিত করতে। সুতরাং এটি আমাকে প্রতিটি ফাইলের জন্য জিজ্ঞাসা করবে। কয়েকটি ফাইলের পরে, ধরুন আমি বুঝতে পারি যে এটি ঠিক আমি সরিয়ে দিতে চাইছিলাম। CTRL+Cআইএনজি এবং স্রেফ করার পরিবর্তে rm *, এমন কোনও উপায় কি আমি কেবল সকলকে হ্যাঁ বলতে পারি ?

এই প্রশ্নটি কার্যকারিতার চেয়ে কৌতূহল থেকে বেশি আসে।


অদ্ভুত প্রশ্ন, তবে যাইহোক, আসুন আমাদের উত্তরগুলি সৃজনশীল হন!
ডলম্যান

উত্তর:


8

না।

(যদি না আপনি কোনও ডিবাগার দিয়ে 'ইন্টারেক্টিভ' বিট ফ্লিপ করার কোনও উপায় খুঁজে না পান))


[উদ্ধৃতি আবশ্যক] :-)
ড্যানিয়েল বেক

6
@ ড্যানিয়েল: coreutils/src/remove.c:335coreutils/lib/yesno.c:46(উত্পন্ন) → rpmatch(3): "স্বীকৃত নেতিবাচক প্রতিক্রিয়ার জন্য" ("না") 0, একটি স্বীকৃত ইতিবাচক প্রতিক্রিয়া ("হ্যাঁ") এর জন্য 1 প্রদান করে, এবং -1 যখন প্রতিক্রিয়ার মান অপরিচিত হয় "
ব্যবহারকারী1686 ২

খুব সুন্দর সন্ধান!
ড্যানিয়েল বেক

3
এছাড়াও, আপনি কেবল টার্মিনালে প্রচুর পরিমাণে y [লাইন ব্রেক] পেস্ট করতে পারেন যা "সকলের পক্ষে হ্যাঁ" নয়, তবে একই জিনিস ঘটে।
অলি

'y [লাইন ব্রেক]' জিনিসটির জন্য হাহা সত্য, আমি এটি পছন্দ করি! :)
অমিত

9

ঠিক আছে, এটি আপনার প্রশ্নের উত্তর দেয় না। তবে ব্যবহারের পরিবর্তে rm -i, এলিয়াসিংয়ের rmবিষয়টি বিবেচনা করুন rm -I:

ম্যান পেজটি বলে:

-I     prompt once before removing more than three files, or when removing 
       recursively. Less intrusive than -i, while still giving protection 
       against most mistakes

আপনার মধ্যে ~/.bashrc, রাখুন:

 alias rm='rm -I'

এটি আসলে দরকারী!


4

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

উত্তরটি হ্যাঁ, এই কোডটি ব্যবহার করে:

$ yes "yes" | rm -vRI directory

  • v: মুছে ফেলা ফাইলগুলির তালিকা প্রদর্শন করুন
  • আর: ডিরেক্টরি এবং তাদের বিষয়বস্তু পুনরাবৃত্তভাবে সরান
  • আমি: উপরের সুপারিশ অনুসারে।

3

শুধু আগে ব্যবহার করে পরীক্ষা করুন ls *.blaএবং তারপরে rm -f *.blaসম্ভবত?

সতর্কতা অবলম্বন কর!


হাহা সত্য এটি সম্ভাবনা
অমিত

3

আপনি যদি স্ক্রিনে চলছেন (সাধারণভাবে একটি ভাল ধারণা), আপনি এটি করতে পারেন:

ctrl-a : exec .! yes y

এটি স্ক্রিনের ফলে 'হ্যাঁ' কমান্ডটি y আউটপুট হিসাবে চালিত করবে এবং চলমান প্রোগ্রামের (rm -i) সরাসরি বলবে।


2

ফ্লাইতে অ্যাপ্লিকেশন ফাইল বর্ণনাকারী প্রতিস্থাপন করে এটি করা যেতে পারে। যদিও আপনার একটি মধ্যবর্তী ফাইলের প্রয়োজন হবে।

আপনি এই জাতীয় জিডিবি এবং নামযুক্ত পাইপ ব্যবহার করতে পারেন (ধরে নিবেন আপনি আরও টার্মিনাল ব্যবহার করছেন, অন্যথায় আপনাকে স্ক্রিন বা অন্য কিছু ব্যবহার করতে হবে):

  • "এমকেফিফো মাইয়েস পাইপ" দিয়ে একটি নামযুক্ত পাইপ তৈরি করুন
  • আরএম -i দিয়ে ইন্টারেক্টিভ অনুলিপি শুরু করুন এবং এর পিআইডি সন্ধান করুন
  • ওপেন জিডিবি

তারপরে জিডিবিতে নিম্নলিখিত কমান্ডগুলি টাইপ করুন, পিআইডি প্রতিস্থাপন করুন

attach rmPID
call open("/path/to/myYesYesPipe",66,0666)
call dup2(3,0)
call close(3)
detach
quit

এটি আরএমের জন্য নামযুক্ত পাইপ সহ কীবোর্ডটি প্রতিস্থাপন করে।

এখন আপনাকে নামক পাইপটি পূরণ করতে হবে

  • হ্যাঁ> / পথ / টু / আমার ইয়েস পাইপ চালান

আরএম পাইপটি পড়বে এবং সমস্ত কিছুই ওভাররাইট করবে।


@grawity। আপনি আমাকে ডিবাগারটি ব্যবহার করতে অনুপ্রাণিত করেছিলেন।
ডেভিড কোস্টা

1
  1. rmপ্রক্রিয়াটি সাথে পটভূমিতে রাখুন Ctrl+Z
  2. শেষ কমান্ডটি ( rm -i *কমান্ড) প্রত্যাহার করুন
  3. অপসারণ -i
  4. Enter কমান্ড চালাতে
  5. fg %1
  6. Ctrl+C


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