Saya menjalankan skrip Python yang tidak berfungsi dan digunakan sudo
untuk membuat file bernama >
.
Bagaimana saya bisa menyingkirkan file ini?
Tentu saja, ketika saya mencoba sudo rm >
, saya mendapatkan kesalahan bash: syntax error near unexpected token 'newline'
, karena itu berpikir saya sedang mencoba mengarahkan output dari rm
.
Izinnya adalah -rw-r--r--
.
sudo touch >
pada shell akan memberikan kesalahan yang sama.) Anda mengatakan itu dengan skrip Python, mungkin dibuat dengan meneruskan">"
ke beberapaos
fungsi. Jadisudo python <<< 'import os; os.remove(">")'
seharusnya bekerja dengan baik.Jawaban:
Semua ini harus bekerja:
Perhatikan bahwa dua perintah terakhir, yang menggunakan
find
, akan menemukan semua file atau direktori yang disebutkan>
dalam folder saat ini dan semua subfoldernya. Untuk menghindarinya, gunakan GNU find:sumber
find
tidak sukarm
karena bersifat rekursif dan akan menghapus setiap file yang disebutkan dirm
bawah pohon direktori Anda saat ini tidak peduli seberapa dalam.rm
varian) semuanya sama. Hanya ada tiga cara berbeda untuk melindungi nama file itu dari shell. Sebenarnya tidak ada alasan untuk memilih satu dari yang lain.find(1)
? Satu-satunya masalah di sini adalah bahwa metacharacter shell perlu dikutip. Ada sejuta dan satu program berbeda yang dapat menghapus file, tetapi menggunakan apa pun selainrm(1)
hanya mengaburkan jawabannya.sudo find . ! -name . -prune -name '>' -exec rm {} +
.find
tidak menambahkan apa pun untuk menjawab pertanyaan yang diajukan.Anda juga dapat menggunakan Python untuk menghapusnya:
Dengan POSIX
find
:sumber
>
sebagai redirection output.Apa yang akhirnya saya lakukan pada awalnya juga berfungsi:
Ini, tentu saja, varian pada yang lebih sederhana
sudo rm \>
.sumber
Saya mencoba ini sebagai komentar tetapi keluar semua dalam satu baris
sumber
Mengutip karakter sehingga tidak ditafsirkan oleh shell sebagai pengalihan:
Namun, jika Anda memiliki file lain dengan karakter aneh, metode teraman adalah membuka explorer file GUI seperti
nautilus
dan menghapusnya di sana.sumber