Saya melakukan sesuatu yang gila di beberapa titik yang membuat file dipanggil -rf
pada sistem file saya.
Sekarang saya tidak tahu cara menghapusnya ...
Saya sudah mencoba:
rm "-rf"
rm \-rf
Ini segera keluar, arrgh!
Adakah yang tahu cara menghapus file ini? Lebih disukai tanpa sengaja membersihkan seluruh folder saya.
rm
file yang dipanggil-rf
dari sistem Anda tanpa mengingat sintaks yang tepat!rm
(di dalamnyaargc
danargv
) Dengan demikian, kedua hasil dalam array["rm", "-rf"]
dilewatkan kerm
, yang melakukan apa yang Anda harapkan.*
ke folder. Sertakan satu nama-rf
juga dan saksikan kesenangan ;-)mkdir './-rf '
(ls --classify, default umum dalam alias shell, akan menambahkan a)Jawaban:
Atau
sumber
getopt
memiliki--
, yang seharusnya berarti alat linux yang paling modern.Pilihan lain:
... mengasumsikan direktori Anda saat ini adalah di mana file berada.
sumber
Atau Anda selalu dapat mengedit direktori dan menghapus file dengan cara itu.
dan kemudian cukup hapus baris dengan file di dalamnya (menggunakan D, dd tidak akan berfungsi).
sumber
vim
memiliki mode dired. Jelas, mengedit direktori aktual itu sendiri dalam editor teks tidak dianjurkan, atau mungkin tanpa hoop jumping ahli nyata. Perhatikan bahwa ituemacs
akan berhasil juga, dan untuk alasan yang sama.Teknik umum untuk menghapus nama file aneh adalah menggunakan.
untuk menemukan nomor file inode dan kemudian gunakan.
Tidak perlu mengingat semua kasus khusus.
sumber
find
punya kekuatan untuk menghapus file.Meskipun saya tahu tentang trik "rm - -filename", umumnya ketika saya entah bagaimana mendapatkan file dengan leading - dalam namanya yang ingin saya hapus, saya memulai file manager GUI dan melakukannya dari sana, untuk menghilangkan peluang. kesalahan.
sumber
Jika Anda hanya ingin memastikan:
sumber
Jika Anda berada di Unix non-GNU di mana Anda merasa diri Anda ditarik kembali ke zaman batu (tidak ada
--
sintaks, tidak ada-inum
saklar untuk menemukan, tidak ada perintah tautan, editor Anda menolak mengedit direktori dll.) Anda masih dapat membantu diri Anda sendiri:Ini akan menyebabkan find memberi makan semua kandidat potensial ke rm yang pada gilirannya akan meminta izin / penolakan untuk setiap file yang diumpankan.
Jika Anda
rm
bahkan tidak mendukung-i
sakelar (HP-UX 10.2 pada PA-RISC 1.1, siapa pun?), Lebih berhati-hatilah:sumber
find
?Mendukung jawaban jleedev , saya akan meningkatkan dengan:
untuk berada dalam mode interaktif dan meminta konfirmasi, sehingga Anda benar-benar yakin dengan apa yang Anda hapus. (Meskipun solusinya baik-baik saja. Ini hanya untuk ketenangan pikiran Anda)
Sebenarnya, bahkan gunakan itu:
untuk memastikan bahwa Anda tidak menggunakan alias apa pun.
sumber
Seperti yang sudah disarankan saya selalu menggunakan sintaks
ketika saya harus menghapus file dengan tanda hubung sebagai awalan karena - mengatakan pada perintah bahwa ia tidak mencari parameter lain tetapi hanya nama file.
Dengan mengingatnya, untuk melindungi folder penting saya dengan penghapusan file yang tidak disengaja, saya digunakan untuk membuat file kosong bernama -i yang biasanya diletakkan di bagian atas daftar file ketika menyelesaikan pencarian *. Jadi perintahnya
ketika dieksekusi pada folder yang dilindungi saya meledak, selama eksekusi, dalam perintah:
dan shell, alih-alih menghapus semuanya dengan segera, berhenti meminta konfirmasi (seperti opsi -i mengharuskan).
sumber
-i
peretasan nama file - "Saya" skeptis, tetapi tes!Terakhir kali saya mengalami masalah ini, saya menyelesaikannya dengan:
ular sanca
impor os
os.remove ("- rf")
sumber
martin clayton benar.
Ini sangat sederhana dan logis. Jika opsi ada itu selalu
-XXX
atau--CCCC
begitu jika Anda meletakkan./
atau path lengkap-rf
tidak dapat dianggap sebagai opsi dan akan dianggap sebagai string normal.Ini bekerja dengan "semua" nama file aneh.
sumber
rm - -rf kebanyakan alat gnu menerima - sebagai penanda akhir opsi
sumber