概要
シェルスクリプトでtempファイルを作成するときに以下のようにすることが多いかと思います。
echo 'wawawa' > ./hoge.txt
ただこれだとカレントディレクトリにすでにhoge.txtが存在した場合に上書きしてしまって、人の大事なtempファイルを消してしまったりということが発生してしまいます。
なので今回はmktemp
コマンドを利用してユニークな一時ファイルを作成しようと思います。
コマンド例
ただ実行するだけ
単純にmktemp
コマンドを実行すると以下のようにユニークな空ファイルを作成することができます。
デフォルトで/tmp
に作成されるのでサーバの再起動時に削除されます。
$ mktemp /tmp/tmp.k33WbSu6vg $ ls -l /tmp/tmp.k33WbSu6vg -rw------- 1 ec2-user ec2-user 0 6月 28 14:00 /tmp/tmp.k33WbSu6vg
シェルスクリプトに組み込む
こんなかんじのシェルスクリプトを用意するとする。
#!/bin/bash temp_name=$(mktemp) echo ${temp_name} trap 'rm ${temp_name}' 0
実行するとこんなかんじ
$ ./temp_trap.sh /tmp/tmp.Y2VVg7HdUA
シェルスクリプト実行後はtempファイルが削除されていることがわかる。
$ ls -l /tmp/tmp.Y2VVg7HdUA ls: /tmp/tmp.Y2VVg7HdUA にアクセスできません: No such file or directory
おわりに
人の大事なtempファイルは消してはいけない。
[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識
- 作者: 武内覚
- 出版社/メーカー: 技術評論社
- 発売日: 2018/02/23
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る