หากเป้าหมายของคุณคือดำเนินการคำสั่งหนึ่งบรรทัดที่:
- ลบและสร้างไดเรกทอรีใหม่
~/Desktop/fooหากมีอยู่แล้ว
- เพียงสร้างไดเรกทอรี
~/Desktop/fooหากยังไม่มีอยู่
จากนั้นคุณสามารถใช้:
rm -r ~/Desktop/foo; mkdir ~/Desktop/foo
; เทียบเท่ากับการขึ้นบรรทัดใหม่ แต่จะช่วยให้คุณสามารถรันคำสั่งหลายคำสั่งในบรรทัดเดียว (เช่น "คำสั่งเดียว")
- หากไดเรกทอรีที่คุณลบอาจมีไฟล์แบบอ่านอย่างเดียวคุณจะต้อง
-fตั้งค่าสถานะเพื่อลบออกโดยไม่ต้องให้ผู้ใช้โต้ตอบ ไม่เป็นไร แต่ฉันแนะนำให้ระมัดระวังเป็นrm -rf ...พิเศษ ดูman rmรายละเอียดที่
- คุณต้องใช้
rmคำสั่งให้เสร็จก่อนที่mkdirคำสั่งจะทำงาน นี่คือเหตุผลที่จะใช้แทน; &(คำสั่งก่อนหน้านี้&ทำงานแบบอะซิงโครนัสในพื้นหลัง)
- คุณต้องการให้
mkdirคำสั่งรันเมื่อrmคำสั่งสำเร็จ นี่คือเหตุผลที่จะใช้แทน;||
- คุณต้องใช้
mkdirคำสั่งเพื่อรันเมื่อrmคำสั่งล้มเหลว (โดยปกติความล้มเหลวจะหมายถึงไดเรกทอรีที่ไม่มีอยู่) นี่คือเหตุผลที่จะใช้แทน;&&
rmคำสั่งอาจล้มเหลวแม้เมื่อไดเรกทอรีมีอยู่แล้วซึ่งในกรณีที่mkdirคำสั่งจะล้มเหลวเช่นกัน แต่ข้อผิดพลาดจะทำให้รู้สึกและมีอาจไม่จำเป็นต้องเพิ่มขั้นตอนการตรวจสอบกลางสำหรับfooการดำรงอยู่ของก่อนที่จะพยายามที่จะสร้างมันขึ้นมา
ดู3.2.3 รายชื่อคำสั่งในคู่มือการทุบตีอ้างอิงสำหรับข้อมูลเพิ่มเติมและคำอธิบายเกี่ยวกับ;, &, ||และ&&ผู้ประกอบการ
ตามที่muru แนะนำ (และรายละเอียด Rinzwind ) ฉันแนะนำให้คุณดูrsyncเพื่อดูว่าจะตอบสนองความต้องการสำรองข้อมูลของคุณหรือไม่ มีคำแนะนำที่เป็นประโยชน์เพิ่มเติมในหน้าเอกสารคู่มือrsyncเช่นเดียวกับคู่มือ Ubuntu rsyncนี้
ทำไม mkdir ไม่มีตัวเลือกนี้
mkdirสร้างไดเรกทอรี ("mk" หมายถึง "make" ) เพราะมันจะลบไดเรกทอรีซ้ำและไฟล์ทั้งหมดในพวกเขาจะไม่ดีเพราะมันจะละเมิดหลักการของความประหลาดใจอย่างน้อยในวิธีที่อาจนำไปสู่การสูญเสียข้อมูล
rmdirไม่ได้ลบไดเรกทอรีที่มีไฟล์ (ไม่ใช่ไดเรกทอรี) อยู่ด้วย rmมี-rตัวเลือกซึ่งเหมาะสมแล้วเนื่องจากrmคาดว่าจะลบไฟล์ (นั่นคือจุดประสงค์ของมันดังนั้นอันตรายที่แฝงอยู่นั้นคือสัญชาตญาณและผู้ใช้มักจะรู้ว่าต้องระวังเมื่อเรียกใช้rmคำสั่ง)
fooเหมือนลบเนื้อหาทั้งหมดหรือไม่mkdirมี-pตัวเลือกที่ละเว้นหากไดเรกทอรีอยู่