ทำไมฉันไม่สามารถลบไฟล์ด้วยสคริปต์ Bash ได้?


1

ฉันดูเหมือนจะไม่สามารถเรียกใช้rmจากสคริปต์ Bash และลบไฟล์ได้

#!/bin/bash
rm -rf myjunk.out
exit 0;

myjunk.outไม่เอา


1
กำจัดexit 0และตรวจสอบข้อความแสดงข้อผิดพลาด
ChrisF

และมันทำงานเมื่อคุณเพียงแค่รันrm -rf myjunk.outจากบรรทัดคำสั่ง? การเรียกใช้สคริปต์นี้เป็นอย่างไร
BloodPhilia

2
สำหรับเร็กคอร์ดเท่านั้น -r หมายถึงการสืบทอดบนไดเร็กทอรี (Recursive) ดังนั้นหากคุณต้องการลบไฟล์ -r นั้นไร้ประโยชน์ คุณได้รับข้อผิดพลาดอะไร คุณรันสคริปต์นี้อย่างไร สิทธิ์ของสคริปต์นี้คืออะไร
Torian

@BloodPhilla มันถูกทริกเกอร์เพราะ myjunk.out ถูกสร้างขึ้นก่อนหน้าในสคริปต์ .... @Torian -r อยู่ที่นั่นเพราะฉันเพิ่งลองทำสิ่งต่าง ๆ
CamelBlues

คำตอบ:


4

ขั้นแรกตรวจสอบให้แน่ใจว่าคุณสามารถลบmyjunk.outโดยไม่เรียกใช้สคริปต์ของคุณ lsattrถ้าไม่ตรวจสอบไฟล์ที่มีแอตทริบิวต์

ประการที่สองคุณไม่จำเป็นต้องจัดหา exit 0;

หลังจากนั้นให้ชี้เส้นทางไปที่myjunk.outเช่น:

rm -rf /path/to/myjunk.out

ลบ-rธงด้วย มันไม่จำเป็นและอันตราย
Keith

ที่จริงแล้วออกทางออก 0; อนุญาตให้ติดตั้ง. rm เพื่อรันอย่างถูกต้อง ขอบคุณ!
CamelBlues

คำอธิบายของคืออะไร: ทำไม "ทางออก 0" จะทำให้ rm ไม่ทำงาน
Emmanuel Devaux

0

-fตัวเลือกยับยั้งข้อความผิดพลาด หน้าคนพูดว่า:

พยายามที่จะลบไฟล์โดยไม่แจ้งให้ยืนยันโดยไม่คำนึงถึงสิทธิ์ของไฟล์ หากไฟล์ไม่มีอยู่อย่าแสดงข้อความวินิจฉัยหรือแก้ไขสถานะการออกเพื่อสะท้อนถึงข้อผิดพลาด -fตัวเลือกแทนที่ก่อนหน้านี้-iตัวเลือก

ฉันได้เน้นส่วนที่เกี่ยวข้อง เพื่อรับคำเตือนที่คุ้มค่าคุณควรลบตัวเลือกการตั้งค่าสถานะจากrmคำสั่งของคุณ:

rm myjunk.out

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