यह कमांड क्यों काम करता है?


0

किसी ने मुझे इस आदेश को समाप्ति की तारीखों को दिखाने के लिए दिखाया:

echo | openssl s_client -connect <server>:7002 2>/dev/null| openssl x509 -noout -dates

उत्पादन:

notBefore=Sep  8 08:00:30 2015 GMT
notAfter=Sep  7 08:00:30 2016 GMT

तो यह काम करता है, लेकिन मैंने पूछा कि आपको गूंज की आवश्यकता क्यों है | इसके सामने यह कारण लगता है जैसे आप सिर्फ कुछ भी नहीं गूंज रहे हैं। उन्होंने कहा कि यदि आप गूंज नहीं डालते हैं तो | कमांड के सामने फिर यह आपको आउटपुट देता है, लेकिन आपको प्रॉम्प्ट वापस नहीं मिलता है, यह सिर्फ लटका रहता है और वास्तव में यह सच है, लेकिन मैं क्यों समझना चाहूंगा।

जवाबों:


3

क्योंकि linux में, echo<ENTER>एक नई लाइन इको करेगा।

खिड़कियों में यह होगा echo. (गूंज / काम भी करता है, और कुछ अन्य चीजें काम करती हैं)

कि जब आप एक संकेत मिलता है तो मारने की तरह होगा।

विभिन्न चीजें एक संकेत से बाहर निकल सकती हैं .. कुछ वर्ण (ओं) को गूँजती हैं, और फिर जब कोई और इनपुट नहीं होता है, तो शीघ्र बाहर निकल जाता है। इनपुट को पाइप करके, यह कीबोर्ड से इनपुट का अनुरोध करने के बजाय उस इनपुट को लेता है और उदाहरण के लिए विंडोज़ में ctrl-z की प्रतीक्षा करता है। (लिनक्स में लाइन की शुरुआत में ctrl-d इसे भी कर देगा, मैंने अभी इसका परीक्षण किया है और इसका उल्लेख यहाँ किया गया है https://unix.stackexchange.com/questions/16333/how-to-signal-the-end -ऑफ़-स्टडिन-इनपुट )

आमतौर पर, जब एक प्रॉम्प्ट मिलता है, तो कभी-कभी किसी भी चरित्र को प्रतिध्वनित करना काम कर सकता है, उदाहरण के लिए, यदि आप करते हैं dir /pऔर आपको एक संकेत मिलता है "जारी रखने के लिए कोई भी कुंजी दबाएं"। फिर प्रयास करें echo a| dir /pऔर यह लिस्टिंग दिखाएगा और आपके लिए कुंजी को हिट करेगा।

लेकिन यह देखें कि इस तरह के कमांड के साथ, यदि यह केवल ENTER के लिए काम करता है, या यदि यह अन्य कुंजियों के लिए काम करता है, और एक और चीज जो वह देख सकता है यदि वह इनपुट के अंत की तलाश में है। उदाहरण के लिए https://stackoverflow.com/questions/33814493/why-cant-this-c-sharp-program-be-piped-to-like-the-more-command-and-what-c

इसलिए विंडोज में अगर आप ज्यादा टाइप करते हैं तो आपको प्रॉम्प्ट मिलता है। यदि आप कुछ वर्णों को टाइप करते हैं, तो इसे इनपुट के रूप में देखता है, और यह इसे आउटपुट करता है, जैसा कि अधिक करता है, लेकिन यह बाहर नहीं निकलता है। यदि फिर भी आप किसी एकल वर्ण को और अधिक करने के लिए प्रतिध्वनित करते हैं, जैसे कि echo a|moreतब यह बाहर निकलता है, और ऐसा इसलिए है क्योंकि यह एक संकेत है जो स्टड को पढ़ने के लिए बाहर निकलना / बंद कर देगा, जब कोई और वर्ण दर्ज करने की आवश्यकता नहीं है।

इसके अलावा अगर आप यह देखना चाहते हैं कि क्या प्रतिध्वनित हुआ है तो आप xxd उदा। आप यह भी देखेंगे कि अगर आप एक प्रतिध्वनित करते हैं तो यह दो बाइट्स है। आप cygwin या vim7 से xxd प्राप्त कर सकते हैं, और निश्चित रूप से लिनक्स के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.