ฉันยังใหม่กับการทำงานในเชลล์และการใช้คำสั่งเหล่านี้ดูเหมือนว่าจะไม่แน่นอน มีเหตุผลหนึ่งที่ธงมีเส้นประเดียวและอีกอาจมีเส้นประสองครั้งหรือไม่
ฉันยังใหม่กับการทำงานในเชลล์และการใช้คำสั่งเหล่านี้ดูเหมือนว่าจะไม่แน่นอน มีเหตุผลหนึ่งที่ธงมีเส้นประเดียวและอีกอาจมีเส้นประสองครั้งหรือไม่
คำตอบ:
ยัติภังค์เดียวสามารถตามด้วยธงเดี่ยวอักขระหลายตัว ยัติภังค์คู่นำหน้าตัวเลือกหลายตัวเดียว
ลองพิจารณาตัวอย่างนี้:
tar -czf
ในตัวอย่างนี้-czfระบุสามธงตัวเดียว: c, และ zf
ลองพิจารณาอีกตัวอย่างหนึ่ง:
tar --exclude
ในกรณีนี้--excludeระบุชื่อตัวเลือกหลายตัวเลือกexcludeเดียว ยัติภังค์คู่ disambiguates อาร์กิวเมนต์บรรทัดคำสั่งเพื่อให้มั่นใจว่าtarตีความมันเป็นexcludeมากกว่าการรวมกันของe, x, c, l, u, และde
cdrecordปีที่ผ่านมากล่าวถึงในความคิดเห็นข้างต้น
ทุกอย่างขึ้นอยู่กับโปรแกรม โดยปกติ "-" ใช้สำหรับตัวเลือก 'สั้น' (หนึ่งตัวอักษร, -h) และ "-" ใช้สำหรับตัวเลือก "ยาว" (เอ้อ) (- ช่วย)
โดยปกติแล้วตัวเลือกสั้น ๆ สามารถรวมกันได้ (ดังนั้น "-h -a" จึงเหมือนกับ "-ha")
ในระบบที่คล้าย Unix นั้นจะใช้เครื่องหมายขีดคั่น ASCII ยัติภังค์เพื่อลบตัวเลือก ตัวละครมักตามตัวอักษรอย่างน้อยหนึ่งตัว อาร์กิวเมนต์ที่เป็นยัติภังค์เดียว - ลบด้วยตัวเองโดยไม่มีตัวอักษรใด ๆ มักจะระบุว่าโปรแกรมควรจัดการข้อมูลที่มาจากอินพุตมาตรฐานหรือส่งข้อมูลไปยังเอาต์พุตมาตรฐาน มีการใช้เครื่องหมายยัติภังค์สองตัว (-) ในบางโปรแกรมเพื่อระบุ "ตัวเลือกแบบยาว" โดยใช้ชื่อตัวเลือกแบบอธิบายเพิ่มเติม นี่เป็นคุณสมบัติทั่วไปของซอฟต์แวร์ GNU
มันเป็นแบบแผนจริงๆ อย่างไรก็ตามมันสามารถช่วยให้โปรแกรมแยกวิเคราะห์ทราบได้อย่างมีประสิทธิภาพมากขึ้นเกี่ยวกับตัวเลือกที่ส่งผ่านไปยังโปรแกรม นอกจากนี้ยังมียูทิลิตีที่เรียบร้อยที่สามารถแยกวิเคราะห์คำสั่งเหล่านี้เช่นgetopt(3)หรือที่ไม่ได้มาตรฐานgetopt_long(3)เพื่อช่วยในการแยกอาร์กิวเมนต์ของโปรแกรม
มันเป็นสิ่งที่ดีสำหรับเราสามารถมีตัวเลือกหลายสั้นรวมกันเป็นคำตอบอื่น ๆ tar -xzf myfile.tar.gzบอกว่าชอบ
ถ้ามี "ลิซ่า" อาร์กิวเมนต์สำหรับการlsมีอาจจะมีความหมายที่แตกต่างกันในการพิมพ์มากกว่าls -lisa ls --lisaอดีตเป็นl, i, sและaพารามิเตอร์ไม่คำว่า
ในความเป็นจริงคุณสามารถเขียนls -l -i -s -aความหมายเหมือนกันls -lisaแต่นั่นจะขึ้นอยู่กับโปรแกรม
นอกจากนี้ยังมีโปรแกรมที่ไม่ปฏิบัติตามอนุสัญญานี้ ที่สะดุดตาที่สุดสำหรับฉันddและgcc.
ตัวเลือกแบบสั้นพร้อมตัวเลือกแบบยาวและแบบตัวยาว
ตัวเลือกสั้นสามารถรวมกันเป็นอาร์กิวเมนต์เดียว;
for example: ls -lrt #instead of ls -l -r -t
หากเราอนุญาตให้ใช้ตัวเลือกแบบยาวโดยใช้เส้นประเดียวมันจะทำให้เกิดความกำกวม ในการแก้ไขปัญหานี้เราใช้เส้นประสองครั้งสำหรับตัวเลือกแบบยาว