Bagaimana saya bisa menghapus file atau direktori yang disebut "\"?


20

Saya menggunakan terminal pada mesin Ubuntu dan ada file yang ingin saya hapus. Nama file adalah \(hanya garis miring terbalik).

Sekarang biasanya saya hanya akan melakukannya

rm filename

Namun jika saya melakukannya rm \maka saya pikir saya mencoba untuk menulis perintah multi-line.

Bagaimana saya bisa menghapus file ini? Saya tahu bahwa saya hanya bisa menggunakan sistem file GUI, tapi itu tidak terlalu efisien.

Jadi, bagaimana saya bisa menghapus (di terminal) file yang dipanggil \?


1
Mengapa Anda memiliki file dengan nama itu? (Itu bahkan tidak membiarkan saya meletakkannya di codeblok di sini di komentar ini!)
AJMansfield

7
Lebih asyiknya mencoba menghapus file bernama <BEL>, alias Ctrl-G jika saya ingat dengan benar. Setiap kali Anda melakukan ls beep Keyboard pada Anda sampai Anda (a) menemukan tak terlihat berkas; dan (b) menentukan cara menghapus file dengan hanya satu karakter yang tidak dapat dicetak dalam namanya.
Pieter Geerkens

1
Lebih penting lagi, bagaimana Anda menghapus file bernama "/"?
Curt

1
@Curt fsck. Serius. Jika file bernama /ada, sistem file Anda rusak.
zwol

2
Saya selalu menyukai file dengan nama *saya sendiri ...
RBerteig

Jawaban:


48

Gunakan rm \\(lepas backslash dengan backslash lain). Perhatikan bahwa ini juga berfungsi sama, untuk direktori bernama \(menggunakan salah satu rmdir, atau rmdengan -rbendera).

Contoh:

> demo mkdir
> demo cd
> sentuh \\
> ls -l
total 0
-rw ------- 1 pengguna hennes 0 Jul 29 20:25 \
> rm \\
> ls -l
total 0

3
Atau, di bawah prinsip yang sama, rm '\'(tetapi tidak rm "\" ).
evilsoup

2
@evilsoup hanya untuk memberikan beberapa klarifikasi tambahan tentang itu, \ karakter tersebut digunakan sebagai karakter pelolosan dalam string dibatasi tanda kutip ganda. Mengatakan rm "\"akan diurai menjadi string yang tidak tertutup, karena tanda kutip kedua digunakan dengan karakter pelarian (dan dengan demikian akan diurai sebagai karakter tanda kutip ganda itu sendiri, dan bukan akhir dari string). Dengan demikian, terminal akan menunggu sampai Anda menyelesaikan string dengan yang lain ". Metode yang setara untuk menggunakan tanda kutip ganda di sini adalah rm "\\"(yang secara langsung setara dengan keduanya rm '\'dan rm \\ , seperti yang sudah Anda konfirmasi).
Terobosan

15

Taktik umum untuk menghapus file secara manual dengan karakter canggung dalam namanya adalah

rm -i ./*

Ini akan meminta Anda untuk memilih apakah akan menghapus setiap file di direktori atau tidak.


3
Atau, lajang itu adalah arang tunggal. rm -i ./?
Hennes

1
Ya. Jika Anda dapat menulis bola dunia yang lebih spesifik daripada ./*, itu selalu merupakan ide bagus, terutama ketika melakukan sesuatu yang merusak.
zwol

4
+1 untuk awalan glob Anda dengan./
evilsoup

12

Anda juga dapat memutuskan tautan dengan merujuk inode file

linus ~/test $ touch \\
linus ~/test $ ls -li
total 0
15204561 -rw-r--r-- 1 pat sudo 0 Jul 29 23:03 \
linus ~/test $ find . -inum 15204561 -exec rm -v {} \;
removed `./\\'
linus ~/test $ ls -li
total 0
linus ~/test $ 

0

Silakan periksa inode file terlebih dahulu. ls -li

137791 -rw-rw-r--. 1 svr svr 366 11 Mar 15:57

inode "\" adalah "137791 dan kemudian gunakan perintah find untuk menghapus" \ "dengan nomor inode.

temukan. -inum 137791 -exec rm -i {} \;

rm: hapus file biasa `./ \ '? iya nih

"\" akan dihapus kemudian.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.