test -d でディレクトリの存在をテストする
このステップでは、test
コマンドと -d
オプションを使用して、ディレクトリが存在するかどうかを確認する方法を学びます。これは、Linux でのスクリプト作成やタスクの自動化における基本的なスキルです。
test
コマンドは、ファイルの種類をチェックし、値を比較するために使用されます。シェルスクリプトの条件文(if
文など)で、テストの結果に基づいて判断を行うためによく使用されます。
test
とともに -d
オプションを使用すると、指定されたパスがディレクトリを指しているかどうかを具体的にチェックします。
試してみましょう。現在のディレクトリは /home/labex/project
です。このディレクトリは存在します。
以下のコマンドを入力し、Enter キーを押します。
test -d /home/labex/project
このコマンドを実行した後、ディレクトリが存在する場合は何も出力が表示されません。これは、test
コマンドが成功すると、終了ステータス 0(Linux では通常「成功」を意味します)を返し、標準出力に何も出力しないからです。
次に、存在しないディレクトリをテストしてみましょう。このコマンドを入力し、Enter キーを押します。
test -d /home/labex/nonexistent_directory
再び、test
コマンドから直接出力は表示されません。ただし、コマンドは非ゼロの終了ステータスを返します(ディレクトリが存在しないため「失敗」を示します)。
最後に実行したコマンドの終了ステータスを確認するには、特殊変数 $?
を使用できます。このコマンドを入力し、Enter キーを押します。
echo $?
/home/labex/project
をテストした後、echo $?
は 0
を出力するはずです。
/home/labex/nonexistent_directory
をテストした後、echo $?
は非ゼロの数(通常は 1
)を出力するはずです。
終了ステータスを理解することは、コマンドの成功または失敗に応じて反応できるスクリプトを作成するために重要です。