लिंक किए गए लेख में प्रयुक्त सिंटैक्स में समस्या है। यह समझने के लिए कि वास्तव में क्या गलत है, आइए नजर डालते हैं man wall:
से उपयोग man wall:
wall [file]
Wall displays the contents of file or, by default, its standard input
इसलिए इसके संदेश के लिए दो स्रोतों में से किसी एक को wallस्वीकार करता है ।
फ़ाइल का नाम तर्क
किसी भी कमांड लाइन तर्क को wallफ़ाइल नाम होना चाहिए। जैसा कि यह बताने का कोई विश्वसनीय तरीका नहीं है कि क्या तर्क संदेश या फ़ाइल नाम के रूप में है, wallमानेंगे कि यह बाद वाला है, मानक इनपुट पर आने वाली किसी भी चीज़ को अनदेखा करें , और उस फ़ाइल से संदेश पढ़ने का प्रयास करें।
दिए गए मामले में, यह फ़ाइल से पढ़ने की कोशिश करता है who's out thereऔर इसे नहीं ढूंढता है। ध्यान दें कि फ़ाइल से पढ़ना आमतौर पर सुपरयुसर के लिए प्रतिबंधित है। यदि आप wall "who's out there"एक अनपेक्षित उपयोगकर्ता के रूप में निष्पादित होते हैं , तो संभावना है कि इसका आउटपुट रहा होगा;wall: will not read who's out there - use stdin.
मानक इनपुट
यदि इसकी कमांड लाइन पर फ़ाइल नाम तर्क नहीं मिलता है, तो यह मानक इनपुट से पढ़ना शुरू कर देगा। कमांड के मानक इनपुट को जानकारी खिलाने के कई तरीके हैं। एक यूनिक्स पाइप का उपयोग करना है । एक पाइपलाइन अपने बाएं-साइड कमांड के मानक आउटपुट को अपने दाहिने-साइड कमांड के मानक इनपुट से जोड़ेगी:
$ echo "who's out there" | wall
एक अन्य तरीका यहां एक दस्तावेज़ का उपयोग करना है । एक here documentशेल कंस्ट्रक्शन है जो एक स्ट्रिंग (अपनी खुद की एक लाइन पर एक निर्दिष्ट अंत मार्कर तक) को सीधे एक कमांड के मानक इनपुट तक पहुंचाता है, एक अलग कमांड के मध्यवर्ती चरण के बिना उस आउटपुट का उत्पादन करता है:
$ wall << .
who's out there?
.
यह "यहां दस्तावेजों का बेकार उपयोग" होगा, क्योंकि डिफ़ॉल्ट रूप से टर्मिनल खुद के wallमानक इनपुट से जुड़ा wallहोगा और इसे तब तक पढ़ना शुरू करेगा जब तक कि यह एक अंत-फ़ाइल चरित्र प्राप्त नहीं करता ( Ctrl+D):
$ wall
who's out there?
^D
जैसा कि रिच होमोलका ने टिप्पणी में उल्लेख किया है, कुछ गोले समर्थन करते हैं here stringsजो कमांड या एंड मार्कर के बिना शाब्दिक स्ट्रिंग को पारित करने की अनुमति देते हैं:
$ wall <<< "who's out there?"
सभी wallमानक इनपुट के लिए कुछ खिलाते हैं । जबकि अंतर यह है कि एक पाइप लाइन इसे करने के लिए एक और आदेश के उत्पादन में जोड़ता है here documentsऔर here stringsस्ट्रिंग सीधे गुजरती हैं। यहां बाद के दो का फायदा एक सौंदर्यवादी है, क्योंकि echoपाइप उदाहरण से कमांड एक शेल निर्मित कमांड है, इसलिए यह wallसभी मामलों में शेल का इनपुट प्रदान करेगा ।
echo xxx | yyyसिंटैक्स से बचने के लिए एक और प्रारूप है , जो मुझे स्पष्ट लगता हैwall <<<'your message'