Jika Anda membuat file di UNIX / Linux dengan karakter khusus, seperti touch \"la*
, Anda tidak dapat menghapusnya dengan rm "la*
. Anda harus menggunakan nomor inode (Anda bisa jika Anda menambahkan \
sebelum nama, saya tahu, tetapi Anda harus menebak sebagai pengguna yang digunakan dalam pembuatan file).
Saya memeriksa halaman manual untuk rm, tetapi tidak disebutkan nomor inode. Melakukan rm inodenumber
tidak berhasil juga.
Apa perintah untuk ini?
-xdev
opsi karena sistem file lain yang terpasang mungkin juga memiliki file yang tidak terkait dengan nomor inode yang sama.Mungkin saya melewatkan sesuatu, tapi ...
Bagaimanapun, nama file tidak memiliki inode, file tidak. Mencoba menghapus file tanpa menghapus semua nama file yang mengarah ke itu akan merusak sistem file Anda.
sumber
Jika Anda benar - benar ingin melakukan ini - dan use case Anda tidak benar-benar terlihat seperti Anda perlu sama sekali, Anda dapat mencoba alat debugging sistem file. Jika Anda rela kehilangan segalanya, itu saja.
Misalnya, untuk ext2 /
debugfs
3/4 perintah memiliki opsi "kill_file" yang tampaknya mengambil inode. Seperti disebutkan dalam respons lain, ini akan merusak sistem file Anda, karena akan ada entri direktori yang menunjuk ke file yang tidak ada. Berjalanfsck
sesudahnya mungkin dapat memperbaiki ini. Tidak mungkin Anda dapat melakukan ini pada sistem file yang dipasang.Tapi saya sangat menyarankan Anda hanya menggunakan melarikan diri / mengutip dan menghapus file seperti itu dengan
rm
perintah biasa seperti yang disebutkan dalam respons sebelumnya - dan gunakanrm -i
untuk keamanan ekstra ketika berhadapan dengan nama file yang mengandung karakter globbing seperti *sumber
Sementara saya sangat merekomendasikan pendekatan "escape the special karakter", selalu ada
clri
perintah ketika Anda benar-benar ingin memperbaiki filesystem yang diperbaiki.sumber
clri
biasanya hanya ada pada sistem Oracle (misalnya SunOS).Anda dapat menghapus file yang dimulai dengan tanda hubung dengan memanggil
rm -- filename
.sumber
Tantangan yang saya miliki adalah menghapus nama file yang dimulai dengan tanda hubung - rm selalu ingin menafsirkannya sebagai nama host. Saya memecahkan ini dengan menggunakan:
sumber