`alias rm =“ rm -i”` ถือว่าเป็นอันตรายหรือไม่


17

ฉันได้อ่านมาแล้ว (ไม่สามารถหาข้อมูลอ้างอิง) ได้ว่าการใช้นามแฝงดังalias rm="rm -i"กล่าวนั้นแย่มาก

มีหลักฐานทางประวัติศาสตร์หรือคำอธิบายสามัญสำนึกสำหรับข้อเท็จจริงนั้นหรือไม่?

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



ฉันคิดว่าฉันพบหัวข้อที่คุณพูดถึง
Daniel Beck

1
@Daniel แน่นอนคำตอบที่ถูกโหวตมากที่สุดของหัวข้อนี้กล่าวถึงการปฏิบัติที่ไม่ดีนี้ แต่มันไม่ใช่หัวข้อหลักของคำถาม
Dunaril

คำตอบ:


36

คุณถูก.

มันไม่ดีเพราะคุณคุ้นเคยกับมัน หากคุณอยู่ในระบบที่ไม่มีและคุณrmจะเริ่มลบทันทีและคุณสงสัยว่าเกิดอะไรขึ้น

ผู้ใช้หลายคนคุ้นเคยกับ SSH'ing ในระบบที่แตกต่างกัน ดังนั้นการใช้ระบบที่แตกต่างกันจำนวนมากบางครั้งไม่มีบัญชีผู้ใช้ส่วนบุคคล (รวมถึงนามแฝง) ตั้งค่าค่อนข้างบ่อย

ให้ใช้เช่นalias rmi='rm -i'และเรียนรู้ที่จะใช้สิ่งนั้นแทน หากไม่ได้ติดตั้งในระบบอื่นคุณไม่ได้ลบไฟล์โดยไม่ตั้งใจและสามารถถอยกลับไปพิมพ์คำสั่งทั้งหมดได้เสมอ


4

เช่นเดียวกับ @Daniel กล่าวว่ามันไม่เป็นอันตรายทั้งในตัวและของตัวเองนอกเหนือจากการฝึกฝนให้คุณคาดหวังว่ามันจะอยู่ที่นั่น ในความเป็นจริงมันเป็นค่าเริ่มต้นการตั้งค่าบน CentOS (และโดยการขยาย RHEL, ฉันเข้าใจ - นานมากแล้วนะตั้งแต่ฉันได้หนึ่งใช้) เครื่องจักรและมันเป็นความเจ็บปวดขนาดใหญ่ใน tuchus สำหรับเวลาที่เหลือในกิ๊กนั้นฉันพิมพ์ / bin / rm เพื่อหลีกเลี่ยงการตั้งค่า "Linux สำหรับผู้ที่ไม่ควรมีการเข้าถึงรูท"


3
RHEL มีสิ่งนี้ตามค่าเริ่มต้นคุณพูดถูกอย่างน้อยระบบที่ฉันใช้
Daniel Beck

4

ฉันคิดว่าอันตรายที่ยิ่งใหญ่คือผู้คนอาจต้องพึ่งพาสิ่งนี้เพื่อกรอง glob ลองนึกภาพคุณต้องการลบภาพบางส่วนออกจากสารบบ แต่ไม่ใช่ทั้งหมด:

rm -i pics/*.jpg

คุณสามารถใช้มันเพื่อกรอง glob ด้วยตนเองซึ่งจะสมเหตุสมผลอย่างสมบูรณ์ แต่ถ้าคุณใช้นามแฝงแล้วและใช้งานrmและเกิดขึ้นในดินแดนโดยไม่มีนามแฝงและลองใช้ ... คุณเพียงแค่ลบรูปภาพทั้งหมดโอ๊ะโอ!

โดยส่วนตัวแล้วฉันพบว่านามแฝงนี้เป็นอันตรายต่อความดันโลหิตของฉัน;) แต่นั่นเป็นเพียงฉัน


ตัวอย่างที่ดี แน่นอนถ้าคุณชอบอันตรายหรือการพนัน ..
Dunaril

2

นอกเหนือจากสิ่งที่ Daniel Beck กล่าวแล้วฉันพบว่าตัวเองกำลังใช้-fเพื่อหลีกเลี่ยงสิ่ง-iที่อาจเป็นอันตรายเนื่องจากทำให้ใช้งานได้rm -fและrm -rfไม่จำเป็น สิ่งที่เกี่ยวข้อง: วิธีการป้องกันrm -rfปัญหาคือการสร้างไฟล์ที่เรียกว่า "-i" ตามคำตอบของคำถามนี้: ฉันจะป้องกัน rm -rf / * โดยไม่ตั้งใจได้อย่างไร? .

แต่อีกครั้งหากนามแฝงนั้นไม่อยู่ที่นั่นฉันจะไม่ใช้ -f และทุกสิ่งจะไม่เป็นปัญหา


3
ดูเหมือนว่าคุณจะพบวิธีที่จะทำให้การปฏิบัติที่เลวร้ายยิ่งเลวร้ายลง :)
Dunaril

0

สิ่งนี้เป็นอันตรายน้อยลงมากตามประสบการณ์ของฉันที่ทำงานกับผู้ใช้หลายร้อยคนในอดีต:

rm ()  # must be a function, must require single answer for all targets
{
    ls -FCsd "$@"
    local reply ; echo -n 'remove[ny]? ' ; read reply
    if [ "_$reply" = "_y" ] ; then
        /bin/rm -rf "$@" ; else echo '(cancelled)'
    fi
}
  • ผู้ใช้จะได้รับการฝึกฝนให้ใช้ wildcard อย่างถูกต้องไม่ใช่แค่ '*' จากนั้นจึงใช้คำสั่ง y / n เพื่อเลือกไฟล์
  • การปรับการใช้อักขระตัวแทนที่ถูกต้องมักจะบันทึกจากความเสียหายเมื่อใช้rmในบริบทอื่นที่ขาดฟังก์ชั่นนี้หรือrm -iนามแฝง
  • ฉันใช้เวลาน้อยลงในการกู้คืนไฟล์ที่ผู้ใช้พิมพ์ 'y' หนึ่งครั้งเกินไป
  • ผู้ใช้จะต้องตอบสนองเพียงครั้งเดียว - ให้ข้อเสนอแนะในเชิงบวกที่คมชัดเพื่อการใช้งานของพวกเขา
  • การควบคุมขัดจังหวะการทำงานและเป็นรายงานที่ไม่ทำอะไรเลย
  • ไม่ใช่สคริปต์ดังนั้นของจริงrmจึงไม่ถูกแตะต้องทำให้โปรแกรมอื่น ๆ ไม่ถูกรบกวน

รูปแบบรหัสนั้นส่วนใหญ่ใช้งานได้กับ sh (ยกเว้นการใช้งานecho .... | tr -d '\012'pre-bash shell) อย่าลังเลที่จะสร้าง bash-specific มากขึ้น ฉันไม่ได้โพสต์เพื่อแชร์รหัส แต่เพื่อแชร์การเปลี่ยนแปลงประสบการณ์ผู้ใช้ที่มาพร้อมกับรหัส


Kamil: คำตอบของฉันรวมถึงrm -iผลลัพธ์ในอดีต (จากประสบการณ์ของฉันที่มีผู้ใช้หลายร้อยคน) ส่งผลให้เกิดการลบไฟล์ที่ผิดพลาดและฟังก์ชั่นที่รวมนั้นได้ฝึกให้ผู้ใช้ใช้ตัวแทนที่ถูกต้องแทน ดังนั้นฉันจึงได้กล่าวถึงประเด็นสำคัญที่ทำให้เกิดภัยพิบัติrm -i และจัดหาวิธีแก้ปัญหาเพื่อความสะดวกสบายและความจริงแล้วจุด bullet อยู่ภายใต้ฟังก์ชั่นไม่ได้ป้องกันพวกเขาจากการถูกเชื้อโรค
Alex North-Keys
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.