在寫 Shell Script 時, 有時需要建立臨時檔案, 很多時會用 temp 或 tmp 這類副檔名實現。但如果這些檔案名稱和其他 process 的臨時檔案名稱相同, 便會錯誤地覆寫其他臨時檔案的內容。
在 Linux 系統可以用 mktemp 工具, 它可以很簡單地建立, 使用及移除不會重覆檔名的臨時檔案。
執行 mktemp 時, 它們預設會出檔案名稱及路徑:
$ mktemp
/tmp/tmp.94uGx1HYiS
/tmp/tmp.94uGx1HYiS
如果沒有指定路徑, 臨時檔案的的位置是 /tmp 目錄, 如果想指令路徑, mktemp 需要加入 -p 參數, 例如:
$ mktemp -p ~/testing
以上指令執行後, 會建立獨一無二的臨時檔案, 並會把結果印出, 在 Shell Script 要使用, 可以把結果儲存到變數, 例如:
$ TMPFILE=$(mktemp -p ~/Demo)
$ echo $TMPFILE
/tmp/tmp.e5Uq50nWor
這樣便可以建立獨一無二的暫存檔案名稱, 並把檔案的路徑儲存到 $TMPFILE 變數。要寫入內容到臨時檔, 用完後直接刪除這個臨時檔案, 只要直接操作 $TMPFILE 即可。
而 mktemp 也可以指定檔案, 加入 –suffix 參數, 便可以指定臨時檔案的副檔名, 例如:
$ mktemp –suffix .tmp
/tmp/tmp.rIcfnEWsnZ.tmp
/tmp/tmp.rIcfnEWsnZ.tmp
以上是用 mktemp 建立臨時檔案的方法。