Katakanlah saya ingin memastikan saya menghapus file yang benar terlebih dahulu, jadi saya melakukan sesuatu seperti:
rm -i *
hanya untuk memastikan bahwa saya baik-baik saja dengan file yang saya hapus. Jadi ini akan meminta saya untuk setiap file. Setelah beberapa file, anggaplah saya menyadari bahwa itulah yang ingin saya hapus. Alih-alih CTRL+C
melakukan dan hanya melakukan rm *
, adakah cara saya bisa mengatakan Ya untuk semua ?
Pertanyaan ini datang lebih karena rasa ingin tahu daripada fungsionalitas.
Jawaban:
Tidak.
(Kecuali jika Anda menemukan cara untuk membalik bit 'interaktif' dengan debugger.)
sumber
coreutils/src/remove.c:335
→coreutils/lib/yesno.c:46
(dihasilkan) →rpmatch(3)
: "mengembalikan 0 untuk respons negatif yang diakui (" tidak "), 1 untuk respons positif yang diakui (" ya "), dan -1 ketika nilai respons tidak dikenali"Nah, ini tidak benar-benar menjawab pertanyaan Anda. Namun alih-alih menggunakan
rm -i
, pertimbangkanrm
untuk aliasrm -I
:Halaman manual menyatakan:
di Anda
~/.bashrc
, masukkan:ini sebenarnya berguna!
sumber
Jawabannya adalah ya, menggunakan kode ini:
$ yes "yes" | rm -vRI directory
sumber
Cukup periksa dulu menggunakan
ls *.bla
lalurm -f *.bla
mungkin?Gunakan dengan hati-hati!
sumber
Jika Anda menjalankan di layar (ide bagus secara umum), Anda dapat melakukan:
Ini akan menyebabkan layar menjalankan perintah 'ya' dengan y sebagai output, dan mengarahkan output tersebut ke program yang sedang berjalan (rm -i).
sumber
Ini dapat dilakukan dengan mengganti deskriptor file aplikasi dengan cepat. Anda akan memerlukan file perantara.
Anda dapat menggunakan gdb dan pipa bernama seperti ini (dengan asumsi Anda menggunakan lebih banyak terminal, Anda harus menggunakan layar atau yang lainnya):
Kemudian ketikkan perintah berikut di gdb, ganti PID
Ini menggantikan keyboard dengan pipa bernama untuk rm.
Sekarang Anda harus mengisi pipa yang disebutkan
rm akan membaca pipa dan menimpa segalanya.
sumber
rm
proses di latar belakang denganCtrl+Z
.rm -i *
perintah)-i
Enter
untuk menjalankan perintahfg %1
Ctrl+C
sumber
5s/fg/kill/; 6d