ไม่มีมาตรฐานที่แพร่หลาย มีความสอดคล้องเช่นในโปรแกรม GNU แต่คุณต้องตรวจสอบเอกสารของแต่ละโปรแกรม
อ้างถึงวิกิพีเดียโดยเน้นที่เหมือง:
ในระบบที่คล้าย Unix นั้นจะใช้เครื่องหมายขีดคั่น ASCII ยัติภังค์เพื่อลบตัวเลือก อักขระที่มักจะตามด้วยหนึ่งหรือมากกว่าตัวอักษร อาร์กิวเมนต์ที่เป็นยัติภังค์เดียว - ลบด้วยตัวเองโดยไม่มีตัวอักษรใด ๆ มักจะระบุว่าโปรแกรมควรจัดการข้อมูลที่มาจากอินพุตมาตรฐานหรือส่งข้อมูลไปยังเอาต์พุตมาตรฐาน ตัวละครทั้งสองยัติภังค์ลบ (-) จะใช้ในบางโปรแกรมเพื่อระบุตัวเลือก "ยาว" ที่ชื่อตัวเลือกอธิบายเพิ่มเติมจะมีการใช้ นี่เป็นคุณสมบัติทั่วไปของซอฟต์แวร์ GNU
โดยปกติแล้วเครื่องหมายขีดคั่นจะระบุอาร์กิวเมนต์ที่กำหนดไว้ล่วงหน้า ฉันคิดว่ามันใช้เพื่อแยกความแตกต่างจากเช่นชื่อไฟล์หรือป้ายกำกับอื่น ๆ ที่คุณอาจใช้เป็นอาร์กิวเมนต์ ไม่เป็นเช่นนั้นเสมอไป (ดูด้านล่าง)
คุณมักจะพบอาร์กิวเมนต์เดียวกันมีทั้งตัวเลือกเป็นสั้นและระยะยาวเป็นเช่นในคำสั่ง ls
บางโปรแกรมใช้ยัติภังค์เดียวสำหรับตัวเลือกหนึ่งตัวและยัติภังค์สองตัวสำหรับตัวเลือกหลายตัวอักษร แต่ไม่ใช่ทั้งหมด (GNU find
คำนึงถึง) บางโปรแกรมมียัติภังค์ที่เป็นทางเลือกหรือข้ามไปด้วยกัน ( tar
หรือ BSD ps
เข้ามาในใจ)
บางครั้งตัวเลือกแบบยาว ( --foo
) จำเป็นต้องมีอาร์กิวเมนต์ในขณะที่ตัวเลือกแบบสั้น ( -f
) ไม่ (หรืออย่างน้อยก็หมายถึงอาร์กิวเมนต์เริ่มต้นเฉพาะ)
ตัวเลือกสั้น ๆ (เช่นcut -d ' '
) สามารถมีอาร์กิวเมนต์ในขณะที่ตัวเลือกยาว (เช่นls --all
) ไม่จำเป็นต้องมี
ในการตั้งค่าลักษณะการทำงานเฉพาะของโปรแกรมบางครั้งคุณต้องใช้ตัวเลือกสั้น ๆ สำหรับคนอื่นที่คุณต้องใช้ตัวเลือกที่ยาวและสำหรับบางคนที่คุณมีทางเลือก
ในบันทึกที่เกี่ยวข้องบางโปรแกรมไม่สามารถจัดการช่องว่างระหว่างตัวเลือกและอาร์กิวเมนต์ในขณะที่โปรแกรมอื่นไม่สามารถทำได้
อย่างที่ฉันเขียนในตอนแรกไม่มีเพียงแค่พฤติกรรมหรือมาตรฐานทั่วไป บ่อยครั้งที่คุณสามารถติดตามพฤติกรรมที่คล้ายกันในไลบรารีเดียวกันที่ใช้สำหรับการแยกวิเคราะห์อาร์กิวเมนต์ แต่คุณอาจไม่ต้องการอ่านแหล่งข้อมูลเพื่อค้นหาสิ่งนี้
คุณไม่สามารถอนุมานไวยากรณ์อาร์กิวเมนต์ของโปรแกรมหนึ่งจากอีกโปรแกรมได้
หากคุณพิจารณา Windows ด้วยก็จะยิ่งแย่ลง: ในขณะที่บรรทัดคำสั่งของ Windows เรียกใช้ตามปกติ/f
(อย่างน้อยที่สุดตัวอักษรเดียว) สำหรับตัวเลือกโดยมี:
ตัวคั่นระหว่างตัวเลือกและค่า (ดูเช่นที่นี่ ) ยูทิลิตี้ข้ามแพลตฟอร์มนั้นแพร่หลาย (เช่นที่คุณพูดถึง) และนำมาพร้อมกับเครื่องหมายยัติภังค์ทั่วไปสำหรับข้อโต้แย้งโดยมีความไม่สอดคล้องกันทั้งหมดที่กล่าวถึงข้างต้น
-i
กับหรือ--input
-n
--dry-run