ปัญหาอยู่ในไวยากรณ์ที่ใช้ในบทความที่เชื่อมโยง เพื่อให้เข้าใจถึงสิ่งที่ผิดพลาดเรามาดู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และไม่พบมัน โปรดทราบว่าการอ่านจากไฟล์มักจะ จำกัด อยู่ที่ superuser หากคุณดำเนินการwall "who's out there"ในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษน่าจะเป็นผลลัพธ์ที่ได้wall: will not read who's out there - use stdin.
อินพุตมาตรฐาน
หากไม่ได้รับอาร์กิวเมนต์ชื่อไฟล์ในบรรทัดคำสั่งมันจะเริ่มอ่านจากอินพุตมาตรฐาน มีหลายวิธีในการฟีดข้อมูลไปยังอินพุตมาตรฐานของคำสั่ง หนึ่งคือการใช้ท่อยูนิกซ์ ไพพ์ไลน์จะเชื่อมต่อเอาต์พุตมาตรฐานของคำสั่ง lefthand-side เข้ากับอินพุตมาตรฐานของคำสั่งด้านขวา:
$ echo "who's out there" | wall
อีกวิธีหนึ่งคือการใช้ที่นี่เอกสาร A here documentเป็นโครงสร้างของเชลล์ที่ส่งผ่านสตริง (จนถึงเครื่องหมายสิ้นสุดที่ระบุบนบรรทัดของตนเอง) โดยตรงไปยังอินพุตมาตรฐานของคำสั่งโดยไม่มีขั้นตอนกลางของการมีคำสั่งที่ชัดเจนสร้างเอาต์พุตนั้น:
$ wall << .
who's out there?
.
นี่จะเป็น "การใช้เอกสารไร้ประโยชน์ที่นี่" โดยค่าเริ่มต้นเทอร์มินัลเองจะเชื่อมต่อกับwallอินพุตมาตรฐานและwallจะเริ่มอ่านจากมันจนกว่าจะได้รับอักขระสิ้นสุดไฟล์ ( Ctrl+D):
$ wall
who's out there?
^D
ตามที่อุดมไปด้วย Homolkaสังเกตเห็นในความคิดเห็นเปลือกบางสนับสนุนhere stringsซึ่งอนุญาตให้ผ่านสตริงตัวอักษรโดยไม่ต้องคำสั่งหรือเครื่องหมายสิ้นสุด:
$ wall <<< "who's out there?"
ทั้งหมดป้อนบางสิ่งบางอย่างให้wallเป็นอินพุตมาตรฐาน ความแตกต่างคือไพพ์ไลน์เชื่อมต่อเอาต์พุตของคำสั่งอื่นไปยังมันในขณะที่here documentsและhere stringsส่งผ่านสตริงโดยตรง ข้อได้เปรียบที่สองของที่นี่คือความสวยงามเนื่องจากechoคำสั่งจากตัวอย่างไปป์เป็นคำสั่งในตัวของเชลล์ดังนั้นมันจะเป็นเชลล์ที่ให้wallอินพุตในทุกกรณี
echo xxx | yyyไวยากรณ์ซึ่งฉันพบ cludgywall <<<'your message'