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


29

উদ্দেশ্য:

rm -rf string*

সমস্যা:

rm -rf string *

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


8
সাম্প্রতিক এবং ভালভাবে কনফিগার করা শেল ( zshবা bash) দিয়ে আমি রিটার্ন কী
টিপানোর

2
touch -- -iযখন আপনি নিজের যুক্তিগুলিতে একটি ওয়াইল্ডকার্ড অন্তর্ভুক্ত করবেন তখন প্যারামিটার হিসাবে -iপাঠানো হবে এমন একটি ফাইল তৈরি করবে । rm-i
মনিকা পুনরায় ইনস্টল করুন - এম। শ্রাইডার

@ মার্টিনশ্রেডার: আপনি যদি সেই ডিরেক্টরিতে থাকেন যেখানে ফাইলটি বিদ্যমান রয়েছে।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

@ মার্টিনশ্রেডার আপনি টাইপ করলেই এটি কাজ করবে rm *। আপনি যদি টাইপ করেন তবে rm name *এটি প্রসারিত হবে rm name -i other names-iকোনও বিকল্প হিসাবে প্রক্রিয়া করা হবে না কারণ এটি ফাইল নামগুলির আগে নয়।
বারমার

1
সাধারণত, একজন ব্যবহারকারী এটি একবার করে।
tedder42

উত্তর:


37

DEBUGসন্দেহজনক দেখতে পাওয়া আদেশগুলি বাতিল করতে একটি ফাঁদ লেখা যেতে পারে। নিম্নলিখিত বা এর মতো কোডগুলি আপনার যুক্ত করা যেতে পারে ~/.bashrc:

shopt -s extdebug
checkcommand() {
  if [[ $BASH_COMMAND = 'rm -r'*' *' ]]; then
    echo "Suppressing rm -r command ending in a wildcard" >&2
    return 1
  fi
  # check for other commands here, if you like
  return 0
}
trap checkcommand DEBUG

স্বাদ যুক্তি সামঞ্জস্য করুন।

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


47

কোনও সিস্টেমকে সম্পূর্ণ বুলেটপ্রুফ করার কোনও উপায় নেই। এবং যুক্ত করা "আপনি কি নিশ্চিত?" বিষয়গুলিকে অনুরোধ জানানো উভয়ই পাল্টা উত্পাদক এবং "অবশ্যই আমি নিশ্চিত" to হাঁটু জাল প্রতিক্রিয়া।

আমি গত বছরগুলিতে একটি বই থেকে যে কৌশলটি গ্রহণ করেছি তা হ'ল প্রথমে ls -R blah*তা করা, rm -fr blah* যদি কেবলমাত্র সেই তালিকাটি পরিবর্তিত হয় যা আমি হিট করতে চেয়েছিলাম hit

lsকমান্ডটি প্রথমে করা যথেষ্ট সহজ , তারপরে , মুছুন ls -Rএবং এর সাথে প্রতিস্থাপন করুন rm -fr

চূড়ান্ত প্রশ্নটি হ'ল, "যদি তথ্যটি আপনার কাছে মূল্যবান হত তবে আপনার ব্যাকআপটি কোথায় ছিল?"


4
তীর আপ করার পরিবর্তে আপনি ব্যবহার করতে পারেন ^ls -R^rm -rf^এবং সম্ভবত একটি উপাধি হিসাবে সেট করতে পারেন
এক্সেসসাম

এফডব্লিউআইডাব্লু, ls -Rমূলত আমি সমস্ত সময় এটিই করি, তবে উত্তরটি তৈরি করার সময় এটি আমার সচেতন মনকে পিছলে যায় point সুতরাং এটির জন্য +1 করুন।
জ্যাকগল্ড

এটির সুবিধাটিও রয়েছে যে আপনি প্রবেশ কীটি ফাটিয়ে দিলে, বা আপনার মাউসটি টুকরো টুকরো টুকরো টুকরো টুকরো করে কাটলে ক্ষতি হবে না। আমি কখনও কখনও কেবল আরও সুরক্ষার জন্য কম দক্ষ ক্রমে জিনিসগুলি প্রবেশ করি, উদাহরণস্বরূপ cat > .log, তারপরে ফিরে গিয়ে ফাইলের নামের আগে পেস্ট বা ইঙ্ক করে .log। সুতরাং কোন মুহুর্তে আমার > valuablefileসেমিডলাইন নেই।
পিটার কর্ডেস

আমি এর সাথে আরএমটি এলিয়াসযুক্ত ব্যবহার করি rm -i, তাই আমি প্রায়শই কেবল আমার আরএম কমান্ডটি রচনা করি এবং তারপরে \ লাইনের শুরুতে একটি রাখি । ( \rmআরএমের জন্য উপনাম-প্রসারণ এড়ানো যায়, যেহেতু শব্দের কিছু অংশ উদ্ধৃত হয়েছিল)। আমার যদি প্রয়োজন হয় -rবা -f, হ্যাঁ আমি মাঝে মাঝে এর lsপরিবর্তে শুরু করি rm, বা কেবল -rfঅংশটি ছেড়ে যাই । (সম্পাদনা করুন, আপনি কীভাবে একটি ব্যাকস্ল্যাশ কোড-ফর্ম্যাটিং পাবেন? bquote bslash bslash bquote ব্যর্থ হয়
পিটার

8

আপনি কি তার rmrfজায়গায় নিজেকে ব্যবহার করতে প্রশিক্ষণ দিতে পারেন rm -rf?

যদি তা হয় তবে এই বাশ ফাংশন আপনাকে আদেশটি নিশ্চিত করার আগে আসলে কী ঘটবে তা দেখার সুযোগ দেবে:

rmrf() { echo rm -rf "$@"; read -p "Proceed (y/N)? "; [ "${REPLY,,}" = y ] && rm -rf "$@"; }

এই ফাংশনটি স্থায়ী করার জন্য, আপনি যে ~/.bashrcকম্পিউটারটি ব্যবহার করেন তার ফাইলটিতে এই লাইনটি যুক্ত করুন।

সাধারণ rmওরফে সঙ্গে তুলনা

একটি উপনাম সংজ্ঞায়িত করা সাধারণ:

alias rm='rm -i'

এটির দুটি সীমাবদ্ধতা রয়েছে:

  1. আপনি যদি এই উরফটির উপর নির্ভর করতে এসে থাকেন তবে আপনি যখন কোনও মেশিনে বা এমন পরিবেশে না থাকায় আপনি শোক নেবেন। বিপরীতে, rmrfসেই ফাংশন ব্যতীত কোনও মেশিনে চালানোর চেষ্টা করা ক্ষতিগ্রস্থ হবে command not found

  2. এই উপন্যাসটি আপনার ক্ষেত্রে কোনও সহায়ক নয় কারণ -fআপনি যে বিকল্পটি কমান্ড লাইনে সরবরাহ করেছেন সেটি উপন্যাসের -iবিকল্পটিকে ওভাররাইড করে ।


4
বুদ্ধিটা খারাপ না. তবে এটি নির্ভর করে যে এই ফাংশনটি ইনস্টল হচ্ছে এবং যে কোনও সিস্টেমে এই ব্যবহারকারীটি ব্যবহার করছেন তা উপলব্ধ। সুতরাং যাক তারা কোনও কাজের জন্য একটি রিমোট সার্ভারে লগইন করে এবং ভুল rm -rfকমান্ড চালায় , কী ঘটে? এর মতো সিউডো ফাংশন তৈরি করা শেষ পর্যন্ত কেবল একটি সহজ সমাধানকে জটিল করে তোলে: আরও সতর্কতা অবলম্বন করুন এবং অনুমতিগুলি কী তা বুঝুন।
জ্যাকগল্ড

4
@ জ্যাকগল্ড এবং আপনার সত্যিই দরকার না হলে আরএম-ব্যবহার করবেন না
একটি সিভিএন

1
তাত্ক্ষণিকতাগুলি যাচাই করে বা rmrfশেল ফাংশন তৈরির বিপরীতে কেন বিরক্ত হয় , এবং সেই ক্ষেত্রে বিশেষ যুক্তিযুক্ত করে তোলে, অন্যথায় আসল কমান্ডটি আহ্বান জানাতে সরাসরি ডাকে ? rm-r-rfcommand rm "$@"rm
চার্লস ডাফি

3
আপনি আলাদা নাম ব্যবহার করেন যাতে আপনার ওভাররাইডটি না থাকলে আপনি নিজেকে পায়ে গুলি করবেন না। এবং আমি @ মাইকেলKjörling এর সাথে একমত, আপনার যদি না -fথাকে তবে আপনার প্রয়োজন হবে না -i। ছেড়ে যাওয়া -fআপনাকে কেবলমাত্র পঠনযোগ্য ফাইল সরানোর আগে অতিরিক্ত সতর্কতা দেয়।
পিটার কর্ডেস

6

যদি আমি একটি অবস্থা যেখানে ভুল ফাইল মুছে ফেলার সত্যিই একটি বড় চুক্তি, জিনিষ আমি একটি ট্র্যাশক্যান ফোল্ডার তৈরি করতে কাজ করেছি, মত এক মধ্যে আছি mkdir trashcan, এবং তারপর আমি একটি স্ক্রিপ্ট আছে rmTrashcanযা হয়েছে rm -rf trashcan/*বা rm -rf *বা অনুরূপ, খুব সাবধানে লিখিত এবং বেশ কয়েকবার চেক।

এইভাবে, যদি আমি কোনও ভুল করি তবে ভুলটি একটি mvকমান্ডের নয়, একটি rmআদেশের উপর। একবার ভাবলাম না lsএবং আত্মবিশ্বাসী ঠিক কি আমি মুছে ফেলছি, একটি rmTrashcanআসলে নিরাপদে মলিন কাজ করে।

এটি এমন পরিস্থিতিতে ছিল যা আমাকে ব্যাকআপগুলি মুছতে হয়েছিল তার জন্য এটি অত্যন্ত সুবিধাজনকও ছিল। আমি mvট্র্যাশকেনে পুরো মাসের ব্যাকআপ নিতে পারলাম , mvআমি যে কয়েকজনকে রাখতে চেয়েছিলাম (মাসের প্রথম, মাসের 15 তম) ব্যাকআপগুলিতে রেখে দিতে হয়েছিল, তারপরে rmTranshcanবাকী অংশ। অনুরূপ কমান্ডটি করা নিজে থেকে নিজেই করা শক্ত rmএবং এইভাবে করা lsব্যাকআপগুলিকে আমি কী ফাইলগুলি পিছনে রেখে যাচ্ছি তা নিয়ে আত্মবিশ্বাসী হতে দিন (কেবল যে ফাইলগুলি মুছতে চান তার চেয়ে বেশি গণনা করুন)


4

দুটি কমান্ড ( lsএবং rm) দিয়ে বিরক্ত করার পরিবর্তে , আমি মনে করি একটি সহজ এবং সহজ উপায় হ'ল find:

find . -maxdepth 1 -name "string*" -delete

আপনি যদি দুর্ঘটনাক্রমে টাইপ করেন তবে "string *"এটি নামকযুক্ত ফাইলগুলি মুছে ফেলবে string charsএবং string letters(যা আপনি যা চাইছিলেন), কিন্তু এটি *শেল উইলের মতো প্রতিটি ফাইল দখল করবে না ।

এছাড়াও, -deleteকোন ফাইলটি মুছে যাচ্ছে তা দেখার জন্য আপনি ত্যাগ করতে পারেন , তারপরে তীরটি চাপুন এবং -deleteটাইপিং ^ls -R^rm -rfবা অন্যান্য বাজে কথাগুলির চেয়ে সহজ টাইপ করুন ।


findকমান্ডলাইনে ঘোষিত সুস্পষ্ট প্যারামিটারের পরিবর্তে মেলে এমন ফাইলগুলির জন্য নেস্টেড অনুসন্ধান করবে। আমি মনে করি এটি চিহ্নটি মিস করেছে। আমি যদিও ভুল হতে পারে।
হত্যাকারী

3

দুর্ঘটনাক্রমে চলমান অগ্রণী বা শীর্ষস্থানীয় ওয়াইল্ডকার্ডের বিরুদ্ধে স্মার্টলি রক্ষার কি কোনও সহজ উপায় আছে?

আসলে তা না. এটি অন্য উত্তরে প্রস্তাবিত আপনি কোনও কার্য সম্পাদন করার আগে একটি প্রম্পট যুক্ত করার জন্য একটি কাস্টম কমান্ড তৈরি করতে পারেন। তবে এই কাস্টম কমান্ডটির সমস্যা হ'ল এটি আপনি যে সিস্টেমে কাজ করছেন সেগুলিতে সচেতনভাবে ইনস্টল করা উচিত। এটি ইনস্টল করা হলেও, সমস্যাটি হ'ল আপনার yকাজটি কার্যকর হতে পারে যাতে তা হতাশ হয়।

অর্থ এটি কোনও পাঠ্য / কমান্ড লাইন স্তরে থাকলেও এটি সমস্ত ব্যবহারকারীর ইন্টারফেস ইস্যু। এমন কিছু করা থেকে রক্ষা করার জন্য আপনি সেখানে কতটি সুরক্ষা জাল থাকার আশা করছেন? এটি একজোড়া কাঁচির মতো: আপনি যদি কোনওভাবে অবহেলিত হয়ে পড়ে থাকেন এবং কাপড় বা কাগজ কেটে দেওয়ার উদ্দেশ্যে হাত কেটে ফেলেন তবে দোষ কে? বা এমনকি ট্র্যাফিক লাইট এবং স্টপ লক্ষণগুলি: কোনও ড্রাইভার চালককে হালকা চালানো বা ট্র্যাফিকের লক্ষণগুলি উপেক্ষা করা সত্যই কিছুই নেই যে তারা যদি এই জাতীয় ঝুঁকিপূর্ণ আচরণে জড়িত থাকে তবে কী ঘটতে পারে তার তীব্র সচেতনতা ছাড়া অন্য কিছু নয়।

এটি বলেছিল যে সর্বোত্তম, বাস্তবসম্মত সমাধান ব্যবহারকারীদের পাশাপাশি গোষ্ঠীগুলির জন্য সিস্টেমের অনুমতিগুলির মধ্যে রয়েছে। এটি কোনও ব্যবহারকারীকে নিজের থেকে সুরক্ষিত করার জন্য সেরা / একমাত্র আসল সুরক্ষা জাল।

আপনি যদি এমন কোনও সিস্টেমে কাজ করছেন যেখানে আপনি কেবল এটির অ্যাক্সেস করছেন তবে আপনি কেবল chmod 777সমস্ত কিছুতে প্রলুব্ধ হতে পারেন , তবে এটি কোনও যুক্তিবাদী ব্যবস্থাটি সেটআপ করার উপায় নয়। পরিবর্তে অনুমতিগুলি হ'ল 755সমস্ত ডিরেক্টরি এবং 644সমস্ত এক্সিকিউটযোগ্য ফাইলের মতো something এক্সিকিউটেবল ফাইলগুলি 755কমপক্ষে হওয়া উচিত 744তবে আপনি কেবল অন্যদের পড়তে চান তবে ফাইলগুলি চালনা নাও করতে পারেন।


2

পতাকা rmছাড়াই আপনার প্রাথমিক কমান্ডটি রচনা করার চেষ্টা করুন -f, তবে -iপরিবর্তে এর সাথে, এমন rmপ্রতিটি ফাইল মুছতে চাইলে আপনাকে অনুরোধ করবে। ছোট পুনরাবৃত্তি মোছার জন্য, আপনি yএকবার হ'ল আদেশটি সঠিকভাবে টাইপ করা হয়েছে তা নিশ্চিত হয়ে আপনি কীটি ধরে রাখতে পারেন । বড় মুছে ফেলার জন্য, আপনি অপারেশনটি বাতিল করতে পারেন এবং কমান্ডলাইন ইতিহাসটি সাবধানতার সাথে এটিতে পরিবর্তন করতে -iপারেন -f


আপনাকে অবশ্যই y[RETURN]প্রতিটি ফাইল টিপতে হবে, আপনি জিএনইউ আরএম দিয়ে ধরে রাখতে পারবেন এমন কিছুই নেই। আউট Editting -iযেতে, একবার আপনি কমান্ড সঠিকভাবে টাইপ করেছেন উপায়। তারপরে আপনি কেবলমাত্র পঠনযোগ্য ফাইলের জন্য এবং অন্য কিছু হতে পারে pt
পিটার কর্ডেস

1
কেবলমাত্র rm -Iএমনটি ব্যবহার করুন যাতে এটি কেবল একবারই অনুরোধ জানায়, এবং কেবলমাত্র সম্ভাব্য বিপজ্জনক মুছে ফেলার জন্য (যেমন অনেকগুলি ফাইলের জন্য
নিক মাত্তিও

1
কম গঠনমূলক ফোরামে আমার উত্তরটি "আপনার টাইপিং / প্রুফরিডিংটি যদি খারাপ হয় তবে ওয়াইল্ডকার্ডের সাহায্যে 'আরএম-আরএফ' ব্যবহার করে আপনার কোনও ব্যবসা নেই lines" আমি -আই সুইচ সম্পর্কে জানতাম না ... <20 বছর আগে অবশ্যই রাখা হয়েছে; 'শেষবারের মতো আমি' ম্যান আরএম 'করেছি। :)
নেভিন উইলিয়ামস

2

প্রতিটি অপসারণের আগে আরএম রয়েছে -iএবং -Iপতাকাগুলি নিশ্চিত করে confirm অতীতে, কিছু বিতরণ সেগুলি ডিফল্টরূপে চালু করে। এটি একটি ভয়ানক ধারণা। সাধারণ ক্রিয়াকলাপের জন্য ব্যবহারকারীকে অনেক বেশি নিশ্চিতকরণ সংলাপ দিন এবং তারা অভ্যাসগতভাবে এগুলি নিশ্চিত করতে শুরু করবেন। এটি কেবল "সতর্কতা অবলম্বন করতে" (সর্বদা একটি লাল পতাকা) প্রয়োজনটিকে নতুন এবং আরও বিরক্তিকর সংলাপে স্থানান্তরিত করে। "হ্যাঁ। হ্যাঁ। হ্যাঁ! হ্যাঁ! হ্যাঁ! Godশ্বর, নির্বোধ কম্পিউটার কেবল ফাইলগুলি মুছুন হ্যাঁ হ্যাঁসেসিইসেস - ক্র্যাপ আমার কোনও প্রয়োজন নেই! নুবুও!" এটি হ্যাঁ, তবে আমি বোঝাতে চাইছি না ডায়ালগ সমস্যা। এই উত্তরটি কেন নিশ্চিত সময়ে ডায়লগগুলি ভুল সময়ে আসে তার একটি চাক্ষুষ ব্যাখ্যা দেয়।

আপনি যে ধরণের ভুল বর্ণনা করছেন তা হ'ল একটি স্লিপ , "এমন কোনও ক্রিয়াকলাপ যা পারফরম্যান্স নয়"। ব্যবহারকারী সাধারণত তাত্ক্ষণিকভাবে ভুলটি সনাক্ত করে এবং ঠিক কীভাবে এটি ঠিক করতে হয় তা জানে। দুর্ভাগ্যক্রমে, ইউনিক্স ব্যবহারকারীকে সুযোগ দেয় না, rm সঙ্গে সঙ্গে ফাইলটি মুছে দেয়। প্রতিটি অন্যান্য অপারেটিং সিস্টেম ট্র্যাশ ব্যবহার করে মুছে ফেলাটিকে পূর্বাবস্থায় ফেলার অনুমতি দেয়, অন্তত কিছুক্ষণের জন্য।

ইউনিক্সের জন্য বিভিন্ন ট্র্যাশ সিস্টেম রয়েছে এবং এই উত্তরটি পরামর্শ দিয়ে পূর্ণ

প্রশ্নটি হল ওরফে আরএমের বা উরফ আরএমের নয়। আরএম এলিয়াস করার পক্ষে ...

  1. আপনি আরএম বিকল্প ব্যবহার করতে ভুলে যাওয়া স্লিপ করতে পারবেন না।

আরএম এলিয়াস করার পক্ষে ...

  1. আপনি সম্ভবত এটির সিস্টেমে নির্ভর করতে পারেন।
  2. ডিস্ক প্রায় পূর্ণ হলে সমস্যার কারণ হতে পারে।
  3. পর্যায়ক্রমে আবর্জনা ফাঁকা করার জন্য অবকাঠামো দরকার।
  4. প্রোগ্রামগুলিতে আরএম এর প্রত্যাশিত আচরণে হস্তক্ষেপ না করার বিষয়টি নিশ্চিত হতে হবে।
  5. আরএম সম্পূর্ণরূপে অনুকরণ করতে পারে না।

যদি আপনি প্রথম যুক্তিটি খুব বেশি দূরে অনুসরণ করেন তবে আপনি vi (vim, vi) নয়, csh (tcsh, csh নয়) এবং অন্যান্য পুরাকীর্তিক ইউটিলিটিগুলি ব্যবহার করে শেষ করেন কারণ তারা সর্বজনীনভাবে উপলব্ধ available তবুও, আপনার পরিবেশকে অতিরিক্ত কাস্টমাইজ করার ঝুঁকি রয়েছে। আমি আমার ইউটিলিটিগুলি আমার সাথে নেওয়া এবং এটি যতটা সম্ভব সহজ করে তুলতে পছন্দ করি। YMMV।

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

চতুর্থটি আপনার নতুন আরএমকে শেল ওরফে তৈরি করে মোকাবেলা করা যেতে পারে alias rm='trash', তবে এটি প্রোগ্রামগুলিকে প্রভাবিত করবে না।

পঞ্চমটি এমন একটি সমস্যা যা আমি পাঠকের সমাধানের জন্য রেখে যাই। আরএম এর অনেকগুলি সুইচ নেই।


আমি আর এম এল rm -iদিয়েছি, তবে আমি প্রায়শই \rmঅযৌক্তিক আচরণ পেতে ব্যবহার করি । আমি rm -iযেকোন সময় টাইপ করছি যখন আমি কোনও আর্গুমেন্টকে না বলতে চাই ANN আমি কখনও কখনও কমান্ড lsহিসাবে কমান্ডটি শুরু করি , তারপরে আমি সম্পন্ন হয়ে গেলে কেবল \ rm এ রাখি। সুতরাং দুর্ঘটনাবশত এর rm -rf /বদলে আমি আঘাত করার কোনও উপায় নেই/.../file
পিটার কর্ডেস

rm -Iবা rm --interactive=onceতার চেয়ে অনেক বেশি বিরক্তিকর rm -i, এবং এখনও কিছু বিপজ্জনক ধরা পড়েছে (কেবল তখনই 3 টিরও বেশি ফাইল উপস্থিত থাকে বা এটি পুনরাবৃত্ত হয়, এবং প্রতিটি ফাইলের পরিবর্তে কেবল একবারই হয়))
নিক মাত্তিও

@ কুন্ডর হ্যাঁ, এবং এটি সমীকরণটি পরিবর্তন করে না। এটি সম্ভবত এটি ব্যবহারকারীকে এড়িয়ে যাওয়ার আরও বেশি সম্ভাবনা তৈরি করে। ব্যবহারকারীর একটি লক্ষ্য রয়েছে: জিনিসগুলি মুছুন। প্রম্পটটি বলে "আপনি কি আমাকে মুছে ফেলতে বলেছিলেন তা নিশ্চিত আপনি কি মুছে ফেলতে চান?" ব্যবহারকারী এখনও স্টাফ মুছে ফেলার লক্ষ্যে স্থির হয়েছে, কী মুছতে হবে তা যাচাই করে না, তাই তারা চিন্তা না করেই "হ্যাঁ" বলে। -iলক্ষ্য পরিবর্তন করার জন্য ব্যবহারকারীকে সময় দিতে পারে। সম্পর্কিত প্রশ্নের এই উত্তরটি এটিকে পুরোপুরি দেয়।
শোওয়ার্ন

@ শ্যাওয়ার্ন: তবে কেউ rm -iএটি বন্ধ না করেই সম্ভবত 30 সেকেন্ডের বেশি সময় নিয়ে বেঁচে থাকতে পারে না । যেখানে rm -Iশুধুমাত্র অনুরোধ জানানো যখন এটি সম্ভবত আপনি মাতাল আপ করেছি; প্রম্পটটি কেবল বড় মুছে ফেলার জন্য আসে। আপনি যখন কয়েকটি জিনিস মুছতে চাইছিলেন এবং প্রম্পটটি দেওয়া হয়েছিল, তখন আপনাকে অচল করে নেওয়া হবে এবং বুঝতে পারবেন যে আপনি দুর্ঘটনাক্রমে "foo *" টাইপ করেছেন।
নিক মাত্তিও

@ কুন্ডার তিনটি বেশি ফাইল মুছে ফেলা এবং পুনরাবৃত্তভাবে মুছে ফেলা (নিশ্চিত হওয়া যে অভ্যাসটি -rfআমি সবেমাত্র আবিষ্কার করেছি তা অক্ষম করা হয়েছে ) সম্ভবত স্ক্রু আপ সনাক্ত করার জন্য দরিদ্র প্রক্সি নয়। একটি উপ-ডিরেক্টরি মুছতে চান সম্ভবত স্ক্রু আপ নয়। বার্তাটি সাহায্য করে না কারণ এটি ব্যবহারকারী যখন যাচাই করার জন্য খুঁজছেন না তখন কোনও সময়ে দরকারী তথ্য যুক্ত না করে ব্যবহারকারী কী বললেন তা নিশ্চিত করে। "আরএম: পুনরাবৃত্তভাবে 1 টি যুক্তি সরান?" "হ্যাঁ, ডিরেক্টরিটি মুছুন, আমি আপনাকে কেবল এটি করতে বলেছিলাম! ... অপেক্ষা করুন, কোন ডিরেক্টরিটি ছিল? সিআরপি !!!"
শোভার্ন

2

আমি !$সর্বশেষ আদেশের ট্রিকটিতে = শেষ যুক্তি সম্পর্কে প্রত্যেককে শিখিয়েছি :

% ls job[XYZ].*
jobX.out1
jobX.out2
[rest of the matches]

% rm !$

এটি ওয়াইল্ডকার্ড সম্প্রসারণের একটি তদন্তের অনুমতি দেয় এবং তারপরে কোনও স্থান সন্নিবেশ করার সম্ভাবনা ছাড়াই ঠিক একই গ্লোব প্যাটার্ন ব্যবহার করতে পারে *

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

আমার ল্যাবটিতে একটি প্রযুক্তি কেবল গত সপ্তাহে এই ভুল করেছে (কাজের 3 মাস) - এবং হ্যাঁ আমাদের একটি ব্যাকআপ ছিল (1 দিনের পিছনে)।


0

সবাই মনে হচ্ছে, "আরও সাবধান হন", "কোনও উপনাম / কনফার্মেশন প্রম্পট তৈরি করবেন না কারণ আপনি তার প্রতি যথাযথ মনোযোগ না দেওয়ার অভ্যাস হয়ে যান"।

শীতল, এবং সবকিছু। আমার অর্থ, আমি মনে করি না যে আপনার জন্য একটি উপাত্ত তৈরি করা উচিত rm(না rmrf, যেহেতু আপনি সহজেই এটি আঁকতে পারেন এবং আসল কমান্ডটি টাইপ করতে পারেন)।

তবে কেন আপনি একটি নাম / স্ক্রিপ্ট তৈরি করতে পারবেন না এবং এটিকে কল করতে, বলতে removeএবং কেবল এটির একটি যুক্তি (উদাহরণস্বরূপ $ 1) খাওয়াতে পারবেন না ? অজানা জায়গা (অ্যামেরাইট?) এর কারণে ওয়াইল্ডকার্ডটি 2 ডলার হওয়া উচিত এবং সুতরাং আপনার স্ক্রিপ্ট / মোড়ক / ওরফে দ্বিতীয়টি খাওয়ানো হবে না। হ্যাঁ, আপনি একবারে মুছে ফেলার এক সেট (ওয়াইল্ডকার্ড সহ) করতে পারেন, তবে এটিই আপনি মূল্য দিতে পারেন।

আমি যদি কিছু সুন্দর লিখতে থাকি, তবে এটি মুছে ফেলার পরিকল্পনা করছে এমন ফাইল এবং ডিরেক্টরিগুলির সংখ্যা এবং আমি মুছে ফেলছি এমন সামগ্রীর আকার এবং তারপরে একটি অনুরোধ জিজ্ঞাসা করতে পারি, তবে এটি আপনার প্রবাহকে বাধা দিতে পারে। হতে পারে যে একটি পতাকা বিকল্প চালু remove? (-i)। এটি কেবলমাত্র একটি একক ওয়াইল্ডকার্ড কিনা তা দেখতে আপনি একটি ডলার চেক করতে চাইতে পারেন এবং নিশ্চিতকরণের জন্য জিজ্ঞাসা করতে পারেন এবং আপনি আসলে কোন ডিরেক্টরিতে রয়েছেন তার তালিকা তৈরি করতে পারেন।


একটি সরু হিসাবে, সেখানে অনেকগুলি rmপ্রতিস্থাপন রয়েছে। অনেকগুলি ইউআই ডেস্কটপ ট্র্যাশের সাথে অনুগত হওয়ার চেষ্টা করছে। এগুলির মধ্যে কিছু অনুসন্ধান করার মতো হতে পারে।


6
আপনার "অপসারণ" নামটি একবারে একাধিক ফাইলকে কখনই সরিয়ে ফেলবে না। আপনি কোনও ওয়াইল্ডকার্ড ব্যবহার করতে পারবেন না, কারণ শেলটি কমান্ডটি দেখার আগে এটি প্রসারিত করে।
জিম

সুতরাং এটির উপর একটি বিস্ময়কর না, এবং তারপর স্ক্রিপ্ট এ টানুন?
ব্যবহারকারী 3082

আপনি টাইপ করতে চান remove \*? যদি আপনার স্ক্রিপ্টটি শেলটিকে এর ইনপুটটি বিশ্ব-প্রসারিত করতে দেয় তবে আমি এটি খুব বেশি সহায়তা করে দেখছি না।
পিটার কর্ডেস

0

একটি খুব সাধারণ কৌশলটি -rfশেষের দিকে রাখা: rm whatever* -rf
এটি ত্রুটির হারের তীব্রতা হ্রাস করে, কারণ আপনি এর পরে আরও চরিত্র টাইপ করেন *, তাই টাইপগুলি দেখতে আপনার আরও সময় থাকে।
এটি সবকিছু সমাধান করে না। শুধু একটি সহজ দৈনন্দিন কৌশল।

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