วิธีพกพาที่ใช้จัดการไฟล์ชั่วคราวได้ง่ายmktemp
ขึ้นเล็กน้อย มันจะสร้างไฟล์ชั่วคราวและคืนเส้นทางให้คุณ ตัวอย่างเช่น
$ mktemp
/tmp/tmp.zVNygt4o7P
$ ls /tmp/tmp.zVNygt4o7P
/tmp/tmp.zVNygt4o7P
คุณสามารถใช้มันในสคริปต์ได้อย่างง่ายดายมาก:
tmpfile=$(mktemp)
echo "Some temp. data..." > $tmpfile
rm $tmpfile
การอ่าน man page คุณควรจะสามารถตั้งค่าตัวเลือกได้ตามความต้องการของคุณ ตัวอย่างเช่น
-d
สร้างไดเรกทอรีแทนไฟล์
-u
สร้างชื่อ แต่ไม่ได้สร้างอะไรเลย
การใช้-u
คุณสามารถดึงข้อมูลไดเรกทอรีชั่วคราวได้ง่าย ๆ ด้วย ...
$ tmpdir=$(dirname $(mktemp -u))
ข้อมูลเพิ่มเติมเกี่ยวกับmktemp
ที่นี่
แก้ไขเกี่ยวกับ Mac OS X:ฉันไม่เคยใช้ระบบ Mac OSX แต่จากความคิดเห็นของ Tyilo ด้านล่างดูเหมือนว่า Mac OSX mktemp
ต้องการให้คุณให้แม่แบบ (ซึ่งเป็นอาร์กิวเมนต์ที่เป็นตัวเลือกบน Linux) พิเศษ:
แม่แบบอาจจะเป็นชื่อไฟล์ใด ๆ ที่มีจำนวนบางส่วนของ "Xs" /tmp/temp.XXXX
ผนวกเข้ากับมันเช่น "Xs" ต่อท้ายจะถูกแทนที่ด้วยหมายเลขกระบวนการปัจจุบันและ / หรือการรวมตัวอักษรที่ไม่ซ้ำกัน จำนวนชื่อไฟล์ที่ไม่ซ้ำกัน mktemp สามารถส่งคืนได้ขึ้นอยู่กับจำนวนของ "Xs" ที่ระบุ หก "Xs" จะส่งผลให้ mktemp เลือก 1 จาก 56800235584 (62 ** 6) ชื่อไฟล์ที่เป็นไปได้
หน้าคนยังกล่าวว่าการดำเนินการนี้เป็นแรงบันดาลใจหน้าคน OpenBSD mktemp
สำหรับ ผู้ใช้ OpenBSD และ FreeBSD อาจสังเกตเห็นความแตกต่างที่คล้ายกันเช่นกัน (ดูหัวข้อประวัติ )
ทีนี้อย่างที่คุณอาจสังเกตเห็นสิ่งนี้ต้องการให้คุณระบุเส้นทางไฟล์ที่สมบูรณ์รวมถึงไดเรกทอรีชั่วคราวที่คุณกำลังมองหาในคำถามของคุณ ปัญหาเล็กน้อยนี้สามารถจัดการได้โดยใช้-t
สวิตช์ ในขณะที่ตัวเลือกนี้ดูเหมือนจะต้องมีการโต้แย้ง ( prefix
) มันจะปรากฏขึ้นที่mktemp
อาศัย$TMPDIR
เมื่อจำเป็น
สรุปคุณควรจะได้รับผลลัพธ์เช่นเดียวกับการใช้ ...
$ tmpdir=$(dirname $(mktemp tmp.XXXXXXXXXX -ut))
ข้อเสนอแนะใด ๆ จากผู้ใช้ Mac OS X จะได้รับการชื่นชมอย่างมากเนื่องจากฉันไม่สามารถทดสอบวิธีนี้ได้ด้วยตนเอง
${TMPDIR-/tmp}
กับ Unix-likeTMPDIR
มี (โดยระบบหรือผู้ดูแลระบบหรือผู้ใช้) ที่จะบอกคุณเมื่อไม่ใช้/tmp
สำหรับไฟล์ชั่วคราว