mktemp -dまたはmkdirを使用して作成されたディレクトリ間にプログラミングの違いはありますか?

mktemp -dまたはmkdirを使用して作成されたディレクトリ間にプログラミングの違いはありますか?

私はスティーブンジッターの言葉を理解しようとしています。回答この問題を解決するために、彼は次のコードを使用して一時ディレクトリを作成しました。

#!/bin/bash

scripttmp=$(mktemp -d) # Create a temporary directory (these will usually be created under /tmp or /var/tmp/)

このコマンドを実行するたびに、以下に新しい一時ディレクトリが作成されることがわかります。/tmp/(Roaimaの答えを読むまでそこにいるとは知りませんでした)ここ):

IIUCでは、通常のディレクトリと一時ディレクトリの間にプログラミング上の違いはありません(唯一の違いは、これらのディレクトリの使用方法、つまり各ディレクトリがコンピュータに保持される期間です)。

手続き上の違いがなければ、人々はなぜmktemp -d最も小さいものを好むのでしょうかmkdir

ベストアンサー1

を使用する場合、mkdirスクリプトは名前で作成したディレクトリがすでに存在しないことを確認する必要があります。現在のディレクトリに既存の名前があるmkdir dirname場合、それを使用するとエラーが発生します。dirname

一時ディレクトリ(つまり、現在のスクリプトより長く続く不要なディレクトリ)を作成すると、通常、ディレクトリ名は重要ではなく、まだmktemp -d他の名前が使用されていない名前が見つかります。

mktemp -d一時ディレクトリをより簡単で安全にすることができます。そうでない場合は、成功するまで複数の名前をmktemp -d試してください。mkdirこれは不必要に複雑であるだけでなく、誤って実行される可能性があります(コードに微妙な競合状態が生じる可能性があります)。

mktempまた、スクリプトユーザーに一時ディレクトリを作成する場所を制御する権限を付与します。たとえば、スクリプトがそのディレクトリに格納する必要がある大量の一時データを生成する場合、ユーザーは十分な空き領域を持つパーティションの書き込みTMPDIR可能ディレクトリを指すように環境変数(スクリプト呼び出し前または呼び出し時)を設定できます。 。スペース。mktemp -dこれにより、そのパスの下に一時ディレクトリが作成されます。

TMPDIR設定しないと、代わりにmktemp使用されます/tmp

おすすめ記事