इंटरप्ट से इनपुट के लिए प्रतीक्षा करते समय Ctrl-C दबाकर टर्मिनल इनपुट छुपाएं read -sp
ऑपरेशन वापस कमांड लाइन पर लौटाता है लेकिन इनपुट दिया गया है जैसे कि यह अभी भी read -s
चल रहा है।'रीड-एस'
उदाहरण
#!/bin/sh
sig_handler() {
echo "SIGINT received"
exit 1
}
trap "sig_handler" SIGINT
read -sp "ENTER PASSWORD: " password
echo
echo $password
जो सामान्य रूप से कार्यान्वित की तरह:
$~ ./example.sh
ENTER PASSWORD:
password
$~ text
-bash: text: command not found
लेकिन अगर आप प्रेस Ctrl-C पर पासवर्ड दर्ज आप
$~ ./example.sh
ENTER PASSWORD: SIGINT received
$~ -bash: text: command not found
मिल जहां पाठ या किसी अन्य के लिए निम्न आदेश जब तक आप reset
के साथ रीफ्रेश नहीं करते हैं तब तक इनपुट के रूप में प्रदर्शित नहीं होता है।
SIGINT प्राप्त करने के बाद आप सामान्य इनपुट में टेक्स्ट कैसे वापस कर सकते हैं? read -p "ENTER PASSWORD: " password
स्पष्ट सुरक्षा कारणों से वांछित नहीं है।
यही है दिलचस्प है, मैं stty समझदार और tput RS1 sig_handler में पहले किसी भी बिना जोड़ा को प्रभावित (परीक्षण अब है कि काम करता है) गलती से इसे निकास 1 या कुछ के नीचे रखा होगा। धन्यवाद – Mike