ディレクトリが存在しない場合にのみ mkdir を実行するにはどうすればよいでしょうか? 質問する

ディレクトリが存在しない場合にのみ mkdir を実行するにはどうすればよいでしょうか? 質問する

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

これを最も効果的に行うにはどうすればよいでしょうか?

ベストアンサー1

試すmkdir -p:

mkdir -p foo

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

mkdir -p foo/bar/baz

ディレクトリfoofoo/barfoo/bar/bazが存在しない場合は作成されます。

GNU などの一部の実装では、より読みやすいエイリアスとしてmkdirinclude が使用されていますmkdir --parentsが、これは POSIX/Single Unix 仕様では指定されておらず、macOS、さまざまな BSD、さまざまな商用 Unix などの多くの一般的なプラットフォームでは利用できないため、使用を避ける必要があります。

親ディレクトリが存在しない場合にエラーを出し、存在しない場合はディレクトリを作成したい場合は、次のようにします。testまずディレクトリが存在するかどうかを確認します。

[ -d foo ] || mkdir foo

おすすめ記事