Verifikasi rm ganda di zsh

15

Ketika saya melakukan rm * di zsh, saya mendapatkan sesuatu seperti ini:

2014-06-08 10:14:23 $ rm *
zsh: sure you want to delete all the files in /home/assay/assay/log [yn]? y
rm: remove regular file `development.log'? y

Pertama zsh bertanya apakah saya yakin saya ingin menghapus semua, dan kemudian rm meminta setiap file tertentu.

Bagaimana saya bisa mendapatkan verifikasi zsh?

ardochhigh
sumber
3
Gunakan rm -f ./*. Secara default, rmtidak meminta apa pun kecuali Anda tidak memiliki izin tertulis untuk file tersebut. Mungkin Anda punyaalias rm='rm -i'
Stéphane Chazelas
Oh itu pasti - Saya menjalankan penghapusan dari dalam cangkang Vagrant, dan file-file di-host pada sistem file laptop. Terima kasih
ardochhigh
2
Hanya sebuah catatan, zsh masih meminta pada "rm -rf *", ini dapat dinonaktifkan dengansetopt rmstarsilent
Matt

Jawaban:

29

Pesan "zsh: yakin Anda ingin menghapus semua file" adalah fitur zsh, secara khusus dipicu dengan menjalankan perintah yang disebut rmdengan argumen yang ada *atau something/*sebelum ekspansi glob. Anda dapat mematikan ini dengan setopt rm_star_silent.

Pesan "rm: remove file biasa" berasal dari rmperintah itu sendiri. Ini tidak akan muncul secara default, itu hanya muncul ketika rmdipanggil dengan opsi -i. Jika Anda tidak ingin pesan ini, jangan lewat opsi itu. Bahkan tanpa -i, rmmeminta konfirmasi (dengan pesan yang berbeda) jika Anda mencoba untuk menghapus file read-only; Anda dapat menghapus konfirmasi ini dengan melewati opsi -f.

Karena Anda tidak meneruskan -ipada baris perintah, rmmungkin merupakan alias untuk rm -i(bisa juga berupa fungsi, perintah pembungkus non-standar, atau alias berbeda, tetapi alias rm -isejauh ini merupakan yang paling masuk akal). Beberapa konfigurasi default termasuk alias rm='rm -i'dalam file inisialisasi shell mereka; ini bisa berupa sesuatu yang distribusi atau administrator sistem Anda atur, atau sesuatu yang Anda ambil dari suatu tempat dan ditambahkan ke file konfigurasi Anda kemudian lupa. Periksa ~/.zshrcdefinisi alias untuk Anda rm. Jika Anda menemukannya, hapus. Jika Anda tidak menemukannya, tambahkan perintah untuk menghapus alias:

unalias rm
Gilles 'SANGAT berhenti menjadi jahat'
sumber
6

Perintah yang benar untuk menonaktifkan verifikasi ganda tampaknya setopt rm_star_silent. Untuk mengaktifkan verifikasi ganda lakukan setopt no_rm_star_silent.

Untuk informasi lebih rinci, lihat halaman manual untuk zshoptions man zshoptionsatau http://linux.die.net/man/1/zshoptions


sumber
atauunsetopt rm_star_silent
evandrix
1

Jika Anda menggunakan oh-my-zsh, plugin common-alias menyertakan rm -i alias.

https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/common-aliases/common-aliases.plugin.zsh

Woohoou
sumber
1
Meskipun tautan ini dapat menjawab pertanyaan, lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah. - Dari Ulasan
jayhendren
@jayhendren - ini bukan tautan ke dokumentasi, ini tautan ke sesuatu yang harus dipasang untuk memperbaiki masalah ...
Wouter Verhelst