ทำไม 'echo --help' ไม่ให้หน้าช่วยเหลือของ echo?


20

ฉันลอง 'man echo' ใน Bash และบอกฉันว่า 'echo --help' จะแสดงความช่วยเหลือจากนั้นก็ออกและในทำนองเดียวกัน 'echo --version' จะออกเวอร์ชั่นและออก แต่ทำไมมันไม่ทำงาน 'echo --help' เพียงพิมพ์ '--help' อย่างแท้จริง


2
หมายเหตุ: การผลิตของข้อความช่วยเหลือว่าด้วยการecho --helpเป็นข้อผิดพลาด ลองนึกภาพว่าจะเกิดอะไรขึ้นหากคุณ: printf "The option you entered is: " ; echo "$opt"และตัวแปรเชลล์optมีข้อความ--helpอยู่ ตามมาตรฐาน POSIX echoไม่ได้รับอนุญาตให้ทำงานในลักษณะนี้ แต่ก้องกนูนั้นไม่สอดคล้องกันอย่างน่ารังเกียจ
..

1
@R .. ดังนั้นecho -eและecho -nยังเป็นข้อผิดพลาดโดยตรรกะของคุณ?
Tyilo

@Tyilo: ดูข้อกำหนดใน POSIX หรือรายงานข่าวของฉันที่นี่: etalabs.net/sh_tricks.html
R ..

@R .. ลองนึกภาพว่าจะเกิดอะไรขึ้นถ้าคุณ: printf "ตัวเลือกที่คุณป้อนคือ:"; echo "$ opt" และตัวแปร shell opt มีข้อความ -e หรือ -n
Tyilo

@Tyilo: แทนที่จะอธิบายอีกครั้งฉันชอบหน้าเว็บที่ฉันได้อธิบายคำตอบของคำถามนั้นแล้ว
..

คำตอบ:


26

man echoที่เกี่ยวข้องกับโปรแกรมecho GNU echo สนับสนุน--helpตัวเลือกเช่นเดียวกับคนอื่น ๆ เมื่อคุณเรียกใช้echoในทุบตีคุณแทนได้รับในตัวของมันechoซึ่งไม่ได้

ในการเข้าใช้echoโปรแกรมแทนที่จะสร้างขึ้นภายในคุณสามารถให้เส้นทางกับมันได้:

/bin/echo --help

หรือใช้enableคำสั่งของ Bash เพื่อปิดการใช้งานเวอร์ชั่นในตัว:

$ enable -n echo
$ echo --help

Bash มีคำสั่งพื้นฐานหลายอย่างในตัวเพราะมันเร็วกว่าเล็กน้อยที่จะทำเช่นนั้น แต่คุณสามารถข้ามมันแบบนี้ได้ทุกเมื่อที่ต้องการ


zshทำหน้าที่ฉันที่เหมาะสมสำหรับการใช้ enableทำงานอย่างไร
Michael Homer

@MichaelHomer ดังนั้นเวอร์ชันในตัวบางอย่างอาจแตกต่างจาก ... ต้นฉบับ? หากมีความแตกต่างชื่อของคำสั่งดั้งเดิมทั้งหมดรวมถึง 'โปรแกรม echo' ตามที่คุณกล่าวถึงคืออะไร หรือเราใช้ศัพท์อะไรเพื่อแยกพวกมันออกจากเวอร์ชั่นในตัว?
booksee

1
@booksee: ใช่พวกเขาสามารถแตกต่างกัน echoโดยเฉพาะอย่างยิ่งGNU มีส่วนขยายจำนวนมากด้านบน POSIX และ Bash มีechoเพียงส่วนน้อยเท่านั้น ไม่มีชื่อทั่วไปที่ฉันสามารถนึกถึงคำสั่งที่สร้างขึ้นโดยเงาภายใน มีไม่มากเพื่อที่คุณจะต้องที่หนึ่ง: echo, test, [และpwdเป็นคนที่คุณกำลังมีแนวโน้มที่จะพบ
Michael Homer

@Gnouc: ใช่commandเรียก builtins อย่างชัดเจนเสมอ ฉันไม่รู้ว่าฉันคิดอะไรอยู่นอกจากนั้นzshก็ทำงานในลักษณะอื่น
Michael Homer

2
"ใช้คำสั่งเปิดใช้งานของ Bash เพื่อปิดการใช้งาน" yup, guys เป็นเช่นนั้น
Braiam

10

นอกจากคำตอบอื่น ๆ คุณสามารถใช้

$ help echo

ดูความช่วยเหลือสั้น ๆ สำหรับechoคำสั่งในตัวด้วย


8

คุณกำลังใช้echoคำสั่ง bash ในตัวซึ่งไม่เข้าใจ--helpตัวเลือก ใช้:

/bin/echo --help

เพื่อดูความช่วยเหลือสำหรับตัวในechoการใช้งานและค้นหาman bashecho


สิ่งนี้ใช้ได้กับฉัน
Hayden Thring
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.