কোনও ফাইল পাওয়া যায় নি এমন রিপোর্ট থেকে আরএম কীভাবে প্রতিরোধ করবেন?


155

আমি rmঅনেকগুলি ফাইল মুছতে একটি বেস স্ক্রিপ্টের মধ্যে ব্যবহার করছি । কখনও কখনও ফাইল উপস্থিত হয় না, তাই এটি অনেক ত্রুটি রিপোর্ট। আমার এই বার্তাটির দরকার নেই। আমি rmশান্ত হওয়ার জন্য একটি আদেশের জন্য ম্যান পৃষ্ঠাটি অনুসন্ধান করেছি , তবে আমি খুঁজে পেয়েছি কেবলমাত্র বিকল্পটি -f, যা "অস্তিত্বহীন ফাইলগুলি উপেক্ষা করুন, কখনই প্রম্পট করবেন না", সঠিক পছন্দ বলে মনে হয়, তবে নামটি মানায় না বলে মনে হয় , তাই আমি উদ্বিগ্ন এটির অনিচ্ছাকৃত পরিণতি হতে পারে।

  • -fবিকল্পটি কি নীরবতার সঠিক উপায় rm? কেন বলা হয় না -q?
  • এই বিকল্পটি কি অন্য কিছু করে?

4
আপনি -f ব্যবহার করতে চান না, এটি আপনাকে কেবল পঠন হিসাবে চিহ্নিত হিসাবে চিহ্নিত ফাইলটি সরিয়ে দেয়।
পিজা

উত্তর:


209

এর প্রধান ব্যবহার -fহ'ল ফাইলগুলি মুছে ফেলার জন্য বাধ্য করা যা rmনিজে ব্যবহার করে মুছে ফেলা হয় না (একটি বিশেষ ক্ষেত্রে এটি তাত্ক্ষণিক ফাইলকে "মুছে ফেলে", ত্রুটি বার্তাকে দমন করে)।

আপনি কেবল ত্রুটি বার্তা ব্যবহার করে পুনর্নির্দেশ করতে পারেন

$ rm file.txt 2> /dev/null

(বা আপনার অপারেটিং সিস্টেমের সমতুল্য)। আসলেই কোনও ফাইল সরানো হয়েছে কি না তা দেখার জন্য আপনি $? কল rmকরার সাথে সাথে এর মানটি পরীক্ষা করতে পারেন ।


3
--fGNU Coreutils এর জন্য বৈধ rm, তবে কেবল এটির জন্য এটি একটি অনন্য সংক্ষেপণ বলে মনে হয় --force। সংক্ষিপ্ত রূপটি -fআরও পরিষ্কার এবং বহনযোগ্য।
কিথ থম্পসন

নিশ্চিত যে আমি এমনকি বুঝতে পেরেছি। --fএখানে শুধুমাত্র একটি টাইপো আছে -f
চিপনার

2
2 কি করে 2>?
ড্যান

@ মাভেরিক এটি স্টার্মারকে পাঠানো কোনও বার্তা টার্মিনালে প্রেরণের পরিবর্তে / ডিভ / নলে পুনঃনির্দেশ করে।
বেনজামিন নোলান

73

হ্যাঁ, -fএটির জন্য সবচেয়ে উপযুক্ত বিকল্প।


আপনি যখন ব্যাকস্ল্যাশ ব্যবহার না করেন ততক্ষেত্রে কিছু ব্যবস্থা এমনকি কক্ষের সাথে প্রম্পট করবে।
vimdude

11
@ ভিমডুড: এটি "কিছু সিস্টেম" নয়; যে আচরণ নির্দেশ করে আপনি একটি শেল ফাংশন বা ওরফে যে মানচিত্র আছে rmকরার rm -i
কিথ থম্পসন

27

-f হ'ল সঠিক পতাকা, তবে পরীক্ষার অপারেটরের জন্য, আরএম নয়

[ -f "$THEFILE" ] && rm "$THEFILE"

এটি নিশ্চিত করে যে ফাইলটি বিদ্যমান এবং এটি একটি নিয়মিত ফাইল (ডিরেক্টরি নয়, ডিভাইস নোড ইত্যাদি ...)


4
তবে এটির একটি রেসের শর্ত রয়েছে এবং এটি উত্পাদন স্ক্রিপ্টগুলিতে ব্যবহার করা উচিত নয়।
ট্রিপলি

আমি বিশ্বাস করি যে @ ট্রাইপাল্লি যা দেখিয়ে দিচ্ছেন তা হ'ল "-f" পরীক্ষা এবং ফাইল অপসারণ যে কোনও আদেশে সম্পূর্ণ হতে পারে। এটি করার আরেকটি উপায় হ'ল: if [ -f "$THEFILE" ]; then rm "$THEFILE"; fiযা পরীক্ষা এবং ফাইল অপসারণের পদক্ষেপগুলিকে স্পষ্টত ক্রমযুক্ত করে তোলে।
রোবলা

2
@ অরবলা যে কোডটি আরও ভার্বোস সিনট্যাক্সের সাথে একই একই জিনিসটি করে ... এবং &! পরীক্ষার পরে কোডটি ব্যাখ্যা করা হচ্ছে)।
টেকনোসরাস

টেকনোসরাস - ওফস, আপনি ঠিক বলেছেন। আপনার কি মনে হয় @ এমএমএলএকের প্রশ্নের সেরা উত্তর?
রোবলা

3
এবং কেবল তা নিশ্চিত করার জন্য, রেসের শর্তটি হল যে কোনও কিছু ফাইল testএবং এর মধ্যে ফাইলটিকে সরিয়ে ফেলতে পারে rm। এখানে rmআগে কার্যকর করার কোন উপায় testনেই। সাম্প্রতিক প্রোগ্রামিংয়ে আপনি সাধারণ ভুলটি লাফিয়ে উঠার আগে সন্ধান করা - আপনি যখন "প্রকৃতপক্ষে" আসলে "লিপ" করেন তখন আপনি "চেহারা" এর ফলাফলটিকে আর বিশ্বাস করতে পারবেন না; এর সমাধান হ'ল লকিং বা পারমাণবিক ক্রিয়াকলাপ। কোনটি আপনি কেন চান তা অবিকল rm -f, যা পরবর্তীকালের উদাহরণ।
ট্রিপলি

13

\rm -f file কখনও রিপোর্ট করা হবে না।


4
-আর অপ্রয়োজনীয় এবং বিপজ্জনক।
মাহেমফ

1
আমি অনেক ফাইল বা ডিরেক্টরি ধরে নিয়েছি। ব্যবহারকারীর অনুরোধটি পুনরায় পড়ুন এবং আপনি ঠিক বলেছেন যে তিনি কেবল ফাইলগুলি চেয়েছিলেন। তাই আমার উত্তরটি সংশোধন করেছেন
ভিমডুড

আরএম করার আগে ব্যাকস্ল্যাশ কি ?? দয়া করে ছেলেরা আমার এটার একটা উত্তর দরকার। উইন্ডোজে সাইগউইনের তৈরি সংস্করণ 4.1 1 আরএম নিয়ে কাজ করতে পারে না, যখন 3.75 ঠিক কাজ করে।
আয়মান সালাহ

2
@ আয়মানসালাহ এই প্রসঙ্গে ব্যাকস্ল্যাশটি যে কোনও ক্রিয়াকলাপ বা উরফকে আসল মোড়ানোর হাত থেকে রক্ষা পাবে rm(যেমন 1990 এর দশকের গোড়ার দিকে কিছু সাইটগুলিতে জনপ্রিয় ছিল যে জিনিসগুলি সরানো থেকে সরিয়ে নেওয়া এবং তার ফাইলগুলি ফিরিয়ে আনার জন্য সিসাদমিনকে কল করা) calling
ট্রিপলি

আপনাকে ধন্যবাদ - এটি আমার সমস্যার সমাধান করেছে .. সম্ভবত &&ফাইলের সন্ধান না পেয়ে একবারের বাইরে বেরিয়ে যাওয়ার কোডটি শৃঙ্খলার অনুমতি দেয় ।
ইগোর

5

যতদূর rm -f"অন্য কিছু" করছেন, এটা ফোর্স (না -fজন্য সাধারণভাবে সংক্ষেপে হয় --forceপরিস্থিতিতে নীরব অপসারণ যেখানে) rmঅন্যথায় নিশ্চিতকরণ জন্য আপনাকে জিজ্ঞাসা করবে। উদাহরণস্বরূপ, যখন আপনার দ্বারা লিখিতযোগ্য ডিরেক্টরি থেকে আপনার দ্বারা লিখিতযোগ্য কোনও ফাইল সরিয়ে দেওয়ার চেষ্টা করা হচ্ছে।


-9

শেসেলের জন্য আমারও একই সমস্যা ছিল। আমার একমাত্র সমাধান ছিল একটি ডামি ফাইল তৈরি করা যা আমার স্ক্রিপ্টে "আরএম" এর আগে প্যাটার্নের সাথে মেলে।


7
আসলেই কি এর একমাত্র সমাধান ছিল? আপনি চেষ্টা করেছেন rm -fনাকি rm filename >&/dev/null?
কিথ থম্পসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.