আরএম-এ বিকল্পটির আসল বিন্দুটি কী?


14

এর জন্য জিএনইউ কোর্টিলস ম্যান পৃষ্ঠাটি পড়ে rm, বিকল্পগুলির মধ্যে একটি হ'ল -fম্যানুয়াল অনুসারে,

-f, --force
          ignore nonexistent files and arguments, never prompt

এখন, আমি কিছু পরীক্ষা করেছি এবং দেখাব যে আমি যদি এর মতো কিছু ব্যবহার করি

rm -f /nonexisting/directory/

এটা অভিযোগ করবে না।

সত্যিকার অর্থে এমন বিকল্প থেকে কেউ কী লাভ করতে পারে?

প্লাস ব্যবহার করে "মুছে ফেলা ডিরেক্টরিগুলি" এর সর্বাধিক সাধারণ উদাহরণ rmহ'ল কিছু

 rm -rf /delete/this/dir

-rবিকল্প জ্ঞান করে তোলে, কিন্তু -f?

উত্তর:


9

আমি দেখতে পাচ্ছি যে ম্যান পেজটিতে এই ক্ষেত্রে কিছুটা বিশদ নেই। -fবিকল্প rmআসলে বেশ কিছু ব্যবহারের ক্ষেত্রে রয়েছে:

  • একটি ত্রুটি প্রস্থান কোড এড়ানোর জন্য
  • অনুরোধ করা এড়াতে
  • অনুমতি চেকগুলি বাইপাস করতে

আপনি ঠিক বলেছেন যে অস্তিত্বহীন ফাইলটি মুছে ফেলা অর্থহীন, তবে স্ক্রিপ্টগুলিতে এটি বলতে সুবিধাজনক যে "আমি এই ফাইলগুলি চাই না, আপনি যদি সন্ধান করেন তবে সেগুলি মুছুন, তবে তারা যদি ডোন না হন তবে আমাকে বিরক্ত করবেন না" উপস্থিত নেই "। কিছু লোক set -eতাদের স্ক্রিপ্টে এগুলি ব্যবহার করে যাতে এটি কোনও ত্রুটি বন্ধ হয়ে যায় (স্ক্রিপ্টটির আরও ক্ষতি হতে পারে), এবং এর rm -rf /home/my/garbageচেয়ে সহজ if [[ -f /home/my/garbage ]]; then rm -r /home/my/garbage; fi

অনুমতি যাচাই সম্পর্কে একটি নোট: একটি ফাইল মুছে ফেলার জন্য, আপনাকে পিতৃ ডিরেক্টরিতে লেখার অনুমতি প্রয়োজন , ফাইলটি নিজেই নয়। সুতরাং আসুন আমরা কোনওভাবে বলতে পারি যে rootআপনার হোম ডিরেক্টরিতে কোনও ফাইল মালিকানাধীন রয়েছে এবং আপনার sudoঅ্যাক্সেস নেই, আপনি -fবিকল্পটি ব্যবহার করে ফাইলটি সরাতে পারেন । আপনি যদি গিট ব্যবহার করেন তবে দেখতে পাবেন যে গিট এটি তৈরি করা অবজেক্ট ফাইলগুলিতে লেখার অনুমতিটি ছাড়বে না:

-r--r--r-- 1 phunehehe phunehehe 62 Aug 31 15:08 testdir/.git/objects/7e/70e8a2a874283163c63d61900b8ba173e5a83c

তাই আপনি যদি ব্যবহার rm, ব্যবহার না করেই একটি গীত সংগ্রহস্থলের মুছতে করার একমাত্র উপায় rootব্যবহার করা rm -rf


4
-fএকটি ত্রুটি প্রস্থান কোড এড়ানো যায় না। যদি rmকোনও বিদ্যমান ফাইল অপসারণের চেষ্টা করে এবং ব্যর্থ হয় তবে এটি একটি ত্রুটি কোডটি ফিরিয়ে দেবে।
গিলস 21

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

6

কেবল -fপঠনযোগ্য ফাইল মুছে ফেলার সময় বিকল্পটি নিশ্চিতকরণের অনুরোধগুলি দমন করে। এক বা একাধিক সরবরাহিত ফাইল উপস্থিত না থাকলে এটি ত্রুটিগুলিও দমন করে।

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

fবিকল্পটি ক্ষেত্রে আপনি কিছু ফাইল সেগুলি অপসারণ করতে চান, এবং যত্ন কিনা তারা অস্তিত্ব বা না চাই না এছাড়াও দরকারী। উত্স ফাইলগুলি থেকে পুনরায় জেনারেট করা যায় এমন ফাইলগুলি সরিয়ে দেয় এমন একটি কমান্ড তৈরি করতে এটি মেকফিলগুলিতে খুব ব্যবহৃত হয় । উদাহরণস্বরূপ, যদি foo.oথেকে পুনর্নির্মিত করা যেতে পারে foo.c, bar.oথেকে পুনর্নির্মিত করা যেতে পারে bar.c, এবং myappথেকে পুনর্নির্মিত করা যেতে পারে foo.oএবং bar.oতারপর, Makefile লক্ষ্য

clean:
        rm -f *.o myapp

মুছে ফেলা হয় myapp, foo.oএবং bar.oযদি সেগুলি বিদ্যমান থাকে এবং যদি তাদের কোনও উপস্থিত না থাকে তবে অভিযোগ না করে।

-fডিরেক্টরি গাছ মুছে ফেলার নির্দেশাবলী সহ বেশিরভাগ ক্ষেত্রেই প্রয়োজনীয় নয়। এটি ন্যায়সঙ্গত হতে পারে কারণ আপনি যদি নিশ্চিত হন যে ডিরেক্টরি গাছটি যা আছে তা নির্বিশেষে আপনি মুছে ফেলতে চান, তবে -fকিছু ফাইল কেবল পঠনযোগ্য ক্ষেত্রে প্রম্পট হওয়া এড়াতে আপনি নির্দিষ্ট করতে পারেন । যাইহোক, যে ব্যক্তিরা দৌড়াতে বলে rm -rfতারা প্রায়শই কেবল কিছু থেকে পরিত্রাণ পেতে একটি রহস্যময় উদ্দীপনা পুনরাবৃত্তি করে, বিকল্পগুলি -rএবং -fপ্রকৃতপক্ষে প্রয়োজনীয় কিনা তা নির্বিশেষে । যদি বিকল্পগুলি প্রয়োজনীয় না হয় তবে সেগুলি পরামর্শ দেওয়া হয় না, কারণ তারা যুক্তিতে কোনও টাইপো গুরুত্বপূর্ণ কিছুকে ধ্বংস করার ঝুঁকি বাড়ায়।


3

-iস্যুইচ করারrm

আমি সাধারণত দেখতে -fসঙ্গে ব্যবহৃত হচ্ছে rmযখন rmকমান্ড যাতে এটি অন্তর্ভুক্ত নামে পরিচিত করা হয়েছে -iইন্টারেক্টিভ জন্য সুইচ। -fসুইচ counteracts -i

উদাহরণ

সমস্যাটির অনুকরণ rmকরতে alias লেখা হচ্ছে rm -i

$ alias rm='rm -i'

কিছু জাল তথ্য তৈরি করুন

$ touch afile

এখন এর এলিয়াস সংস্করণ ব্যবহার করে এটি মোছার চেষ্টা করুন rm

$ rm afile 
rm: remove regular empty file `afile'?

এখন ব্যবহার করার চেষ্টা করুন -f

$ rm -f afile 
$

অনুমতিসমূহ

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


উপনামটি ব্যবহার করে এটি কিছুটা সত্যই উপলব্ধি করে। এবং আপনার উত্তরটির সাথে মেলে যা আমি কেবল ওপেনএসডি ম্যান পৃষ্ঠাগুলিতে দেখাব। যদিও ওপেনবিএসডি জিএনইউ / লিনাক্স নয় তবে মনে হয় এটি আপনার সবেমাত্র কী বলেছেন তা বর্ণনা করে। কেউ যদি চেক করতে চান তবে এখানে লিঙ্কটি দেওয়া হয়েছে: [লিঙ্ক] openbsd.org/cgi-bin/…
সালিয়ারোসরাস

বাশ দিয়ে আপনি সর্বদা \rmঅ্যালাইজিং ছাড়াই চালাতে পারেন (the commandএটি নির্মিত একটি শর্টকাট হওয়া )। আমি এর জন্য সর্বোত্তম ব্যবহার -fশেল স্ক্রিপ্টিং-এর মধ্যে পেয়েছি যেখানে আপনার কাছে এমন একটি লকফিল রয়েছে যা উপস্থিত থাকতে পারে বা নাও থাকতে পারে, সতর্কতাটি -fথামিয়ে দেয় rm: cannot remove 'file': No such file or directory
ড্রয় স্লোয়ান

@ ড্রাভস্লুয়ান হ্যাঁ, এটিও উপলব্ধি করে। আপনার উত্তরের জন্য ধন্যবাদ ড্রই স্লোয়ান এবং
স্ল্যাম

আমি ব্যবহার rm -fউপর প্রায়ই cleanলক্ষ্য Makefileগুলি
অ্যালেক্স

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