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


108

เป็นไปได้หรือไม่ที่จะตรวจสอบว่ามีไดเร็กทอรีอยู่หรือไม่และลบออกใน Unix โดยใช้คำสั่งเดียวหรือไม่ ฉันมีสถานการณ์ที่ฉันใช้งาน ANT 'sshexec' ซึ่งฉันสามารถรันได้เพียงคำสั่งเดียวในเครื่องระยะไกล และฉันต้องตรวจสอบว่ามีไดเรกทอรีอยู่หรือไม่และลบออก ...

คำตอบ:


149

สมมติว่า$WORKING_DIRถูกตั้งค่าเป็นไดเร็กทอรี ... ซับเดียวนี้ควรทำ:

if [ -d "$WORKING_DIR" ]; then rm -Rf $WORKING_DIR; fi

(มิฉะนั้นให้แทนที่ด้วยไดเรกทอรีของคุณ)


165

ทำไมไม่ใช้rm -rf /some/dir? ซึ่งจะลบไดเรกทอรีหากมีอยู่มิฉะนั้นไม่ต้องทำอะไรเลย ซึ่งแตกต่างจากrm -r /some/dirรสชาติของคำสั่งนี้จะไม่พังหากไม่มีโฟลเดอร์


32

ลอง:

bash -c '[ -d my_mystery_dirname ] && run_this_command'

แก้ไข : จะใช้งานได้ถ้าคุณสามารถรัน bash บนเครื่องระยะไกลได้ ....

แก้ไข 2 : ใน bash [ -d something ]ตรวจสอบว่ามีไดเร็กทอรีชื่อ 'something' หรือไม่โดยส่งคืนรหัสความสำเร็จหากมีอยู่และเป็นไดเร็กทอรี การเชื่อมคำสั่งด้วย && รันคำสั่งที่สองก็ต่อเมื่อคำสั่งแรกสำเร็จ ดังนั้น[ -d somedir ] && commandรันคำสั่งก็ต่อเมื่อมีไดเร็กทอรีอยู่


0

นี่คืออีกหนึ่งซับ:

[[ -d /tmp/test ]] && rm -r /tmp/test
  • && หมายถึงดำเนินการคำสั่งที่ตามมาก็ต่อเมื่อคำสั่งก่อนหน้าดำเนินการสำเร็จ (ส่งคืนรหัสทางออกเป็นศูนย์)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.