উত্তর:
আপনি কি অতিরিক্ত কমান্ড টাইপ না করে এটি কাজ করতে চান?
$ rm file
অথবা শুধুমাত্র যখন ব্যবহারকারী কিছু পছন্দ করে
$ confirm rm file
অথবা শুধুমাত্র যখন ব্যবহারকারী নির্দিষ্ট কমান্ডগুলি চালনার চেষ্টা করে, যেমন
$ rm file
কিন্তু না
$ echo "Hello"
বিকল্প 1, যদি এটি zsh এ প্রাইসেক হুক বা ব্যাশে 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।
আমি কিছুটা বাশ নিয়ে খেলেছি এবং একটি হ্যাক বের করেছি যার দ্বারা এটি সম্ভব হয়েছিল।
#!/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। এটি প্রতিটি আদেশের নিশ্চিতকরণের জন্য জিজ্ঞাসা করবে আপনি কার্যকর করার চেষ্টা করবেন।
অনুগ্রহ করে নোট করুন যে এটি একটি প্রুফ অফ কনসেপ্ট হ্যাক ছাড়া আর কিছুই নয়; আমি সন্দেহ করি যে এটি এই ফর্মটিতে আসলেই কার্যকর হতে পারে। আপনার টাইপ করা প্রতিটি কমান্ডটি যদি আপনাকে নিশ্চিত করতে হয় তবে খুব শীঘ্রই প্রতিটি কমান্ডের পরে স্বয়ংক্রিয়ভাবে "হ্যাঁ" চাপার অভ্যাস অর্জন করবেন। "কমান্ড শেষে" জন্য আপনার মানসিক ম্যাপিং শুধু থেকে পরিবর্তন করতে হবে Enterকরতে Enter, yes, Enter- আপনি এটি সামগ্রিকভাবে টাইপ করা হবে, এমনকি যাচাই করছে যে আপনি উপর কিছু সময় ব্যয় করার চেষ্টা না সত্যিই এই কমান্ডটি চালাবার চাই। এটি প্রতিক্রিয়াশীল এবং আপনাকে সাহায্য করবে না।
Allow? 1) yes 2) no #? yesno
help select: আপনি ইনপুট অনুমিত করছি 1বা 2বদলে yesবা no। অবৈধ ইনপুটগুলির জন্য স্বয়ংক্রিয় পুনরায় চেষ্টা হ'ল আচরণ (যাতে স্ক্রিপ্ট লেখককে whileনিজেকে পুনরায় উদ্ভাবন করতে হবে না , সংক্ষিপ্ততা এবং স্পষ্টতা বজায় রাখতে হবে) এবং ইওএফ ইনপুট লুপটি বন্ধ করে দেয়। এটি জেনে আপনি নিজে যাচাই করতে পারবেন যে উপরের স্ক্রিপ্টটি কাজ করে। আমি এটি সংশোধন করব না, যেহেতু এটি কোনওভাবেই ধারণার একটি অশোধিত প্রমাণ।
y e s Enterউদাহরণ দিয়ে বিভ্রান্ত হয়েছি
প্রথমে টার্মিনালটি খুলুন।
তারপরে, টাইপ করুন
cd ~
touch .sure
chmod 700 .sure
এরপরে .সুর করুন এবং এটি ভিতরে পেস্ট করুন।
#!/bin/bash --init-file
PS1='> '
alias y='
$1
exit
'
alias n='killall Terminal'
echo ''
echo 'Are you sure? Answer y or n.'
echo ''
এর পরে, ফাইলটি বন্ধ করুন।
~/.sure ; ENTER COMMAND HERE
এটি আপনাকে কমান্ডটি চালিয়ে যাওয়ার আগে নিশ্চিত কিনা একটি প্রম্পট দেবে।
cdএবংls?