Arch manual pages

MKTEMP(1) General Commands Manual MKTEMP(1)

mktemp
產生唯一的臨時文件名

mktemp [-q] [-u] template

mktemp 根據 給定的 文件名模板, 改變 其中的 一部分, 從而 生成 臨時文件名. 該文件名 是 唯一的, 可以 讓 其他程序 使用. 模板 爲 任意 文件名, 後接 六個 ‘X’ 例如 /tmp/temp.XXXXXX. 這些 ‘X’ 將被 當前進程號 以及/或者 某個 唯一的 字母組合 替代.

如果 mktemp 成功 產生了 唯一文件名, 就 以 訪問模式 0600 (除非 使用了 -u 選項) 創建 文件, 並且 在 標準輸出 顯示 這個 文件名.

mktemp 用於 讓 shell 腳本程序 使用 可靠的 臨時文件. 多數 shell 程序 的 傳統做法 是 程序名 加上 PID 做 後綴, 產生的 文件名 就是 臨時文件名. 這種 命名策略 容易 預測, 產生的 競爭條件 易於 遭到 攻擊. 使用 相同 命名策略 的 另一個 方法 是 建立 臨時目錄, 這種 做法 相對 安全 一些. 它 可以 保證 臨時文件 不被 破壞, 但是 容易 遭到 簡單的 拒絕服務 攻擊. 所以 建議 改用 mktemp.

有效選項有:
出錯時 不顯示 信息. 用於 禁止 錯誤信息 輸出到 標準錯誤.
以 “不安全” 模式 運行. mktemp 在 退出前 會 刪除 臨時文件. 它 比 mktemp(3) 稍微 好些, 但 仍然 會 引入 競爭條件. 不鼓勵 使用 這個 選項.

mktemp 成功時 返回 0, 否則 返回 1.

下列的 sh(1) 片斷 展示了 mktemp 的 簡單用法, 如果 無法 獲得 可靠的 臨時文件, 程序 就 退出.
TMPFILE=`mktemp /tmp/$0.XXXXXX` || exit 1
echo "program output" >> $TMPFILE

照上例, 我們 打算 讓 腳本程序 自己 捕獲 這個 錯誤.

TMPFILE=`mktemp -q /tmp/$0.XXXXXX`
if [ $? -ne 0 ]; then
	echo "$0: Can't create temp file, exiting..."
	exit 1
fi

mkstemp(3), mktemp(3)

源於 OpenBSD

徐明 <xuming@users.sourceforge.net>

2003/05/13

http://cmpp.linuxforum.net

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
November 20, 1996 Linux 4.20.11-arch2-1-ARCH