2012-06-11 14 views
6

मैं एक बैश स्क्रिप्ट लिख रहा हूं जिसमें मैंने इनपुट से एकल वर्ण पढ़े हैं। मैं read -n 1 -s का उपयोग कर ऐसा करता हूं। -n 1 केवल एक ही चरित्र को पढ़ना है; -s "मूक" मोड है, जिसमें टाइप किए गए वर्ण दिखाई नहीं देंगे।टाइप किए गए वर्णों को प्रदर्शित होने से रोकें (जैसे टर्मियोस में "गूंज" विशेषता अक्षम करना)

समस्या यह है कि जब वर्तमान में निष्पादित आदेश read नहीं है (जब भी बैश स्क्रिप्ट में कुछ अन्य आदेश निष्पादित किए जा रहे हैं), तो चरित्र टर्मिनल में प्रदर्शित होता है।

यह टर्मिनल में किसी प्रोग्राम का सामान्य व्यवहार है। इसे अक्षम करने के लिए, एक सामान्य रूप से इको मोड अक्षम करता है, उदाहरण के लिए टर्मियो लाइब्रेरी का उपयोग करना।

मैं इसे एक बैश स्क्रिप्ट में कैसे प्राप्त कर सकता हूं?

मैं शुद्ध बैश/यूनिक्स कमांड में समाधान पसंद करता हूं (बिना अन्य स्क्रिप्टिंग भाषाओं जैसे पायथन, पर्ल इत्यादि)।

उत्तर

14
stty -echo 
# Anything they type won't output here 
stty echo 
# Now it will 
+1

हाँ। वह तेज़ था :) धन्यवाद! (मैं 12 मिनट में स्वीकार कर सकता हूं।) – leemes