Một cách di động hơn một chút để xử lý các tập tin tạm thời là sử dụng mktemp
. Nó sẽ tạo các tệp tạm thời và trả lại đường dẫn của chúng cho bạn. Ví dụ:
$ mktemp
/tmp/tmp.zVNygt4o7P
$ ls /tmp/tmp.zVNygt4o7P
/tmp/tmp.zVNygt4o7P
Bạn có thể sử dụng nó trong một kịch bản khá dễ dàng:
tmpfile=$(mktemp)
echo "Some temp. data..." > $tmpfile
rm $tmpfile
Đọc trang người đàn ông, bạn sẽ có thể thiết lập các tùy chọn theo nhu cầu của bạn. Ví dụ:
-d
tạo một thư mục thay vì một tập tin.
-u
tạo ra một tên, nhưng không tạo ra bất cứ điều gì.
Sử dụng -u
bạn có thể truy xuất thư mục tạm thời khá dễ dàng với ...
$ tmpdir=$(dirname $(mktemp -u))
Thông tin thêm về mktemp
có sẵn ở đây .
Chỉnh sửa về Mac OS X: Tôi chưa bao giờ sử dụng hệ thống Mac OSX, nhưng theo nhận xét của Tyilo bên dưới, có vẻ như Mac OSX mktemp
yêu cầu bạn cung cấp một mẫu (đó là một đối số tùy chọn trên Linux). Trích dẫn:
Ví dụ, mẫu có thể là bất kỳ tên tệp nào có số "X" được thêm vào nó /tmp/temp.XXXX
. Dấu "X" được thay thế bằng số quy trình hiện tại và / hoặc kết hợp chữ cái duy nhất. Số lượng tên tệp duy nhất mktemp có thể trả về tùy thuộc vào số lượng "Xs" được cung cấp; sáu "Xs" sẽ dẫn đến mktemp chọn 1 trong 56800235584 (62 ** 6) tên tệp có thể.
Trang man cũng nói rằng việc triển khai này được lấy cảm hứng từ trang man OpenBSD cho mktemp
. Do đó, một sự phân kỳ tương tự cũng có thể được quan sát bởi người dùng OpenBSD và FreeBSD (xem phần Lịch sử ).
Bây giờ, như bạn có thể nhận thấy, điều này đòi hỏi bạn phải chỉ định một đường dẫn tệp hoàn chỉnh, bao gồm cả thư mục tạm thời bạn đang tìm kiếm trong câu hỏi của mình. Vấn đề nhỏ này có thể được xử lý bằng cách sử dụng -t
chuyển đổi. Mặc dù tùy chọn này dường như yêu cầu một đối số ( prefix
), nhưng nó sẽ xuất hiện mktemp
dựa vào $TMPDIR
khi cần thiết.
Nói chung, bạn sẽ có thể nhận được kết quả tương tự như trên bằng cách sử dụng ...
$ tmpdir=$(dirname $(mktemp tmp.XXXXXXXXXX -ut))
Mọi phản hồi từ người dùng Mac OS X sẽ được đánh giá rất cao, vì tôi không thể tự mình kiểm tra giải pháp này.
${TMPDIR-/tmp}
trên Unix thích.TMPDIR
có (bởi hệ thống hoặc quản trị viên hoặc người dùng) để cho bạn biết khi nào không sử dụng/tmp
cho các tệp tạm thời.