ディレクトリが存在しない場合にのみ Mkdir を実行する

  1. mkdir コマンドとその目的
  2. mkdir でディレクトリを作成する
  3. ディレクトリが存在しない場合にのみ、mkdir でディレクトリを作成する
  4. if 制御構造で mkdir を使用する
ディレクトリが存在しない場合にのみ Mkdir を実行する

この記事では、mkdir と、ディレクトリの作成におけるその使用法について説明します。 さらに、作成したいディレクトリが存在しない場合に mkdir を使用する方法についても説明します。

mkdir コマンドとその目的

Unix/bash の mkdir コマンドは make directory を表します。 ユーザーは、フォルダーの作成、アクセス許可の設定などを行うことができます。

mkdir コマンドを実行するユーザーは、指定されたパスにディレクトリを作成するための十分な権限を持っている必要があります。権限がないと、ユーザーは権限拒否エラーを受け取る場合があります。

mkdir でディレクトリを作成する

mkdir の一般的な構文は次のとおりです。

mkdir <specified_option> directory_name
sudo mkdir <specified_option> directory_name # in case user doesn’t have permissions

mkdir を使用すると、一度に複数のディレクトリを作成することもできます。 これを行うには、カンマ区切りのディレクトリ名を中括弧内に追加します。

ディレクトリ名に余分なスペースを含めないようにしてください。そうしないと、ディレクトリの名前にスペースが含まれてしまいます。 以下のコマンドは、私たちが言ったことを示しています。

mkdir {dir1,dir2,dir3} # here directory names are dir1, dir2 and dir3

mkdir によるディレクトリの作成

ディレクトリが存在しない場合にのみ、mkdir でディレクトリを作成する

mkdir を使用する際の問題の 1つは、作成しようとしているディレクトリが既に存在する場合のエラーです。 mkdir はディレクトリが存在しない場合にディレクトリを作成するため、bash コマンドを実行してもそれほど問題はありません。 それ以外の場合は、適切なエラーが発生します。

ただし、ひねりがあります。 カスタム bash シェルをコーディングしようとしていて、既存のファイルを再作成しようとしているときに mkdir がエラーを出してほしくないとします。 その後、あなたは何をしますか?

上記を防ぐためのいくつかの方法を説明します。

[[ -d dir_name ]] || mkdir dir_name # option 1
mkdir -p dir_name # option 2
mkdir dir_name 2>/dev/null # option 3

存在しない場合にのみ mkdir でディレクトリを作成する

2 番目のオプションは、同時実行中に競合状態になる可能性があるため、2 番目のオプションよりも 1 番目のオプションと 3 番目のオプションをお勧めします。 3つ目は、stderror の出力をファイル dev/null にリダイレクトします。

オペレーティング システムを学習したことがあれば、ppfdt テーブル (プロセス ファイル記述子テーブル) の概念があります。 デフォルトでは、ゼロ記述子は stdin を指し、1つの記述子は stdout を指し、2つの記述子は stderror を指すことを思い出してください。

/dev/null はヌル デバイス ファイルであり、書き込まれたすべてのものを破棄し、読み取り時にファイル終了文字を返します。 それは真空のようなもので、中に投げ込まれたものを吸い込みます。

そうは言っても、ここで stderror を任意の未使用ファイルにリダイレクトできますが、/dev/null の方がより推奨されます。

if 制御構造で mkdir を使用する

それを行う別の方法は、if 制御構造を使用することです。 ディレクトリが存在するかどうかを確認し、存在しない場合は作成に進みます。 それ以外の場合は、何もしません。

以下のスクリプトで詳しく説明します。

if [ ! -d dir_name ]; then mkdir dir_name; fi

if 制御構造で mkdir を使用する

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe

関連記事 - Bash Directory