Gibt es ein Dienstprogramm, das den Benutzer immer zur Bestätigung auffordert, bevor ein Befehl ausgeführt wird, der der Art und Weise ähnelt, wie sudo
nach einem Kennwort gefragt wird?
bash
command-line
m33lky
quelle
quelle
cd
undls
?Antworten:
Möchten Sie, dass es funktioniert, ohne einen zusätzlichen Befehl einzugeben, z
Oder nur, wenn der Benutzer so etwas eingibt
Oder nur, wenn der Benutzer versucht, bestimmte Befehle auszuführen, z
aber nicht für
Bei Option 1 kann dies mit dem Preexec-Hook in zsh oder dem DEBUG-Trap in bash erfolgen.
Wenn Option 2, fügen Sie so etwas in eine
/etc/bash.bashrc
andere Shell-Startdatei ein.Wenn Option 3, können Sie das
confirm
obige Skript ändern , oder einige Befehle haben eine Option, die Sie fragen müssen, bevor Sie etwas tun, zrm -i
. Sie könnten setzenalias rm='rm -i'
in/etc/bash.bashrc
.quelle
Ich habe ein bisschen mit Bash gespielt und einen Hack herausgefunden, durch den dies möglich gemacht werden könnte.
Sie können dieses Skript beispielsweise unter
confirm-any-command.sh
undsource
in Ihrem speichernbashrc
. Es wird um Bestätigung jedes Befehls gebeten, den Sie ausführen möchten.Bitte beachten Sie, dass dies nichts weiter als ein Proof-of-Concept-Hack ist. Ich bezweifle, dass es in dieser Form wirklich nützlich sein kann. Wenn Sie jeden von Ihnen eingegebenen Befehl bestätigen müssen, werden Sie sehr bald die Gewohnheit haben, nach jedem Befehl automatisch "Ja" zu drücken. Ihre mental mapping für „Ende des Befehls“ von nur ändern Enterzu Enter, yes, Enter- Sie werden es als Ganzes werden eingeben, haben nicht einmal versucht , einige Zeit zu verbringen auf Überprüfung, ob Sie wirklich diesen Befehl ausführen soll. Dies ist kontraproduktiv und hilft Ihnen nicht.
quelle
Allow? 1) yes 2) no #?
wederyes
nochno
arbeitet, was zu einer Endlosschleife führt (Debian 8)help select
: du sollst eingeben1
oder2
eher alsyes
oderno
. Die automatische Wiederholung für ungültige Eingaben ist beabsichtigtes Verhalten (damit die Skriptschreiberin sich nicht neu erfindenwhile
muss, um Prägnanz und Klarheit zu bewahren), und die EOF-Eingabe beendet die Schleife. Wenn Sie das wissen, können Sie selbst überprüfen, ob das obige Skript funktioniert. Ich werde es nicht modifizieren, da es sowieso ein grober Proof of Concept ist.y e s Enter
Beispiel verwirrt