ฉันยังใหม่กับการทำงานในเชลล์และการใช้คำสั่งเหล่านี้ดูเหมือนว่าจะไม่แน่นอน มีเหตุผลหนึ่งที่ธงมีเส้นประเดียวและอีกอาจมีเส้นประสองครั้งหรือไม่
ฉันยังใหม่กับการทำงานในเชลล์และการใช้คำสั่งเหล่านี้ดูเหมือนว่าจะไม่แน่นอน มีเหตุผลหนึ่งที่ธงมีเส้นประเดียวและอีกอาจมีเส้นประสองครั้งหรือไม่
คำตอบ:
ยัติภังค์เดียวสามารถตามด้วยธงเดี่ยวอักขระหลายตัว ยัติภังค์คู่นำหน้าตัวเลือกหลายตัวเดียว
ลองพิจารณาตัวอย่างนี้:
tar -czf
ในตัวอย่างนี้-czf
ระบุสามธงตัวเดียว: c
, และ z
f
ลองพิจารณาอีกตัวอย่างหนึ่ง:
tar --exclude
ในกรณีนี้--exclude
ระบุชื่อตัวเลือกหลายตัวเลือกexclude
เดียว ยัติภังค์คู่ disambiguates อาร์กิวเมนต์บรรทัดคำสั่งเพื่อให้มั่นใจว่าtar
ตีความมันเป็นexclude
มากกว่าการรวมกันของe
, x
, c
, l
, u
, และd
e
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
หากเราอนุญาตให้ใช้ตัวเลือกแบบยาวโดยใช้เส้นประเดียวมันจะทำให้เกิดความกำกวม ในการแก้ไขปัญหานี้เราใช้เส้นประสองครั้งสำหรับตัวเลือกแบบยาว