ฉันควรเรียงลำดับแฟล็กตามตัวอักษรในคำสั่งว่าเป็นแนวปฏิบัติที่ดีหรือไม่


14

ฉันรู้ว่าทั้งสองคำสั่งทำสิ่งเดียวกัน:

ls -la
ls -al

แต่ฉันสงสัยว่ามีการตั้งค่าใด ๆ ระหว่างพวกเขา เป็นการดีกว่าหากจะสั่งให้พวกเขาในวิธีที่แน่นอน


11
คุณต้องใส่เสื้อยืดนี้: redbubble.com/people/digerati/works/… :)
Sergey

@Sergey เสื้อเชิ้ต!
Terrance

คำตอบ:


15

มันไม่สำคัญว่า * เว้นแต่ว่าคำสั่งจะระบุอย่างชัดเจน ฉันพบว่าไม่มีการอ้างอิงใด ๆ ที่ให้แนวทางเช่นเดียวกับการวางตัวเลือกต่างๆ ดังนั้นฉันคิดว่าเพื่อประโยชน์ในการอ่านตัวเลือกสามารถจัดเรียงตามลำดับตัวอักษร

* มี cavaet ที่สำคัญมาก ๆ ซึ่งถ้าตัวเลือกใด ๆ ต้องการชื่อไฟล์หรืออินพุตอื่นหลังจากคุณต้องใส่มัน

ตัวอย่างเช่น-fตัวเลือกในการgrepใช้ไฟล์เป็นอินพุตเพื่อใช้รูปแบบที่ต้องการค้นหาจากไฟล์อินพุต คุณต้องให้คำสั่งเช่น:

grep -cf input.txt file.txt 

ถ้าคุณใช้มันชอบ:

grep -fc input.txt file.txt 

มันจะล้มเหลวเนื่องจากจะใช้cเป็นชื่อไฟล์


12

POSIXประชุมกำหนดในแนวทางที่ 11 และ 12 ของแนวทางไวยากรณ์ยูทิลิตี้ที่สั่งซื้อ " ไม่ควรเรื่อง " เว้นแต่เป็นกรณีที่ไม่ได้รับการบันทึกไว้เพื่อประโยชน์ของตัวเอง

GNU C Library Reference Manualยังเกียรตินิยมผู้ประชุม POSIX ในโครงการ 25.1.1 อาร์กิวเมนต์ประชุมไวยากรณ์

แต่แจ้งให้ทราบล่วงหน้ามีหลายสาธารณูปโภคที่ให้ในบางสถานการณ์คำสั่งที่เข้มงวดในการดำเนินการพารามิเตอร์ (ตัวอย่างเช่นค้นหา) จากmanpage ค้นหา :

การ-nameทดสอบมาก่อนการ-typeทดสอบเพื่อหลีกเลี่ยงการโทรstat(2)ทุกไฟล์

บางครั้งยูทิลิตี้บ่นเกี่ยวกับการสั่งซื้อ


3
พูดอย่างเคร่งครัดfindมีเพียงไม่กี่ตัวเลือก, POSIXเพียงกำหนดสองตัวเลือกและ-H -Lแอฟริกาfindในอูบุนตูมีตัวเลือกมากขึ้นน้อย แต่-typeและ-nameฯลฯ จะถือว่าผู้ประกอบการไม่ได้ตัวเลือก และสำหรับผู้ประกอบการมักจะมีคำสั่งซื้อ
geirha

5

ด้วย ls คุณสามารถไปผิดปกติกับการสั่งซื้อตัวเลือก

แต่ระวังให้ดีแม้ว่าคำสั่งอื่นอาจมีการตอบสนองต่อตัวเลือกที่แตกต่างกันไปตามลำดับ

ตัวอย่างคือคำสั่ง find คุณจะได้ผลลัพธ์ที่แตกต่างเช่น:

  find . -ls -mtime -1 

และ

  find . -mtime -1 -ls

3

หากสิ่งที่คุณต้องการฝึกฝนคือการเรียงตัวอักษรให้สั้นลง ฉันพบว่ามีสองกลยุทธ์ที่มีประโยชน์: การสร้างคำ (ลดความผิดพลาด) และการสร้างประโยค (ปรับปรุงความเข้าใจ)

สำหรับ ls ตัวอย่างเช่นฉันมักจะใช้ls -halFเพราะถึงแม้จะมีตัวพิมพ์ใหญ่ที่แปลก แต่ฉันก็ยังพิมพ์halF ได้ดีกว่าอย่างFalhที่ไม่ใช่คำ

สำหรับ tar ในทางกลับกันฉันพิมพ์tar czvf filenameและพูด (ในหัวของฉัน) "tar สร้างและ Zip, verbosely สำหรับชื่อไฟล์" เพราะนั่นคือวิธีที่ฉันได้เรียนรู้ว่าตัวอักษรที่แตกต่างกันมีความหมายอย่างไร


ฉันจำ e2fsck -fvcckt เพราะมันสะกดสถานการณ์ที่ฉันอาจอยู่ถ้ามันส่งกลับข้อผิดพลาดมากเกินไป ;)
Joe

2

เช่นเดียวกับที่คนอื่น ๆ ได้รับคำตอบมันไม่สำคัญ (เว้นแต่ว่ามีการบันทึกไว้เป็นอย่างอื่นหรืออาร์กิวเมนต์ตัวเลือกใช้อาร์กิวเมนต์เพิ่มเติม)

แต่มันจะดีกว่าการสั่งซื้อตัวเลือกตามตัวอักษรเป็นที่ถกเถียงกัน

โดยส่วนตัวแล้วฉันพบว่าตัวช่วยจำให้คุณค่ามากกว่าลำดับตัวอักษรที่เข้มงวด ง่ายต่อการจดจำชุดของตัวเลือกเมื่อพวกเขาสร้างคำที่น่าจดจำตัวอย่างเช่นพิจารณา:

netstat -tan
# alphabetic is good (by chance) in this case
netstat -ant

VS:

netstat -atn
netstat -nta

ดังนั้นหากคุณพบว่าคุณทำซ้ำตัวเลือกคำสั่งผสมบางคำสั่งคุณอาจต้องการลองจัดเรียงตัวอักษรใหม่ตามลำดับที่ง่ายที่สุดที่คุณจะจำได้

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