Bagaimana Anda menghapus folder bernama * in / from bash?

8

Katakanlah saya punya folder bernama di *bawah /. Saya tahu bahwa perintah umum seperti rm -rf * tidak akan berfungsi. Ada bantuan?

pengguna160936
sumber
2
Secara teknis, rm *akan berfungsi untuk menghapus folder itu.
Kolonel Panic

Jawaban:

7

gunakan perintah singkat ini:

rm /\*
Serge
sumber
1
Itu tidak akan berhasil - ini adalah direktori.
naught101
1
Kemudian gunakan 'rmdir / \ *' sebagai gantinya. Opsi lainnya adalah menggunakan 'rm -rf / \ *'. Tetapi melakukan yang terakhir berbahaya jika Anda melakukan kesalahan.
Serge
14

Anda bisa mengutip argumen untuk mencegah pemrosesan oleh shell.

rm -r '/*'

Uji dengan aman menggunakan ls(dalam folder yang berisi file):

$ ls '*'
ls: *: No such file or directory

Dalam hal ini, tanda kutip ganda akan berfungsi juga, tetapi jika ada yang $terlibat, mereka tidak akan melakukannya, karena shell akan menganggap itu variabel:

$ ls "foo$bar"
ls: foo: No such file or directory
$ ls 'foo$bar'
ls: foo$bar: No such file or directory

Untuk GNU rm, Anda juga dapat menambahkan --sebelum argumen nama file untuk mencegah mereka diurai sebagai argumen. Ini memungkinkan Anda untuk menghapus file yang dinamai -rftanpa masalah.

Daniel Beck
sumber
Tidak dibutuhkan. Anda dapat dengan mudah melarikan diri dari '*' sehingga tidak diperluas oleh shell sebagai Serge menjawab.
darnir
5
@darnir Anda tidak perlu menggunakannya jika tidak suka. Tetapi Anda harus tahu karakter mana yang harus dihindari ketika menggunakan pendekatan Serge (pertimbangkan &), dan melarikan diri secara individual, yang dapat dengan mudah menjadi lebih banyak upaya daripada mengutip satu kali. Karena itu saya menganggap individu yang melarikan diri lebih rendah dan memposting alternatif ini.
Daniel Beck
3
@Jadi, saya tidak mengatakan jawaban Anda buruk. Itu menyelesaikan pekerjaan, dan diterima . Namun, jika ada beberapa (cukup berbeda) cara untuk mencapai sesuatu dengan pro dan kontra yang berbeda, jangan ragu untuk mendaftar semuanya. Mereka mungkin tidak bekerja di semua situasi, jadi ada baiknya memilih alternatif. Harap perhatikan juga bahwa pengguna dengan masalah yang serupa (tidak identik) mungkin sampai pada pertanyaan dari Google. Ini juga merupakan ide bagus untuk memperluas ruang lingkup jika mengarah ke pertanyaan yang dapat membantu lebih banyak orang. Menulis jawaban cakupan yang lebih luas adalah awal di sana.
Daniel Beck
1
Saya tidak memiliki tujuan untuk mendapatkan semua jawaban saya diterima dan dengan luka tertinggi. Saya menghabiskan beberapa hari (akhir pekan ini) dengan beberapa situs ini. Kesan pertama adalah bahwa saya bisa membagikan pengetahuan saya kepada orang-orang, inilah mengapa saya mulai memberikan jawaban. Pada SO saya mendapat 760 poin dalam tiga hari ini. Ya, beberapa jawaban saya tidak berkualitas tinggi dari berbagai titik. Tetapi semuanya benar. Tapi sekarang saya melihat bahwa kebanyakan orang yang mengajukan pertanyaan di sini - adalah siswa sekolah yang tidak ingin menghabiskan waktu untuk mencari solusi sendiri. Untuk apa aku akan menghabiskan waktuku?
Serge
1
@Serge Tidak yakin tentang apa komentar Anda. Dari apa yang saya lihat setelah Anda menyebutkannya, Anda memiliki awal yang mengesankan untuk berkontribusi ke situs. Jika ada sesuatu yang dapat saya bantu dengan Anda dalam menggunakan situs-situs tersebut, atau sesuatu yang ingin Anda diskusikan, silakan ping saya di chat. Saya di UTC + 2, jadi Anda mungkin tidak segera mendapat balasan. Mengenai pertanyaan "pemula": Ingatlah bahwa beberapa informasi tidak mudah ditemukan. Membaca bashhalaman manual lengkap perlu beberapa saat jika Anda tidak tahu apa yang harus dicari.
Daniel Beck