เหตุใดจึงต้องหลีกเลี่ยงอักขระตัวเล็กในเชลล์สคริปต์


23

ฉันเพิ่งเปิดเชลล์สคริปต์ดั้งเดิม (เขียนด้วย ksh88 เก่าบน Solaris) และพบสิ่งต่อไปนี้ซ้ำแล้วซ้ำอีกตลอดทั้งรหัส:

[ -f $myfile ] && \rm -f $myfile

แบ็กสแลชที่หนีออกมาจะทำให้ฉันประหลาด

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

นี่เป็นเพียงนิสัยแปลก ๆ ตลก ๆ ของผู้แต่งหรือเป็นแนวปฏิบัติที่ดีที่เลิกใช้แล้วซึ่งทำให้เข้าใจได้ในบางเวลา หรืออาจเป็นวิธีที่แนะนำในการทำสิ่งต่าง ๆ และฉันก็ขาดอะไรไปบ้าง?


3
แม้ว่าจะมีเหตุผลที่ดี แต่การให้การป้องกันนามแฝงในสคริปต์โดยใช้วิธีนี้ไม่ใช่สิ่งที่ฉันเรียกว่า "แนะนำ" มันจะเพียงพอที่จะล้างนามแฝงที่ด้านบนของสคริปต์หรือจะเรียกใช้rmโดยเส้นทางแบบเต็ม
Sorpigal

คำตอบ:



5

โดยทั่วไปแล้วเป็นวิธีปฏิบัติที่ดีในการใช้มาตรการป้องกันบางอย่างใน rm ซึ่งโดยทั่วไปแล้วจะใช้นามแฝง ในสภาพแวดล้อมที่มีผู้ใช้หลายคนคุณมักจะเห็นการปกป้องเหล่านี้มากมาย

สำหรับผู้ปฏิบัติการเชลล์สคริปต์มักจะมีประโยชน์สำหรับผู้ที่จะปิดการใช้งานการป้องกันเหล่านี้อย่างน่าจะรู้ว่าพวกเขากำลังทำอะไรอยู่ สิ่งนี้ตามที่กล่าวมาสามารถทำได้โดยใส่คำสั่ง\ล่วงหน้าด้วย a

ตรงกันข้ามกับข้อเสนอแนะของ @ Sorpigal ฉันจะแนะนำอย่างแน่นอนเกี่ยวกับการยกเลิกการตั้งชื่อแทนเกรงว่าสคริปต์จะล้มเหลวในการปกป้องผู้ใช้ นอกจากนี้การใช้เส้นทางแบบเต็มก็ไม่ฉลาดเพราะ RM อาจอยู่ในเส้นทางเสริมด้วยเหตุผลเช่น GNU rm กับ BSD rm หากต้องการแทนที่ด้วยเส้นทางที่เข้มงวดจะต้องเอาชนะวัตถุประสงค์ของการมี PATH คือการขยายและจัดการสถาปัตยกรรมสภาพแวดล้อมและผู้ใช้จำนวนมาก


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