“ -” หมายถึงอะไรในคำสั่งเทอร์มินัล


23

ฉันได้เห็นบทเรียนมากมายที่ใช้--คำสั่ง after บางสิ่งเช่นนี้

command -- 

สิ่งนี้--หมายความว่าอย่างไร


วิดีโอสอนอะไร
TheWanderer

ดูunix.stackexchange.com/q/11376/6949
edwinksl

ที่จริงแล้วฉันประหลาดใจที่คำถามนี้ไม่ได้เป็นคนหลอกลวงบน AU คำถามที่เหมือนกันในชุมชน StackExchange อื่น ๆ จะไม่นับเป็นซ้ำซ้อน (กล่าวถึงลิงก์ที่ได้รับจาก @edwinksl) หรือไม่ เกิดอะไรขึ้น? บางทีฉันควรถามใน META ....
Cbhihe

@Cbhihe ฉันไม่ได้ตระหนักถึงกลไกที่ช่วยให้เราสามารถชี้ไปที่เป้าหมายซ้ำซ้อนของไซต์ SE อื่น ๆ อย่างไรก็ตามมันไม่ได้เกิดขึ้นบ่อยเกินไปดังนั้นจึงไม่มีความจำเป็น
edwinksl

3
@ anonymous2 ทำไมในโลกที่เราจะทำเช่นนั้น? คำถามอยู่ในหัวข้อที่นี่เพื่อให้สามารถอยู่ได้ การย้ายมันจะลบข้อมูลออกจาก AU และเพิ่มอะไรใหม่ใน U&L ดังนั้นฉันจึงไม่เห็นว่าทำไมมันจึงเป็นสิ่งที่ดี
terdon

คำตอบ:


46

--จะใช้ในการบ่งบอกถึงการสิ้นสุดของตัวเลือกบรรทัดคำสั่ง --นี้ช่วยให้คุณใช้งานข้อโต้แย้งที่เริ่มต้นด้วย ตัวอย่างเช่นหากคุณสร้างไฟล์ชื่อ--foo:

$ > '--foo'
$ ls
--foo

จากนั้นลองลบมันrmจะคิดว่าคุณกำลังโต้แย้ง:

$ rm --foo 
rm: unrecognized option '--foo'
Try 'rm ./--foo' to remove the file '--foo'.
Try 'rm --help' for more information.

วิธีหนึ่งในการใช้สิ่งนี้คือ--:

$ rm -- --foo

นี่เป็นวิธีปฏิบัติทั่วไปและแนะนำโดย POSIXดังนั้นจึงรองรับหลายโปรแกรม


13
มันไม่ได้ถูกใช้งานโดย Bash เลย มันเป็นคุณสมบัติของrmโปรแกรมและยูทิลิตี้ที่สอดคล้องกับ POSIX จำนวนมาก ดูแนวทาง 10 ที่จริงการตรวจสอบว่ามันไม่ได้ทุบตีทำผลงาน (และที่จะไม่ทำให้รู้สึก) เพียงแค่สร้างสคริปต์ขนาดเล็กที่มีเพียงและเปิดใช้งานด้วยprintf '> %s <\n' "$@" --
gniourf_gniourf

3
@gniourf_gniourf d'oh! ฉันตรวจสอบด้วยการเขียนสคริปต์ Perl เล็กน้อยที่พิมพ์ตัวเลือกและมันจะไม่เห็นเลยถ้าคุณผ่านมันไป--แต่แน่นอนนั่นเป็นเพียงเพราะโมดูล Perl ที่เกี่ยวข้อง ( getopts) ยังสนับสนุน คุณพูดถูกฉันเพิ่งค้นหาอย่างรวดเร็วman bashเห็นส่วนที่ฉันอ้างถึง แต่ไม่สังเกตว่ามันอยู่ในส่วน "ตัวเลือกบรรทัดคำสั่ง" ขอบคุณสำหรับการแก้ไขตอบแก้ไข
terdon

1

คำสั่งส่วนใหญ่จะใช้ - เพื่อบอกคำสั่งว่าพารามิเตอร์เพิ่มเติมควรได้รับการปฏิบัติแตกต่างกัน ตัวอย่างหนึ่งคือ rm - --filename ที่ระบุไว้ด้านบน อีกตัวอย่างหนึ่งสคริปต์เช่น 'startx' จะตีความตัวเองทุกอย่างก่อน - และส่งทุกอย่างหลังจากนั้นไปยังเซิร์ฟเวอร์ X

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