سؤال ما الأمر الذي أحتاج إلى استخدامه لإزالة ملف يسمى `rf`؟


فعلت شيء مجنون في نقطة ما أنشأت ملف يسمى -rf على نظام الملفات الخاص بي.
الآن لا أستطيع معرفة كيفية حذفها ...

لقد حاولت:

rm "-rf"
rm \-rf

هذه مجرد الخروج على الفور ، arrgh!

أي شخص يعرف كيفية إزالة هذا الملف؟ على نحو مفضل دون تنظيف مجلدي بالكامل بدون قصد.


67
2017-10-05 22:06


الأصل


بعض العصب يحاول rm ملف يسمى -rf من النظام الخاص بك دون تذكر بناء الجملة بالضبط! - ChristopheD
لتوضيح سبب عدم نجاحها: يتم تحليل الأسعار والهروب بواسطة shell (عادةً bash) ، ثم يتم تمرير نتيجة التحليل إلى rm (في ذلك argc و argv) وهكذا ، كل من تلك النتيجة في الصفيف ["rm", "-rf"] يتم تمريرها إلى rmالذي يفعل ما تتوقعه. - Thanatos
أعتقد أن هذا أقرب إلى نسخة مكررة من هذه النسخة من تراكم Unix و Linux: unix.stackexchange.com/questions/1519/... - frabjous
هفوة قديمة هي الحصول على ملف مسمى * في مجلد. وتشمل واحد اسمه -rf وكذلك مشاهدة المتعة ؛-) - RBerteig
RBerteig: mkdir './-rf ' (ls --classify ، وهو افتراض شائع في اسم مستعار shell ، سيضيف /)


الأجوبة:


unlink -rf

أو

rm -- -rf

126
2017-10-05 22:07



هذا هو الحل الأكثر فائدة لتعلم المنظمة البحرية الدولية ، لأن "-" لإيقاف معالجة الحجج يتم توحيدها عبر أدوات جنو - Nathan O'Sullivan
لتكون أكثر دقة ، أي شيء يستخدم GNU getopt لديها --والتي تعني أحدث أدوات linux. - Geoffrey Zheng


خيار اخر:

rm ./-rf

... asuming your current directory is the where where the file resides.


60
2017-10-05 22:10





بدلاً من ذلك ، يمكنك دائمًا تحرير الدليل الخاص به وإزالة الملف بهذه الطريقة.

vim .

ثم قم فقط بحذف السطر بالملف عليه (باستخدام D ، لن يعمل dd).


34
2017-10-05 22:36



خدعة لطيفة! [عدة أحرف غير مجدية] - Sergio Acosta
لم أكن أعتقد أن هذا كان يستحق الانجذاب الذي كان عنده عندما رأيت هذه الإجابة لأول مرة بعد ظهر اليوم ، ولكن لم يكن لدي فرصة للتحقق من ذلك vim كان لديه وضع dired. بوضوح ، تحرير الدليل الفعلي نفسه في نص لا ينصح المحرر ، ولا من الممكن دون القفز هوب الخبير الحقيقي. لاحظ أن emacs ستعمل أيضا ، وللسبب نفسه. - RBerteig
نقاط اضافية لاستخدام ذكي فيم! :) - Pierre-Antoine LaFayette
جميل أن تعرف ؛) - schöppi


تقنية عامة لحذف أسماء الملفات الغريبة هي لاستخدام.

 ls -li

للعثور على عدد inode من الملف ثم استخدم.

find ./ -inum <number of file> -delete

لا حاجة لتذكر جميع الحالات الخاصة.


25
2017-10-05 22:48



لم أكن أعرف find كان لديه القدرة على حذف الملفات. - zneak
ويعد هذا أيضًا رائعًا لالتقاط الملفات بأسماء غير معروفة (بدءًا من أحرف المسافة الاحتياطية أو تحتوي على مسافات بيضاء إضافية في النهاية) ، بشرط أن يكون لديك إمكانية الوصول إلى بحث GNU لائق في المربع الخاص بك. - Olfan


على الرغم من أنني أعرف عن خدعة "rm - -filename" ، بشكل عام عندما أحصل على ملف بطريقة ما - في اسمها الذي أريد إزالته ، أبدأ مدير ملفات GUI وأقوم بذلك من أجل القضاء على الفرصة من الاخطاء.


17
2017-10-05 22:13



قد لا يكون لديه واجهة المستخدم الرسومية على الإطلاق ، لذلك قد لا يعمل هذا. - Wuffers
إذا كان الأمر غبيًا وخاطئًا ، فربما يستحق تراجعاً ، لكنني لا أؤمن بتخفيض هذه الإجابة لمجرد أنها "قد لا تعمل". لا ضرر يمكن أن يأتي هذا الاقتراح. - JT.WK
هناك دائما قائد منتصف الليل (أو غيرها من مديري الملفات المستندة إلى الشتائم) لأولئك الذين دون X. - thomasrutter


إذا كنت ترغب فقط في التأكد:

 mv -- -rf remove.-rf
 [[check]]
 rm remove.-rf

9
2017-10-06 07:53





فقط في حال كنت على بعض UNIX غير GNU حيث تشعر نفسك تعود إلى العصر الحجري (لا -- بناء الجملة ، لا -inum قم بالتبديل للبحث ، لا يوجد أمر إلغاء ارتباط ، محررك يرفض تحرير الأدلة إلخ.) لا يزال بإمكانك مساعدة نفسك:

find . -name '-rf' -print | xargs rm -i

سيؤدي هذا إلى إيجاد لإطعام جميع المرشحين المحتملين لإصدار rm والذي بدوره سوف يطلب الإذن / الحرمان لكل ملف واحد يتم تغذيته.

في حالتك rm لا يدعم حتى -i التبديل (HP-UX 10.2 على PA-RISC 1.1 أي شخص؟) ، فقط كن أكثر حذراً:

find . -name '-rf' -print
# check that find's output is exactly and only what you need to delete
find . -name '-rf' -print | xargs rm

4
2017-10-06 10:16



ماذا لو لم يكن لديك نظام حتى find؟ - Lie Ryan
من شأنه أن يكون الشر في الواقع. للأسف ، لا يزال يتعين علي تلبية تثبيت يونكس دون واحد. هل يمكنك إعطائي مؤشر؟ - Olfan
إعطاء بعض التفكير ، كانت إجابتي أكثر ملاءمة كانت السؤال المطروح على serverfault. ليس من المحتمل جدًا أن يكون لدى المستخدمين الفائقين آلات كثيرة قديمة مثل تلك التي أشير إليها. وسوف يتعلم الذين يفعلون ذلك مساعدة أنفسهم. ؛-) - Olfan
+1 ،Olfan ، في الدفاع عنك ، شخص ما يواجه الآن تركة يونيكس في خزانة في مكان ما لا يزال بحاجة إلى مورد لتعلم النصائح والحيل من ... - RBerteig


دعم الجواب جليديف، سأقوم بتحسين مع:

rm -i -- -rf

لكي تكون في وضع تفاعلي وتطلب تأكيدًا ، لذلك يمكنك حقًا التأكد مما تحذفه. (على الرغم من أن الحل على ما يرام. فهو ببساطة لراحة البال)

في الواقع ، حتى استخدام ذلك:

\rm -i -- -rf

للتأكد من أنك لا تستخدم أي أسماء مستعارة.


3
2017-10-06 11:10