2 คะแนน โดย GN⁺ 2024-06-24 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

วิธีหลีกเลี่ยงการชนกันของคำสั่งที่ผู้ใช้กำหนดเอง

ปัญหา

  • มีโอกาสที่ชื่อจะชนกันระหว่างเชลล์สคริปต์ที่ผู้ใช้กำหนดเองกับคำสั่งของระบบ
  • โดยเฉพาะในระบบที่รองรับคำสั่งจำนวนมากอย่าง Debian ความเป็นไปได้ที่จะชนกันยิ่งสูงขึ้น

วิธีแก้

  • เติมเครื่องหมายจุลภาค (,) ไว้หน้าคำสั่งที่ผู้ใช้กำหนดเอง เพื่อแยกออกจากคำสั่งของระบบ
  • เครื่องหมายจุลภาคไม่มีความหมายพิเศษในชื่อไฟล์ จึงใช้งานได้อย่างปลอดภัย

ข้อดี

  • การใช้เครื่องหมายจุลภาคช่วยป้องกันการชนกันของคำสั่ง
  • สามารถใช้ความสามารถในการเติมคำอัตโนมัติด้วยปุ่มแท็บเพื่อตรวจดูรายการคำสั่งที่ผู้ใช้กำหนดเองได้ง่าย

ตัวอย่าง

$ ,«tab»
,complete-scp    ,go-thpgp      ,range
,complete-ssh    ,gr            ,svn-store-password
,coreoff         ,hss           ,umount
,coreon          ,mount-thpgp   ,find
,mount-twt

ความเห็นของ GN⁺

  • วิธีนี้ช่วยป้องกันการชนกันระหว่างคำสั่งที่ผู้ใช้กำหนดเองกับคำสั่งของระบบได้อย่างมีประสิทธิภาพ
  • การใช้เครื่องหมายจุลภาคเป็นวิธีแก้ที่เรียบง่ายแต่ทรงพลัง ซึ่งแม้แต่วิศวกรมือใหม่ก็สามารถนำไปใช้ได้ง่าย
  • เทคนิคนี้มีประโยชน์อย่างยิ่งในระบบที่มีการใช้งานคำสั่งจำนวนมาก
  • อีกแนวทางหนึ่งที่อาจพิจารณาได้คือการเติมคำนำหน้าเฉพาะไว้หน้าคำสั่ง
  • เมื่อใช้วิธีนี้ การจัดการคำสั่งจะเป็นระบบและมีประสิทธิภาพมากขึ้น

2 ความคิดเห็น

 
GN⁺ 2024-06-24
ความคิดเห็นบน Hacker News
  • ชื่อว่า comma_nds ฟังดูขำดี เป็นไอเดียที่ดีเลยคิดว่าจะลองใช้ดู
  • ตอนแรกคิดว่าไม่น่าเวิร์ก แต่ชอบตรงที่ใช้แท็บเพื่อไล่ดูรายการเครื่องมือเป็นพิเศษ ช่วงหลังแทบไม่มีปัญหา namespace ชนกันเลย
  • ชื่อเชลล์สคริปต์สั้นและกระชับ เลยมีโอกาสชนกับคำสั่งของระบบได้ ถ้าวางไดเรกทอรี bin ไว้หน้าสุดของ $PATH ก็แก้ปัญหาได้
  • ใน Vim ก็ใช้ปุ่ม , กันบ่อย ด้วยเหตุผลคล้ายกัน
  • ยังไม่ค่อยเข้าใจปัญหานี้ดีนัก แต่ไอเดียเรื่องทำ autocomplete ให้คำสั่งของตัวเองนั้นดี
  • ใช้คำสั่งคัสตอมสั้น ๆ อยู่แล้ว ถ้าชนกับคำสั่งระบบก็ไม่เป็นไร ถ้าชนกันก็ตั้ง alias เป็นชื่ออื่น
  • บน Windows รันสคริปต์ Python ได้ง่าย แต่บน Linux ยากกว่า Linux ไม่มีแนวคิดเรื่องโปรแกรมที่เชื่อมโยงกันแบบนั้น เลยไม่ค่อยสะดวก
  • มีวิธีใช้ชื่อไฟล์รันที่ยาวเพื่อเลี่ยงการชน แล้วค่อยตั้ง alias สั้น ๆ ข้อเสียคือฟังก์ชัน tab completion จะใช้งานไม่สะดวก
  • ในชุมชน text expander/text replacement เทคนิคที่ขึ้นต้นด้วยเครื่องหมายจุลภาคก็เป็นเรื่องปกติเหมือนกัน
  • เคยมีไฟล์รันใน ~/.local/bin เยอะมากจนจำไม่ได้ สคริปต์ที่ขึ้นต้นด้วยเครื่องหมายจุลภาคน่าจะช่วยให้จำได้ง่ายขึ้น
 
kayws426 2024-06-24

แล้วการใช้ '_' ล่ะ?