หมายเหตุ:คำตอบของฉันไม่ถูกต้องในกรณีของ OP และใช้เฉพาะกับเครื่องมือตามแบบแผนที่ระบุไว้ด้านล่างและไม่ได้อยู่ในกรณีของไฟล์ที่ชื่อ just -
(dash) ซึ่งมักจะเป็นกรณีพิเศษเพื่อระบุว่าการอ่านจากมาตรฐาน คาดว่าอินพุต ดูคำตอบที่ยอมรับได้
ออกจากที่นี่เนื่องจากมีข้อมูลที่เป็นประโยชน์สำหรับกรณีอื่น ๆ ที่อาจสะดุดเมื่อค้นหาคำตอบ
รีบอีกครั้ง!
ใช้การประชุม double-dash ( --
) มาตรฐานเพื่อระบุอาร์กิวเมนต์ล่าสุด:
less -- -FILENAME
ตัวอย่าง
$ echo "meh" > -badname
$ less -badname
Number is required after -b
$ less -- -badname # GREAT SUCCESS!
Whhhaattt?
--
อาร์กิวเมนต์นี้เกิดจากการประชุมที่สนับสนุนโดยการใช้งานส่วนใหญ่ของอรรถประโยชน์ของเชลล์และเครื่องมือบรรทัดคำสั่งและเชลล์ส่วนใหญ่จะสนับสนุนอย่างเห็นได้ชัดว่าคุณควรปฏิบัติตามเมื่อใช้เครื่องมือ CLI
แนะนำโดย Open Group
OpenGroup ยังกล่าวถึงในส่วนคำอธิบายโปรแกรมอรรถประโยชน์คำอธิบาย (v6) ของข้อมูลจำเพาะพื้นฐานของมัน:
พฤติกรรมเริ่มต้น: [... ] ยูทิลิตี้มาตรฐานที่ไม่ยอมรับตัวเลือก แต่ที่ยอมรับตัวถูกดำเนินการจะต้องรับรู้ "-" เป็นอาร์กิวเมนต์แรกที่จะถูกทิ้ง
ข้อกำหนดสำหรับการรับรู้ "-" เป็นเพราะการใช้งานที่สอดคล้องกันจำเป็นต้องมีวิธีการป้องกันตัวถูกดำเนินการจากตัวเลือกโดยพลการใด ๆ ที่การดำเนินการอาจให้เป็นส่วนขยาย ตัวอย่างเช่นถ้ารายการยูทิลิตี้มาตรฐาน foo แสดงว่าไม่มีตัวเลือกและแอปพลิเคชันที่จำเป็นต้องให้ชื่อพา ธ ที่มียัติภังค์ชั้นนำมันสามารถทำได้อย่างปลอดภัยดังนี้:
foo -- -myfile
และหลีกเลี่ยงปัญหาใด ๆ กับ -m ที่ใช้เป็นส่วนขยาย
และในหลักเกณฑ์ไวยากรณ์ของยูทิลิตี้ (v7):
หลักเกณฑ์ 10:
ข้อแรก - อาร์กิวเมนต์ที่ไม่ใช่ตัวเลือกอาร์กิวเมนต์ควรได้รับการยอมรับเป็นตัวคั่นที่ระบุถึงจุดสิ้นสุดของตัวเลือก อาร์กิวเมนต์ใด ๆ ต่อไปนี้ควรถือเป็นตัวถูกดำเนินการแม้ว่าจะเริ่มต้นด้วยอักขระ '-'
แนะนำโดย Bash
ที่นี่คัดลอกมาจากคู่มือทุบตีเกี่ยวกับ builtins ของมันสนับสนุน:
เว้นแต่จะระบุไว้เป็นอย่างอื่นคำสั่ง builtin แต่ละตัวจะบันทึกไว้ในส่วนนี้ว่ายอมรับตัวเลือกที่นำหน้าด้วย - ยอมรับ - เพื่อบ่งบอกถึงจุดสิ้นสุดของตัวเลือก
บิวด์อิน:, จริง, เท็จและทดสอบไม่ยอมรับตัวเลือกและไม่ควรปฏิบัติต่อ - เป็นพิเศษ exit, logout, break, continue, let และ shift builtins ยอมรับและประมวลผลอาร์กิวเมนต์ที่ขึ้นต้นด้วย - โดยไม่ต้อง - บิวด์อินอื่นที่ยอมรับอาร์กิวเมนต์ แต่ไม่ได้ระบุว่าเป็นตัวเลือกการยอมรับตีความอาร์กิวเมนต์ที่ขึ้นต้นด้วย - เป็นตัวเลือกที่ไม่ถูกต้องและจำเป็นต้องมี - เพื่อป้องกันการตีความนี้
โปรดทราบว่าเสียงก้องไม่ได้แปล - หมายถึงจุดสิ้นสุดของตัวเลือก
อ่านเพิ่มเติม