1. ホーム
  2. shell

[解決済み] ディレクトリが存在しない場合のみmkdirする方法は?

2022-03-15 02:28:32

質問

AIXのKornShell(ksh)で実行するシェルスクリプトを書いています。私は mkdir コマンドでディレクトリを作成します。しかし、そのディレクトリはすでに存在している可能性があり、その場合、私は何もしたくありません。そこで、ディレクトリが存在しないことを確認するテストを行うか、次のような "ファイルが存在する" エラーを抑制したいのです。 mkdir は、既存のディレクトリを作成しようとしたときにスローされます。

どうすればよいのでしょうか?

どのように解決するのですか?

試す mkdir -p :

mkdir -p foo

これは、例えば、存在しない中間ディレクトリも作成することに注意してください。

mkdir -p foo/bar/baz

はディレクトリを作成します foo , foo/bar および foo/bar/baz が存在しない場合

GNUのようないくつかの実装では mkdir インクルード mkdir --parents をより読みやすい別名として使用することができますが、これは POSIX/Single Unix 仕様で規定されておらず、macOS や各種 BSD、各種商用 Unix など多くの共通プラットフォームで使用できないため、避ける必要があります。

親ディレクトリが存在しない場合にエラーとし、存在しない場合はディレクトリを作成したい場合は test を実行し、ディレクトリの存在を確認します。

[ -d foo ] || mkdir foo