ทางออกที่ชัดเจนสร้างรหัสทางออก 1:
bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
ทางออกหนึ่งที่เป็นไปได้จะข้าม "." และไดเรกทอรี ".. " แต่จะลบไฟล์ที่มีชื่อยาวเกิน 3 ตัวอักษรเท่านั้น:
bash$ rm -f .??*
ถ้าคุณไม่กังวลเกินไปที่จะไม่สามารถลบออกได้ & .. แล้วใครจะสน? ถ้าคุณไม่กังวลเกี่ยวกับผลลัพธ์ที่น่าเกลียดในสคริปต์ฉันคิดว่าวิธีแก้ปัญหาที่ชัดเจนคือการพิมพ์น้อยกว่าที่คนอื่น ๆ ค่อนข้างตรงไปตรงมา
—
Matt
เพียงแค่คุณก็รู้ .. และ ไม่ใช่ไฟล์ พวกเขาจะอ้างอิงถึงไดเรกทอรี . (แค่จุดเดียว) คือไดเรกทอรีปัจจุบันและ .. (สองจุด) เป็นลิงก์ไปยังไดเรกทอรีหนึ่งระดับขึ้นไป ตัวอย่างเช่นถ้า cd / home / user เท่ากับ / home / user และ .. is / home / ในคำอื่น ๆ คุณไม่สามารถลบ และ .. (.?)
—
phuzion
ขอบคุณสำหรับความคิดเห็น Matt ฉันมักจะใช้คำสั่งในสคริปต์ที่มีต่อการตรวจสอบรหัสออกจากคำสั่ง (set -e) ในกรณีเหล่านี้จำเป็นต้องมีรหัสทางออกที่บ่งบอกถึง
—
Yonatan Broza
ไม่มีสิ่งใดในตัว และ .. ที่ปกป้องพวกเขาจากการลบด้วย rm -rf นี่เป็นเพียงกลไกการป้องกันที่เพิ่มเข้ามาในรูปแบบที่ทันสมัยของ RM
—
kubanczyk
และมี rm -rf อยู่เสมอ * || เป็นจริงถ้าคุณต้องการหลีกเลี่ยงพฤติกรรม set -e สำหรับคำสั่งนั้น
—
Domingo Ignacio Galdos