[解決済み] bashで一時ファイルを作成する
質問
bashスクリプトで一時ファイルを作成する方法として、客観的に見てより良い方法はありますか?
私は通常、スクリプトが終了したら削除されるので、tempfile-123のように、思いついた名前をつけているだけです。この方法には、現在のフォルダーにある可能性のある tempfile-123 を上書きする以外に何か不利な点があるのでしょうか?あるいは、より慎重な方法で一時ファイルを作成する利点があるのでしょうか?
解決方法は?
その
mktemp(1)
のマニュアルページでかなりよく説明されています。
従来、多くのシェルスクリプトは、プログラムの名前に を付けて、それを一時ファイル名として使用します。このような この命名法は予測可能であり、この命名法が生み出す競合状態は 攻撃者が勝つのは簡単だ。 劣るとはいえ、より安全な方法として は、同じネーミングスキームでテンポラリディレクトリを作成することです。しかし これによって、一時的なファイルが不正に使用されないことを保証することができます。 しかし、単純なサービス拒否攻撃は可能である。 そのため これらの理由から、代わりにmktempを使用することが推奨されます。
スクリプトで、mktempを次のように呼び出します。
mydir=$(mktemp -d "${TMPDIR:-/tmp/}$(basename $0).XXXXXXXXXXXX")
で、作業可能な一時ディレクトリを作成し、その中で実際のファイルに読みやすく便利な名前を安全に付けることができます。
mktemp
は標準的ではありませんが、多くのプラットフォームで存在します。しかし、いくつかのシステム(busybox ashなど)では、このランダム性を他のシステムよりも大幅に制限しています。
ところで、一時ファイルを安全に作成することは、シェルスクリプト以外でも重要です。そのため、pythonには テンプファイル を、perlは ファイル::テンプ ルビーには テンプレートファイル などなど...。
関連
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Linux ddコマンド詳細説明:データのバックアップ、およびバックアッププロセスでのフォーマット変換のケース
-
Linux NICがRTNETLINK answersというエラーで起動できない場合、どうすればよいですか?ファイルが存在するか?
-
Vmware 16仮想マシンを開けない場合、ファイルをローカルにコピーする方法は?
-
Linuxのデスクトップの背景を画像で引き伸ばし表示にする方法とは?
-
linux(ubuntu 18.04)でのアイデア運用データベース障害問題について
-
deepin20のデスクトップアイコンのスタイルを変更する方法は?deepinのアイコンテーマを変更するためのヒント
-
2020年deepin Deep OS V20のアップデートによる更新情報
-
エラーの解決方法 お客様のバージョンは /bin/bash: java: コマンドが見つかりませんでした。
-
[解決済み] フォルダとそのサブフォルダ/ファイルのパーミッションを一括で変更する方法
-
[解決済み] Unix/Linuxで、ファイルのあるフォルダを別のフォルダにコピーするにはどうしたらいいですか?[クローズド]