sudo
パスワードを要求するのと同じようなコマンドを実行する前に、常にユーザーに確認を求めるユーティリティはありますか?
sudo
パスワードを要求するのと同じようなコマンドを実行する前に、常にユーザーに確認を求めるユーティリティはありますか?
回答:
余分なコマンドを入力せずに機能させますか?
$ rm file
または、ユーザーが次のようなものを入力したときのみ
$ confirm rm file
または、ユーザーが特定のコマンドを実行しようとした場合のみ、たとえば
$ rm file
しかしではない
$ echo "Hello"
オプション1の場合、zshのpreexecフック、またはbashのDEBUGトラップを使用して行うことができます。
オプション2の場合、このようなもの/etc/bash.bashrc
または他のシェルスタートアップファイルを挿入します。
confirm() {
echo -n "Do you want to run $*? [N/y] "
read -N 1 REPLY
echo
if test "$REPLY" = "y" -o "$REPLY" = "Y"; then
"$@"
else
echo "Cancelled by user"
fi
}
オプション3の場合、confirm
上記のスクリプトを変更できます。または、一部のコマンドには、何かを行う前に確認するオプションがありますrm -i
。あなたは置くことができる
alias rm='rm -i'
の中で/etc/bash.bashrc
。
私はbashで少し遊んで、これを可能にするハックを見つけました。
#!/bin/bash
debug_trap () {
echo "executing $BASH_COMMAND"
echo "Allow?"
select choice in yes no
do
if [ "$choice" = "yes" ]
then break
elif [ "$choice" = "no" ]
then return 1
fi
done
}
shopt -s extdebug
trap debug_trap DEBUG
あなたは、下のこのスクリプトを保存すると言う、することができますconfirm-any-command.sh
し、source
それはあなたにbashrc
。実行しようとする各コマンドの確認を求めます。
これは概念実証のハックに過ぎないことに注意してください。私はそれがこの形で本当に役立つことができるとは思いません。入力するすべてのコマンドを確認する必要がある場合は、各コマンドの後に自動的に「yes」を押す習慣をすぐに身につけます。「コマンドの終わり」のためのあなたの精神的なマッピングは、ちょうどから変更されますEnterとEnter、yes、Enter-あなたは、全体として、それを入力します、でもあなたがいることを検証する上でいくつかの時間を過ごすためにしようとしていない、本当に、このコマンドを実行します。これは逆効果であり、役に立ちません。
Allow? 1) yes 2) no #?
どちらyes
もno
仕事原因無限ループ(Debianの8)
help select
:あなたが入力になっている1
か2
ではなく、yes
かno
。無効な入力の自動再試行は意図された動作であり(スクリプト作成者がwhile
自分で再発明する必要がなく、簡潔さと明確さを維持する必要があります)、EOF入力はループを終了します。上記のスクリプトが機能することを確認できます。とにかくそれは大まかな概念実証なので、私はそれを修正しません。
y e s Enter
例に混乱しました
cd
とls
?