Apakah ada utilitas yang selalu meminta pengguna untuk konfirmasi sebelum menjalankan perintah yang mirip dengan cara sudo
meminta kata sandi?
bash
command-line
m33lky
sumber
sumber
cd
danls
?Jawaban:
Apakah Anda ingin berfungsi tanpa mengetik perintah tambahan, mis
Atau hanya ketika pengguna mengetik sesuatu seperti
Atau hanya ketika pengguna mencoba menjalankan perintah tertentu, mis
tapi tidak untuk
Jika opsi 1, itu bisa dilakukan dengan menggunakan preexec hook di zsh, atau perangkap DEBUG di bash.
Jika opsi 2, masukkan sesuatu seperti ini di
/etc/bash.bashrc
atau file startup shell lainnya.Jika opsi 3, Anda dapat memodifikasi
confirm
skrip di atas, atau, beberapa perintah memiliki opsi untuk bertanya sebelum melakukan sesuatu, misalnyarm -i
. Anda bisa menempatkanalias rm='rm -i'
di/etc/bash.bashrc
.sumber
Saya telah bermain dengan bash sedikit dan menemukan hack yang memungkinkan ini terjadi.
Anda dapat menyimpan skrip ini di bawah, misalnya,
confirm-any-command.sh
dansource
di skrip Andabashrc
. Ini akan meminta konfirmasi dari setiap perintah yang akan Anda coba jalankan.Harap dicatat bahwa ini tidak lebih dari peretasan proof-of-concept; Saya ragu itu bisa benar-benar bermanfaat dalam bentuk ini. Jika Anda harus mengkonfirmasi setiap perintah yang Anda ketikkan, Anda akan segera mendapatkan kebiasaan untuk secara otomatis menekan "ya" setelah setiap perintah. Pemetaan mental Anda untuk "akhir perintah" akan berubah dari hanya Enteruntuk Enter, yes, Enter- Anda akan mengetik itu secara keseluruhan, bahkan tidak mencoba untuk menghabiskan beberapa waktu di memverifikasi bahwa Anda benar-benar ingin perintah ini untuk mengeksekusi. Ini kontraproduktif dan tidak akan membantu Anda.
sumber
Allow? 1) yes 2) no #?
baikyes
atauno
bekerja menyebabkan loop tak terbatas (Debian 8)help select
: Anda seharusnya memasukkan1
atau2
bukanyes
atauno
. Retry otomatis untuk input yang tidak valid adalah perilaku yang dimaksudkan (sehingga penulis skrip tidak harus menemukan kembaliwhile
dirinya sendiri, mempertahankan keringkasan dan kejelasan), dan input EOF mengakhiri loop. Mengetahui hal itu, Anda dapat memeriksa sendiri bahwa skrip di atas berfungsi. Saya tidak akan memodifikasinya, karena itu merupakan bukti konsep yang kasar.y e s Enter
contoh Anda