আমার হোম ডিরেক্টরিতে 'rm -r ~' কী করেছে?


17

gedit লুকানো ব্যাকআপ ফাইলগুলি '~' দিয়ে শেষ করে creates আমি আমার ডিরেক্টরি গাছের পুনরাবৃত্ত পরিস্কার করতে চেয়েছিলাম।

আদেশ rm *~ '~' দিয়ে শেষ হওয়া সমস্ত স্থানীয় ফাইল মুছে ফেলবে

আমি ভেবেছিলাম rm -r *~ .পুরো গাছের সমস্ত ফাইল মুছে ফেলব, তবে আমি টাইপ-এড করবrm -r ~

একটি বার্তা ছিল কিছু ডিরেক্টরি মোছা যায়নি এবং আমি আদেশটি ছেড়ে দিলাম। প্রশ্নটি: আমি কী মুছে ফেলছি?

আমি লক্ষ্য করেছি যে আমার ফাইলজিলা কনফিগারেশনটি গেছে। এই আদেশটি কি হোম ডির থেকে সমস্ত লুকানো ডিরেক্টরি মুছে ফেলবে?


4
ভাল, কমপক্ষে আমার একটি ব্যাকআপ কৌশল আছে ... আসল ক্ষতি হয়নি।
জিইউআই জঙ্কি

2
জানা ভাল; আমি সমস্ত -rকিছু থেকে মুক্তি পেতে না চাইলে আমার কখনও ব্যবহার করার নীতি নেই ।
ইশ

3
একটি সাইড নোট হিসাবে, rm -r *~ .(বর্তমান ডিরেক্টরির মধ্যে) মিলে সমস্ত ফাইল ও ফোল্ডার ডিলিট হবে *~বা .। ( .দ্বারা উপেক্ষিত করা হবে rmএকটি বিশেষ ব্যতিক্রম হিসাবে, যেমন অধিকাংশ মানুষ যাও recursively বর্তমান ডিরেক্টরী মুছে ফেলতে চাই না। *~বর্তমান দির সমস্ত ফাইল ও dirs মুছে ফেলে যে শেষ ~, কিন্তু না ফাইল এবং বর্তমান ডিরেক্টরি সাবডিরেক্টরি মধ্যে ডিরেক্টরি। ) সুতরাং আপনি চান কি না। আপনি সম্ভবত ব্যবহার করতে চেয়েছিলেন হবে findসঙ্গে -execডিরেক্টরি ট্রি মাধ্যমে যাও recursively চেহারায় পতাকা অ যাও recursively প্রতিটি ফাইল শেষ হওয়া মুছতে ~
এলিয়াহ কাগন

এলিয়াকাগান, আমার ধারণা তাই, তবে-এক্সেক সহ সন্ধান করা সর্বদা একটি ঝামেলা হয়ে থাকে। বাড়ির দির পুনরুদ্ধার করা ঝামেলা আরও বেশি, যদিও :-)
জিইউআই জুনকি

1
তথ্যবহুল: ~চরিত্রটি এড়িয়ে না গিয়ে গান করুন (এর মতো \~:) বাশ, জেডএসএইচ ইত্যাদি তৈরি করবে ( rmমূলত কমান্ডটি) মনে করে আপনি হোম ডিরেক্টরিটি বোঝাচ্ছেন।
টমাস ওয়ার্ড

উত্তর:


31

আপনি আপনার হোম ডিরেক্টরি সমস্ত (প্রায়) মুছে ফেলেছেন!

rm -r something পুনরাবৃত্তভাবে কিছু / এর অধীনে ফাইল এবং ডিরেক্টরিগুলি মুছুন ; এটি কেবলমাত্র সেই আইটেমগুলিতেই ব্যর্থ হবে যেগুলি মুছার অনুমতি নেই, কারণ তারা অন্য কোনও ব্যবহারকারীর (যেমন root) মালিকানাধীন , বা তারা ব্যবহারে রয়েছে (যেমন একটি জিভিএফএস মাউন্ট)।

আপনি যদি যোগ না করেন -f(হিসাবে হিসাবে rm -rf something), আপনি কিছু পেতে হবে:

rm: remove write-protected regular file something’?
rm: descend into write-protected directory something’?

এই মুহুর্তে আপনি গর্ভপাত বন্ধ করতে পারেন এবং আপনি সম্ভবত বুঝতে পারবেন যে আপনি ভুল আদেশটি কার্যকর করেছেন।

কীভাবে এ জাতীয় দুর্ঘটনা এড়ানো যায় সে সম্পর্কে সম্প্রদায়ের কাছ থেকে পরামর্শ

দ্রষ্টব্য: সম্প্রদায় উইকি, প্রত্যেকে অবদান রাখতে নির্দ্বিধায় দয়া করে

  • কয়েকটি ফাইলের জন্য, -iফাইল বা ডিরেক্টরিগুলি সরানোর বিষয়ে নিশ্চিতকরণ পেতে বিকল্পটি ব্যবহার করুন :

    $ rm -ri something/
    rm: remove regular file something/file~’? y
    rm: descend into directory something’? y
    rm: remove regular file something/file’? y
    rm: remove directory something’? y
  • যদি কোনও বর্তমান ডিরেক্টরি থেকে অপসারণ করা হয়, ./ভুলভাবে অন্য কোনও স্থান সরিয়ে না দেওয়ার জন্য এটির দ্বারা উপসর্গ করুন :

    $ cd something
    $ rm -v ./*~
    removed ‘./file~’

    উপরেরটি ব্যবহারটি প্রদর্শনের জন্য ছিল ./। যদি একটি উপ-ডিরেক্টরি থাকে তবে আপনি অবশ্যই ব্যবহার করতে পারেন rm -v something/*~সাবধানতা : মনে করবেন না যে rm ./.*এটি বর্তমান ডিরেক্টরিতে থাকা সমস্ত লুকানো ফাইল সরিয়ে ফেলে। লুকানো ফাইলগুলি গ্লোবিংয়ের উপর কাজের জন্য এই সার্ভারফল্ট প্রশ্নটি দেখুন ।

  • মুছে ফেলার পরিবর্তে সরান: ফাইলগুলি প্রথম স্থানে মুছে ফেলার পরিবর্তে আমি শেষ পর্যন্ত মুছে ফেলার আগে যে ফাইলগুলি অন্য কোথাও থেকে মুক্তি পেতে চাই সেগুলি সরাতে অভ্যস্ত হয়েছি। কিছু ভুল হয়ে থাকলে পুনরুদ্ধার করা সহজ easy

    mv -b SOURCE DEST
  • আপনি যদি নির্বাচিত ফাইলগুলি পুনরাবৃত্তভাবে মুছতে চান তবে প্রাকদর্শন করতে find(সম্ভবত এর সাথে grep) ব্যবহার করুন । আপনার এটি চেষ্টা করা উচিত এটি একটি বিরল ঘটনা, তবে যদি আপনার ...

    1. findকোনও যুক্তি ছাড়াই বর্তমান ফাইলগুলির অধীনে সমস্ত ফাইল / ডিরেক্টরি তালিকাভুক্ত করে। man findএটিকে কীভাবে বেছে নিতে হবে (একটি ট্রেজার ট্রভ) কীভাবে করা উচিত তা আপনার সন্ধান করার চেষ্টা করা উচিত তবে আপনি যদি বিরক্ত করতে না চান তবে আপনি grepযে ফাইলগুলি মুছতে চান তার জন্য ফিল্টার করার জন্য কেবল পরিচিত ব্যবহার করতে পারেন।
    2. ধরা যাক আমি একজন উবার-এল 33t কার্নেল হ্যাকার, এবং আমার উত্স গাছের কয়েকটি "উদাহরণ" ফাইলের দ্বারা বিরক্ত হয়েছি; আমি নাম থাকা সমস্ত ফাইল মুছতে চাই। সুতরাং আমি টাইপ করি find | grep example, যা আমাকে এই 20 টি ফাইল দেয় এটি দেখতে দুর্দান্ত দেখাচ্ছে, সুতরাং আমি এখন গিয়ে rm -vপূর্বে উল্লিখিত ভার্বোস আউটপুট সহ সেই সঠিক ফাইলগুলি মুছুন xargs:
      খুঁজে | গ্রেপ উদাহরণ | xargs rm -v
      যা আমাকে এই আউটপুট দেয় যেমন পূর্বরূপদর্শন সমস্যাগুলি প্রতিরোধ করে সেখানে বলুন, আপনি একটি টাইপো বানান এবং sampleপরিবর্তে টাইপ করুন example

উপরের সমাধানটি ব্যবহার করা উচিত নয় যদি আপনার কাছে ফাঁকা স্থান, ট্যাব অক্ষর, নিউলাইনস, বা উদ্ধৃতি ( "বা ') সম্বলিত ফাইলের নাম থাকতে পারে , কারণ এটি xargsহয় ব্যর্থ হতে পারে বা rmঅসম্পূর্ণ ফাইল নামগুলি দিয়ে খাওয়ায় , যা খারাপ ক্ষেত্রে ভুলটি সরিয়ে ফেলতে পারে নথি পত্র. উপরের কাজটি করার নিরাপদ উপায় হ'ল এটির findঅপারেটর এবং ক্রিয়া দিয়ে এটি করা।

নিম্নলিখিত শব্দটি ধারণ করে এমন সমস্ত ফাইল প্রদর্শন করবে example

find . -name "*example*"  

যদি সেই তালিকাটি সেই ফাইলগুলি হয় যা আপনি মুছে ফেলতে চান -execতবে ফাইলগুলি পাস করার জন্য অ্যাকশনটি ব্যবহার করুন rm

find . -name "*example*" -exec rm -v {} +

দেখুন খুঁজে বার করে ব্যবহার করে আরো সহায়তার জন্য find


1
পাইপিং findআউটপুট grepএবং xargs rmবিপজ্জনক।
গিরিহা

2
@izx: যুক্ত mv(আমার প্রিয় কমান্ড);)
তকাত

1
আমি অন্তত findনিরাপদ উপায়ে ব্যবহার করার উদাহরণ যুক্ত করব , যা ফাইল ব্রেক করে না (এবং সম্ভাব্য ভুল ফাইলগুলি মুছে ফেলবে) যদি ফাইলের নামগুলিতে স্থান, ট্যাব, নিউলাইন "বা 'অক্ষর থাকে। যেমন find . -name "*example*" -exec rm -v {} +mywiki.wooledge.org/UsingFind
geirha

1
@ গিরিহা: find -deleteএত বিপদজনক কেন ? আমি এখানে কিছু বলতাম তবে আমি এটি ছাড়া আর কিছু জানি না যে এটি সম্প্রতি খুঁজে পাওয়া এবং মুছে ফেলা /ছাড়া অপশন ছাড়া শুকনো রান সত্ত্বেও -deleteআমি মুছে ফেলতে চেয়েছি এমন কয়েকটি ফাইল খুঁজে পেয়েছিল। আমি দেখতে পাচ্ছি যে আপনি -exec rmপরিবর্তে সুপারিশ করেন ।
টাকাত

3
@ তাক্কাট -deleteবিপজ্জনক নয় এবং আপনি এটির পরিবর্তে নিরাপদে এটি ব্যবহার করতে পারেন -exec rm {} +। আমি সাধারণত যখন সম্ভব হয় তখন মানক সরঞ্জাম এবং বৈশিষ্ট্যগুলি ব্যবহার করতে পছন্দ করি। -deleteএটি একটি মানহীন, জিএনইউ এক্সটেনশান যা findএতে উবুন্টুতে দুর্দান্ত কাজ করবে, তবে অন্য সিস্টেমে এটি নাও হতে পারে।
গিরিহা

5

হ্যাঁ. একটি পৃথক যুক্তি হিসাবে একটি উদ্ধৃত টিলডে অক্ষরটি আপনার বাড়ির বাড়ীতে প্রসারিত হয়। সুতরাং rm -r ~প্রসারিত হয়েছে rm -r /home/yourusename। সুতরাং আপনি আরএম কে বলেছিলেন যে আপনার হোমডিরের সমস্ত ফাইলকে পুনরাবৃত্তভাবে মুছুন।

টিলডে সম্প্রসারণ কীভাবে কাজ করে তা সম্পর্কে আরও জানতে http://www.gnu.org/software/bash/manual/bashref.html#Tilde- এক্সপেনশন দেখুন।

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