मैं प्रोग्राम स्थापित करने के लिए "हां" प्रतिक्रिया कैसे लिखूं?


113

मैं अमेज़ॅन लिनक्स उदाहरणों के साथ काम करता हूं और मेरे पास डेटा को आबाद करने और मेरे साथ काम करने वाले सभी कार्यक्रमों को स्थापित करने के लिए कुछ स्क्रिप्ट हैं, लेकिन कुछ जोड़े पूछते हैं:

Do you want to continue [Y/n]?

और स्थापित रोकें। मैं सभी मामलों में "वाई" का जवाब देना चाहता हूं, मुझे अभी यकीन है कि यह कैसे करना है।


3
पैकेज प्रबंधक के पास एक --nopromptया --noconfirmध्वज हो सकता है जिसका आप उपयोग कर सकते हैं।
ब्लेंडर

जवाबों:


209

'हां' आदेश होगा गूंज 'y' (या जो भी आप इसे करने के लिए कह) अनिश्चित काल के लिए। इसे इस रूप में उपयोग करें:

yes | command-that-asks-for-input

या, यदि एक राजधानी 'वाई' की आवश्यकता है:

yes Y | command-that-asks-for-input

क्या यह केवल हाँ से इनपुट का उपयोग करने के लिए समर्थित कुछ कमांड के साथ काम करता है, है ना? मैंने ओपनस्टैक से नज़र रखने की कोशिश की और यह काम नहीं आया, मुझे लगता है कि उम्मीद सभी परिस्थितियों के लिए अधिक सटीक है
8

1
//, क्या होगा यदि आपको पूर्ण शब्द "हां" दर्ज करना है?
नाथन बसानी

1
yesसीपीयू को अधिकतम करने के लिए जाना जाता है क्योंकि इसके साथ सावधान रहें । stackoverflow.com/a/18164007/720665
डेविड सलामन

अच्छा लगा। इसने मेरे जीवन को काफी हद तक आसान बना दिया। : डी। इसके अलावा -yबैश स्क्रिप्ट के लिए गुगली करना HARD था।
नाथन स्मिथ

1
@DavidSalamon केवल यही मामला है जब यह बिना किसी सीमा, जैसे /dev/nullया STDOUT के कुछ लिख रहा है । एक कमांड पर पाइप किया जाता है, यह केवल पाइप को एक लाइन लिखेगा, जो हर बार प्राप्त कमांड एक को पढ़ता है, और अन्यथा प्रतीक्षा करेगा।
4

68

echo y | command कार्य करना चाहिए।

इसके अलावा, कुछ इंस्टॉलरों में "ऑटो-हां" झंडा होता है। यह -yके लिए apt-getUbuntu पर।


मैं गूंज "giturl no" करने की कोशिश कर रहा हूँ | jspm रजिस्ट्री मेरे शेल स्क्रिप्ट में रजिस्ट्री_नाम jspm-git बनाएं। लेकिन यह विफल रहता है। जिरल में प्रवेश करते समय। कोई उपाय?
मनिस्मुक

एक और उदाहरण: डॉकटर-कम्पोज़ में वहाँ -f( --force) झंडा है जो कमांड के लिए "ऑटो-यस" के रूप में काम करता है जो कुछ हटाता है
luke

यदि आप संकेत एक से अधिक बार पुष्टिकरण के लिए पूछते हैं, तो आप "इको वाई" कैसे करते हैं?
सफक ओजकान

18

आपके पास लक्ष्य सर्वर पर Expect स्थापित करने की क्षमता नहीं हो सकती है। यह अक्सर ऐसा होता है जब कोई लिखता है, कहते हैं, जेनकिंस नौकरी करता है।

यदि ऐसा है, तो मैं askubuntu.com पर निम्नलिखित के जवाब जैसा कुछ विचार करूंगा:

/ubuntu/338857/automatically-enter-input-in-command-line

printf 'y\nyes\nno\nmaybe\n' | ./script_that_needs_user_input

ध्यान दें कि कुछ दुर्लभ मामलों में कमांड को चरित्र के बाद उपयोगकर्ता को एंटर प्रेस करने की आवश्यकता नहीं होती है। उस मामले में नई रूपरेखाओं को छोड़ दें:

printf 'yyy' | ./script_that_needs_user_input

पूर्णता के लिए आप यहां एक दस्तावेज़ का उपयोग कर सकते हैं:

./script_that_needs_user_input << EOF
y
y
y
EOF

या यदि आपका शेल इसे यहां स्ट्रिंग का समर्थन करता है:

./script <<< "y
y
y
"

या आप प्रति पंक्ति एक इनपुट के साथ एक फ़ाइल बना सकते हैं:

./script < inputfile

फिर, इस जवाब का सारा श्रेय Askubuntu.com, lesmana पर उत्तर के लेखक को जाता है ।


//, अगर आपको यह उत्तर पसंद है, तो कृपया askubuntu.com उपयोगकर्ता @lesmana को अपग्रेड करना सुनिश्चित करें।
नाथन बसानी

6

यद्यपि यह आपकी तुलना में अधिक जटिल / भारी-वजन वाला हो सकता है, लेकिन ऐसा करने का एक बहुत ही लचीला तरीका एक्सपेक्ट (या किसी अन्य प्रोग्रामिंग भाषा में डेरिवेटिव में से एक) का उपयोग कर रहा है।

उम्मीद विशेष रूप से पाठ-आधारित अनुप्रयोगों को नियंत्रित करने के लिए डिज़ाइन की गई भाषा है, जो कि वास्तव में आप क्या करना चाहते हैं। यदि आप कुछ और अधिक जटिल करने की आवश्यकता को समाप्त करते हैं (जैसे तर्क के साथ वास्तव में यह तय करना है कि आगे क्या करना है / उत्तर देना है), उम्मीद है कि जाने का रास्ता है।


6

आपको बस -yइंस्टॉल कमांड के साथ डालने की आवश्यकता है ।

उदाहरण के लिए: yum install <package_to_install> -y


3

यदि आप केवल उन चूक को स्वीकार करना चाहते हैं जिनका आप उपयोग कर सकते हैं:

\n | ./shell_being_run

//, इसका मतलब यह कैसे है कि आप चूक स्वीकार करेंगे?
नाथन बसानी

2
में bash, shऔर सबसे प्रणाली है, जो मुझे पता है, आप की जरूरत है अगले आदेश के लिए पाइप अन्यथा यह नहीं होगा। echo\n
2i3r
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.