Nếu bạn cần ghi một số tệp tạm thời chỉ tồn tại chừng nào tập lệnh hoặc ứng dụng của bạn đang chạy, hãy sử dụng thư mục được chỉ định bởi TMPDIRbiến môi trường hoặc nếu biến đó không được xác định , /tmp.
/tmpbị xóa khi khởi động trên một số hệ thống (đôi khi ngay cả trong RAM, ví dụ như mặc định trên Solaris và trên một số cài đặt Linux), do đó, nó không thể được sử dụng cho các tệp phải tồn tại khi mất điện hoặc khởi động lại. /var/tmpcó thể được sử dụng cho các tệp phải tồn tại khi khởi động lại, nhưng thỉnh thoảng có thể được quản trị viên hệ thống xóa sạch. Nếu ứng dụng của bạn cần lưu tệp trên cơ sở vĩnh viễn, hãy viết chúng ở đâu đó trong thư mục chính của người dùng (trong ~/.programmingnoobsapphoặc ~/.cache/programmingnoobsapp) hoặc dưới /var/lib/programmingnoobsapphoặc /var/cache/programmingnoobsapp.
Lưu ý rằng /tmpđược chia sẻ giữa tất cả người dùng, vì vậy bạn cần có biện pháp phòng ngừa khi tạo tệp ở đó. Bạn cần chọn một tên tệp chưa tồn tại và bạn cần cẩn thận không cho phép điều kiện cuộc đua trong đó một quy trình khác tạo tệp trước bạn với các quyền khác nhau, có thể là lỗ hổng bảo mật (nếu quy trình khác đang chạy như một người dùng khác, sau đó nó có thể truy cập và sửa đổi dữ liệu của quy trình của bạn). Sử dụng mktemplệnh để tạo một tập tin trong /tmphoặc /var/tmp. Theo mặc định, mktemptạo một tệp trong $TMPDIRhoặc /tmpnếu TMPDIRkhông được đặt, thường là đúng nơi. Nếu bạn cần sử dụng nhiều tệp tạm thời hoặc thậm chí nếu bạn cần một tệp duy nhất, tôi khuyên bạn nên tạo một thư mục cho tất cả các tệp tạm thời của mình vớimktemp -d và loại bỏ nó ở cuối tập lệnh của bạn.
#!/bin/sh
tmp_root=
trap 'rm -rf "$tmp_root"' EXIT INT TERM HUP
tmp_root=$(mktemp -d)
tmpfile1=$tmp_root/file1
tmpfile2=$tmp_root/file2
…