Existe-t-il un utilitaire qui invite toujours l'utilisateur à confirmer avant d'exécuter une commande similaire à la façon dont le sudo
mot de passe est demandé?
bash
command-line
m33lky
la source
la source
cd
etls
?Réponses:
Voulez-vous que cela fonctionne sans taper une commande supplémentaire, par exemple
Ou seulement lorsque l'utilisateur tape quelque chose comme
Ou seulement lorsque l'utilisateur essaie d'exécuter certaines commandes, par exemple
mais pas pour
Si l'option 1, cela peut être fait en utilisant le hook preexec dans zsh, ou le trap DEBUG dans bash.
Si l'option 2, mettez quelque chose comme ça dans
/etc/bash.bashrc
ou un autre fichier de démarrage du shell.Si l'option 3, vous pouvez modifier le
confirm
script ci-dessus, ou, certaines commandes ont une option à demander avant de faire quelque chose, par exemplerm -i
. Vous pouvez mettrealias rm='rm -i'
en/etc/bash.bashrc
.la source
J'ai un peu joué avec bash et trouvé un hack par lequel cela pourrait être rendu possible.
Vous pouvez enregistrer ce script sous, disons,
confirm-any-command.sh
etsource
dans votre fichierbashrc
. Il vous demandera de confirmer chaque commande que vous tenterez d'exécuter.Veuillez noter que ce n'est rien de plus qu'un hack de preuve de concept; Je doute que cela puisse vraiment être utile sous cette forme. Si vous devez confirmer chaque commande que vous tapez, vous allez très vite prendre l'habitude de cliquer automatiquement sur "oui" après chaque commande. Votre cartographie mentale pour « fin de la commande » passera de juste Enterà Enter, yes, Enter- vous serez en train de taper dans son ensemble, ne même pas essayer de passer un peu de temps à vérifier que vous vraiment voulez que cette commande à exécuter. C'est contre-productif et ne vous aidera pas.
la source
Allow? 1) yes 2) no #?
niyes
nino
travail entraînant boucle infinie (Debian 8)help select
: vous êtes censé entrer1
ou2
plutôt queyes
ouno
. La nouvelle tentative automatique pour les entrées non valides est un comportement voulu (de sorte que le scripteur n'a pas à se réinventerwhile
, en conservant la concision et la clarté), et l'entrée EOF termine la boucle. Sachant cela, vous pouvez vérifier vous-même que le script ci-dessus fonctionne. Je ne vais pas le modifier, car c'est une preuve de concept grossière de toute façon.y e s Enter
exemple